基于 Java(SpringBoot+SSM)+MySQL 实现的(Web)高校成绩分析与管理系统【100010579】

基于 B/S 架构的高校成绩分析与管理系统的设计与实现

第一章 绪论

学生的不断增多,学生的考试管理也增大了教师的负担,现社会尚存的系统功能简单,且缺少分析功能导致学生不能及时了解学生成绩趋势。针对相同课程不同专业成绩情况,系统提供了成绩对比功能,能更好的展示不同专业相同课程成绩的差异。教师还可以了解课程成绩正态分布,了解学生考试成绩分布情况,在线查看课程等功能。

现阶段学生的成绩管理还处于信息半自动化的状态,这种信息半自动化的成绩管理系统已无法满足针对教师对学生成绩的管理与分析学生成绩的问题,为了提高教师对学生成绩的管理效率,减少繁琐的人工管理步骤,能实时监控学生考试动态及趋势分析,可查看同一课程不同专业成绩对比情况,对成绩的正态分布直观浏览,可批量管理用户和成绩信息操作,所以急需开发一款功能完善且实用的成绩管理系统。

1.1 研究背景

目前来说,很多学校对学生成绩的管理尚还处在信息半自动化的操作的状态。这样势必会造成资源浪费,而且有一部分的成绩分析还是需要人工进行操作,错误的机率也是比较高的,人为因素的影响也是非常大的。对于分析一个学生的成绩趋势和学生成绩的正态分布是个模糊的概念,没有一个能够直观的判断出学生最近的学习情况和对学生成绩进行分析展示的平台。

1.2 国内外发展现状

随着网络技术的发展与普及,高等院校普遍对学生考试成绩重视,对学生成绩的管理工作也得到了极大的挑战,成为了重要教学任务之一。

最早成绩管理系统主要立足于学校对学生的成绩管理上,不侧重对学生成绩趋势分析,不能及时发现学生最近的学习状况,更不能了解学生成绩分布和实现不同专业相同课程成绩之间的对比。近几十年,只有小部分公司开发出了成绩管理系统。而这些系统还未占有市场,且功能较为单薄,不具有针对成绩趋势分析能力,只是对成绩进行简单的管理功能。

针对现存问题,人们迫切要求利用网络技术进行管理,以快捷方便的有效的管理模式下,提高工作效率。同时,也可以提高学生的学习质量,激发学生的学习动力。为顺应时代发展,于是开发出了分析型成绩管理系统。

1.3 主要研究内容

分析型成绩管理系统主要解决了高校教师对学生成绩的上传、修改、查看班级内学生的排名情况和系统对学生的近期成绩分析呈现的趋势图进行查看,实现不同专业相同课程成绩对比情况的查看,浏览学生成绩的正态分布情况,系统还提供了课程表的功能。管理员主要维护系统信息,对系统用户的管理,提供可批量操作功能,对用户信息可批量导入导出,设计与实现一款极其人性化的管理系统。

教师可对学生成绩进行编辑,可从系统中导入导出 Excel 中以便批量管理,可将录入好的 Excel 表格文档导入到系统进行分析,针对学生成绩进行排名,系统智能分析每个学生每次考试成绩,将成绩以折线图的形式展示出来。系统将学生成绩进行分析处理,展示出学生成绩正态分布图的效果,针对不同专业相同课程的成绩对比情况查看,有效提高教师对成绩情况的了解与知情。教师对学生成绩的管理不局限于办公室,可在家通过网络办公,实时更改学生成绩信息,有效的提高了教师工作效率和解决了对成绩管理的局限性问题,进一步对学生成绩管理加以完善。教师还可以查看自己的授课安排,合理安排时间备课,极大提高了教师在教学工作中的工作效率和课堂效率。

批量导入功能的实现采用阿里开源框架 EasyExcel 框架进行解析,主要是通过导入文件流来读取文件内容,导入的文件需要遵循一定格式系统才可正确读取文件内容,通过对文档的逐行读取,解析内容,将所需数据插入到对应的数据库中。批量导出功能使用 layui 框架本身包含组件来完成,将勾选的内容读取并输出到 Excel 中,方便用户查看获取。

分析结果趋势图、成绩正态分布图和成绩对比结果图主要使用 ECharts 折线图来实现,通过官方案例,赋值给相应的 X 轴、Y 轴对应的 JSON 串格式的数据即可。后台根据查询条件,组装结果集,将数据封装成相应的 JSON 格式数据发送到前端展示。

学生可以通过系统了解自己的考试成绩和成绩趋势,通过查看系统对成绩的分析结果来判断自己学习状态和近期境况,还可以通过查看所在班级的排名进行判断自己的学习情况。对于学生课程安排情况,学生也可通过系统进行查看。

