#include "administration.h" #include "ui_administration.h" #include "registers.h" #include "add_administration.h" administration::administration(QWidget *parent) : QMainWindow(parent), ui(new Ui::administration){ init(); } void administration::paintEvent(QPaintEvent*) { 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(); on_Hman_clicked(); } void administration::init_account(){ findall2(); flush_data2(userinfo); value_customer = ui->AcounTable->model()->rowCount(); findall3(); flush_data3(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){ registers *reg = new registers; reg->settype(2); reg->show(); /*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(); ui->HotelTable->insertRow(rows); for(int i=0;iHotelTable->setItem(rows,i,new QTableWidgetItem("")); } ui->HotelTable->selectRow(rows); add_administration *ad = new add_administration; ad->show(); } else QMessageBox::about(this,"警告","出错"); } //删除操作 完成 void administration::on_Del_clicked() { if(tool == 0){ //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){ 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){ //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(row,0).data().toString();//n是房间号 num = n1.toInt(); QString n2 = "0"; n2 = ui->AcounTable->model()->index(row,1).data().toString(); 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::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()//显示全部 完成 { 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;irec; for(int i=0;ilineEdit->text(); if(number == NULL && tool == 0){ init_account(); } else if(number == NULL && tool == 1){ 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; ui->AcounTable->setHorizontalHeaderLabels({"客户账号","密码","姓名","性别","身份证"}); } else if(find_byname(number) && tool == 1){ flush_data(userinfo); userinfo.clear(); ui->HotelTable->setHorizontalHeaderLabels({"房间号","房间类型","是否带窗","负责人","状态"}); } else QMessageBox::critical(nullptr, "错误", "未知的错误", QMessageBox::Retry); } 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; } 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(); qDebug() << "当前选中行: " << row; } void administration::on_HotelTable_itemClicked(QTableWidgetItem *item) { row = item->row(); qDebug() << "当前选中行: " << row; }