【河北工程技术学院毕业设计模板】基于SSM的河工软院大学生在线考试系统的设计与实现

毕业设计原创性声明
本人所提交的毕业设计基于SSM的河工软院大学生在线考试系统的设计与实现,是在导师的指导下,独立进行研究工作所取得的原创性成果。除文中已经注明引用的内容外,本设计不包含任何其他个人或集体已经发表或撰写过的研究成果。对本文的研究做出重要贡献的个人和集体,均已在文中标明。
本声明的法律后果由本人承担。
毕业设计版权使用授权书
本毕业设计作者完全了解河北工程技术学院有权保留并向国家有关部门或机构送交毕业设计的复印件和磁盘,允许论文被查阅和借阅。本人授权河北工程技术学院可以将毕业设计的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或其它复制手段保存、汇编毕业设计。
保密的毕业论文设计在_______年解密后适用本授权书。
摘 要
技术的发展促进社会各个方面的变革,顺应时代发展,教育活动也要发生变化。受疫情影响,传统的线下教育方式已经难以适应现在的教育活动,这就需要找到一种更加方便,且不需要人员流动与聚集的形式来对学生进行考核,自然考试结果也更加公平公正。
基于SSM的河工软院大学生在线考试系统使得考试流程更加的简单、方便、不容易出错,也不用再受到考试地域、地点以及人力资源的限制。降低了教务管理人员在管理考试流程与考试结果整理分析上的难度,切实的减轻了教师的负担,方便了大学生参与考试。该系统的优点是利用遗传算法优化随机组卷算法,实现了随机组卷功能,均衡了试卷难度,提高了试卷的质量,使用语义相似度计算实现了主观题自动判分功能,自动判分、自动进行成绩分析,无需教师手动操纵,简化了传统的考试流程。
河工软院大学生在线考试系统是针对河北工程技术学院软件学院的需求和社会趋势而开发的。本文首先依据河北工程技术学院软件学院的背景和当前国内外市场考试系统的现状、明确学院的需求。其次,根据用户的需求,对系统的功能进行了划分和实现。最后,结合测试结果对系统进行了测试和升级。
关键词:在线考试系统;遗传算法;随机组卷;自动判分
ABSTRACT
The development of technology promotes the changes in all aspects of society, and in keeping with the development of the times, educational activities will also change. Affected by the epidemic, the traditional offline education has been difficult to adapt to the current educational activities, so it is necessary to find a more convenient way to assess students, which does not require the flow and gathering of people, and the natural examination results are more fair and just.
The SSM-based online examination system for college students in the Soft Institute of River Engineering makes the examination process simpler, more convenient, less prone to errors, and no longer limited by the examination area, location and human resources. It reduces the difficulty of academic administrators in managing the examination process and sorting out and analyzing the examination results, effectively reduces the burden of teachers, and facilitates college students to participate in the examination. The advantages of this system are that genetic algorithm is used to optimize the random test paper generation algorithm, which realizes the function of random test paper generation, balances the difficulty of test paper, improves the quality of test paper, and uses semantic similarity calculation to realize the function of automatic grading of subjective questions, automatic grading and automatic grade analysis, without manual manipulation by teachers, thus simplifying the traditional examination process.
The online examination system for college students in Hebei Institute of Engineering and Technology is developed to meet the needs and social trends of the Software Institute of Hebei Institute of Technology. Firstly, according to the background of Software Union of Hebei Institute of Engineering and Technology and the current situation of market examination system at home and abroad, this paper defines the needs of the college. Secondly, according to the needs of users, the functions of the system are divided and realized. Finally, combined with the test results, the system is tested and upgraded.
Key words: Online examination system; Genetic algorithm; Random test paper; Automatic grading
目 录
第1章 绪论 1
1.1 设计背景和意义 1
1.2 国内外研究现状 1
1.2.1 国外研究现状分析 1
1.2.2 国内研究现状分析 2
1.3 开发工具与技术 2
1.3.1 开发工具 2
1.3.2 后端开发 2
1.3.3 前端开发 3
1.3.4 服务器 3
1.4 本章小结 3
第2章 系统需求分析 4
2.1 需求分析 4
2.2 系统用例分析 5
2.3 性能需求 13
2.3.1 硬件环境 13
2.3.2 软件环境 13
2.3.3 性能需求 14
2.3.4 可靠性需求 14
2.4 本章小结 14
第3章 概要设计 15
3.1 系统模块划分 15
3.2 界面设计 16
3.3 本章小结 18
第4章 数据库设计 19
4.1 数据库需求分析 19
4.2 概念结构设计 19
4.2.1 E-R模型 19
4.2.2 逻辑结构设计 19
4.3 物理结构设计 21
4.4 本章小结 25
第5章 系统算法设计 26
5.1 遗传算法实现随机组卷 26
5.1.1 算法概述 26
5.1.2 实现随机组卷的过程设计 26
5.2 本章小结 29
第6章 系统开发与实现 30
6.1 前台开发与实现 30
6.1.1 身份认证模块 30
6.1.2 在线考试模块 31
6.1.3 题库管理模块 34
6.2 后台开发与实现 35
6.2.1 身份认证模块 35
6.2.2 考试管理模块 36
6.2.3 题库管理模块 37
6.3 本章小结 38
结论 39
参考文献 40
致谢 41
第1章 绪论
教育问题一直是一个不可忽视的问题,考试又是检测教育成果的重要途径之一。现如今的互联网为广大教育者提供了一个途径——花费更少的时间和精力,完成考试这一常规性活动,且大大提高了组织考试的效率。
1.1 设计背景和意义
随着信息化社会的飞速发展,计算机及网络应用到社会各个方面,并且逐步深入千家万户,技术的变革也对教育活动产生了重大影响。据统计,2021年在校大学生人数为909万人,面对如此庞大的学生集体进行传统的线下考试是一项繁杂的任务。工作量大、出错率高、效率低等问题普遍存在。另外受疫情影响,很多学生需要在家学习,线上教育得到长足发展利用互联网技术开展线上考试是必经之路。
现如今,高校大多采用线下考试的方式组织学生进行线下考试,教师耗费大量的时间及经历,以人工组卷的方式完成组卷;教务管理部门消耗大量的时间及物力,以人工方式完成印卷、组织考试,再有教师耗费时间及精力以人工方式组织学生进行答卷、判卷。如此过程,一是试卷内容受主观因素影响颇多,对于试卷的难度、水平、知识点覆盖、题型及分值分配难以把控;二是考试过程组织耗时耗力,试卷及成绩留存容易出现丢失、损毁等现象;三是考试结果难以得到全面分析,不容易指出教学过程中存在的问题。
因此,开发一款适合我校实际需求的在线考试系统是非常有必要的。河工软院大学生在线考试系统借助互联网的坏境让考试过程更加的轻松、节省人力与设备费用、提高处理分析速度、提升工作效率与人员利用率。
1.2 国内外研究现状
当今计算机行业发展迅猛,在线考试系统逐步走入教育业内人员的视野。到今天为止,在线考试系统的发展历程已经很悠久了,智能考试已经成为教育评测的重要途径。从现状来看,虽然在线考试系统的名目繁多,各种技术也层出不穷,但最基本的模式仍然是C/S和B/S。基于在线考试系统的便利性,许多大型国际考试机构都采用了在线考试系统,如著名的思科CCNA证书、CCNP证书和托福。当然,考试系统在中国的一些专业领域也得到了应用。
1.2.1 国外研究现状分析
国外之前有不少的在线考试系统也都是使用的Client/Server(客户机/服务器)模式,但这种的教学模式相对来说在操作上比较简单,而且能够使学校完全没有地理方面的限制问题,使学员即使在家也清楚地知道自身的缺点。由于对这种模式要求较高,所以往往使用于某些国家统一的、相对公开的试题,而采用了Web的在线考试系统,通常都是给学生和本国学校练习和教学用的系统。在这方面,就像其他所有高科技产品那样,美国已经再一次迈向了当今世界的最前端。
1.2.2 国内研究现状分析
现在国内比较流行的模式是Brower/Server(浏览器/服务器)模式,Web不仅仅是在表面实现了原本的客户端模式,并且还能够和数据库和很多的相应应用软件相结合。Web实现的在线考试系统在维护方面比较简单。因为以前的客户端模式一旦出现问题,就需要全面进行更换,包括客户界面。但是Web的话就只需要更换代码就可以了。不仅仅如此,如果涉及更新的话,相对来说也更为简单。
现在市场上的现有的考试系统普遍使用随机抽取或者手动录入的方式组卷。这样的方式一方面不能保证试卷的难易程度是否能达到测试学生真实水平的目的,另一方面加重了教师的工作量,使组卷这一步骤变得繁琐,使用遗传算法实现的随机组卷功能就不会有这方面的顾虑。大多数的考试系统也都拥有自动判卷功能,但都是客观题的自动判分,无法实现主观题,如简答题、编程题的自动判分。本系统不仅可以自动判分,而且还可以自动进行成绩分析,教师直接查看想要查看的分析结果即可。
1.3 开发工具与技术
1.3.1 开发工具
河工软院在线考试系统在开发过程中使用了一些比较主流的开发工具。Eclipse就是一个开源的,功能强大的开发平台,MySQL更是一般中小型网站开发的首选数据库,Navicat是专为简化数据库的管理及降低系统管理成本而设计的。系统开发所使用的开发工具如下表1.1所示。

