基于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();
}
相关推荐
全栈陈序员5 分钟前
【Python】基础语法入门(十七)——文件操作与数据持久化:安全读写本地数据
开发语言·人工智能·python·学习
阿沁QWQ35 分钟前
C++的map和set
开发语言·c++
武子康44 分钟前
Java-193 Spymemcached 深入解析:线程模型、Sharding 与序列化实践全拆解
java·开发语言·redis·缓存·系统架构·memcached·guava
韩凡1 小时前
HashMap的理解与结构
java·开发语言·哈希算法
小猪快跑爱摄影1 小时前
【AutoCad 2025】【C#】零基础教程(二)——遍历 Entity 插件 =》 AutoCAD 核心对象层级结构
开发语言·c#·autocad
Dxy12393102161 小时前
Python字符串处理全攻略
开发语言·python
毕设源码-朱学姐2 小时前
【开题答辩全过程】以 基于Java的失物招领系统设计与实现为例,包含答辩的问题和答案
java·开发语言
Gomiko2 小时前
JavaScript进阶(四):DOM监听
开发语言·javascript·ecmascript
清晓粼溪2 小时前
统一异常处理
java·开发语言
syt_10132 小时前
grid布局之-子项放置4
开发语言·javascript·ecmascript