基于qt的图书管理系统----05其他优化

参考b站:视频连接

源码github:github

目录

  • [1 优化借阅记录显示](#1 优化借阅记录显示)
  • [2 时间显示为年月日](#2 时间显示为年月日)
  • [3 注册接口](#3 注册接口)

1 优化借阅记录显示

现在只能显示部分信息,把接的书名和人的信息全部显示

在sql语句里替换为这一句即可实现查询相关联的所有信息

QString strSql = QString("select * from record join user using(userid) join book using(bookid)").arg(strCondition);

然后在intipage里吧对应的标签给修改了

2 时间显示为年月日

如上图所示时间显示的是秒数,直接调用的QDateTime::currentDateTime()生成的时间

使用toString("yyyy-MM-dd")即可转换为年月日

cpp 复制代码
//添加记录
    QDateTime dt = QDateTime::currentDateTime();
    QString strBorrowDateYmd = dt.toString("yyyy-MM-dd");
    QString strSql2 = QString("INSERT into record VALUES(NULL,'%1','%2','%3','%4','')")
                            .arg(strBookID)
                            .arg(strUserID)
                            .arg(strBorrowDateYmd)
                            .arg(dt.addDays(10).toString("yyyy-MM-dd"));

3 注册接口

实现功能,完成用户的注册,若是用户名和密码不在数据库里,就新建用户存入,注册登陆界面的切换

首先编写SQL语句,就拿到一些列字符串存入就行

cpp 复制代码
//注册用户
bool sqlmange::RegisterUser(QString nickname, QString grade, QString department, QString strUsername, QString strPassword)
{
    // 创建 SQL 查询对象
    QSqlQuery q(m_db);
    // 构建 SQL 查询语句
    // 使用占位符防止 SQL 注入攻击
    QString strSql = QString("insert into usertb VALUES(NULL,'%1','%2','%3','%4','%5','%6')").arg(nickname).arg(grade).arg(department).arg("").arg(strUsername).arg(strPassword);
    // 执行 SQL 查询
    bool ret = q.exec(strSql);
    if(!ret)
    {
        qDebug()<<q.lastError().text();
    }
}

搭设一下界面

将之前登陆界面的退出按钮改为注册,当他点击是打开注册窗口

cpp 复制代码
void Dialog_login::on_btn_register_clicked()
{
    //打开登陆接口
    dlg_register ui_register;
    ui_register.exec();
}

编写注册程序,首先判断用户名和密码是否在数据库里,有的话就注册失败

cpp 复制代码
void dlg_register::on_btn_register_clicked()
{
    str_nickname = ui->le_nickname->text();
    str_grade = ui->le_grade->text();
    str_Username = ui->le_username->text();
    str_Password = ui->le_password->text();
    str_department = ui->le_department->text();

    int userid = 0;
    //先查询用户名密码是否存在,若若是存在则无法注册
    bool ret = sqlmange::getInstance()->login(str_Username,str_Password,userid);
    if(ret)
    {
        QMessageBox::information(nullptr,"信息","用户已经存在!");
        return ;
    }
    else
    {
        //注册新用户
        sqlmange::getInstance()->RegisterUser(str_nickname,str_grade,str_department,str_Username,str_Password);

        QMessageBox::information(nullptr,"信息","注册成功!");
        return ;
    }
}


void dlg_register::on_btn_login_clicked()
{
    this->hide();
}
相关推荐
未来之窗软件服务1 小时前
幽冥大陆(一百12)js打造json硬件管道——东方仙盟筑基期
开发语言·javascript·算法·json·仙盟创梦ide·东方仙盟·东方仙盟算法
人道领域1 小时前
苍穹外卖:菜品分页查询与删除功能(保姆级详解)
java·开发语言·数据库·后端·spring
EverestVIP1 小时前
c++前置声明的方式与说明
开发语言·c++
天远云服2 小时前
天远企业司法认证API对接实战:PHP构建B2B供应链合规防火墙
大数据·开发语言·后端·node.js·php
空空kkk2 小时前
Java基础——代理
java·开发语言
赵谨言2 小时前
基于YOLOv5的植物目标检测研究
大数据·开发语言·经验分享·python
野生技术架构师2 小时前
互联网大厂必备 Java 面试八股文真题解析
java·开发语言·面试
不光头强2 小时前
IO流知识点
开发语言·python
老约家的可汗2 小时前
C++篇之类和对象下
java·开发语言·c++
水月wwww2 小时前
Rust的安装与卸载 | windows
开发语言·windows·rust