彭芳策
在线考试系统的设计与实现
彭芳策
(兴义民族师范学院, 贵州 兴义 562400)
传统的考试方式组织一次考试需经过四个步骤,即出题、考试、阅卷、成绩评估及分析。而在线考试避开了这些过程,可以节省大量的时间、财力、人力和物力,同时还可以大幅度提高考试成绩的公正性和客观性;从而实现低成本、高效率办公。
在线考试系统;管理员用;教师用户;学生用户
随着经济、社会和网络技术的快速发展,很多大学都有自己的网络学习平台。但是对学生的学习跟踪和评估还是采取传统的方式,不能很好地适应当前的社会发展,因此需要有一系列的系统支撑,如教学系统,答疑系统,考试系统等。其中很重要的一个环节就是在线考试系统,同时它也是最难实现的一个环节。
目前,学校和社会上的各种考试大都采用传统的考试方式,在此方式下,组织一次考试需经过四个步骤,即出题、考试、阅卷、成绩评估及分析。显然,随着考试类型的不断增加和考试要求的不断提高,教师的工作量将不断增加,而且在百忙之中容易出错,因此在线考试必将替代传统的考试方式。
在线考试系统分为管理员用户模块,教师用户模块和考生用户模块。其功能模块图如下:
信息管理主要是发布一些与考试相关的管理文件及其公告。系统管理包括用户的添加、修改、删除以及用户的权限设置;关闭和开放考试,同时考试过程中如果某个同学由于计算机或试题问题可以针对该生进行重新抽题重新作答或对其进行延时处理;设置考试科目,考试题型及分值并生成试卷。
该系统试题库包括单项选择题、多项选择题、填空题、简答题等题型,教师在添加题目时先要选择自己所教的科目,然后选择题目类型,最后输入题目内容、题目答案和分值。由于系统算法的不完善,简单题需要老师自己评阅,系统自动评阅有时分数有出入。所有题目评阅完成后系统自动计算出总分并打印出学生的考试成绩。
学生可以浏览考试的相关规定,修改个人密码,在线考试,模拟练习,查看成绩等。
1.打开或关闭考试由数据库管理员表中的locked字段控制,该字段值为1时进入考试按钮隐藏,该字段值为0时则进入考试按钮显示,学生即可点击该按钮进行考试。代码程序段如下:
if($rowlock['locked']==0){
echo" }elseif ($rowlock['locked']==1){ echo ''; } 2.考试科目表中的test_time字段用来存放考试的时间长度(以分作为时间单位),而学生在考试时取出test_time字段的值,用此值乘以60即为考试所用的秒数,秒数作自减运算即可得到考试的倒计时。代码程序段如下: 3.在考试过程中还有一个重要功能是组卷,组卷工作由管理员完成,管理员根据老师要求设置试卷选择题、填空题的个数,简答题和计算题的个数及其分值,系统将自动随机在题库中抽取试题组合试卷,但各学生考卷题目的重复率将取决于题库中的题量大小。 在抽题组卷过程中题型由btitle字段的值控制,程序代码段如下: function mj($btitle){ if($btitle==1){echo ' if($btitle==2){echo ' if($btitle==3){echo ' if($btitle==4){echo ' if($btitle==5){echo " 4.题库抽题组卷程序代码段如下: $test=sql_operate("select * from students where id=$_GET[uid]"); $arr=explode(",",$test['kgtestid']); $arrzg=explode(",",$test['zgtestid']); $subtx=sql_select("select * from big_test where test_subject_id=$_GET [sid] order by bigtitle asc"); while($tx=mysql_fetch_array($subtx)){ if($tx['bigtitle']>=1 and $tx['bigtitle']<=4){ for($i=1;$i<=4;$i++){ if($tx['bigtitle']==$i){ echo ' foreach ($arr as $val){ $title=sql_select("select * from small_test where id=$val and bigtitle_id = $i"); while ($titles=@mysql_fetch_array($title)){ echo ' $smresult=sql_select("select * from small_result where smalltitle_id=$val order by xx asc"); while($xx=mysql_fetch_array($smresult)){ if($tx['bigtitle']==1){ echo ' $a[$titles['id']]=array("$xx[xx]");} if($tx['bigtitle']==2){ echo ' '.$xx['smalltitle_c'].' $a[$titles['id']]=array("$xx[xx]");} } if($tx['bigtitle']==3){ echo '答案: $a[$titles['id']]=array("$titles[bt_answer]");} if($tx['bigtitle']==4){ echo ' $a[$titles['id']]=array("$titles[bt_answer]"); }}}}}}} 5.阅卷时客观题较为简单,主观题相对较难,所以主观题需要老师再核查一遍看给分是否合理。自动阅卷程序代码段如下: $regs=$_REQUEST['t_'.$k]; $value=@implode(array_values($regs)); $ans=sql_operate("select * from small_test where id = $k"); $pf=sql_operate("select * from big_test where test_subject_id = $ans[subject_id] and bigtitle = $ans[bigtitle_id]"); if($ans['bt_answer']==$value && $ans['bigtitle_id'] != 3){ $scor[$k]=$pf['sscore'];}if($ans['bigtitle_id']==3){ if(strspn($value,"$ans[bt_answer]")){ $num = 0; $arr=explode(",",$ans['bt_answer']); while (list($ke,$va)=each($arr)){ if(substr_count($value,$va)>0){ $num++; $scor[$k]=$pf['sscore']*$num; }}}}} $sums = @implode("+",array_values($scor)); 通过在线考试系统的运行,平时老师只需添加比较经典的试题来充实试题库,整个出卷过程老师只需提供题型及其各题型题目的个数、分值给管理员即可,改卷教师也只需复查下主观题给分是否合理;因此大大减轻了教师的工作量。同时学生想通过相应课程的考试拿到学分,平时就需要做系统的模拟考试题,从而学生的知识水平也得到了相应的提高。在教学中作者把此系统的开发过程和如何构建系统的整体架构应用到了课堂,取得了较好的教学效果。 [1]王珊,萨师煊.数据库系统概论(第5版)[M].高等教育出版社,2014. [2]Mehdi.Achour等,肖盛文等译.PHP手册[Z].2015,www.PHP.net/manual/zh/ [3]金雪云.PHP简明教程(PHP篇)[M].清华大学出版社2006.1. [4]范乐,于强.基于Web的编程技术(第1版)[M].北京:铁道电出版社,2003. Design and Implementation of Online Examination System PENG Fang-ce for the traditional examination,the organization needs four steps:questioning,examination,marking,performance evaluation and analysis.In order to achieve low-cost,highly efficient ways,examination online avoids these processes,which can not only save a lot of time,money,manpower and material resources,but also can greatly improve the objectivity and impartiality ofthe examination. Online Test Sgstem;Admin;Teacher user;Student User 1009—0673(2015)04—0106—04 TP311.52 A 2015—08—01 贵州省黔西南州科技计划,编号:2013-36。 彭芳策(1983— ),男,江西波阳人,兴义民族师范学院信息技术学院副教授,研究方向:软件设计和开发。 责任编辑:李珏三、结论
(Xingyi Normal University for Nationalities,Xingyi,Guizhou 562400,China)