此程序採用qt5編寫與實現,編譯器採用的爲gcc32位,Windows10測試
需要用到的庫:core gui charts
程序有點bug存在,但終究能用
github開源地址
廢話不多說,上代碼
addnewwindow.h
這個文件裏包含所有信息修改彈窗與部分控件接口
#ifndef ADDNEWWINDOW_H
#define ADDNEWWINDOW_H
#include "studentinfo.h"
#include "teacherinfo.h"
#include <QDebug>
#include <QHBoxLayout>
#include <QLabel>
#include <QLineEdit>
#include <QList>
#include <QMessageBox>
#include <QPushButton>
#include <QVBoxLayout>
#include <QWidget>
namespace Ui {
class AddNewWindow;
}
class AddNewWindow : public QWidget {
Q_OBJECT
/**
{"學生名字", "學生性別", "學生年齡", "學生班級",
"學生成績", "學生學號", "學生住址"};
*/
public:
QStringList studentList = {"學生名字", "學生性別", "學生年齡", "學生班級",
"學生成績", "學生學號", "學生住址"};
QStringList courseList = {"學生名字", "學生性別", "學生學號", "語文成績",
"數學成績", "英語成績", "物理成績", "政治成績",
"化學成績", "地理成績", "歷史成績", "生物成績"};
QStringList allTextList = {"學生名字", "學生性別", "學生年齡", "學生班級",
"學生成績", "學生學號", "學生住址", "語文成績",
"數學成績", "英語成績", "物理成績", "政治成績",
"化學成績", "地理成績", "歷史成績", "生物成績"};
QStringList teacherList = {"教師名字", "教師性別", "教師年齡",
"教師所管班級", "教師所教科目", "教師執照號碼",
"教師住址", "教師工資(元)"};
QHBoxLayout *hbox;
QVBoxLayout *vbox;
QPushButton *change, *cancel, *add;
QLineEdit *nameEdit = NULL, *SexEdit = NULL, *AgeEdit = NULL,
*ClassEdit = NULL, *SumEdit = NULL, *IdEdit = NULL,
*AddressEdit = NULL, *chineseEdit = NULL, *mathematicsEdit = NULL,
*EnglishEdit = NULL, *PhysicsEdit = NULL, *ChemistryEdit = NULL,
*historyEdit = NULL, *GeographyEdit = NULL, *PoliticsEdit = NULL,
*BiologyEdit = NULL, *SubjectEdit = NULL, *MoneyEdit = NULL;
QList<QLineEdit *> editList, editList2, allEditList, teacherEditList;
int con_count = 0, add_con_count = 0, clickvalue = -1, teacher_con_count = 0,
add_teacher_con_count = 0;
public:
void init();
void AddStudent(QList<StudentInfo> &l);
void ChangeStudent(QList<StudentInfo> &l, StudentInfo s);
void RemoveStudent(QList<StudentInfo> &l, StudentInfo s);
StudentInfo showMsg(QList<QString> editValueList);
void showLayout();
bool isID(QList<StudentInfo> &l, StudentInfo s);
TeacherInfo showMsgTeacher(QList<QString> editValueList);
void AddStudent(QList<TeacherInfo> &l);
void ChangeStudent(QList<TeacherInfo> &l, TeacherInfo s);
void RemoveStudent(QList<TeacherInfo> &l, TeacherInfo s);
bool isID(QList<TeacherInfo> &l, TeacherInfo s);
public:
explicit AddNewWindow(QWidget *parent = nullptr);
~AddNewWindow();
private:
Ui::AddNewWindow *ui;
};
#endif // ADDNEWWINDOW_H
addnewwindow.cpp
這裏爲實現上個接口文件內容
#include "addnewwindow.h"
#include "ui_addnewwindow.h"
AddNewWindow::AddNewWindow(QWidget *parent)
: QWidget(parent), ui(new Ui::AddNewWindow) {
ui->setupUi(this);
}
void AddNewWindow::AddStudent(QList<TeacherInfo> &l) {
showLayout();
change->setHidden(true);
add->setHidden(false);
setWindowTitle("添加一個新教師");
if (add_teacher_con_count == 0) {
connect(add, &QPushButton::clicked, [&]() {
TeacherInfo s = showMsgTeacher({nameEdit->text(), SexEdit->text(),
AgeEdit->text(), ClassEdit->text(),
SubjectEdit->text(), IdEdit->text(),
AddressEdit->text(), MoneyEdit->text()});
if (!s.getId().isEmpty() && !s.getAge().isEmpty() &&
!s.getSex().isEmpty() && !s.getManageClass().isEmpty() &&
!s.getAddress().isEmpty() && !s.getName().isEmpty() &&
!s.getManageSubject().isEmpty()) {
if (isID(l, s)) {
l.append(s);
close();
} else {
QMessageBox::critical(this, "錯誤",
"存在兩個相同的教師編號!請重新輸入",
QMessageBox::Yes);
}
}
add_teacher_con_count = add_teacher_con_count + 1;
});
}
show();
}
void AddNewWindow::ChangeStudent(QList<TeacherInfo> &l, TeacherInfo sss) {
showLayout();
add->setHidden(true);
change->setHidden(false);
cancel->setText("刪除此條");
setWindowTitle("修改一個職工信息");
RemoveStudent(l, sss);
nameEdit->setText(sss.getName());
SexEdit->setText(sss.getSex());
AgeEdit->setText(sss.getAge());
ClassEdit->setText(sss.getManageClass());
SubjectEdit->setText(sss.getManageSubject());
IdEdit->setText(sss.getId());
AddressEdit->setText(sss.getAddress());
MoneyEdit->setText(sss.getMoney());
if (teacher_con_count == 0) {
connect(change, &QPushButton::clicked, [&]() {
TeacherInfo s = showMsgTeacher({nameEdit->text(), SexEdit->text(),
AgeEdit->text(), ClassEdit->text(),
SubjectEdit->text(), IdEdit->text(),
AddressEdit->text(), MoneyEdit->text()});
if (!s.getId().isEmpty() && !s.getAge().isEmpty() &&
!s.getSex().isEmpty() && !s.getManageClass().isEmpty() &&
!s.getAddress().isEmpty() && !s.getName().isEmpty() &&
!s.getManageSubject().isEmpty()) {
if (isID(l, s)) {
l.append(s);
close();
} else {
QMessageBox::critical(this, "錯誤",
"存在兩個相同的教師編號!請重新輸入",
QMessageBox::Yes);
}
}
teacher_con_count = teacher_con_count + 1;
});
}
show();
}
void AddNewWindow::RemoveStudent(QList<TeacherInfo> &l, TeacherInfo sss) {
for (int i = 0; i < l.size(); i++) {
if (l[i].getId().compare(sss.getId()) == 0 &&
l[i].getAge().compare(sss.getAge()) == 0 &&
l[i].getSex().compare(sss.getSex()) == 0 &&
l[i].getManageSubject().compare(sss.getManageSubject()) == 0 &&
l[i].getName().compare(sss.getName()) == 0 &&
l[i].getAddress().compare(sss.getAddress()) == 0 &&
l[i].getManageClass().compare(sss.getManageClass()) == 0) {
l.removeAt(i);
break;
}
}
}
bool AddNewWindow::isID(QList<TeacherInfo> &l, TeacherInfo s) {
foreach (TeacherInfo info, l) {
if (info.getId().compare(s.getId()) == 0) {
return false;
}
}
return true;
}
TeacherInfo AddNewWindow::showMsgTeacher(QList<QString> editValueList) {
QString nameText = editValueList[0], SexText = editValueList[1],
AgeText = editValueList[2], ClassText = editValueList[3],
SubJect = editValueList[4], IdText = editValueList[5],
AddressText = editValueList[6], MoneyText = editValueList[7];
QStringList textList = {nameText, SexText, AgeText, ClassText,
SubJect, IdText, AddressText, MoneyText};
QMessageBox msg;
msg.setIcon(QMessageBox::Icon::Critical);
msg.setWindowTitle("錯誤");
msg.setStandardButtons(QMessageBox::Yes | QMessageBox::No);
msg.setButtonText(QMessageBox::Yes, "好的");
msg.setButtonText(QMessageBox::No, "不行,我拒絕");
for (int i = 0; i < textList.size(); i++) {
if (textList[i].isNull() || textList[i].isEmpty()) {
msg.setText("請確認" + teacherList[i] + "是否爲空或者合法字符串");
}
}
if (!msg.text().isNull() || !msg.text().isEmpty()) {
switch (msg.exec()) {
case QMessageBox::Yes:
msg.close();
break;
case QMessageBox::No:
foreach (QLineEdit *e, teacherEditList) { e->clear(); }
close();
break;
}
}
return TeacherInfo(nameText, SexText, AgeText, ClassText, SubJect, IdText,
AddressText, MoneyText);
}
StudentInfo AddNewWindow::showMsg(QList<QString> editValueList) {
QString nameText = editValueList[0], SexText = editValueList[1],
AgeText = editValueList[2], ClassText = editValueList[3],
SumText = editValueList[4], IdText = editValueList[5],
AddressText = editValueList[6], chineseText = editValueList[7],
mathematicsText = editValueList[8], EnglishText = editValueList[9],
PhysicsText = editValueList[10], ChemistryText = editValueList[11],
historyText = editValueList[12], GeographyText = editValueList[13],
PoliticsText = editValueList[14], BiologyText = editValueList[15];
double (*getSum)(QStringList l) = [](QStringList l) {
double sum = 0;
foreach (QString n, l) { sum += n.replace(QRegExp("\\s+"), "").toDouble(); }
return sum;
};
QStringList textList = {
nameText, SexText, AgeText, ClassText,
SumText, IdText, AddressText, chineseText,
mathematicsText, EnglishText, PhysicsText, ChemistryText,
historyText, GeographyText, PoliticsText, BiologyText};
QMessageBox msg;
msg.setIcon(QMessageBox::Icon::Critical);
msg.setWindowTitle("錯誤");
msg.setStandardButtons(QMessageBox::Yes | QMessageBox::No);
msg.setButtonText(QMessageBox::Yes, "好的");
msg.setButtonText(QMessageBox::No, "不行,我拒絕");
for (int i = 0; i < textList.size(); i++) {
if (textList[i].isNull() || textList[i].isEmpty()) {
msg.setText("請確認" + allTextList[i] + "是否爲空或者合法字符串");
}
}
if (!msg.text().isNull() || !msg.text().isEmpty()) {
switch (msg.exec()) {
case QMessageBox::Yes:
msg.close();
break;
case QMessageBox::No:
foreach (QLineEdit *e, allEditList) { e->clear(); }
close();
break;
}
}
SumText = QString::number(getSum({chineseText, mathematicsText, EnglishText,
PhysicsText, ChemistryText, historyText,
GeographyText, PoliticsText, BiologyText}));
return StudentInfo(chineseText, mathematicsText, EnglishText, PhysicsText,
ChemistryText, historyText, GeographyText, PoliticsText,
BiologyText, nameText, AgeText, AddressText, SexText,
IdText, SumText, ClassText);
}
bool AddNewWindow::isID(QList<StudentInfo> &l, StudentInfo s) {
foreach (StudentInfo info, l) {
if (info.getId().compare(s.getId()) == 0) {
return false;
}
}
return true;
}
void AddNewWindow::AddStudent(QList<StudentInfo> &l) {
showLayout();
change->setHidden(true);
add->setHidden(false);
setWindowTitle("添加一個新同學");
if (add_con_count == 0) {
connect(add, &QPushButton::clicked, [&]() {
StudentInfo s = showMsg(
{nameEdit->text(), SexEdit->text(), AgeEdit->text(),
ClassEdit->text(), SumEdit->text(), IdEdit->text(),
AddressEdit->text(), chineseEdit->text(), mathematicsEdit->text(),
EnglishEdit->text(), PhysicsEdit->text(), ChemistryEdit->text(),
historyEdit->text(), GeographyEdit->text(), PoliticsEdit->text(),
BiologyEdit->text()});
if (!s.getId().isEmpty() && !s.getAge().isEmpty() &&
!s.getSex().isEmpty() && !s.getStudentClass().isEmpty() &&
!s.getAddress().isEmpty() && !s.getName().isEmpty() &&
!s.getSum().isEmpty()) {
if (isID(l, s)) {
l.append(s);
close();
} else {
QMessageBox::critical(this, "錯誤", "存在兩個相同的學號!請重新輸入",
QMessageBox::Yes);
}
}
add_con_count = add_con_count + 1;
});
}
show();
}
void AddNewWindow::ChangeStudent(QList<StudentInfo> &l, StudentInfo sss) {
showLayout();
add->setHidden(true);
change->setHidden(false);
cancel->setText("刪除此條");
setWindowTitle("修改一個同學信息");
RemoveStudent(l, sss);
nameEdit->setText(sss.getName());
SexEdit->setText(sss.getSex());
AgeEdit->setText(sss.getAge());
ClassEdit->setText(sss.getStudentClass());
SumEdit->setText(sss.getSum());
IdEdit->setText(sss.getId());
AddressEdit->setText(sss.getAddress());
chineseEdit->setText(sss.getChinese());
mathematicsEdit->setText(sss.getMathematics());
EnglishEdit->setText(sss.getEnglish());
PhysicsEdit->setText(sss.getPhysics());
ChemistryEdit->setText(sss.getChemistry());
historyEdit->setText(sss.getHistory());
GeographyEdit->setText(sss.getGeography());
PoliticsEdit->setText(sss.getPolitics());
BiologyEdit->setText(sss.getBiology());
if (con_count == 0) {
connect(change, &QPushButton::clicked, [&]() {
StudentInfo s = showMsg(
{nameEdit->text(), SexEdit->text(), AgeEdit->text(),
ClassEdit->text(), SumEdit->text(), IdEdit->text(),
AddressEdit->text(), chineseEdit->text(), mathematicsEdit->text(),
EnglishEdit->text(), PhysicsEdit->text(), ChemistryEdit->text(),
historyEdit->text(), GeographyEdit->text(), PoliticsEdit->text(),
BiologyEdit->text()});
qDebug() << "143 :::::: ";
if (!s.getId().isEmpty() && !s.getAge().isEmpty() &&
!s.getSex().isEmpty() && !s.getStudentClass().isEmpty() &&
!s.getAddress().isEmpty() && !s.getName().isEmpty() &&
!s.getSum().isEmpty()) {
if (isID(l, s)) {
l.append(s);
close();
} else {
QMessageBox::critical(this, "錯誤", "存在兩個相同的學號!請重新輸入",
QMessageBox::Yes);
}
}
con_count = con_count + 1;
// close();
});
}
show();
}
void AddNewWindow::RemoveStudent(QList<StudentInfo> &l, StudentInfo sss) {
for (int i = 0; i < l.size(); i++) {
if (l[i].getId().compare(sss.getId()) == 0 &&
l[i].getAge().compare(sss.getAge()) == 0 &&
l[i].getSex().compare(sss.getSex()) == 0 &&
l[i].getSum().compare(sss.getSum()) == 0 &&
l[i].getName().compare(sss.getName()) == 0 &&
l[i].getAddress().compare(sss.getAddress()) == 0 &&
l[i].getStudentClass().compare(sss.getStudentClass()) == 0) {
qDebug() << " find :::: " << sss.getName();
l.removeAt(i);
break;
}
}
}
void AddNewWindow::showLayout() {
if (nameEdit == NULL) {
init();
QStringList sList;
QList<QLineEdit *> tmpEdit;
if (clickvalue == 2) {
sList = teacherList;
tmpEdit = teacherEditList;
} else {
sList = allTextList;
tmpEdit = allEditList;
}
int index = 0;
QHBoxLayout *hbox2 = new QHBoxLayout();
for (int i = 0; i < sList.size(); i++) {
if (index == 2) {
vbox->addLayout(hbox);
hbox2 = new QHBoxLayout();
hbox = new QHBoxLayout();
index = 0;
}
tmpEdit[i]->setPlaceholderText("請輸入" + sList[i]);
tmpEdit[i]->setFixedHeight(30);
hbox2->addWidget(new QLabel(sList[i]));
hbox2->addWidget(tmpEdit[i]);
hbox->addLayout(hbox2);
index++;
if (i == (sList.size() - 1)) {
vbox->addLayout(hbox);
}
}
hbox2 = new QHBoxLayout();
hbox2->addWidget(add);
hbox2->addWidget(change);
hbox2->addWidget(cancel);
vbox->addLayout(hbox2);
setLayout(vbox);
}
}
void AddNewWindow::init() {
nameEdit = new QLineEdit();
SexEdit = new QLineEdit();
AgeEdit = new QLineEdit();
ClassEdit = new QLineEdit();
SumEdit = new QLineEdit();
IdEdit = new QLineEdit();
AddressEdit = new QLineEdit();
chineseEdit = new QLineEdit();
mathematicsEdit = new QLineEdit();
EnglishEdit = new QLineEdit();
PhysicsEdit = new QLineEdit();
ChemistryEdit = new QLineEdit();
historyEdit = new QLineEdit();
GeographyEdit = new QLineEdit();
PoliticsEdit = new QLineEdit();
BiologyEdit = new QLineEdit();
SubjectEdit = new QLineEdit();
MoneyEdit = new QLineEdit();
hbox = new QHBoxLayout();
vbox = new QVBoxLayout();
change = new QPushButton("修改");
cancel = new QPushButton("取消");
add = new QPushButton("添加");
editList = {nameEdit, SexEdit, AgeEdit, ClassEdit,
SumEdit, IdEdit, AddressEdit};
editList2 = {nameEdit, SexEdit, AgeEdit, ClassEdit,
SumEdit, IdEdit, AddressEdit, chineseEdit,
mathematicsEdit, EnglishEdit, PhysicsEdit, ChemistryEdit,
historyEdit, GeographyEdit, PoliticsEdit, BiologyEdit};
allEditList = {nameEdit, SexEdit, AgeEdit, ClassEdit,
SumEdit, IdEdit, AddressEdit, chineseEdit,
mathematicsEdit, EnglishEdit, PhysicsEdit, ChemistryEdit,
historyEdit, GeographyEdit, PoliticsEdit, BiologyEdit};
teacherEditList = {nameEdit, SexEdit, AgeEdit, ClassEdit,
SubjectEdit, IdEdit, AddressEdit, MoneyEdit};
connect(cancel, &QPushButton::clicked, [=]() { close(); });
}
AddNewWindow::~AddNewWindow() { delete ui; }
chartwindow.h
這個文件主要用於顯示圖餅、柱狀圖、線條
#ifndef CHARTWINDOW_H
#define CHARTWINDOW_H
#include "studentinfo.h"
#include "teacherinfo.h"
#include <QVBoxLayout>
#include <QWidget>
#include <QtCharts>
namespace Ui {
class chartWindow;
}
class chartWindow : public QWidget {
Q_OBJECT
public:
QPieSeries *series;
QBarSeries *studentCourseSum;
// QChartView *chartView;
StudentInfo s;
int init_ok = 0, courseSum_init_ok = 0;
// QChart *chart1 = NULL, *chart2 = NULL;
QPoint p;
public:
QChartView *ShowStudentChart(QList<StudentInfo> l);
QChartView *ShowStudentBarSeries(QList<StudentInfo> l);
QChartView *ShowTeacherView(QList<TeacherInfo> l);
void init();
public:
explicit chartWindow(QWidget *parent = nullptr);
~chartWindow();
private:
Ui::chartWindow *ui;
};
#endif // CHARTWINDOW_H
chartwindow.cpp
#include "chartwindow.h"
#include "ui_chartwindow.h"
chartWindow::chartWindow(QWidget *parent)
: QWidget(parent), ui(new Ui::chartWindow) {
ui->setupUi(this);
}
QChartView *chartWindow::ShowTeacherView(QList<TeacherInfo> l) {
QLineSeries *lineseries = new QLineSeries();
QStringList categories;
lineseries->setName("工資");
for (int i = 0; i < l.size(); i++) {
lineseries->append(i, l[i].getMoney().toInt());
categories.append(l[i].getName());
}
QChart *chart = new QChart();
QBarCategoryAxis *axis = new QBarCategoryAxis();
chart->addSeries(lineseries);
chart->createDefaultAxes();
chart->legend()->setVisible(true);
chart->legend()->setAlignment(Qt::AlignBottom);
axis->append(categories);
chart->setAxisX(axis);
chart->setTitle("教師工資一覽");
QChartView *chartView = new QChartView(chart);
chartView->setRenderHint(QPainter::Antialiasing);
return chartView;
}
QChartView *chartWindow::ShowStudentBarSeries(QList<StudentInfo> l) {
init();
studentCourseSum->clear();
QBarSet *chinese = new QBarSet("語文");
QBarSet *mathematics = new QBarSet("數學");
QBarSet *English = new QBarSet("英語");
QBarSet *Physics = new QBarSet("物理");
QBarSet *Chemistry = new QBarSet("化學");
QBarSet *history = new QBarSet("歷史");
QBarSet *Geography = new QBarSet("地理");
QBarSet *Politics = new QBarSet("政治");
QBarSet *Biology = new QBarSet("生物");
double (*re_str)(QString str) = [](QString str) {
return str.replace(QRegExp("\\s+"), "").toDouble();
};
qDebug() << "QList<StudentInfo> l size ::: " << l.size();
QStringList studentNameList;
foreach (StudentInfo info, l) {
chinese->append(re_str(info.getChinese()));
mathematics->append(re_str(info.getMathematics()));
English->append(re_str(info.getEnglish()));
Physics->append(re_str(info.getPhysics()));
Chemistry->append(re_str(info.getChemistry()));
history->append(re_str(info.getHistory()));
Geography->append(re_str(info.getGeography()));
Politics->append(re_str(info.getPolitics()));
Biology->append(re_str(info.getBiology()));
studentNameList.append(info.getName());
}
Biology->setColor(QColor(28, 28, 28));
Politics->setColor(QColor(72, 209, 204));
Geography->setColor(QColor(139, 101, 8));
history->setColor(QColor(205, 104, 57));
Chemistry->setColor(QColor(208, 32, 144));
studentCourseSum->append({chinese, mathematics, English, Physics, Chemistry,
history, Geography, Politics, Biology});
studentCourseSum->setLabelsPosition(
QAbstractBarSeries::
LabelsInsideEnd); // 設置數據系列標籤的位置於數據柱內測上方
studentCourseSum->setLabelsVisible(true); // 設置顯示數據系列標籤
QChart *chart2 = new QChart();
chart2->addSeries(studentCourseSum);
chart2->setTitle("學生成績");
chart2->setAnimationOptions(QChart::SeriesAnimations);
QBarCategoryAxis *axis = new QBarCategoryAxis();
axis->append(studentNameList);
chart2->createDefaultAxes();
chart2->setAxisX(axis, studentCourseSum);
chart2->legend()->setVisible(true);
chart2->legend()->setAlignment(Qt::AlignBottom);
QChartView *chartView = new QChartView(chart2);
chartView->setRenderHint(QPainter::Antialiasing);
chartView->setHorizontalScrollBarPolicy(
Qt::ScrollBarPolicy::ScrollBarAsNeeded);
chartView->setVerticalScrollBarPolicy(Qt::ScrollBarPolicy::ScrollBarAsNeeded);
chartView->setResizeAnchor(QGraphicsView::AnchorUnderMouse);
chartView->setTransformationAnchor(QGraphicsView::AnchorUnderMouse);
return chartView;
}
QChartView *chartWindow::ShowStudentChart(QList<StudentInfo> StudentInfoList) {
init();
series->clear();
// chart1->removeAllSeries();
double sum = 0.0, boyNum = 0.0, girlNum = 0.0, boy = 0,
num = StudentInfoList.size(), girl = 0;
foreach (StudentInfo s, StudentInfoList) {
if (s.getSex().compare("女") == 0) {
girl++;
}
if (s.getSex().compare("男") == 0) {
boy++;
}
sum += s.getSum().replace(QRegExp("\\s+"), "").toDouble();
}
boyNum = (boy / num) * 100;
girlNum = (girl / num) * 100;
qDebug() << "男生佔" + QString::number(boyNum) + "%" << boyNum;
qDebug() << "女生佔" + QString::number(girlNum) + "%" << girlNum;
series->append("男生佔" + QString::number(boyNum) + "%", boyNum);
series->append("女生佔" + QString::number(girlNum) + "%", girlNum);
series->setLabelsVisible(true);
series->setHoleSize(0.35);
series->slices().at(0)->setColor(QColor(0, 255, 255));
series->slices().at(1)->setColor(QColor(205, 38, 38));
QChart *chart1 = new QChart();
chart1->addSeries(series);
chart1->setTitle("學校男女比例");
// return chart;
QChartView *chartView = new QChartView(chart1);
// chartView->setChart(chart);
chartView->setRenderHint(QPainter::Antialiasing);
return chartView;
}
void chartWindow::init() {
if (init_ok == 0) {
series = new QPieSeries();
init_ok++;
} else if (courseSum_init_ok == 0) {
studentCourseSum = new QBarSeries();
courseSum_init_ok++;
}
}
chartWindow::~chartWindow() { delete ui; }
crmwindow.h
這個文件爲登錄後界面,一切都從這裏開始操作
#ifndef CRMWINDOW_H
#define CRMWINDOW_H
#include <QAction>
#include <QCheckBox>
#include <QCloseEvent>
#include <QComboBox>
#include <QDebug>
#include <QEvent>
#include <QFontDialog>
#include <QHBoxLayout>
#include <QHeaderView>
#include <QInputDialog>
#include <QKeyEvent>
#include <QLabel>
#include <QLineEdit>
#include <QList>
#include <QMenu>
#include <QMenuBar>
#include <QMessageBox>
#include <QPushButton>
#include <QRegExp>
#include <QTableWidget>
#include <QTreeWidget>
#include <QTreeWidgetItem>
#include <QVBoxLayout>
#include <QWidget>
#include <QtCharts>
#include "addnewwindow.h"
#include "chartwindow.h"
#include "studentinfo.h"
#include "teacherinfo.h"
namespace Ui {
class CRMWindow;
}
class CRMWindow : public QWidget {
Q_OBJECT
public:
QList<StudentInfo> StudentInfoList, FindStudentInfoList;
QList<TeacherInfo> TeacherInfoList, FindTeacherInfoList;
AddNewWindow addNewWindow;
chartWindow chartwind;
QLineEdit *searchEdit;
QComboBox *showSearchValues;
QPushButton *searchButton, *addButton, *removeButton, *changeButton,
*refButton;
bool studentFindIsOK = false, studentChangeIsOK = false,
studentSubjectFindIsOK = false, studentSubjectChangeIsOK = false;
QChartView *chartView = NULL, *barView = NULL, *teacherView = NULL;
int clickedValue = -1;
public:
void showLayout();
void init();
void checkValues();
void closeEvent(QCloseEvent *event);
QTableWidget *addTableWidget(QStringList l);
void studentFind();
void showStudentFindLayout(QVBoxLayout *vbox2);
void listStudent(QList<StudentInfo> StudentInfoList);
void addStudent(StudentInfo studentInfo);
void removeStudent(int id);
void changeStudent();
void addTable(StudentInfo studentInfo, int index);
void listCourse(QList<StudentInfo> StudentInfoList);
void listTeacher(QList<TeacherInfo> TeacherInfoList);
void addTeacher(TeacherInfo teacherInfo);
void addTable(TeacherInfo teacherInfo, int index);
void checkClickValue();
void showTable();
void showCombox();
void closeControl();
void showControl();
void closeView();
void showView();
public:
QHBoxLayout *hbox;
QVBoxLayout *vbox;
QTableWidget *table, *table2, *table3;
public:
explicit CRMWindow(QWidget *parent = nullptr);
~CRMWindow();
private:
Ui::CRMWindow *ui;
};
#endif // CRMWINDOW_H
crmwindow.cpp
#include "crmwindow.h"
#include "ui_crmwindow.h"
CRMWindow::CRMWindow(QWidget *parent) : QWidget(parent), ui(new Ui::CRMWindow) {
ui->setupUi(this);
init();
}
CRMWindow::~CRMWindow() { delete ui; }
void CRMWindow::showLayout() {
QTreeWidget *tw = new QTreeWidget();
QStringList menu1list, menu2list;
menu1list << "首頁"
<< "學生信息"
<< "課程信息"
<< "在職人員"
<< "遵紀作風";
menu2list << "學生查詢"
<< "學生修改"
<< "課程查詢"
<< "課程修改"
<< "在職人員查詢"
<< "在職人員修改";
tw->setFixedWidth(220);
tw->setColumnCount(1);
tw->setHeaderHidden(true);
tw->setFont(QFont("華文楷體", 20));
tw->header()->setSectionResizeMode(QHeaderView::ResizeToContents);
tw->header()->setStretchLastSection(false);
QTreeWidgetItem *item = new QTreeWidgetItem(tw, {"crm"});
int menucount = 0, index = 0;
foreach (QString menu1, menu1list) {
QTreeWidgetItem *ii = new QTreeWidgetItem(item, {menu1});
if (menucount > 0 && index < menu2list.size()) {
for (int i = 0; i < 2; i++) {
new QTreeWidgetItem(ii, {menu2list[index]});
index++;
}
}
menucount++;
}
hbox->addWidget(tw, 1);
QVBoxLayout *vbox2 = new QVBoxLayout();
QLabel *titleLabel = new QLabel("CRM");
titleLabel->setFont(QFont("華文楷體", 20));
titleLabel->setAlignment(Qt::AlignCenter);
vbox2->addWidget(titleLabel);
vbox2->setAlignment(Qt::AlignCenter);
hbox->addLayout(vbox2);
vbox->addLayout(hbox, 1);
hbox = new QHBoxLayout();
chartView = chartwind.ShowStudentChart(StudentInfoList);
barView = chartwind.ShowStudentBarSeries(StudentInfoList);
teacherView = chartwind.ShowTeacherView(TeacherInfoList);
closeView();
hbox->addWidget(chartView);
hbox->addWidget(barView);
vbox2->addLayout(hbox);
vbox2->addWidget(teacherView);
showStudentFindLayout(vbox2);
connect(tw, &QTreeWidget::clicked, this, [=]() {
QString currentName = tw->currentItem()->text(tw->currentColumn());
if (currentName.compare("首頁") == 0) {
titleLabel->setText("首頁");
showView();
} else if (currentName.compare("學生信息") == 0) {
titleLabel->setText("學生信息");
clickedValue = 0;
showControl();
} else if (currentName.compare("學生查詢") == 0) {
titleLabel->setText("學生查詢");
clickedValue = 0;
studentFind();
} else if (currentName.compare("學生修改") == 0) {
titleLabel->setText("學生修改");
clickedValue = 0;
changeStudent();
} else if (currentName.compare("課程信息") == 0) {
titleLabel->setText("課程信息");
clickedValue = 1;
showControl();
} else if (currentName.compare("課程查詢") == 0) {
titleLabel->setText("課程查詢");
clickedValue = 1;
studentFind();
} else if (currentName.compare("課程修改") == 0) {
titleLabel->setText("課程修改");
clickedValue = 1;
changeStudent();
} else if (currentName.compare("在職人員") == 0) {
titleLabel->setText("在職人員");
clickedValue = 2;
showControl();
} else if (currentName.compare("在職人員查詢") == 0) {
titleLabel->setText("在職人員查詢");
clickedValue = 2;
addNewWindow.clickvalue = 2;
studentFind();
} else if (currentName.compare("在職人員修改") == 0) {
titleLabel->setText("在職人員修改");
clickedValue = 2;
addNewWindow.clickvalue = 2;
changeStudent();
} else if (currentName.compare("遵紀作風") == 0) {
titleLabel->setText("聽黨指揮能打勝仗");
closeControl();
}
});
}
void CRMWindow::closeView() {
barView->setHidden(true);
chartView->setHidden(true);
teacherView->setHidden(true);
}
void CRMWindow::showView() {
barView->setHidden(false);
chartView->setHidden(false);
teacherView->setHidden(false);
}
void CRMWindow::showControl() {
closeControl();
switch (clickedValue) {
case 0:
chartView->setHidden(false);
break;
case 1:
barView->setHidden(false);
break;
case 2:
teacherView->setHidden(false);
break;
}
}
void CRMWindow::closeControl() {
closeView();
addButton->setHidden(true);
changeButton->setHidden(true);
removeButton->setHidden(true);
refButton->setHidden(true);
searchEdit->setHidden(true);
searchButton->setHidden(true);
showSearchValues->setHidden(true);
table->setHidden(true);
table2->setHidden(true);
table3->setHidden(true);
}
void CRMWindow::addTable(StudentInfo studentInfo, int index) {
if (clickedValue == 0) {
table->setItem(index, 0, new QTableWidgetItem(studentInfo.getName()));
table->setItem(index, 1, new QTableWidgetItem(studentInfo.getSex()));
table->setItem(index, 2, new QTableWidgetItem(studentInfo.getAge()));
table->setItem(index, 3,
new QTableWidgetItem(studentInfo.getStudentClass()));
table->setItem(index, 4, new QTableWidgetItem(studentInfo.getSum()));
table->setItem(index, 5, new QTableWidgetItem(studentInfo.getId()));
table->setItem(index, 6, new QTableWidgetItem(studentInfo.getAddress()));
table->item(index, 0)->setTextAlignment(Qt::AlignCenter);
table->item(index, 1)->setTextAlignment(Qt::AlignCenter);
table->item(index, 2)->setTextAlignment(Qt::AlignCenter);
table->item(index, 3)->setTextAlignment(Qt::AlignCenter);
table->item(index, 4)->setTextAlignment(Qt::AlignCenter);
table->item(index, 5)->setTextAlignment(Qt::AlignCenter);
table->item(index, 6)->setTextAlignment(Qt::AlignCenter);
} else if (clickedValue == 1) {
table2->setItem(index, 0, new QTableWidgetItem(studentInfo.getName()));
table2->setItem(index, 1, new QTableWidgetItem(studentInfo.getSex()));
table2->setItem(index, 2, new QTableWidgetItem(studentInfo.getId()));
table2->setItem(index, 3, new QTableWidgetItem(studentInfo.getChinese()));
table2->setItem(index, 4,
new QTableWidgetItem(studentInfo.getMathematics()));
table2->setItem(index, 5, new QTableWidgetItem(studentInfo.getEnglish()));
table2->setItem(index, 6, new QTableWidgetItem(studentInfo.getPhysics()));
table2->setItem(index, 7, new QTableWidgetItem(studentInfo.getPolitics()));
table2->setItem(index, 8, new QTableWidgetItem(studentInfo.getChemistry()));
table2->setItem(index, 9, new QTableWidgetItem(studentInfo.getGeography()));
table2->setItem(index, 10, new QTableWidgetItem(studentInfo.getHistory()));
table2->setItem(index, 11, new QTableWidgetItem(studentInfo.getBiology()));
table2->item(index, 0)->setTextAlignment(Qt::AlignCenter);
table2->item(index, 1)->setTextAlignment(Qt::AlignCenter);
table2->item(index, 2)->setTextAlignment(Qt::AlignCenter);
table2->item(index, 3)->setTextAlignment(Qt::AlignCenter);
table2->item(index, 4)->setTextAlignment(Qt::AlignCenter);
table2->item(index, 5)->setTextAlignment(Qt::AlignCenter);
table2->item(index, 6)->setTextAlignment(Qt::AlignCenter);
table2->item(index, 7)->setTextAlignment(Qt::AlignCenter);
table2->item(index, 8)->setTextAlignment(Qt::AlignCenter);
table2->item(index, 9)->setTextAlignment(Qt::AlignCenter);
table2->item(index, 10)->setTextAlignment(Qt::AlignCenter);
table2->item(index, 11)->setTextAlignment(Qt::AlignCenter);
}
}
void CRMWindow::addTable(TeacherInfo teacherInfo, int index) {
if (clickedValue == 2) {
table3->setItem(index, 0, new QTableWidgetItem(teacherInfo.getName()));
table3->setItem(index, 1, new QTableWidgetItem(teacherInfo.getSex()));
table3->setItem(index, 2, new QTableWidgetItem(teacherInfo.getAge()));
table3->setItem(index, 3,
new QTableWidgetItem(teacherInfo.getManageClass()));
table3->setItem(index, 4,
new QTableWidgetItem(teacherInfo.getManageSubject()));
table3->setItem(index, 5, new QTableWidgetItem(teacherInfo.getId()));
table3->setItem(index, 6, new QTableWidgetItem(teacherInfo.getAddress()));
table3->setItem(index, 7, new QTableWidgetItem(teacherInfo.getMoney()));
table3->item(index, 0)->setTextAlignment(Qt::AlignCenter);
table3->item(index, 1)->setTextAlignment(Qt::AlignCenter);
table3->item(index, 2)->setTextAlignment(Qt::AlignCenter);
table3->item(index, 3)->setTextAlignment(Qt::AlignCenter);
table3->item(index, 4)->setTextAlignment(Qt::AlignCenter);
table3->item(index, 5)->setTextAlignment(Qt::AlignCenter);
table3->item(index, 6)->setTextAlignment(Qt::AlignCenter);
table3->item(index, 7)->setTextAlignment(Qt::AlignCenter);
}
}
QTableWidget *CRMWindow::addTableWidget(QStringList l) {
QTableWidget *table = new QTableWidget(l.size(), l.size());
table->setEditTriggers(QAbstractItemView::EditTrigger::NoEditTriggers);
table->verticalHeader()->setHidden(true);
//設置表格默認爲填充
// table->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
table->horizontalHeader()->setSectionResizeMode(QHeaderView::Interactive);
table->setSelectionBehavior(QAbstractItemView::SelectRows);
return table;
}
void CRMWindow::listCourse(QList<StudentInfo> StudentAchievementList) {
table2->clear();
table2->setRowCount(StudentAchievementList.size());
table2->setHorizontalHeaderLabels(addNewWindow.courseList);
for (int i = 0; i < StudentAchievementList.size(); i++) {
addTable(StudentAchievementList[i], i);
}
}
void CRMWindow::listStudent(QList<StudentInfo> StudentInfoList) {
table->clear();
table->setRowCount(StudentInfoList.size());
table->setHorizontalHeaderLabels(addNewWindow.studentList);
for (int i = 0; i < StudentInfoList.size(); i++) {
addTable(StudentInfoList[i], i);
}
}
void CRMWindow::listTeacher(QList<TeacherInfo> TeacherInfoList) {
table3->clear();
table3->setRowCount(TeacherInfoList.size());
table3->setHorizontalHeaderLabels(addNewWindow.teacherList);
for (int i = 0; i < TeacherInfoList.size(); i++) {
addTable(TeacherInfoList[i], i);
}
}
void CRMWindow::addStudent(StudentInfo studentInfo) {
if (!studentInfo.getName().isNull() || !studentInfo.getName().isEmpty()) {
StudentInfoList.append(studentInfo);
}
}
void CRMWindow::addTeacher(TeacherInfo teacherInfo) {
if (!teacherInfo.getName().isNull() || !teacherInfo.getName().isEmpty()) {
TeacherInfoList.append(teacherInfo);
}
}
void CRMWindow::checkClickValue() {
if (StudentInfoList.size() > 0 || TeacherInfoList.size() > 0) {
switch (clickedValue) {
case 0:
listStudent(StudentInfoList);
break;
case 1:
listCourse(StudentInfoList);
break;
case 2:
listTeacher(TeacherInfoList);
break;
}
}
}
void CRMWindow::showTable() {
switch (clickedValue) {
case 0:
table->setHidden(false);
table2->setHidden(true);
table3->setHidden(true);
break;
case 1:
table->setHidden(true);
table2->setHidden(false);
table3->setHidden(true);
break;
case 2:
table->setHidden(true);
table2->setHidden(true);
table3->setHidden(false);
break;
}
}
void CRMWindow::changeStudent() {
closeView();
addButton->setHidden(false);
changeButton->setHidden(false);
removeButton->setHidden(false);
refButton->setHidden(false);
showTable();
searchEdit->setHidden(false);
searchButton->setHidden(false);
showSearchValues->setHidden(false);
void (*changeStudent)(QList<QTableWidgetItem *> t, StudentInfo & s,
QList<StudentInfo> StudentInfoList) =
[](QList<QTableWidgetItem *> t, StudentInfo &s,
QList<StudentInfo> StudentInfoList) {
s.setName(t[0]->text());
s.setSex(t[1]->text());
s.setAge(t[2]->text());
s.setStudentClass(t[3]->text());
s.setSum(t[4]->text());
s.setId(t[5]->text());
s.setAddress(t[6]->text());
foreach (StudentInfo info, StudentInfoList) {
if (info.getId().compare(s.getId()) == 0) {
s = info;
break;
}
}
};
void (*changeCourse)(QList<QTableWidgetItem *> t, StudentInfo & s,
QList<StudentInfo> StudentInfoList) =
[](QList<QTableWidgetItem *> t, StudentInfo &s,
QList<StudentInfo> StudentInfoList) {
s.setName(t[0]->text());
s.setSex(t[1]->text());
s.setId(t[2]->text());
s.setChinese(t[3]->text());
s.setMathematics(t[4]->text());
s.setEnglish(t[5]->text());
s.setPhysics(t[6]->text());
s.setPolitics(t[7]->text());
s.setChemistry(t[8]->text());
s.setGeography(t[9]->text());
s.setHistory(t[10]->text());
s.setBiology(t[11]->text());
foreach (StudentInfo info, StudentInfoList) {
if (info.getId().compare(s.getId()) == 0) {
s = info;
break;
}
}
};
void (*changeTeacher)(QList<QTableWidgetItem *> t, TeacherInfo & s,
QList<TeacherInfo> TeacherInfoList) =
[](QList<QTableWidgetItem *> t, TeacherInfo &s,
QList<TeacherInfo> TeacherInfoList) {
s.setName(t[0]->text());
s.setSex(t[1]->text());
s.setAge(t[2]->text());
s.setManageClass(t[3]->text());
s.setManageSubject(t[4]->text());
s.setId(t[5]->text());
s.setAddress(t[6]->text());
foreach (TeacherInfo info, TeacherInfoList) {
if (info.getId().compare(s.getId()) == 0) {
s = info;
break;
}
}
};
showCombox();
if (!studentChangeIsOK) {
connect(searchButton, &QPushButton::clicked, this, [=]() {
FindStudentInfoList.clear();
FindTeacherInfoList.clear();
if (clickedValue == 2) {
switch (showSearchValues->currentIndex()) {
case 0:
foreach (TeacherInfo info, TeacherInfoList) {
if (info.getName().indexOf(
searchEdit->text().replace(QRegExp("\\s+"), "")) != -1) {
FindTeacherInfoList.append(info);
}
}
break;
case 1:
foreach (TeacherInfo info, TeacherInfoList) {
if (info.getSex().indexOf(
searchEdit->text().replace(QRegExp("\\s+"), "")) != -1) {
FindTeacherInfoList.append(info);
}
}
break;
case 2:
foreach (TeacherInfo info, TeacherInfoList) {
if (info.getAge().indexOf(
searchEdit->text().replace(QRegExp("\\s+"), "")) != -1) {
FindTeacherInfoList.append(info);
}
}
break;
case 3:
foreach (TeacherInfo info, TeacherInfoList) {
if (info.getManageClass().indexOf(
searchEdit->text().replace(QRegExp("\\s+"), "")) != -1) {
FindTeacherInfoList.append(info);
}
}
break;
case 4:
foreach (TeacherInfo info, TeacherInfoList) {
if (info.getManageSubject().indexOf(
searchEdit->text().replace(QRegExp("\\s+"), "")) != -1) {
FindTeacherInfoList.append(info);
}
}
break;
case 5:
foreach (TeacherInfo info, TeacherInfoList) {
if (info.getId().indexOf(
searchEdit->text().replace(QRegExp("\\s+"), "")) != -1) {
FindTeacherInfoList.append(info);
}
}
break;
case 6:
foreach (TeacherInfo info, TeacherInfoList) {
if (info.getAddress().indexOf(
searchEdit->text().replace(QRegExp("\\s+"), "")) != -1) {
FindTeacherInfoList.append(info);
}
}
break;
}
} else {
switch (showSearchValues->currentIndex()) {
case 0:
qDebug() << showSearchValues->currentText() << " -- 0";
foreach (StudentInfo info, StudentInfoList) {
if (info.getName().indexOf(
searchEdit->text().replace(QRegExp("\\s+"), "")) != -1) {
FindStudentInfoList.append(info);
}
}
break;
case 1:
qDebug() << showSearchValues->currentText() << " -- 1";
foreach (StudentInfo info, StudentInfoList) {
if (info.getSex().indexOf(
searchEdit->text().replace(QRegExp("\\s+"), "")) != -1) {
FindStudentInfoList.append(info);
}
}
break;
case 2:
qDebug() << showSearchValues->currentText() << " -- 2";
foreach (StudentInfo info, StudentInfoList) {
if (info.getAge().indexOf(
searchEdit->text().replace(QRegExp("\\s+"), "")) != -1) {
FindStudentInfoList.append(info);
}
}
break;
case 3:
qDebug() << showSearchValues->currentText() << " -- 3";
foreach (StudentInfo info, StudentInfoList) {
if (info.getStudentClass().indexOf(
searchEdit->text().replace(QRegExp("\\s+"), "")) != -1) {
FindStudentInfoList.append(info);
}
}
break;
case 4:
qDebug() << showSearchValues->currentText() << " -- 4";
foreach (StudentInfo info, StudentInfoList) {
if (info.getSum().indexOf(
searchEdit->text().replace(QRegExp("\\s+"), "")) != -1) {
FindStudentInfoList.append(info);
}
}
break;
case 5:
qDebug() << showSearchValues->currentText() << " -- 5";
foreach (StudentInfo info, StudentInfoList) {
if (info.getId().indexOf(
searchEdit->text().replace(QRegExp("\\s+"), "")) != -1) {
FindStudentInfoList.append(info);
}
}
break;
case 6:
qDebug() << showSearchValues->currentText() << " -- 6";
foreach (StudentInfo info, StudentInfoList) {
if (info.getAddress().indexOf(
searchEdit->text().replace(QRegExp("\\s+"), "")) != -1) {
FindStudentInfoList.append(info);
}
}
break;
}
}
if (clickedValue == 0) {
listStudent(FindStudentInfoList);
} else if (clickedValue == 1) {
listCourse(FindStudentInfoList);
} else if (clickedValue == 2) {
listTeacher(FindTeacherInfoList);
}
});
connect(removeButton, &QPushButton::clicked, this, [=]() {
if (clickedValue == 2) {
TeacherInfo info;
if (table3->selectedItems().size() > 0) {
changeTeacher(table3->selectedItems(), info, TeacherInfoList);
} else {
int id = QInputDialog::getInt(this, "教師編號", "請輸入");
foreach (TeacherInfo info2, TeacherInfoList) {
if (info2.getId().compare(QString::number(id)) == 0) {
info = info2;
}
}
}
addNewWindow.RemoveStudent(TeacherInfoList, info);
} else {
StudentInfo s;
if (table->selectedItems().size() > 0) {
changeStudent(table->selectedItems(), s, StudentInfoList);
} else if (table2->selectedItems().size() > 0) {
changeCourse(table2->selectedItems(), s, StudentInfoList);
} else {
int id = QInputDialog::getInt(this, "學生學號", "請輸入");
foreach (StudentInfo info, StudentInfoList) {
if (info.getId().compare(QString::number(id)) == 0) {
s = info;
}
}
}
qDebug() << "s ::: " << s.getName();
addNewWindow.RemoveStudent(StudentInfoList, s);
}
});
connect(addButton, &QPushButton::clicked, this, [=]() {
if (clickedValue == 2) {
addNewWindow.AddStudent(TeacherInfoList);
} else {
addNewWindow.AddStudent(StudentInfoList);
}
});
connect(table, &QTableWidget::doubleClicked, this, [=]() {
if (clickedValue == 0) {
StudentInfo s;
changeStudent(table->selectedItems(), s, StudentInfoList);
addNewWindow.ChangeStudent(StudentInfoList, s);
}
});
connect(table2, &QTableWidget::doubleClicked, this, [=]() {
if (clickedValue == 1) {
StudentInfo s;
changeCourse(table2->selectedItems(), s, StudentInfoList);
addNewWindow.ChangeStudent(StudentInfoList, s);
}
});
connect(table3, &QTableWidget::doubleClicked, this, [=]() {
if (clickedValue == 2) {
TeacherInfo s;
changeTeacher(table3->selectedItems(), s, TeacherInfoList);
addNewWindow.ChangeStudent(TeacherInfoList, s);
}
});
connect(refButton, &QPushButton::clicked, [=]() { checkClickValue(); });
connect(changeButton, &QPushButton::clicked, this, [=]() {
if (clickedValue == 2) {
TeacherInfo s;
if (table3->selectedItems().size() > 0) {
changeTeacher(table3->selectedItems(), s, TeacherInfoList);
} else {
int id = QInputDialog::getInt(this, "教師編號", "請輸入");
foreach (TeacherInfo info, TeacherInfoList) {
if (info.getId().compare(QString::number(id)) == 0) {
s = info;
}
}
}
addNewWindow.ChangeStudent(TeacherInfoList, s);
} else {
StudentInfo s;
if (table->selectedItems().size() > 0) {
changeStudent(table->selectedItems(), s, StudentInfoList);
} else if (table2->selectedItems().size() > 0) {
changeCourse(table2->selectedItems(), s, StudentInfoList);
} else {
int id = QInputDialog::getInt(this, "學生學號", "請輸入");
foreach (StudentInfo info, StudentInfoList) {
if (info.getId().compare(QString::number(id)) == 0) {
s = info;
}
}
}
addNewWindow.ChangeStudent(StudentInfoList, s);
}
});
studentChangeIsOK = true;
}
checkClickValue();
}
void CRMWindow::studentFind() {
if (!studentFindIsOK) {
changeStudent();
studentFindIsOK = true;
}
showCombox();
closeView();
addButton->setHidden(true);
changeButton->setHidden(true);
removeButton->setHidden(true);
refButton->setHidden(true);
searchEdit->setHidden(false);
searchButton->setHidden(false);
showSearchValues->setHidden(false);
showTable();
}
void CRMWindow::showStudentFindLayout(QVBoxLayout *vbox2) {
searchEdit = new QLineEdit();
searchEdit->setPlaceholderText("請輸入搜索內容");
searchEdit->setFixedHeight(40);
showSearchValues = new QComboBox();
showSearchValues->addItems(addNewWindow.studentList);
showSearchValues->setFixedHeight(40);
QPushButton *(*addButtonFunc)(QString text) = [](QString text) {
QPushButton *B = new QPushButton(text);
B->setFixedHeight(40);
return B;
};
QHBoxLayout *(*addHbox)(QList<QWidget *> l) = [](QList<QWidget *> l) {
QHBoxLayout *hbox2 = new QHBoxLayout();
foreach (QWidget *q, l) { hbox2->addWidget(q); }
return hbox2;
};
searchButton = addButtonFunc("搜索");
addButton = addButtonFunc("新增");
changeButton = addButtonFunc("修改");
removeButton = addButtonFunc("刪除");
refButton = addButtonFunc("刷新");
vbox2->addLayout(addHbox({searchEdit, showSearchValues, searchButton}));
vbox2->addLayout(addHbox({addButton, changeButton, removeButton, refButton}));
table = addTableWidget(addNewWindow.studentList);
table2 = addTableWidget(addNewWindow.courseList);
table3 = addTableWidget(addNewWindow.teacherList);
vbox2->addWidget(table);
vbox2->addWidget(table2);
vbox2->addWidget(table3);
// addButton->setHidden(true);
// changeButton->setHidden(true);
// removeButton->setHidden(true);
// refButton->setHidden(true);
// searchEdit->setHidden(true);
// searchButton->setHidden(true);
// showSearchValues->setHidden(true);
// table->setHidden(true);
// table2->setHidden(true);
// table3->setHidden(true);
closeControl();
}
void CRMWindow::init() {
hbox = new QHBoxLayout();
vbox = new QVBoxLayout();
checkValues();
setWindowTitle("CRMSystem");
resize(800, 600);
showLayout();
setLayout(vbox);
}
void CRMWindow::checkValues() {
double (*getSum)(QStringList l) = [](QStringList l) {
double sum = 0;
foreach (QString n, l) { sum += n.replace(QRegExp("\\s+"), "").toDouble(); }
return sum;
};
QString (*getRandomNum)() = []() {
return QString::number(QRandomGenerator::global()->bounded(0, 100));
};
QString (*getRandomSum)(int min, int max) = [](int min, int max) {
return QString::number(QRandomGenerator::global()->bounded(min, max));
};
//初始化數據
QString stus[15][16] = {
{"小明", getRandomSum(15, 30), "123312", "上海虹橋", "666", "男",
"12計算機系三班", getRandomNum(), getRandomNum(), getRandomNum(),
getRandomNum(), getRandomNum(), getRandomNum(), getRandomNum(),
getRandomNum(), getRandomNum()},
{"小紅", getRandomSum(15, 30), "123313", "上海浦東", "66", "女",
"12計算機系二班", getRandomNum(), getRandomNum(), getRandomNum(),
getRandomNum(), getRandomNum(), getRandomNum(), getRandomNum(),
getRandomNum(), getRandomNum()},
{"小王", getRandomSum(15, 30), "123332", "北京海淀", "780", "男",
"12模具系一班", getRandomNum(), getRandomNum(), getRandomNum(),
getRandomNum(), getRandomNum(), getRandomNum(), getRandomNum(),
getRandomNum(), getRandomNum()},
{"小李", getRandomSum(15, 30), "143311", "廣州番禺", "566", "男",
"14電商系四班", getRandomNum(), getRandomNum(), getRandomNum(),
getRandomNum(), getRandomNum(), getRandomNum(), "6", getRandomNum(),
getRandomNum()},
{"小黑", getRandomSum(15, 30), "153316", "上海虹橋", "666", "男",
"15計算機系一班", getRandomNum(), getRandomNum(), getRandomNum(),
getRandomNum(), getRandomNum(), getRandomNum(), "80", getRandomNum(),
getRandomNum()},
{"唐唐", getRandomSum(15, 30), "123314", "上海虹橋", "667", "男",
"12計算機系四班", getRandomNum(), getRandomNum(), getRandomNum(),
getRandomNum(), getRandomNum(), getRandomNum(), "10", getRandomNum(),
getRandomNum()},
{"張三", getRandomSum(15, 30), "12312", "上海虹橋", "663", "男",
"13計算機系三班", getRandomNum(), getRandomNum(), getRandomNum(),
getRandomNum(), getRandomNum(), getRandomNum(), "90", getRandomNum(),
getRandomNum()},
{"李四", getRandomSum(15, 30), "13312", "上海虹橋", "626", "男",
"14計算機系三班", getRandomNum(), getRandomNum(), getRandomNum(),
getRandomNum(), getRandomNum(), getRandomNum(), "120", getRandomNum(),
getRandomNum()},
{"王五", getRandomSum(15, 30), "123276", "上海虹橋", "166", "男",
"16計算機系三班", getRandomNum(), getRandomNum(), getRandomNum(),
getRandomNum(), getRandomNum(), getRandomNum(), "130", getRandomNum(),
getRandomNum()},
{"仁六", getRandomSum(15, 30), "123319", "上海虹橋", "366", "男",
"20計算機系三班", getRandomNum(), getRandomNum(), getRandomNum(),
getRandomNum(), getRandomNum(), getRandomNum(), getRandomNum(),
getRandomNum(), getRandomNum()},
{"二狗", getRandomSum(15, 30), "144276", "廣州越秀", "16", "男",
"20機械系三班", getRandomNum(), getRandomNum(), getRandomNum(),
getRandomNum(), getRandomNum(), getRandomNum(), getRandomNum(),
getRandomNum(), getRandomNum()},
{"小花", getRandomSum(15, 30), "127319", "深圳龍崗", "766", "女",
"20電商系三班", getRandomNum(), getRandomNum(), getRandomNum(),
getRandomNum(), getRandomNum(), getRandomNum(), getRandomNum(),
getRandomNum(), getRandomNum()},
{"老王", getRandomSum(15, 30), "013319", "陝西西安", "566", "男",
"08計算機系一班", getRandomNum(), getRandomNum(), getRandomNum(),
getRandomNum(), getRandomNum(), getRandomNum(), getRandomNum(),
getRandomNum(), getRandomNum()},
{"小燕", getRandomSum(15, 30), "203319", "浙江杭州", "766", "女",
"20幼教系一班", getRandomNum(), getRandomNum(), getRandomNum(),
getRandomNum(), getRandomNum(), getRandomNum(), getRandomNum(),
getRandomNum(), getRandomNum()},
{"劉備", getRandomSum(15, 30), "173319", "四川成都", "566", "男",
"17計算機系一班", getRandomNum(), getRandomNum(), getRandomNum(),
getRandomNum(), getRandomNum(), getRandomNum(), getRandomNum(),
getRandomNum(), getRandomNum()}};
QString teacherDatas[15][8] = {
{"王剛", "男", getRandomSum(18, 70), "計算機系",
"計算機科學與技術、數據結構、操作系統理論", "12138", "北京通城區",
getRandomSum(500, 10000)},
{"王二妞", "女", getRandomSum(18, 70), "歷史系",
"中國通史、世界通史,史學理論、中源國史學史、西方史學史、考古學通論、中"
"外關係史、文化人類學、歷史地理學",
"121145", "北京海淀區", getRandomSum(500, 10000)},
{"張鐵柱", "男", getRandomSum(18, 70), "物理系",
"力學、熱學、光學、電磁學、原子物理", "12553", "上海浦東",
getRandomSum(500, 10000)},
{"載淳", "男", getRandomSum(18, 70), "皇家系", "攝政、輔佐", "18601",
"北京故宮紫禁城", getRandomSum(500, 10000)},
{"張鐵", "男", getRandomSum(18, 70), "物理系",
"力學、熱學、光學、電磁學、原子物理", "12523", "上海浦東",
getRandomSum(500, 10000)},
{"張柱", "男", getRandomSum(18, 70), "物理系",
"力學、熱學、光學、電磁學、原子物理", "12551", "上海浦東",
getRandomSum(500, 10000)},
{"劉田", "男", getRandomSum(18, 70), "電商系",
"電子商務專業,簡稱電商專業,是融計算機科學、市場營銷學、管理學、經濟學"
"、法學",
"10875", "四川成都", getRandomSum(500, 10000)},
{"張三丰", "男", getRandomSum(18, 70), "化學系",
"有機化學,無機化學,分析化學,物理化學,環境化學,天然產物化學,化工原"
"理",
"13225", "美國聖地亞哥", getRandomSum(500, 10000)},
{"李敏", "女", getRandomSum(18, 70), "計算機系", "計算機科學與技術",
"12583", "上海浦東", getRandomSum(500, 10000)},
{"張鐵柱2", "男", getRandomSum(18, 70), "物理系",
"力學、熱學、光學、電磁學、原子物理", "125553", "上海浦東",
getRandomSum(500, 10000)},
{"張鐵柱3", "男", getRandomSum(18, 70), "物理系",
"力學、熱學、光學、電磁學、原子物理", "125x3", "上海浦東",
getRandomSum(500, 10000)},
{"張鐵柱4", "男", getRandomSum(18, 70), "物理系",
"力學、熱學、光學、電磁學、原子物理", "125a3", "上海浦東",
getRandomSum(500, 10000)},
{"張鐵柱5", "男", getRandomSum(18, 70), "物理系",
"力學、熱學、光學、電磁學、原子物理", "125163", "上海浦東",
getRandomSum(500, 10000)},
{"張鐵柱6", "男", getRandomSum(18, 70), "物理系",
"力學、熱學、光學、電磁學、原子物理", "125538", "上海浦東",
getRandomSum(500, 10000)},
{"張鐵柱7", "男", getRandomSum(18, 70), "物理系",
"力學、熱學、光學、電磁學、原子物理", "125053", "上海浦東",
getRandomSum(500, 10000)}};
for (int i = 0; i < 15; i++) {
stus[i][4] = QString::number(
getSum({stus[i][7], stus[i][8], stus[i][9], stus[i][10], stus[i][11],
stus[i][12], stus[i][13], stus[i][14], stus[i][15]}));
StudentInfoList.append(
StudentInfo(stus[i][7], stus[i][8], stus[i][9], stus[i][10],
stus[i][11], stus[i][12], stus[i][13], stus[i][14],
stus[i][15], stus[i][0], stus[i][1], stus[i][3], stus[i][5],
stus[i][2], stus[i][4], stus[i][6]));
TeacherInfoList.append(TeacherInfo(teacherDatas[i][0], teacherDatas[i][1],
teacherDatas[i][2], teacherDatas[i][3],
teacherDatas[i][4], teacherDatas[i][5],
teacherDatas[i][6], teacherDatas[i][7]));
}
}
void CRMWindow::closeEvent(QCloseEvent *event) {
QMessageBox msg;
msg.setIcon(QMessageBox::Icon::Warning);
msg.setWindowTitle("警告");
msg.setText("您是否要退出此程序?");
msg.setStandardButtons(QMessageBox::Yes | QMessageBox::No);
msg.setButtonText(QMessageBox::Yes, "是的,我要退出");
msg.setButtonText(QMessageBox::No, "不,我拒絕");
if (msg.exec() == QMessageBox::Yes) {
event->accept();
} else {
event->ignore();
}
}
void CRMWindow::showCombox() {
switch (clickedValue) {
case 2:
for (int i = 0; i < addNewWindow.teacherList.size(); i++) {
showSearchValues->setItemText(i, addNewWindow.teacherList[i]);
}
break;
default:
for (int i = 0; i < addNewWindow.studentList.size(); i++) {
showSearchValues->setItemText(i, addNewWindow.studentList[i]);
}
break;
}
}
mainwindow.h
這個文件爲登錄窗口,主要用於驗證用戶是否存在以及用戶能否通過驗證登錄進來
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include "crmwindow.h"
#include <QCloseEvent>
#include <QDebug>
#include <QEvent>
#include <QFontDialog>
#include <QHBoxLayout>
#include <QKeyEvent>
#include <QLabel>
#include <QLineEdit>
#include <QMainWindow>
#include <QMessageBox>
#include <QPushButton>
#include <QRegExp>
#include <QRegExpValidator>
#include <QVBoxLayout>
#include <QWidget>
QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE
class MainWindow : public QMainWindow {
Q_OBJECT
public:
QHBoxLayout *hbox;
QVBoxLayout *vbox;
QPushButton *login;
QPushButton *quite;
QLabel *LoginIcon;
QLabel *LoginUserName;
QLabel *LoginUserPwd;
QLineEdit *userNameEdit;
QLineEdit *userPwdEdit;
QString userName, userPwd;
public:
void showLayout();
void showLoginMenu();
void init();
void checkValues();
// void closeEvent(QCloseEvent *event);
void keyPressEvent(QKeyEvent *event);
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent), ui(new Ui::MainWindow) {
ui->setupUi(this);
showLoginMenu();
}
void MainWindow::keyPressEvent(QKeyEvent *event) {
qDebug() << event->text();
if (event->text() == "\r") {
checkValues();
}
}
// void MainWindow::closeEvent(QCloseEvent *event) {
// QMessageBox msg;
// msg.setIcon(QMessageBox::Icon::Warning);
// msg.setWindowTitle("警告");
// msg.setText("您是否要退出此程序?");
// msg.setStandardButtons(QMessageBox::Yes | QMessageBox::No);
// msg.setButtonText(QMessageBox::Yes, "是的,我要退出");
// msg.setButtonText(QMessageBox::No, "不,我拒絕");
// if (msg.exec() == QMessageBox::Yes) {
// event->accept();
// } else {
// event->ignore();
// }
//}
void MainWindow::showLayout() {
setWindowTitle("學生信息管理系統");
setFixedSize(800, 260);
QWidget *widget = new QWidget();
setCentralWidget(widget);
vbox = new QVBoxLayout(widget);
void (*addLable)(QLabel * lable, QString s) = [](QLabel *lable, QString s) {
lable->setText(s);
lable->setFont(QFont("華文琥珀", 30));
lable->setAlignment(Qt::AlignCenter);
};
void (*addButton)(QPushButton * lable, QString s) = [](QPushButton *lable,
QString s) {
lable->setText(s);
lable->setFont(QFont("華文琥珀", 30));
};
void (*addEdit)(QLineEdit * lable, QString s) = [](QLineEdit *lable,
QString s) {
lable->setPlaceholderText(s);
lable->setFixedHeight(50);
lable->setValidator(new QRegExpValidator(QRegExp("[a-zA-Z0-9]+")));
};
addLable(LoginIcon, "學生信息管理系統登錄頁面");
addLable(LoginUserName, "用戶名");
addLable(LoginUserPwd, "密 碼");
addEdit(userNameEdit, "請輸入學生姓名");
addEdit(userPwdEdit, "請輸入學生密碼");
userPwdEdit->setEchoMode(QLineEdit::EchoMode::Password);
addButton(login, "登錄");
addButton(quite, "退出");
vbox->addWidget(LoginIcon);
hbox->addWidget(LoginUserName);
hbox->addWidget(userNameEdit, 1);
vbox->addLayout(hbox);
hbox = new QHBoxLayout();
hbox->addWidget(LoginUserPwd);
hbox->addWidget(userPwdEdit, 1);
vbox->addLayout(hbox);
hbox = new QHBoxLayout();
hbox->addWidget(login);
hbox->addWidget(quite);
vbox->addLayout(hbox);
vbox->setAlignment(Qt::AlignTop);
widget->setLayout(vbox);
}
void MainWindow::showLoginMenu() {
init();
showLayout();
userNameEdit->setText("root");
userPwdEdit->setText("123");
connect(login, &QPushButton::clicked, this, [=]() { checkValues(); });
connect(quite, &QPushButton::clicked, this, [=]() { close(); });
}
void MainWindow::checkValues() {
QMessageBox msg;
msg.setWindowTitle("登錄錯誤!!!!");
msg.setText("用戶名或者密碼錯誤,請重新輸入!!");
msg.setIcon(QMessageBox::Icon::Critical);
msg.setStandardButtons(QMessageBox::Ok | QMessageBox::No);
userName = userNameEdit->text().replace(QRegExp("\\s+"), "");
userPwd = userPwdEdit->text().replace(QRegExp("\\s+"), "");
if (userName.compare("root") == 0 && userPwd.compare("123") == 0) {
CRMWindow *c = new CRMWindow();
c->show();
this->close();
} else {
switch (msg.exec()) {
case QMessageBox::Ok:
userNameEdit->clear();
userPwdEdit->clear();
break;
;
;
case QMessageBox::No:
this->close();
;
;
}
}
}
void MainWindow::init() {
hbox = new QHBoxLayout();
login = new QPushButton();
quite = new QPushButton();
LoginIcon = new QLabel();
LoginUserName = new QLabel();
LoginUserPwd = new QLabel();
userNameEdit = new QLineEdit();
userPwdEdit = new QLineEdit();
}
MainWindow::~MainWindow() { delete ui; }
studentachievement.h
這些都是保存數據用得頭文件,我就不多說了,自己去翻譯
#ifndef STUDENTACHIEVEMENT_H
#define STUDENTACHIEVEMENT_H
#include "studentinfo.h"
class StudentAchievement : public StudentInfo {
public:
QString chinese, mathematics, English, Physics, Chemistry, history, Geography,
Politics, Biology;
QString getBiology() const;
void setBiology(const QString &value);
QString getMathematics() const;
void setMathematics(const QString &value);
QString getEnglish() const;
void setEnglish(const QString &value);
QString getPhysics() const;
void setPhysics(const QString &value);
QString getChemistry() const;
void setChemistry(const QString &value);
QString getHistory() const;
void setHistory(const QString &value);
QString getGeography() const;
void setGeography(const QString &value);
QString getPolitics() const;
void setPolitics(const QString &value);
QString getChinese() const;
void setChinese(const QString &value);
QString toString();
public:
StudentAchievement();
StudentAchievement(const QString &chinese, const QString &mathematics,
const QString &English, const QString &Physics,
const QString &Chemistry, const QString &history,
const QString &Geography, const QString &Politics,
const QString &Biology, const QString &name,
const QString &age, const QString &address,
const QString &sex, const QString &id, const QString &sum,
const QString &studentclass);
};
#endif // STUDENTACHIEVEMENT_H
studentachievement.cpp
#include "studentachievement.h"
QString StudentAchievement::getBiology() const { return Biology; }
void StudentAchievement::setBiology(const QString &value) { Biology = value; }
QString StudentAchievement::getMathematics() const { return mathematics; }
void StudentAchievement::setMathematics(const QString &value) {
mathematics = value;
}
QString StudentAchievement::getEnglish() const { return English; }
void StudentAchievement::setEnglish(const QString &value) { English = value; }
QString StudentAchievement::getPhysics() const { return Physics; }
void StudentAchievement::setPhysics(const QString &value) { Physics = value; }
QString StudentAchievement::getChemistry() const { return Chemistry; }
void StudentAchievement::setChemistry(const QString &value) {
Chemistry = value;
}
QString StudentAchievement::getHistory() const { return history; }
void StudentAchievement::setHistory(const QString &value) { history = value; }
QString StudentAchievement::getGeography() const { return Geography; }
void StudentAchievement::setGeography(const QString &value) {
Geography = value;
}
QString StudentAchievement::getPolitics() const { return Politics; }
void StudentAchievement::setPolitics(const QString &value) { Politics = value; }
QString StudentAchievement::getChinese() const { return chinese; }
void StudentAchievement::setChinese(const QString &value) { chinese = value; }
StudentAchievement::StudentAchievement(
const QString &chinese, const QString &mathematics, const QString &English,
const QString &Physics, const QString &Chemistry, const QString &history,
const QString &Geography, const QString &Politics, const QString &Biology,
const QString &name, const QString &age, const QString &address,
const QString &sex, const QString &id, const QString &sum,
const QString &studentclass) {
this->chinese = chinese;
this->mathematics = mathematics;
this->English = English;
this->Physics = Physics;
this->Chemistry = Chemistry;
this->history = history;
this->Geography = Geography;
this->Politics = Politics;
this->Biology = Biology;
this->name = name;
this->id = id;
this->address = address;
this->sex = sex;
this->sum = sum;
this->age = age;
this->studentclass = studentclass;
}
QString StudentAchievement::toString() {
return StudentInfo::toString() + "[ chinese : " + getChinese() +
" ][ mathematics : " + getMathematics() +
" ][ English : " + getEnglish() + " ][ Physics : " + getPhysics() +
" ][ Chemistry : " + getChemistry() + " ][ history : " + getHistory() +
" ][ Geography : " + getGeography() +
" ][ Politics : " + getPolitics() + " ][ Biology : " + getBiology() +
" ]";
}
StudentAchievement::StudentAchievement() {}
studentinfo.h
#ifndef STUDENTINFO_H
#define STUDENTINFO_H
#include <QString>
class StudentInfo {
public:
QString name, age, address, sex, id, sum, studentclass, chinese, mathematics,
English, Physics, Chemistry, history, Geography, Politics, Biology;
public:
void setName(QString name);
void setAge(QString age);
void setAddress(QString address);
void setSex(QString sex);
void setId(QString id);
void setSum(QString sum);
void setStudentClass(QString studentclass);
QString getName();
QString getAge();
QString getAddress();
QString getSex();
QString getId();
QString getSum();
QString getStudentClass();
StudentInfo(QString name, QString age, QString address, QString sex,
QString id, QString sum, QString studentclass);
StudentInfo(const QString &chinese, const QString &mathematics,
const QString &English, const QString &Physics,
const QString &Chemistry, const QString &history,
const QString &Geography, const QString &Politics,
const QString &Biology, const QString &name, const QString &age,
const QString &address, const QString &sex, const QString &id,
const QString &sum, const QString &studentclass);
QString toString();
public:
StudentInfo();
QString getChinese() const;
void setChinese(const QString &value);
QString getMathematics() const;
void setMathematics(const QString &value);
QString getBiology() const;
void setBiology(const QString &value);
QString getPolitics() const;
void setPolitics(const QString &value);
QString getGeography() const;
void setGeography(const QString &value);
QString getHistory() const;
void setHistory(const QString &value);
QString getChemistry() const;
void setChemistry(const QString &value);
QString getPhysics() const;
void setPhysics(const QString &value);
QString getEnglish() const;
void setEnglish(const QString &value);
};
#endif // STUDENTINFO_H
studentinfo.cpp
#include "studentinfo.h"
QString StudentInfo::getChinese() const { return chinese; }
void StudentInfo::setChinese(const QString &value) { chinese = value; }
QString StudentInfo::getMathematics() const { return mathematics; }
void StudentInfo::setMathematics(const QString &value) { mathematics = value; }
QString StudentInfo::getBiology() const { return Biology; }
void StudentInfo::setBiology(const QString &value) { Biology = value; }
QString StudentInfo::getPolitics() const { return Politics; }
void StudentInfo::setPolitics(const QString &value) { Politics = value; }
QString StudentInfo::getGeography() const { return Geography; }
void StudentInfo::setGeography(const QString &value) { Geography = value; }
QString StudentInfo::getHistory() const { return history; }
void StudentInfo::setHistory(const QString &value) { history = value; }
QString StudentInfo::getChemistry() const { return Chemistry; }
void StudentInfo::setChemistry(const QString &value) { Chemistry = value; }
QString StudentInfo::getPhysics() const { return Physics; }
void StudentInfo::setPhysics(const QString &value) { Physics = value; }
QString StudentInfo::getEnglish() const { return English; }
void StudentInfo::setEnglish(const QString &value) { English = value; }
StudentInfo::StudentInfo(const QString &chinese, const QString &mathematics,
const QString &English, const QString &Physics,
const QString &Chemistry, const QString &history,
const QString &Geography, const QString &Politics,
const QString &Biology, const QString &name,
const QString &age, const QString &address,
const QString &sex, const QString &id,
const QString &sum, const QString &studentclass) {
this->chinese = chinese;
this->mathematics = mathematics;
this->English = English;
this->Physics = Physics;
this->Chemistry = Chemistry;
this->history = history;
this->Geography = Geography;
this->Politics = Politics;
this->Biology = Biology;
this->name = name;
this->id = id;
this->address = address;
this->sex = sex;
this->sum = sum;
this->age = age;
this->studentclass = studentclass;
}
void StudentInfo::setName(QString name) { this->name = name; }
void StudentInfo::setAge(QString age) { this->age = age; }
void StudentInfo::setAddress(QString address) { this->address = address; }
void StudentInfo::setSex(QString sex) { this->sex = sex; }
void StudentInfo::setId(QString id) { this->id = id; }
void StudentInfo::setSum(QString sum) { this->sum = sum; }
void StudentInfo::setStudentClass(QString studentclass) {
this->studentclass = studentclass;
}
QString StudentInfo::getName() { return name; }
QString StudentInfo::getAge() { return age; }
QString StudentInfo::getAddress() { return address; }
QString StudentInfo::getSex() { return sex; }
QString StudentInfo::getId() { return id; }
QString StudentInfo::getSum() { return sum; }
QString StudentInfo::getStudentClass() { return studentclass; }
StudentInfo::StudentInfo(QString name, QString age, QString address,
QString sex, QString id, QString sum,
QString studentclass) {
this->name = name;
this->id = id;
this->address = address;
this->sex = sex;
this->sum = sum;
this->age = age;
this->studentclass = studentclass;
}
QString StudentInfo::toString() {
return "[ name : " + getName() + " ][ id : " + getId() +
" ][ address : " + getAddress() + " ][ sex : " + getSex() +
" ][ sum : " + getSum() + " ][ age : " + getAge() +
" ][ studentclass : " + getStudentClass() + " ]";
}
StudentInfo::StudentInfo() {}
teacherinfo.h
#ifndef TEACHERINFO_H
#define TEACHERINFO_H
#include <QString>
class TeacherInfo {
/**
{"教師名字", "教師性別", "教師年齡",
"教師所管班級", "教師所教科目", "教師執照號碼",
"教師住址","教師工資"};
*/
public:
QString name, sex, age, manageClass, manageSubject, id, address, money;
public:
QString getName() const;
void setName(const QString &value);
QString getSex() const;
void setSex(const QString &value);
QString getAge() const;
void setAge(const QString &value);
QString getManageClass() const;
void setManageClass(const QString &value);
QString getManageSubject() const;
void setManageSubject(const QString &value);
QString getId() const;
void setId(const QString &value);
QString getAddress() const;
void setAddress(const QString &value);
QString getMoney() const;
void setMoney(const QString &value);
QString toString();
public:
TeacherInfo();
TeacherInfo(const QString &name, const QString &sex, const QString &age,
const QString &manageClass, const QString &manageSubject,
const QString &id, const QString &address);
TeacherInfo(const QString &name, const QString &sex, const QString &age,
const QString &manageClass, const QString &manageSubject,
const QString &id, const QString &address, const QString &money);
};
#endif // TEACHERINFO_H
teacherinfo.cpp
#include "teacherinfo.h"
QString TeacherInfo::toString() {
return "[ name : " + getName() + " ][ age : " + getAge() +
" ][ sex : " + getSex() + " ][ manageClass : " + getManageClass() +
" ][ manageSubject : " + getManageSubject() + " ][ id : " + getId() +
" ][ address : " + getAddress() + " ][ money : " + getMoney() + " ]";
}
TeacherInfo::TeacherInfo(const QString &name, const QString &sex,
const QString &age, const QString &manageClass,
const QString &manageSubject, const QString &id,
const QString &address, const QString &money) {
this->name = name;
this->sex = sex;
this->age = age;
this->manageClass = manageClass;
this->manageSubject = manageSubject;
this->id = id;
this->address = address;
this->money = money;
}
TeacherInfo::TeacherInfo(const QString &name, const QString &sex,
const QString &age, const QString &manageClass,
const QString &manageSubject, const QString &id,
const QString &address) {
this->name = name;
this->sex = sex;
this->age = age;
this->manageClass = manageClass;
this->manageSubject = manageSubject;
this->id = id;
this->address = address;
}
QString TeacherInfo::getMoney() const { return money; }
void TeacherInfo::setMoney(const QString &value) { money = value; }
QString TeacherInfo::getName() const { return name; }
void TeacherInfo::setName(const QString &value) { name = value; }
QString TeacherInfo::getSex() const { return sex; }
void TeacherInfo::setSex(const QString &value) { sex = value; }
QString TeacherInfo::getAge() const { return age; }
void TeacherInfo::setAge(const QString &value) { age = value; }
QString TeacherInfo::getManageClass() const { return manageClass; }
void TeacherInfo::setManageClass(const QString &value) { manageClass = value; }
QString TeacherInfo::getManageSubject() const { return manageSubject; }
void TeacherInfo::setManageSubject(const QString &value) {
manageSubject = value;
}
QString TeacherInfo::getId() const { return id; }
void TeacherInfo::setId(const QString &value) { id = value; }
QString TeacherInfo::getAddress() const { return address; }
void TeacherInfo::setAddress(const QString &value) { address = value; }
TeacherInfo::TeacherInfo() {}
main.cpp
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
程序運行截圖
謝謝觀看