第二章 系统开发环境简介

2.1 开发环境及工具简介

系统采用 Java 语言开发,使用的 IDE 为 Eclipse,Eclipse 为使用 Java 语言开发的开源开发工具[4],针对不同语言和不同环境,Eclipse 几乎都有相应的版本和对应的集成环境。开发 Java 环境为 JDK1.8,系统采用 B/S 架构开发,使用的服务器为 Tomcat8.5。

Eclipse 最早为 IBM 开发的商业软件,使用 Java 语言开发的 Java 集成开发环境,后来 IBM 把 Eclipse 贡献给开源社区来维护,成立了 Eclipse 基金会,一时间吸引了众多开发者们的关注,众多的开发者对 Eclipse 功能不断完善,使 Eclipse 变成了功能强大、覆盖语言众多的集成开发环境,具有便捷的快捷键和联想功能,受到了广大开发者的青睐,逐渐让 Eclipse 使用者增多。

Tomcat 是由 SUN 公司设计开发的 Web 应用服务器,后来贡献给了 Apache 基金会[6],由于有 SUN 公司的支持,Tomcat 对于很多新特性都能及时的支持,不断的 Web 开发者渐渐增多,成为了 JavaEE 开发者们的青睐[6]。现在也有很多比较规模比较大的,且并发量较高的公司在使用 Tomcat。Tomcat 成为了越来越受欢迎的 Web 应用服务器。

2.2 Java 语言简介

Java 最早所属公司为 SUN 公司开发的,后来被 Oracle 收购,收购后 Oracle 对 JDK 具有较大更新,不断的优化和增加 Java 语言开发功能和特色。Java 是一种跨平台的开发语言,提出了“一处开发,到处运行”的理念[10],广受开发者们的青睐,Java 开发者不断的增加,成为了近几年最受欢迎的语言,Java 拥有庞大的开发者群体,经过市场上的摸爬滚打,不断成为编程语言之首。

Java 在服务器开发拥有较大的优势,因为 Java 性能稳定,且具有强大的工具包,针对 Web 开发也有非常多的框架,例如 Struts、SpringMVC、Spring、Hibernate、MyBatis 等框架,这些框架简化了开发者的开发维护和拓展功能工作,极大的缩短了 Web 后端开发周期,导致 Java 具有庞大的用户群体。

2.3 SpringBoot+SSM 框架简介

JavaWeb 从一开始的 Servlet+JSP 开发,后来提出了 MVC 模式,通过分层来简化模块开发,对于维护项目和开发工作都有较大的改善。后来有了针对 MVC 设计模式的分层框架,SpringMVC 是针对于控制层,也就是 Controller 层的框架,Spring 框架和 MyBatis 框架属于 Model 层,View 层为视图层,展示给用户的界面,例如 HTML 界面等。

SpringMVC 框架主要是控制层请求的框架,是基于 Servlet 开发的轻量级框架,能够和 Spring 框架进行无缝整合。框架支持国际化、格式化转换、类型自动转换等功能,提供了丰富的控制层所用的功能。

MyBatis 框架为业务层之后的持久层,主要作用是操作数据库,是轻量级持久层框架。相对于 Hibernate 框架有很多优点,Hibernate 是一个相对重量级的持久层框架,对于 MyBatis 它是一个完全面向对象自动化的框架。MyBatis 上手快,使用简单,也是目前企业中使用的最多的持久层框架,极大的简化重复连接、断开连接操作过程,使用动态代理技术完成数据库操作的框架,也有较多的基于 MyBatis 的工具框架,丰富了框架的功能、简化了开发流程,促使 MyBatis 成为当前较为流行的持久层框架。

2.4 MySQL 数据库简介

MySQL 数据库是一款体积较小、开源且拥有数据库必需的功能[5],相对于 Oracle、SQLServer 数据库也毫不逊色,由于 MySQL 是一款免费的数据库软件,所以使用者也是非常之多,对于 Oracle 可以完成的功能和性能,企业都可以通过硬件和优化来实现,通过 MySQL 集群来提高数据库性能。MySQL 可以较少商业公司的成本支出,对于研究和学习都有很好的用途。MySQL 作为免费开源的数据库之首,在国内外都有很高的知名度,且用户群体也是相当之大,可以完美支持一个中小型网站的数据仓库,大型网站也可以采用 MySQL 集群的方式来支持,减少每个数据库的压力。MySQL 支持常用平台,例如 Linux、Windows、Mac 等操作系统都有相应的版本支持,对于不同平台的兼容性都很好。所以 MySQL 也是本次毕业设计项目高效成绩分析与管理系统的首选数据库。

