基于Web的在线考试系统设计与实现
Design and Implementation of Online Examination System Based on Web
DOI: 10.12677/SEA.2022.114072, PDF, HTML, XML,  被引量 下载: 353  浏览: 2,431 
作者: 张可昀:浙江理工大学信息学院,浙江 杭州
关键词: 自动组卷自动阅卷在线考试Automatic Test Paper Generation Automatic Marking Online Examination
摘要: 在教学日程中,考试是至关重要的一个环节。教师在考试中检验教学质量,学生在考试中裨补缺漏。教师在过去的教学中,考试一般需要经过出题、审卷、组织考试、刻印试卷、考生考试、阅卷、成绩核查和发布等过程。随着远程教育的兴起,广泛用于在线教育网站的在线考试系统也逐渐开始应用于高校课程的考核中。本文主要设计和开发在线考试系统,旨在帮助教师基于需求组卷和调整试卷,完成自动阅卷、成绩统计。与一般在线考试系统不同,除关键考试功能外,系统设计共享教学资源、班级管理、试题维护等功能,帮助教师和学生了解教学成果,提升教学效率。系统真正实现无纸化考试,保证考试公正性。其自动组卷、阅卷等功能也极大地减轻教师工作量。
Abstract: Exam is of great importance in the teaching process. Teachers test teaching effectiveness and optimize their teaching orientation under the guidance of examination results while students check leaks and fill the vacancy through examination. In the traditional teaching methods in the past, examinations generally need to go through the process of teacher setting questions, reviewing test papers, organizing examinations, engraving test papers, examinee examinations, teacher scoring, performance verification and release. With the rise of distant education, online examination system, which is widely used in online education websites, has gradually been applied to the assessment of college courses. This paper mainly designs and develops the online examination system, which is based on the user’s needs to generate and adjust the test paper to achieve automatic marking and score statistics. Different from the general online examination system, in addition to the key examination functions, the system is designed to share teaching resources, class management, test maintenance and other functions to help teachers and students understand teaching results and improve teaching efficiency. The system truly realizes the paperless examination and ensures the impartiality of the examination. Its automatic test paper generation, marking and other functions also greatly reduce the workload of teachers.
文章引用:张可昀. 基于Web的在线考试系统设计与实现[J]. 软件工程与应用, 2022, 11(4): 690-700. https://doi.org/10.12677/SEA.2022.114072

1. 绪论

1.1. 研究目的与意义

传统的考试方式显而易见存在诸多缺点:(1) 手工出题和阅卷的工作量大,给教师增加负担;(2) 试卷审核和改卷评分过程中出错率高;(3) 学生成绩需要人工录入,不便于管理学生成绩。相较于上述考试方式,在线考试系统根据用户需求自动组卷,同时也给予教师权限去调整自动组卷结果。所有考试客观题内容由系统自动比对,尽可能做到评阅结果准确。根据考生提交的考试结果,汇总考生成绩和试题得分,帮助考生和教师了解学习效果。

本文介绍设计和开发一个在线考试系统,利用在线考试系统的优势,实现在线组卷、自动阅卷和成绩的统计分析,帮助教师更好地完成课程的教学工作,提高教学质量,工作效率也将得到很大提升 [1]。

1.2. 国内外研究现状

对于在线考试系统的研究和开发,目前国内外的一些相关研究机构和大学早已进行了许多探索研究。美国率先开始关于网络考试技术的研究,将计算机模拟考试作为一种辅助考试的手段,并于1983年开始实施。其中著名的思而文公司,开启了计算机化考试模式和远程教育的研究。遍及全球跨一百四十多个国家的两千多个考试中心,支持多种考试类型和语言的优势,使得全球许多知名机构选择思而文为其制定测试内容和测试方式 [2]。

在网络考试技术和模式上的研究,我国起步较晚但发展速度快。上世纪末,我国信息部致力于远程考试系统的开发并取得一定成果。目前,在线考试的形式已广泛应用于英语口语考试、远程教育等诸多场景。

2. 基于Web的在线考试系统关键技术

本章主要介绍了系统使用的相关技术和开发模式,基于Web的在线考试系统使用前后端分离的开发模式。前后端通过HTTP请求进行数据交互,服务端提供接口,前端负责页面内的组织和渲染,系统依靠Node.js平台实现Web应用架构模式。

2.1. Web开发基础技术

2.1.1. HTML5

