数据库系统课设——教务管理系统
目录媒介
一、总体计划
1、知识背景
2、模块介绍(需求分析)
3、计划步调
3.1 页面原型计划
3.2 前端页面开辟
3.3 后端接口开辟
3.4 数据库计划
二、具体计划
1、 系统功能模块划分
2、 数据流程图
3、数据库概念布局计划
4、 数据库逻辑布局计划
三、结果与分析
1、用户登录
2、人员管理
3、课程申请
4、课程审批
5、课程安排
6、选择课程
7、结果评定
四、源码获取
总结
媒介
这两个星期学校进行数据库的课程计划,我利用所学知识做出来了一个较为简单的教务管理系统,具体功能包罗登录、人员管理、教师课程申请、管理员审批课程、管理员安排课程、门生选课、教师给门生评分等等。分享一下我的课程计划,记录一下本身的发展过程。( • ̀ω•́ )✧
《教务管理系统》项目演示
技能框架:前端采用Vue2,后端采用Spring,数据库利用MySQL。
一、总体计划
1、知识背景
本次课程计划我离开了学校既定的GUI图形库操纵,理由主要是JUI图形化操纵较为繁琐,技能过于陈旧。而相较于图形化开辟,Java语言更得当用来做后端服务的开辟。因此,在本次课设中,我采用的是前后端分离开发模式,来实现业务所需要的功能。
首先,前端即用来写用户看的到的界面的部门,我采用的是Vue框架携同Element组件库进行快速开辟,所需要的前置知识有Html、Css、JavaScript、Node.js。后端即用来处理数据和逻辑操纵的部门,我采用的是Java语言主流的Spring框架,利用Meaven进行jar包的管理,Mybatis操纵数据库,采用SpringMVC进行开辟。
在数据库层面,采用的是MySQL数据库,该数据库免费利用,应用范围较为广泛。在表布局计划上面,采用MySQL自带的MySQL WorkBench进行图形化的操纵。
2、模块介绍(需求分析)
系统主要有以下几大模块:用户登录、人员管理、课程申请、课程审批、课程安排、课程选课、结果评定。
[*]用户登录:根据角色权限的不同,用户分为管理员、门生和教师三类,不同用户输入账号和密码登录后所看到的界面不一样。用户登录之后若不选择退出登录,下次输入网址的时候能直接跳转至首页,无需再次输入账号和密码。此外,用户登录后经过一段时间,网站将提示登录超时,相应页面将不能访问,这时候用户需要重新登录。登录成功之后,用户可以选择修改本身的密码。
[*]人员管理:该模块包含两大管理,一是门生管理,二是教师管理,两者功能类似,主要有根据条件对用户进行查询,批量删除人员,新增一名人员,修改一名人员的信息,前端分页和后端分页。
[*]课程申请:教师角色可以选择向管理员提交申请,新增一门课程。申请之后,教师可以看到本身的提交记录以及相应的提交状态(待审批、已通过、未通过),点击相应的记录可以查看本身的提交详情。
[*]课程审批:管理员可以查看教师的课程申请记录,并进行相应的处理,可以选择通过,也可以选择不通过。当选择通过期,教师的申请记录的提交状态将变化为已通过,此时,该课程将添加进课程安排的页面,并处于等候课程安排的状态;当选择不通过期,教师的申请记录的提交状态将变化为未通过,课程将不会添加进课程安排的页面。
[*]课程安排:管理员可以对通过了审批的课程进行排课,也可以本身新增一门课程,此时,课程将处于待选状态。管理员可以选择开启选课,开启后,全部待选状态的课程将变为可选,门生将在选课中心看到这些课程;关闭选课,可选状态的课程将变化为授课中的状态,教师正式进入课程的授课。当某一课程结束后,管理员可以点击结课按钮,该课程变化为结课状态,此时教师可对选了该门课的门生进行评分。管理员可以删除处在待选状态或等候课程安排状态的课程信息。
[*]课程选课:当管理员开启选课后,门生可以看到选课中心的课程内容,根据本身的爱好进行课程的选择,选择后若是不满足,也可以选择退课。处在授课中或者已结课的课程不支持退课。
[*]结果评定:教师可以在其课程中查看课程详情,查看选修了该门课的全部门生根本信息,当课程处于已结课状态后,教师可以对门生进行评分,门生也能在其课程中看到末了的结果。若课程未处于已结课的状态,教师将不能对门生进行评分。
3、计划步调
3.1 页面原型计划
在正式进行开辟之前,需要将具体的页面计划好,这样前端能根据页面进行开辟,后端也能根据页面计划出符合的接口,常用的原型计划工具有Axure和墨刀。在这里,由于我是一个人进行工作,且课设时间较为紧急,因此页面原型我在脑海里面过了一遍,就没有效工具绘制出来了。
3.2 前端页面开辟
根据原型,利用Html、Css、JavaScript共同Vue2进行页面的开辟。本次开辟所采用的UI组件库难免与原型不太一样,因此前端页面的制作大致符合原型的样子即可。
3.3 后端接口开辟
根据页面的大致环境,需要计划出符合的接口,接受前端转达过来的哀求,如根据门生的id获取门生的信息就得当采用GET哀求,而新增一王谢生就得当采用POST哀求。接口开辟完成,与前端正式交互之前,需要先辈行接口测试,所采用的测试工具为Postman,以包管接口所传数据的准确性。
3.4 数据库计划
根据模块的功能以及页面的环境,利用所学的数据库知识计划出相应的表布局,通过Java步伐连接好数据库,将数据返回给前端表现。
二、具体计划
1、 系统功能模块划分
该系统是多角色登录的系统,不同的角色进行登录,所拥有的权限不同。管理员主要是对人员进行管理,课程进行审批,安排讲授工作;教师主要是申请课程和给门生评分;门生主要是进行课程的选择,查看末了的结果。
https://img-blog.csdnimg.cn/e755f5ca6d264ae4976f992692f82f90.png
2、 数据流程图
数据的流通从登录开始,登录后,用户可以选择退出登录或者修改密码。数据流程中,较为复杂的主要是课程的申请与审批,以及讲授任务的安排工作。在课程正式进入到选课前,需要进行课程的安排,使课程处于待选状态。开启选课后,全部待选状态的课程将变化为可选,关闭选课后,可选课程进入授课状态。只有当课程结课之后才能对门生进行结果的评定。
https://img-blog.csdnimg.cn/9ede005fb6ad46e4894117c976533899.png
3、数据库概念布局计划
通过对模块和数据流程的分析,我们需要有门生信息、教师信息、申请信息、审批信息、课程信息、管理员信息、选课信息、课程状态信息、是否开启选课等多种数据。各种数据之间存在肯定的接洽,如门生与选课之间的关系是多对多的,学院与门生之前的关系是一对多的。
https://img-blog.csdnimg.cn/705e61f17cb6413099c1d52d8a42f5f5.png
https://img-blog.csdnimg.cn/a9f9b89536d04fb3b6ffdee7fd31156c.png
4、 数据库逻辑布局计划
通太过析,我总共计划了12个数据表格,分别为管理员信息表、教师信息表、门生信息表、课程申请表、课程审批表、课程信息表、课程状态表、选课的开启与关闭表、学院信息表、上课地点信息表、用户操纵信息表和门生选课关系表。
表1 administrator 管理员信息表
字段名称
数据类型
默认值
是否可空
说明
administrator_id
int
否
主键自增
name
varchar(45)
否
姓名
account
varchar(45)
否
账号
password
varchar(45)
否
密码
表2 teacher教师信息表
字段名称
数据类型
默认值
是否可空
说明
teacher_id
int
否
主键自增
name
varchar(45)
否
姓名
teacher_number
varchar(45)
否
工号/账号
department_id
int
否
外键学院id
date_time
datetime
now()
否
末了操纵时间
password
varchar(45)
123456
否
密码
表3 student门生信息表
字段名称
数据类型
默认值
是否可空
说明
student_id
int
否
主键自增
name
varchar(45)
否
姓名
student_number
varchar(45)
否
学号/账号
stduent_class
varchar(45)
否
门生班级
date_time
datetime
now()
否
末了操纵时间
password
varchar(45)
123456
否
密码
表4 course_application课程申请表
字段名称
数据类型
默认值
是否可空
说明
course_application_id
int
否
主键自增
teacher_id
int
是
外键教师id
course_id
int
是
外键课程id
course_name
varchar(45)
是
课程名称
course_credit
varchar(5)
是
课程学分
course_hour
varchar(5)
是
课程学时
course_time
varchar(45)
是
上课时间
course_place_id
int
是
外键上课地点id
course_description
text
是
课程描述
course_examination_id
int
否
外键课程审批id
operation_id
int
否
外键操纵id
date_time
datetime
now()
是
申请时间
表5 course_examination课程审批表
字段名称
数据类型
默认值
是否可空
说明
course_examination_id
int
否
主键自增
name
varchar(45)
否
审批的名称
表6 course课程信息表
字段名称
数据类型
默认值
是否可空
说明
course_id
int
否
主键自增
name
varchar(45)
是
课程名称
teachaer_id
int
是
外键教师id
credit
varchar(45)
是
学分
hour
varchar(20)
是
学时
time
varchar(45)
是
上课时间
Place_id
int
是
外键上课地点id
description
text
是
课程描述
course_status_id
int
否
外键课程状态id
is_delete
Int
0
否
是否删除,0表示没有,1表示已删除
表7 course_status课程状态表
字段名称
数据类型
默认值
是否可空
说明
course_status_id
int
否
主键自增
name
varchar(45)
否
课程状态名称
表8 course_switch选课的开启与关闭表
字段名称
数据类型
默认值
是否可空
说明
course_switch_id
int
否
主键自增
status
int
0
否
0表示选课关闭,1表示选课开启
表9 department学院信息表
字段名称
数据类型
默认值
是否可空
说明
department_id
int
否
主键自增
name
varchar(45)
否
学院名称
表10 place上课地点信息表
字段名称
数据类型
默认值
是否可空
说明
place_id
int
否
主键自增
name
varchar(45)
否
上课地点名称
表11 operation用户操纵信息表
字段名称
数据类型
默认值
是否可空
说明
operation_id
int
否
主键自增
name
varchar(30)
否
用户操纵名称
表12 courses_students门生选课关系表
字段名称
数据类型
默认值
是否可空
说明
courses_students_id
int
否
主键自增
course_id
int
否
课程id
student_id
int
否
门生id
score
float
是
结果
三、结果与分析
系统实现了用户登录、人员管理、课程申请、课程审批、课程安排、选择课程、结果评定等模块。自我感觉这次所写的代码量比较庞大,有些细节的地方大概没有太注意。为了实现这个系统,我稍微统计了一下,后端写了37个接口,前后端代码加起来应该有几千行了。
https://img-blog.csdnimg.cn/57002d9a809b4d68985f27cb59e06910.png
后端采了用MVC进行分层,此中,Controller层用来定义接口并返回结果,Service层用来处理相应的逻辑,Mapper层用来进行数据库的操纵。各个模块分离开来,采用bean来进行管理,只管包管了代码的高内聚、低耦合。前端为不同的功能模块定义了不同的文件夹,如与组件有关的就单独放在一个组件文件夹中,以包管代码的层次性与整洁性。
1、用户登录
用户登录整体上是采用的JWT令牌登录的技能,前端将用户的账号、密码和身份信息传入到后端之后,后端根据用户的身份信息在相应的数据表格中查询用户的信息,若查不到,则不允许用户登录;若查到用户,则将查到的用户的id、姓名和身份封装起来,转换为JWT令牌返回给前端。接下来,前端将这一令牌存储在浏览器的localStorage中,接下来前端每次哀求时都将浏览器本地存储的这一信息取出来,在哀求头中携带,后端则在每一次哀求的时候校验这一信息。若这一信息变更或者登陆超时,则提示用户重新登录。若用户没有登录,则在前端访问不到相应的网址,也访问不到后端相应的接口信息。在这一过程中,为了防止代码的重复化,后端的拦截器和前端的拦截器就显得尤为重要,与登录相干的逻辑主要是在拦截器中进行处理。
https://img-blog.csdnimg.cn/d98d9a5aaa2f43c796a4f785e5ca080c.png
后端与登录有关的部门代码:
https://img-blog.csdnimg.cn/33f5170ae7e448dbb236140c57a35dde.png
前端与登录有关的部门代码如下:
https://img-blog.csdnimg.cn/5be5a424c44541fb8f6eedb42fd79f0c.png
2、人员管理
管理员登录系统之后,可以对门生和教师进行增删改查操纵,以及数据发分页表现。在这个过程中,需要实现的接口有根据人员id查询人员的信息,根据用户输入的条件分页查询人员的信息,根据人员的id修改人员的信息,根据人员的id数组批量删除人员的信息。
https://img-blog.csdnimg.cn/611f63e50d9b48c59c163061b56cc2c6.png
3、课程申请
当教师登录该系统后,教师填写相应的申请信息后,可以进行课程的申请。申请提交后,将在数据库生成一条关于该教师的申请记录,此时课程申请处于待审批的状态,教师可以查看本身的申请记录以及申请详情。管理员同意申请时,会根据教师的申请生成一门课程数据,申请状态由待审批变化为已通过;管理员不通过期,不会生成一门课程数据,申请状态会油待审批变化为未通过。
https://img-blog.csdnimg.cn/6916e78f2b1a4c68bdd4c6417fbfbf03.png
https://img-blog.csdnimg.cn/08e115ad2cea42e293dca60ee466d558.png
https://img-blog.csdnimg.cn/5e22a5aeb3a440f798c3a147d1d21740.png
4、课程审批
管理员可以对教师申请的课程信息进行审批,若觉得符合,则可以选择通过,若觉得不符合,则可以不通过教师的申请。审批界面与申请界面类似,这里展示一下与审批有关的部门前后端代码:
https://img-blog.csdnimg.cn/ec7bae733b77405b8262f3d6d0f68a50.png
https://img-blog.csdnimg.cn/1d9098f60f6843c2b42dfd2e8d794a6e.png
5、课程安排
管理员可以对通过审批的课程进行排课,也可以本身新增一门新的课程,并将该课程的授课任务安排给一位老师。当需要排课的课程全部排课后,可以开启选课,让门生进行选课。当门生选完课后,管理员可以关闭选课,课程进入授课中的状态,门生将不能再选课,也不能选择退课。此时,教师可以查看选择了该门课程的全部门生的根本信息,但是不能对门生进行结果的评分。
https://img-blog.csdnimg.cn/bf953d72f66b48148ea546ec87440acf.png
6、选择课程
教师开启选课后,门生可以在选课中心查看可选的课程,并选择相应的课程。选择相应的课程后,门生可以在我的课程界面查看已经选择的课程。假如课程没有处于授课中或者结课的状态,则可以退课。
https://img-blog.csdnimg.cn/ed72b3374e5b47ac92d48538ae912b46.png
7、结果评定
课程结课后,教师可以根据门生的表现,对门生进行评分。评分后,门生也可以在我的课程界面看到末了的结果。若课程没有结课,结果无法进行排评定。
https://img-blog.csdnimg.cn/b8c56ebcfa7c457084325dd058a24ccc.png
https://img-blog.csdnimg.cn/73dd0490c02c4f02be3925d915ebfaec.png
https://img-blog.csdnimg.cn/cc44bf29cc734ee88f8acc517d087ef4.png
四、源码获取
该系统的源码已经上传至百度网盘,链接和提取码如下:
教务管理系统: 教务管理系统.zip_免费高速下载|百度网盘-分享无限制 (baidu.com)
提取码:6p1w
总结
总体来说,这次课程计划的代码量还是有点多的,一些细节的地方没有做的足够完善,好比说添加数据时的校验,系统大概存在一些还没有发现的bug。末了,文章篇幅较长,感谢您能看到这里,博主程度有限,难免存在有不敷的地方,欢迎各位大佬指出。让我们一起朝更好的方向努力前进吧!
https://img-blog.csdnimg.cn/e168c647bb5f4ad1bb7e9b8c0f918f3b.gif
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]