APP下载

基于Bootstrap+spring boot框架的在线考试系统开发

2019-12-07叶惠仙沈文杰

网络安全技术与应用 2019年12期
关键词:科目框架试卷

◆叶惠仙 沈文杰

基于Bootstrap+spring boot框架的在线考试系统开发

◆叶惠仙 沈文杰

(福建农业职业技术学院 福建 350007)

Internet的开放分布性特点使各种考试突破了时间和空间限制,该在线考试系统设计使用Bootstrap+spring boot框架,实现用户管理,题库管理、成绩管理、考试自动组合出卷与评卷管理等功能。本框架能够减少底层开发工作量,系统模块之间具有高内聚、低耦合的特点,进而提升系统的可用性和可维护性。本系统能满足各科课程教学考试考核需求,简化并改善传统纸质考试模式,提高考试效率与学院信息化建设。

在线考试系统;Bootstrap;spring boot框架;信息化

随着计算机技术的不断发展,校园信息化建设程度已是评估一个学校现代化发展的重要指标,这其中就包含教学信息化建设,传统的期中期末考核测试,由于它涉及试卷命题的组织,打印试卷,考试流程安排,人工阅卷等主观因素,是教职工期中或是期末的一项重要任务,从出卷、考试到批卷,时间长,工作量大,严重阻碍了我院信息化建设的发展。我院有数千名学生,每次考试时,监考教师和考场都不能满足需要。建立一套具备现代化的、新型的在线考试系统是尤为重要。

我国在线考试系统在一些专业技能考试上应用较为成熟,如国家普通话等级考试、计算机高新考试、车辆驾考中的科目1 科目四考试等,而在高职院校中应用于通识课、专业课的在线考试系统还不太成熟,目前缺乏通用性,所以本考试系统在设计上,更强调阶段性,高校通用性及简捷性的测试方式。

1 在线考试系统的技术分析

Spring Boot是一个简化Spring开发的框架。它整合了很多优秀的框架,去繁就简,立即就能创建一个独立的,产品级的应用。此项目中使用Spring Boot时只需要配置相应的Spring Boot就可以用所有的Spring组件,不用自己手动的去写一堆xml配置然后进行配置[1]。Spring Boot将所有的功能场景都抽取出来,做成一个个的starters(启动器),只需要在项目里面引入这些starter 相关场景的所有依赖都会导入进来。要用什么功能就导入什么场景的启动器。

Bootstrap简洁、直观、强悍的前端开发框架,让Web开发更迅速、是最受欢迎的 HTML、CSS 和 JS 框架,用于开发响应式布局。编译后的文件可以快速应用于任何web项目[2]。

在线考试系统总体架构主要包括三层,分别是表示层、业务逻辑层和数据访问层。表现层主要是用户通过浏览实现各个界面的操作,如用户添加、测验查询、题库查看等。业务层主要包括题库管理、试卷管理、考生信息管理、成绩管理、考试管理、题型管理等具体的业务功能[3]。数据访问层主要是对用户信息及操作信息、题库数据、试卷数据、成绩数据等进行处理及存储,三者的相互交互构建了在线考试系统的总体架构[3]。

2 在线考试系统功能设计

本设计采用框架开发法,使用Bootstrap+spring boot框架来开发在线考试系统,完善系统考试功能。以问卷的形式获知管理员、教师、学生的需求,并且获取用户体验数据,作为反馈系统设计开发的参考数据。系统功能需求上,拥有简洁美观的操作界面。本系统的用户可分为管理员、学生和教师用户三类。他们之间的功能如图1所示:

图1 在线考试系统功能图

管理员功能:主要负责基本资料,科目,用户,成绩,试卷、系部的管理等;管理员可以对用户的资料进行查询、删除。

教师功能:包括试卷管理,题库管理,成绩管理。可以从课程,各种题型的数量等方面对某份试卷提出一定的要求并生成试卷。同时,还可以对库中已有的试卷进行修改和删除,添加新试卷等。教师可以设置题干、答案等属性。教师登录要负责对题型、试卷生成,阅卷管理等,对学生做错的题目进行分析。可以查看考生的考试成绩,并针对不同的课程进行成绩统计,包括考试人数、最高分、最低分、平均分以及各分数段得分人数等。

学生功能:可在线考试及成绩查询。考生可在规定时间内进行在线考试,考试结束后,系统会根据系统题库中已有的标准答案进行自动评卷;考生可在线查询以前参加过的各科考试成绩。

3 系统模块设计

(1)用户管理