HTML是万维网的核心标记语言 [3]。HTML最初是被设计为语义上描述科学文档的一种语言。它的整体设计使它能够被调整以描述一些其他类型的文件和应用 [4]。HTML4于1994年成为互联网标准。在2008年正式发布的HTML5技术引入了大量的新特性和新内容。

2.1.2. CSS3

CSS的工作原理是在网页上自定义样式表的选择符,在网页中为元素指定样式,且多个样式定义可以层叠为一个。CSS3是CSS的最新标准。一个主要变化就是W3C决定将CSS3分成一系列模块,如选择器、盒模型、2D/3D转换等 [5]。

2.1.3. JavaScript

JavaScript是一种轻量级、即时编译的弱类型语言 [6]。它基于原型编程,并支持面向对象、命令式和声明式风格 [7]。即时编译指JavaScript无需预先编译,而是将程序代码转化为文本格式交付浏览器进行解释运行,导致程序不够安全。JavaScript弱类型指变量定义无需指定数据类型,变量类型由所得的值类型决定。

JavaScript不依赖于操作系统,仅需要浏览器的支持,因此它具有跨平台、高性能的巨大优势。Ajax使用JavaScript向服务器提出请求并处理响应而不阻塞用户核心对象XMLHttpRequest。通过这个对象,在不需要刷新页面的情况下,就可以产生局部刷新的效果 [8]。

2.2. 渐进式JavaScript框架Vue.js

Vue.js是一套用于构建用户界面的渐进式框架,提供数据驱动的组件和灵活的API,使得MVVM更简单 [9]。MVVM指的是Model-View-View Model,它将View的状态和行为抽象化,实现视图 UI 和业务逻辑的分离。

Vue的核心库只关注图层,采用自底向上增量开发的设计,利用简洁的模板语法来声明式地将数据渲染进DOM [10]。系统管理员端使用Vue开发,业务多关注于数据的增删改查,存在大量重复的代码块。采用组件式开发优势在于Component可以扩展HTML元素,封装可重用的代码;父子组件通信可通过props从父向子单向传递通信,子组件与父组件通过触发事件$emit通知父组件改变数据。

2.3. CSS/HTML框架Bootstrap

Bootstrap是美国Twitter公司推出的基于HTML、CSS、JavaScript 开发的前端开发框架 [11]。

Bootstrap由动态CSS语言Less写成,能够根据设备不同调整CSS。特别地:

1) Bootstrap拥有一个先进的流式栅格系统,能够快速实现响应式布局 [12]。

2) Bootstrap使用许多可重用的JavaScript组件,诸如进度条、弹出框等。

3) Bootstrap支持目前的主流浏览器,跨平台、兼容性较强。

2.4. Node.js平台

Node.js是一个基于Chrome V8的JavaScript运行环境,它使用了一个事件驱动、非阻塞式I/O的模型 [13]。

事件驱动是指“在事务管理过程中处理事务的一种策略,当前时间产生任务则立即调用可用资源,防止事务堆积”。

JavaScript时一种典型的单线程语言,即所有的任务都须在上一任务完成后开始。例如,用户使用I/O操作时,CPU将会一直闲置。为解决单线程带来的性能问题,Node.js使用异步非阻塞式的I/O模型。

3. 基于Web的在线考试系统需求分析

软件需求划分为功能需求、质量需求和约束性需求 [14]。质量需求和约束性需求统称为非功能性需求。本章将从功能性和非功能性需求两方面进行系统需求分析。

3.1. 功能性需求

根据课题主要内容与基本要求,系统应设计学生端、教师端以及管理员端。实现要求的以下功能:1、试题编辑;2、条件设置;3、身份验证;4、自动组卷;5、自动阅卷;6、统计分析。

经过分析和研究,在线考试系统应当实现三类用户的功能需求。面向学生用户,应当允许学生参与班级和考试。对于教师用户,教师除基本的班级管理和资料修改外,能够根据需求自动组卷。对于考生提交的试卷,教师可以查阅考试详细的答题情况,并为考生的主观题打分。为了教学效率的提高,教师可向班级发布一些课程资源或考试资料。管理员用户的主要权限,包括用户信息、试题、试卷、成绩、教学资源等方面的管理。

系统主要的功能可以大致分为用户管理、资源、班级、考试、成绩等内容,功能模块设计如图1

Figure 1. System function diagram

图1. 系统功能模块图

3.2. 非功能性需求

非功能性需求,即信息系统中保证易用性、可靠性、可扩展性、健壮性的需求要素 [15]。

1) 系统可靠性

在线考试系统为考核学生课程考试设计,系统可靠性必须满足要求,否则将

