APP下载

OES在线考试系统关键技术的研究与实现

2020-02-22陈岳欣蔡柳萍

电脑知识与技术 2020年36期

陈岳欣 蔡柳萍

摘要:OES在线考试系统是一个以高校为背景构建的在线考试系统,意旨为高校提供一套完整的权限化校园在校考试解决方案,以此降低出卷成本,提高阅卷效率,展现教学公平性、教研科学性,实现教育智能化。系统包含在线考试、成绩分析、试题与试卷的信息维护、权限指派等功能,实现了整个考试过程的自动化控制和数据信息化、权限化管理。随机抽题组卷(丰富的组卷方式)、每次进入随机刷新试题顺序、主观题辅助评分并且可由老师复查主观题给出最终分数是本系统的三大创新点。该文针对在线考试系统的三大创新点进行了深入的研究和分析,最终实现的系统具备高可用、细粒度交互、高效率等诸多优势。

关键词:权限化;随机组卷;辅助评分;高可用

中图分类号:TP311      文献标识码:A

文章编号:1009-3044(2020)36-0092-03

1 系统介绍

一個符合现代化市场需求的在线考试系统,不仅要有完善的权限管理和过程控制以体现在线考试的优势,同时还要体现关键技术点和系统性能优化,诸如智能评分、多样化随机组卷和系统高可用性等。可靠的权限管理可以有效限制不同角色用户的系统模块操作权,并且细化到对具体功能的使用;自动评分利用数学运算带来高效准确的分数计算,同时利用相似系数算法辅助主观题评分结合复查功能,可以充分发挥算法便捷性以提升教师阅卷效率;难度可控、题型可控的随机组卷功能可以让教师组合出的试卷不但类型多种多样,难度也分布适中;在高可用软件架构的加持下,充分利用服务器与中间件的资源,提高考试排队效率,让更多用户可以稳定地加入考试中来。OES在线考试系统正是以以上需求为基准进行功能规划和设计的。

1.1 开发技术

OES 在线考试系统开发流程包含服务端开发和前端页面开发。服务端使用Spring Boot作为主体支撑框架,内置丰富的WEB开发控件、数据交互组件和工具类库,以此作为服务基础能力提供者,数据访问层使用MyBatis轻量ORM框架,实现服务层的数据读写,这两个重要应用技术的结合是实现高可用架构的前提之一;数据库使用MySQL进行用户数据持久化和基于Redis实现的分布式会话存储与相关数据二级缓存功能。前端使用AdminLTE 3作为整体的视图框架,使用Beetl作为视图模型控制框架,引入JQuery作为与后端进行异步数据请求的组件,完成相关自动化脚本代码执行、数据视图渲染等重要工作。

1.2 软件架构

高可用系统首当其冲需由高可用软件架构进行驱动,良好的软件架构是实现系统高效运行以及高度可靠的核心。本系统以B/S架构模式作为构建的前提,使用业务功能层面高度区分的分层架构,从视图模型到业务逻辑的数据传输,从数据库的数据访问交互层级到应用信息缓存技术的综合应用和中间件部署方案,分别做了对应层级的开发工作。

1)前端视图层实现视图全局刷新与局部刷新,同时引入JSON数据交互功能,通过JSON完成数据交互以实现相关数据渲染和回显,实现视图与JSON数据处理的并存环境,它们是独立的个体,服务端和客户端上均不存在数据上的直接耦合关系。

2)业务层对各模块进行了细致的划分,以角色作为访问控制端点即RBAC模型,通过拆分细化业务分工,降低业务之间的耦合度。这样的处理方案不但能实现代码组件化,提高系统的可维护性和拓展性,也可以为协同开发带来友好的编码体验。

3)数据层包含相关读写操作的事务控制,数据缓存和相关业务的Mapper文件和与数据属性映射相关的配置。使用MyBatis ORM框架完成业务与数据库间的数据交互,建立起业务与数据之间的沟通桥梁。其中系统的全局权限管理交由基于动态代理的前置通知持有,对请求进行权限校验,隔离主体业务,业务侵入程度低,是一个非常实用的系统权限管控解决方案。

