江軍強 李展宗 王建志
摘 要:在線考試必須實現(xiàn)時間顯示、定時存盤、自動交卷等時間控制功能,時間控制技術(shù)是在線考試的關(guān)鍵技術(shù)。傳統(tǒng)的Web技術(shù)難以實現(xiàn)時間控制功能,使用AJAX技術(shù)可以方便地實現(xiàn)時間控制功能。文章介紹了在線考試時間控制技術(shù)的設(shè)計與實現(xiàn),具體說明了AJAX組件的實現(xiàn)方案和關(guān)鍵代碼。
關(guān)鍵詞:在線考試;時間控制;ASP.NET;AJAX組件
中圖分類號:TP311.52 文獻標識碼:A
1 引言(Introduction)
傳統(tǒng)考試采用人工的考試方式。隨著計算機和網(wǎng)絡(luò)的普及,計算機考試系統(tǒng)使用越來越廣泛。計算機考試系統(tǒng)具有試題管理、自動組卷、在線考試、自動評分等功能,和傳統(tǒng)考試方式相比,計算機考試系統(tǒng)具有工作效率高、資源消耗低和管理方便等優(yōu)點[1]。
計算機考試系統(tǒng)分為B/S和C/S兩種工作模式。C/S模式稱為客戶機服務器模式,是由客戶機應用程序和數(shù)據(jù)庫服務器組成。B/S模式稱為瀏覽器服務器模式,是由瀏覽器、Web服務器和數(shù)據(jù)庫服務器組成。B/S模式是當前主流的應用模式,和C/S模式相比,B/S模式具有安裝簡單、容易使用、管理方便等優(yōu)點。本文采用ASP.NET技術(shù)實現(xiàn)基于B/S模式的在線考試系統(tǒng)。
時間控制技術(shù)是在線考試的關(guān)鍵技術(shù)。時間控制技術(shù)實現(xiàn)考試剩余時間實時顯示、每隔一定時間自動保存答題結(jié)果和考試時間到自動交卷等時間控制功能。本文介紹了實現(xiàn)時間控制功能的AJAX技術(shù),具體說明了在線考試系統(tǒng)AJAX組件的設(shè)計、實現(xiàn)和關(guān)鍵代碼。
2 AJAX技術(shù)概述(AJAX overview)
傳統(tǒng)的Web技術(shù)基于“請求-刷新”機制。當瀏覽器刷新頁面的時候,瀏覽器向Web服務器提出請求,Web服務器接受并處理請求,向瀏覽器發(fā)送全部頁面數(shù)據(jù),瀏覽器接受返回的數(shù)據(jù),刷新整個頁面。當頁面只有局部區(qū)域需要刷新的時候,傳統(tǒng)的Web技術(shù)也要發(fā)送全部頁面數(shù)據(jù),刷新整個頁面,當網(wǎng)速較慢的時候,整個過程要消耗較長的時間,造成頁面的響應速度變慢,整個頁面刷新還會帶來明顯的頁面閃爍。
AJAX的中文名稱是“異步的JavaScript和XML”,AJAX技術(shù)是一種頁面局部刷新和異步回發(fā)的Web開發(fā)技術(shù)[2]。當采用AJAX技術(shù)的網(wǎng)頁刷新頁面局部區(qū)域的時候,瀏覽器向Web服務器提出所需數(shù)據(jù)的請求,Web服務器只需向瀏覽器發(fā)送所需頁面的數(shù)據(jù)。瀏覽器和Web服務器的交互是一種異步回發(fā)的過程,瀏覽器發(fā)出請求并不等待Web服務器返回數(shù)據(jù),而是繼續(xù)進行HTML文檔的解析顯示和接受用戶的輸入操作。瀏覽器收到所需的頁面數(shù)據(jù)并不刷新整個頁面,而是刷新頁面的局部區(qū)域。整個過程只有需要的數(shù)據(jù)在網(wǎng)絡(luò)中傳送,這既提高了頁面的響應速度,又不影響頁面的正常顯示和用戶操作,所以AJAX技術(shù)特別適合應用于交互多、數(shù)據(jù)需頻繁提交的在線考試系統(tǒng)[3]。
AJAX技術(shù)在ASP.NET開發(fā)平臺有著重要的作用。ASP.NET將AJAX作為系統(tǒng)的標準配置,ASP.NET提供了一組AJAX Extensions控件,開發(fā)人員使用這組AJAX組件可以方便地在ASP.NET網(wǎng)頁中應用AJAX技術(shù)。AJAX組件實現(xiàn)頁面局部刷新和異步回發(fā)的核心技術(shù)是UpdatePanel控件和ScriptManager控件。UpdatePanel控件用于定義頁面的可更新區(qū)域,當頁面區(qū)域需要局部更新的時候,就將這塊區(qū)域包圍在UpdatePanel中。ScriptManager控件用于解決客戶端JavaScript腳本程序與Web服務器之間相互通信的問題。Timer控件用于實現(xiàn)定時刷新頁面的功能,Timer控件的Interval屬性用于設(shè)置定時的時間間隔,單位為毫秒,Tick事件用于編寫代碼實現(xiàn)時間控制功能。UpdateProgress控件用于頁面發(fā)生異步回發(fā)的時候給予用戶一個友好的提示,UpdateProgress控件的AssociatedUpdatePanelID屬性用于設(shè)置UpdateProgress控件關(guān)聯(lián)的UpdatePanel控件,當UpdatePanel控件發(fā)送異步回發(fā)的時候,頁面顯示UpdateProgress控件,當UpdatePanel控件收到web服務器發(fā)回的數(shù)據(jù)的時候,頁面隱藏UpdateProgress控件。
3 時間控制設(shè)計與實現(xiàn)(Time control design and
implementation)
時間控制功能是在線考試的基本功能。在線考試系統(tǒng)必須能夠顯示當前剩余的考試時間,對考試時間自動進行倒計時,考試時間到自動進行交卷操作。考生在考試過程中,當遇到意外情況如數(shù)據(jù)庫連接失敗、交卷失敗、網(wǎng)絡(luò)中斷等情況時,如果不加以處理,一般會造成數(shù)據(jù)的丟失,很容易造成考生考試失敗[4]。為了提高系統(tǒng)的容錯性,系統(tǒng)必須能夠按照一定的時間間隔自動保存考生的答題結(jié)果和考試的剩余時間。在系統(tǒng)異常退出的情況下,考生能夠進行二次考試,系統(tǒng)自動讀取最近一次考生的答題結(jié)果和考試的剩余時間,最大限度地減少意外情況對考試的影響。由于定時存盤是在系統(tǒng)后臺完成,為了方便考生查看存盤狀態(tài),系統(tǒng)在進行存盤操作的時候,頁面顯示“正在存盤”的提示信息。在線考試系統(tǒng)時間控制處理流程如圖1所示。
圖1 時間控制處理流程圖
Fig.1 Time control processing flow chart
傳統(tǒng)的Web技術(shù)實現(xiàn)在線考試的時間控制功能存在諸多問題。服務器需要每隔一段時間向客戶端發(fā)送時間,校正客戶端顯示的剩余時間,考生每做一題,答案立即保存到服務器,這樣會導致客戶端考試頁面頻繁刷新,影響考生考試操作[5]。AJAX組件能方便有效地實現(xiàn)在線考試系統(tǒng)的時間控制。時間顯示定義為頁面的局部刷新區(qū)域,則時間顯示只刷新頁面的局部區(qū)域,不會刷新整個頁面。定時存盤定義為異步回發(fā)操作,則定時存盤由系統(tǒng)在后臺自動完成,不會影響用戶操作。在考試頁面添加一個UpdatePanel控件,建立一個頁面局部刷新區(qū)域。在UpdatePanel控件中,分別添加Label控件、ScriptManager控件和Timer控件。Label控件用于考試時間倒計時顯示,Timer控件用于考試過程的時間控制。Timer控件的Interval屬性設(shè)置為1000毫秒,表示定時操作的時間間隔為1秒鐘。在Timer控件的Tick事件中編寫代碼,實現(xiàn)時間控制功能。在考試頁面添加一個UpdateProgress控件,在UpdateProgress控件中添加存盤提示信息,設(shè)置UpdateProgress控件的AssociatedUpdatePanelID屬性為UpdatePanel控件ID,當系統(tǒng)在后臺進行定時存盤的時候, 頁面顯示UpdateProgress控件的存盤提示信息。頁面設(shè)計顯示效果如圖2所示。
圖2 考試頁面效果圖
Fig.2 Examination page effect chart
4 時間控制關(guān)鍵代碼(Time control key codes)
Timer控件的Tick事件實現(xiàn)了考試過程時間顯示、定時存盤和自動交卷等時間控制功能。時間顯示功能每隔一秒鐘將當前剩余時間秒數(shù)減一,并將當前剩余時間秒數(shù)轉(zhuǎn)換為時間格式在頁面顯示。定時存盤功能每隔一秒鐘將定時時間變量加一,若定時時間變量為300,即定時時間間隔為5分鐘,則進行存盤操作,保存當前答題結(jié)果和考試時間,并將定時時間變量重置為0。自動交卷功能每隔一秒鐘將當前剩余時間秒數(shù)減一,若當前剩余時間秒數(shù)為0,表示考試已經(jīng)結(jié)束,則進行自動交卷操作,保存考生答題結(jié)果,更新考生考試狀態(tài)為“考試結(jié)束”,重定向當前頁面為開始考試頁面。時間控制關(guān)鍵代碼如下:
protected void Timer1_Tick(object sender,
EventArgs e)
{
extime--;//考試時間減一
if (extime==600||extime==testtime*0.1)//考試結(jié)束前十分鐘提示
{
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 結(jié)論(Conclusion)
在線考試必須實現(xiàn)時間顯示、定時存盤、自動交卷等時間控制功能。時間控制技術(shù)是在線考試的關(guān)鍵技術(shù),傳統(tǒng)的Web技術(shù)難以實現(xiàn)時間控制功能,AJAX技術(shù)能有效地實現(xiàn)時間控制功能。ASP.NET將AJAX技術(shù)作為標準配置,提供一組AJAX組件,使用ASP.NET的AJAX組件能方便地應用AJAX技術(shù)實現(xiàn)在線考試系統(tǒng)的時間控制功能。本文具體論述了AJAX組件應用于在線考試系統(tǒng)時間控制功能的分析、設(shè)計和關(guān)鍵代碼。經(jīng)實踐證明,本技術(shù)方案切實可行,有效地實現(xiàn)了在線考試系統(tǒng)的時間控制功能。由于本技術(shù)方案基于AJAX組件,因此頁面顯示和實現(xiàn)功能受AJAX組件限制,這還要在今后的實踐中加以完善,擴展其功能,提高在線考試系統(tǒng)的性能。
參考文獻(References)
[1] 唐子蛟,江旭梅.基于ASP.NET的網(wǎng)絡(luò)考試系統(tǒng)的實現(xiàn)[J].四
川理工學院學報,2010,23(5):550-552.
[2] 金旭亮.ASP.NET程序設(shè)計教程[M].北京:高等教育出版社,
2009:363-374.
[3] 熊曉莉,侯永廣.基于ASP.NET和AJAX的在線考試系統(tǒng)開發(fā)
[J].信息技術(shù),2012,2:23-26.
[4] 羅軍鋒,鎖志海,李雪琴.在線考試系統(tǒng)中實時保存技術(shù)的設(shè)
計與實現(xiàn)[J].中國教育信息化,2008,7:85-87.
[5] 徐紅勤.Ajax在網(wǎng)絡(luò)考試系統(tǒng)中的應用[J].計算機應用,2007,
27:349-350.
作者簡介:
江軍強(1974-),男,碩士,講師,軟件工程師.研究領(lǐng)域:
Web應用軟件開發(fā).
李展宗(1968-),男,碩士,講師.研究領(lǐng)域:計算機網(wǎng)絡(luò)技術(shù).
王建志(1971-),男,本科,網(wǎng)絡(luò)工程師.研究領(lǐng)域:計算機網(wǎng)
絡(luò)技術(shù).