QT手把手打造預約系統——登錄界面

QT手把手打造預約系統——登錄界面

效果展示

功能演示

登錄界面處事窗口

在這裏插入圖片描述

  • 在用戶ID處輸入用戶ID,沒用選擇用戶名是因爲可能存在同名學生,使用ID這種唯一標識更有區分性。
  • 用戶在密碼區輸入密碼,且以密文形式展示,便於保密。
  • 點擊登錄即可。

登錄異常

在這裏插入圖片描述

當用戶名或者密碼錯誤是,會有彈窗提示。

登錄成功

當用戶登錄成功後調轉到不同身份用戶的界面。本項目有學生、教師和管理員三個身份,所以系統會根據登錄人的ID自動跳轉到指定的用戶界面。

頁面UI設計

本案例直接使用QT自帶的拖拽的方式設計界面,具體用到的空間如下:

在這裏插入圖片描述

如圖所以,將箭頭左側位置的空間拖到右側區域並放置好位置即可,至於美觀性這個有興趣的可以後續研究。

登錄代碼實現

登錄界面只有一個登錄按鈕,即點擊登錄按鈕後做出相應的應答,所以直接在上圖中選擇登錄按鈕並右鍵轉到槽即可直接生成槽函數,即登錄按鈕對應的邏輯處理。

具體的邏輯功能有一下幾點:

  • 從頁面獲取輸入的用戶ID和密碼,並在數據庫中查詢相應的數據,如果數據完全和數據庫一致,那麼就完成登錄,否則彈出提是框提示用戶。
  • 數據庫中的密碼是MD5加密算法加密過的,所以在和數據庫進行比對之前也需要將頁面獲取的密碼進行加密。
  • 通過用戶ID從數據庫獲取用戶身份,以便登錄成功跳轉到指定頁面。

具體代碼如下:

/************************************************
* 函數名:Widget::on_pushButton_clicked()
* 參數:無
* 返回值:無
* 描述:登錄按鈕槽函數
************************************************/
void Dialog::on_pushButton_clicked()
{
    qDebug()<<"login";
    QString userPWD;    // 對話框中的密碼
    QString truePWD;    // 數據庫中的密碼
    QString identity;

    // 獲取對話框中的密碼
    userPWD = ui->lineEdit_2->text();

    // 從數據庫中獲取密碼
    QSqlQuery query;
    query.prepare("select pwd,identity,name from user_info where user_id = ?");
    QString user_id = ui->lineEdit->text();
    userID = user_id;
    query.addBindValue(user_id);
    query.exec();
    query.next();
    truePWD = query.value(0).toString();
    identity = query.value(1).toString();

    QString user_name = query.value(2).toString();
    // 對密碼進行MD5加密
    QString pwdMD5;
    QByteArray str;
    str = QCryptographicHash::hash(userPWD.toLatin1(), QCryptographicHash::Md5);
    pwdMD5.append(str.toHex());

    // 根據用戶身份確認接下來打開的窗口
    if(identity == "student"){
        globalIndex = 0;
    }
    else if(identity == "teacher"){
        globalIndex = 1;
    }
    else {
        globalIndex = 2;
    }

    if(userPWD != NULL && truePWD == pwdMD5){
        qDebug() << "登錄";
        userName = user_name;   // 如果登錄成功,則賦給全局變量後面用
        accept();
    }
    else{
        QMessageBox::warning(this, "waring", "用戶名或密碼錯誤!", QMessageBox::Yes);
    }
}

需要注意的是:在這之前需要保證數據庫連接正常,然後需要把代碼中對應的表改成自己的表,不然運行結果就是一場的。

系統其它功能連接:
[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

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