摘 要: 本文基于Asp.net +Ajax技术对在线考试系统设计实现的关键技术进行了深入研究,重点对试卷管理功能中的考场管理、组卷策略和智能阅卷进行了研究分析。
关键词: 在线考试; Asp.net; Ajax; B/S三层架构; 题库; 组卷; 阅卷;
Abstract: Based on the Asp.net Ajax technology,this paper deeply studies the key technologies of the online examination system design and implementation,focusing on the examination room management in the examination paper management function,in the examination paper management function.
Keyword: online examination; Asp.net; Ajax; B/S three-tier structure; question bank; paper composition; marking;
1、 在线考试系统实现相关技术
Asp.net是Asp和.NET Framework技术的结合起来,使用Asp.net技术可以非常灵活地创建功能强大的动态网站。Ajax是一种支持异步请求的技术,通过 AJAX,技术的使用,在线考试过程中,学生答案入库的过程中,系统前台的考试界面无刷新,使学生考试过程中考试页面浏览更加流畅。
2 、在线考试关键技术研究
2.1、 特殊键的屏蔽
在线考试是基于WEB的考试系统,因此,在考试过程中,要考虑到学生通过网络进行作弊的行为,同时还要考虑到学生在浏览器界面的误操作而导致的考试中断,因此,对特殊键的屏蔽成为考试系统设计的一个关键技术。
(1)鼠标右键的屏蔽,防止弹出右键菜单而进行复制、粘贴和刷新等操作。
(2)通过JS的window.showModalDialog函数将考试界面显示为一个模式窗体,另外通过参数的控制,可以使这个模式窗体没有标题栏、工具栏、菜单栏和地址栏等。
(3)通过JS事件的捕获屏蔽F5刷新键,各种组合捷,防止学生考试过程中进行复制、粘贴、网页后退和关闭等,对于这些组合键只需要禁止使用Ctrl、Alt和Shift键即可。
2.2 、考试的时间控制
考试时间的控制是在线考试的重要功能,通过时间的控制,可以实现控制考生的开始考试时间、考试入场时间、入场结束时间、考试过程倒计时。从而保证考试时间方面的严谨性。
(1) 通过开始考试时间、考试入场时间、入场结束时间的控制可以实现,让考生在规定的时间进入考场候考,在同一时间开始考试,在考试开始的规定时间内不得入场考试等。考生在选择参加考试后,系统会读取当前时间,用当前时间跟数据库中的时间进行对比,从而实现对入场时间的控制,实现在规定的时间内可以进入考试,开考一定时间后,不能登录考试。
(2)考试过程倒计时的实现,根据考试时间的安排,在考生进行考试系统后,进行倒计时,倒计时结束时,考生试卷自动提交,答案自动入库。教师安排整场考试的总时间,考生开始考试时,系统自动计时,获取当前系统时间,用考试开始时间加上考试时间(分钟)再减去当前时间,得到一个距离考试结束的分钟数,将这个得到的分钟数用标签显示到前台界面,前台界面生成后会自动创建一个定时器,刷新结束时间,当结束时间小于0时,表示考试已经结束,强制提交试卷。
2.3 、考试过程中断线处理
考试作为一种公正的测评工具,要能保证出现一些主客观原因而影响考试后,让学生能够找到原来的考试试卷,并且接着原来的答题进度进行答题。下面从两个方面研究实现考试过程中断处理。
(1)考试过程断线时,系统如何处理学生考试的相关数据
考试过程中断线时,要能够及时保存学生的试卷信息及答题信息,原理:当用户在答题时,系统自动定时的将用户的答案发送到服务器存储,而不是等待用户提交试卷时一次性提交。改系统中使用了JQuery和Ajax技术,在不刷新整个页面的情况下将用户的答案发送到服务器。
(2)学生在中断考试后,给监考教师说明情况后,监考老师对学生状态重置,学生可以重新进行考试的登录,并且接着原来的试卷进行作答。实现过程为:在试卷生成的时候,要根据不同的题型,生成不同的代码,保存到试卷表中,实时记录学生状态。在学生再次登录时,需要从数据库中读出该用户以前答题的答案,相应的显示到现有的试卷中,以便于用户继续往下作答。
2.4 、组卷策略
组卷策略是试卷生成设计的核心部分,随机抽题问题是检验考试系统对学生进行测评质量的关键技术,具体实现过程如下:
第一步:要对数据库中试题表中的每道试题建立编号,即试题编号,为保证试题编号的唯一性,将试题编号字段设置为主索引字段。
第二步:在C#中,要实现随机数的生成,有三种办法:
(1)使用Random类
Random类默认的无参构造函数可以根据当前系统时钟为种子,进行一系列算法得出要求范围内的伪随机数。这种随机数可以达到一些要求较低的目标,但是如果在高并发的情况下,Random类所取到的系统时钟种子接近甚至完全一样,就很有可能出现重复,这里用循环来举例输出100个相同的“随机数”:
这种方法存在的问题是:因为Random进行伪随机数的算法是固定的,所以根据同一个种子计算出的数字必然是一样的,而以当代计算机的运行速度,该循环几乎是在瞬间完成的,种子一致,所以可能会出现100次循环输出同一随机数的情况。这就需要我们在使用的时候,对随机数的重复率进行判断,复杂了丢掉,继续生成。
(2)使用Guid类
GUID(Globally Unique Identifier)全球唯一标识符,GUID的计算使用到了很多在本机可取到的数字,如硬件的ID码、当前时间等,所计算出的128位整数(16字节)可以接近唯一的输出。如:Console.WriteLine(Guid.NewGuid().ToString());
计算结果生成xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx结构的16进制数字。这种方法产生的随机数自动生成的128位的整数,128位的16进制整数,随机数量将非常之大。
(3)使用RNGCryptoServiceProvider类
RNGCryptoServiceProvider使用加密服务提供程序 (CSP)提供的实现来实现加密随机数生成器(RNG)
该类使用更严密的算法,所以即使如下放在循环中,所计算出的随机数也是不同的。
但是使用RNGCryptoServiceProvider的计算较为繁琐,在循环中使用会消耗造成大量的系统资源开销,使用时需注意。
统合以上三种随机数生成的方法,(1)系统进行随机抽题时,可能会抽到相同的试题,但经过重复率的判断和丢掉,同样可以满足组卷的要求;(2)对服务器资源开销不大,同时生成的随机数几乎接近唯一,由于其所表示的范围非常大,试题库中试题数量必须要大于这个随机数的数量;(3)占用系统开销比较大,结合实际情况,在线考试用户最大规模可能成千上万,这样对系统服务器的要求就会非常高。综合考虑,本系统使用Random类实现随机抽题,在生成随机数时进行重复率判断和重复丢弃。
第三步:使用Random类实现抽题功能,实现步骤为:打开数据库 读取试题库中相应科目的所有试题的编号,声明一个随机数Random,获取一个大于0小于试题总数的随机数,将对应的试题编号记下,再次获取一个大于0小于试题总数的随机数,将对应的试题编号记下,然后判断以前是否已经记过,如果记过放弃再抽,继续循环,直到所抽试题数达到组卷设置的试卷要求题目数,最后,将所有的随机抽到的试题编号记下,抽题结束。
2.5、 智能阅卷
现在大多数的在线考试系统主要实现客观题的考试,只需对比试题正确答案和学生答题试卷的答案,就可以判断出对错,并计算出成绩入库;而主观题则由教师在线进行阅卷,仍然无法摆脱人工阅卷效率低的困境,本系统对于在线考试智能阅卷进行了研究。
填空的自动阅卷分为两个阶段来进行处理,第一阶段由系统对学生提交的填空题答案和系统在阅卷表中预设的答案进行比对,如果相匹配,即学生答案正确;第二阶段由系统自动阅卷和教师人工阅卷相辅的方法,教师登录阅卷界面,打开相应的考试,查看学生的答案信息,此时,教师对学生答案表中填空题的学生答案进行分析,将正确的答案形式进行记录,存储到阅卷表中,系统用更新后的填空题答案和学生的答案进行比对,即进行二次判卷,并将成绩入库,从而实现对填空题的自动阅卷。
3 、总结
本论文主要对在线考试系统的关键技术:题库建设、组卷策略和考场控制等进行了全新研究,增加了试题的难度系统,开发出更适用于实际情况的在线考试系统,解决了学校繁重的期中、期末考试考务工作。
在系统的设计实现过程中,综合运用Asp.net、Ajax技术、JQuery技术和Sql Server 2005实现了在线考试系统。解决了在线考试系统重点功能:智能组卷、智能阅卷、考试过程防断线和倒计时等功能。
参考文献
[1]陈志坚.基于.NET的在线考试系统设计与实现[J].荆楚理工学院学报,2010(11).
[2]王瑜.基于ASP.NET的在线考试系统[J].电脑学习,2011(01).
[3]李娟,王海红.基于.NET的在线考试系统的设计与实现[J].科技信息,2010(03).