关于后端:基于Qt设计的课堂考勤系统采用RDS-for-MySQL云数据库-华为云至简致远

【摘要】 这篇文章介绍了华为云( RDS for MySQL)的购买,部署,到理论应用的整个流程,利用一个课堂考勤系统软件来介绍数据库的一个理论利用场景。云数据库 RDS for MySQL领有即开即用、稳固牢靠、平安运行、弹性伸缩、轻松治理、经济实用等特点,架构成熟稳固,反对风行应用程序,实用于多畛域多行业。

1.前言以后设计的这个考勤零碎次要利用于高校课堂考勤,目前高校管理系统里有很多胜利的案例,排课零碎,教务管理系统、学生管理系统等等,这些零碎的利用间接进步了师生的工作效率,下发课堂作业,查看课设报告等等,都能够间接在网上操作,十分不便。目前设计的这个基于RFID的考勤零碎,采纳C++作为编程语言,UI界面采纳QT设计,RFID刷卡插件应用C++开发,RFID刷卡设施是USB接口协议,数据库采纳华为云的MySQL(RDS for MySQL),不便不同课堂、设施上运行软件能够同步考勤数据。以后考勤零碎蕴含的功能模块如下:【1】登录模块:用户名和明码登录,本设计有三类用户名,包含系统管理员,老师和学生;
【2】学生信息管理模块:学生根本信息的减少,删除,批改,查问;
【3】考勤治理模块:进行学生签到和签退;
【4】射频卡治理模块:利用射频卡对学生的考勤状况进行记录;
【5】查问模块:管理员,老师,学生都能够对本人权限范畴内考勤后果进行查问;
【6】销假查问模块:通过ID查问学生销假状况;
【7】数据备份模块:零碎数据定期进行保留,但零碎服务器呈现故障时提供帮忙。

该零碎有3个用户权限,学生操作页面、管理员操作页面、老师操作页面。学生操作页面,能够查看本人的考勤记录;老师操作页面能够查看本人班级学生的考勤记录,增加考勤的学生;管理员能够查看所有人的考勤记录,反对所有性能。

以后零碎里存储数据采纳的华为云的在线云数据库MySQL,MySQL数据库是目前最受欢迎的开源数据库之一,其性能卓越,搭配LAMP(Linux + Apache + MySQL + Perl/PHP/Python),成为WEB开发的高效解决方案。 华为云的RDS for MySQL 数据库领有稳固牢靠、平安运行、弹性伸缩、轻松治理、经济实用等特点。下面提到的云数据库RDS(Relational Database Service,简称RDS)是一种基于云计算平台的稳固牢靠、弹性伸缩、便捷治理的在线云数据库服务。
目前华为云数据库RDS反对以下引擎:MySQL
PostgreSQL
SQL Server
云数据库RDS服务具备欠缺的性能监控体系和多重平安防护措施,并提供了业余的数据库治理平台, 让用户可能在云上轻松的进行设置和扩大云数据库。通过云数据库RDS服务的治理控制台,用户无需编程就能够执行所有必须工作,简化经营流程,缩小日常运维工作量,从而专一于开发利用和业务倒退。2. 部署(RDS for MySQL)云数据库在华为云官网能够收费支付一个月的(RDS for MySQL)云数据库使用权,能够利用这个收费的机会,充沛理解、体验(RDS for MySQL)数据库的应用成果。留神: 数据库购买部署之后如果须要外网拜访,须要绑定公网IP地址,如果之前购买过公网IP,在购买数据库时留神抉择雷同的区域。官网地址:https://activity.huaweicloud….

向下翻,找到MySQL数据库,点击抢购。

依据疏导页面填充信息,设置数据库登录明码。

最初实现领取。

查看订单详情。

购买胜利后,接下来进入控制台治理页面。稍等片刻就会解决实现。

而后在订单详情页面左上角点击控制台。

开展服务列表,找到云数据库RDS。

也能够在资源管理里找到本人的实例。

抉择本人购买的区域。

抉择正确区域后,就能看到本人订单页面了。

地址: https://console.huaweicloud.c…进去之后能够看查看数据库信息。

