From 08ede05b40b0a725f129902db328d9ff239c08c6 Mon Sep 17 00:00:00 2001 From: 2290867136 <2290867136@qq.com> Date: Mon, 11 Sep 2023 11:28:16 +0800 Subject: [PATCH] new by Z --- administration.cpp | 392 ++++++++++++++++++++++++++++++++++++++++++++- administration.h | 50 ++++++ administration.ui | 257 ++++++++++++++++++++++++++++- 3 files changed, 691 insertions(+), 8 deletions(-) diff --git a/administration.cpp b/administration.cpp index 533315f..a0c4f3c 100644 --- a/administration.cpp +++ b/administration.cpp @@ -1,14 +1,402 @@ #include "administration.h" +#include "qmessagebox.h" #include "ui_administration.h" +#include administration::administration(QWidget *parent) : QMainWindow(parent), - ui(new Ui::administration) + ui(new Ui::administration){ + init(); + } +void administration::paintEvent(QPaintEvent*) { - ui->setupUi(this); + labels->resize(ui->widget->size()); +} + + void administration::init() + { + ui->setupUi(this); + this->setFixedSize(1920,1080); + this->setWindowTitle("用户界面"); + this->setWindowIcon(QIcon(":image/icon/logo")); + + labels = new QLabel(this); + labels->setScaledContents(true); + labels->setFixedSize(1920,1080); + labels->setPixmap(QPixmap(":/image/bg/login.png")); + labels->lower(); + ui->HotelTable->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); + ui->AcounTable->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); + ui->AcounTable->horizontalHeader()->setStyleSheet("QHeaderView::section{background-color: rgb(0, 0, 0,30);}");//表头透明度 + ui->AcounTable->verticalHeader()->setStyleSheet("QHeaderView::section{background-color: rgb(0, 0, 0,30);}");//行头透明度 + ui->HotelTable->horizontalHeader()->setStyleSheet("QHeaderView::section{background-color: rgb(0, 0, 0,30);}");//表头透明度 + ui->HotelTable->verticalHeader()->setStyleSheet("QHeaderView::section{background-color: rgb(0, 0, 0,30);}");//行头透明度 + ui->Add->setEnabled(false);//初始退订按钮灰色 + ui->Del->setEnabled(false);//初始退订按钮灰色 + ui->Modify->setEnabled(false);//初始退订按钮灰色 + ui->Search->setEnabled(false);//初始退订按钮灰色 + ui->AcounTable->hide(); + ui->HotelTable->hide(); + } + +void administration::init_account(){ + findall2(); + flush_data2(userinfo); + ui->AcounTable->setHorizontalHeaderLabels({"客户账号","密码","姓名","性别","身份证"}); +} + +void administration::init_hotel(){ + findall(); + flush_data(userinfo); + ui->HotelTable->setHorizontalHeaderLabels({"房间号","房间类型","是否带窗","负责人","状态"}); } administration::~administration() { delete ui; } + +//切换到Hotel table,同时关闭Acount table +void administration::on_Hman_clicked() +{ + ui->Add->setEnabled(true);//初始退订按钮灰色 + ui->Del->setEnabled(true);//初始退订按钮灰色 + ui->Modify->setEnabled(true);//初始退订按钮灰色 + ui->Search->setEnabled(true);//初始退订按钮灰色 + init_hotel(); + ui->HotelTable->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); + ui->HotelTable->setSelectionBehavior(QAbstractItemView::SelectRows); //整行选中的方式 + ui->HotelTable->setSelectionMode(QAbstractItemView::SingleSelection); //设置可以选中单个 + ui->HotelTable->show(); + ui->AcounTable->hide(); + tool = 1; +} + + +//切换到Acount table,同时关闭Hotel table +void administration::on_Aman_clicked() +{ + ui->Add->setEnabled(true);//初始退订按钮灰色 + ui->Del->setEnabled(true);//初始退订按钮灰色 + ui->Modify->setEnabled(true);//初始退订按钮灰色 + ui->Search->setEnabled(true);//初始退订按钮灰色 + init_account(); + ui->AcounTable->setSelectionBehavior(QAbstractItemView::SelectRows); //整行选中的方式 + ui->AcounTable->setSelectionMode(QAbstractItemView::SingleSelection); //设置可以选中单个 + ui->HotelTable->hide(); + ui->AcounTable->show(); + tool = 0; +} +//增加行 完成 +void administration::on_Add_clicked() +{ + if(tool == 0){ + int cols=ui->AcounTable->columnCount(); + int rows=ui->AcounTable->rowCount(); + qDebug()<AcounTable->insertRow(rows); + for(int i=0;iAcounTable->setItem(rows,i,new QTableWidgetItem("")); + } + ui->AcounTable->selectRow(rows); + QSqlQuery query((db)); + query.prepare("INSERT into customer VALUES(:n,1,1,1,1,NULL);"); + + query.bindValue(":n",QRandomGenerator::global()->bounded(10000));//随机数 一万以内正整数 + query.exec(); + QMessageBox::information(this,tr("提示"),("添加成功")); + init_account(); + + } + 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(); + } + else QMessageBox::about(this,"警告","出错"); +} + +//删除操作 完成 +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("提示"),("删除成功")); + } + + else if(tool == 1){ + QSqlQuery query((db)); + QTableWidgetItem *item = ui->HotelTable->currentItem(); + QString n = 0; + n = ui->HotelTable->model()->index(item->row(),0).data().toString();//n是房间号 + int num = n.toInt(); + query.prepare("DELETE from room where room_num = :num "); + query.bindValue(":num",num); + query.exec(); + if(item==Q_NULLPTR)return; + ui->HotelTable->removeRow(item->row()); + QMessageBox::information(this,tr("提示"),("删除成功")); + } + else QMessageBox::about(this,"警告","出错"); + + +} + +//修改操作//??? +void administration::on_Modify_clicked() +{ + int c = row; + if(tool == 0){ + 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",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(); + } + + else if(tool == 1){ + QSqlQuery query((db)); + QString n1 = 0; + n1 = ui->HotelTable->model()->index(c,0).data().toString();//n是房间号 + num = n1.toInt(); + QString n2 = "0"; + n2 = ui->HotelTable->model()->index(c,1).data().toString(); + query.prepare("UPDATE room set type=:QS where room_num = :num"); + query.bindValue(":QS",n2); + query.bindValue(":num",num); + query.exec(); + QString n3 = 0; + n3 = ui->HotelTable->model()->index(c,2).data().toString(); + query.prepare("UPDATE room set withwindow=:QS where room_num = :num"); + query.bindValue(":QS",n3); + query.bindValue(":num",num); + query.exec(); + QString n4 = 0; + n4 = ui->HotelTable->model()->index(c,3).data().toString(); + query.prepare("UPDATE room set responsible_person=:QS where room_num = :num"); + query.bindValue(":QS",n4); + query.bindValue(":num",num); + query.exec(); + QString n5 = 0; + n5 = ui->HotelTable->model()->index(c,4).data().toString(); + query.prepare("UPDATE room set status=:QS where room_num = :num"); + query.bindValue(":QS",n5); + query.bindValue(":num",num); + query.exec(); + init_hotel(); + } + QMessageBox::information(this,tr("提示"),("修改成功")); +} + +//插入账号数据 +void administration::flush_data2(QVector>&userinfo)//插入数据 完成 +{ + ui->AcounTable->clear(); + if(!userinfo.size())return; + ui->AcounTable->setRowCount(userinfo.size());//行 + ui->AcounTable->setColumnCount(5);//列 + + for(int i=0;iAcounTable->setItem(i,j,QW);//行 列 内容 + QW->setTextAlignment(Qt::AlignCenter);//设置中心对齐 + } + } +} + +//插入客房数据 +void administration::flush_data(QVector>&userinfo)//插入数据 完成 +{ + ui->HotelTable->clear(); + if(!userinfo.size())return; + ui->HotelTable->setRowCount(userinfo.size());//行 + ui->HotelTable->setColumnCount(5);//列 + + for(int i=0;iHotelTable->setItem(i,j,QW);//行 列 内容 + QW->setTextAlignment(Qt::AlignCenter);//设置中心对齐 + } + } +} +//搜索 +void administration::findall()//显示全部 完成 +{ + userinfo.clear();//清楚存储向量rec的向量的数据 + QSqlQuery query((db)); + query.prepare("select * from room"); + + if(query.exec()) + { + while (query.next()) { + QVectorrec; + for(int i=0;irec; + for(int i=0;ilineEdit->text(); + if(number == NULL && tool == 0){ + findall2(); + flush_data2(userinfo); + } + else if(number == NULL && tool == 1){ + findall(); + flush_data(userinfo); + } + + else if(find_byname2(number) && tool == 0) + { + flush_data2(userinfo); + userinfo.clear(); + + } + 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(); + userinfo.clear(); + QSqlQuery query(db); + query.prepare("select * from room where room_num like :number;");//以开头搜索 不行 + query.bindValue(":number",number); + if(query.exec()) + { + while (query.next()) { + QVectorrec; + rec.push_back(query.record().value("room_num").toString()); + rec.push_back(query.record().value("type").toString()); + rec.push_back(query.record().value("withwindow").toString()); + rec.push_back(query.record().value("responsible_person").toString()); + 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; + } + return false; +} + +bool administration::find_byname2(QString n)//搜索 +{ + userinfo.clear(); + QSqlQuery query(db); + query.prepare("select * from customer 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()); + rec.push_back(query.record().value("name").toString()); + rec.push_back(query.record().value("gender").toString()); + rec.push_back(query.record().value("id").toString()); + userinfo.push_back(rec); + } + return true; + } + return false; +} + +void administration::on_AcounTable_itemClicked(QTableWidgetItem *item) +{ + row = item->row(); + qDebug() << "当前选中行: " << row; +} + + +void administration::on_HotelTable_itemClicked(QTableWidgetItem *item) +{ + row = item->row(); + qDebug() << "当前选中行: " << row; +} + diff --git a/administration.h b/administration.h index 9611be1..bfc735a 100644 --- a/administration.h +++ b/administration.h @@ -1,7 +1,20 @@ #ifndef ADMINISTRATION_H #define ADMINISTRATION_H +#include "login.h" + +#include +#include +#include +#include #include +#include +#include +#include +#include +#include +#include +#include namespace Ui { class administration; @@ -14,9 +27,46 @@ class administration : public QMainWindow public: explicit administration(QWidget *parent = nullptr); ~administration(); + void init(); + void findall(); + void findall2(); + void init_hotel(); + void init_account(); + +private slots: + void on_Aman_clicked(); + + void on_Add_clicked(); + + void on_Del_clicked(); + + void on_Hman_clicked(); + + void on_Modify_clicked(); + + void on_Search_clicked(); + + void on_AcounTable_itemClicked(QTableWidgetItem *item); + + void on_HotelTable_itemClicked(QTableWidgetItem *item); +protected: + void paintEvent(QPaintEvent*); private: Ui::administration *ui; + QTableWidget *TableWidget; + QLabel *labels; + void flush_data(QVector>&userinfo); + void flush_data2(QVector>&userinfo); + QVector>userinfo; + bool find_byname(QString name); + bool find_byname2(QString name); + QSqlDatabase db; + int row; + int n = 1000; + int m =1000; + int tool = 0; + int num; }; #endif // ADMINISTRATION_H diff --git a/administration.ui b/administration.ui index 137b1c0..48d337b 100644 --- a/administration.ui +++ b/administration.ui @@ -6,8 +6,8 @@ 0 0 - 800 - 600 + 2079 + 1453 @@ -17,12 +17,257 @@ - 0 - 0 + 50 + -20 1920 1080 + + + + + + + -10 + -20 + 531 + 321 + + + + + 70 + + + + <html><head/><body><p><span style=" font-size:72pt; font-weight:700; color:#00ffff;">宜客酒店</span></p></body></html> + + + + + + 980 + 90 + 291 + 61 + + + + + 24 + + + + background-color: rgb(85, 170, 255); + + + 客房管理 + + + + + + 1290 + 90 + 271 + 61 + + + + + 24 + + + + background-color: rgb(85, 170, 255); + + + 账号管理 + + + + + + 120 + 290 + 1531 + 731 + + + + + 12 + + + + background-color: rgb(0, 0, 0,50); +color: rgb(255, 255, 255); + + + + 1 + + + + + 2 + + + + + 3 + + + + + + + 1290 + 200 + 161 + 71 + + + + + + + 1680 + 510 + 161 + 101 + + + + + 24 + + + + background-color: rgb(85, 170, 255); + + + 更改 + + + + + + 1450 + 200 + 111 + 71 + + + + + 24 + + + + background-color: rgb(85, 170, 255); + + + 搜索 + + + + + + 1680 + 290 + 161 + 91 + + + + + 24 + + + + background-color: rgb(85, 170, 255); + + + 添加 + + + + + + 1680 + 400 + 161 + 91 + + + + + 24 + + + + background-color: rgb(85, 170, 255); + + + 删除 + + + + + + 120 + 290 + 1531 + 731 + + + + + 12 + + + + background-color: rgb(0, 0, 0,50); +color: rgb(255, 255, 255); + + + + 1 + + + + + 2 + + + + + 3 + + + + + 4 + + + + + 5 + + + + label + lineEdit + Aman + Hman + Modify + AcounTable + Search + Add + Del + HotelTable @@ -30,8 +275,8 @@ 0 0 - 800 - 17 + 2079 + 18