影响到考试结果的有效性和考试的公平性。保证数据库安全,防止数据泄露和篡改,通过严格区分用户权限、限制用户操作实现。

2) 系统可扩展性

本系统是面向高校课程,可根据需求拓展至多科目。

3) 健壮性

系统在用户操作不当时给出提示和引导,例如:在用户空输入某些必要信息

时,提示用户必须输入内容。当系统或硬件环境发生故障时,不可导致用户已提交的数据丢失。

4) 易用性

对于考生用户,在线考试系统界面和操作应当尽量简洁明了,尽快地参与考

试是考生用户关注的问题所在。因此系统引导页帮助学生完成信息补充后,用户登录主页显示当前的考试列表。突出正在进行中的考试,帮助考生快速进入。

4. 基于Web的在线考试系统总体设计

4.1. 系统设计原则

1) 可用性

系统中可能出现的用户操作不当导致的错误,应当完善处理程序。完善代码逻辑,及时发现和处理故障,提高系统可用性 [16]。

2) 可扩展性

考虑到系统的功能扩展和技术体系的发展趋势,在设计时充分考虑系统的各种输入输出需求,预留各单位标准化接口以便系统扩展。

3) 开放性

本系统针对高校课程开发,在系统功能扩充的趋势下,系统应采用标准数据接口,具有与其他信息系统进行数据交换和共享的能力。

4) 可靠性

系统构成必须采用成熟、先进的软件产品和设备,以此保障系统的可靠性和稳定性。

4.2. 系统架构设计

4.2.1. 体系架构设计

本系统采用浏览器/服务器结构。系统的分层架构为典型的三层架构,即各个功能模块划分为表现层、业务逻辑层和数据访问层 [17]。各层之间采用接口相互访问,并通过对象模型的实体类作为数据传递的载体。其“高内聚,低耦合”思想,使得开发人员更专注于核心业务的开发设计。

表现层是最上层,主要功能是实现系统数据的传入与输出。业务逻辑层的功能是对具体问题进行逻辑判断与执行操作,数据访问层是数据库的主要操控系统,实现数据的增删改查等操作 [18]。具体的系统架构设计如图2

4.2.2. 业务流程设计

本系统业务流程覆盖组织考试、参与考试、查询成绩、管理资源等多个业务场景。

学生进入系统后,展示当前所在班级的考试列表。在考生参与考试后,提示考试截止时间,若超时则考生答题结果不予提交。考试提交成功后,考生可立即点击按钮弹框将显示客观题成绩,若试卷有主观题,将等待教师批阅。

Figure 2. System architecture diagram

图2. 系统架构图

教师登入系统后,在组织考试中根据考试名、起止时间、难易度、参与班级、试题组成等,自动组织一份试卷。在此过程中,教师可按需调整部分试题。

管理员负责数据库数据的主要操作,通过管理员账户登入后台管理系统,系统通过分页展示大量后台数据。例如学生端和教师端无法新增新的行政班级,此类数据交由管理员处理。

4.2.3. 数据流程设计

本系统数据信息主要包含考试信息、答题信息、成绩信息、班级信息、用户信息等,涉及考试过程的重要数据一般为前四类。对于考试过程,教师组卷完成后,试卷信息从服务端流向客户端。学生提交试卷,实际上是答题信息流向服务端的过程,而教师阅卷,是学生答题信息从服务端流向教师客户端的过程。

图3展示了本系统的主要数据流程。

Figure 3. System data flow chart

图3. 系统数据流程图

4.3. 系统功能设计

4.3.1. 考试模块设计

考试模块包含组织考试、考试管理、试卷审阅等功能。

1) 组织考试:教师点击进入组织考试页,选择考试模板,设置难易度、考试名、起止时间、参与班级。服务端根据用户需求完成自动组卷。

2) 教师考试管理:该模块提供试卷的查询操作,前端页面实现分页处理和模糊搜索,可按需查询目标考试。

3) 试卷批阅:该模块针对主观题批阅和成绩复核的需求设计。当试卷包含主观题时,改卷将递交至教师端,由教师完成主观题赋分过程。当试卷需要进行成绩复核时,可通过该页查看学生的详细答卷。

4) 参与考试:学生仅能参与限制时间内的考试。页面客观题下方将展示正确答案和本题得分,帮助考生及时了解试题答题情况。

4.3.2. 成绩模块设计

成绩模块包含学生端成绩查询分析、教师端成绩统计分析和管理员端成绩管理等子模块。

