完整代码:
https://download.csdn.net/download/qq_38735017/87382424
使用说明
该学生信息管理系统使用的数据库为MySQL;
在另外一台电脑上(老师的电脑)运行时运行环境必须满足以下要求:
- 那台电脑必须要安装数据库MySQL;安装引导里一定要将默认的latin1编码换成utf8编码,不然后面会中文乱码
- 在那台电脑的MySQL中导入本人数据库脚本文件 studentmanager.sql (该文件已打包好)(这里推荐使用navicate for mysql 导入 数据库创建是要选择utf8编码,不然后期会出现数据库中文乱码)
- 在MySQL的安装目录下的lib文件夹中的libmysql.dll文件复制到Qt安装目录下的bin目录中
- 最后在原代码中的globle.cpp 文件中更改连接数据库的账号和密码( 更改QString sqluser="root" 的值为更改账号。更改QString sqlpass="123456" 的值为更改密码。
此处我的数据库账号为root 密码为123456。此处账号密码要对应自己MySQL账号密码)
以上步骤若没完成则会编译运行不了
studentmanager 数据库表格说明
该 studentmanager.sql 有六张表:用Navicat for MySQL (数据库图形界面操作软件)展现的
1.admin 表(管理员登录表)
用该表的username作为账号和password作为密码可登录管理员端
2.student (学生基本信息表)
用该表的id 作为账号, password 作为密码可登录学生端
3.class表 (班级信息表)+
4.course 表(课程信息表)
5.fee 表(缴费信息表)
6.score 表(分数信息表)
本程序需解决的关键技术问题
该学生管理系统主要使用到Qt 的数据库编程开发。
在Qt框架下进行数据库的增删查改相关功能开发。
- 如何使用qt 连接数据库。
连接数据库 要使用qt 的QSqlDatabase类,该类提供了数据库连接的相关方法,以及执行mysql的sql 命令的功能。
- 从数据库获取信息乱码问题。
在连接完数据库时输入以下代码,可解决数据库乱码问题。
1. QSqlQuery query(db); 2. db.exec("SET NAMES 'GBK'");
- 登录功能的实现
- 在qt的ui界面将登入界面设计好后实现登录功能
- 连接数据库
- 通过判断哪个单选框被选中,来判断是学生还是管理员。
- 从数据库查找相应管理员表,和学生表,通过 while(query.next())循环 一一对从行编辑器中获取的账号,密码与从数据库中获取的账号密码进行匹配,若匹配成功则跳转进入相应的学生端和管理员端界面。
- 如何实现间界面间传值。
面传值使用全局变量实现的
创建全局变量:新建了一个C++类文件globle。声明全局变量使用关键字extern。在另一个C++类文件中只需要包含globle.h 的头文件就可以使用该全局变量,就能通过全局变量在不同的界面中传值。
- 如何实现界面跳转。
举个例子:
this->hide();userlogin*ti=newuserlogin;ti->show();// 就先hide当前界面,在创建要新跳的界面对象指针, // 通过对象指针show跳转后的界面;
- 对于使用qttablewidget 表格类显示所有学生信息的方法。
此处我用了QVariantList 这个数据结构将从数据库中或取得所有学生信息储存起来。在用嵌套的两个for循环将其展现到qttablewidget 表格中具体代码如下:
//遍历list_all_student,将获取的学生信息展现到表格tablewidget中 for(inti1=0;i1<list_all_student.size();i1++){introw=ui->tableWidget->rowCount();ui->tableWidget->insertRow(row);QStringListrowdata=list_all_student[i1].toStringList();for(inti=0;i<rowdata.size();i++){ QTableWidgetItem*item=newQTableWidgetItem; item->setText(rowdata.at(i)); ui->tableWidget->setItem(row,i,item);}}
- 如何实现对数据库进行增删查改。
具体代码:
QSqlQuery query(db); db.exec("SET NAMES 'GBK'"); query.exec("select dormnum,id,name,sex,bednum,beizhu from student"); while(query.next())...........
只需要更改 query.exec("select dormnum,id,name,sex,bednum,beizhu from student");中的sql 命令即可实现增删查改
- 添加数据:insert xxx(id, username) values(xx, "xxx");
- 修改数据:update tablename set xx=xx,xxx=xx where xxx=xxx and xxx=xxx;
- 删除数据:delete from tablename where xx=xxx and xxx = xxx or xxx = xxx;
- 查询数据:select * from xxx;
功能展现
登录功能
管理员端
学生端
显示所有学生信息
班级信息查询
学生信息管理
增添功能
删除功能
更改功能
其他的功能也是有关 增删查改功能 功能类似就不一一列举