基于JSP随机组卷考试系统的设计
2020-02-05顾亚文
顾亚文
(金肯职业技术学院 江苏省南京市 211156)
传统意义上的纸笔考试模式有出卷、分发、阅卷等诸多流程,而由人工来完成这一系列工作不仅颇为繁琐,而且存在很多如泄题遗漏等人工导致的风险[1]。而随着计算机的高速发展,这些相对固定的复杂流程可以由软件来完成,不仅可以节省大量人力物力的成本[2],还可以有效的提高教师的工作效率。本篇论文提出一种基于B/S 架构的随机组卷考试系统的设计方案,用以解决在考试中因人为因素可能导致的诸多问题。
1 总体设计
1.1 需求分析
根据设计的需求,考试系统需要完成在线考试与题库管理两大功能[3,4]。具体来说,教师需要能借助于此系统快速完成出卷和阅卷,出卷时应该能根据现有题库快速的生成合理题型与适当难度的样卷,阅卷时除了主观题都应由系统完成批改。学生可以在系统中正常的完成考试,同时系统应该提供给学生诸如时间、未答题位置等辅助信息[5]。此外,应当有一个管理员模块来负责管理教师与学生的个人信息、题库的状态等项目[6]。
1.2 整体构建
与绝大多数B/S 架构系统相同,该系统可分为服务器端与用户端[7,8]。服务器端:Web 应用服务器采用Apache 的tomcat,数据库使用Mysql5.0 或以上版本。由于JSP 的需要,服务主机需要安装有jdk6.0 或以上版本。服务器端可部署在学校机房性能较好的主机上。用户端:用户主要有使用其考试的学生、利用其出卷阅卷的老师和负责维护的管理员。用户需要在自己的主机中安装Chrome 或其它主流的浏览器,借助于校园局域网和自己的账号密码登录到网站中来完成各自想要的功能。
2 详细设计
2.1 数据库设计
通过上面的分析,不难看出系统涉及到教师、学生、管理员三方面的交互[9],其数据实体有教师实体、学生实体、管理员实体、题库实体、试题实体、课程实体等内容,它们之间存在大量的关联。我们给出部分主要的数据表设计如表1 所示。
2.2 教师客户端设计
不难看出,学生借助此系统只需完成考试与查成绩等较为简单的操作,而管理者更多负责系统的维护,所以本系统主体功能集中在教师客户端上。因此,篇幅所限本节仅描述教师客户端的交互逻辑。教师客户端的页面布局如图1 所示。
表1:数据库中部分关键表的主要设计
图1:教师客户端整体设计
图2:自动组卷流程
图3:教师使用自动组卷流程
2.2.1 教师信息管理与考试信息管理
教师信息管理页面主要负责维护教师本人自身的信息,如工号、院系、密码等个人信息,只涉及到与教师信息表的交互。而考试信息管理页面中,教师可根据现有的考试科目,通过学生的学号等信息添加或删除相应的考生。
2.2.2 题库管理
本页面负责管理自动组卷时需要的试题库。以添加题目为例,教师首先根据课程号等信息选择所需要管理的课程,然后选择需要添加的题型,输入试题的题目内容以及相应的答案,然后设置其分值和难易程度,这些信息都在自动组卷时起到重要作用。另外,查找、删除及修改的功能也都类似于此。
2.2.3 成绩查询与试卷评估
成绩查询页面中,教师可根据班级、学生学号或试卷号等方式来查询对应的考试结果,此页面可便于教师去评估班级的整体水平或试卷的难易程度。而试卷评估页面中,教师可选择查看某份具体的试卷,查看其知识点覆盖程度,以及每道题的错误情况,便于教师进行查漏补缺。
至此,教师部分除核心的自动组卷页面之外,其余页面的功能都已大体描述清楚,下面以组卷算法为主体来描述试卷管理界面的操作。
3 自动组卷算法
文中所使用的是基于遗传算法的自动组卷算法[10,11]。遗传算法是一个启发式方法,其主要包含选择、交叉和变异三大基本操作,因此考虑整体属性而不容易陷入局部最优,常被用于求解多约束优化问题[12],可以借助其方式,能够生成较好的试卷,具体流程描述如下。
首先生成初始试卷[13]:遗传算法求解问题,需要将问题的解空间映射成一组代码串,即染色体的编码问题。由于题库数目可能极为庞大,我们考虑映射单张试卷。因此首先根据题型比例、总分、知识点不重复等要求随机产生一张符合要求的试卷,然后采用实数编码方案[14],将其映射为一个染色体,将组成试卷的每道题的题号作为基因,基因值用试题号表示。
然后设计适应度函数:适应度函数用以评估某试题的合理性,需要人为设置,其设置的好坏直接影响最终的效果。我们认为,在自动组卷时,最难以把控的便是整张试卷的难度和知识点的分布。一般来讲,试卷的难度系数公式如公式(1)所示:
其中i 代表生成试卷中的题号,Di 与Si 分别是第i 题的难度系数和分数。知识点分布采用个体知识点的覆盖率来衡量,例如期望本试卷包含N 单个知识点,而单张试卷中所有题目只是点的并集中包含M 个,则知识点的覆盖率为M/N。记用户期望的难度为EP,则EP 与P 越接近越好,知识点的覆盖率越大越好,因此可简单的设计适应度函数如公式(2)所示:
其中w1 为知识点分布的权重,w2 为难度系数的权重。需要注意的是,适应度函数可根据业务的需要进行更改,读者可设计更复杂更合理的适应度函数以得到更好的效果。
最后设计遗传算子[15]:如前所述,遗传算子主要分为选择算子、交叉算子、变异算子。在本论文中,选择算子根据适应度依照轮盘赌的方式决定某个题目是否被淘汰;交叉算子即将随机将某两份试卷中随机数量的试题进行交换,但保证仍符合各项约束;变异算子则是以一定概率从题库中选择一个符合条件的试题替换试卷中的某题。
因此,从算法的角度来讲,其实现流程如图2 所示。而从教师使用的角度来说,其操作流程如图3 所示。
4 结束语
本篇论文描述了一个基于B/S 架构的随机组卷考试系统,并对教师部分所涉及到的技术做了较为详细的描述。B/S 架构对于考试之类的较复杂场景有着很大的便携性优势,另一方面,更多的诸如微信小程序之类的跨平台应用可能会更为简化校园事务[16],这值得我们去进一步研究实现。