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