1.3.2 后端开发
Java语言具有功能强大和简单易用两个特征,具有简单性、面向对象、分布式等特点,不仅可以编写Web应用程序,还可以编写桌面应用程序、分布式系统和嵌入式系统应用程序。系统后端开发所使用的架构/语言如下表1.2所示。

1.3.3 前端开发
在客户端浏览器向服务器提出服务请求时,客户端浏览器通常要检查用户输入的合法性、完整性、安全性等问题。在客户端中这种检查不经过服务器,是由客户端浏览器中执行,而执行这种检查的客户端的网页脚本程序,使用客户端网页脚本语言进行编写,也就是JavaScript,它是系统开发所使用的前端语言之一。
Layui是一个轻量级的前端框架,十分简单容易上手,并且UI简洁美观,在服务端页面上有非常好的效果。系统开发所使用的前端框架/语言如下表1.3所示。

1.3.4 服务器
河工软院开发所使用的服务器是Tomcat服务器的8.5版本,Tomcat在运行时占用的系统资源小,扩展性好,支持负载均衡与邮件服务等开发应用系统常用的功能。它是一个开源的Web服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。
1.4 本章小结
本章主要是对河工软院大学生在线考试系统的背景、意义、国内外在线考试系统现状和所使用技术的阐述。
第2章 系统需求分析
需求分析不仅是软件规划阶段的一项重要活动,也是软件生命周期中的一个重要环节。确定系统可行之后,就要结合用户的需求确定河工软院大学生在线考试系统的主要业务流程、功能模块、性能需求、界面需求等。
2.1 需求分析
考试,是严格鉴定知识水平的方法,检验学生学习成绩的一种途径,是一种体现学校教学能力的方式。经过与学院教师的交流、学生的亲身经历与相关资料的分析,可以确定河工软院大学生在线考试系统的主要业务流程如图2.1所示。

