基于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();
}
相关推荐
mit6.8247 分钟前
[Nagios Core] struct监控对象 | 配置.cfg加载为内存模型
c语言·开发语言
序属秋秋秋24 分钟前
《C++初阶之STL》【泛型编程 + STL简介】
开发语言·c++·笔记·学习
NCHUtianlin27 分钟前
JAVA生成PDF(itextpdf)
java·开发语言·pdf
Sylvia-girl6 小时前
Java——抽象类
java·开发语言
Yana.nice8 小时前
Bash函数详解
开发语言·chrome·bash
tomorrow.hello10 小时前
Java并发测试工具
java·开发语言·测试工具
晓131310 小时前
JavaScript加强篇——第四章 日期对象与DOM节点(基础)
开发语言·前端·javascript
老胖闲聊10 小时前
Python I/O 库【输入输出】全面详解
开发语言·python
她说人狗殊途11 小时前
java.net.InetAddress
java·开发语言
天使day11 小时前
Cursor的使用
java·开发语言·ai