QT手把手打造预约系统——教师用户
效果展示
教师界面介绍
-
查看预约,可以查看所有学生的预约。
-
查看待审核的预约方便审核,点击后只显示需要审核的预约信息。
-
审核预约,选中一条待审核信息后点击审核机会弹框提示是否通过,选择一项即可完成审核。
页面设计
界面设计用的空间都是前面几个页面用到的,就不在重复。
功能逻辑实现
-
查看预约信息
/************************************************ * 函数名:Teacher::on_pushButton_lookAllOrder_clicked() * 参数:无 * 返回值:无 * 描述:查看所有人预约 ************************************************/ void Teacher::on_pushButton_lookAllOrder_clicked() { showOrderInfo(0); } /************************************************ * 函数名:Teacher::on_pushButton_checkOrder_clicked() * 参数:无 * 返回值:无 * 描述:查看审核预约 ************************************************/ void Teacher::on_pushButton_checkOrder_clicked() { // 显示待审核的信息 showOrderInfo(1); } /************************************************ * 函数名:Teacher::on_pushButton_checkOrder_clicked() * 参数:无 * 返回值:无 * 描述:审核预约 ************************************************/ void Teacher::showOrderInfo(int lookFlag) { QSqlRelationalTableModel *orderModel; orderModel = new QSqlRelationalTableModel(this); orderModel->setEditStrategy(QSqlTableModel::OnFieldChange); // 属性变化时写入数据库 // 设置操作的表 orderModel->setTable("order_info"); // 设置显示外键对应的内容 orderModel->setRelation(2, QSqlRelation("date_info", "date_id", "date_str")); orderModel->setRelation(3, QSqlRelation("time_info", "time_id", "time_str")); orderModel->setRelation(4, QSqlRelation("room_info", "room_id", "room_name")); orderModel->setRelation(5, QSqlRelation("state_info", "state_id", "state_str")); // 设置表字段的显示 orderModel->setHeaderData(0, Qt::Horizontal, QObject::tr("预约ID")); orderModel->setHeaderData(1, Qt::Horizontal, QObject::tr("用户ID")); orderModel->setHeaderData(2, Qt::Horizontal, QObject::tr("日期(工作日)")); orderModel->setHeaderData(3, Qt::Horizontal, QObject::tr("时间")); orderModel->setHeaderData(4, Qt::Horizontal, QObject::tr("机房")); orderModel->setHeaderData(5, Qt::Horizontal, QObject::tr("状态")); if(lookFlag != 0){ // 添加筛选的内容relTblAl_5表示第五个关联 orderModel->setFilter("relTblAl_5.state_id = 1"); } orderModel->select(); ui->tableView->setModel(orderModel); }
- 和学生界面查看预约信息一致,只是过滤条件不一样。
-
审核预约
/************************************************ * 函数名:void Teacher::on_pushButton_clicked() * 参数:无 * 返回值:无 * 描述:审核预约 ************************************************/ void Teacher::on_pushButton_clicked() { // 获取选中行的数据 int curRow = ui->tableView->currentIndex().row(); QAbstractItemModel *model = ui->tableView->model (); QModelIndex index = model->index(curRow,1); QString user_id = model->data(index).toString(); index = model->index(curRow,2); QString order_date = model->data(index).toString(); index = model->index(curRow,3); QString order_time = model->data(index).toString(); index = model->index(curRow,4); QString order_room = model->data(index).toString(); index = model->index(curRow,5); QString order_state = model->data(index).toString(); index = model->index(curRow,0); int order_id = model->data(index).toInt(); int date_id = getID(QString("select date_id from date_info where date_str = '%1'").arg(order_date)); int time_id = getID(QString("select time_id from time_info where time_str = '%1'").arg(order_time)); int room_id = getID(QString("select room_id from room_info where room_name = '%1'").arg(order_room)); qDebug() << order_id << user_id << date_id << time_id << room_id <<order_state; if(order_state != "待审核"){ QMessageBox::information(NULL, "Title", "该记录非待审核记录!"); return; } int ok = QMessageBox::information(this,tr("通过申请?"), tr("通过申请? "),QMessageBox::Yes, QMessageBox::No); if(ok == QMessageBox::No) { qDebug() << "不通过"; int stateID = 3; updateOrderState(order_id, stateID); // 房间余量要更新 updateRoomMarginInfo(date_id, time_id, room_id); } else { qDebug() << "通过"; int stateID = 2; updateOrderState(order_id, stateID); } }
- 获取选中行的内容。
- 通过内容还原到预约信息表中真是存储的数据。
- 判断给条信息是否是需要审核,因为有可能在查看所有预约的时候审核。
- 需要审核就弹框提示是否通过。
- 如果通过就需要更新预约信息表,如果不通过则还需要更新机房余量。
- 最后将审核信息添加到日志文件。
系统其它功能连接:
[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