学生成绩管理系统实现(CSS+JQuery+PHP+MySQL)
一、项目背景
本项目基于学校教务系统的背景,根据大学生选课以及学校对学生成绩的管理,实现了一个学校的学生成绩管理网站。另外在学生功能模块实现了选课系统,可供学生选课/退课。
项目源码已经整理打包放在公众号,关注公众号 陆海的点滴
,发送“学生成绩管理系统”关键字获取。
二、用户痛点
上大学得自己选课,体验过的同学都知道,没有比选课系统更容易崩的了,一到时间,网站进不去,各种404、502,能不能抢到喜欢的课全靠运气。抱怨的同时我们想选课系统为什么这么low,那我们能不能理清背后的逻辑,自己模拟做一个呢?
正式地讲,我觉得有以下几点:
1、教务系统的数据量不断的增长,系统访问量增多容易导致系统崩溃,功能并未完善,尤其是学生成绩管理系统,目前还没有一套完整的,统一的学生成绩管理系统
。因此,开发一套适合大众的,兼容性好的成绩管理系统还是很有必要。
2、学校的学生工作繁杂,资料众多,学生成绩管理作为一项重要工作,将功能和需求进行模块化,形成一个信息模块集中的管理系统,可以减轻管理员和教师的工作量,提高工作效率与准确率
。
3、学生成绩管理网站作为一个独立的学生信息管理系统,使用角色明确,管理员和教师对教务、教学上的服务和信息进行管理提高了保密性,学生通过系统更加快速地获取到自己修读课程和考试成绩
。
这么说还挺需要这款功能全面的学生课程成绩管理系统的,我想集成课程管理和成绩两大模块,怎么做呢,现在开干!
三、系统功能模块
想了想,复杂的系统简单化,总之,麻雀虽小,五脏俱全
。从系统角色角度设计出这个系统的模块,大概是这样。
如果能够按照这些功能模块,设计出一个系统,实现基本功能,工作量也不小了,我想刚入门的同学,完成整个项目框架搭建,功能模块的编码,一定收获满满。
技术栈,我选择更容易入门的,也方面后面本地把系统搭建起来,所以选择是这样。
后端:PHP
数据库:MySQL
前端:CSS、JQuery
四、数据库设计
数据库设计得好,是开工第一重要事!
1、管理员表admin
CREATE TABLE `admin` (
`admin_id` int(16) NOT NULL,
`name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`password` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
PRIMARY KEY (`admin_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
属性名 | 数据描述 | 数据类型 | 是否为空 | 备注 |
---|---|---|---|---|
admin_id | 管理员账号 | int(16) | 不允许 | 主码 |
name | 管理员名 | varchar(32) | ||
password | 密码 | varchar(32) |
2、教师信息表teacher
CREATE TABLE `teacher` (
`teach_id` int(16) NOT NULL,
`name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`sex` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`sdept` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`position` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`academic` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`password` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
PRIMARY KEY (`teach_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
属性名 | 数据描述 | 数据类型 | 是否为空 | 备注 |
---|---|---|---|---|
teach_id | 教师账号 | int(16) | 不允许 | 主码 |
name | 教师名称 | varchar(32) | ||
password | 密码 | varchar(32) | 不允许 | |
sex | 性别 | varchar(32) | ||
sdept | 部门 | varchar(32) | ||
position | 职称 | varchar(32) | ||
academic | 学历 | varchar(32) |
3、学生信息表student
CREATE TABLE `student` (
`stuno` int(16) NOT NULL,
`name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`sdept` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`sex` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`home` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`rxtime` date NULL DEFAULT NULL,
`ps` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`password` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
PRIMARY KEY (`stuno`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
属性名 | 数据描述 | 数据类型 | 是否为空 | 备注 |
---|---|---|---|---|
stuno | 学生账号 | int(16) | 不允许 | 主码 |
name | 学生名称 | varchar(32) | ||
password | 密码 | varchar(32) | 不允许 | |
sex | 性别 | varchar(32) | ||
sdept | 所属学院 | varchar(32) | ||
home | 家庭住址 | varchar(32) | ||
rxtime | 入学时间 | varchar(32) | ||
ps | 专业 | varchar(32) |
4、课程信息表course
CREATE TABLE `course` (
`course_id` int(16) NOT NULL,
`course_name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`credit` float(8, 1) NULL DEFAULT NULL,
`teach_id` int(16) NULL DEFAULT NULL,
`xktime` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`blps` float(8, 1) NULL DEFAULT NULL,
`blks` float(8, 1) NULL DEFAULT NULL,
PRIMARY KEY (`course_id`) USING BTREE,
INDEX `teach_id`(`teach_id`) USING BTREE,
CONSTRAINT `course_ibfk_1` FOREIGN KEY (`teach_id`) REFERENCES `teacher` (`teach_id`) ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
属性名 | 数据描述 | 数据类型 | 是否为空 | 备注 |
---|---|---|---|---|
course_id | 课程号 | int(16) | 不允许 | 主码 |
course_name | 课程名 | varchar(32) | 联合主键 | |
credit | 学分 | varchar(32) | ||
teach_id | 教授老师 | int(16) | ||
xktime | 开课学期 | varchar(32) | ||
blps | 平时成绩占比 | float(8) | ||
blks | 期末成绩占比 | float(8) |
5、学生成绩信息表grade
CREATE TABLE `grade` (
`sc_id` int(16) NOT NULL AUTO_INCREMENT,
`course_id` int(16) NULL DEFAULT NULL,
`stuno` int(16) NULL DEFAULT NULL,
`psgrade` float(16, 1) NULL DEFAULT NULL,
`ksgrade` float(16, 1) NULL DEFAULT NULL,
`grade` float(16, 1) NULL DEFAULT NULL,
`flag` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
PRIMARY KEY (`sc_id`) USING BTREE,
INDEX `course_id`(`course_id`) USING BTREE,
INDEX `stuno`(`stuno`) USING BTREE,
CONSTRAINT `grade_ibfk_1` FOREIGN KEY (`course_id`) REFERENCES `course` (`course_id`) ON DELETE SET NULL ON UPDATE CASCADE,
CONSTRAINT `grade_ibfk_2` FOREIGN KEY (`stuno`) REFERENCES `student` (`stuno`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE = InnoDB AUTO_INCREMENT = 19 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
属性名 | 数据描述 | 数据类型 | 是否为空 | 备注 |
---|---|---|---|---|
sc_id | 自增id | int(16) | 不允许 | 主码 |
course_id | 课程号 | varchar(32) | 联合主键 | |
stuno | 学生ID | varchar(32) | 联合主键 | |
psgrade | 平时成绩 | float(16) | ||
ksgrade | 期末成绩 | float(16) | ||
grade | 总成绩 | float(16) | ||
flag | 是否审核 | varchar(8) |
五、系统效果展示
从设计数据表可以知道,本网站系统包括了管理员,教师,学生这三种用户权限。
结合开篇的系统功能模块结构,各个角色的权限和使用的功能:
1)最高权限:管理员,主要负责对学生成绩、信息的管理和确认
,教师信息、课程的添加
等,进行的操作包括增删查改,具体是包括对教师、课程和学生信息的添加(单个添加或者通过上传文件批量添加)
,审核学生成绩以及对学生成绩的统计分析
,导出课程成绩、学生各科成绩等报表
。
2)教师:主要负责对学生的成绩进行录入,提交管理员审核
,查看学生课程成绩,导出成绩报表
,修改自己的信息、登录密码,查询课程教学学生的成绩情况
。
3)学生:查看自己修读课程的成绩
,打印成绩报表
,进行选课/退课
,查询学分情况
,修改自己的基本信息
,修改登录密码。
因为时间问题,文章先写到这里,完成系统架构的划分和数据库的设计,现在展示几张效果图给大家瞅瞅,下篇详细写整个系统各个模块的具体内容。
管理员登录视角:
学生登录视角:
学生查看自己成绩:
系统更多模块功能介绍,敬请期待!
项目源码已经整理打包放在公众号,关注公众号 陆海的点滴,发送“学生成绩管理系统”关键字获取。
欢迎“一键三连”
哦,点赞加关注,收藏不迷路,我们下篇见!(⊙ᗜ⊙)
公众号同步更新哦,习惯阅读公众号的伙伴们可以关注我的公众号 陆海的点滴 呀!