教务管理人员根据学校相关规定安排下发考试相关通知,通知内容大致为考试时间、考试范围、考试形式、注意事项,接到通知的本校教师为自己所教授的课程组卷,自动组卷完成后交由教师审核试卷是否达标,教师需在考试时间之前一周左右下发考试通知,通知学生准时参加考试,收到通知的学生在规定时间内参与该教师组织的考试,考生作答结束交卷之后,系统统计考生分数,考试结束后,将统计后的成绩分类发送给教师、教务管理人员留底,教师决定何时将成绩下发给考生查看,考生成功查询到自己的成绩,至此考试结束。
2.2 系统用例分析
依据上述主要业务流程可以扩展出以下操作:
学生进入河工软院大学生在线考试系统必定需要参与考试,学生在考试中心参与考试。考试结束后,教师审核系统自动生成的成绩分析,无误后发布成绩,学生可以在考试记录内查看自己所有的试卷成绩结果,如果学生想要知道自己有哪些错题,可以在错题本里查看错题与解析。平常学生可以在平时练习模块内按分类抽取题库试题,进行练习,错题也会总结在错题本内。学生拥有个人中心模块用来查看、更改个人信息;学生可以在消息中心接受教师发布的通知如图2.2所示。

教师进入到在线考试系统内,应当可以实现对学生信息的管理与对班级信息的管理。教师可以在在线考试系统内进行卷题管理(包括卷库管理、题库管理),卷库管理应当包含手动/随机生成试卷。教师可以在答卷管理模块中查看系统自动生成的成绩分析,确认无误后可以在此模块发布成绩,让学生查看成绩。教师可以在成绩分析模块查看自己管辖的班级平均分、各分段人数信息的图表展示如图2.3所示。

进入系统后,教务管理人员可以管理用户信息。也可以对卷题信息进行管理(试卷信息、题库信息)。教务管理人员可以对不同年级的学科信息进行管理。用消息中心给教师通知,用个人中心对个人信息修改。
教务管理人员用例展示如图2.4所示。

以上三个角色的用例图对应的部分用例描述如表2.1-2.11所示。











2.3 性能需求
2.3.1 硬件环境
计算机及其外围设备组成的计算机物理系统,即硬件设施,系统的开发运行离不开硬件设施。运行本系统所需的硬件设施最低配置如下表2.12所示。

2.3.2 软件环境
系统的运行环境,也就是程序的运行平台,我们通常所说的系统是指应用程序,就是在运行平台上进行二次开发出来的应用软件。本系统对运行平台的最低配置要求如下表2.13所示。

2.3.3 性能需求
系统的需求分析有两类,一类是功能性需求,一类是非功能性需求,也就是性能需求。本系统的性能需求如下表2.14所示。

2.3.4 可靠性需求
可靠性需求是指系统在规定条件下和规定时间内,完成规定功能的能力。本系统的可靠性需求如下表2.15所示。

