#include "mainwindow.h" #include "ui_mainwindow.h" #include "Modules/global.h" #include "Modules/socketactions.h" #include "Modules/Logger.h" #include "Modules/methods.h" #include #include #include #include #include #include structTableWidget tableWidget; structComboBox comboBox; extern structUserInfo userInfo; extern structLabel label; extern structPushButton pushButton; extern structTextEdit textEdit; extern structUserInfo userInfo; extern structSession session; using std::string; using std::to_string; MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); QLabel *sb_label_currentUser = new QLabel(("Current User: " + userInfo.userName).c_str(), this); sb_label_currentUser->setMinimumWidth(100); label.salaryActual = findChild("label_salaryActual"); label.salaryDiscount = findChild("label_salaryDiscount"); label.salaryShould = findChild("label_salaryShould"); textEdit.search = findChild("textEdit_search"); pushButton.clear = findChild("pushButton_clear"); pushButton.seacrh = findChild("pushButton_search"); pushButton.submit = findChild("pushButton_submit"); pushButton.remove = findChild("pushButton_remove"); comboBox.findBy = findChild("comboBox_findBy"); tableWidget.teacherInfo = findChild("tableWidget_teacherInfo"); tableWidget.teacherSalary = findChild("tableWidget_teacherSalary"); ui->statusbar->addWidget(sb_label_currentUser); } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_pushButton_search_clicked() { struct structSearch{ QString method; QString content; } search; struct structTeacherInfo{ string id; string name; string gender; string company; string address; string tel; } teacherInfo; struct structSalaryInfo{ string id; string basicSalary; string allowances; string livingAllowances; string phoneCost; string waterPowerCost; string incomeTax; string houseRent; string cleaningCost; string houseingFund; } salaryInfo; struct structSalary{ int should; int discount; int actual; } salary; string searchResult = ""; search.method = comboBox.findBy->currentText(); search.content = textEdit.search->toPlainText(); if(search.method.isEmpty() && search.content.isEmpty()){ MessageBoxA(NULL, "Search method or context can't be empty.", "Error", MB_OK|MB_ICONERROR); return; } else { if(search.method == "ID"){ searchResult = sockAct::tcpSend("[userGet] " + session.userID + " " + session.userName + " " + session.token + " " + to_string(getUnixTimestamp()) + " teacherInfo
" + search.content.toStdString() + " all"); postLog("[method.search] " + searchResult, 0); if(getTextMiddle(searchResult, "[", "]") == "Get_Rejected"){ ::MessageBoxA(NULL, ("Failed to get data. Reason: " + searchResult.substr(searchResult.find_first_of(' '))).c_str(), "Error", MB_OK|MB_ICONERROR); return; } else { teacherInfo.id = getTextMiddle(searchResult, "", ""); teacherInfo.name = getTextMiddle(searchResult, "", ""); teacherInfo.gender = getTextMiddle(searchResult, "", ""); teacherInfo.company = getTextMiddle(searchResult, "", ""); teacherInfo.address = getTextMiddle(searchResult, "
", "
"); teacherInfo.tel = getTextMiddle(searchResult, "", ""); tableWidget.teacherInfo->setItem(0, 0, new QTableWidgetItem(QString::fromStdString(teacherInfo.id))); tableWidget.teacherInfo->setItem(0, 1, new QTableWidgetItem(QString::fromStdString(teacherInfo.name))); tableWidget.teacherInfo->setItem(0, 2, new QTableWidgetItem(QString::fromStdString(teacherInfo.gender))); tableWidget.teacherInfo->setItem(0, 3, new QTableWidgetItem(QString::fromStdString(teacherInfo.company))); tableWidget.teacherInfo->setItem(0, 4, new QTableWidgetItem(QString::fromStdString(teacherInfo.address))); tableWidget.teacherInfo->setItem(0, 5, new QTableWidgetItem(QString::fromStdString(teacherInfo.tel))); } searchResult = sockAct::tcpSend("[userGet] " + session.userID + " " + session.userName + " " + session.token + " " + to_string(getUnixTimestamp()) + " salaryForm
" + search.content.toStdString() + " all"); postLog("[method.search] " + searchResult, 0); if(getTextMiddle(searchResult, "[", "]") == "Get_Rejected"){ ::MessageBoxA(NULL, ("Failed to get data. Reason: " + searchResult.substr(searchResult.find_first_of(' '))).c_str(), "Error", MB_OK|MB_ICONERROR); return; } else { salaryInfo.id = getTextMiddle(searchResult, "", ""); salaryInfo.basicSalary = getTextMiddle(searchResult, "", ""); salaryInfo.allowances = getTextMiddle(searchResult, "", ""); salaryInfo.cleaningCost = getTextMiddle(searchResult, "", ""); salaryInfo.phoneCost = getTextMiddle(searchResult, "", ""); salaryInfo.waterPowerCost = getTextMiddle(searchResult, "", ""); salaryInfo.houseRent = getTextMiddle(searchResult, "", ""); salaryInfo.incomeTax = getTextMiddle(searchResult, "", ""); salaryInfo.livingAllowances = getTextMiddle(searchResult, "", ""); salaryInfo.houseingFund = getTextMiddle(searchResult, "", ""); tableWidget.teacherSalary->setItem(0, 0, new QTableWidgetItem(QString::fromStdString(salaryInfo.basicSalary))); tableWidget.teacherSalary->setItem(0, 1, new QTableWidgetItem(QString::fromStdString(salaryInfo.allowances))); tableWidget.teacherSalary->setItem(0, 2, new QTableWidgetItem(QString::fromStdString(salaryInfo.livingAllowances))); tableWidget.teacherSalary->setItem(0, 3, new QTableWidgetItem(QString::fromStdString(salaryInfo.phoneCost))); tableWidget.teacherSalary->setItem(0, 4, new QTableWidgetItem(QString::fromStdString(salaryInfo.waterPowerCost))); tableWidget.teacherSalary->setItem(0, 5, new QTableWidgetItem(QString::fromStdString(salaryInfo.houseRent))); tableWidget.teacherSalary->setItem(0, 6, new QTableWidgetItem(QString::fromStdString(salaryInfo.incomeTax))); tableWidget.teacherSalary->setItem(0, 7, new QTableWidgetItem(QString::fromStdString(salaryInfo.cleaningCost))); tableWidget.teacherSalary->setItem(0, 8, new QTableWidgetItem(QString::fromStdString(salaryInfo.houseingFund))); salary.should = stoi(salaryInfo.basicSalary) + stoi(salaryInfo.allowances) + stoi(salaryInfo.livingAllowances); salary.discount = stoi(salaryInfo.phoneCost) + stoi(salaryInfo.waterPowerCost) + stoi(salaryInfo.houseRent) + stoi(salaryInfo.incomeTax) + stoi(salaryInfo.cleaningCost) + stoi(salaryInfo.houseingFund); salary.actual = salary.should - salary.discount; label.salaryShould->setText(QString::fromStdString("应发工资: " + to_string(salary.should))); label.salaryDiscount->setText(QString::fromStdString("合计扣款: " + to_string(salary.discount))); label.salaryActual->setText(QString::fromStdString("实发工资: " + to_string(salary.actual))); } } if(search.method == "Name"){ searchResult = sockAct::tcpSend("[userGet] " + session.userID + " " + session.userName + " " + session.token + " " + to_string(getUnixTimestamp()) + " teacherInfo
" + search.content.toStdString() + " all"); postLog("[method.search] " + searchResult, 0); if(searchResult == "[Get_Rejected] ItemID does not exist."){ MessageBoxA(NULL, "Target item not found.", "Error", MB_OK|MB_ICONERROR); return; } else { if(getTextMiddle(searchResult, "[", "]") == "Get_Rejected"){ ::MessageBoxA(NULL, ("Failed to get data. Reason: " + searchResult.substr(searchResult.find_first_of(' '))).c_str(), "Error", MB_OK|MB_ICONERROR); return; } else { teacherInfo.id = getTextMiddle(searchResult, "", ""); teacherInfo.name = getTextMiddle(searchResult, "", ""); teacherInfo.gender = getTextMiddle(searchResult, "", ""); teacherInfo.company = getTextMiddle(searchResult, "", ""); teacherInfo.address = getTextMiddle(searchResult, "
", "
"); teacherInfo.tel = getTextMiddle(searchResult, "", ""); tableWidget.teacherInfo->setItem(0, 0, new QTableWidgetItem(QString::fromStdString(teacherInfo.id))); tableWidget.teacherInfo->setItem(0, 1, new QTableWidgetItem(QString::fromStdString(teacherInfo.name))); tableWidget.teacherInfo->setItem(0, 2, new QTableWidgetItem(QString::fromStdString(teacherInfo.gender))); tableWidget.teacherInfo->setItem(0, 3, new QTableWidgetItem(QString::fromStdString(teacherInfo.company))); tableWidget.teacherInfo->setItem(0, 4, new QTableWidgetItem(QString::fromStdString(teacherInfo.address))); tableWidget.teacherInfo->setItem(0, 5, new QTableWidgetItem(QString::fromStdString(teacherInfo.tel))); } searchResult = sockAct::tcpSend("[userGet] " + session.userID + " " + session.userName + " " + session.token + " " + to_string(getUnixTimestamp()) + " salaryForm
" + search.content.toStdString() + " all"); postLog("[method.search] " + searchResult, 0); if(getTextMiddle(searchResult, "[", "]") == "Get_Rejected"){ ::MessageBoxA(NULL, ("Failed to get data. Reason: " + searchResult.substr(searchResult.find_first_of(' '))).c_str(), "Error", MB_OK|MB_ICONERROR); return; } else { salaryInfo.basicSalary = getTextMiddle(searchResult, "", ""); salaryInfo.cleaningCost = getTextMiddle(searchResult, "", ""); salaryInfo.phoneCost = getTextMiddle(searchResult, "", ""); salaryInfo.waterPowerCost = getTextMiddle(searchResult, "", ""); salaryInfo.houseRent = getTextMiddle(searchResult, "", ""); salaryInfo.incomeTax = getTextMiddle(searchResult, "", ""); salaryInfo.allowances = getTextMiddle(searchResult, "", ""); salaryInfo.livingAllowances = getTextMiddle(searchResult, "", ""); salaryInfo.houseingFund = getTextMiddle(searchResult, "", ""); tableWidget.teacherSalary->setItem(0, 0, new QTableWidgetItem(QString::fromStdString(salaryInfo.basicSalary))); tableWidget.teacherSalary->setItem(0, 1, new QTableWidgetItem(QString::fromStdString(salaryInfo.allowances))); tableWidget.teacherSalary->setItem(0, 2, new QTableWidgetItem(QString::fromStdString(salaryInfo.livingAllowances))); tableWidget.teacherSalary->setItem(0, 3, new QTableWidgetItem(QString::fromStdString(salaryInfo.phoneCost))); tableWidget.teacherSalary->setItem(0, 4, new QTableWidgetItem(QString::fromStdString(salaryInfo.waterPowerCost))); tableWidget.teacherSalary->setItem(0, 5, new QTableWidgetItem(QString::fromStdString(salaryInfo.houseRent))); tableWidget.teacherSalary->setItem(0, 6, new QTableWidgetItem(QString::fromStdString(salaryInfo.incomeTax))); tableWidget.teacherSalary->setItem(0, 7, new QTableWidgetItem(QString::fromStdString(salaryInfo.cleaningCost))); tableWidget.teacherSalary->setItem(0, 8, new QTableWidgetItem(QString::fromStdString(salaryInfo.houseingFund))); salary.should = stoi(salaryInfo.basicSalary) + stoi(salaryInfo.allowances) + stoi(salaryInfo.livingAllowances); salary.discount = stoi(salaryInfo.phoneCost) + stoi(salaryInfo.waterPowerCost) + stoi(salaryInfo.houseRent) + stoi(salaryInfo.incomeTax) + stoi(salaryInfo.cleaningCost) + stoi(salaryInfo.houseingFund); salary.actual = salary.should - salary.discount; label.salaryShould->setText(QString::fromStdString("应发工资: " + to_string(salary.should))); label.salaryDiscount->setText(QString::fromStdString("合计扣款: " + to_string(salary.discount))); label.salaryActual->setText(QString::fromStdString("实发工资: " + to_string(salary.actual))); } } } } } void MainWindow::on_pushButton_submit_clicked() { struct structTeacherInfo{ string id = tableWidget.teacherInfo->item(0, 0)->text().toStdString(); string name = tableWidget.teacherInfo->item(0, 1)->text().toStdString(); string gender = tableWidget.teacherInfo->item(0, 2)->text().toStdString(); string company = tableWidget.teacherInfo->item(0, 3)->text().toStdString(); string address = tableWidget.teacherInfo->item(0, 4)->text().toStdString(); string tel = tableWidget.teacherInfo->item(0, 5)->text().toStdString(); } teacherInfo; struct structSalaryInfo{ string id = tableWidget.teacherInfo->item(0, 0)->text().toStdString(); string basicSalary = tableWidget.teacherSalary->item(0, 0)->text().toStdString(); string allowances = tableWidget.teacherSalary->item(0, 1)->text().toStdString(); string livingAllowances = tableWidget.teacherSalary->item(0, 2)->text().toStdString(); string phoneCost = tableWidget.teacherSalary->item(0, 3)->text().toStdString(); string waterPowerCost = tableWidget.teacherSalary->item(0, 4)->text().toStdString(); string incomeTax = tableWidget.teacherSalary->item(0, 6)->text().toStdString(); string houseRent = tableWidget.teacherSalary->item(0, 5)->text().toStdString(); string cleaningCost = tableWidget.teacherSalary->item(0, 7)->text().toStdString(); string houseingFund = tableWidget.teacherSalary->item(0, 8)->text().toStdString(); } salaryInfo; if(teacherInfo.id == "" && teacherInfo.name == ""){ MessageBoxA(NULL, "Name or ID can't be empty.", "Error", MB_OK|MB_ICONERROR); return; } else { for(int i = 0; i < 6; i++){ string nowColumn; string nowItem; switch (i){ case 0: nowColumn = "teacherID"; nowItem = teacherInfo.id; break; case 1: nowColumn = "teacherName"; nowItem = teacherInfo.name; break; case 2: nowColumn = "gender"; nowItem = teacherInfo.gender; break; case 3: nowColumn = "companyName"; nowItem = teacherInfo.company; break; case 4: nowColumn = "address"; nowItem = teacherInfo.address; break; case 5: nowColumn = "tel"; nowItem = teacherInfo.tel; break; } string resp = sockAct::tcpSend("[userSet] " + session.userID + " " + session.token + " " + to_string(getUnixTimestamp())+ " teacherInfo
" + teacherInfo.id + " " + nowColumn + " " + nowItem + ""); } for(int i = 0; i < 11; i++){ string nowColumn; string nowItem; switch (i){ case 0: nowColumn = "teacherID"; nowItem = teacherInfo.id; break; case 1: nowColumn = "teacherName"; nowItem = teacherInfo.name; break; case 2: nowColumn = "basicSalary"; nowItem = salaryInfo.basicSalary; break; case 3: nowColumn = "allowances"; nowItem = salaryInfo.allowances; break; case 4: nowColumn = "livingAllowances"; nowItem = salaryInfo.livingAllowances; break; case 5: nowColumn = "phoneCost"; nowItem = salaryInfo.phoneCost; break; case 6: nowColumn = "waterPowerCost"; nowItem = salaryInfo.waterPowerCost; break; case 7: nowColumn = "houseRent"; nowItem = salaryInfo.houseRent; break; case 8: nowColumn = "incomeTax"; nowItem = salaryInfo.incomeTax; break; case 9: nowColumn = "cleaningCost"; nowItem = salaryInfo.cleaningCost; break; case 10: nowColumn = "housingFund"; nowItem = salaryInfo.houseingFund; break; } string resp = sockAct::tcpSend("[userSet] " + session.userID + " " + session.token + " " + to_string(getUnixTimestamp())+ " salaryForm
" + teacherInfo.id + " " + nowColumn + " " + nowItem + ""); } MessageBoxA(NULL, "Submitted.", "Info", MB_OK|MB_ICONINFORMATION); } } void MainWindow::on_pushButton_remove_clicked() { struct structTeacherInfo{ string id = tableWidget.teacherInfo->item(0, 0)->text().toStdString(); string name = tableWidget.teacherInfo->item(0, 1)->text().toStdString(); string gender = tableWidget.teacherInfo->item(0, 2)->text().toStdString(); string company = tableWidget.teacherInfo->item(0, 3)->text().toStdString(); string address = tableWidget.teacherInfo->item(0, 4)->text().toStdString(); string tel = tableWidget.teacherInfo->item(0, 5)->text().toStdString(); } teacherInfo; string resp = sockAct::tcpSend("[userDel] " + session.userID + " " + session.token + " " + to_string(getUnixTimestamp())+ " teacherInfo
" + teacherInfo.id + ""); if (getTextMiddle(resp, "[", "]") == "Del_Rejected"){ postLog("[method.del] Failed to remove due to " + resp.substr(resp.find_first_of(' ')), 3); ::MessageBoxA(NULL, ("Failed to remove item. Reason: " + resp.substr(resp.find_first_of(' '))).c_str(), "Error", MB_OK|MB_ICONERROR); return; } else { string resp = sockAct::tcpSend("[userDel] " + session.userID + " " + session.token + " " + to_string(getUnixTimestamp())+ " salaryForm
" + teacherInfo.id + ""); if (getTextMiddle(resp, "[", "]") == "Del_Rejected"){ postLog("[method.del] Failed to remove due to " + resp.substr(resp.find_first_of(' ')), 3); ::MessageBoxA(NULL, ("Failed to remove item. Reason: " + resp.substr(resp.find_first_of(' '))).c_str(), "Error", MB_OK|MB_ICONERROR); return; } } MessageBoxA(NULL, "Remove successfully.", "Info", MB_OK|MB_ICONINFORMATION); } void MainWindow::on_pushButton_clear_clicked() { for(int i = 0; i < 6; i++){ tableWidget.teacherInfo->setItem(0, i, new QTableWidgetItem("")); } for(int i = 0; i < 10; i++){ tableWidget.teacherSalary->setItem(0, i, new QTableWidgetItem("")); } label.salaryShould->setText(QString::fromStdString("应发工资: ")); label.salaryDiscount->setText(QString::fromStdString("合计扣款: ")); label.salaryActual->setText(QString::fromStdString("实发工资: ")); }