注册登录:用户通过页面点击注册,使用邮箱或手机号码,选择身份注册,用户输入正确的用户名与密码,系统自动通过搜索数据库进行身份认证,只有找到相应的用户信息才能进入系统,进入系统前,系统又会自动搜索数据库,根据此用户是学生还是教师进行判断,进入到相应的考试系统界面中。个人信息修改:进入到个人信息中心,可修改个人信息,如姓名、电话号码、密码等修改。用户通过前端以学生、教师的身份登录系统,管理员由指定的地址进入后端,管理员不能进入前端,学生与教师不能进入后端,保证系统的安全性。学生用户可以修改自己的个人信息与个人密码,学生信息以班级为单位,任课教师可将所任课的班级学生信息批量导入,也可以通过老师的邀请码登入任课教师的班级[4]。教师用户可以修改个人信息,试卷信息,科目信息等;管理员可通过后台修改学生用户与教师用户的信息、试卷信息、科目信息及成绩管理等。用户信息表如表1所示。

表1 用户信息表

用户注册方法

@ApiOperation(value = "用户注册", notes = "用户注册信息", response = UserRegristForm.class)

@ApiImplicitParams({

@ApiImplicitParam(paramType = "query", name = "username", value = "用户名", required = true, dataType = "String"),

@ApiImplicitParam(paramType = "query", name = "email", value = "邮箱", required = true, dataType = "String"),

@ApiImplicitParam(paramType = "query", name = "telphone", value = "手机号码",required = true, dataType = "String"),

@ApiImplicitParam(paramType = "query", name = "password", value = "密码", required = true, dataType = "String"),})

@PostMapping(value = "/register")