在内网页面上能够间接登录数据库。

输出账号密码后,点击测试连贯。

测量连贯胜利后,再点击登录。

登录之后,接下来就能够新建数据库测试了。 数据库创立后就能够建表、填充数据,失常的进行数据库的事务操作了。

  1. 绑定公网IP地址3.1 购买公网IP地址为了不便数据库反对外网连贯,须要给数据库实例绑定公网IP地址。

没有公网IP地址就点击右上角买一个。

如果是试用期测试的话,能够先买一个月的。

公网IP购买胜利之后就能够看到处于未绑定状态,接下来绑定即可。

在方才的页面持续绑定。

公网IP地址绑定胜利。

3.2 增加入口规定依据本人的须要凋谢指定的端口、IP地址范畴,这样能够无效的限度网络攻击。

  1. 考勤软件连贯数据库与RFID读卡器4.1 连贯数据库软件是采纳QT设计的,在QT里要连贯MySQL数据库还有点麻烦,须要本人编辑MQYSQL的库才行。次要是Qt 5在高版本中勾销了对MySQL数据库的默认反对,次要是因为随着商业版的MySQL推出,MySQL曾经不能算是一个齐全开源的数据库了,Qt默认只会给齐全开源的数据库提供反对。要应用数据库,须要在QT的.pro工程文件里加上QT += sql 。上面是QT里连贯MQYSQL次要代码:LoginWindow::LoginWindow(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::LoginWindow)
    {
    ui->setupUi(this);

    this->setWindowTitle(“学生考勤管理系统”);
    //设置主题款式
    SetStyle(“:/blue.css”);
    //设置明码框为明码显示模式
    ui->lineEdit_password->setEchoMode(QLineEdit::Password);
    //设置背景提醒文字
    ui->lineEdit_password->setPlaceholderText(“请输出明码”);
    //设置背景提醒文字
    ui->lineEdit_user_name->setPlaceholderText(“请输出用户名”);

    //读配置
    read_config();

    //读取数据库

    //设置并关上数据库
    if (QSqlDatabase::contains(LOG_IN_DATABASE_CONNECT_NAME))
    {

     database = QSqlDatabase::database(LOG_IN_DATABASE_CONNECT_NAME);

    }
    else
    {

     //数据库类型
     database = QSqlDatabase::addDatabase("QMYSQL");
     database.setDatabaseName(LOG_IN_DATABASE_NAME); //数据库名称
     database.setUserName("root");  //用户名
     database.setPassword("12345678"); //数据库的登录明码
     database.setHostName("114.116.250.107");  //连贯本地主机
     database.setPort(3389);

    }

    //关上数据库,如果数据库存在就关上,不存在就主动创立
    if(database.open()==false)
    {

     qDebug("数据库关上失败.请查看程序运行门路和权限.\n");

    }
    else
    {

     qDebug("连贯数据库胜利.\n");

    }

    //建表–寄存账号密码
    CreateUserPassTAB();
    }

如果没有编译设置好mySQL的库文件,编译的时候会报错。QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7
零碎运行的成果:

4.2 RFID刷卡代码采纳的RFID读卡器是USB接口,厂家提供了DLL动静库,间接连贯,调用DLL库就能够实现调用。 型号是: RF-EYE系列非接触式 IC 卡读写器。所以本人的代码就很简略了,要读取卡号,读写数据,调用对应的DLL库接口就行了。//#ifdef _WIN32
//typedef HANDLE void*;
//#else
//typedef HANDLE int;
//#endif

define HANDLE void*

extern “C”
{
HANDLE __stdcall rf_init(__int16 port,long baud);
__int16 __stdcall rf_beep(HANDLE icdev,unsigned short _Msec);
__int16 __stdcall rf_card(HANDLE icdev,unsigned char _Mode,unsigned long *_Snr);
};

