基于Java的学生课程管理系统的设计和实现
软件工程王曦楠
Design and implementation of student course
management system based on Java
Software Engineering Major Wang Xinan
目 录
1 绪论
1.1 课题背景
1.2 系统现状和发展
1.3 进销存管理系统发展现状
2 系统设计思想和技术介绍
2.1 设计思想
2.2 技术介绍
2.2.1 Spring框架
2.2.2 SpringMVC框架
2.2.3 Mybatis框架
2.2.4 SpringBoot框架
2.2.5 Shiro安全框架
2.2.6 Mysql数据库管理工具
2.2.7 Thymeleaf模板引擎
3 系统需求与分析
3.1 需求分析
3.2 可行性分析
3.2.1 技术可行性分析
3.2.2 实用性分析
4 系统数据库设计
4.1 数据库需求分析
4.2 数据库物理实现
4.3 数据库逻辑图
5 系统功能实现
5.1 登录模块
5.2 管理员模块
5.2.1 系统管理功能模块介绍
5.2.2 校建管理功能模块介绍
5.2.3 课程管理功能模块介绍
5.2.4 教师管理功能模块介绍
5.2.5 学生管理功能模块介绍
5.2.6 选课管理功能模块介绍
5.2.7 教评管理功能模块介绍
5.2.8 成绩管理功能模块介绍
5.2.9 校园新闻功能模块介绍
5.3 教师模块
5.4 学生模块
5.4.1 课程正选功能详细介绍
5.4.2 课程退课功能详细介绍
5.4.3 成绩管理界面详细介绍
5.4.4 网上教评界面详细介绍
5.4.5 个人资料界面详细介绍
结束语
参考文献
致谢
学生课程管理系统与学校各个方面息息相关,无论什么时代,人们都非常重视教育的方式方法和高效便捷。古代社会没有现代社会的科学技术,都是由当时的领导机构指定出一个统一的管理方法,一切都按照统一的规定来。随着时代的发展这一套管理办法已经不适应于现在的管理了,因为现在的学校比之前的多,比之前的大,管理起来也越来越麻烦,每个学校都是一个单独的集体,管理起来不一样,如果用统一的方法来管理根本不可行,于是每个学校单独制作高效有利的管理系统成为每个教育机构的刚需,限于社会条件人们无法解决这个问题。
进入近现代以来,科学技术有了很大的发展,数据库技术,数字化技术,网络系统大规模应用技术,网络系统开发工具等等不断完善。数据库技术给数据的存储检索分析修改等提供了很大的方便,因此数据库技术以高使用率完美的应用在当前全球各个领域的各行各业。数字化技术和互联网技术也一样,在时代潮流的发展下越来越好,互联网技术和数据库技术的结合也给社会各行各业带来不一样的感官体验。尤其是嗅觉灵敏的教育领域,也感受到了互联网带来的方面和高效,于是关于高校方面的学生课程管理系统应运而生,但由于当时的技术条件比较落后,开发的系统功能不完善,功能单一,效果不好成为整个领域的弊端。随着技术的发展,技术人才的增长,以及开发学生课程管理系统的经验不断积累,适合大众而且功能多样化,按照需求定制化的学生课程管理系统也在这样的背景下应运而生。
随着计算机网络应用的逐渐普及,学生课程管理系统已经成为在校学生,老师,校园工作人员日常教学,成绩,排课,考试管理等的重要工具,并且给教育机构用户的日常工作,学习带来极大的便利,极大地节省了学生,老师在除学习以外的任何时间,同时减少这些事情的错误率,提高了学校内部信息的稳定和可管理性,而且方便学校对学生和老师相关信息的汇总和管理。而且现在有很多针对高校的学生课程管理软件,比如万方教务管理系统,云教务,智慧教育等等很多软件,这也说明了教育机构对该领域学生课程管理系统的需求很大,需求很广泛,同时也证明该领域有很大的不足,需要不断的更新改进以适应现代化发展的教育行业,给每个环境下的教育机构带去不同的用户体验,这也证明了该领域下学生课程管理系统的具有极好的发展前景。
如今,学生课程管理系统已经广泛的运用到高校日常教学,成绩,排课,考试管理等各种环境,它可以不用连接 Internet,直接在学校局域网内实现信息互通。还可以部署到公有云上,让使用人员不管何时何地都能高效的办理自己的业务,比如学生可以很方便的查询自己的课程信息,考试成绩,选课等,老师可以很方便的查询自己的课程安排,给学生打分等等,是现代化教育机构不可缺少的辅助工具[1]。我想这对于当今追求高效率,高便捷的教育行业来说,有非常重要的意义。
技术方面系统采用B/S架构,并将数据库和后台服务端以及前台展示页面部署到公有云上的形式以方便用户任何时间,任何地点高效率的办理自己的业务 [2]。数据库采用免费开源的mysql数据库以节省成本,后台服务器端采用SpringBoot框架进行快速搭建和运行,采用Maven管理依赖提升项目开发过程中规范性与高效性,采用MyBatis框架做持久层处理器,采用MVC的设计模式方便代码的阅读和编辑,采用shiro安全权限框架管理用户权限和维护系统安全[3]。
对于本学生课程管理系统,从产品角色支持方面来讲,将本系统的角色权限分为3类:管理员,教师和学生。并通过权限限定实现管理员管理学生,教师,课程等信息等操作。教师和学生可以管理自己的课程和成绩信息等操作。
Spring框架是由Pivotal团队开发的轻量级开发脚手架。通过注解对java对象进行管理提高开发的效率和质量和面向切面编程的能力,去繁从简,将大量重复的业务逻辑一个注解搞定,并且程序间的耦合度非常低,任何java应用都可以从中受益。
Spring的一个最大特点就是它是一个万金油似的框架,他可以和其他的任何框架结合起来使用,并对这些框架进行管理和配置,是当今SSH,SSM,SpringBoot等框架的基础。
早期JAVA网络程序开发模式理论和实际层次很简单,所有的要实现的功能都在一个类中实现,没有层次,这样虽然很大的降低的代码的复用率和开发周期,但是程序之间的耦合度很高很高。而且对于程序开发人员来说,自身的技术栈不仅要会后端,还要会前端,前端和后端相互依赖夹杂,使程序的很难看懂实现了那些功能,不能进行有效的再次开发测试。所有这种开发方式虽然很简单,弊病也很重,因此这种代码逻辑方式被前后分离的MVC 模式取代,而MVC的核心是由Servlet组件实现的。来自前端的每一个HTTP请求发送到后台,经过解析后找到相应的方法,然后根据请求的参数和解析结果调用相应的实体类和分层实现获取需要的结果,结果返回后,前端JSP完成业务处理,这样的模式我们就称为 MVC 模式[7]。
随着时代的持续发展,上面的业务逻辑又不够用了,新的持久层数据处理和缓存数据处理成为新的技术发展瓶颈,为了解决这些问题和促进新技术的发展,一个新的MVC方案顺应时代的发展而出,这个新方案就是SpringMVC。
SpringMVC将各层次的代码模块化,接口化,隐藏功能的具体实现方案,并且实现了停过注解声明的方式解决以前遗留的问题,通过自动装载可以很简单的创建一个具体的实现,并完成业务逻辑,大大提高互联网系统的性能,并且结构松散,而且可以和跟它同一个团队出品的 Spring 完美的集成在一起,所以很快的成为当今最火热的视图管理框架。
Spring MVC是组件式的,它的内部有很多的组件,我们实现业务逻辑时需要用哪个就取用哪个组件。究其核心,其内部主要的有5大核心的组件,基本上每个项目都比用,分别是:控制前端请求进入的DispatcherServlet;负责前端请求控制接口和请求进入的控制器Controller;解析前端请求方法路径和参数信息,并根据这些HTTP协议携带的信息调用程序模型的映射型组件解析器HandlerMapping;负责代码实现业务逻辑,并完成逻辑调用和业务逻辑结果组合的模型控制器ModelAndView;最后就是将代码业务逻辑生成的结果返回给前端页面和管理项目中前端页面的ViewResolver。
SpringMVC的执行过程如下图2-1所示:
图2-1 SpringMVC分析图
mybatis是现在绝大多数java项目的必用框架,是当今最火热的半自动化的SQL语句模板引擎,在解决数据库范式带来的问题和提升数据库表扁平化的角度上起了很大的作用。在我的了解中,现在很多人摈弃数据库范式的关联关系,大量使用冗余数据,这就给半自动化的mybatis发展起了很大的发展作用。
mybatis是用来解决MVC中的持久数据库层问题的解决方案,它是一个组件,开发时我们也要以组件的方式去引用它,并且它可以被集成进入Spring管理,只要引入了它并一键开启,除了SQL外我们都不用管,但是SQL语句本身我们还是要自己来编撰的,所以mybatis是一个半自动的SQL语句处理框架,这给我们开发实现过程化中优化SQL语句,提升服务的整体性能提供了很大的帮助[6]。
SpringBoot也是由Pivotal团全新开源的轻量级框架,通过简化配置来进一步简化了Spring应用的整个搭建和开发过程,另外SpringBoot通过集成大量的框架使得依赖包的版本冲突,以及引用的不稳定性等问题。
Shiro给我们提供了一整套的请求过程角色面向系统安全的开源框架,功能强大,并且可以通过配置文件或者重写主要类的方式扩展它干净它的应用,非常灵活,我们可以用它处理系统中身份认证,授权,企业会话管理和加密的问题。
Shiro 视图在所有应用程序环境下实现这些目标——从最简单的命令行应用程序到最大的企业应用,不强制依赖其 他第三方框架,容器,或应用服务器。当然,该项目的目标是尽可能地融入到这些环境,但它能够在任何环境下立即可用,并且Shiro框架大大的掩盖了复杂安全校验复杂地方,露出一个干净而直观的API,来简化开发人员在使他们的应用程序安全上的努力。
Mysql是由Apache公司提供的一款开源的数据库管理系统,其功能非常强大,提供了多种数据库存储引擎,各引擎各有所长,适用于不同的应用场合,用户可以选择最合适的引擎以得到最高性能,可以处理每天访问量超过数亿的高强度的搜索 Web 站点,并且支持事务、视图、存储过程、触发器等。
在 MySQL 中,使用了极快的 B 树磁盘表(MyISAM)和索引压缩,通过使用优化的单扫描多连接,能够极快地实现连接;SQL 函数使用高度优化的类库实现,运行速度极快。MySQL 为各种流行的程序设计语言提供支持,为它们提供了很多的 API 函数,包括 PHP、ASP.NET、Java、Eiffel、Python、Ruby、Tcl、C、C++、Perl 语言等。并且Mysql具有哼的安全性,它可以灵活和安全的权限与密码系统,允许基本主机的验证,连接到服务器时,所有的密码传输均采用加密形式,从而保证了密码的安全。Mysql还有很大其他的优点,比如有很强大的内置函数,表空间容量大,开发成本低,适用性很广等等。所以我们本课题选择mysql作为数据库管理器[10]。
Thymeleaf的主要目标是提供一个以优雅的高可维护型的方式创建模板,为了达到这个目的,他建立了自然模板的概念,以一种不影响模板设计原型的方式将逻辑注入到模板文件中,可以显著的减少设计和开发之间的沟通成本。
本系统设计将用户角色权限分配为3种,分别是:管理员,教师和学生。按照各个角色权限和功能设计分配为具体的用户操作模块,具体需求分析如下图3-1所示。
图3-1 需求分析图
用户访问系统网络地址,服务器拦截用户访问请求,并交由shiro安全组件校验用户登录状态。若用户已经登录,直接进入主界面。若用户没有登录,服务器返回登录页面。
用户在登录页面输入自己的账号密码信息,点击登录按钮,前端将账号信息通过http协议上传到服务器,服务器查询数据库,并判断用户的角色权限,返回给用户相应结果。
若用户权限为管理员,服务器返回管理员操作界面。管理员用户可通过操作界面对学校组织架构,教师信息,学生信息,课程信息,教评问题等进行增删改查操作。并且管理员具有发布校园新闻功能,查看学生选课情况以及查看学生成绩和老师的教评成绩。
若用户权限为教师权限,服务器返回教师操作界面。教师用户可以通过自己教授的课程查看选自己课程的学生,可以给学生录入成绩。可以通过个人信息界面修改自己的个人信息。可以通过修改密码界面修改个人账号的密码信息。
若用户的角色为学生权限,服务器返回学生操作界面。用户可在网上选课正选处查看所有本专业待选课程并进行选课操作。如需退课,可以通过退课界面查看自己已经选修的课程并在该界面进行退课操作。可以在已修课程界面查询自己已经完结课程的成绩分数。可以在网上评教处对老师教学质量进行打分。可以通过个人信息界面修改自己的个人信息。可以通过修改密码界面修改个人账号的密码信息。
根据上述功能需求分析,本课题使用java作为本次课题落地技术实现的技术支撑。根据页面的动态效果和个人所学知识,采用jsp动态网页开发技术,JQuery以及bootstrap等前端开发技术作为前端页面展示效果的技术支撑。服务器后端采用当今比较火的Spring+SpringMVC+Mybatis框架作为主体框架,并结合shiro安全校验组件,servlet组件,druid组件等技术作为后端技术支撑。数据库选用免费开源易操作且功能完善的mysql数据库。采用tomcat服务器作为项目发布部署运行的服务器。
以上技术完整的搭建了一个从前端到后台在到数据库最后发布到服务器的项目。从技术层面上来分析,以上技术均是当前比较火热的前沿技术,而且技术成熟,用例很广,容易搭建,容易维护,所以在技术上本需求可行。
对于很多的教育机构,无论是大型的教育机构比如大学,技术学校等还是中小学的培训机构,都需求一个具有核心功能完善的学生课程管理系统。一个完善的学生课程管理系统给这些机构带来很大的办公高效性,极大的节省了一些事情上的时间成本。然而很多大型的学生课程管理系统很贵,而且有很多功能这些机构根本用不上,所以对于这些机构来讲,一个小而精悍,核心功能完善,成本不是很高的系统就成为了刚需,本系统给可以给这些机构带来整体的效率提升。就行上述功能分析的一样,无论从什么角色,本系统都能适应,而且开发成本低,实用性强,所以从经济实用性角度来说,本系统可行。
针对上述需求分析,设计系统数据库主要需求表如下:
sys_user用户表,用以存放系统各角色用户的账号信息。
teacher 教师,用来存放使用机构教师用户的信息。
student 学生表,用来存放使用机构的学生用户信息。
department院系信息表,用来存放使用机构的院系信息。
major专业信息表,用来存放使用机构的专业信息。
grade年级信息表,用来存放使用机构的年级信息。
classinfo班级信息表,用来存放使用机构的班级信息。
course 课程表,用来存放使用机构管理员添加的课程信息。
stu_course选课记录表,用来存放使用机构学生的选课信息。
sys_role 权限表,用来存放区分用户角色权限的权限信息。
用户账户信息如下表4-1所示:
表4-1 sys_user用户表
序号 |
列名 |
字段类型 |
长度 |
允许为空 |
备注 |
1 |
create_by |
varchar |
36 |
YES |
创建者 |
2 |
create_date |
datetime |
0 |
YES |
创建时间 |
3 |
del_flag |
tinyint |
1 |
NO |
是否删除 |
4 |
|
varchar |
200 |
YES |
邮箱地址 |
5 |
icon |
varchar |
2000 |
YES |
图标 |
6 |
id |
varchar |
36 |
NO |
用户ID |
7 |
is_admin |
tinyint |
1 |
YES |
是否为管理员 |
8 |
locked |
tinyint |
1 |
YES |
是否锁定 |
9 |
login_name |
varchar |
36 |
YES |
登录名 |
10 |
nick_name |
varchar |
40 |
YES |
昵称 |
11 |
password |
varchar |
40 |
YES |
密码 |
12 |
remarks |
varchar |
255 |
YES |
备注 |
13 |
salt |
varchar |
40 |
YES |
shiro加密 |
14 |
tel |
varchar |
11 |
YES |
手机号码 |
15 |
update_by |
varchar |
36 |
YES |
更新者 |
16 |
update_date |
datetime |
0 |
YES |
更新时间 |
教师信息表下表4-2所示:
表4-2 teacher 教师表
序号 |
数据类型 |
字段类型 |
长度 |
允许为空 |
备注 |
1 |
tid |
int |
11 |
NO |
唯一标识 |
2 |
tchid |
varchar |
20 |
NO |
唯一标识 |
3 |
tname |
varchar |
20 |
NO |
教师名称 |
4 |
tgender |
varchar |
20 |
NO |
教师性别 |
5 |
tbirthday |
date |
0 |
NO |
教师生日 |
6 |
pid |
int |
11 |
NO |
唯一标识 |
7 |
tnation |
varchar |
50 |
NO |
民族 |
8 |
tcardid |
varchar |
50 |
NO |
身份证号码 |
9 |
tphone |
varchar |
50 |
NO |
手机号 |
10 |
taddress |
varchar |
200 |
NO |
家庭住址 |
11 |
entertime |
date |
0 |
NO |
入职日期 |
12 |
leavetime |
date |
0 |
YES |
离职时间 |
13 |
tchstate |
int |
11 |
NO |
状态 |
14 |
is_del |
int |
11 |
NO |
删除标志 |
学生信息表下表4-3所示:
表4-3 student 学生表
序号 |
数据类型 |
字段类型 |
长度 |
允许为空 |
备注 |
1 |
sid |
int |
11 |
NO |
唯一标识 |
2 |
stuid |
varchar |
20 |
NO |
学号 |
3 |
sname |
varchar |
20 |
NO |
学生姓名 |
4 |
sgender |
varchar |
20 |
NO |
学生性别 |
5 |
sbirthday |
date |
0 |
NO |
学生生日 |
6 |
pid |
int |
11 |
NO |
唯一标识 |
7 |
snation |
varchar |
50 |
NO |
民族 |
8 |
scardid |
varchar |
50 |
NO |
身份证号码 |
9 |
sphone |
varchar |
50 |
NO |
手机号 |
10 |
saddress |
varchar |
200 |
NO |
家庭住址 |
11 |
entertime |
date |
0 |
YES |
入校日期 |
12 |
leavetime |
date |
0 |
NO\ |
离校日期 |
13 |
stustate |
int |
11 |
NO |
状态 |
14 |
classid |
int |
11 |
NO |
班级唯一标识 |
15 |
is_del |
int |
11 |
NO |
删除标志 |
学校院系表如下表4-4所示:
表4-4 department院系表
序号 |
数据类型 |
字段类型 |
长度 |
允许为空 |
备注 |
1 |
did |
int |
11 |
NO |
唯一标识 |
2 |
dname |
varchar |
50 |
NO |
学院名称 |
3 |
dcount |
int |
11 |
NO |
排序 |
4 |
is_del |
int |
11 |
NO |
删除标志 |
学校专业表下表4-5所示:
表4-5 major 专业表
序号 |
数据类型 |
字段类型 |
长度 |
允许为空 |
备注 |
1 |
mid |
int |
11 |
NO |
唯一标识 |
2 |
mname |
varchar |
50 |
NO |
专业名称 |
3 |
mcount |
int |
11 |
NO |
排序 |
4 |
did |
int |
11 |
NO |
学院id |
5 |
is_del |
int |
11 |
NO |
删除标志 |
学校年级表下表4-6所示:
表4-6 grade 年级表
序号 |
数据类型 |
字段类型 |
长度 |
允许为空 |
备注 |
1 |
gid |
int |
11 |
NO |
唯一标识 |
2 |
gname |
varchar |
20 |
NO |
年级名称 |
3 |
gcount |
int |
5 |
NO |
排序 |
4 |
mid |
int |
11 |
NO |
专业id |
5 |
is_del |
int |
11 |
NO |
删除标志 |
学校班级表如下表4-7所示:
表4-7 classinfo 班级表
序号 |
数据类型 |
字段类型 |
长度 |
允许为空 |
备注 |
1 |
classid |
int |
11 |
NO |
唯一标识 |
2 |
classname |
varchar |
50 |
NO |
班级名称 |
3 |
begintime |
date |
0 |
YES |
开班时间 |
4 |
endtime |
date |
0 |
YES |
停班时间 |
5 |
ccount |
int |
11 |
NO |
排序 |
6 |
gid |
int |
11 |
NO |
年级id |
7 |
is_del |
int |
11 |
NO |
删除标志 |
学校课目表如下表4-8所示:
表4-8 course 课目表
序号 |
数据类型 |
字段类型 |
长度 |
允许为空 |
备注 |
1 |
cid |
int |
11 |
NO |
唯一标识 |
2 |
cname |
varchar |
200 |
NO |
课程名称 |
3 |
ccredit |
decimal |
9 |
NO |
学分 |
4 |
cperiod |
decimal |
9 |
NO |
学时 |
5 |
cstate |
int |
11 |
NO |
状态 |
6 |
cselcount |
int |
11 |
NO |
排序 |
7 |
cmaxcount |
int |
11 |
NO |
最多选课人数 |
8 |
studytype |
varchar |
10 |
NO |
课程类型 |
9 |
ctid |
int |
11 |
NO |
教师id |
10 |
mid |
int |
11 |
NO |
专业id |
11 |
is_del |
int |
11 |
NO |
删除标志 |
学校课目表如下表4-9所示:
表4-9 stu_course选课表
序号 |
数据类型 |
字段类型 |
长度 |
允许为空 |
备注 |
1 |
scid |
int |
11 |
NO |
唯一标识 |
2 |
sid |
int |
11 |
NO |
学生id |
3 |
cid |
int |
11 |
NO |
课目id |
4 |
is_del |
int |
11 |
NO |
删除标志 |
角色权限表如下表4-10所示:
表4-10 sys_role 选课表
序号 |
数据类型 |
字段类型 |
长度 |
允许为空 |
备注 |
1 |
id |
varchar |
36 |
NO |
唯一标识 |
2 |
name |
varchar |
40 |
YES |
角色名称 |
3 |
create_date |
datetime |
0 |
YES |
创建日期 |
4 |
create_by |
varchar |
36 |
YES |
创建者 |
5 |
update_date |
datetime |
0 |
YES |
更新日期 |
6 |
update_by |
varchar |
36 |
YES |
更新者 |
7 |
remarks |
varchar |
255 |
YES |
备注 |
8 |
del_flag |
tinyint |
2 |
YES |
删除标志 |
基于以上数据库表的字段设计,安装mysql数据库设计三范式的要求,将各个数据库表通过主外键管理起来,完成数据库的约束条件和调整数据库一对一和一对多的关系,具体表现如下图4-1所示。
图4-1 数据库逻辑图
根据系统需求分析系统分为4个大的模块,这4个模块分别是:登录模块,管理员模块,教师模块和学生模块。
登录模块具体流程如下图5-1所示:
图5-1 登录模块流程
用户在PC端浏览器上输入网络地址,服务器拦截到用户访问后检测用户访问连接携带的session信息。若用户没有登录,session为空,服务器返回给用户登录界面。若用户携带有session信息,并和服务器存储的session值一样,服务器返回给用户指定界面。注意session是有存活时间到的。
用户获取到服务端返回的登录界面后,在登录界面输入自己的账号信息,点击登录按钮发送post请求到后台,经由shiro安全校验后返回前端页面。
登录界面如下图5-2所示:
图5-2 前端登录页面
管理员模块具体流程如下图5-3所示:
图5-3 管理员模块流程图
如图5-3所示,管理员登录成功后服务器转发路径信息到管理员主界面,管理员可以执行选课管理、教评管理、校建管理、教师管理、学生管理、课程管理、成绩管理、校园新闻、系统管理等功能。
系统管理包括两部分:权限管理,用户管理。权限管理作用:统一管理系统菜单,便于划分角色权限。系统菜单可添加多级,前端页面展示采用树结构进行展示,层次分明,利于查看。界面显示效果如下图5-4所示:
图5-4 权限管理界面
用户管理可增删改查教师、学生、管理员三种角色的后台管理人员。界面显示效果如下图5-5所示:
图5-5 用户管理界面
校建管理流程:创建系部 → 创建专业 → 创建年级 → 创建班级
学校等机构初次使用该系统时,需使用管理员账号依照该流程完善组织架构后方可添加课程,教师及学生等数据。
系部管理:院系的增删改查,展示信息有系部编号,系部名称,系部人数。具体界面如图5-6所示:
图5-6 系部管理界面
专业管理:专业的增删改查,展示信息有专业编号,专业名称,所属系部,专业人数。具体界面如图5-7所示:
图5-7 专业管理界面
年级管理:年级的增删改查,展示信息有年级编号,年级名称,所属专业,所属系部,年级人数。具体界面如图5-8所示:
图5-8 年级管理界面
班级管理:班级的增删改查,展示信息有班级编号,班级名称,所属年级,所属专业,所属系部,班级人数。具体界面如图5-9所示:
图5-9 班级管理界面
管理员用户完善组织架构后,可进入课程管理中添加各专业科目,科目分为三种类型:专业基础课、公共课、任选课。添加课程时,需录入本课程的学时、学分及最大选课人数等数据。课程管理界面如图5-10所示:
图5-10 课程管理界面
教师管理模块流程:录入教师 → 教师授课管理
管理员录入教师信息时需要录入教师姓名,政治面貌,汉族,身份证号,手机号等信息。其中对身份证号与手机号进行了格式校验,如果格式不正确则不能录入成功。教师录入成功后在教师信息查询中显示教师工号即教师登录账号,密码为教师身份证号后6位。教师录入界面如图5-11所示:
图5-11 教师录入界面
教师录入后,进入教师授课管理,点击选课选择系别、专业、年级、班级、课目信息,提交后该教师绑定该课程。教师选课界面如图5-12所示:
图5-12 教师选课界面
管理员录入学生信息时需要填写基本信息及入班信息。基本信息包括学生姓名,政治面貌,汉族,身份证号,手机号等;入班信息包括系部,专业,年级,班级。其中对身份证号与手机号进行了格式校验,如果格式不正确则不能录入成功。学生录入成功后在学生信息查询中显示学生学号即学生登录账号,密码为学生身份证号后6位。学生录入界面如图5-13所示:
图5-13 学生录入界面
管理员可在学生信息查询处修改学生信息及对学生进行退学处理,退学后的学生信息可在退学信息中查看。
学生在学生选课系统选课后,管理员可在选课管理模块进行查看,如果学生错选或误选,管理员可进行强制退课及换课。选课管理界面如图5-14所示:
图5-14 选课管理界面
管理员可进入教评管理模块添加教评问题,汇总后的教评问题会发布到学生端展示。学生可根据管理员发布的教评问题对各科教师进行评分。每个教师将会得到一个最终分及平均分供学校参考。教评管理界面如图5-15所示:
图5-15教评管理界面
成绩管理分为两部分:教师成绩和学生成绩。教师成绩显示每学期教师的教评得分,学生成绩显示每学期各科成绩,学分等信息。学生成绩界面如图5-16所示:
图5-16学生成绩界面
管理员可在校园新闻发布新闻模块,发布学校时事,通知公告等。发布后将会在登录界面展示,便于全体师生查阅。发布新闻界面如图5-17所示:
图5-17校园新闻界面
教师模块具体功能如下图5-18所示:
图5-18 教师模块功能图
如图13所示,教师登录成功后服务器转发路径信息到教师端主界面,教师端分为4个功能模块:学生管理,成绩管理,个人资料,修改密码。教师可在成绩管理中录入学生平时成绩及考试成绩,成绩录入界面如下图5-19所示:
图5-19成绩录入界面
在学生管理模块中教师可以根据班级、年级、学生姓名进行学生成绩查询,可以对学生成绩进行修改。学生成绩界面如下图5-20所示:
图5-20 成绩管理页面
教师点击右上角个人资料,进入到个人资料展示和修改界面,教师可以在本界面修改和完善个人信息,昵称、手机号码、邮箱、自我介绍等用户数据,并通过ajax提交到后台保存到数据中。教师个人资料界面如下图5-21所示:
图5-21个人资料页面
学生模块具体功能如下图5-22所示:
图5-22学生模块功能图
如图5-22所示,学生用户登录成功后服务器转发路径信息到学生端主界面。学生端分为5个功能模块:网上选课,网上教评管理,成绩管理,个人资料,修改密码。
网上选课中正选中显示该学生可选所有课程信息,课程信息界面如下图5-23所示:
图5-23课程正选信息页面
如上图所示,点击添加按钮,执行学生选课操作。若学生已经选过该课程,提示学生已经选过该课程。若没有,将该学生选课记录保存到数据库中持久化保存。
点击打印按钮,打印所有课程信息,打印按钮执行效果页面这里不加以展示。
点击导出按钮,导出所有课程信息,导出格式有Excel及Csv文件两种。
点击左侧菜单网上选课-退课,进入已选但还没有修完的课程信息界面。界面效果如下图5-24所示:
图5-24课程退选信息页面
如上图所示,点击退课按钮,执行学生退课操作。点击打印按钮,打印已经选择的所有课程信息。点击导出按钮,导出所有课程信息,导出格式有Excel及Csv文件两种。
点击左侧菜单成绩管理-成绩查询,进入已经修完并且经过评分的课程信息界面。已修课程页面包含了学生已经被教师评分的课程信息,具体信息包含了课程名称,学分,课程类别和成绩信息及已获得总学分等。具体界面效果如下图5-25所示:
图5-25 成绩管理信息页面
点击左侧菜单网上教评,展示学生各科教课老师信息,课程名称等。点击立即评价对老师本学年教学质量进行评价。具体界面效果如下图5-26所示:
图5-26网上评教信息页面
学生点击右上角个人资料菜单,进入到个人资料展示和修改界面,学生可以在本界面修改和完善个人信息,昵称、手机号码、邮箱、自我介绍等用户数据,并通过ajax提交到后台保存到数据中。学生个人资料界面如下图5-27所示:
图5--27个人资料页面
结束语
本文介绍了基于java的学生课程管理系统,采用目前市场上流行的springboot框架进行搭建,采用B/S架构对系统进行设计,采用shiro安全校验框架对系统的整体安全性能进行提升,使系统更加适用于需求明确且不复杂的教育机构。总体上来说,系统的结构还是比较完善的,各个角色的权限功能简洁方便,没有用不上的功能,但是还是有好多不尽人意的地方,本系统还是可以继续扩展增加功能的。比如说加上新闻,文档库,图书馆,网课等,介于个人能力以及设计的时间有限,本设计仅实现适用于教育机构学生管理系统的核心功能,这些扩展功能就不一一的加入进来了。
通过本项目的开发,自己从中也学习到了java开发很多的知识,比如说springboot框架的搭建,数据库的设计,开发方案的确定,需求的分析等等这些问题,对自己的技术提升有很大的帮助。同时我在开发过程中也遇到很多的难题,比如说mybatis编写xml文件完成dao层的映射,手动编写sql语句,优化sql,设计数据库之间的关联等,通过解决这些问题我也意识到自己的能力点,然后有针对性的加强这些方面的学习。
希望自己以后能够做出更加完善的项目,一步步的解决这些问题,为教育行业高效率的处理这些业务逻辑尽出自己的一份力。
参考文献
致谢
时间过得确实快,四年一下就过去了,好多时候我甚至感觉自己还是一个刚上大学的学生。大学四年里,经历了很多的人和事,很多人对我都很好,教我做人做事的方法和原则,很感谢他们帮助了我成长。很感谢我的老师们,是你们教会了我学习的本领,让我学习到很多的知识。从选题至今,碰到过很多的难点和疑问,经过老师的指导以及同事的帮助,我完成了这次毕业设计。
不管怎么说吧,大学四年匆匆过去了,留下的不仅仅是宝贵的知识财富还有很多美好的回忆。和老师及同学们一起拼搏的日子,我永远都不能忘怀。衷心感谢学院的各位老师们,谢谢大学四年有您们的关照,你们辛苦了!