public String handleUserCreateForm(Model model, @Valid @ModelAttribute("form") UserRegristForm form, BindingResult bindingResult) {

if (bindingResult.hasErrors()) {

model.addAttribute("error", bindingResult.getFieldError().getDefaultMessage());

return "register";} else if (userResitory.findByEmail(form.getEmail()) != null) {

model.addAttribute("error", "邮箱已被注册"); return "register";}

else if (userResitory.findByTelPhone(form.getTelphone()) .isPresent()) {

model.addAttribute("error", "手机号已被注册"); return "register";}

else if (!form.getPassword().equals(form.getRepassword())) {

model.addAttribute("error", "密码输入不一致"); return "register";}

User user = userService.registerNewAccount(form);

(2)科目信息管理:对考试科目与对应课程进行设置

表2 科目表(Subject)

科目信息显示与修改代码如下:

(3)试卷信息管理

试题类型分为单选题、多选题、判断题、填空题和分析题,教师逐个题型或逐题上传生成试卷及对自己上传的试卷进行修改、删除、查询.;试卷信息主要包括科目类型、试题类型与试题题目的建设3个方面。主要是由任课教师完成。任课教师需要在数据库中增加考试科目,也可以对现有的科目进行修改、删除,并将数据保存在试题表单数据库中[4]。添加试卷及生成试卷实现代码如表3所示:

表3 试卷信息表

添加试卷信息功能部分代码如下:

@GetMapping(value="/examAddition")

public String AddExam(Model model){

List subjectList=subjectRepository.findAll();

log.info("subjectList科目显示"+JSON.toJSONString(subjectList));

model.addAttribute("subjects", subjectList); return "examAddition";}

@PostMapping(value="/examAddition")

public String AddExam(Model model, @ModelAttribute("form") AddExamForm addExamForm){ Exam save= iExamService.save(addExamForm);

if (save != null) { model.addAttribute("result", "成功");}

else { model.addAttribute("result", "失败");}

return "examAddition";}

(4)试卷评审管理

学生通过选择科目类别,点击开始考试按钮,系统据设计好的各题题量自动出题,学生即可在线考试,在考试过程中,可以反复提交答案,以最后一次提交为准。点击结束考试,或者考试时间结束的时候,系统停止考试,自动评分。评审时,单选题、多选题、判断题、填空通过与数据库的答案一一匹配来评审,问答题通过模糊匹配,搜索与数据库标准答案的关键字来进行评审。教师也可手动修改评分。使用机器学习中的knn算法和贝叶斯算法,针对学生考试情况进行分析,在学生下一次考试,或是下一届考生时,基于前几次的错题知识点分析,系统自动出卷的内容会针对这些错题知识点而更加关注[5]。评审表信息如表4所示。

表4 评审表

自动评审试卷代码如下:

Public String taking(Model model,@ModelAttribute("addQuestion") TakingExamForm takingExam,HttpServletRequest httpRequest)

{HttpSession session = httpRequest.getSession();List answerList = new ArrayList<>(); Integer uid = (Integer) session.getAttribute("uid");

Integer examid = Integer.valueOf(httpRequest.getParameter("examid"));

Listsingle= questionRepository.findAllByExamIdAndQuestionTypeOrderByQuestionTypeAsc(examid, "1");

Listdx= questionRepository.findAllByExamIdAndQuestionTypeOrderByQuestionTypeAsc(examid, "2");

Listtk= questionRepository.findAllByExamIdAndQuestionTypeOrderByQuestionTypeAsc(examid, "3");

Listpd= questionRepository.findAllByExamIdAndQuestionTypeOrderByQuestionTypeAsc(examid, "4");

Listwd= questionRepository.findAllByExamIdAndQuestionTypeOrderByQuestionTypeAsc(examid, "5");

表5 考生单选题答案表(UserSingleAnsewr)(多选题类同)

字段名类型说明 id自动编号主键码 userId文本用户ID examIdVarchar试题ID userSingleAnswerint考生选择答案

(5)考生成绩管理

学生可以查看成绩、导出成绩、自己的成绩在班级的排名,教师可以查看班级学生的考试成绩、每个学生的成绩排名、导出成绩。成绩表如表6所示。

表6 成绩表

考生成绩显示:

public String showScoreAndExamName(HttpServletRequest servletRequest, Model model) {

HttpSession session = servletRequest.getSession();

Integer uid = (Integer) session.getAttribute("uid");

List scoreDos = new ArrayList<>();

List scores = scoreRepository.findAllByUserId(uid); for (Score score : scores){

Exam examname = examRepository.findAllById(score.getExamId());

log.info("examnamevexamnameexamname11"+ JSON.toJSONString(examname));

ScoreDo scoreDo = new ScoreDo();scoreDo.setExamname(examname.getExamName());

scoreDo.setScore(score.getScore());scoreDos.add(scoreDo); model.addAttribute("scores",scoreDos); log.info("scoreDo成绩信息为:"+scoreDo); }

return "/studentscore";}}

(6)系统的非功能性分析

学生信息、试卷信息与成绩的管理对系统的安全性及保密性是较高的要求。学生在校成绩是终身存档,系统需要存储大量的试卷数据、用户信息,因此需对数据库进行优化;在可维护性上,系统需要有自动备份的功能,防止各种意外的产生而造成数据丢失;安全性:在数据库中,对用户密码使用MD5加密,防止因数据库被人攻击,而对用户造成的直接损失,管理员只能在特定的网络中才能登录后台系统,防止网络在传输中,被人抓包,导致数据泄露[6]。

4 系统部署环境

在线考试系统的特殊性,确保考试期间出现意外如断电等,能快速恢复相关信息。完善错误处理机制构建,避免单点故障、服务器采用集中管理、统一配置。当某些应用访问量升高时,通过增加服务器节点达到整个服务器集群的性能稳定,该Web前端系统基于Tomcat主机平台,提供服务端程序运行环境。

5 总结

本在线考试系统应用Bootstrap+spring boot框架进行开发,采用B/S 架构,在实现考试功能的基础上不用过多的安装考试客户端,满足了原有考试教学辅助能力不足的问题,考试端无须特殊的计算机硬件要求,节省考试成本,提高工作效率,为学院校园信息化、示范性建设添砖加瓦,本系统不仅能实现选择题、判断题等客观题的自动阅卷,还能实现主观题的自动阅卷,可通过扫描班级二维码加入班级中。随着系统的应用,继续加强对主观题的自动评卷及成绩管理这个模块,在应用中发现问题,改进问题,使该系统应用范围更广,更好地为学院教育教学提供便捷的服务。

[1]钟叶.Bootstrap框架在响应式Web开发中的应用与研究[J].科技广场,2017(02).

[2]丁莲,张玲,杜巍.基于BootStrap的WEB前端开发应用研究[J].电子制作,2016(20).

[3]史永哲.大型在线考试系统的设计与实现[J].电子设计工程,2016(07).

[4]金圣道.在线考试及试卷分析系统的设计与实现[J]. 电子技术与软件工程,2018(07).

[5]叶惠仙,黄伟刚,沈文杰.基于ThinkPHP框架的高职校在线考试系统的设计与实现[J].网络安全技术与应用,2019(06).

[6]谭敏,范强,童宇.在线考试系统的研究与设计[J].信息通信,2017(09).

院级科技类科研项目(2019JS013)。

猜你喜欢

科目框架试卷
有机框架材料的后合成交换
框架
多科目训练见招拆招练硬功
高考“新科目”
Module5 A Trip Along the Three Gorges
Module5 Great People and Great Inventions of Ancient China
Module 4 Sandstorms in Asia
Module 1 Europe
关于原点对称的不规则Gabor框架的构造
我国在WYO框架下面对的贸易保护现状及应对