2.4 本章小结
本章主要阐述了系统的业务流程、功能模块和性能要求。
第3章 概要设计
概要设计是依据功能将繁杂系统划分,建立层次结构与调用关系,并根据用户交互过程和用户需求形成交互框架和可视化框架。概要设计建立了目标系统的逻辑模型。
3.1 系统模块划分
本系统的功能模块如下所示:
身份认证模块:用户选择身份,进行身份认证;
考试管理模块:大学生在此进行平时在线练习和考试,考试完毕系统自动判分并进行成绩分析,将不同的图形分析结果和成绩报告分发给不同的用户;
试卷管理模块:对试卷信息的数据操作,教师在此安排系统进行随机组卷操作;
题库管理模块:教务管理人员在此模块进行题库信息的数据操作,教务管理人员可以定时开放题库的导入试题功能,教师可在此时导入试题;
班级管理模块:可以批量导入当前教师带来的大学生信息,操作大学生信息、班级信息,导出打印;
课程管理模块:对课程信息的数据操作;
用户管理模块:对系统用户的数据操作,教务管理人员可以批量导入教师、大学生的登录账号并设置默认密码;
通知管理模块:教务管理人员发送通知给教师,教师发送通知给大学生,大学生与教师可以查看自己接收到的通知。
经过分析,系统功能结构如图3.1所示。

3.2 界面设计
经过与河工软院的教师、学生,交流讨论,对于河工软院大学生在线考试系统,用户希望界面能满足以下要求:
1. 系统登入之后界面左上角放置“河工华软”的LOGO;
2. 导航栏放置在左侧,用户信息放置在右上角,显示头像和账号名;
3. 配色设置为可切换版本,以白色为主;
4. 界面要简洁、美观、大气且符合行业特点;
5. 相关操作提示要一目了然,方便无基础人员上手操作,减少错误选择的可能性;
6. 界面所有文字使用简中文字。
部分界面界面设计结果如图3.2-3.6所示。





3.3 本章小结
本章主要是根据需求分析结果对河工软院大学生在线考试系统的功能模块进行划分,系统部分界面设计图的展示。
第4章 数据库设计
计算机中长期存储的大批数据的整体是数据库。对于任何系统来说,数据库的设计和使用都是非常重要的。在河工软院大学生在线考试系统中,需要存储大量的试题、试卷及成绩结果分析。所以,应该设计一个既符合范式要求又易于扩展的数据库。河工软院大学生在线考试系统使用MySQL数据库。
4.1 数据库需求分析
根据系统需求分析可以得出,河工软院大学生在线考试系统有三个角色,分别是教务管理人员、教师、学生,它们分别对应三个实体。
进行考试活动需要对考试信息、试卷信息进行存储调用,涉及了考试、试卷两个实体。
系统要为教师提供试卷的手动组卷/随机组卷,就需要在系统内存储调用题库与试题信息,可以确定题库、试题两个实体。
成绩单的生成需要考生答卷信息与其对应的考试信息,可以确定成绩单实体与考生答卷两个实体。
成绩分析的结果需要调用课程信息、班级信息、成绩单信息、学生答卷信息、考试信息,可以确定成绩分析结果、课程、班级三个实体。
学生通过系统进行在线练习与考试除上述信息以外,还会产出错题信息,由此可以确定在线联系、错题两个实体。
三个用户通过系统发送/接受通知消息,也就需要系统具有存储调用通知信息的功能,由此可以确定通知实体。
经过分析可以得出,河工软院大学生在线考试系统共有15个实体。
4.2 概念结构设计
4.2.1 E-R模型
E-R模型是实体的联系图,有实体、关系、属性三个基本结构,用于描述静态数据结构。
河工软院大学生在线考试系统的E-R模型(未加属性)如图4.1所示。
4.2.2 逻辑结构设计
转换之后的结果也要满足规范。因此,数据库实体联系转换为关系模式的结果如下。

教务管理人员信息表(admin):(id,教务管理人员编号,account,password,email,gender)
教师信息表(teacher):(id,教职工号,account,password,email,gender)
学生信息表(student):(id,学号,account,password,email,gender)
班级信息表(classes):(id,班级编号,className,classDescription,belongTeacher)
学生班级对应信息表(student_class):(id,student_id,class_id)
考试信息表(exam):(id,试卷编号,考试名称,开始时间,停止时间,oneSelectGrade,moreSelectGrade,judgeGrade,fullGrade,shortGrade,总分,难度,题目列表)
试卷课程对应信息表(exam_course):(id,course_id,exam_id)
题库信息表(question):(id,题库编号,题型,选项1,选项2,选项3,选项4,选项5,答案,难度,解析,所属课程)
学生答卷信息表(record):(id,exam_id,student_id,学生答案,错误题号,正确题号,总分)
课程信息表(course):(id,课程编号,课程名,总学时,学分,课程性质)
错题信息表(wrong_question):(id,student_id,exercise_id,question_id,错题编号)
通知信息表(notice):(通知编号,通知标题,通知内容,发布人)
在线练习信息表(exercise):(id,student_id,question_id,练习编号,抽取题数,题目列表,总分,开始时间,停止时间)
成绩单信息表(grade):(id,record_id,exam_id,成绩单编号,学年学期、打印日期、开课单位、考试班级)
成绩分析信息表(analysis):(id,teacher_id,admin_id,成绩分析编号,classRank,examNum,excellentNum,goodNum,passedNum,nopassedNum,absenteesNum,avgScore)
成绩分析对应表(grade_analysis):(id,grade_id,analysis_id)
4.3 物理结构设计
数据库的设计工作包含两方面的内容,分别是逻辑结构设计与物理结构设计。
逻辑设计是设计逻辑机构,与具体的DBMS无关,主要反映业务逻辑,而物理设计是根据逻辑结构设计得来的,根据数据库的逻辑结构来选定RDBMS并设计和实施数据库的存储结构、存取方式等。存储结构设计结果如表4.1-4.12所示。












