摘要:隨著WEB技術的發展,基于WEB的在線考試也迅速地發展起來。由于VFP課程操作性強的特點,用傳統的WEB開發考試系統會帶來許多不便。利用AJAX開發該課程的考試系統,可以異步傳送學生所做試題的答案,實時分析學生所做試題的情況,統計學生對該課程的掌握情況,提供個性化的考試環境。
關鍵詞:VFP; AJAX; 考試系統
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2009)32-8952-02
VFP-based-WEB Examination System Design and Development
HU Ting-yan
(Jiujiang College of Information Science and Technology-based Teaching and Research, Jiujiang 332005, China)
Abstract: With the development of WEB Technology,WEB-based online exam is also rapidly developed. Operable due to the characteristics of VFP program, WEB development of the traditional examination system will bring a lot of inconvenience. Using AJAX to develop the curriculum examination system, Asynchronous transfer students can be made to answer examination questions, Students do real-time analysis of examination questions, Statistics of the course the students to grasp the situation, Provide personalized environment for the candidates.
Key words: VFP; AJAX; Examination System
隨著互聯網的廣泛應用,傳統化的考試已逐步移植到互聯網上進行。為了保證考試的公正性、學生在線考試期間必須保障系統的順利運行、學生做完每一個題都能夠及時提交答案到服務器、記錄學生做完一個所需的時間,這要求系統具有異步獲取、局部傳送數據的功能。如果用傳統的WEB開發模式開發考試系統,將無法滿足上述要求。因此,提出了一種基于AJAX的在線考試系統。AJAX是一種具有異步獲取、局部傳送數據特點的WEB開發技術,可以自動交互請求、防止頁面的全局刷新、減少客服端與服務器端數據交換量,所以AJAX的出現將極大地促進了在線考試系統的發展。
1 VFP考試系統的設計與實現
1.1 系統分析
網絡考試系統不僅能提供給學生一個操作簡便、公正、高效的考試環境;而且能夠為教師及時獲取學生掌握每個知識點的情況,為學生提供更加全面的教學。
系統采用B/S開發模式,學生端只需要安裝瀏覽器,就能夠通過身份驗證登錄到考試系統。登錄成功后,系統將按知識點的比例從題庫中按隨機抽出試題,抽題成功將為該學生創建一個以該生學號命名的數據表,用來記錄學生的試題答案;學生在做題過程中不能刷新頁面;學生每做一題都能將答案提交到服務器、且不清空該學生所做試題的答案;記錄學生考試時間,若時間已到,該生還沒有提交試卷,系統將自動上交試卷。
教師能夠在服務器端及時監控學生的情況,如:缺考考生人數,向違紀學生發送提示信息等。教師能及時添加考試試題,統計學生及格情況,分析學生掌握知識點的情況。
1.2 系統設計
通過對在考試系統的分析,以及該項目的整體目標,確定采用三層架構進行設計。客戶端通過一個名為XMLHttpRequest的對象(以下簡稱XHR)和服務器進行通信,通過XHR對象可以異步獲取客戶端的數據,然后傳送到服務器經過數據的處理,傳送到客戶端局部更新客服端數據。具體設計架構如圖1所示。
該考試系統的具體功能模塊如圖2所示,具體內容如下:
1) 用戶身份驗證:驗證學生和教師的身份;
2) 試卷的隨機生成:根據學生所考科目,從試題庫中合理地抽取試題組成試卷,以試題中字段名(編號、題型、答案、所用時間、所做答案、分值、學生所得分)創建一個以學生學號命名的數據表;
3) 在線考生管理:統計參加考試學生的人數,學生做完一個題后立刻獲取學生所做答案;
4) 試題管理:教師可以添加試題,統計學生學習情況。
1.3 系統實現
網上考試系統數據主要包括每個學生隨機抽出的試題和試卷中各類試題的學生答案。如何保存好網上考試中學生的數據是非常重要的,利用AJAX技術的解決方案如下:
1) 試卷的隨機生成
當學生登錄成功后,從題庫中隨機抽出一定數量的試題。該功能主要使用隨機函數Math.random()產生n個不同的隨機數,核心思想如下:
function sj(tx,sum,n)
//tx為試題的題型,sum為該題型總的數量,n為抽出總的試題數量
{for i=0 to n-1
while m<=i-1
if a(m)=num//num為已經產生的隨機數,使用隨機函數產生另一個隨機數賦值給num
m=0
else
m++
a(i)=num
}
當試卷生成后,在數據庫中創建一個以學生學號命名的表:
\"create table \"tname\"
(id counter CONSTRAINT id PRIMARY KEY,sno char(100),A char(100),B char(100),cj char(100) default 0)\"
2) 在線考生管理
學生在做每個題時,都為觸發一個OnClick事件。利用該事件調用函數getE(n,d)(其中n為題號,d為該對象的ID屬性值)來異步獲取學生的答案和操作時間等。核心思想如下:
function getE(n,d)
{ var userdaan=document.getElementById(d).value;
url=\"check.asp?name=\" + userdaan + \"n=\" + n + \"t=\"+new Date().getTime();
//連接到服務器中的check.asp頁面,并將題號傳送過去
createXHR();//創建XMLHttpRequest對象
xmlHttp.onreadystatechange=catchtext;//指定響應的函數
xmlHttp.open(\"get\",url,true);//建立鏈接
xmlHttp.send(1);}
function catchtext()
{if(xmlHttp.readyState==4)
if(xmlHttp.status==200)
var obj=xmlHttp.responseText;}
在check.asp中使用request對象接收考生所做試題的編號和答案,利用update修改該學生所做試題的答案。為了確保學生所做試題的答案在刷新時保持不變,在每個試題中加一個隱藏域,用來保存學生做該題的答案。具體代碼如下:
id=<%=\"a\"i%> value=<%=rs4(\"B\").value%>>
然后通過document.getElementById(\"a\"+i).value獲取隱藏域的值,如果該值不為空,表示該試題已經做了。具體實現的關鍵代碼如下:
if(學生所做答案不為空)
{ if(試題類型為選擇題)
將該對象的checked屬性修改為\"checked\";
else
將該對象的values屬性修改為隱藏域的值}
2 結束語
利用AJAX技術開發了該考試系統,能夠異步獲取客服端的局部數據,使學生獲取更好的體驗和性能。
參考文獻:
[1] 林國輝.基于AJAX的在線考試系統[J].廣東教育學院學報,2008(6):96-99.
[2] 梁曉誠,李曉堅.利用ASP技術實現網絡輔助教學[J].計算機工程,2000(10):703-706.
[3] 王沛.征服Ajax Web 2.0開發技術詳解[M].北京:人民郵電出版社,2006.
[4] 王利主.全國計算機等級考試二級教程——Visual FoxPro 6.0程序設計[M].北京:高等教育出版社,2001.
[5] 翁正科.Visual FoxPro 數據庫開發教程[M].北京:清華大學出版社,2003.
[6] 高永惠. Visual FoxPro 中常見錯誤及其處理方法[J].懷化學院學報,2003(10):86-88.
[7] 卜維豐.Ajax技術應知應會90題[M].北京:電子工業出版社,2008.
[8] 張恒.ASP.NET網絡程序設計教程[M].北京:人民郵電出版社,2009.