第三章 系统分析

系统分析是设计系统和系统实现的基本条件,其主要是从系统用户的角度和用户的需求对系统需求彻底的分析和设计[1]。系统分析是对系统进行充分了解和设计实现系统不可或缺的过程,把复杂的系统通过分析来找出问题并解决问题,得到的结论和设想,并提出准确且有效的解决方案。

3.1 系统目标

本系统通过深入调查现在我国高校成绩管理业务和管理工作流程,最终确定了该系统的详细需求。通过本系统不但减少了教学成本的支出,而且便于学校及教师对学生成绩进行管理和分析学生成绩。本系统主要适用考试成绩管理需求的高校,为有学校管理成绩与教师分析学生成绩提供了极大的便利。

3.2 系统的需求分析

在软件设计中比较关键的一步就是需求分析,只有通过需求分析了解到用户的需要,才能设计出令用户满意的软件[1]。需求分析有利于减少软件成本,在需求分析过程中往往会发现系统不足,还可充分了解明确系统的需求功能,从而增加系统设计和开发过程中的效率。需求分析从以下两方面进行分析。

3.2.1 性能需求分析

系统的性能需求分析可以从性能、安全性、可靠性、易用性、兼容性、可移植性和可扩展性可维护性七方面进行分析[1],分析如下。

(1) 性能

系统配置的硬件环境应该高于系统必须要求的最低标准,系统运行时应有足够空间和完善的配置[1],以便能够充分发挥系统运行时的性能。

(2) 安全性

对于用户信息的安全保密,系统会保证用户的密码采用加密形式存储,在未登录未授权未系统认证通过的用户不可访问浏览系统内部数据,保证用户信息的安全。通过权限控制的方式限制角色拥有的权限,进而控制用户的功能,保证系统数据安全。

(3) 可靠性

当任何用户在任何时间访问系统时,系统都可以使用并能准确无误的完成操作,所有功能保持可用状态,保证用户随时访问。

(4) 易用性

对于学生或老师登录后,系统会提供一个简单舒适的页面效果,针对布局满足了人性化设计,能够让用户上手即可熟练操作,产品的设计充分考虑到了使用者的习惯,能够让用户很容易的上手操作。

(5) 兼容性

系统服务采用 Java 语言开发,所谓一处编译到处运行的理念,可以运行在 Linux、Windows、Mac OS 等可安装 Java 虚拟机的平台上,对于提供的服务是一样[4]。

用户在使用过程中可能会习惯于不同的浏览器,对于兼容不同的浏览器,系统需要支持主流浏览器的使用。

(6) 可移植性

由于 Java 开发系统可以跨平台使用,所以对于不同平台部署时,计算机的配置不尽相同,所以只需修改 Java 虚拟机的内存配置参数即可完成部署,可移植性良好。

(7) 可扩展可维护性

系统服务层采用接口与实现类的形式开发,对于后期要扩展相应的功能只需实现相应的接口编写对应的实现类接口,有效的降低了代码的耦合性,对系统的可扩展提供了保障。

系统中添加了日志跟踪,对于运行时可能会出现系统异常通过日志跟踪记录即可定位到异常的代码段,修改后重新部署到服务中,即可完成对系统的修复和改进。

3.2.2 功能需求分析

系统的主要功能主要是实现了管理员管理系统的基本信息,教师对学生信息的维护,学生查看和维护个人信息等功能,下面针对这三个身份登录后的功能来分析,分析如下:

(1) 管理员登录功能分析

管理员维护教师、学生用户信息,对学生成绩的上传和查看,成绩单的导入导出。可以查看指定学生的学习情况。可查看不同专业相同课程成绩对比结果,还可查看不同年级之间成绩对比情况。可通过成绩正态分布图可直观了解学生成绩分布情况,课程模块则可以对课程进行管理,安排课程学习周数和周长。管理员可维护系统的基础信息,例如学院专业班级信息、用户信息、角色权限信息、系统监控信息等功能。

系统管理员拥有系统的所有权限。

(2) 教师登录功能分析

教师登录后可以对所授学生进行管理,主要是对学生成绩的维护管理等功能,可以查看班级内学生的排名情况,对指定学生成绩查看分析结果,通过分析结果进行因材施教。可查看本专业学生成绩分布图,快速了解学生成绩情况,可对比指定课程不同专业之间成绩差异情况。教师还可以对课程进行查看,可查看自己所授课程和所在专业的课程,方便教师能更好的合理安排时间备课。

(3) 学生登录功能分析

学生登录后可以查看自己的考试成绩,并可以浏览所在班级内的排名和其他同学的成绩,系统会通过成绩分析生成学生成绩趋势图,学生可以通过浏览自己的成绩趋势图来判断自己的学习状态。学生可查看本班级课程表。

