QT手把手打造预约系统——管理员
·
QT手把手打造预约系统——管理员
效果展示
管理员界面介绍

- 点击查询用户会在框中显示用户信息。
- 修改用户信息直接在显示的表格中修改后点击该按钮即可。
- 删除用户,选中表格中的用户,点击即可删除。
- 查询机房信息,点击即可完成。
- 添加用户,先在左侧填写好相关信息,然后点击添加即可。
- 清空预约,点击即可完成清空,按照需求,管理员可以每周清空一次。
页面UI设计

除了使用登录界面的几个控件外,本界面多了如图的两个控件,还是拖到指定位置即可。
功能逻辑实现
-
查询用户,通过
QSqlTableModel操作数据库,省去SQL语句。/************************************************ * 函数名:Widget::on_pushButton_clicked() * 参数:无 * 返回值:无 * 描述:查询用户信息按钮 ************************************************/ void Widget::on_pushButton_clicked() { model = new QSqlTableModel(this); model->setTable("user_info"); // 设置查询表 model->setEditStrategy(QSqlTableModel::OnManualSubmit); model->select(); // model->removeColumn(0); //不显示id属性列,如果这时添加记录,则该属性的值添加不上 ui->tableView->setModel(model); }- 首先创建一个连接,并制定需要操作的表。
- 设置model的属性,并执行select()方法查询该表中全部类容。
- 通过
ui->tableView->setModel(model);方法直接显示表格中的类容。
-
查看机房信息,同查询用户信息一样,使用
QSqlTableModel来操作数据库。/************************************************ * 函数名:Widget::on_pushButton_roomInfo_clicked() * 参数:无 * 返回值:无 * 描述:查询机房信息 ************************************************/ void Widget::on_pushButton_roomInfo_clicked() { roomModel = new QSqlTableModel(this); roomModel->setTable("room_info"); // 设置查询表 roomModel->setEditStrategy(QSqlTableModel::OnManualSubmit); roomModel->select(); ui->tableView->setModel(roomModel); } -
添加用户,通过
QSqlQuery来执行SQL语句操作数据库。/************************************************ * 函数名:Widget::on_pushButton_addUser_clicked() * 参数:无 * 返回值:无 * 描述:添加用户 ************************************************/ void Widget::on_pushButton_addUser_clicked() { QString id = ui->lineEdit_id->text(); QString name = ui->lineEdit_naem->text(); QString pwd = ui->lineEdit_pwd->text(); // 判断用户信息是否全 if(id == "" || name == "" || pwd == ""){ QMessageBox::information(NULL, "Title", "用户信息不全!"); return; } // 判断用户ID的长度是否符合要求 switch (identityID) { case 0: // 检查学生ID if(id.length() != 9){ QMessageBox::information(NULL, "Title", "用户ID错误!"); return; } break; case 1: // 检查教师ID if(id.length() != 3){ QMessageBox::information(NULL, "Title", "用户ID错误!"); return; } break; case 2: // 检查管理员ID if(id.length() != 1){ QMessageBox::information(NULL, "Title", "用户ID错误!"); return; } break; default: break; } if(pwd.length() != 6){ QMessageBox::information(NULL, "Title", "请设置6位密码!"); return; } qDebug() << id << name << pwd << identity; // MD5对密码进行加密 QString pwdMD5; QByteArray str; str = QCryptographicHash::hash(pwd.toLatin1(), QCryptographicHash::Md5); pwdMD5.append(str.toHex()); QString str1 = QString("insert into user_info values('%1', '%2', '%3', '%4')").arg(id) .arg(name).arg(pwdMD5).arg(identity); qDebug() << str1; // 判断用户名是否已经存在 QSqlQuery query; query.exec(QString("select name from user_info where user_id = %1").arg(id)); query.next(); QString nameFlag = query.value(0).toString(); if(nameFlag != ""){ QMessageBox::information(NULL, "Title", "该用户已存在"); qDebug() << "该用户已存在"; return; } else{ bool flag = query.exec(str1); if(flag){ QMessageBox::information(NULL, "Title", "添加用户成功"); ui->lineEdit_id->setText(""); ui->lineEdit_naem->setText(""); ui->lineEdit_pwd->setText(""); } else{ QMessageBox::information(NULL, "Title", "数据库发生错误"); } } }- 从页面获取需要添加的用户的ID、姓名和密码。
- 检查三份信息是否齐全,不全则提示用户补全。
- 检查用户ID的长度,三种身份的ID长度不同,需要检查。
- 检查密码长度,设置密码长度为6。
- 对密码进行MD5加密。
- 判断用户在数据库中是否已经存在,如果不存在则是新用户可以直接添加到数据库。
-
删除用户
/************************************************ * 函数名:Widget::on_pushButton_delUser_clicked() * 参数:无 * 返回值:无 * 描述:删除用户 ************************************************/ void Widget::on_pushButton_delUser_clicked() { // 获取选中的行 int curRow = ui->tableView->currentIndex().row(); // 删除该行 model->removeRow(curRow); int ok = QMessageBox::warning(this,tr("删除当前行!"), tr("你确定删除当前行吗? "),QMessageBox::Yes, QMessageBox::No); if(ok == QMessageBox::No) { // 如果不删除, 则撤销 model->revertAll(); } else { // 否则提交, 在数据库中删除该行 model->submitAll(); } }- 获取选中的行。
- 通过
model->removeRow(curRow)删除选中的行。 - 删除时通过弹出对话框提醒用户是否删除,如果删除就直接执行提交。
-
清楚预约信息,通过
QSqlQuery执行SQL语句删除预约信息。/************************************************ * 函数名:Widget::on_pushButton_clearOrder_clicked() * 参数:无 * 返回值:无 * 描述:清除预约信息 ************************************************/ void Widget::on_pushButton_clearOrder_clicked() { QSqlQuery query; // 删除操作前给出提示信息,方便确认 QMessageBox:: StandardButton result = QMessageBox::information(NULL, "Title", "确认清空预约记录?", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes); switch (result) { case QMessageBox::Yes:{ qDebug()<<"Yes"; query.exec("delete from order_info"); QMessageBox::information(NULL, "Title", "已清空预约!"); QSqlQuery queryRoom; queryRoom.exec("update room_info set room_margin = 20 where room_id = 1"); queryRoom.exec("update room_info set room_margin = 50 where room_id = 2"); queryRoom.exec("update room_info set room_margin = 100 where room_id = 3"); break; } case QMessageBox::No: qDebug()<<"NO"; break; default: break; } }
系统其它功能连接:
[QT手把手打造预约系统——登录界面]:https://blog.csdn.net/wtzhu_13/article/details/106530895
[QT手把手打造预约系统——管理员]:https://blog.csdn.net/wtzhu_13/article/details/106530981
[QT手把手打造预约系统——学生用户]:https://blog.csdn.net/wtzhu_13/article/details/106531057
[QT手把手打造预约系统——教师用户]:https://blog.csdn.net/wtzhu_13/article/details/106531134
项目完整源代码:https://github.com/wtzhu13/CPPOrCProectDemo/tree/master/OrderSysV2
GitHub有时太慢,同步一下国内链接:https://gitee.com/wtzhu13/CPPOrCProectDemo.git
更多推荐



所有评论(0)