4.4 本章小结
本章主要阐述了数据库的逻辑结构设计和物理结构设计,为系统的数据安全存储和后台开发奠定了基础。
第5章 系统算法设计
技术的发展与疫情的影响导致在线考试正逐渐取代线下考试。对于一个在线考试系统来说,试卷的质量可以说代表了系统的质量。如果说只是单纯的从题库中抽取一定数量的试题,简单排列组合一下,就称之为一套试卷,这样得到的试卷基本达不到在线测评的要求。遗传算法的自进化与并行执行,非常适合解决随机组卷的问题。
5.1 遗传算法实现随机组卷
遗传算法讲究优胜劣汰,适者生存,适用于在多约束条件下,寻求种族群体的最优解。通过选择、交叉与变异等操作,使得种群中的个体适应度不断提高,最终获得一个满足适应度要求的相对来说最优秀的个体。将遗传算法应用于随机组卷当中,就可以获取一个相对最优解,节省了教师的时间还可以出一张符合要求的试卷。
5.1.1 算法概述
自然界中具有复杂结构的生物基本都要经过长时间的进化,遗传算法最主要的操作就是选择、交叉、变异,该算法通过这三个操作来模拟生物进化的过程,虽然对于生物进化的研究还没有完全清楚,但上述部分特征已经被人所掌握。自然界中的人类通过繁衍将基因遗传给下一代,通过父母双亲的基因交叉重组,繁衍出具有父母某些特征与基因的孩子,这些孩子可能遗传了父母的优良基因,也可能会遗传不好的基因,还有一定概率会发生变异,通过评测适应度来判断这些孩子对环境的适应能力,留下适应能力强的孩子,淘汰适应能力差的孩子,经过N次循环之后,就可以通过这个过程获得适应性较强的个体。遗传算法程序流程图,如图5.1所示。
5.1.2 实现随机组卷的过程设计
第一件事是把染色体串编码成一个抽象代码。遗传算法选择一套最优的试卷,试卷的试题题号作为这个染色体的基因值。如果有3个选择题、3个判断题和2个简短回答题,其染色体代码为:
{12,43,64|325,23,231|63,74}
选择问题 判断问题 简答问题
最初的种群不是随机的,根据被编对象的科目、题型、总分、时间、难度与章节权重分布随机生成,使最初种群在一开始就能满足一些要求,这样可以减少迭代循坏的次数,更快的找到最优的试卷。

1. 编码实现初始化种群
根据要考试的科目、考试题型与章节权重分布,从题库中抽取相应数量的试题(比如某课程第五章比较重要,要占试卷选择题考核内容的百分之30%,选择题总共有100个,就从题库中抽取30个第五章的选择题),由简单的随机抽取函数,随机排列组合成n个初始化种群试卷,一套完整的试卷就是一个染色体。定义一个计算适应度的公式(也就是判断试卷难度是否达到标准的公式或标准),判断初始化种群中适应度,适应度越高,被选择的几率就越高。
2. 选择
选出其中几套适应度最高的试卷(例如系统随机生成了8套试卷,我们淘汰掉其余4套适应度低的试卷,选择适应度最高4套试卷作为新的初始种群)。一次繁衍之后如果没达到适应度要求,则新的种群要接着执行选择操作。4套试卷繁衍之后初始种群由4变为了8,选择其中适应度最高的4套试卷保留为新的初始种群,进行交叉、变异操作。
3. 交叉
从选出的几套适应度最高的试卷中抽取其中两套作为“父母”试卷,这两套卷子暂时依旧保留在种群内,但不会再继续被抽取,将它们两个进行交叉得出两个“孩子”(比如第一个孩子的选择题前一部分用第一套试卷的,选择题后一部分用第二套试卷的,其它题型操作相同;第二个孩子的选择题前一部分用第二套试卷的,后一部分用第一套试卷的,其它题型操作相同),将这两个“孩子”加入初始种群内,重复第一步抽取两套“父母”试卷,直到所有“父母”试卷都拥有两个“孩子”,此时,所有的“孩子”也都被添加入了初始种群之中。
根据分析进行系统优化,遗传算法实现随机组卷步骤流程如图5.2所示。