4)数据库方面使用MySQL对系统数据进行持久化,建立数据库主从同步架构以实现数据读写分离,数据库读写实现物理级的隔离,从根本上提升系统数据库的读写能力,同时,数据库主备架构可以为数据库故障带来降低风险、更完整的备份与恢复能力等主动容灾策略,在发生故障的时候可通过主备切换保证系统能够持续运行。使用Redis实现了分布式会话管理,便于集群化部署时能统一接管用户会话。如图1所示为本系统的软件架构图。

2 关键技术的实现

OES在线考试系统的关键技术包含随机抽提组卷,随机刷新试题顺序和主观题辅助阅卷三项,这三项关键功能的实现所使用的关键技术和实现策略各不相同。

2.1 随机抽题组卷

随机抽题组卷是发布试卷的方式之一,也是本考试系统的核心功能点之一。依据设计要求实现,对提交的试卷信息根据指定专业、指定题型从题目库中随机抽取试题编号,对于指定难度的筛选则会在抽取试题编号之前将指定难度的题目查询出来。利用随机算法组合出题目编号集合,并将试卷信息插入试卷表中。如果试题不够,则会在进行随机的时候抛出异常,由试卷控制器捕捉异常,在前端页面弹出提示。详细的随机抽取流程是随机抽题组卷的实现策略,首先借助本系统试题库,使用考试科目编号、试题数量、试卷题型分布和试题难度这四个可选条件,利用XML标签构成一条动态的SQL查询语句,通过业务请求后获取符合筛选条件的数据集合,按照本系统的随机抽题逻辑,首先对查询后所得到的结果集合长度与目标题目数量进行简单的长度比较,符合长度的情况下再进行一层的判断,通过Java内置的随机函数库Random,以目标数量为终点索引组成随机分布题目编号,目标长度与集合长度相等的情况下则不进行随机,此时不启动随机函数库进行相关计算,直接引用集合内的试题对象数作为试卷试题。这样的预判逻辑在符合后者的情况下,可以节省系统随机库启动带来的线程资源消耗,也可以减少堆的垃圾回收工作。最后一种情况指题目数量不够的,可以直接结束抽题方法的进一步执行,直接抛出异常信息,交由系统全局异常处理器进行异常响应数据体的封装,由前端响应“相关题型的题目数量不足”的友好回调信息,让使用者知晓在其设置的这种组合条件下无法满足题库给出足量的题目进行组卷,需要进行修改,或者录入相关的试题补充该题目在题库中的数量。同时,教师可以通过导入的方式进行组卷,在导入试题出卷后,在提交试卷信息之前可以选择是否抽取题库中任意题型和题量对试卷进行题目的补充,提高试卷丰富度。例如,教师可以导入一张只有选择题、填空题和判断题的试卷,主观题和多选题可由教师自己决定是否由系统自动抽取相关类型题目对试卷题型进行题型补充,且可自由决定抽取部分题目的难度,起到对试卷题目的丰富作用,系统的随机抽题组卷流程图如图2所示。

2.2 随机刷新试题顺序

随机刷新试题顺序是本系统的考试反作弊策略之一,不但可以有效防止学生对答案行为这种作弊行为,而且在题量大的情况下,经过打乱后的试题,其题目顺序分散程度会更加显著,防舞弊效果更佳。学生进入考试之后,不同考生之间的试卷题目顺序是不一样的,刷新考试页面也会导致试题顺序重排。这里使用了Java工具集合类内的集合随机排序算法实现集合元素的随机重排序,实现题目乱序。其具体的实现策略是先根据试卷编号获取试卷题目信息,接着在题库中检索相应题目的数据集合,通过集合内建静态方法shuffle打乱集合中所有元素。shuffle使用Random静态变量获取随机数对象,首次使用初次初始化的对象,以此降低该方法的初始化成本,接着会对集合元素进行循环,利用内建交换元素方法完成随机索引位置置换,方法内部的具体实现是使用循环的方式更替集合内的元素,同时维护着一个有效索引集合,每完成一次循环便从有效索引集合中移除一个有效索引位置,在该数组内进行索引随机定位,最后以迭代方式组件出新试题集合,由此达到打乱集合内元素的效果。

