QT手把手打造预约系统——教师用户

QT手把手打造预约系统——教师用户

效果展示

功能演示

教师界面介绍

在这里插入图片描述

  • 查看预约,可以查看所有学生的预约。

  • 查看待审核的预约方便审核,点击后只显示需要审核的预约信息。

  • 审核预约,选中一条待审核信息后点击审核机会弹框提示是否通过,选择一项即可完成审核。

在这里插入图片描述

页面设计

在这里插入图片描述

界面设计用的空间都是前面几个页面用到的,就不在重复。

功能逻辑实现

  1. 查看预约信息

    /************************************************
    * 函数名: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);
    }
    
    • 和学生界面查看预约信息一致,只是过滤条件不一样。
  2. 审核预约

    /************************************************
    * 函数名: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

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值