摘要:現代遠程教育廣泛應用網上在線考試系統來進行教學與考試。本文基于.Net開發環境與Sql2005數據庫,介紹了在線考試系統的隨機抽題、考試計時、斷點續考等關鍵技術的實現。
關鍵詞:遠程教育;在線考試系統;隨機抽題;斷點續考
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2010)21-6028-02
The Online Exam System of Modern Distance Education
YANG Heng, LI Gui-ping, ZHANG Bing
(Hunan Radio TV University, Education Information Technology Center, Changsha 410004, China)
Abstract: The Online Exam System is used for distance education's teaching and examination widely. This paper introduces the Key Technologies of The Online Test System based on .NET development environment and Sql2005 database, such as random topics picking, examination timing, and continuous exam of broken point.
Key words: distance education; the online exam system; random topics picking; continuous exam of broken point
隨著社會的發展,教育越來越被人們所重視,現代遠程教育正是隨著現代信息技術的發展而產生的一種新型教育方式,它的學習行為自主化完全滿足現代教育和終身教育的需求。而構建一個人性化、高效的網上在線考試系統將是遠程教學中的熱門話題。
1 系統開發環境及相關技術
1.1 開發環境
ASP.net是一種建立在通用語言上的程序構架,能利用Web服務器建立強大、安全和高效的Web應用程序,并提供了豐富的數據庫接口,因此選擇VS.NET 2008做來開發工具。SQL Server是Windows操作系統下的數據庫系統,具有強大的數據管理與處理能力,滿足在線考試系統對數據處理的要求,因此數據庫采用SQL Server2005。
1.2 基于.Net的Ajax技術
Ajax技術最大的特點是采用了異步交互模式,我們可以利用該特點,使用戶操作和服務器的響應異步化,用戶無需等待/請求響應,仍可進行其它操作。
2 系統關鍵功能設計與實現
2.1 試卷的生成
試卷的生成是整個在線考試系統中的關鍵功能之一,本考試系統利用考試試卷的設置,即題目類型與題目數量自動為每位考生生成不同的試卷。如何生成不同的試卷主要是利用SQL Server2005中的隨機函數rnd()實現,關鍵代碼如下:
DataTable dt = SqlUnit.ExecuteDataSet(\"select cateid, number from exam_detail where examid='\" + eid + \"'\",\"cate\").Tables[\"cate\"];/*注: SqlUnit為自己所寫數據庫操作類*/
foreach (DataRow dr in dt.Rows)
{dati++;
cate[dati] = dr[\"cateid\"].ToString();/*將試題類型ID存入數組*/
num[dati] = dr[\"number\"].ToString();}/*將相應試題類型的試題數量存入數組*/
for (i = 1; i <= dati; i++)
{switch (cate[i])
{case \"3\":
dt = SqlUnit.ExecuteDataSet(\"select top \" + num[i] + \" id,score from tiku_timu wheresubjectid=\" + sid + \" and cateid=3 order by rnd(-1*id*0.284324)\",\"chouti\").Tables[\"chouti\"];/*隨機抽取試題的SQL語句*/
foreach (DataRow dr in dt.Rows)
{timu++;/*試題數量累加*/
timuid[timu] = dr[\"id\"].ToString();/*將試題的ID存入數組*/
score += int.Parse(dr[\"score\"].ToString());}/*將題目的分值累計到變量score,最后作為該試卷的總分數*/
break;
…}}
for (i = 1; i <= timu; i++)
{SqlUnit.ExecuteSql(\"Insert into exam_chouti (paperid,timuid) values (\" + paperid + \",\" + timuid[i] + \")\");}/*將生成的試卷ID及其包含的題目ID存入抽題數據表中*/
2.2 考試計時
在進入考試時,首先將考生信息,考試信息及考試剩余時間存入ViewState,然后在前臺js中讀取。
var minute=Math.round(<%=ViewState[\"LastTime\"].ToString() %>/60);
var second=<%=ViewState[\"LastTime\"].ToString() %>%60;
var staytime=0;
var userid=\"<%=ViewState[\"UserID\"].ToString() %>\";
var examid=\"<%=ViewState[\"ExamID\"].ToString() %>\";
if((<%=ViewState[\"LastTime\"].ToString() %>/60) {minute=minute-1;} function showtime() {staytime=staytime+1; if (second==0) { second=59; minute-=1;} else { second-=1; }; if (minute<0) {PageMethods.UpdateTimeZero(examid,userid); document.getElementById(\"btn_Jiaojuan\").click();} else {window.timeout.innerHTML=\"離比賽結束還有:\"+minute+\" 分 \"+second+\" 秒 \"; setTimeout(\"showtime()\",1000);} } function writetime() {PageMethods.UpdateTime(examid,userid,staytime); staytime=0;} function newtime() {setTimeout(\"writetime()\",Math.random()*54321);} 我們在考試前臺頁面中插入以下js代碼: 調用前面所定義的showtime()函數,每隔一秒鐘便更新前臺中的剩余時間提示,當時間計時完畢,便調用后臺代碼中的以下WebMethod: [System.Web.Services.WebMethod] public static void UpdateTimeZero(string examid, string userid) {SqlUnit.ExecuteUpdate(\"update exam_paper set lastminute=0 where examid='\" + examid + \"' and userid='\" + userid + \"'\");} 將考試剩余時間置零,同時交卷。 2.3 斷點續考 我們在考試頁面中加入以下js代碼: 在隨機0~54321毫秒后,調用后臺代碼中的以下WebMethod: [System.Web.Services.WebMethod] public static void UpdateTime(string examid, string userid, string sptime) {SqlUnit.ExecuteUpdate(\"update exam_paper set lastminute=lastminute-\" + sptime + \" where examid='\" + examid + \"' and userid='\" + userid + \"'\");} 實現將剩余時間實時寫入數據庫中,這樣即使客戶端發生異常,例如死機等情況,客戶端中的js代碼將不會再執行,計時停止。當計算機異常死機,考生換機或重啟后再次登錄系統,系統將會重新從數據庫中讀取剩余時間,繼續當前的考試,計時繼續。 3 結束語 本文針對遠程教育對考試系統的特殊要求,設計了該基于ASP.Net及AJAX技術的考試系統,提高后臺數據交互效率,實現了切換試題無刷新,實時保存結果,隨機抽題,斷點續考等功能,并提供考試及練習等模式,客觀題自動評分,試題解析,滿足學生的考試與練習,自察自糾的需求。 參考文獻: [1] Stephen Walther. ASP.NET 3.5揭秘[M].卷1.北京:人民郵電出版社,2009. [2] 王宏宇.征服ASP.NET 2.0 Ajax典型應用[M].北京:人民郵電出版社,2007. [3] 陳黎夫.ASP.NET AJAX程序設計[M].北京:人民郵電出版社,2007.