3.3 可行性分析

(1) 技术可行性研究

由于系统主要面向的是学校的学生,所以对系统的并发要求不是太高,所以对服务器的性能要求不高,对于一般的服务器即可能承受住访问,所以硬件条件要求不是太高。

使用现在 B/S 架构主流的 SpringMVC、Spring、MyBatis、SpringBoot 等框架开发,使用 Druid 连接池,使用框架极大的提高了开发效率,对后期维护有很大帮助。系统对成绩分析功能实现主要使用百度的 ECharts 实现折线图来展示成绩趋势图、成绩对比图和成绩分布图。批量导出使用 layui 内嵌组件实现文件的导出功能。批量导入实现使用阿里的 EesyExcel 工具实现,在 Apache 开源 POI 解析 Excel 基础上做了进一步优化,完美实现批量导入用户和成绩信息的功能。

综上所述,该系统的设计开发完全符合用户需求,技术上能够达到功能上和性能上的需求[12],在技术上是可行的。

(2) 经济可行性

系统适合大多数学校使用,且大大提高了工作效率,主要体现在以下几个方面:

首先,该系统的运行可以代替人工减少许多重复和复杂的工作;

第二,系统的运行可以节省大量的费用及时间;

第三,现学校经济条件较优越,办公电脑普遍;

因此,本系统在经济上是可行的。

(3) 社会可行性

学生人数也逐年增加,学校的管理工作日益繁多,学生成绩管理涉及到大量的数据处理,针对学生成绩趋势分析需要有新的突破,迫切需要一个分析型成绩管理系统来完成这项工作。

第四章 系统设计

4.1 系统设计原则及目标

分析型成绩管理系统主要为了解决学校管理学生成绩问题,为了提高学校教师工作效率,实时查看分析学生成绩趋势,学校对学生成绩达到统一管理的目的。严格按照软件工程学步骤进行系统设计,通过系统设计提高系统实现效率与质量。

4.2 系统架构设计

系统采用 B/S 架构实现,使用应用服务器 Tomcat 部署,前端采用 layui 实现,后端使用 SpringBoot+SSM 框架开发,数据库连接池使用 Druid 框架,前后端分离思想开发。

分析型成绩管理系统主要分为三个身份,管理员、教师、学生,不同身份权限不同,采用 Shiro 框架实现权限控制功能。前后端交互使用异步请求方式实现,提高用户体验度。

4.3 系统功能模块设计

分析型成绩管理系统是根据角色不同来划分的功能模块,每个角色有不同的功能。因此,一个功能完善、满足基本需要的学生成绩管理系统需要包含管理员功能模块、教师功能模块和学生功能模块。系统的功能结构图,如图 4-1 所示。

图 4-1 系统功能结构图

系统所有有功能流程图,如图 4-2 所示。

图 4-2 系统功能流程图

4.3.1 用户管理

系统用户的管理可通过管理员和教师来操作,管理员可对系统所有用户进行管理,教师只可对本专业学生进行管理操作,系统提供批量操作功能,可批量导入导出用户列表,极大提高了用户管理工作的效率。

批量导出功能是通过前端框架 layui 自带组件实现,可选择性的导出所需数据到 Excel 文档中。批量导入功能使用 EasyExcel 工具来实现,导入文档只需按照一定格式编写,系统会自动识别内容,将内容记录逐条插入到数据库中,优化了管理工作中只可单条添加的局限性。

用户管理模块中,可查看指定学生的成绩趋势图,当点击指定用户时,系统通过获取用户编号来查询数据库,通过学生每学期的考试成绩计算出学生每学期的总成绩,通过 ECharts 来展现成绩趋势图。

4.3.2 成绩管理

管理员和教师可对成绩进行管理,管理员可管理所有专业的成绩,而教师只可管理本专业成绩。成绩管理提供批量导入导出功能,每一条记录都可点击查看详细信息。系统提供批量删除功能和成绩录入修改功能,优化了教师对学生成绩管理的流程。

批量导入的文档需要按照指定格式编写,系统会分析文档内容进行数据库录入,系统会将按照成绩排名展示成绩列表。可按照学号、姓名模糊搜索学生成绩,可通过学年、学期来筛选指定学生成绩。系统自动统计排名,可对录入好的成绩进行修改操作。

学生只可查看本班级同学的成绩和排名情况,教师可查看本专业的成绩,管理员可查看所有学生的成绩。成绩展示列表以每学期总成绩计算。

4.3.3 成绩分析

系统会将学生成绩通过每个学期考试成绩进行分析统计,根据每个学期考试成绩绘制折线图,很直观的展示出学生的趋势走向。

