书店售书管理系统

书店售书管理系统(一)登陆界面

使用工具:qt vs2019 odbc sqlserver

vs2019中使用qt的配置方法指路:https://blog.csdn.net/mnb1V9cxz/article/details/124776935?spm=1001.2014.3001.5501

实现功能:

​ 1.注册账号

​ 2.只有使用正确的账号和口令(即数据库中已存储的)才能登陆成功

​ 3.数据库中口令采用md5加密保存

​ 4.美化界面

具体步骤:

1.创建qt项目

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
在这里插入图片描述
下图内容根据自己的需求修改:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
在这里插入图片描述

创建之后点击运行,出现ui界面即创建成功。

2.使用ODBC连接sqlserver数据库
(1)创建数据库并创建表

根据自己的需求创建

(2)对数据库添加sql server账户

打开安全性—>登录名—>右键 新建登录名;

在选择页——常规中,新建登录名和密码。(自行选择登录名,密码)

选择sqlserver身份验证方式,设置密码确认密码,不勾选强制实施密码策略;

下一步选择用户映射。选择要使用的数据库勾选

如果需要对数据库进行增查改删操作,则需要再设置用户的权限

先选择数据库bookdb ,右键选择属性,在属性也左侧选择权限,选择jiang用户,在下面即可选择添加相应的权限

有人在进行增删查改的时候出现问题,报错数据库操作失败,那可能就是给的权限不够,所以一定要给权限

3.ODBC设置

注:在连接部分,所有图片中的涂红的内容是一样的


ODBC电脑一般都自带有的,在搜索框直接搜就可以,至于用32位还是64位则根据自己的具体情况选择。不确定的可以都试试。我使用的是32位的。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P0128ST7-1673269992239)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20230109193334776.png)]

1)打开ODBC,点击右边添加

在这里插入图片描述

2)选择SQL Server 点击完成

3)填写相关数据库信息

名称是对数据源的命名,后面在QT中会用到。描述是对数据源的一些简单解释描述,服务器是连接数据库中对应的服务器名,即SQL Server 登录框中的服务器名


4)选择验证方式

5)点击下一页,选择要使用的数据库

6)然后点击下一页–>完成–>测试数据源

7)测试成功

在这里插入图片描述

4.QT连接数据库

直接上代码吧

在main.cpp中

#include "BOOKSW.h"
#include <QtWidgets/QApplication>
#include<QString>
#include <QtSql/QSql>
#include<QtSql/qsqldatabase.h>//连接数据库
#include<QtSql/qsqltablemodel.h>
#include<QtSql/qsqlerror.h>
#include <QApplication>	
#include <QtSql/QSqlQuery>
#include <QDebug>
#include <QMessageBox>


int main(int argc, char *argv[])
{
    if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0))
        QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
    QApplication a(argc, argv);
    BOOKSW w;
    w.show();
    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");//数据库是SQL SERVER
    qDebug()<< "ODBC driver?" << db.isValid();
    db.setHostName("localhost");//选择主机服务器
    db.setDatabaseName("BOOKD");//设置数据源名称
    db.setUserName("jiang");//登录用户
    db.setPassword("5992");//密码
    if (!db.open()){
        qDebug() << db.lastError().text();//打开失败
    }
    else {
        qDebug() << "成功";
    }

    return a.exec();
}
实现登陆功能,密码加密,ui美化

界面设计

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rOQxki2J-1673269992239)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20230109210921608.png)]
与之相应的cpp代码:

#include "BOOKSW.h"
#include<qsqlquery.h>//包含查询语言
#include <QDebug>
#include <QLineEdit>
#include<QtSql/qsqlerror.h>//输出错误语言
#include <QMessageBox>
#include <openssl/md5.h>
#include <QCryptographicHash>
#include <QCoreApplication>
#include<QtSql>
#pragma execution_character_set("utf-8")

BOOKSW::BOOKSW(QWidget *parent)
    : QWidget(parent)
{
    ui.setupUi(this);
    this->setWindowTitle("登陆");
    //添加背景照片
    QPixmap Images("C:/Users/lenovo/Pictures/20200329175335_erzim.jpg");
    QPalette Palette = this->palette();
    Palette.setBrush(QPalette::Window, Images);
    this->setPalette(Palette);
    //用户注册
    connect(ui.regButton, &QPushButton::clicked, this, [=]() {
        QString name = ui.usernameEdit->text();//用户账号
        QString passwd = ui.passwordEdit->text();//密码
        //插入数据
        QSqlQuery  query;
        if (name == "" || passwd == "") {
            QMessageBox::warning(this, tr("Warning"), tr("用户名或密码为空"), QMessageBox::Ok);
        }
      
        else {
            //md5调用       
            QCryptographicHash hash(QCryptographicHash::Md5);//创建一个加密对象
            hash.addData(passwd.toUtf8());//放入要加密的数据
            //获取加密的结果
            QByteArray arr = hash.result();
            passwd = arr.toHex();
            QString qs = QString("insert into logind(name,passwd) values('%1','%2')").arg(name).arg(passwd);
            if (query.exec(qs)) {//如果插入成功
                QMessageBox::information(this, "注册", "注册成功");
            }
            else {
                QMessageBox::information(this, "注册", "注册失败");
                qDebug() << query.lastError().text();//输出错误信息
                return;
            }
        }
        });
    //登陆
    connect(ui.loginButton, &QPushButton::clicked, this, [=]() {
        QString name = ui.usernameEdit->text();//用户账号
        QString passwd = ui.passwordEdit->text();//密码
        if (name == "" || passwd == "") {
            QMessageBox::warning(this, tr("Warning"), tr("用户名或密码为空"), QMessageBox::Ok);
        }
        else {
            //md5调用       
            QCryptographicHash hash(QCryptographicHash::Md5);//创建一个加密对象
            hash.addData(passwd.toUtf8());//放入要加密的数据
            //获取加密的结果
            QByteArray arr = hash.result();
            passwd = arr.toHex();
            QSqlQuery  query2;//操作数据库
            QString q = QString("select * from logind where name ='%1' and passwd='%2'").
                arg(name).arg(passwd);
            if (!query2.exec(q)) {
                qDebug() << query2.lastError().text();//输出错误信息
                return;
            }
            //获取数据
            if (query2.next()) {
                QMessageBox::information(this, "登陆", "登陆成功");
                this->hide();
                BookG *bb = new BookG;
                bb->show();
            }
            else {
                QMessageBox::information(this, "登陆", "登陆失败");
            }
           }
        });
}

最终运行成果:

在这里插入图片描述
只有输入正确的账号和口令才可以登陆成功
在这里插入图片描述

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值