2.3 智能阅卷(主观题辅助评分)

自动阅卷是考试过程自动化控制的重要体现之一,对客观题而言其答案唯一,而主观题往往考查考生的知识面。主观题自动评分利用了相似系数进行文本比较,通过Jaccard相似系数计算算法计算题目得分,当文本关键词匹配越多,相似度就越高;利用相似系数计算基础得分后计算学生答案长度,当长度与正确答案字数差距达到设定阈值时,会在基础分上扣减分数,分数使用小数格式化对象进行计算和向下类型转换,确保得分精度偏移尽可能最小化,同时使用快速失败法,率先判断学生提交答案是否为空,空值说明未作答直接得零分,反之进行计算。该计算方法使用了工具类进行了独立封装,对外只暴露一个评分静态方法,根据题目对应的题型编号,使用switch语法判断并选择对应的计算方法进行评分,此处体现Java语言封装特性。完成试卷评分之后会得到考试成绩,此时,系统为学生提供了考试相关的分数统计报表和错题集等信息,给学生提供了完整的考试体验,学生查询到错题与实际得分有出入可向老师提出复查请求,教师可以根据实际情况重新进行判定,是否修改系统阅卷所得分数,并给出的相关评分理由。

2.4 动态权限访问控制

动态权限是系统业务权限化的重要体现,既要突出业务与权限之间松耦合,实现可配置化的灵活的控制,又要实现权限与用户角色间的关联性,突出系统的是围绕着角色访问控制(RBAC)这一基础安全特性来开发的,权限化系统使得不同角色的业务功能区别明显,有明显的区分度,这便是RBAC模型所要实现的事情。权限管理在本系统中地位十分重要,它区分了用户身份,限定了用户的权限等级(角色),不同用户登录系统能够获得不同的权限,完成各自的功能,保证系统在不同的场景都能够稳定运行,系统利用Spring框架优秀的面向切面编程思想,使用动态代理的方式实现了接口权限控制,具体的实现策略是防止执行前有一层代理来实现用户请求鉴权,配合自定义注解和环绕通知对用户发起的请求做权限校验,同时会缓存用户权限以降低数据库的访问压力,最终实现权限校验对系统业务的零入侵。

3 结束语

本系统综合多项现代应用技术,利用在线考试的优势和核心技术实现,构建出一个更加符合真实考试和线下阅卷场景的在线考试系统,同时引入多方面的反作弊策略,补足传统在线考试系统在评卷和反作弊等方面的短板,为教师和学生带来更加贴近线下考试场景的体验,以角色访问控制作为鉴权的载体,利用Spring框架提供的诸多特性,为系统的细粒度权限控制、数据交互等基础设施建设工作带来更为高效便捷的实施环境。

参考文献:

[1] 李继伟.基于ASP.NET和Ajax技术的在线考试系统关键技术研究[J].电子测试,2020(14):74-75,85.

[2] 赵英萍,毛玉萃.基于Java Web的在线考试管理系统的设计与实现[J].电脑知识与技术,2020,16(19):47-48,51.

[3] 庞希愚,王成.高校程序设计类课程网上考试自动组卷方法的研究[J].中国教育信息化,2020(14):93-96.

[4] 杨伟凡.基于Java技术平台的在线考试系统的设计与实现[J].卫星电视与宽带多媒体,2020(3):99-100.

[5] 潘宏.高校学生考试系统的设计与实现[J].信息与电脑(理论版),2020(1):76-78.

【通聯编辑:谢媛媛】