张旭 易翔 李雨桐 王玲
摘 要:传统考试需要人工出题、排版,设计答案和答题纸,撰写上交学校的各种相关资料,工作量大,耗时长,因此设计了基于SSSDJ框架(Spring、SpringMVC、SpringDataJPA)的智能组卷系统,该系统提供智能组卷、题量分配、指定题目、题库下载等功能。系统设计完成后对试卷模板进行了测试,测试结果表明,该系统能够实现高效智能组卷的目标,并能够同步生成各种所需材料。
关键词:SSSDJ框架;智能组卷系统;交互式Web应用
中图分类号:TP311.1 文献标识码:A 文章编号:2096-4706(2023)07-0042-04
Abstract: Traditional examinations require manual qureseion setting, typesetting, designing answers and answer sheets, and writing all kinds of relevant materials submitted to the school, which is a heavy workload and time-consuming. Therefore, an intelligent test paper generation system based on SSSDJ framework (Spring, SpringMVC, SpringDataJPA) is designed, which provides functions such as intelligent test paper generation, test volume allocation, designated questions, and test bank download. After the system design is completed, the test paper template is tested. The test results show that the system can achieve the goal of efficient and intelligent test paper generation, and can synchronously generate various required materials.
Keywords: SSSDJ framework; intelligent test paper generation system; interactive Web application
0 引 言
信息化技術以及计算机技术的不断更迭,促使现代化教育与计算机技术相融合,传统的考试方式也面临着大变革。传统考试方式需要耗费大量的人力成本和时间成本来组卷,很多学者针对此问题展开研究,有基于动态抽题算法设置适应度函数并构建系统流程[1],但组成试卷形式较单一,很难满足多课程需求;有利用Springboot+Vue进行学生弱项分析[2],可以作为组卷的依据之一;有研究单一学科系统设计[3],不同学科会有不同的形式需求,因此较难扩展;还有基于遗传算法[4]设计组卷策略,但算法复杂度较高。针对当前缺少操作简单、界面清晰、功能便捷且能够满足多学科需要系统的现状,力求通过提高组卷效率同时满足特定教学需求的目的。
1 研究背景
以某高校为例,出一份完整试卷需要编排“A试卷”“A试卷答案”“A试卷答题纸”“A试卷考试命题计划表”“高校试卷送印审批登记表”,还需编排出一套满足不同重复率的B试卷。从工作量上来说就是一个不小的“工程”,还需考虑其综合性、实用性和针对性等。
2 组卷系统软件设计
2.1 技术框架介绍
组卷系统的呈现方式是一种交互式网页界面,JavaWeb是一种互联网开发技术,基于JavaWeb可实现前后端开发分离,因此JavaWeb成为系统开发首选技术,早期JavaWeb是基于JSP[5]开发方式,这种开发方式效率较低,且开发过程中难以定位错误代码段,不利于团队分工合作,开发效果达不到预期,因此最终选择以Springboot+Vue的开发方式设计智能组卷系统,旨在提高组卷效率,降低出卷时间成本。
2.1.1 前端技术框架
Vue是一款用于构建用户界面的JavaScript框架。它基于标准HTML、CSS和JavaScript而构建,并提供一套声明式、组件化的编程模型。无论简单界面还是复杂界面,Vue均可胜任。
前端采用prime Vue来编写,prime Vue代码编写简单,易于理解,方便后期代码维护且利于后期系统界面更新,最突出的优势在于可以对数据进行双向绑定。相较传统超链接进行页面的切换与跳转,prime Vue使用的是路由,而不用刷新页面。prime Vue是单页应用,加载时不用获取所有数据和Dom,提高了加载速度,优化了用户体验。prime Vue的第三方组件库丰富,使用方便,提高了开发效率。
2.1.2 后端技术框架
Spring Boot实现了自动化配置,相对Spring来说只需进行一些必要的配置即可。在使用Spring的时候,需要编写大量的xml配置文件,在这个xml配置文件中会书写大量的Bean实例以及一些其他配置。而SpringBoot做了大量封装,替代原有的xml配置,并做了简化,使得代码逻辑更加清晰,后期阅读更加简单。Spring MVC属于SpringFramework的后续产品,已经融合在Spring Web Flow里面。Spring MVC分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易定制。
后端采用Spring Data JPA而没有采用主流的Mybatis,Spring Data JPA简化了接口层的开发,相对于传统的JPA实现(hibernate-jpa、openJPA),如果使用SpringDataJPA完成代码,可以做到DAO层零实现,还可提高封装度。SpringData对JPA的实现提供了良好的API支持,可更加快速地完成对数据库的操作——SpringDataJPA提供了一些常用的CRUD抽象方法,供直接调用。
2.2 数据库和模板设计
2.2.1 数据库
采用MySQL数据库,MySQL性能卓越,服务稳定,很少出现异常宕机,开放源代码且无版权制约,自主性强,使用成本低,软件体积小,安装使用简单,易于维护、安装并且维护成本低。MySQL不仅可以在Windows系列操作系统上运行,还可以在UNIX、Linux和Mac OS等操作系统上运行。因为有很多用户选择UNIX、Linux作为网站服务器,MySQL的跨平台性保证了其在Web应用方面的优势。虽然微软公司的SQL Server数据库是一款优秀的商业数据库,但是其只能在Windows系列操作系统上运行。因此,利用MySQL数据库的跨平台性可将组卷系统移植到内网服务器上,适用于校园网服务。
建立“course”表,保存课程信息,包括课程名称、课程代码、所属学院、测试学院、测试班级等字段;建立“question”表,保存考试题目,包括题目、答案、所属学科、难度等级(基本、中等、提高)、题目类型(填空、选择、判断……)、题目ID、考核知识点、考核要求、分值等字段;建立“user”表,保存用户信息,包括用户名和密码字段。
2.2.2 建立试卷模板
采用xml语言预制试卷模板,标记占位符,利用后台HashMap集合来存储题目信息,最终生成考卷。Word本身具有非常强大的文字处理功能,是日常泛化使用的工具,而在组卷系统的设计中,技术问题聚焦于如何用Java操作Word。在基于技术选型后,发现XML是最佳的技术手段——首先用Office编辑Word样式,然后另存为xml,将xml翻译为FreeMarker模板,最后用Java来解析FreeMarker模板并输出Word文档。在繁琐的试卷设计中,可以保留核心通用部分,而通过外部包的方式联系Word和Java,替换Word模板中的占位符,使组卷系统可以随意更改内容,使试卷本身具有内容易控,打印不变形,完全符合Office标准的优势。标记方式如图1所示。
2.3 组卷系统核心算法设计
考虑到试卷的随机性和综合性,系统采用较为暴力的算法——按照比例随机抽取。用户在首页设置基本、中等、困难三种难度题目所占百分比,系统按照用户设置的百分比从数据库中随机提取不同难度的题目,同时将题目相关信息也都提取到系统中,为生成其他资料所用。流程图如图2所示,算法伪代码如下:
AllQuestionList - 所有题目列表
EasyPercent - 基本题比例
MedPercent - 中等题比例
HardPercent - 困难题比例
QuestionNumber - 题目总量
EasyQuestionList-基本题列表
MediumQuestionList-中等题列表
HardQuestionList-困难题列表
QuestionList-所选中的题目列表
EasyQuestionList=AllQuestionList->Easy;
MedQuestionList=AllQuestionList ->Med;
HardQuestionList=AllQuestionList->Hard;
for(i=0;i { Start: for(j=0;j { List=EasyQuestionList->random; for(k=0;k { if (QuestionList[k].equals(list)==true)break; } if(k==QuestionList.length) QuestionList[j]=list; elsej--; } Medium,Hard->Start; } End; QuestionList.put(“試卷.doc”); 2.4 系统主要功能设计 2.4.1 管理员登录 进入系统会首先进入管理员登录界面,需要输入管理员账号和密码,账号一般为命题人姓名全称,密码由管理员设置。由于涉及到教育保密问题,故未安排注册功能,当前仅设置管理员可以进入系统。 登录系统时,管理员输入账号和密码,后台通过UserController.Login()方法调用userService.Login()方法,通过userRepository.findAllByUsername()接口方法来判断该用户是否为管理员,若该用户是管理员,则通过user.getPassword().equals(user1.getPassword())方法判断密码是否正确,密码正确则进入系统,密码错误则提示“密码错误”;若该用户不是管理员,系统则提示“该用户非管理员”。 2.4.2 智能组卷 管理员登录成功进入系统后,可以编辑首页信息,需要填写对应的试卷信息(如学年、学期、课程名称、课程所属部门、课程编号、考试方式、使用学院、使用班级),还可调整基本、中等、困难三种难度题目的占比,以百分制形式输入。点击“设置”按钮可进入设置界面,选择题量分配,可分配题目类型、题目数量以及每题分值等。 管理员编辑试卷信息后,点击“生成”按钮,后台通过MessageController.getMessage()方法获取管理员所填写的信息,调用questionService.FindAll()方法,通过questionRepository.findAllByCourseAndTypeAndLevel()接口方法获取数据库中该课程的所有题目,并按照难度分成EasyQuestionList、MediumQuestionList、HardQuestionList,将所有信息传输到testApplication类中,通过getRandomNumList()方法函数确保题目不重复,再通过test()方法中的组卷算法生成试卷,Answer()方法对应生成答案,answerSheet()方法对应生成答题纸,getSurplusProcess()方法对应生成命题计划表,propositionalSchedule()方法对应生成送印审批表等。 2.4.3 题库下载 对于学生而言,学习是他们的本职工作,但每个学生的学习方式各不相同,而学校的教育方式基本上都大致相同,所以难免会有学生不能接受传统的教育方式,学习成绩自然也就一落千丈,而为了帮助这些同学更好地学习和复习知识,系统设置界面设有“题库下载”功能,教师可自行下载一些题目提供给考生复习之用。题库下载功能也能方便教师查看题库中的现有题目,并且可以对题库进行优化。 管理员进入设置界面,选择题库下载,键入课程名称,后台通过QuestionController.questionBank()方法获取课程名称,调用testApplication.questionBank()方法生成题库,通过testApplication.bankCompress()将题库压缩为“bank.7z”格式,通过BankDownload()方法利用java中的output Stream文件输出流将后台打包好的文件传输给管理员。 2.4.4 信息录入 随着教育研究的不断深入细化,考题也需随之更新,系统设置界面设有“题目录入”功能,管理员可自行录入新题,并对新题目做好标记。系统设置界面还设有“管理员录入”功能,只可以在系统内部添加管理员,防止他人恶意登录系统。 管理员进入设置界面后,选择题目录入,输入新题相关信息,后台通过QuestionController.save()调用questionService. Save()方法,通过questionRepository.save()方法按照Question实体类的字段将管理员键入的题目保存到数据库“question”表中。选择管理员录入,输入新管理员的用户名和密码,后台通过UserController.save()调用userService.Save()方法,通过userRepository.save()方法按照User实体类的字段将新的管理员账户加入“user”表中。 3 功能实现 管理员输入账号密码登录系统后,键入试卷信息,后台通过*Controller()方法获取信息,通过testApplication.*()方法生成好试卷打包压缩为“out.7z”后传输给管理员,图3为管理员交互界面,首页提示管理员若不设置题目数量,會按照默认的“5题填空、5题选择、5题判断、5题简答、3题综合”格式进行组卷,右上角会显示当前登录的管理员,组成的试卷上“命题人”即为当前登录的管理员,设置界面设有信息录入、题库下载、题量分配、返回首页等功能,需要退出系统可点击管理员图标,点击“Exit”按钮即可退出系统。图4为组卷系统生成的试卷,利用图3中管理员输入的试卷信息,根据图1试卷模板所生成,完全符合office格式要求。 4 结 论 经过测试得知,系统能够高效率完成组卷任务,所生成的试卷符合考试要求,难易程度把握较合理,同时能够兼顾考题的综合性、实用性、针对性等。核心算法是一种较为暴力的组卷算法,使得所组成的试卷充满不确定性,通过系统的其他功能可以对试卷题目进行人为控制,提高系统的完整性。根据每个学校考试的试卷模板,重新制作即可推广使用,使系统的可扩展性很强。系统运行效率依赖于网络性能,网络瘫痪也会导致系统瘫痪,后期可根据需求改良为本地模式。 参考文献: [1] 胡荣.基于动态抽题算法的智能组卷系统设计 [J].信息与电脑:理论版,2021,33(12):42-44. [2] 施展,朱彦.基于Vue与SpringBoot框架的学生成绩分析和弱项辅助系统设计 [J].信息技术与信息化,2022(8):127-131. [3] 魏路通.卫生统计学智能组卷系统设计与实现 [D].北京:北京协和医学院,2021. [4] 赵博,宁慧,张汝波.基于遗传算法的智能组卷系统的研究与实现 [J].应用科技,2021,48(2):50-53. [5] 杨子鑫,余小兰.基于SSM的农产品销售系统的设计与实现 [J].现代信息科技,2021,5(15):33-35+39. 作者简介:张旭(1982—),男,汉族,江苏宿迁人,讲师,工学博士,研究方向:信息技术、网络编程;易翔(2000—),男,汉族,江苏溧阳人,本科在读,研究方向:软件技术开发;李雨桐(2001—),男,汉族,江苏溧阳人,本科在读,研究方向:软件技术开发;王玲(2000—),女,汉族,江苏镇江人,本科在读,研究方向:网络技术。