明达职业技术学院 孙昕
随着计算机技术和网络技术不断发展,网络考试系统将是学校信息化改革的重要发展方向。本文结合了学校教学的实际需求,讲述了基于C/S 结构的网络考试系统的开发与实践以及该系统的结构、功能和应用。
在教育信息化浪潮的推动下,网络考试系统是教育改革和信息化的必然发展趋势,它受到学校的重视和推广,网络考试系统既确保了考试的公平、公正,又提高了考试的效率,降低了考试阅卷的人为因素。市场上的网络考试系统固然有许多优点,但是由于题库题型封闭、不易修改且价格趋高等原因无法在校园内普遍使用。因此,本人运用VB.NET 和MySQL 数据库开发了网络考试系统,实现无纸化考试。下面就系统的开发设计和实现,进行阐述。
网络考试系统分为B/S 结构、C/S 结构和混合结构模式等开发方式。B/S 结构网络考试因系统维护和升级成本低、客户端无需安装、不限地点、不限设备类型、不限固定人数等特点,得到广泛使用。但是B/S 结构网络考试系统缺点也比较明显,公平性难以得到保障,即使各类网络考试系统有各种防作弊功能,也是防不胜防,只适合于普通的考试[1]。
C/S 网络结构考试系统有对信息安全的控制能力强、面向相对固定的用户群,有监考老师,不容易作弊,适合做严肃的考试,在现在B/S 流行之时,C/S 结构网络考试系统还在很多方面发挥巨大作用。由于本人开发的网络考试系统在本校的机房里进行,考试内容为学院的课程期末考试,这里优先考虑以局域网为基础的C/S 结构。
C/S(Client/Server)结构,即客户机和服务器结构。通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client 端和Server 端来实现,降低了系统的通讯开销。本系统是属于小型的网络考试系统,对计算机性能要求不高,客户端安装Windows 7 及以上操作系统即可满足条件。
系统开发工具采用了VB.NET,后台数据库采用MySQL。
本系统目前共分为四个模块:题库管理模块、考生考试模块、考务管理模块、批阅成绩分析模块,各个模块功能阐述如下。
考生考试模块是考试系统的核心部分,安装到客户端计算机上。
(1)考生考试模块。考生考试模块有单项选择、填空题、判断题等为主的客观题,操作题为主的主观题。具体思路是:
到了规定时间后,考生便可以在客户端计算机上启动考试程序,输入考号和验证姓名后,确认登录考试系统等待监控老师发出指令。监考老师发放试卷包、试卷密码,点击允许开始考试后,考生输入试卷密码才可以计时,答题。考生考试完成后,学生自行交卷,或由系统在规定时间点自动强制交卷。
做客观题时,做完一题系统立即标志本题已做,并且保存考生的答案。考生可按顺序答题,也可点击“题板”窗体上的“题号”答题。当考生交卷时,系统提示还有多少题未做,有多少疑问题,以防有漏做题。
做操作题时,考生需要随时保存操作题,当考生主动交卷时,需要将操作题保存退出,如考试结束时间到以后,操作程序没有关闭,系统调用API 函数强制将打开的操作题退出,但不保存相应的操作。最后将考生信息、理论题答案及操作题的文件打包压缩上传至服务器。
(2)客户端网络通信模块。本模块运行时成为托盘程序,主要作用是进行实时数据通信。运行时通信控件接收数据时,通过选择语句来根据信息为控制信息、通知还是文件采用相应的动作。客户端通信端开机便启动运行以便随时收到监考教师指令信息、接收来自监考端监控和管理,同时也向监考端计算机上传考生信息和答案文件。
考务管理模块是考试系统的主要部分,其主要功能如下:将考场信息含考生信息导入、将题库包导入按一定规则策略并生成试卷包、对考生客户端机的监控和处理、试卷包发送和回收等功能,具体功能有[2]:(1)清空上一场考生信息;(2)查询在线计算机;(3)导入考生信息;(4)考试试卷导入;(5)强制收卷:时间到,或者是作弊严重,教师可以强行收卷;(6)作弊处理:根据学生作弊严重程度,作出对学生的处理情况并将作弊标记存入数据库;(7)消息发送;(8)屏幕刷新:显示在线学生的考试状态;(9)键鼠管理,通过控制学生机的键盘、鼠标等限制学生对计算机操作;(10)时间控制:可以使得学生机与教师机时间同步,使得考试公平;(11)发送试卷。
试题库主要功能有:对题进行录入、修改、删除等操作,试卷的组卷、打印和查询等功能,具体有:(1)用户管理:用户注册、修改口令等;(2)试题库维护:根据课程大纲对试题库中题目进行编辑、添加、修改、删除等操作;(3)题型表维护、难度表维护、出卷用户表维护、章节表维护:可以分别对以上四个表进行数据添加、删除、修改等操作;(4)试题库查询功能:支持万能查询,查询字段不定、查询运算符不定、查询条件不定;(5)组卷功能:根据课程考试大纲依据用户输入的题型分布、章节分布以及难度分布等要求,按照一定的组卷策略从试题库中随机抽取出满足条件的试题组成试卷;(6)试卷打印、预览:使用Office 自动化技术调用Word 应用程序,将数据库试卷中的记录逐一地写入到Word 文档中,用户就可以利用Word 对试题进行预览、打印。
(1)阅卷统计分析模块。因为在考试时已经实时批改了有唯一答案的客观题,如单选题、判断题这一类题型的试题。所以本模块部分只有主观题阅卷,阅卷方式可以自动阅卷,同时支持人工判卷。操作题评分,基本思想是:VB.NET 中操作Office 文件,同时在VB.NET中引用Office 提供的Com 组件,再调用Office 应用程序打开对应文档,利用VBA 编程对Office 操作结果的自动阅卷评分。(2)分析统计。可以按班级、学科最高分、高低分、平均分、优秀人数(率)、及格人数(率)、不及格的人数(率)、良好人数(率)、中等人数(率)进行成绩分析。
下面对一些关键性的问题阐述具体说明和解决方案。
网络考试系统依赖于计算机网络,可能有些意外情况发生,致使考试中断,例如,网络、电力、计算机运行故障等。
(1)异常中断,重新登录。当考试过程中,客户端计算机出现异常情况时,网络考试系统提供学生二次登录的功能。考生在重新登录网络考试系统输入考生信息时,需要监考老师使用监考密码进行验证,实现二次登录,登录后恢复原实时保存的考题结果、考试时间等相关信息[3]。
(2)考试信息保存与恢复模块。异常中断产生后,考生要重新参加考试时,原有的考试答案丢失,会显得考试的不严谨和不科学。所以对网络考试来说,考试系统具有实时保存和中断恢复功能就显得非常重要。
实时保存功能:将考生的准考证号、考试时间、考生的客户端计算机名、IP 地址等信息每隔30s 时间就会自动保存在本地计算机上磁盘的指定文件中,同时将相关数据发给服务器。客观题已经随着点击“下一题”时已经实时保存在试卷数据库里了,操作题保存系统设置每隔10min 时间保存。
中断恢复功能:当考试意外中断,考生重新登录时,系统会调用保存在磁盘中原考试信息文件,已做的客观题答案原以实时保存在试卷数据库,答案还存在,考生可以继续答题;操作题没有10min 且没有自己保存,需要重新做题。
因为断网或系统崩溃,监考老师可以通过U 盘将考生答案信息导出至另一台计算机考试,而不影响考生的原来答案和考试时间,还可以根据实际情况做出适当的时间延时,从而保证考试的公平性。
(1)发送信息。通过计时器每30s 将本机与本考生相应的数据(固定长度)发送给监考端计算机。如本机IP地址、考生准考证号、考生姓名、考生的剩余时间,计算机名等信息。(2)自动收卷与锁定。考生考试时,在程序顶端会动态地显示考试剩余时间,在最后5min,系统自动弹出窗体会提醒考生。如时间结束而还没有交卷,系统会强制收取试卷;如果因为计算机、网络等异常原因导致耽误考生答题时间的,可由监考老师输入监考指令进行适当地延长考生答题时间。
同一场考试客户端接收到是同一份试卷,为了保证考试公平性,同一个试卷乱序,即是随机抽题功能,具体思路是:(1)定义初始变量,利用Randomize()初始化随机数发生器,使用外循环生成随机数,将其存放在Temp中,设此时的随机数重复标识为False 不重复;(2)利用内循环,用来筛选外循环生成的随机数是否和已存入数组的任何一个元素重复,如果重复,则通过将外循环变量减1 来退回到上一个循环,将重复标识设置为True(重复),去掉这个数,并且放弃这次内循环;(3)如果标识不再重复,那当前的随机数满足条件,将这个数存入数组,当做题目的逻辑序号。(4)试卷包中题目输出按照逻辑序号顺序显示,达到试卷包中题目物理序号乱序作用。
使用SHELL 调用WINZIP 和WINRAR 是可以实现压缩子目录的,但是受控于SHELL,容易出错。于是通过静态调用第三方UNZIP32.DLL 和ZIP32.dll 动态链接库文件,来实现将考生文件夹下所有文件和子文件夹下所有文件打包压缩为一个ZIP 的文件。使用的源码如下:
系统不但可以对理论题进行阅卷,还可以对操作题阅卷。
(1)判断指定Windows 文件和文件夹是否存在,或者文件属性判断,可以使用WinAPI 函数GetFileAttributes 获取文件各种属性,对设置文件属性的操作题进行自动评分。
也可以使用DIR 函数来判断文件是否存在,如对创建文件快捷方式操作的正确性,即该文件中有目标文件完整的文件路径是否和原文件路径一致,来判断创建的快捷方式是否成功。
(2)如对Office 软件中文档评分,打开一个文档后,可以在文档中进行批阅。对文章第一段即标题段进行批阅:字体设置是加粗加1 分、段落设置为水平居中加1分,字体颜色为红色加1 分。
本系统在学院使用后,不仅能够简化传统考试的繁琐过程,减轻教师的出卷、阅卷等工作,同时还能够节省时间和经费,使得试卷的出卷、判阅更加科学、公平,促进了教学质量的提升。