QT实现选课管理系统 数据库期末结课作业

QT是C++的桌面应用开发框架,数据库结课作业便使用QT编写制作

1、数据库设计

1.1 ER图

在这里插入图片描述

1.2 关系模式

共7张表,如下:

  • 学生(学号,姓名,密码,出生日期,所在学院号,专业名称,照片,班级)
  • 教师(职工号,姓名,密码,出生日期,所属学院号,照片)
  • 课程(课程号,课程名,学分,上课地点,授课教师职工号)
  • 学院(学院号,学院名)
  • 上课时间(课程号,上课星期,开始节次,结束节次)
  • 选课(学号,课程号,成绩)
  • 课程学院对应(课程号,学院号,课程属性)

2、功能介绍

2.1 总体概述

本程序分为三个登录方式,学生、教师和管理员,中心功能为选课功能,学生可以登录选择课程,教师查看自己教授课程班级的学生信息,管理员添加新用户、新课程

使用MySQL数据库存储数据。

2.2 登录窗口

在这里插入图片描述

2.2.1 选择身份登录

使用数据库存储的相应身份的用户名和正确密码即可成功登录,进入下一窗口

验证码点击会刷新

登录不存在的用户等失误操作会弹出提示
在这里插入图片描述

2.2.2 修改密码

点击修改密码红色字体进入
在这里插入图片描述
修改密码需要知道原密码,管理员新增用户后,默认的密码和用户登录名相同,此功能主要目的为新用户修改默认密码

2.2.3 密码使用MD5加密存储

数据中存储的密码为MD5加密方式,每次输入密码时,会将输入的密码转换为MD5格式与数据中存储的MD5正确密码比对

在这里插入图片描述
QT中有方便的MD5加密库函数,代码如下:

password = QCryptographicHash::hash(password.toLatin1(), QCryptographicHash::Md5).toHex();//将password转为MD5加密后格式

2.3 学生端

在这里插入图片描述
如上为登录学生端后初始首页

2.3.1 个人信息

在这里插入图片描述
展示当前登陆用户存储在数据库中的个人信息

照片可选择更改,更改后存储入数据库相应表

2.3.2 选课界面

在这里插入图片描述
选课列表仅会显示当前登陆学生学院可以选择的课程,选课时如果已选课程上课时间冲突会出现提示

在这里插入图片描述

2.3.3 当前课表

在这里插入图片描述
覆盖当前登录用户已选课程的课表,展示课程名、上课时间和地点

2.3.4 查看成绩

在这里插入图片描述
登录用户查看自己选择课程的成绩,教师未录入时不显示

2.4 教师端

在这里插入图片描述
如上为登录教师端后初始首页

2.4.1 个人信息

在这里插入图片描述
和学生端相同,不再说明

2.4.2 课程班级

在这里插入图片描述
如图,下拉框中显示当前登录教师授课的班级,选择后显示选择该课进入班级的学生

录入成绩需保证0-100的整数,不输入会将数据库对应属性置为null。输入框使用正则表达式限制了输入只能是0-100的整数

存在未录入成绩的学生时,点击提交成绩按钮后会弹出提示
在这里插入图片描述

2.4.3 成绩分布(聚集函数)

在这里插入图片描述
通过下拉框选择查看当前登录教师用户教授的班级成绩

使用了聚集函数计算该门课程总人数和分数平均值,SQL语句如下:

SELECT COUNT(sc_s_id),AVG(sc_grade) FROM sc WHERE sc_c_id=?
/*?表示课程号*/

2.5 管理员端

在这里插入图片描述
如上为登录管理员端后初始首页

2.5.1 新增信息

2.5.1.1 新增学生用户

在这里插入图片描述
每个输入框均使用正则表达式做了输入限制,无法输入非法字符串,在右侧日历控件选择出生日期。点击提交按钮存入数据库,重置按钮清空输入

2.5.1.2 新增教师用户

在这里插入图片描述
与新增学生用户相同,不再说明

2.5.1.3 新增课程

在这里插入图片描述
所有输入框均使用正则表达式限制输入

授课教师框输入教师职工号,点击查找是否存在,不存在会显示不存在!

下拉框选择可选课学生的学院和上课时间,上课时间若与当前授课教师其他课的上课时间冲突,会弹窗提示

在这里插入图片描述

2.5.2 修改信息(存储过程)

在这里插入图片描述

2.5.2.1 删除学生、教师或课程

单选框选择删除的对象,输入删除对象的编号(学号、职工号或课程号),点击删除

因为数据库关系模式的参照完整性,删除信息时需要从底向上删除,例如删除课程时,需要先删除选课表、上课时间表等的信息,使用存储过程删除

删除课程如下:

DROP PROCEDURE IF EXISTS `delete_course`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `delete_course`(in id varchar(10))
begin
	delete from sc where sc_c_id=id; /*删除学生选课记录*/
	delete from ccchoice where cc_c_id=id; /*删除学院对应记录*/
	delete from course_time where c_id=id; /*删除上课时间记录*/
	delete from course where c_id=id; /*删除课程*/
end$$

DELIMITER ;

删除教师如下:

DROP PROCEDURE IF EXISTS `delete_teacher`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `delete_teacher`(IN id VARCHAR(20))
BEGIN
	DELETE FROM sc WHERE sc_c_id IN (SELECT c_id FROM course WHERE c_t_id=id); /*删除授课记录*/
	DELETE FROM ccchoice WHERE cc_c_id IN (SELECT c_id FROM course WHERE c_t_id=id); /*删除学院对应记录*/
	DELETE FROM course_time WHERE c_id IN (SELECT c_id FROM course WHERE c_t_id=id); /*删除上课时间*/
	DELETE FROM course WHERE c_t_id=id; /*删除课程*/
	DELETE FROM teacher WHERE t_id=id; /*删除教师*/
END$$

DELIMITER ;

删除学生如下:

DROP PROCEDURE IF EXISTS `delete_student`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `delete_student`(IN id VARCHAR(20))
BEGIN
	DELETE FROM sc WHERE sc_s_id=id; /*删除选课记录*/
	DELETE FROM student WHERE s_id=id; /*删除学生*/
END$$

DELIMITER ;
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值