APP下载

基于PHP的在线考试系统的设计与实现

2018-01-17刘超

电子技术与软件工程 2017年20期
关键词:在线考试

摘 要 本文讲述基于PHP的在线考试系统的设计与实现。首先将题目从题库中抽取出来保存在数组中,然后再对题目数组进行随机抽题,将抽取的题目保存在每个考生的信息中。在做题的过程中还要将考生的答题情况也保存在考生信息表中。该在线考试系统支持随机抽题、机器出故障重新换机考试考生的答题信息仍然保留在系统中。

【关键词】PHP 在线考试 随机抽题

随着互联网+时代的到来,教育信息化是大势所趋。本文讲述的在线考试系统支持单选题、多选题、判断题。能够随机抽题,将考试抽取的题目,答题信息保存在考生信息表中。

1 数据库设计

数据库名为db_test,其中包含至少7张表,保存单选题的表、保存多选题的表、保存判断题的表,保存管理员信息的表,保存考生表信息的表(多张表),保存综合设置信息的表以及班级与表名对应表。关键表结构如下:

单选题表用于存放考试题目中的单选题。多选题表用于存放考试题目中的多选题。判断题表用于存放考试题目中的判断题。多选题、判断题表结构与单选题表结构类似。下面仅介绍单选题表结构。单选题表的关键字段为:“Id”、“题目”、“标答”、“分值”、“A选项”、“B选项”、“C选项”、“D选项”、“E选项”。

单选题表字段字段意义为:其中“ID”设置为主键;“题目”表示考试题目的题干;“A选项”、“B选项”、“C选项”、“D选项”、“E选项”分别是多个单选项,“标答”保存着该题目的标准答案,“分值”保存本题的分值。这些字段均设置为varchar类型。数据库编码设置为UTF-8。

考生表是可以新建的,多个班级考试则可以对应多个表。考生表前缀是bj_,用于区分其他表。考生表关键字段:“考号”、“姓名”、“密码”、“交卷时间”、“总分”、“单选题题目”、“单选题答案”、“多选题题目”、“多选题答案”、“判断题题目”、“判断题答案”等字段。全部设置为varchar数据类型,考号设置为主键。全部编码设置为utf-8类型。

考生表关键字段意义为:“考号”是主键,唯一。“姓名”是考生的姓名。“密码”是考生登录用的密码,考生通过输入班级、输入考号、输入密码进行登录考试系统。“交卷时间”是指考生应该交卷的时间,不是实际交卷时间,每个考生从登录开始(每个考生登录时间会有少许差异)再加上考试规定时长就可以得到应该交卷的时间。因为每个考生登录时间不相同,中途也可能出现差错需要补时,因此交卷时间也不一样。此外“交卷时间”还可以收到二次登录补时的影响。“单选题题目”只保存该考生抽取的单选题的题号,若保存全部抽取的题目信息,则不利于保存,再显示考题信息的时候再根据每个考生“单选题题目”中的序号显示实际单选题。“单选题答案”保存着该考生单选题答题情况。

注意事项:考生在答题过程中是每做一道题都要保存一下的,确保在机器出故障后,考生的答题信息不会受到影响。因此考生表的这些字段这样设置是必须的。

综合设置表结构为:“网站名称”、“总分”、“单选题数量”、“单选题描述”、“单选题分值”、“多选题数量”、“多选题描述”、“多选题分值”、“判断题数量”、“判断题描述”、“判断题分值”、“二次登录密码”。全部字段设置为varchar类型,编码设置为utf-8。

综合设置表字段意义为:“网站名称”是指在线考试系统网站的名称,即显示的网站标题信息。“总分”是指整个考试题目的分数,一般可以设置为100分。“单选题数量”表示考试题目中有多少道单选题。“单选题描述”一般设置为“本题有五个选项,正确答案只有一个,请选择正确答案”。“单选题分值”表示每个单选题分数。多选题和判断题类似,不再表述。“二次登录密码”是考生在考生过程中机器出现故障,换一台机器重新考试需要输入的密码,若没有二次密码则考生可以恶意多次重新启动机器。

2 随机抽题方法(以单选题为例)

先判断考生表中字段“单选题题目”是否为空(算法为:if (trim($单选题题目)=='')),若为空则表示该考生第一次登录,还没有抽取题目,则进行随机抽题。先得到全部单选题:关键代码为:$result =$mysqli->query("select * from tx_danxuan"); while($r=$result->fetch_row()) $rowradio[] = $r;。然后进行抽题:$radio_key = array_rand($rowradio,$radio_num); $radio_key保存着抽题的序号。再把抽题保存到考生表中,关键代码为:$radio_st = serialize($radio_key)。至此,系统已将单选题全部随机抽取并放置在该考生的信息表中。

说明:抽题抽取的是题目的序号,保存的也是题目的序号,在考生题目显示的时候才会根据序号找试题。因为如果将全部抽取的考题放置在考生信息表中,会出现两大问题:格式问题和容量问题。试题格式不利于保存,试题容量太大不利于保存,只保存抽取题目的序号才是科学的和可行的。

2.1 答题过程

考生答题信息保存在该考生的考生信息表的对应记录中。以A考生(每个考生的考号是唯一的)做单选题为例,若考生第m题选择了B选项,則设置数组$answer[$m-1]=B,再将整个数组$answer变成字符串类型后写入到A考生记录的“单选题答案”字段。这样确保每做一道题都保存到数据表。

2.2 评分过程

考生在交卷时,系统进行评分。还是以单选题为例讲述评分办法。具体方法是,系统首先从对应考生记录中取出“单选题答案”字符串,再使用函数un serialize()转化为数组,该数组就是该考生单选题的答题情况,可以所抽单选题的标准答案字段进行比对。若单选题答题信息与标答相同则记分。通过循环将全部单选题答题情况进行比对即可统计出单选题分数。多选题和判断题评分方法与单选题评分方法完全相同。再将三个分数加在一起,并保持到该考生记录表之总分字段中。

2.3 容错处理

若电脑在考试过程中出现故障,换电脑进行第二次考试时。考试系统首先比对考生的抽题情况“单选题题目”和答题情况“单选题答案”。若不为空,则可以判断考生是换机考试,此时无需重新抽题,只需要从该考生的记录中读出抽题情况“单选题题目”和答题情况“单选题答案”,并显示在考试页面中即可。

3 结语

在考试系统的开发过程中,数据库的设置以及容错的考虑是必须的。限于篇幅问题,其他功能的实现在此不再赘述。本在线考试系统在某高校思政课考试中使用五年,效果非常好。

参考文献

[1]王伟平,贺春雷.PHP+MySQL网站开发入门与提高[M].清华大学出版社,2014(07).

[2]PHP开发实例大全[M].东软开发联盟.清华大学出版社,2016(01).

作者简介

刘超(1982-),男,武汉职业技术学院学院讲师。研究方向为软件技术。

作者单位

武汉职业技术学院计算机技术与软件工程学院 湖北省武汉市 430074endprint

猜你喜欢

在线考试
大学物理在线考试与分析系统
效率观下高校课程考试形式的改革探索
大数据背景下在线评教与在线考试融合的思路探讨