开个填不完的坑,叫“课程设计指导”,本质上是面向(水平不高的)大学生或水平极高的高中生在完成课程设计时的一个指导。之前帮恩师接了这个活,还录了视频,感觉还是很有意思的,可以拿来写素材。
项目简述
问题描述
教学管理系统主要满足三类用户的需求,分别是教学管理人员(设置为系统管理员)、教师及学生,三类用户所具有的操作权限及操作内容是有所区别的。教学管理系统中系统管理员可以对学生信息、教师信息和课程信息等进行有效的管理和维护,包括增加、删除和修改等基本的操作和维护功能以及灵活的查询功能。教师和学生能够对个人的基本信息、授课和选课等所涉及的相关信息进行查询、更新等操作。
基本要求
· 系统管理员:
- 维护学生的个人基本信息,实现对学生个人信息的添加、删除和更新等。学生信息包括学生的学号、姓名、性别、专业、院系、年龄、电话、EMAIL等。
- 维护教师的个人基本信息,实现对教师个人信息的添加、删除和更新等。教师信息包括教师的工号、姓名、性别、职称、院系、年龄、电话、EMAIL等。
- 维护课程信息,实现对课程信息的添加、删除和修改等。课程信息包括课程号、课程名、学分、课程性质等。
· 学生用户:
- 查询和修改学生的个人信息:如电话、EMAIL等。
- 选择选修课和查看所有课程信息。包括查看选修课程的设置信息、选择选修课、退选已选课程、查看所有学习的课程等。
- 学生可以查看自己所有课程的成绩信息。
· 教师用户:
- 查询和修改个人信息:如电话、EMAIL地址等。
- 课程结束后,教师给所教授课程的选课学生进行成绩登记。
- 教师可以查看自己的教学安排,包括讲授课程、学时数、以往所授课程的学生成绩等信息。
其它要求
教学管理的基本规定如下:每门课程可以由多个教师讲授,不同的教师讲授的同名课程应加以区分;每个教师可以讲授多门课程;每个学生可以学习多门课程,每门课程有多个学生学习,每个学生学习每门课程都会获得一个成绩。
本案例中学校的院系、专业信息需要单独进行维护和管理,但不需要考虑教师排课的时间冲突等问题,假定排课由人工进行合理安排。
数据库创建需求分析
结合问题描述中的要求,我们需要实现三个用户角色:教学管理人员、教师与学生,三个角色之间的功能是不同的,考虑到实验学生的基础不高,我们不按照企业要求以一张表的方式设计,在这个项目中我们需要设计三张用户表(分别是教学秘书表、教师表、学生表)。
再读基本要求,我们可以发现,用户除了维护自己的个人信息外,对于教学秘书,需要维护课程信息,对于学生来说,学生需要选课,学生可以查看自己所选的课。因此,我们需要设计一个课程表和选课表,用来包含课程的基本信息与学生的选课信息。
同时,在最后:
本案例中学校的院系、专业信息需要单独进行维护和管理,但不需要考虑教师排课的时间冲突等问题,假定排课由人工进行合理安排。
我们还需要设计院系表与专业(班级)表,用来更新和维护。
某些数据是不用重复写入的(例如性别等),这将会占用很多字段容量,我们可以假定一个数值,并用表关联进行约束,以起到方便维护的效果,所以我们再设计三张表:性别表、职称表、课程类型表。
项目环境准备
项目所需环境如下:
- JDK 8u271
- IDE:IDEA Community 2021.1
- 数据库系统:MySQL 8.0.21+Workbench 8.0
- 依赖包:JDBC(最好是最新的版本)
- (后期会涉及到)本地服务器:Tomcat 9.0
- (如果我有足够大的野心)移动端开发:Android Studio
数据库设计
我们一共需要设计这些表:
用户表
info_u_admins 教学秘书表
字段名 | 类型 | 描述 | 约束 |
---|---|---|---|
Aid | INT | 教学秘书 ID | |
Aname | VARCHAR(45) | 教学秘书名称 | |
Apwd | VARCHAR(45) | 教学秘书密码 |
info_u_students 学生表
字段名 | 类型 | 描述 | 约束 |
---|---|---|---|
Sid | INT | 学生 ID | |
Sname | VARCHAR(45) | 学生姓名 | |
Spwd | VARCHAR(45) | 学生密码 | |
CLid | INT | 所属班级 | ->info_classes.CLid |
Sage | VARCHAR(45) | 学生年龄 | |
Ssex | INT | 学生性别 | ->info_sex.ISid |
Stele | VARCHAR(45) | 学生电话 | |
Semail | VARCHAR(45) | 学生邮箱 |
info_u_teachers 教师表
字段名 | 类型 | 描述 | 约束 |
---|---|---|---|
Tid | INT | 教师 ID | |
Tname | VARCHAR(45) | 教师姓名 | |
Tpwd | VARCHAR(45) | 教师密码 | |
Did | INT | 教师所属院系 | ->info_departments.Did |
Tlevel | INT | 教师职称 | ->info_tlevel.TLid |
Tage | VARCHAR(45) | 教师年龄 | |
Tsex | INT | 教师性别 | ->info_sex.ISid |
Ttele | VARCHAR(45) | 教师电话 | |
Temail | VARCHAR(45) | 教师邮箱 |
动作表
table_courses 课程表
字段名 | 类型 | 描述 | 约束 |
---|---|---|---|
COid | INT | 课程 ID | |
COname | VARCHAR(45) | 课程名称 | |
COscore | VARCHAR(45) | 课程的学分(绩点) | |
Did | INT | 开课院系 | ->info_departments.Did |
COtype | INT | 课程类型 | ->info_cour_type.COid |
Tid | INT | 教师姓名 | ->info_u_teachers.Tid |
table_cho_courses 选课表
字段名 | 类型 | 描述 | 约束 |
---|---|---|---|
Sid | INT | 学生 ID | ->info_u_students.Sid |
COid | INT | 课程 ID | ->table_courses.COid |
S_COScore | VARCHAR(45) | 学生在这门课的成绩 |
info_departments 院系表
字段名 | 类型 | 描述 | 约束 |
---|---|---|---|
Did | INT | 院系 ID | |
Dname | VARCHAR(45) | 院系名称 |
info_classes 班级表
字段名 | 类型 | 描述 | 约束 |
---|---|---|---|
CLid | INT | 班级 ID | |
CLname | VARCHAR(45) | 班级名称 | |
Did | INT | 班级所属院系 | ->info_departments.Did |
约束表
info_cour_type 课程类型表
字段名 | 类型 | 描述 | 约束 |
---|---|---|---|
COTid | INT | 课程类型 ID | |
COTname | VARCHAR(45) | 课程类型描述 |
info_tlevel 职称类型表
字段名 | 类型 | 描述 | 约束 |
---|---|---|---|
TLid | INT | 职称类型 ID | |
TLvalue | VARCHAR(45) | 职称类型描述 |
info_sex 性别表
字段名 | 类型 | 描述 | 约束 |
---|---|---|---|
ISid | INT | 性别类型 ID | |
ISvalue | VARCHAR(45) | 性别类型描述 |
小结
在本节内容里,我们分析了系统的需求,并根据需求设计了数据库,对于一个管理系统的项目来说,设计数据库是个必不可少的阶段,在最开始根据需求设计数据库,会加深对于项目的理解,同时也对后面完成相关功能的代码有极大的帮助。