不同专业不同年级相同课程之间成绩对比的实现是通过柱状图的形式展示,直观了解到成绩的差异性,柱状图的值代表成绩的平均分,通过不同专业间平均分的高低来衡量成绩的差异。通过对比条件不同来筛选该课程不同条件下的平均成绩结果。

成绩的正态分布图的实现是通过指定专业班级课程信息来展示成绩的分布情况,使用柱状图与折线图的形式展示,不同分数段之间人数的差异与分布情况。通过每隔 10 分一组进行检索该成绩段的人数,响应数据并展示。

分析功能的图表主要使用 ECharts 工具完成,将后台响应数据填充到图表中进行展示。

4.3.4 课程管理

管理员可管理课程,指定专业班级填写课程名称即可添加课程信息,提供增、删、改、查等功能。课程主要涉及到的信息有所属学院、专业、班级、年级、学年、学期、课程名称等信息。

4.3.5 课程表管理

课程表根据设置的上课时间、教师、周数、节数来展示课程安排,可对已安排的课程进行编辑删除操作。

课程表展示 jQuery 插件 Timetables 实现,获取课程表数据通过查询数据库当前专业信息和周数来查询指定课程表数据,并展示到前端界面。

4.3.6 系统信息管理

系统信息包括学院专业信息、年级信息、角色权限信息、登录日志信息和系统监控进行管理维护。管理员可对系统信息进行维护管理,以便系统能够正常运行。

4.4 数据库设计

数据库技术是互联网必需的基础,也是互联网项目不可或缺的重要技术。数据库的诞生,大大提高了计算机操作复杂数据的效率,简化了数据管理的复杂度。数据库设计也是完成一个拥有可扩展性、易操作性的系统不可或缺的重要环节。

4.4.1 数据库设计步骤

数据库设计按照系统使用用户角色进行模块化分析,主要针对管理员、教师、学生身份进行逐个分析,不同身份不同权限,通过建立索引进一步优化数据库设计。

针对以上涉及的表进行概念上和逻辑上的分析,完成对表间的关系及表内的字段进行分析。不断完善数据库设计,从而能够更顺利的支持成绩管理系统的开发工作。

4.4.2 数据库概念设计

(1) 系统用户、成绩、课程之间是有联系的,三者关系为一对多。关系如图 4-2 所示。

图 4-2 用户成绩课程关系图

(2) 系统用户、学院专业班级、年级之间是有联系的,学院专业班级与系统用户是,一对多的年级与系统用户是一对多的关系。关系如图 4-3 所示。

图 4-3 系统用户学院专业班级年级关系图

(3) 系统用户、角色、权限之间是有联系的,三者关系是 1 对多的关系。关系如图 4-4 所示。

图 4-4 用户角色权限关系图

4.4.3 数据库逻辑设计

对系统的需求分析后,以下做出了对数据库的逻辑设计,并通过设计进行对数据库优化改造,遵循数据库管理原则,针对数据库优化做进一步完善。

教师负责对学生成绩的管理,主要是对学生成绩的编辑,以及查看自己所在班级成绩的查看,可以查看自己的课程情况。教师主要涉及的表有用户表、成绩表、课程表。

学生登录后可以查看自己所在班级的成绩情况,可查看个人成绩以及成绩分析趋势图,可查看自己的课程表。主要涉及的表有成绩表、课程表、用户表。

管理员主要功能是维护系统必需信息,主要涉及的表有用户表、课程表、成绩表、年级表、学院专业班级表、录日志表、权限表、角色表、角色权限表、用户角色表。

主要的数据库表如下所示。

(1) 课程表(info_course 表)

课程表数据结构,如表 4-1 所示。

表 4-1 info_course

字段名 中文含义 数据类型 是否为空 主键或外键
id 课程编号 int(11) 主键
name 课程名称 varchar(20)
college_id 学院 id int(11) 外键
subject_id 专业 id int(11) 外键
class_id 班级 id int(11) 外键
grade_id 年级 id int(11) 外键
school_year 学年 varchar(10)
semester 学期 tinyint
create_time 创建时间 datetime
update_time 更新时间 timestamp

(1) 学院专业班级信息关系表(info_college_subject_class 表)

学院专业班级信息关系表数据结构,如表 4-2 所示。

表 4-2 info_college_subject_class

字段名 中文含义 数据类型 是否为空 主键或外键
id 唯一标识 int(11) 主键
name 名称 varchar(20)
order_number 排序号 int(3)
parent_id 父 id int(11)
type_number 类型 int(1)
create_time 创建时间 datetime
update_time 更新时间 timestamp

(2) 成绩表(info_score 表)