1. 变异
设定一个随机概率,有概率两个“父母”在生育两个“孩子”时,“孩子”会带有其它“父母”的基因。比如A、B、C、D四套“父母”试卷,A、B在孕育“孩子”时,“孩子”有可能会一定的概率出现某几个试题是C或D的试题。
2. 评估种群中个体适应度
将现在包含所有“父母”与“孩子”的初始化种群按照适应度从高到低排序,判断适应度最高的试卷是否已经达到要求,如果达到要求,直接导出这套试卷作为考试试卷,如果未能达到要求,则继续进行选择、交叉、变异操作,生成新的后代。
5.2 本章小结
本章主要阐述了为什么系统要使用遗传算法,算法的一些简介、实现过程的设计,为系统的开发与实现奠定了基础。
第6章 系统开发与实现
本章内容是根据所选编程语言完成系统源代码编码的过程。将软件设计结果转换成计算机可以运行的代码。源码应符合标准和规范,加上适当的中文注释,以保证程序的可读性、易维护性。
6.1 前台开发与实现
前端开发是向用户展示系统界面或移动界面,实现用户交互的过程。以前的网站内容是静态的,主浏览。随着科技的发展,今天的网页更加美观和强大。系统在开发时采用了Layui前端UI解决方案来实现前端界面的交互。
6.1.1 身份认证模块
用户进入河工软院大学生在线考试系统网址,根据界面指导进行登录操作。输入用户名,密码,选择角色,单击“登入”,进入系统,调用各个功能模块。用户登入系统的顺序图如图6.1所示。

当用户在操作前端界面进行登录操作时,后台将用户所填写在界面上的登入信息数据传递给服务层拉取数据库数据进行处理、比对,比对结束服务层再将验证结果反馈到界面上供用户查看。
登录模块系统运行展示如图6.2所示。

