From 15a4f2403ecf382da0b98bd2d19c4ceac0734a84 Mon Sep 17 00:00:00 2001 From: 2290867136 <2290867136@qq.com> Date: Tue, 12 Sep 2023 00:16:49 +0800 Subject: [PATCH] new by Z --- add_administration.cpp | 28 ++++++ add_administration.h | 28 ++++++ add_administration.ui | 54 +++++++++++ administration.cpp | 214 +++++++++++++++++++++++++++++++---------- administration.h | 6 ++ 5 files changed, 277 insertions(+), 53 deletions(-) create mode 100644 add_administration.cpp create mode 100644 add_administration.h create mode 100644 add_administration.ui diff --git a/add_administration.cpp b/add_administration.cpp new file mode 100644 index 0000000..bc868b1 --- /dev/null +++ b/add_administration.cpp @@ -0,0 +1,28 @@ +#include "add_administration.h" +#include "ui_add_administration.h" +#include "administration.h" + +add_administration::add_administration(QWidget *parent) : + QDialog(parent), + ui(new Ui::add_administration) +{ + ui->setupUi(this); + +} + +add_administration::~add_administration() +{ + delete ui; +} + +void add_administration::on_pushButton_clicked() +{ + administration *ad = new administration; + QSqlQuery query((db)); + query.prepare("INSERT into room VALUES(:n,1,1,1,1,NULL,NULL);"); + query.bindValue(":n",ui->lineEdit->text()); + query.exec(); + QMessageBox::information(this,tr("提示"),("添加成功,请刷新")); + +} + diff --git a/add_administration.h b/add_administration.h new file mode 100644 index 0000000..9ebeb51 --- /dev/null +++ b/add_administration.h @@ -0,0 +1,28 @@ +#ifndef ADD_ADMINISTRATION_H +#define ADD_ADMINISTRATION_H + +#include +#include +#include + +namespace Ui { +class add_administration; +} + +class add_administration : public QDialog +{ + Q_OBJECT + +public: + explicit add_administration(QWidget *parent = nullptr); + ~add_administration(); + +private slots: + void on_pushButton_clicked(); + +private: + Ui::add_administration *ui; + QSqlDatabase db; +}; + +#endif // ADD_ADMINISTRATION_H diff --git a/add_administration.ui b/add_administration.ui new file mode 100644 index 0000000..76f00a0 --- /dev/null +++ b/add_administration.ui @@ -0,0 +1,54 @@ + + + add_administration + + + + 0 + 0 + 400 + 300 + + + + Dialog + + + + + 140 + 240 + 80 + 19 + + + + 确定 + + + + + + 90 + 90 + 191 + 81 + + + + + + + 房间号: + + + + + + + + + + + + diff --git a/administration.cpp b/administration.cpp index 696add3..b56bcf8 100644 --- a/administration.cpp +++ b/administration.cpp @@ -1,6 +1,7 @@ #include "administration.h" #include "ui_administration.h" #include "registers.h" +#include "add_administration.h" administration::administration(QWidget *parent) : QMainWindow(parent), @@ -37,11 +38,16 @@ void administration::paintEvent(QPaintEvent*) ui->AcounTable->hide(); ui->HotelTable->hide(); on_Hman_clicked(); + } void administration::init_account(){ findall2(); flush_data2(userinfo); + value_customer = ui->AcounTable->model()->rowCount(); + findall3(); + flush_data3(userinfo); + ui->AcounTable->setHorizontalHeaderLabels({"客户账号","密码","姓名","性别","身份证"}); } @@ -115,19 +121,14 @@ void administration::on_Add_clicked() else if(tool == 1){ int cols=ui->HotelTable->columnCount(); int rows=ui->HotelTable->rowCount(); - qDebug()<HotelTable->insertRow(rows); for(int i=0;iHotelTable->setItem(rows,i,new QTableWidgetItem("")); } ui->HotelTable->selectRow(rows); - QSqlQuery query((db)); - query.prepare("INSERT into room VALUES(:n,1,1,1,1,NULL,NULL);"); - query.bindValue(":n",QRandomGenerator::global()->bounded(10000)); - query.exec(); - QMessageBox::information(this,tr("提示"),("添加成功")); - init_hotel(); + add_administration *ad = new add_administration; + ad->show(); } else QMessageBox::about(this,"警告","出错"); } @@ -136,17 +137,36 @@ void administration::on_Add_clicked() void administration::on_Del_clicked() { if(tool == 0){ - QSqlQuery query((db)); - QTableWidgetItem *item = ui->AcounTable->currentItem(); - QString n = 0; - n = ui->AcounTable->model()->index(item->row(),0).data().toString();//n是房间号 - int num = n.toInt(); - query.prepare("DELETE from customer where account = :num "); - query.bindValue(":num",num); - query.exec(); - if(item==Q_NULLPTR)return; - ui->AcounTable->removeRow(item->row()); - QMessageBox::information(this,tr("提示"),("删除成功")); + //if(row <= value_customer-userinfo.size()+1){ + QSqlQuery query((db)); + QTableWidgetItem *item = ui->AcounTable->currentItem(); + QString n = 0; + n = ui->AcounTable->model()->index(item->row(),0).data().toString(); + int num = n.toInt(); + query.prepare("DELETE from customer where account = :num "); + query.bindValue(":num",n); + query.exec(); + query.prepare("DELETE from employee where account = :num "); + query.bindValue(":num",n); + query.exec(); + if(item==Q_NULLPTR)return; + ui->AcounTable->removeRow(item->row()); + QMessageBox::information(this,tr("提示"),("删除成功")); + init_account(); + // } + /* else if(row > value_customer-userinfo.size()){ + QSqlQuery query((db)); + QTableWidgetItem *item = ui->AcounTable->currentItem(); + QString n = 0; + n = ui->AcounTable->model()->index(item->row(),0).data().toString();//n是房间号 + int num = n.toInt(); + + if(item==Q_NULLPTR)return; + ui->AcounTable->removeRow(item->row()); + QMessageBox::information(this,tr("提示"),("删除成功")); + init_account(); + }*/ + } else if(tool == 1){ @@ -167,40 +187,57 @@ void administration::on_Del_clicked() } -//修改操作//??? +//修改操作 void administration::on_Modify_clicked() { int c = row; if(tool == 0){ - QSqlQuery query((db)); + //if(row <= value_customer-userinfo.size()){ + QSqlQuery query((db)); + QString n1 = 0; + n1 = ui->AcounTable->model()->index(c,0).data().toString();//n是房间号 + num = n1.toInt(); + QString n2 = "0"; + n2 = ui->AcounTable->model()->index(c,1).data().toString(); + query.prepare("UPDATE customer set password=:QS where account = :num"); + query.bindValue(":QS",n2); + query.bindValue(":num",n1); + query.exec(); + QString n3 = 0; + n3 = ui->AcounTable->model()->index(c,2).data().toString(); + query.prepare("UPDATE customer set name=:QS where account = :num"); + query.bindValue(":QS",n3); + query.bindValue(":num",n1); + query.exec(); + QString n4 = 0; + n4 = ui->AcounTable->model()->index(c,3).data().toString(); + query.prepare("UPDATE customer set gender=:QS where account = :num"); + query.bindValue(":QS",n4); + query.bindValue(":num",n1); + query.exec(); + QString n5 = 0; + n5 = ui->AcounTable->model()->index(c,4).data().toString(); + query.prepare("UPDATE customer set id=:QS where account = :num"); + query.bindValue(":QS",n5); + query.bindValue(":num",n1); + query.exec(); + query.prepare("UPDATE employee set password=:QS where account = :num"); + query.bindValue(":QS",n2); + query.bindValue(":num",n1); + query.exec(); + init_account(); + + // } + /* else if(row > value_customer-userinfo.size()){ + QSqlQuery query((db)); QString n1 = 0; - n1 = ui->AcounTable->model()->index(c,0).data().toString();//n是房间号 + n1 = ui->AcounTable->model()->index(row,0).data().toString();//n是房间号 num = n1.toInt(); QString n2 = "0"; - n2 = ui->AcounTable->model()->index(c,1).data().toString(); - query.prepare("UPDATE customer set password=:QS where account = :num"); - query.bindValue(":QS",n2); - query.bindValue(":num",num); - query.exec(); - QString n3 = 0; - n3 = ui->AcounTable->model()->index(c,2).data().toString(); - query.prepare("UPDATE customer set name=:QS where account = :num"); - query.bindValue(":QS",n3); - query.bindValue(":num",num); - query.exec(); - QString n4 = 0; - n4 = ui->AcounTable->model()->index(c,3).data().toString(); - query.prepare("UPDATE customer set gender=:QS where account = :num"); - query.bindValue(":QS",n4); - query.bindValue(":num",num); - query.exec(); - QString n5 = 0; - n5 = ui->AcounTable->model()->index(c,4).data().toString(); - query.prepare("UPDATE customer set id=:QS where account = :num"); - query.bindValue(":QS",n5); - query.bindValue(":num",num); - query.exec(); - init_account(); + n2 = ui->AcounTable->model()->index(row,1).data().toString(); + + init_account();*/ + //} } else if(tool == 1){ @@ -274,6 +311,33 @@ void administration::flush_data(QVector>&userinfo)//插入数 } } } + +void administration::flush_data3(QVector>&userinfo)//插入数据 完成 +{ + //ui->AcounTable->clear(); + if(!userinfo.size())return; + ui->AcounTable->setRowCount(userinfo.size()+ui->AcounTable->model()->rowCount());//行 + //ui->AcounTable->setColumnCount(5);//列 + for(int i=0;iAcounTable->setItem(i+ui->AcounTable->model()->rowCount()-userinfo.size(),j,QW);//行 列 内容 + ui->AcounTable->setItem(i+ui->AcounTable->model()->rowCount()-userinfo.size(),2,QW2); + ui->AcounTable->setItem(i+ui->AcounTable->model()->rowCount()-userinfo.size(),3,QW3); + ui->AcounTable->setItem(i+ui->AcounTable->model()->rowCount()-userinfo.size(),4,QW4); + QW->setTextAlignment(Qt::AlignCenter);//设置中心对齐 + QW2->setTextAlignment(Qt::AlignCenter); + QW3->setTextAlignment(Qt::AlignCenter); + QW4->setTextAlignment(Qt::AlignCenter); + } + } +} + //搜索 void administration::findall()//显示全部 完成 { @@ -313,35 +377,60 @@ void administration::findall2()//显示全部 完成 } } -void administration::on_Search_clicked() +void administration::findall3()//显示全部 完成 { + userinfo.clear();//清楚存储向量rec的向量的数据 + QSqlQuery query((db)); + query.prepare("select * from employee"); + + if(query.exec()) + { + while (query.next()) { + QVectorrec; + for(int i=0;ilineEdit->text(); + + if(number == NULL && tool == 0){ - findall2(); - flush_data2(userinfo); + init_account(); } else if(number == NULL && tool == 1){ - findall(); - flush_data(userinfo); + init_hotel(); } else if(find_byname2(number) && tool == 0) { flush_data2(userinfo); userinfo.clear(); + if(ui->AcounTable->model()->index(0,0).data().toString() != NULL)condition_search = 1; + + if(condition_search == 0 && find_byname3(number) && tool == 0){ + flush_data2(userinfo); + userinfo.clear(); + } + condition_search = 0; } + else if(find_byname(number) && tool == 1){ flush_data(userinfo); userinfo.clear(); } else QMessageBox::critical(nullptr, "错误", "未知的错误", QMessageBox::Retry); - ui->AcounTable->setHorizontalHeaderLabels({"客户账号","密码","姓名","性别","身份证"}); - ui->HotelTable->setHorizontalHeaderLabels({"房间号","房间类型","是否带窗","负责人","状态"});//设置表头 } + bool administration::find_byname(QString n)//搜索 完成 { int number = n.toInt(); @@ -360,7 +449,6 @@ bool administration::find_byname(QString n)//搜索 完成 rec.push_back(query.record().value("status").toString()); rec.push_back(query.record().value("checkout_time").toString()); rec.push_back(query.record().value("customer_id").toString()); - userinfo.push_back(rec); } return true; @@ -390,6 +478,25 @@ bool administration::find_byname2(QString n)//搜索 return false; } +bool administration::find_byname3(QString n)//搜索 +{ + userinfo.clear(); + QSqlQuery query(db); + query.prepare("select * from employee where account like :number;");//以开头搜索 不行 + query.bindValue(":number",n); + if(query.exec()) + { + while (query.next()) { + QVectorrec; + rec.push_back(query.record().value("account").toString()); + rec.push_back(query.record().value("password").toString()); + userinfo.push_back(rec); + } + return true; + } + return false; +} + void administration::on_AcounTable_itemClicked(QTableWidgetItem *item) { row = item->row(); @@ -403,3 +510,4 @@ void administration::on_HotelTable_itemClicked(QTableWidgetItem *item) qDebug() << "当前选中行: " << row; } + diff --git a/administration.h b/administration.h index dfc1ef9..1f4ab4d 100644 --- a/administration.h +++ b/administration.h @@ -31,6 +31,7 @@ public: void init(); void findall(); void findall2(); + void findall3(); void init_hotel(); void init_account(); @@ -59,15 +60,20 @@ private: QLabel *labels; void flush_data(QVector>&userinfo); void flush_data2(QVector>&userinfo); + void flush_data3(QVector>&userinfo); QVector>userinfo; bool find_byname(QString name); bool find_byname2(QString name); + bool find_byname3(QString name); QSqlDatabase db; int row; int n = 1000; int m =1000; int tool = 0; int num; + int value_customer; + int value_employee; + int condition_search = 0; }; #endif // ADMINISTRATION_H