1 引言(Introduction)
传统考试采用人工的考试方式。随着计算机和网络的普及,计算机考试系统使用越来越广泛。计算机考试系统具有试题管理、自动组卷、在线考试、自动评分等功能,和传统考试方式相比,计算机考试系统具有工作效率高、资源消耗低和管理方便等优点[1]。
计算机考试系统分为B/S和C/S两种工作模式。C/S模式称为客户机服务器模式,是由客户机应用程序和数据库服务器组成。B/S模式称为浏览器服务器模式,是由浏览器、Web服务器和数据库服务器组成。B/S模式是当前主流的应用模式,和C/S模式相比,B/S模式具有安装简单、容易使用、管理方便等优点。本文采用ASP.NET技术实现基于B/S模式的在线考试系统。
时间控制技术是在线考试的关键技术。时间控制技术实现考试剩余时间实时显示、每隔一定时间自动保存答题结果和考试时间到自动交卷等时间控制功能。本文介绍了实现时间控制功能的AJAX技术,具体说明了在线考试系统AJAX组件的设计、实现和关键代码。
2 AJAX技术概述(AJAX overview)
传统的Web技术基于“请求-刷新”机制。当浏览器刷新页面的时候,浏览器向Web服务器提出请求,Web服务器接受并处理请求,向浏览器发送全部页面数据,浏览器接受返回的数据,刷新整个页面。当页面只有局部区域需要刷新的时候,传统的Web技术也要发送全部页面数据,刷新整个页面,当网速较慢的时候,整个过程要消耗较长的时间,造成页面的响应速度变慢,整个页面刷新还会带来明显的页面闪烁。
AJAX的中文名称是“异步的JavaScript和XML”,AJAX技术是一种页面局部刷新和异步回发的Web开发技术。
AJAX技术在ASP.NET开发平台有着重要的作用。ASP.NET将AJAX作为系统的标准配置,ASP.NET提供了一组AJAX Extensions控件,开发人员使用这组AJAX组件可以方便地在ASP.NET网页中应用AJAX技术。AJAX组件实现页面局部刷新和异步回发的核心技术是UpdatePanel控件和ScriptManager控件。UpdatePanel控件用于定义页面的可更新区域,当页面区域需要局部更新的时候,就将这块区域包围在UpdatePanel中。ScriptManager控件用于解决客户端JavaScript脚本程序与Web服务器之间相互通信的问题。Timer控件用于实现定时刷新页面的功能,Timer控件的Interval属性用于设置定时的时间间隔,单位为毫秒,Tick事件用于编写代码实现时间控制功能。UpdateProgress控件用于页面发生异步回发的时候给予用户一个友好的提示,UpdateProgress控件的AssociatedUpdatePanelID属性用于设置UpdateProgress控件关联的UpdatePanel控件,当UpdatePanel控件发送异步回发的时候,页面显示UpdateProgress控件,当UpdatePanel控件收到web服务器发回的数据的时候,页面隐藏UpdateProgress控件。
3 时间控制设计与实现(Time control design and
implementation)
时间控制功能是在线考试的基本功能。在线考试系统必须能够显示当前剩余的考试时间,对考试时间自动进行倒计时,考试时间到自动进行交卷操作。考生在考试过程中,当遇到意外情况如数据库连接失败、交卷失败、网络中断等情况时,如果不加以处理,一般会造成数据的丢失,很容易造成考生考试失败[4]。为了提高系统的容错性,系统必须能够按照一定的时间间隔自动保存考生的答题结果和考试的剩余时间。在系统异常退出的情况下,考生能够进行二次考试,系统自动读取最近一次考生的答题结果和考试的剩余时间,最大限度地减少意外情况对考试的影响。由于定时存盘是在系统后台完成,为了方便考生查看存盘状态,系统在进行存盘操作的时候,页面显示“正在存盘”的提示信息。在线考试系统时间控制处理流程如图1所示。
图1 时间控制处理流程图
Fig.1 Time control processing flow chart
传统的Web技术实现在线考试的时间控制功能存在诸多问题。服务器需要每隔一段时间向客户端发送时间,校正客户端显示的剩余时间,考生每做一题,答案立即保存到服务器,这样会导致客户端考试页面频繁刷新,影响考生考试操作[5]。AJAX组件能方便有效地实现在线考试系统的时间控制。时间显示定义为页面的局部刷新区域,则时间显示只刷新页面的局部区域,不会刷新整个页面。定时存盘定义为异步回发操作,则定时存盘由系统在后台自动完成,不会影响用户操作。在考试页面添加一个UpdatePanel控件,建立一个页面局部刷新区域。在UpdatePanel控件中,分别添加Label控件、ScriptManager控件和Timer控件。Label控件用于考试时间倒计时显示,Timer控件用于考试过程的时间控制。Timer控件的Interval属性设置为1000毫秒,表示定时操作的时间间隔为1秒钟。在Timer控件的Tick事件中编写代码,实现时间控制功能。在考试页面添加一个UpdateProgress控件,在UpdateProgress控件中添加存盘提示信息,设置UpdateProgress控件的AssociatedUpdatePanelID属性为UpdatePanel控件ID,当系统在后台进行定时存盘的时候, 页面显示UpdateProgress控件的存盘提示信息。页面设计显示效果如图2所示。
图2 考试页面效果图
Fig.2 Examination page effect chart
4 时间控制关键代码(Time control key codes)
Timer控件的Tick事件实现了考试过程时间显示、定时存盘和自动交卷等时间控制功能。时间显示功能每隔一秒钟将当前剩余时间秒数减一,并将当前剩余时间秒数转换为时间格式在页面显示。定时存盘功能每隔一秒钟将定时时间变量加一,若定时时间变量为300,即定时时间间隔
为5分钟,则进行存盘操作,保存当前答题结果和考试时间,并将定时时间变量重置为0。自动交卷功能每隔一秒钟将当前剩余时间秒数减一,若当前剩余时间秒数为0,表示考试已经结束,则进行自动交卷操作,保存考生答题结果,更新考生考试状态为“考试结束”,重定向当前页面为开始考试页面。时间控制关键代码如下:
protected void Timer1_Tick(object sender,
EventArgs e)
{
extime--;//考试时间减一
if (extime==600||extime==testtime*0.1)//考试结束前十分钟提示
{
etime.ForeColor=System.Drawing.Color.Red;
etime.Font.Bold=true;
}
if (++savetime==30&&extime!=0)//每隔五分钟定时存盘
{
SaveTest();
savetime=0;
}
if (extime==0)//考试时间到自动交卷
{
SaveQuestion(currentquestion);
SaveTest();
Session["testing"]=0;
Response.Redirect("starttest.aspx");
}
etime.Text=Convert.ToString(extime/60)+
":"+Convert.ToString(extime-extime/60*60);//
显示考试时间
}
5 结论(Conclusion)
在线考试必须实现时间显示、定时存盘、自动交卷等时间控制功能。时间控制技术是在线考试的关键技术,传统的Web技术难以实现时间控制功能,AJAX技术能有效地实现时间控制功能。ASP.NET将AJAX技术作为标准配置,提供一组AJAX组件,使用ASP.NET的AJAX组件能方便地应用AJAX技术实现在线考试系统的时间控制功能。本文具体论述了AJAX组件应用于在线考试系统时间控制功能的分析、设计和关键代码。经实践证明,本技术方案切实可行,有效地实现了在线考试系统的时间控制功能。由于本技术方案基于AJAX组件,因此页面显示和实现功能受AJAX组件限制,这还要在今后的实践中加以完善,扩展其功能,提高在线考试系统的性能。
参考文献(References)
[1] 唐子蛟,江旭梅.基于ASP.NET的网络考试系统的实现[J].四
川理工学院学报,2010,23(5):550-552.
[2] 金旭亮.ASP.NET程序设计教程[M].北京:高等教育出版社,
2009:363-374.
[3] 熊晓莉,侯永广.基于ASP.NET和AJAX的在线考试系统开发
[J].信息技术,2012,2:23-26.
[4] 罗军锋,锁志海,李雪琴.在线考试系统中实时保存技术的设
计与实现[J].中国教育信息化,2008,7:85-87.
[5] 徐红勤.Ajax在网络考试系统中的应用[J].计算机应用,2007,
27:349-350.
作者简介:
江军强(1974-),男,硕士,讲师,软件工程师.研究领域:
Web应用软件开发.