登录模块前端部分实现代码设计如下:
$.ajax({
url: "${pageContext.request.contextPath}/logindo",
data: {
username: $("input[name=username]").val(),
password: $("input[name=password]").val(),
type:$("input[name=type]:checked").val(),
},
type: "POST",
success: function (result) {
if(result=="student"){
layer.msg("登录成功");
window.location.href="student";
}
6.1.2 在线考试模块
考生进入系统之后进入学生首界面,参加考试需要在左侧菜单栏中选择我的考试进入“我的考试”界面,“我的考试”界面默认不显示正在进行的考试信息,需要学生选择自己的班级信息。这是考虑到学生因重修课、选修课原因不仅仅加入了一个班级。考试的信息与班级挂钩,所以先选择班级之后,系统根据选择的班级调用显示考试信息,学生选择其一,单击“点击考试”进行考试。
查看班级当前考试信息顺序图如图6.3所示。

查看班级当前考试信息系统运行展示如图6.4所示。

查看班级当前考试信息前端部分实现代码设计如下:
// 监听班级选择事件
form.on("select(selectClassId)", function (data) {
// 将班级id保存到会话中
sessionStorage.setItem("examClassId", data.value);
});
选择班级之后单击搜索按钮,系统会查询该班级下的所有考试信息,找到要参加的考试,单击标题后的“点击考试”按钮,确认参加考试后,即可开始考试。未开始的开始无法进入。正在进行中的考试会有倒计时,需在倒计时内参与并完成考试。已完成的考试可以查看正确答案与解析,但不可再答题。
学生在线考试顺序图如图6.5所示。

学生在线考试前端答题点击事件部分实现代码设计如下:
$('li.option').click(function () {
var exam = $(this).closest('.test_content_nr_main').closest('li'); // 得到题目ID
var examId = exam.attr('id')
var cardLi = $('a[href="#' + examId + '"]'); // 根据题目ID找到对应答题卡
if (!cardLi.hasClass('hasBeenAnswer')) {
cardLi.addClass('hasBeenAnswer');
}});
学生在线考试系统运行展示如图6.6所示。

6.1.3 题库管理模块
在教务管理人员登入系统成功之后,就可以利用试题管理功能,管理题库中的试题。试题设有难度分级,老师组卷时系统会根据试题的难易程度进行抽取,使试卷整体难度符合老师的要求。
题库管理的顺序图如图6.7所示。

题库管理前端部分实现代码设计如下:
table.on('toolbar(currentTableFilter)', function (obj) {
if (obj.event === 'add') { // 监听添加操作
var index = layer.open({
title: '添加题目',
type: 2,
shade: 0.2,
maxmin:false,
shadeClose: true,
area: ['100%', '100%'],
content: '/OLES/teacher/tikuAdd?modify=false',
});
题库管理添加试题系统运行展示如图6.8所示。

6.2 后台开发与实现
系统的后台主要是对前端的信息管理,使得前端能够得到及时更新和调整。本章内容主要对河工软院大学生在线考试系统的其中几个模块的后台实现过程。
6.2.1 身份认证模块
当用户进入系统的时候,首先要在登录界面验证身份,只有匹配数据库身份信息的用户才可登入系统。后台对登录表单与数据库信息进行比对,比对成功时,使用session保存其身份,返回其身份信息,跳转到角色相应的首页。
身份认证的控制层实现代码如下:
@RequestMapping(value = "/logindo", method = RequestMethod.POST)
@ResponseBody
public String logindo(HttpSession session, @RequestParam("username") String username,
@RequestParam("password") String password,
@RequestParam("type") String type) {
if (type.equals("1")) {
Student student = loginService.findStudent(username, password);
if (student != null) {
session.setAttribute("student", student);
return "student";
}
return "fail";
}
6.2.2 考试管理模块
考试管理模块有很多的内容,简述一下通过班级id查询当前班级的考试信息的实现过程。首先根据当前页及当前页限制的数据条数进行分页处理。之后通过Mapper文件去数据库调用传入班级id对应的考试信息,以列表形式返回存储。通过PageInfo对返回的结果进行包装,统计返回信息数,配置返回的结果,最后return返回考试信息结果。
通过班级id查询当前班级的考试信息的接口实现层实现代码如下:
public MultipleDataResult<Exam> findExamInfoByClassId(Integer classId, Integer page, Integer limit) {
MultipleDataResult<Exam> result = new MultipleDataResult<>();
PageHelper.startPage(page, limit);
List<Exam> exams = examMapper.findExamInfoByClassId(classId);
PageInfo<Exam> pageInfo = new PageInfo<>(exams);
result.setTotal((int) pageInfo.getTotal());
result.setData(pageInfo.getList());
if (pageInfo.getList().size() > 0) {
result.setCode(0);
result.setMessage("查询成功");
} else {
result.setCode(1);
result.setMessage("无结果");
}
return result;}
第二个部分简述添加一个新考试信息的部分实现过程。首先创建一个考试和已存在班级的关联实体,加入班级id和考试信息之后判断是否插入成功。成功的话就查询最近添加的考试id信息与班级信息。判断班级是否存在,存在的话就设置考试id为刚刚添加的考试信息id,添加考试信息,否则就删除当前考试信息,提醒用户添加失败,原因是班级不存在。若一开始加入班级id和考试信息时就未插入成功,则提醒用户考试信息添加失败。
新增考试信息的接口实现层实现代码如下:
public BaseResult addExam(Exam exam, Integer classId) {
BaseResult result = new BaseResult();
ExamClass examClass = new ExamClass();
examClass.setClassid(classId);
int examRes = examMapper.insert(exam);
if (examRes > 0) {
Integer examId = examMapper.findExamRecent();
// 查询当前班级信息
Classes classes = classesMapper.selectById(classId);
// 判断班级是否存在
if (classes != null) {
// 设置考试id
examClass.setExamid(examId);
int insert = examClassMapper.insert(examClass);
if (insert > 0) {
result.setCode(0);
result.setMessage("考试信息添加成功,可以开始选题了");
}
6.2.3 题库管理模块
对于考试系统来说,题库的管理也是至关重要的,题库的管理过程如下所述:
根据前端传入的数据,判断要对试题进行的操作。当要添加一个试题时,直接使用BaseMapper.insert()方法将新增的试题实体question加入试题列表中,使用这种方法就不用再写复杂的Mapper文件,可以直接在接口实现类中实现增查删改操作,特别的方便。
该方法参数为实体,返回值为操作的记录条数,根据返回的记录条数判断是或否插入成功,再返回题目添加成功与否的message,修改与删除同理。
题库管理中添加试题的接口实现类代码如下:
public BaseResult addQuestion(Question question) {
BaseResult result = new BaseResult();
int insert = questionMapper.insert(question);
if(insert > 0) {
result.setCode(0);
result.setMessage("题目添加成功");
} else {
result.setCode(1);
result.setMessage("题目添加失败");
}
return result;}
题库管理中修改试题的接口实现类代码如下:
public BaseResult modifyQuestion(Question question) {
BaseResult result = new BaseResult();
int insert = questionMapper.updateById(question);
if(insert > 0) {
result.setCode(0);
result.setMessage("题目修改成功");
} else {
result.setCode(1);
result.setMessage("题目修改失败,该题目不存在");
}
return result;
}
6.3 本章小结
本章主要介绍了系统的前端、后端开发的重点部分。主要是身份认证、在线考试、题库管理三大模块实现过程的阐述,其中在线考试模块的实现难度较大。
结论
宝贵的大学生活即将结束。笔者介绍了大学的最后一门重要课程——毕业设计。经过几个月的奋斗和努力,笔者的毕业设计终于完成了!回想起设计实现项目的整个过程,有骄傲也有艰辛,不过毕业设计的乐趣也正是这些骄傲与艰辛。
在刚刚拿到课题《基于SSM的河工软院大学生在线考试系统设计与实现》的时候,笔者还有些小开心,觉得考试系统多么的简单啊,应该很容易就可以完成。在经过一段时间的学习与了解之后,笔者才明白,它并没有笔者想象的那么简单。确定课题之后便是对资料的收集与学习,这也是毕业设计的准备工作,资料的全面性与可靠性是整个毕业设计的地基,笔者搜集资料的方法便是在网上电子图书馆内查阅往年论文与期刊资料。收集好资料之后就是对资料的整理、学习和分析,有了这些知识的支撑,再加上老师的指导,如何做毕业设计的思路就相当的清晰了,也鉴定了笔者一定要做好毕业设计的决心。前期的准备工作完成之后,就是对项目的设计实现了,有了资料的支撑,加上老师的细心指导,项目最终设计实现完成。
通过这次毕业设计,笔者明白了学习的重要性,人一定要活到老,学到老。人们需要在未来的工作和生活中不断学习,以提高自己的知识水平。笔者从毕业设计中也学到了很多知识,提高了笔者的独立思考能力和实际应用能力。虽然这个项目并不完美,但在设计过程中所学到的知识是笔者的财富,这对笔者一生都是有益的。
参考文献
[1]张巧霞.高校在线考试系统的设计与实现[D].西安:西安电子科技大学,2018.
[2]周红益.基于ThinkPHP框架的在线考试系统设计与实现[D].郑州:广东工业大学,2019.
[3]张彩萍.基于J2EE的远程教育在线考试系统的设计与实现[D].大连:大连理工大学,2015.
[4]郝丽丽.基于改进的遗传算法的在线考试系统的设计与实现[D].石家庄:河北科技大学,2017.
[5]张宝仁.基于试题难度分级的在线考试系统设计与实现[D].兰州:兰州大学,2019.
[6]许光林.在线考试系统的设计与实现[D].青岛:青岛大学,2018.
[7]陆喆.某高校在线考试系统的设计与实现[D].厦门:厦门大学,2016.
[8]丁蔓.在线考试系统的设计与实现[D].厦门:厦门大学,2015.
[9]房振伟.基于Web的在线考试系统的设计与实现[D].南京:东南大学,2016.
[10]叶春荣.江西通工校在线考试系统的设计与实现 [D].大连:大连理工大学,2016.
[11]阳冉.在线考试系统的设计与实现[D].绵阳:西南科技大学,2018.
[12]刘思婷.在线考试系统中若干技术研究与优化[D].合肥:中国科学技术大学,2016.
[13]文慧.基于智能组卷的地税干部在线考试系统的设计与实现[D].上海:上海交通大学,2015.
[14]刘思婷,顾乃杰,林传文.在线考试系统中试题上传方法的优化[J].计算机工程与应用.2016(21):241-246.
[15]Cheng Qian,Wang Ziying,Wang Xiaodan.Design of Digital Circuit Online Examination System[J].Interna-
tional Journal of Engineering and Technology.2019(11):15-22.
[16]Thandar Htwe.Online Examination System for English Grammar[J].International Journal of Trend in Scientific Research and Development.2019(15):3-7.
[17]V. Nandini.Automatic assessment of descriptive answers in online examination system using semantic relational features[J].The Journal of Supercomputing.2018(76):1-19.
[18]Paleti Tarun.On-line examination system of security application[J].International Journal of Engineering & Technology.2018(22):166-167.
致谢
“相见太匆忙了,学校里的花儿都红了好几次了。友谊生活在灵魂的梦里,沉重的恩情永远在我心中。”
在这次毕业设计的整个过程中,我首先要感谢的是我的导师。感谢老师耐心地指出我的不足,并在我设计和实现毕业设计的整个过程中提出了有价值的改进建议。让我明确了项目设计的总方向与论文写作的思路,
其次要感谢的就是我的同学与舍友,她们是我的大学生活中最不可或缺的一部分。在这匆匆四年的大学生活之中,她们为我的学习和生活提供了很多的帮助和支持。谢谢你们,祝你们能像“莫愁前路无知己,天下谁人不识君。”这句诗一样,前程似锦。
最后要感谢的是我的父母,父母的关心和包容,是我一直不断进行的动力,也是他们的支持与付出,才让我一直坚定不移的在当前的道路上前行。