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

GitHub有时太慢,同步一下国内链接:https://gitee.com/wtzhu13/CPPOrCProectDemo.git

  • 5
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
基于java的实验室网上预约系统设计与实现 技术:后端:java,前端:html+js+css 框架:springBoot SSM 运行工具:idea 数据库:mysql 源码:详见文章最后 1、    登录页面: 2、首页 3、用户管理  4、添加用户  5、角色管理  6、添加角色  7、编辑角色 8、预约管理  9、新增预约  10、数据统计 数据库脚本如下: CREATE TABLE `sys_user_t` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `role_id` VARCHAR(500) NULL DEFAULT NULL COMMENT '角色ID', `user_id` VARCHAR(50) NOT NULL COMMENT '用户ID', `user_name` VARCHAR(100) NOT NULL COMMENT '用户名', `status` VARCHAR(50) NOT NULL COMMENT '是否有效0:false\\\\\\\\1:true', `create_date` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP, `create_by` VARCHAR(100) NULL DEFAULT NULL, `last_update_date` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP, `last_update_by` VARCHAR(100) NULL DEFAULT NULL, `password` VARCHAR(128) NOT NULL, `tenantcode` VARCHAR(50) NOT NULL, `diskId` VARCHAR(500) NULL DEFAULT NULL, `remarks` VARCHAR(500) NULL DEFAULT NULL, PRIMARY KEY (`id`) ) COMMENT='系统用户表' COLLATE='utf8_general_ci' ENGINE=InnoDB AUTO_INCREMENT=52 ; CREATE TABLE `sys_role_t` ( `role_id` INT(11) NOT NULL COMMENT '角色ID', `role_name` VARCHAR(200) NOT NULL COMMENT '权限名称', `status` INT(11) NOT NULL COMMENT '是否有效0:true\\\\1:false', `create_date` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP, `create_by` VARCHAR(100) NULL DEFAULT NULL, `last_update_date` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP, `last_update_by` VARCHAR(100) NULL DEFAULT NULL ) COMMENT='系统角色表' COLLATE='utf8_general_ci' ENGINE=InnoDB ; CREATE TABLE `sys_menu_t` ( `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '序列', `parent_id` VARCHAR(50) NOT NULL COMMENT '父节点ID', `menu_id` VARCHAR(50) NOT NULL COMMENT '菜单ID', `menu_name` VARCHAR(200) NOT NULL COMMENT '菜单名称', `menu_url` VARCHAR(200) NULL DEFAULT NULL COMMENT '菜单URL', `status` INT(11) NOT NULL COMMENT '有效(0有效,1失效)', `create_date` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP, `create_by` VARCHAR(200) NULL DEFAULT NULL, `last_update_date` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP, `last_update_by` VARCHAR(200) NULL DEFAULT NULL, PRIMARY KEY (`id`) ) COMMENT='菜单表' COLLATE='utf8_general_ci' ENGINE=InnoDB AUTO_INCREMENT=33 ; CREATE TABLE `client_manager_t` ( `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '序列', `clientId` VARCHAR(50) NULL DEFAULT NULL COMMENT '客户编号', `clientName` VARCHAR(50) NULL DEFAULT NULL COMMENT '客户姓名', `address` VARCHAR(200) NULL DEFAULT NULL COMMENT '客户住址', `source` VARCHAR(200) NULL DEFAULT NULL COMMENT '客户所属公司', `sourceDate` VARCHAR(200) NULL DEFAULT NULL COMMENT '客户发展时间', `status` VARCHAR(200) NULL DEFAULT NULL COMMENT '客户级别', `clientNum` VARCHAR(200) NULL DEFAULT NULL COMMENT '拜访客户次数', `isTrue` VARCHAR(200) NULL DEFAULT NULL COMMENT '客户是否有效', PRIMARY KEY (`id`) ) COMMENT='客户人员信息表' COLLATE='utf8_general_ci' ENGINE=InnoDB AUTO_INCREMENT=47 ;

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值