//读卡-RFID
QString Widget::read_card()
{

int st=0;
unsigned long Snr;
QString card_number;
HANDLE icdev;

icdev=rf_init(0,9600);

//设置蜂鸣器
rf_beep(icdev, 25);

//读卡
st=rf_card(icdev,1,&Snr);

//卡号
card_number=QString("%1").arg(Snr);

if(st==0)
{
    Log_Text_Display(QString("卡号:%1\n").arg(Snr));
}
else
{
     Log_Text_Display(QString("卡号读取谬误.\n"));
}
return card_number;

}
4.3 编译MySQL驱动因为Qt 5在高版本中勾销了对MySQL数据库的默认反对,要在QT里持续应用mysql须要本人编译库。源码下载地址: https://download.qt.io/archiv…我应用的是QT5.12.6,如果是应用了其余版本QT,下载对应的源码即可。如果在装置QT时,默认装置了QT源码,就不必独自下载源码了。

下载后解压,关上上面这个工程:

工程门路: qtbase-everywhere-src-5.12.6\src\plugins\sqldrivers\mysql

windows电脑上也得先提前装置MySQL,版本抉择5.7
下载链接:https://dev.mysql.com/downloads/

在这个页面显示的是最新版本,如果想下载历史版本,点击页面上的archives。

历史版本下载地址:
https://downloads.mysql.com/a…

双击进行装置。

Developer Default:开发者默认装置——MySQL服务器和MySQL利用程序开发所需的工具。此设置类型包含:MySQL服务器、MySQL外壳、MySQL路由器、MySQL工作台、用于VisualStudio的MySQL、MySQL连接器、示例和教程、文件。
Server only:仅限服务器——只装置MySQL服务器。
Client only:仅限客户——装置MySQL利用程序开发所需的工具,但不包含MySQL服务器自身。此设置类型包含:MySQL外壳、MySQL路由器、MySQL工作台、MySQL Visual Studio插件、MySQL连接器、示例和教程、文件。
Full:全副——装置此目录中所有可用的产品,包含MySQL服务器、MySQL外壳、MySQL路由器、MySQL工作台、MySQL连接器、文档、示例和示例等。
Custom:定制——容许精确抉择要装置的产品。这还容许抉择其余服务器版本和体系结构。

或者下载mysql-connector-c-6.1.11-win32也行的。
https://downloads.mysql.com/a…
(这个库依据本人须要的版本下载)。

我这里别离下载了X86_64bit和X86_32bit,下载下来解压后的文件如下。
(截图截的是32位的,64位是一样的流程)

接下来就关上方才下载的QT源码工程,mysql工程。

而后批改源码mysql.pro文件。

这个门路要依据本人的理论门路进行批改,如果要编译32位的就设置32位的门路,64位就设置64位的门路。INCLUDEPATH+=”C:\Users\11266\Downloads\mysql-connector-c-6.1.11-win32\include”
LIBS+=”C:\Users\11266\Downloads\mysql-connector-c-6.1.11-win32\lib\libmysql.lib”
DEPENDPATH += “C:\Users\11266\Downloads\mysql-connector-c-6.1.11-win32\include”

还须要正文调用这行代码

QMAK_USE += mysql

总之要记住:不同版本和位数的MYSQL里蕴含不同的 libmysql.dll,不同的 libmysql.dll 必须和配套的 qsqlmysqld.dll (debug 版)或 qsqlmysql.dll(release 版) 一起能力失常工作!
接在批改源码sqldriverbase.pri文件。

include($$shadowed($$PWD)/qtsqldrivers-config.pri)

include(./configure.pri)
批改之后保留代码,点击左下角的锤子按钮,构建工程。我先编译32位,这里构建工程的编译器抉择32位的。

构建胜利之后,在源码目录下会生成一个编译的目录。

而后按下键盘上的windows图片按键,弹出右边的窗口,找到QT对应的编译器。
(本人构建源码时用的什么编译器,这里关上的就是对应的编译器窗口)

关上之后,执行cd命令,进入到方才构建生成的工程目录下。C:\Qt\Qt5.12.6\5.12.6\mingw73_32>cd /d C:\Users\11266\Downloads\qtbase-everywhere-src-5.12.6\src\plugins\sqldrivers\build-mysql-Desktop_Qt_5_12_6_MinGW_64_bit-Release
执行编译、装置命令即可。mingw32-make
mingw32-make install
执行装置命令过程中,能够看到须要的文件曾经生成,并且拷贝到对应的编译器目录上来了。