成绩表数据结构,如表 4-3 所示。

表 4-3 info_score

字段名 中文含义 数据类型 是否为空 主键或外键
id 成绩编号 int(11) 主键
score 成绩 decimal(5)
course_id 课程 id int(11) 外键
student_id 学生 id int(11) 外键
college_id 学院 id int(11) 外键
subject_id 专业 id int(11) 外键
class_id 班级 id int(11) 外键
grade_id 年级 id int(11) 外键
school_year 学年 varchar(10)
semester 学期 tinyint(2)
create_time 创建时间 datetime
update_time 更新时间 timestamp

(3) 课程信息表(info_course_timetable 表)

课程信息表数据结构,如表 4-4 所示。

表 4-4 info_course_timetable

字段名 中文含义 数据类型 是否为空 主键或外键
id 编号 int(11) 主键
class_info 上课信息 text
week_num 周数 int(5)
teacher_id 教师 id int(11) 外键
teacher_name 教师名称 varchar(20)
course_id 课程 id int(11) 外键
create_time 创建时间 datetime
update_time 更新时间 timestamp

第五章 系统实现

5.1 数据库连接和操作的实现

数据库连接采用 Druid 做连接池,数据库采用 MySQL 数据库,持久层主要使用 MyBatis 框架进行操作数据库。

数据源配置如下:

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/ssms?useUnicode=true&characterEncoding=utf8

spring.datasource.username=root

spring.datasource.password=root

spring.datasource.driver-class-name=com.mysql.jdbc.Driver

spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

5.2 系统功能的实现

5.2.1 系统登陆实现

登录功能使用 Shiro 权限控制框架实现,通过给不同用户分配不同角色,不同角色对应不同功能来控制用户权限。用户登录认证,通过验证账号密码是否存在来认证。

展示目录结构,通过查询当前用户所属角色,判断拥有权限,通过权限标识符获取所有功能菜单列表,通过 Java 递归算法,依次排列父子目录关系。

(1) 管理员功能菜单列表

管理员登录后展示的功能菜单,如图 5-1 所示。

图 5-1 管理员功能列表界面

(2) 教师功能菜单列表

教师登录后展示的功能菜单,如图 5-2 所示。

图 5-2 教师功能列表界面

(3) 学生功能菜单列表

学生登录后展示的功能菜单,如图 5-2 所示。

图 5-3 学生功能列表界面

5.2.2 管理员身份功能实现

管理员主要管理系统信息,例如用户角色权限、学院专业班级信息、年级、成绩、课程信息管理。

添加用户操作业务逻辑实现,需要判断用户名是否已存在,是否分配角色权限,分配权限是否合法,根据角色名称判断用户类型,通过后插入到数据库中。用户管理界面,如图 5-4 所示。

图 5-4 用户管理界面

增加或修改成绩信息,需要首先删除当前学生相关联的成绩信息,然后添加成绩信息。

5.2.3 教师身份功能实现

教师可以查看班级成绩、班级课程、我的课程等功能。查看课程表界面,如图 5-5 所示。

图 5-5 查看课程表界面

查看我的课程,根据专业、年级、班级、上课时间获取课程计划信息。

查看班级成绩信息,采用 PageHeper 来进行分页查询,获取根据成绩排序的结果集。

查看班级成绩信息核心算法 SQL 实现,通过所在专业、班级、年级筛选成绩信息并统计,通过学生编号、学年、学期进行分组查询,使用聚合函数 sum 计算总成绩。成绩管理界面,如图 5-6 所示。

图 5-6 成绩管理界面

查看成绩正态分布图,根据所选条件,将成绩划分为 10 个等级,统计成绩所在每个等级的人数,并根据要求数据格式进行展示。

查看成绩对比,根据不同条件的设置,指定课程不同专业年级下进行分析对比,分别计算不同条件下课程的平均成绩。核心技术使用聚合函数 AVG 计算平均成绩:

