摘 要:設(shè)計了一個基于Web的在線測試系統(tǒng),并成功應(yīng)用于網(wǎng)絡(luò)課程的教學(xué)活動中。同時,設(shè)計了一個高效率自動組卷算法。介紹了該系統(tǒng)的功能、結(jié)構(gòu)、關(guān)鍵技術(shù)和自動組卷算法。該系統(tǒng)在其他的相關(guān)領(lǐng)域也有較重要的參考價值。
關(guān)鍵詞:在線測試;網(wǎng)絡(luò)課程;自動組卷
中圖法分類號:TP391.6文獻標(biāo)識碼:A
文章編號:1001—3695(2007)02—0230—03
1 引言
隨著Internet的發(fā)展,促進了新的教育革命,深刻改變著教與學(xué)的關(guān)系。國家教育部門正積極開展的網(wǎng)絡(luò)教育,改變了傳統(tǒng)的教育模式。網(wǎng)絡(luò)課程[1]的建設(shè)已成為遠程教育的重點工程。網(wǎng)絡(luò)課程是指在網(wǎng)絡(luò)環(huán)境下為學(xué)生提供某門學(xué)科的教學(xué)內(nèi)容及實施教學(xué)活動的總和,遠程教育的師生具有時空分離的特征。在線測試是網(wǎng)絡(luò)課程的教學(xué)活動中的重要環(huán)節(jié),在線測試系統(tǒng)是網(wǎng)絡(luò)課程中不可缺少的一部分。教師通過該系統(tǒng)維護題庫、出試卷、同時對學(xué)生的答卷進行計算機輔助分析,了解學(xué)生對課程內(nèi)容的理解和掌握程度;學(xué)生通過該系統(tǒng)可進行學(xué)習(xí)性在線測試,然后可對照參考答案,知道錯在何處,便于學(xué)生復(fù)習(xí);學(xué)生通過該系統(tǒng)可進行評價性在線測試,能較快知道分?jǐn)?shù),了解自己掌握課程內(nèi)容的程度。
本文使用C#編程語言開發(fā)設(shè)計了B/S結(jié)構(gòu)的基于Web方式的在線測試系統(tǒng),該測試系統(tǒng)作為網(wǎng)絡(luò)課程的重要組成部分。通過實際應(yīng)用及改進,該系統(tǒng)目前具備結(jié)構(gòu)合理、功能較完善、便于移植、便于維護、應(yīng)用性強等優(yōu)點。該系統(tǒng)不僅僅適用于網(wǎng)絡(luò)課程,也可應(yīng)用于其他的相關(guān)領(lǐng)域。本文主要介紹該系統(tǒng)的功能、結(jié)構(gòu)、實現(xiàn)的主要方法、新設(shè)計的一種高效自動組卷算法,以及還需要改進和必須注意的一些事項。
2 系統(tǒng)的功能
根據(jù)網(wǎng)絡(luò)課程的特點,將在線測試系統(tǒng)分為兩大模塊,即教師模塊與學(xué)生模塊。教師模塊包括試題管理、試卷管理、試卷批閱;學(xué)生模塊包括在線練習(xí)、在線測試、成績查詢等。
教師和學(xué)生都只需在客戶端通過Web瀏覽器進行操作,就能完成其模塊提供的各種功能。
該系統(tǒng)的開發(fā)環(huán)境為:WindowsXP/IIS5.0/.NET FrameWork1.1/ Microsoft Access 2000。
系統(tǒng)的功能模塊如圖1所示。
用戶登錄功能由網(wǎng)絡(luò)課程的主界面提供。在線測試系統(tǒng)與網(wǎng)絡(luò)課程的其他模塊(論壇、短信通信、作業(yè)管理等)共用用戶數(shù)據(jù)。用教師賬號進入網(wǎng)站教師主界面;用學(xué)生賬號進入網(wǎng)站學(xué)生主界面。
(1)試題管理。該模塊主要完成各種題型試題信息(名詞解釋、判斷題、填空題、單選題、多選題、簡答題、綜合題)的錄入、修改、查詢、添加和刪除。按不同題型、章節(jié)、難度、可信度等分別錄入試題,并將錄好的試題直接存入試題庫中,以備后面組卷之用。對于大量的試題,要針對某一試題進行操作難度較大,可采用與查詢相結(jié)合的方式,利用模糊查詢,確保查到需要的試題。先查到試題的題號,并調(diào)出該題目的相關(guān)內(nèi)容,然后對該試題進行修改。另外,通過查詢功能,人工出卷時可以方便快捷地找到所需的試題。
(2)在線出卷。該模塊是系統(tǒng)的核心,主要包括隨機出卷、人工出卷。隨機出卷是指按照試卷卡,通過控制參數(shù)的輸入,抽題者可從章節(jié)、題數(shù)、題型、難度、可信度等不同角度提出出卷要求,計算機根據(jù)抽題者的要求,采用抽題算法抽取試題的方式自動地從試題庫中抽取試題,生成試卷。人工出卷是指用戶可以根據(jù)考試要求利用查詢得到的相關(guān)題目任意選取題庫中的試題成卷,有較大的靈活性。隨機出卷和人工出卷將抽取的題目的編號存放到試卷表中。無論抽題算法設(shè)計得如何合理、試卷卡設(shè)置得如何恰當(dāng),隨機出卷有時總會令出卷者不太滿意。而人工出卷,如果要出一份好試卷,出卷者也要花費不少精力。通常是人工出卷與隨機出卷兩種方式相結(jié)合。先隨機出卷,然后再人工修改試卷。這樣便可以得到更為合理的試卷。試卷生成后可以通過預(yù)覽功能,瀏覽試卷效果。
(3)試卷批閱。該模塊為教師提供在線改卷功能。學(xué)生在線考試的結(jié)果保存在系統(tǒng)的數(shù)據(jù)庫中。教師對試題中的主觀題評分,客觀題由系統(tǒng)自動改卷,隨即生成分?jǐn)?shù),供學(xué)生參考或為考試成績,批改完成得出成績后,自動或手動錄入數(shù)據(jù)庫,與網(wǎng)絡(luò)課程的另一模塊作業(yè)管理的相關(guān)數(shù)據(jù)庫的成績合并,最后形成學(xué)生的最終成績。
(4)在線練習(xí)。通過做習(xí)題來達到學(xué)習(xí)的目的,是學(xué)習(xí)的一個重要手段。因此網(wǎng)絡(luò)課程中在線練習(xí)是必不可少的。本系統(tǒng)的在線練習(xí)提供計算機圖形學(xué)的各章節(jié)練習(xí)題。學(xué)生可進入各章節(jié)進行測試練習(xí),做完后提交。客觀題給出答案和分?jǐn)?shù),主觀題給出答案以供參考。
(5)在線考試。教師為了測試學(xué)生,發(fā)布相應(yīng)的試卷。讓學(xué)生在規(guī)定的時間內(nèi)完成考試。學(xué)生在規(guī)定的時段進入考場,在線做題,時間結(jié)束時提交答案,也可以中途交卷。
(6)查詢成績。在線考試完成后,老師批改試卷。學(xué)生可查詢自己的考試成績,也可查詢最終的總成績。教師可以通過短信將成績發(fā)送給學(xué)生。
3 系統(tǒng)的實現(xiàn)
本在線測試系統(tǒng)采用B/S基于Web的三層結(jié)構(gòu)模式[2],如圖2所示,限于篇幅,實現(xiàn)細節(jié)不再贅述。
下面介紹實現(xiàn)該系統(tǒng)的幾個關(guān)鍵問題。
3.1 數(shù)據(jù)庫設(shè)計
數(shù)據(jù)庫的設(shè)計在一個管理系統(tǒng)中起著重要的作用。一個設(shè)計合理、結(jié)構(gòu)清晰的數(shù)據(jù)庫能減少數(shù)據(jù)冗余、提高查詢速度、方便更新修改, 可以減輕程序的負擔(dān),提高程序的執(zhí)行效率和穩(wěn)定性。根據(jù)網(wǎng)絡(luò)課程的要求,本系統(tǒng)主要由以下幾個表組成:用戶表、試題表、試卷卡表、試卷表、答案表、試卷試題表等。
用戶表用于保存用戶的基本信息的主要字段有:用戶名、密碼、權(quán)限,還可以根據(jù)具體情況添加字段(如學(xué)號、出生年月、真實姓名、手機號等);試題表用于保存教師錄入的試題,字段同下表(試題id、章節(jié)序號、試題類型、試題、答案、選項A—D、選項E、難度等級、圖片路徑、考試or練習(xí)選擇);試卷卡表用于保存試卷中試題的要求,試卷按試卷卡的設(shè)置生成,具體字段為編號、試卷編號、試題類型、難度級別、可信度級別;試卷表用于存放人工和隨機生成的試卷,主要字段有試卷編號、試卷名稱、出題者、試卷出題方式、試卷范圍、試卷考試時間、試卷是否打開、試卷總分值、試卷卡號;試卷試題表用于記錄試卷的試題,如隨機生成一份試卷,組成這份試卷的試題編號保存到該表,具體字段有試卷編號(長整型、外鍵,標(biāo)志該條記錄屬于哪一份試卷)、試題編號(長整型、外鍵,使用試卷時用于檢索試題)。此表主要用于試卷檢索試題。
3.2 數(shù)據(jù)庫鏈接
采用ADO.NET技術(shù)鏈接數(shù)據(jù)庫。ADO.NET 添加了許多新的對象和程序化接口,如DataSet,DataView,DataAdapter,DataReader,DataSetCommand等,使得對數(shù)據(jù)庫的操作更簡單。本系統(tǒng)主要運用了DataSet,DataReader,DataAdapter這三個控件。
(1)DataSet 對象。它是ADO.NET的核心,專門用來處理從數(shù)據(jù)存儲中讀出的數(shù)據(jù),并以離線方式存在于本地內(nèi)存中。在DataSet 中可包含一定數(shù)量的DataTable,且每個DataTable 對應(yīng)一個數(shù)據(jù)庫的Table或View。一般來說, 一個對應(yīng)Data-Table 對象的數(shù)據(jù)表就是一組DataRow 與DataColumn 的集合。DataTable會負責(zé)維護每一數(shù)據(jù)行保留它的初始狀態(tài)和當(dāng)前的狀態(tài),以解決數(shù)據(jù)庫的并發(fā)訪問問題。ADO.NET 的離線連接模式減少了對數(shù)據(jù)服務(wù)器的壓力。在系統(tǒng)中查詢試題、試卷等信息基本上是由DataSet來保存記錄的,然后綁定在DataGrid控件顯示出來。
(2)DataReader 對象。當(dāng)以瀏覽的方式查看大量數(shù)據(jù)時,會占用大量內(nèi)存,導(dǎo)致性能下降。例如,一個鏈接(Connection) 用傳統(tǒng)的ADO Recordset對象去讀1 000行數(shù)據(jù)庫的記錄,則必須為這1 000行記錄將內(nèi)存分配給這個鏈接直至該鏈接的生命周期結(jié)束。如果有多個用戶在同一時間對同一計算機進行同樣的操作,則機器內(nèi)存將被過度使用。為了解決這些問題,DotNET框架提供了DataReader對象,從數(shù)據(jù)庫返回一個只讀的、僅能向下滾動的流(Stream) ,而且當(dāng)前內(nèi)存中每次僅存在一條記錄。本系統(tǒng)中生成練習(xí)題和試卷等頁面均用DataReader來讀取和操作數(shù)據(jù)。
(3)DataAdapter 對象。ADO.NET通過DataAdapter對象建立、初始化數(shù)據(jù)表,從而與DataSet 對象結(jié)合起來在內(nèi)存中存放數(shù)據(jù)。DataAdapter對象能隱藏與Connection,Command對象溝通的細節(jié)。DataAdapter對象允許將DataSet 對象中的數(shù)據(jù)保存到數(shù)據(jù)來源(Data Source) ,也可以從數(shù)據(jù)來源中提取數(shù)據(jù)。同理,也可對底層數(shù)據(jù)保存體進行數(shù)據(jù)的添加、刪除或修改操作。本系統(tǒng)用其來完成數(shù)據(jù)的維護操作。
3.3 自動出卷
自動出卷是考試系統(tǒng)自動化或半自動化操作的核心目標(biāo)之一,而如何保證生成的試卷能最大限度地滿足用戶的不同需要,并具有隨機性、科學(xué)性、合理性,這是實現(xiàn)中的一個難點。尤其在交互式環(huán)境下用戶對于出卷的速度要求較高。自動生成試卷這個問題已有討論[3]。但這些算法都比較復(fù)雜,出卷的時間也較長,不適合本系統(tǒng)。因此本系統(tǒng)采用了一個簡單實用的算法如圖3所示。
該算法簡單、隨機性強,使用效果較理想。從算法的實際運行來看,即便系統(tǒng)自身的設(shè)置、選題的算法等均正確無誤,也有可能使試卷生成失敗(n-m<0時)。究其原因,是因為題庫中,有能符合條件且可供選擇的試題不足,從而造成系統(tǒng)無題可選。假如按要求須在指定章節(jié)中隨機挑選滿足數(shù)量、分值、難度、可信度的試題,如挑選兩道難度為A級、可信度為C級的試題。但由于題量的不足, 無法同時選中,就有可能組成不了一份符合要求的試卷而使生成試卷失敗。
解決問題的根本辦法是加大題庫中的題量并提高題庫的質(zhì)和量,對題庫要合理。但不是所有類型的試題都有大量有效的題目。因此設(shè)計試題的指標(biāo)或?qū)傩圆粦?yīng)分得太細或設(shè)置太多。統(tǒng)計表明, 題庫的試題不得少于每套試卷試題量的10 倍(本系統(tǒng)為20 倍), 否則很難組成不同形式的等值試卷。另外, 還要注意題庫的各組成部分的難度值也應(yīng)保證適當(dāng)?shù)谋壤话愕兀环菰嚲淼脑囶}其難度分布以15(難) ∶55 (中) ∶30 (易) 較為科學(xué), 那么相應(yīng)的題庫各組成部分的難度分布也應(yīng)以此為準(zhǔn)。如果比例失調(diào), 亦會影響組卷的順利進行。
3.4 試題管理界面實現(xiàn)
該界面主要完成各種題型試題信息的錄入、修改、查詢、添加和刪除,如圖4所示。
圖4 試題管理界面
上面的左上角的兩個下拉框一個用于選擇章節(jié),另一個選擇題型。按瀏覽按鈕,查詢符合要求的試題,并顯示試題的各種信息(如章節(jié)、題型、題目內(nèi)容等),提示查詢結(jié)果信息。結(jié)果顯示使用ASP.NET的DataGrid控件(圖4)。按編輯小圖標(biāo)(圖最右邊一列)進入修改試題界面。查詢到的結(jié)果按10條一頁分頁顯示。DataGrid是ASP.NET數(shù)據(jù)顯示控件中功能最強的。在編寫動態(tài)網(wǎng)頁時,常常要將數(shù)據(jù)以不同的風(fēng)格呈現(xiàn)出來,利用DataGrid Web控件很容易做到,且可分頁顯示。要根據(jù)不同的數(shù)據(jù)在網(wǎng)頁上顯示不同內(nèi)容的情況下(如試題類型在數(shù)據(jù)庫是用數(shù)字表示的,但在網(wǎng)頁上則用文字表示),可以格式化輸出。用DataGrid顯示數(shù)據(jù)時比表格少寫許多代碼。數(shù)據(jù)綁定是ASP.NET的一大特點。將內(nèi)存中一定格式的數(shù)據(jù)綁定在ASP.NET控件中,然后顯示出來,而不用手寫代碼。選擇章節(jié)、選擇題型的兩個下拉框是將章節(jié)名、題型寫入數(shù)組中,然后數(shù)組綁定在下拉框控件中。這樣極大地提高了開發(fā)效率。將試題信息裝入DataSet對象后用DataGrid控件顯示的代碼如下:
用章節(jié)和題型來搜索試題,在題量多的情況下或忘記了試題所在的章節(jié)題型,要找到想要的試題是比較困難的。因此在界面的右上角提供了模糊查詢功能。通過輸入關(guān)鍵字能快速找出符合要求的試題,這樣提高了工作效率。本系統(tǒng)模糊查詢是用SQL語句中Like方法實現(xiàn)的,它有一些局限性,無法向Google等搜索引擎那樣可以分詞查詢。例如數(shù)據(jù)庫中有這樣一條記錄“計算機圖形學(xué)”,輸入關(guān)鍵字“計算機”或“圖形”均可搜索出該記錄。可是如果輸入“計算圖形”就搜索不出來了。因此在選擇關(guān)鍵字時一定要準(zhǔn)確,這樣才可快速準(zhǔn)確地查找信息。
4 結(jié)束語
在線測試不僅是網(wǎng)絡(luò)課程的一個重要部分,而且在許多要考核的領(lǐng)域也越來越重要。本文設(shè)計的這個基于Web的在線測試系統(tǒng),非常成功地在網(wǎng)絡(luò)課程中得以應(yīng)用。本系統(tǒng)目前還需在試題分析、批量錄入試題、系統(tǒng)安全等方面有待完善和改進。本文設(shè)計的自動組卷算法也比較成功,但高質(zhì)量的自動組卷可能要結(jié)合專家知識的智能組卷技術(shù),這是我們以后研究的方向。
本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文。