C:\Users\11266\Downloads\qtbase-everywhere-src-5.12.6\src\plugins\sqldrivers\build-mysql-Desktop_Qt_5_12_6_MinGW_32_bit-Release>mingw32-make install
mingw32-make -f Makefile.Release install
mingw32-make[1]: Entering directory ‘C:/Users/11266/Downloads/qtbase-everywhere-src-5.12.6/src/plugins/sqldrivers/build-mysql-Desktop_Qt_5_12_6_MinGW_32_bit-Release’
copy /y \plugins\sqldrivers\qsqlmysql.dll C:\Qt\Qt5.12.6\5.12.6\mingw73_32\plugins\sqldrivers\qsqlmysql.dll
已复制 1 个文件。
C:\Qt\Qt5.12.6\5.12.6\mingw73_32\bin\qmake.exe -install qinstall \lib\cmake\Qt5Sql\Qt5Sql_QMYSQLDriverPlugin.cmake C:\Qt\Qt5.12.6\5.12.6\mingw73_32\lib\cmake\Qt5Sql\Qt5Sql_QMYSQLDriverPlugin.cmake
mingw32-make[1]: Leaving directory ‘C:/Users/11266/Downloads/qtbase-everywhere-src-5.12.6/src/plugins/sqldrivers/build-mysql-Desktop_Qt_5_12_6_MinGW_32_bit-Release’
mingw32-make -f Makefile.Debug install
mingw32-make[1]: Entering directory ‘C:/Users/11266/Downloads/qtbase-everywhere-src-5.12.6/src/plugins/sqldrivers/build-mysql-Desktop_Qt_5_12_6_MinGW_32_bit-Release’
copy /y \plugins\sqldrivers\qsqlmysqld.dll C:\Qt\Qt5.12.6\5.12.6\mingw73_32\plugins\sqldrivers\qsqlmysqld.dll
已复制 1 个文件。
C:\Qt\Qt5.12.6\5.12.6\mingw73_32\bin\qmake.exe -install qinstall \lib\cmake\Qt5Sql\Qt5Sql_QMYSQLDriverPlugin.cmake C:\Qt\Qt5.12.6\5.12.6\mingw73_32\lib\cmake\Qt5Sql\Qt5Sql_QMYSQLDriverPlugin.cmake
mingw32-make[1]: Leaving directory ‘C:/Users/11266/Downloads/qtbase-everywhere-src-5.12.6/src/plugins/sqldrivers/build-mysql-Desktop_Qt_5_12_6_MinGW_32_bit-Release’
而后关上QT装置目录下对应编译器的目录。C:\Qt\Qt5.12.6\5.12.6\mingw73_32\plugins\sqldrivers

能够看到,对应的qsqlmysql.dll插件文件曾经生成了。
64位的编译器也是一样的操作流程,生成对应的插件。最初再把MySQL装置目录下的libmysql.dll文件拷贝到QT对应编译器的bin目录下即可。

