QT手把手打造預約系統——管理員

QT手把手打造預約系統——管理員

效果展示

功能演示

管理員界面介紹

在這裏插入圖片描述

  • 點擊查詢用戶會在框中顯示用戶信息。
  • 修改用戶信息直接在顯示的表格中修改後點擊該按鈕即可。
  • 刪除用戶,選中表格中的用戶,點擊即可刪除。
  • 查詢機房信息,點擊即可完成。
  • 添加用戶,先在左側填寫好相關信息,然後點擊添加即可。
  • 清空預約,點擊即可完成清空,按照需求,管理員可以每週清空一次。

頁面UI設計

在這裏插入圖片描述

除了使用登錄界面的幾個控件外,本界面多瞭如圖的兩個控件,還是拖到指定位置即可。

功能邏輯實現

  1. 查詢用戶,通過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);方法直接顯示錶格中的類容。
  2. 查看機房信息,同查詢用戶信息一樣,使用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);
    }
    
  3. 添加用戶,通過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加密。
    • 判斷用戶在數據庫中是否已經存在,如果不存在則是新用戶可以直接添加到數據庫。
  4. 刪除用戶

    /************************************************
    * 函數名: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)刪除選中的行。
    • 刪除時通過彈出對話框提醒用戶是否刪除,如果刪除就直接執行提交。
  5. 清楚預約信息,通過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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章