需求分析
在如今的高校日常管理当中,当前学生规模大,课程门类多,校区分散等实际情况,学生管理具有非常大的实际应用意义。教育和管理的要求,而计算机具有运算速度快,处理能力强等特点。因此为了保证学校的信息流畅,工作高效,有必要设计一个学生成绩管理系统。
流程设计
具体实现
具体实现步骤分为7步,分别为登录主页面设计、管理员主页面设计、老师登录主页面设计、学生登录主页面设计、增加修改学生页面设计、删除学生信息页面设计。
数据库连接
1、首先需要考虑的是数据库的选择,因为该学生管理系统涉及的数据不是很多,也为了方便,我就选择了Qt自带的微型数据库SqlLite,如果想用MySql、Sql Server基本原理相差不大,百度搜一下即可。
2、SqlLite虽是Qt自带,不过要查看创建的表单还是需要一个图形显示界面来查看,此类软件有多种,我选择的是SQLite Expert,此软件查看数据库表单很好用,如图我创建了三张表单,一个学生、一个老师、一个管理员的账户
3、在Qt的项目自述文件(即.pro文件)中添加代码:QT += core gui sql
4、`建立、连接数据库,代码如下:
//建、连接数据库
db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("学生名单.db");
db.open();
if(db.open()) qDebug()<<"Open Datebase Sucess!!!";
else qDebug()<<"Open Datebase Fail!!!";
//建管理员、老师、学生表并插入一些基本数据,后面管理员可在增删里修改数据
query = new QSqlQuery();
//query->exec("DROP TABLE 账户");
query->exec("create table 账户(""工号 INTEGER PRIMARY KEY AUTOINCREMENT,"
"密码 VARCHAR(40) NOT NULL)");
query->exec("insert into 账户(工号,密码)values('201821091037','201821091037')");
query->exec("create table 老师(""姓名 VARCHAR(40) NOT NULL,"
"工号 INTEGER PRIMARY KEY AUTOINCREMENT,"
"性别 VARCHAR(40) NOT NULL,"
"年龄 INTEGER NOT NULL,"
"工资 INTEGER NOT NULL,"
"密码 VARCHAR(40) NOT NULL)");
query->exec("insert or ignore into 老师(姓名,工号,性别,年龄,工资,密码)values('阿贝多','100001001','男','20','5000','123')");
//query->exec("DROP TABLE 学生");
query->exec("create table 学生(""姓名 VARCHAR(40) NOT NULL,"
"工号 INTEGER PRIMARY KEY AUTOINCREMENT,"
"性别 VARCHAR(40) NOT NULL,"
"班级 VARCHAR(40) NOT NULL,"
"年龄 INTEGER NOT NULL,"
"数学 INTEGER NOT NULL,"
"语文 INTEGER NOT NULL,"
"总分 INTEGER NOT NULL,"
"密码 VARCHAR(40) NOT NULL)");
query->exec("insert or ignore into 学生(姓名,工号,性别,班级,年龄,数学,语文,总分,密码)values('钟离','201821091001','男','计科1801','20','80','80','160','123')");
query->exec("insert or ignore into 学生(姓名,工号,性别,班级,年龄,数学,语文,总分,密码)values('刻晴','201821091002','女','计科1801','16','95','95','190','123')");
query->exec("insert or ignore into 学生(姓名,工号,性别,班级,年龄,数学,语文,总分,密码)values('甘雨','201821091003','女','计科1801','17','94','94','188','123')");
query->exec("insert or ignore into 学生(姓名,工号,性别,班级,年龄,数学,语文,总分,密码)values('七七','201821091004','女','计科1801','15','85','85','170','123')");
query->exec("insert or ignore into 学生(姓名,工号,性别,班级,年龄,数学,语文,总分,密码)values('凝光','201821091005','女','计科1801','20','95','95','190','123')");
user = studentInit();
}
5、这是我在表单创建的时候家的几个初始数据,后面可以增删改查
登录主页面设计
1、直接在ui文件中拖拽设计即可,如图所示,可以通过样式表来改字体之类的,使界面美观
2、使用ui下各种QPushButton、QLineEdit、QLabel等构造
3、调用数据库中的表来判断账号密码是否与数据库中一致,一致则登录界面,不一致则提示错误
4、验证成功则进入开始选择的管理员、老师、或学生界面
5、登录界面还有一个注册按钮,点击则进入管理员注册界面(学生和老师在此系统中由管理员插入、删除、或修改)
6、成品图片如下:
7、
管理员主页面设计
1、第一是设置一张tableView,将数据库中的各种信息映射上来。
2、搞一个查询功能,通过姓名在数据库的表中筛选,将筛选出来的数据映射到tableView中 。
3、升序、降序查询功能也是一样的道理,不过在筛选的时候多了一步排序功能
4、插入学生信息功能就是点击改按钮,进入插入修改界面,在插入修改界面可以插入修改相关学生信息。
5、各种平均分查询功能,是在映射出来之前进行平均分的计算,再将平均分映射到lineEdit上。
6、显示老师信息和显示学生信息功能差不多,不过选择的表变成了老师的表
7、管理员界面如下
学生主页面设计
在现实生活中,学生在只能在系统中查看自己的相关信息,故我只做了将登录学生的信息映射到tableView上,学生界面如下,每个人只能看见自己的信息.
老师主页面设计
老师界面和学生界面设计基本一致,不过所查询的表不一样,老师界面也是根据登录主界面的账号在老师数据库里查老师,然后将其信息显示在tableView上,老师界面如下.
添加修改界面设计
1、通过两个radioButton,一个是修改信息,一个是添加信息,我使用了GroupBox将他们框起来,二者只能选其一,且比须选其一,否则错误提示。
2、我使用了ComBox来选择班级,SpinBox来设置年龄与语文数学成绩,其他Label显示姓名、工号之类,LineEdit来暂时存放要插入工号、姓名,还设置了返回按钮,返回到管理员界面。
删除界面设计
删除界面我是通过姓名在数据库的表中来查询到那个学生的信息,然后从数据库中删除改学生的信息,同时还设置了返回按钮,返回到管理员界面。
具体实现代码(GitHub):https://github.com/JiYueBai/Qt