搞定之后,在QT代码目录下执行代码。//打印Qt反对的数据库驱动
qDebug()<<QSqlDatabase::drivers();
在控制台会输入:(“QSQLITE”, “QMYSQL”, “QMYSQL3”, “QODBC”, “QODBC3”, “QPSQL”, “QPSQL7”)
能够看到,外面曾经蕴含了QMYSQL数据库的反对了。5. 软件设计流程与思路5.1 需要剖析(1)应用范畴
此零碎次要给高校的老师应用;上课时,学生进入教室拿出学生卡本人进行关上考勤,能够在零碎里申请销假以及查看在校期间所有的上课缺勤信息。思考到整个学校学生泛滥,个人隐私问题,为此每个新学生须要由管理员或本人的班主任老师登录进入学生信息管理页面进行减少学生的信息操作,进行增加学生的相干信息;再由学生本人到登录界面进行学生注册操作,欠缺本人的其余信息,当注册胜利提醒后,在进入到登陆界面填入注册时的账号和明码就能够登录胜利,最初才能够应用学生操作页面的功能模块等操作。老师则须要通过指定的老师账号和明码登录到老师治理后盾,能力应用老师的操作页面的功能模块等。系统管理员则须要通过指定的管理员账号、明码登录到管理员后盾,能力应用管理员操作页面的功能模块等。三者的操作页面互相独立,都有权限限度。(2)5.2 学生权限
学生能够在明码信息管理模块对本人的账号批改明码操作;还能够在集体信息管理模块进行批改对于本人其余的各项信息,学号、电话、紧急联系人、宿舍编号等;可在学生信息管理的模块查看本人所有的信息,能够刷卡疾速读取卡号信息,匹配到指定的学生;可在倡议信息管理模块来减少、查问本人或者他人的倡议信息;可在问题信息管理模块来查问本人的问题信息;可在考勤签到揭示治理模块来查看本人之前未签到,早退的相干信息以及查问系统对本人的评估记录;如果需进行退出零碎,可点击右上角的XX退出零碎模块。如果学生遗记明码,能够在软件的登陆界面点击找回明码按钮,再填写相干信息就可找回明码,或者管理员帮忙批改明码。(3)老师与管理员权限
老师能够在明码信息管理模块的页面上进行批改明码操作;而后可在集体的信息管理模块页面来批改对于本人的各项信息,比方:联系方式,姓名,职务等等;能够在注册老师治理模块页面查看本人注册的信息,能够查问本班级注册的其余学生;可在学生信息管理模块进行减少、查问学生的信息操作;可在问题治理模块进行减少、查问学生问题信息的操作;可在班费信息管理模块进行减少、查问班级流动费用的信息操作;可在告诉布告治理模块页面进行减少、查问公布的告诉布告操作……如果须要进行退出零碎操作,能够点击退出零碎模块,也可点击右上角的退出按钮。管理员是以后零碎的最高权限者,在老师可进行的操作模块上还能够进行减少、查问老师用户的操作。5.2 零碎功能模块图

性能页面次要展现首页、考勤治理模块、查问模块、销假查问模块、用户登录、治理登录界面。新的学生在登录界面点击注册按钮注册个人信息。学生、管理员与老师须要通过各自登陆界面进入操作平台。

5.3 学生登录平台(1)学生注册流程图
在学生注册页面填写注册信息,必须由学生填写相干的注册信息,反之则无奈进行登录操作。须要填写的注册信息包含姓名、班级、业余、学号、联系方式、登录明码和密保邮箱等。

(2)学生登录流程图
学生填写登录信息的模块流程,学生账号须要与注册的时候填为统一,登录明码与本人实现注册时输出的明码统一

(3) 学生找回明码流程图
学生填写找回明码信息的模块,须要输出登录账号和密保邮箱(与学生注册时所输出的密保邮箱统一)。

6.总结这篇文章介绍了华为云( RDS for MySQL)的购买,部署,到理论应用的整个流程,利用一个课堂考勤系统软件来介绍数据库的一个理论利用场景。云数据库 RDS for MySQL领有即开即用、稳固牢靠、平安运行、弹性伸缩、轻松治理、经济实用等特点。架构成熟稳固,反对风行应用程序,实用于多畛域多行业。华为云提供的关系型数据库服务具备欠缺的性能监控体系和多重平安防护措施,并提供了业余的数据库治理平台, 让用户可能在云中轻松的进行设置和扩大关系型数据库。通过华为云关系型数据库服务的治理控制台,用户简直能够执行所有必须工作而无需编程,简化经营流程,缩小日常运维工作量,从而专一于开发利用和业务倒退。
【华为云至简致远】有奖征文炽热进行中:https://bbs.huaweicloud.com/b…
【版权申明】本文为华为云社区用户原创内容,转载时必须标注文章的起源(华为云社区),文章链接,文章作者等根本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌剽窃的内容,欢送发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相干证据,一经查实,本社区将立即删除涉嫌侵权内容。
想理解更多的华为云产品相干信息,请分割咱们:

电话:950808按0转1

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理