课程设计指导 | 用 Java 实现一个简易的教学管理系统 (1) —— 需求分析与数据库搭建

开个填不完的坑,叫“课程设计指导”,本质上是面向(水平不高的)大学生或水平极高的高中生在完成课程设计时的一个指导。之前帮恩师接了这个活,还录了视频,感觉还是很有意思的,可以拿来写素材。

提示
尽量不要使用移动端浏览,使用电脑以获得最佳阅览效果!

项目简述

问题描述

教学管理系统主要满足三类用户的需求,分别是教学管理人员(设置为系统管理员)、教师学生,三类用户所具有的操作权限及操作内容是有所区别的。教学管理系统中系统管理员可以对学生信息、教师信息和课程信息等进行有效的管理和维护,包括增加、删除和修改等基本的操作和维护功能以及灵活的查询功能。教师和学生能够对个人的基本信息、授课和选课等所涉及的相关信息进行查询、更新等操作。

基本要求

· 系统管理员:

  1. 维护学生的个人基本信息,实现对学生个人信息的添加、删除和更新等。学生信息包括学生的学号、姓名、性别、专业、院系、年龄、电话、EMAIL等。
  2. 维护教师的个人基本信息,实现对教师个人信息的添加、删除和更新等。教师信息包括教师的工号、姓名、性别、职称、院系、年龄、电话、EMAIL等。
  3. 维护课程信息,实现对课程信息的添加、删除和修改等。课程信息包括课程号、课程名、学分、课程性质等。

· 学生用户:

  1. 查询和修改学生的个人信息:如电话、EMAIL等。
  2. 选择选修课和查看所有课程信息。包括查看选修课程的设置信息、选择选修课、退选已选课程、查看所有学习的课程等。
  3. 学生可以查看自己所有课程的成绩信息。

· 教师用户:

  1. 查询和修改个人信息:如电话、EMAIL地址等。
  2. 课程结束后,教师给所教授课程的选课学生进行成绩登记。
  3. 教师可以查看自己的教学安排,包括讲授课程、学时数、以往所授课程的学生成绩等信息。

其它要求

教学管理的基本规定如下:每门课程可以由多个教师讲授,不同的教师讲授的同名课程应加以区分;每个教师可以讲授多门课程;每个学生可以学习多门课程,每门课程有多个学生学习,每个学生学习每门课程都会获得一个成绩。

本案例中学校的院系、专业信息需要单独进行维护和管理,但不需要考虑教师排课的时间冲突等问题,假定排课由人工进行合理安排。

数据库创建需求分析

结合问题描述中的要求,我们需要实现三个用户角色:教学管理人员、教师与学生,三个角色之间的功能是不同的,考虑到实验学生的基础不高,我们不按照企业要求以一张表的方式设计,在这个项目中我们需要设计三张用户表(分别是教学秘书表、教师表、学生表)。

再读基本要求,我们可以发现,用户除了维护自己的个人信息外,对于教学秘书,需要维护课程信息,对于学生来说,学生需要选课,学生可以查看自己所选的课。因此,我们需要设计一个课程表和选课表,用来包含课程的基本信息与学生的选课信息。

同时,在最后:

本案例中学校的院系、专业信息需要单独进行维护和管理,但不需要考虑教师排课的时间冲突等问题,假定排课由人工进行合理安排。

我们还需要设计院系表与专业(班级)表,用来更新和维护。

某些数据是不用重复写入的(例如性别等),这将会占用很多字段容量,我们可以假定一个数值,并用表关联进行约束,以起到方便维护的效果,所以我们再设计三张表:性别表、职称表、课程类型表。

项目环境准备

项目所需环境如下:

  • JDK 8u271
  • IDE:IDEA Community 2021.1
  • 数据库系统:MySQL 8.0.21+Workbench 8.0
  • 依赖包:JDBC(最好是最新的版本)
  • (后期会涉及到)本地服务器:Tomcat 9.0
  • (如果我有足够大的野心)移动端开发:Android Studio

数据库设计

我们一共需要设计这些表:

警告
设计表的时候,一定要注意约束的关系,并根据关系按照合适的顺序创建表,否则会出现一些奇怪的错误。通常先创建外键指向的表,再创建要设置外键的表。

用户表

info_u_admins 教学秘书表

字段名类型描述约束
AidINT教学秘书 ID
AnameVARCHAR(45)教学秘书名称
ApwdVARCHAR(45)教学秘书密码

info_u_students 学生表

字段名类型描述约束
SidINT学生 ID
SnameVARCHAR(45)学生姓名
SpwdVARCHAR(45)学生密码
CLidINT所属班级->info_classes.CLid
Sage VARCHAR(45)学生年龄
SsexINT学生性别->info_sex.ISid
SteleVARCHAR(45)学生电话
SemailVARCHAR(45)学生邮箱

info_u_teachers 教师表

字段名类型描述约束
TidINT教师 ID
TnameVARCHAR(45)教师姓名
TpwdVARCHAR(45)教师密码
DidINT教师所属院系->info_departments.Did
TlevelINT教师职称->info_tlevel.TLid
TageVARCHAR(45)教师年龄
TsexINT教师性别->info_sex.ISid
TteleVARCHAR(45)教师电话
TemailVARCHAR(45)教师邮箱

动作表

table_courses 课程表

字段名类型描述约束
COidINT课程 ID
COnameVARCHAR(45)课程名称
COscoreVARCHAR(45)课程的学分(绩点)
DidINT开课院系->info_departments.Did
COtypeINT课程类型->info_cour_type.COid
TidINT教师姓名->info_u_teachers.Tid

table_cho_courses 选课表

字段名类型描述约束
SidINT学生 ID->info_u_students.Sid
COidINT课程 ID->table_courses.COid
S_COScoreVARCHAR(45)学生在这门课的成绩

info_departments 院系表

字段名类型描述约束
DidINT院系 ID
DnameVARCHAR(45)院系名称

info_classes 班级表

字段名类型描述约束
CLidINT班级 ID
CLnameVARCHAR(45)班级名称
DidINT班级所属院系->info_departments.Did

约束表

info_cour_type 课程类型表

字段名类型描述约束
COTidINT课程类型 ID
COTnameVARCHAR(45)课程类型描述

info_tlevel 职称类型表

字段名类型描述约束
TLidINT职称类型 ID
TLvalueVARCHAR(45)职称类型描述

info_sex 性别表

字段名类型描述约束
ISidINT性别类型 ID
ISvalueVARCHAR(45)性别类型描述

小结

在本节内容里,我们分析了系统的需求,并根据需求设计了数据库,对于一个管理系统的项目来说,设计数据库是个必不可少的阶段,在最开始根据需求设计数据库,会加深对于项目的理解,同时也对后面完成相关功能的代码有极大的帮助。

暂无评论

发送评论 编辑评论

分享你的想法!评论时请如实在信息框填写个人信息
文明上网理性发言,请遵守相关法律法规,发表评论将会在站长审核通过后出现在评论列表中

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