1) 学生端成绩查询:该模块支持学生查询成绩。学生可以在该页面查看考试的基本信息和主客观成绩,并使用echarts图表展示。

2) 教师端成绩查询:该模块实现教师端的成绩查询,包含对试题得分情况的分析。系统将统计所有试题提交记录,计算试题的提交次数、得分率等信息。

3) 管理员端成绩查询:该模块支持管理员对成绩记录的修改和删除。在考试场景中,若成绩有误将交由管理员修改成绩。

5. 基于Web的在线考试系统功能实现

5.1. 考试管理模块功能实现

5.1.1. 学生端考试

学生端考试模块主要实现考试列表、考试参与、考试提交等功能。

1) 获取该学生的考试列表,此处用户经过登录模块身份验证进入操作页面,为保证数据安全性,通过Ajax以异步处理方式与数据库交互,核验数据库中是否存在该用户。核验成功后将用户名使用LocalStorage保存至本地。考试页再进行后续处理,包括日期格式处理和考试状态判断。最终呈现效果如图4

Figure 4. Student end exam list rendering

图4. 学生端考试列表效果图

同时页面顶部帮助用户按照条件查询考试,按名称查询使用模糊搜索和键盘监听等技术,使用match函数匹配输入内容和表格字符,符合条件行显示,不匹配则隐藏行。关键代码如下。

function onSearch(obj){

setTimeout(function(){

var storeId = document.getElementById('examtable');

var rowsLength = storeId.rows.length;

var key = obj.value;

var searchCol = 1;

for(var i=1;i

var searchText = storeId.rows[i].cells[searchCol].innerHTML;

if(searchText.match(key)){

storeId.rows[i].style.display='';

}else{

storeId.rows[i].style.display='none';

}}},200);}

2) 考试参与:学生参与开放的考试,此处进入新的考试详情页面。该详情页展示试卷的内容,实现方式为使用jQuery clone方法克隆模板,并将相应数据填入对应元素。

3) 考试提交:该模块实现思路为按类型获取各表单的输入内容,使用stringfy方法统一处理并提交至服务端,服务端预先导入标准答案,进行结果比对。客观题立刻返回考核结果,主观题则需要教师批阅后更新。

5.1.2. 教师端考试

教师端考试管理模块包含组织试卷、试卷管理和批阅试卷三大模块。

1) 组织试卷:该模块实现思路为根据用户表单输入,筛选数据库符合条件的试题构造出符合期望的试卷内容。为了控制试卷地分值,系统提供三套模板供教师选择,确认组卷后,组卷参数为试卷名、起止时间、难度、模板编号、参与考试班级。根据输入参数,随机抽取题库中指定数量和难度的试题。

2) 试卷管理:该模块包含试卷试题调整和试卷编辑、删除,具体实现思路为:为试卷试题添加删除按钮绑定至删除试题对象,事件发生后发送请求至服务端,执行删除sql语句。

3) 试卷批阅:该模板实现教师对学生主观题的赋分过程。实现思路为:页面请求教师任教班级的成绩列表,使用CSS字体颜色突出未打分的成绩记录,进入详情页通过答题卷输入得分。通过form表单提交,服务端进行检验分数是否超过限制、是否在合理区间内,检验通过后执行sql update,包括主观题得分更新以及总得分更新。

5.1.3. 管理员端考试管理

该模块主要实现对数据库考试表的快速处理。该模块使用v-model实现双向数据绑定,data 中的数据与输入框同步变化。页面输入框组使用el-form实现表单输入,并将用户输入绑定至data,抽取编辑框、新增框、顶部导航为复用组件,简化开发过程。后台管理系统请求均使用axios实现,包括定义拦截器和进行错误处理。具体实现效果如图5

Figure 5. Administrator end exam management rendering

图5. 管理员端考试管理效果图

5.2. 成绩管理模块功能实现

5.2.1. 学生端成绩管理模块

学生端成绩管理主要包含成绩记录查询和答题详情查询两个部分,实现思路为:根据学生账号从服务端获取学生所有成绩记录,遍历返回的JSON数据将成绩推入数组,赋值给echarts折线图中series属性的data字段,实现图表数据动态变化。

5.2.2. 教师端成绩管理模块

该模块支持教师查询学生成绩信息,主要包含成绩记录分页处理,试题错误率统计,Echarts图表处理等。为了减轻网络负载,分页处理在服务端进行。按考试查询,则监听select的value值变化。具体实现效果如图6

Figure 6. Teacher end query results by examination rendering

图6. 教师端按考试查询成绩效果图