SELECT
avg(s.score) scoreAvg
FROM
info_score s
<where>
    <if test="gradeId != null">
        AND s.grade_id=#{gradeId}
    </if>
    <if test="collegeId != null">
        AND s.college_id=#{collegeId}
    </if>
    <if test="subjectId != null">
        AND s.subject_id=#{subjectId}
    </if>
    <if test="classId != null">
        AND s.class_id=#{classId}
    </if>
    <if test="courseName != null and courseName != ''">
        AND s.course_id IN (SELECT c.id from info_course c where c.name=#{courseName})
    </if>
</where>

5.2.4 学生身份功能实现

学生可查看班级成绩、个人成绩、成绩趋势等信息。

班级成绩按照学生所在专业班级进行筛选并排序。班级成绩界面,如图 5-7 所示。

图 5-7 班级成绩界面

个人成绩获取,通过学生所在专业班级信息获取课程成绩并按照成绩的录入时间进行排序。

获取成绩趋势信息,通过学年、学期分组查询学生每个学期总成绩,将查询出的数据按照前端要求了数据格式进行传输。核心算法是哦那个分组查询、排序、sum 函数,实现如下:

SELECT
    s.school_year AS schoolYear,
    s.semester,
    sum(s.score) AS yData
FROM
    info_score s
WHERE
    s.student_id = #{studentId}
GROUP BY
    s.school_year,
    s.semester
ORDER BY s.create_time

5.3 实现过程中的问题与解决

在系统的设计、开发、上线过程中也遇到一些问题,下面就系统实现过程中遇到的问题及解决整理总结如下。

(1) 系统需求功能的确定

对于成绩管理系统,市场上也有很多简单的实现,开发一款功能强大具有分析功能的成绩管理系统需要充分分析系统功能,通过在浏览知网上的学术论文来收集自己需要的功能需求。

需求预定三个身份登录拥有不同权限,后查阅资料 Shiro 可实现权限控制,通过网上资料学习,掌握 Shiro 权限框架的基本使用,完成系统的权限控制功能。

(2) 技术解决方案的问题

为了让平台可适配多个浏览器版本,选择了 layui 做系统前端框架,通过官方文档的学习开发本系统。

后端实现采用了框架实现,使用原生的 Servlet 开发较繁琐,框架开发提升了开发效率和系统运行性能。

系统实现分析功能的过程中,由于手动绘制折线图不美观,所以使用了百度开源的 ECharts 插件来展示分析结果图。后端获取数据根据学生每个学期成绩总和为一节点,绘制成绩趋势图。

(3) 上线部署过程中的问题

在使用外网服务器搭建部署环境时,系统出现数据库连接异常,导致运行失败,后查资料发现 MySQL 数据库默认不允许远程主机连接,需要手动授权,修改使用 root 用户登录允许任何主机连接。主机防火墙需要开放 3306 端口。

第六章 系统测试

6.1 系统功能测试设计

系统包含三个身份的不同功能,依次验证系统不同功能,不同权限下功能使用问题,针对不同角色功能设计测试用例,对不同的功能进行依次测试。

6.1.1 登录验证模块测试

系统采用 Shiro 权限控制框架控制系统不同身份的管理分配的权限不同,通过验证账号信息来确定当前登录用户的身份来分配指定的权限,进而控制用户的功能。

本机测试浏览器输入 http://localhost:8080/login 进入登录验证模块,对于不同身份展示的菜单不同。

6.1.2 管理员身份功能测试

管理员登录可对成绩信息、课程信息、课程表、学院专业班级信息、年级管理、用户角色权限管理和查看登录日志、系统监控功能。

成绩管理可根据年级、学院、专业、班级、学年、学期等信息进行筛选管理及查看导入导出、搜索功能测试。成绩管理界面,如图 6-1 所示。

图 6-1 成绩管理界面

课程管理可根据年级、学院、专业、班级、学年、学期等信息进行筛选管理及查看导出、搜索功能测试。

课程表管理根据年级、学院、专业、班级、学年、学期、周数查看课程和对课程的编辑功能测试。

用户管理对系统所有用户进行管理,支持单条添加,也可批量导入用户,支持导出功能。

角色管理针对角色不同可进行权限分配和对角色的管理等功能。

权限管理是通过访问标识符对系统目录结构进行管理。权限管理界面。

登录日志查看系统用户登录日志,导出功能测试。

系统监控功能是 Druid 框架自带功能,可查看系统访问、数据库、请求响应时间等系统信息的查看功能。

6.1.3 教师身份功能测试

成绩管理界面,根据教师所在专业回显,可查看课程表和对本专业用户管理。

班级成绩根据教师所在专业回显,提供导出搜索查看功能。

教师提供我的课程功能,可查看当前登录教师的课程安排。我的课程界面,如图 6-2 所示。

图 6-2 我的课程界面

教师可查看不同专业、班级相同课程成绩对比结果差异情况。成绩对比界面,如图 6-2 所示。

图 6-3 成绩对比界面

可查看学生成绩正态分布图。成绩分布界面,如图 6-4 所示。

图 6-4 成绩分布界面

6.1.4 学生身份功能测试

学生可查看班级成绩、班级课程表、本班级用户信息。

学生可查看个人成绩,可根据学年、学期进行筛选。个人成绩界面,如图 6-3 所示。

图 6-3 个人成绩界面

学生可查看自己成绩趋势,通过系统分析图表信息,来了解学习情况。成绩趋势界面,如图 6-4 所示。

图 6-4 成绩趋势界面

6.2 系统兼容性测试设计

通过使用 IETester 和 Spoon Browser Sandbox 两款工具进行兼容性测试。IETester 可以同时对 IE 的不同版本进行兼容性测试,Spoon Browser Sandbox 通过在浏览器中安装插件来运行不同浏览器模块实现兼容性测试,Spoon Browser Sandbox 可以覆盖主流浏览器[11],如 Chrome、Opera、Firefox、Safari、Edge。具体测试版本,如表 6-1 所示。

表 6-1 Windows 浏览器兼容版本

浏览器 版本 Windows 平台 Mac 平台 Linux 平台
Chrome V74
Chrome V64
Chrome V59
Opera V60
Opera V45
IE V7 ×
IE V9
IE V11
Edge V46
360 V10
360 V8
Firefox V68
Firefox V66
Firefox V59
Safari V12
Safari V5

第七章 结论

本文是针对高等院校中存在对学生成绩管理问题的分析及所设计的高校成绩分析与管理系统的论证,本系统主要是为了提高教师对学生成绩统计与管理工作的效率,提供一个高效便捷的管理平台。教师可以方便的通过本系统进行在线办公,管理学生成绩,查看学生成绩正态分布图,了解学生成绩分布。可查看对比不同专业班级相同课程成绩差异情况。教师可以查看自己的课程方便合理安排上课时间。学生可以登陆系统进行查询自己的考试成绩,查看成绩分析趋势图,能够及时调整自己的学习心态。对学生成绩的分析功能是系统的核心亮点。

系统采用 B/S 架构开发,使用框架开发,可降低代码耦合性,提高代码可扩展性。框架选择为 SpringBoot 和 SSM 框架,对前端展示使用了 layui 框架,布局简单美观,便于开发;成绩趋势展示、成绩对比结果、成绩正态分布图均使用了百度开源工具 ECharts 开发实现;系统中对用户、课程、课程表、成绩的管理功能提供了批量导入导出功能,导出使用了阿里巴巴开源工具 EasyExcel 实现,其性能上优于 Apache 的 POI;查出功能使用的是 layui 自带组件 upload 实现,通过前端来生成 Excel 表格。

高校成绩分析与管理系统使用了当前最流行的框架,有效提高了开发效率,对系统的表结构的设计使用了 PowerDesiner 来实现,通过按照不同身份来分析进行设计表结构,最终在实际开发过程中进行优化,最终得到了符合本系统的数据库设计结果。

本系统不仅解决了高校成绩管理的需求问题,还提供了学生成绩分析功能,可查看成绩的分析趋势、对比结果和正态分布,系统提供的智能分析功能也将是高校成绩管理系统的必然趋势!

谢 辞

在大学的四年里老师对我的帮助很大,同时也影响了我的人生,老师不仅传授了知识,而且还教会了我做人的道理。通过大学的学习,让我有了能在社会立足的看家本领,不仅改变了我以后从事的行业,而且对以后的人际交往能力有了很大提升。在大学的最后一次作业——毕业设计,我能很顺利的完成作业,必然离不开赵老师的帮助与支持,赵老师从论文题目指定到设计实现和论文书写严格把关,确保我能更好更快的完成别业设计,赵老师在我的毕业设计与实现中有很大帮助,老师给与学生的教诲和关爱,是大学四年最美好的回忆,也影响着以后的社会生活,让我受益一生。

从步入大学到今天,一步步走来,经历了很多。期间每位老师都认真负责,不管是课堂上还是课余时间,有问题找老师,老师都会很热情的解答,不管是学习上还是生活上,老师都给了我很大帮助。大二时加入了学校的科研室,在科研室学到了很多,也直接影响了我未来的从事行业,学校能够提供这样一个平台,不仅激发了学生的学习热情,还是学生锻炼自己的一个平台。我身在其中,倍感荣幸。大学不仅让我知识境界有了提高,还让我的自学能力提高了不少,为以后的 IT 之路打下了良好基础。

在毕业项目的设计过程中,老师的亲切指导,细心解答,让我少走了很多弯路,不仅提高了毕设项目的质量,还提高了工作效率。老师真可谓顶上的太阳,为学生照亮前方,指导方向。

大学时光,是值得回忆与珍惜的时光,不管是学习中还是生活中,老师、同学、朋友都给予了我很大帮助,在此致以我最真诚的谢意!

♻️ 资源

在这里插入图片描述

大小: 4.05MB
➡️ 资源下载:https://download.csdn.net/download/s1t16/87404234

猜你喜欢

转载自blog.csdn.net/s1t16/article/details/130025404