摘 要:针对专业培训、远程教育、(分类)招生考试等在线考试系统种类繁多、功能复杂、操作不便,在使用过程中有兼容性、可维护性和安全性等问题的现状,采用H5、JS、PHP、MySQL等技术设计并开发了基于B/S的在线考试系统,实现了题库管理、随机自动组卷、在线考试、自动评分等功能。通过主流浏览器即可访问该系统,系统能提高教学考核工作的效率,降低高校管理中的资金投入和运营成本。
关键词:在线考试系统;系统设计;H5;PHP;MySQL
中图分类号:TP311.5 文献标识码:A 文章编号:2096-4706(2024)13-0121-05
Design of Online Examination System Based on B/S
CAI Bofeng
(Taizhou Polytechnic College, Taizhou 225316, China)
Abstract: In response to the diverse types, complex functions, and inconvenient operation of online examination systems such as professional training, remote education, and (classified) enrollment exams, as well as compatibility, maintainability, and security issues during use, a B/S-based online examination system is designed and developed using technologies such as H5, JS, PHP, and MySQL, achieving functions such as question bank management, random automatic test paper generation, online examination, and automatic scoring. The system can be accessed through mainstream browsers, which can improve the efficiency of teaching and assessment work, and reduce the capital investment and operating costs in university management.
Keywords: online examination system; system design; H5; PHP; MySQL
0 引 言
虽然大多数高校建设了网络教学平台,但一般是专门针对专业人才培养方案规定的具体课程提供教学服务,可以解决在校学生线上教学、混合式教学所需的教学平台问题,也可以进行在校学生的线上考试。但是,各个高校都有一定的针对社会人员的专业培训、远程教育、(分类)招生考试等教学活动,这种阶段性或临时性的与专业人才培养方案不相关的教学活动考试往往以纸质试卷为载体进行线下考试,其考试全过程费时、费力、易出错且工作效率低;有些高校购买了在线考试系统,但目前市面上的在线考试系统存在种类繁多、功能复杂、操作不便,在使用过程中兼容性、可维护性和安全性等不足的问题,并且根据系统开发采用的技术和系统功能强弱,购买费用也不尽相同。这些系统有基于C/S模式的,也有基于B/S模式的[1],基于C/S模式的系统一般采用Java技术开发,但存在开发成本高、安装烦琐、维护不方便等问题;基于B/S模式的系统一般采用HTML4、CSS2、ASP.NET、JSP、PHP等技术开发,开发成本相对低一些,但系统前端页面往往存在浏览器兼容性不足等问题。随着H5技术、jQuery框架技术、Ajax技术等技术的推出和不断更新,不但能更好地开发出功能齐全、界面友好、操作简便、兼容性好、易于扩展、易于维护、安全性好的系统,还有效降低系统的开发成本,提高系统的兼容性和可维护性等性能[2]。有鉴于此,本文介绍了基于H5、jQuery、Ajax、PHP等技术设计开发的在线考试系统,为专业培训、远程教育、(分类)招生考试,以及其他无网络教学平台的学校的在线考试等提供服务,提高教学考核工作的效率,也降低高校管理中的资金投入和运营成本。
1 系统分析
在线考试模式要求,只要在计算机网络平台上通过在线考试系统组建培训教学等考试用试题库,再通过在试题库中随机抽题并自动化组卷,然后让考生参加测试,系统自动完成客观题评阅并发布成绩供教师查看和考生查询。通过随机组卷和自动阅卷可以提供更全面、客观的教学效果评价方式,这也反过来督促教师和考生更扎实细致地开展教学工作和学习。通过实际调查和需求分析,提出在线考试系统有以下设计要求:
1)分角色统一管理系统的各个用户(管理员、教师和考生),统一增减考生和教师信息,提高安全性。考生登录前端考试系统,参加教师布置的考试、查询自己的考试成绩。教师登录后台教师管理系统,维护科目和试题库、创建考试和查看考试结果。管理员登录后台管理系统,管理考生和教师账号并分配用户权限。
2)提供科目管理和章节管理功能,并能针对多个考试科目和多个章节模块进行题库管理,可以动态增减题目。
3)根据指定科目针对不同考生按照出题数量要求实现自动随机组卷以防考生作弊功能。
4)实现考试时间倒计时功能,使考生实时了解考试剩余时间。
5)客观题自动评分并提供试卷和成绩的实时查询显示。
6)系统基于B/S架构设计开发,使考生随时随地进行考试。系统基于HTML5、CSS3、JavaScript、Jquery等技术实现在各大主流浏览器上的兼容使用,并通过PHP、MySQL等后台开发技术实现系统功能、降低开发成本。利用Ajax技术实现数据的各种异步更新操作,提高用户体验。
7)系统界面设计美观大方、操作便捷,系统运行稳定、安全可靠。
2 系统架构设计
B/S(Browser/Server)架构即客户端浏览器、Web服务器和数据库服务器,是WWW方式下实现信息访问、共享的一种通用体系结构,是当今流行的Web软件开发模式,具有客户端无须安装、占用内存小、服务器端反应迅速、使用灵活方便、运维成本低等特点,使用时通过主流浏览器访问,不限时间地点、设备类型、访问人数,其完全能够满足在线考试系统的相关要求。系统后台数据库采用MySQL数据库。系统架构示意图如图1所示。
3 系统功能设计
由于系统涉及三种不同角色的用户:考生登录前端考试系统参加考试、查询成绩;教师登录后端教师管理系统维护科目、试题库、创建考试、查看结果;管理员登录后端考试系统,管理用户账号、分配用户权限[3],因此系统功能模块结构设计如图2所示。
各个功能模块具体设计如下:
1)考生子系统。登录考场:教师创建某个科目的考试并设置好考试时间后,考生登录系统自动进入定时刷新的考场列表,开考时间一到系统就会显示“开始考试”按钮,考生单击开始答题。在线考试:考生一进入考场系统就自动按规则抽取试题,浏览器上显示试题和考试计时器。考试结束前10分钟系统会提示考试剩余时间,考生可提前交卷,或者等到考试结束系统自动交卷。交卷后系统自动进行客观题阅卷。查询成绩:考生及时查看考试用时和成绩。
2)教师子系统。教师的主要工作是建设试题库,创建考场和监考[4]。其主要功能为科目管理:管理考试科目,每个考试科目有专用试题库。章节管理:试题库按章节组织,添加好科目后要先设置科目包含的各个章节,每个章节可以设置抽题比例,根据抽题比例随机抽取题目。试题库管理:试题按章节分类,包括单选题、多选题和判断题。根据题型输入题干、选项、参考答案和分值。创建考试:创建一次具体的考试,指定考试科目、考试开始时间和时长,设定抽取的各题型题数。考场管理:显示某次考试考生的完成情况,是否开始答题、是否已经交卷等。浏览考试结果:教师浏览某次考试的成绩、用时,并可查看考生答卷[5]。
3)管理员子系统。管理员负责对考生、教师身份、系统选项等进行管理。其主要功能包括:教师管理:用于管理教师账号、密码等。班级管理:用于管理班级信息。考生管理:用于管理考生登录账号和密码。
4 数据库设计
使用主流的MySQL数据库,用于存放课程、章节、试题、考场、试卷、用户等信息[6-7]。由于课程由章节构成,而每个章节中又包含不同的试题;考试应可多次组织,每次考试就是一个考试/考场记录,每次考试每个考生都有一张试卷,每张试卷由多条题目构成。
为便于开发维护,每个数据表都统一设置主键ID自增字段、设置删除标志字段DeleteFlag以支持删除数据的恢复(值为1表示逻辑删除)。主要数据表包含的字段如下:
1)课程信息表Course包含:ID、课程名称、排列序号、备注、删除标志。
2)章节信息表Chapter包含:ID、课程ID、章节名、排列序号、选题比例、备注、删除标志。
3)试题信息表Question包含:ID、课程ID、章节ID、题型、题干、选项A、选项B、选项C、选项D、参考答案、分值、删除标志。
4)考场信息表Exam:ID、课程ID、考试名称、班级ID、开考时间、考试时长、单选题数、多选题数、判断题数、创建教师ID、创建日期、备注、删除标志。
5)试卷信息表Paper包含:ID、考场ID、考生ID、开始时间、提交标志、提交时间、总分、删除标志。
6)试卷题目表PaperQuestion包含:ID、试卷ID、题目ID、考生答案、得分、正确标志、删除标志。
7)用户信息表Users包含:ID、用户类型、班级/单位ID、学号或工号、姓名、登录账号、密码、最近登录时间、登录次数、备注、删除标志。
5 系统详细设计技术要点
5.1 公共头部和尾部设计
系统的每个页面都要求完成一些类似操作:
1)PHP网页要在浏览器中显示,最新发给浏览器的内容是HTML头部的信息,每个网页的头部信息几乎是一致的。
2)为了校验用户身份,通常是在登录页面中将当前用户的ID信息保存在Session变量中,系统采用LoginUserld来保存用户ID,在登录后的页面中检查Session变量是否存在。
3)需要操作数据库的公共函数库、常规自定义函数库和控件库等。
4)需要添加常规的CSS和JavaScript脚本的引用声明。为提高开发效率,将这些公共的部分汇集到一个头文件Header.php中。
由于数据库使用完需关闭,因此每个页面包括公共尾部文件Footer.php,代码如下:
<? DBClose();?>