5.2.3. 管理员端成绩管理模块

管理员端成绩管理主要对数据库成绩记录作删改查等操作,具体实现方式基本同5.1.3管理员端考试管理。

6. 总结

本文论述了基于web的在线考试系统设计与实现,主要介绍了需求分析、总体设计以及功能实现等内容。面向考生、教师及管理员的在线考试系统及后台管理系统,基于B/S架构,实现了在线组卷、考试参与、自动阅卷、统计分析、班级及试卷试题维护等功能。权限明确,便于维护和管理,基本满足了在线考试的需求,可用于随机测验、期中期末测验。相较于传统的考试方式,节约纸张,大大减少了教师出卷、判卷的工作量,更对习题和考试作归纳整理。既能帮助学生掌握学习情况,同时提高了课程考试评估的科学性和准确性。与功能单一的考试平台不同,系统包含课程资源、教学班级管理等模块,基本能够满足日常教学需要。

基于Web的在线考试系统仍存在可优化的方面和可扩展的功能,例如组卷算法、试题分类细化、新增模拟考试等等,仍需进行不断迭代和优化。关于组卷算法,如需学生试卷不一致,采用随机组卷,如需试卷知识点分布合理,采用遗传算法;针对课程特点,可对题库进行进一步细化,例如添加试题的考察点、来源课程章节,组卷时根据需求组织章节测验,考察学生一阶段学习情况,进一步提升组卷质量。系统统计分析学生考试记录,可通过分析结果抽取学生薄弱点和易错题,组织模拟考试供学生练习。

参考文献

[1] 邓又明, 刘庆红, 董光. 试题库管理系统的分析与设计[J]. 现代情报, 2005, 25(4): 157-158+160.
[2] 任大雁. 基于.net的课程考试系统设计与实现[D]: [硕士学位论文]. 济南: 山东大学, 2018.
[3] 陈晓兵. Web前端开发技术[M]. 南京: 南京大学出版社, 2008: 252.
[4] Living Standard—Last Updated 22 July 2022.
https://html.spec.whatwg.org/multipage
[5] Ben, R.H., Hafedh, B. and Antoine, C. (2021) Website Design and Development with HTML5 and CSS3. John Wiley & Sons, Inc., Hoboken.
https://doi.org/10.1002/9781119885122
[6] 武耀文. Java智能教学辅助系统的设计与实现[D]: [硕士学位论文]. 北京: 北京交通大学, 2015.
[7] 魏鹏娟. Web前端开发的关键技术[J]. 电子技术与软件工程, 2021(5): 48-49.
[8] Yash, G., Himanshu, D. and Alka, L. (2020) Real-Time Monitoring Using AJAX and WebSockets. Journal of Statistics and Management Systems, 23, 125-134.
https://doi.org/10.1080/09720510.2020.1714154
[9] Nelson, B. (2018) Getting to Know Vue. js. Apress, Berkeley.
https://doi.org/10.1007/978-1-4842-3781-6
[10] Uzayr, S.B. (2022) Mastering Vue. js: A Beginner’s Guide. CRC Press, Boca Raton.
https://doi.org/10.1201/9781003229100
[11] 潘惠苹. Bootstrap技术在Web移动开发中的应用研究[J]. 计算机时代, 2019(5): 27-29.
[12] 傅翠玉, 王少茹, 洪秀金. Bootstrap框架在响应式WEB开发中的应用[J]. 电脑知识与技术, 2018, 14(21): 85-86.
[13] Evangelidis, K. and Papadopoulos, T. (2018) A Javascript GIS Platform Based on Invocable Geospatial Web Services. Geosciences, 8, 139.
https://doi.org/10.3390/geosciences8040139
[14] 肖耀涛. 基于敏捷方法的软件研发项目管理系统的设计与实现[J]. 信息与电脑(理论版), 2020, 32(4): 83-85.
[15] Yusop, N., Zowghi, D. and Lowe, D. (2008) The Impacts of Non-Functional Requirements in Web System Projects. International Journal of Value Chain Management, 2, 18-32.
https://doi.org/10.1504/IJVCM.2008.016116
[16] 王越. 基于nodejs的微博系统的设计与实现[D]: [硕士学位论文]. 成都: 电子科技大学, 2014.
[17] 陈文婕. 基于B/S的医院财务管理系统开发与设计[J]. 电子设计工程, 2018, 6(19): 38-42+47.
[18] 江洪波. 浅谈三层架构在信息系统开发中的应用[J]. 信息通信, 2016(12): 205-206.