吳光成
摘要:本文介紹了基于.NET的在線考試系統的設計與實現。首先描述了在線考試系統的設計思路,然后重點闡述了在線考試系統自由組卷和隨機抽題的設計和實現效果。文中提出采用OMath對象實現數學公式轉換為圖片的導入,在信息應用系統中對于Word格式數據導入的開發具有重要的參考價值。
關鍵詞:考試系統;導入;抽題;組卷規則
中圖分類號:G710 文獻標志碼:A 文章編號:1674-9324(2018)22-0094-02
一、引言
考試是課程教學中一個重要的環節??荚嚨哪康囊皇菫榱藱z查學生對知識的理解、掌握情況,二是為教師提供數據分析的重要依據。學生考試成績的分布情況,不但反映其對教學內容和應掌握知識的分析、理解、吸收、運用的能力,更反映教師對教學內容、教學組織、教學方法及手段的把握和運用。本系統立足解決考試的實際問題,從高職院??荚嚨膶嶋H需求出發,開發能適應高職院校考試的在線考試系統。該考試系統的開發集試題及學生信息的導入、根據組卷規則隨機抽題組卷、在線考試及成績分析于一體,從而服務教學工作,并為學校相關部門的教育決策提供重要的參考依據。
二、在線考試系統的體系結構設計
在線考試系統由基礎數據管理模塊、試題模塊、試卷模塊、考試模塊、系統管理模塊五大模塊組成。本系統主要實現了試題的導入、學生信息導入、組卷規則設置、在線考試、成績的導出和統計分析等功能,滿足了在線考試的基本要求。本系統采用三層結構設計,分別對應表示層、應用層和數據層。表示層作為用戶輸入和獲取數據的窗口,由Web頁面組成;數據層定義和維護數據的完整性和安全性,響應訪問數據的請求,由數據庫服務器實現,如SQL Server等;而應用層則是聯系表示層和數據層的橋梁,它響應表示層的用戶請求,執行任務并且從數據層獲取數據傳送給表示層。
三、基于.NET實現在線考試系統
本系統面向的對象是各高職院校,所以它的界面設計以方便用戶使用為原則。該系統主要實現試題的導入、組卷規則設置、在線考試、成績的導出和統計分析等功能。下面我們將逐一展開討論。
1.需求分析和目標。使用考試系統的角色分為三類:管理員、教師和學生。管理員負責維護服務器上各種原始數據,查看各科成績及統計分析報表;教師是指使用該系統的老師,他們可以使用本系統的所教科目試題的導入、設置組卷規則、評閱主觀題、查看學生該科目的成績及統計分析等;學生使用該平臺進行在線考試、查看考試成績等功能。具體設計目標如下:(1)基礎數據管理(科目、章節、難度系數),提供CRUD等操作。(2)試題管理(單選題、多選題、判斷題、填空題、問答題),提供CRUD等操作,其中試題導入需要考慮導入圖片、數學公式。(3)試卷管理(組卷規則設定、試卷的導出),針對組卷規則需要提供CRUD操作。(4)考試模塊(學生信息導入、成績導出和統計分析、學生考試)。①學生信息由教務系統導出;②成績導出到Excel文件中;③學生考試支持1000人同時考試,開始考試之后系統自動計時,時間一到自動交卷。考試中途計算機死機、掉電學生所做的答案需要保存。
2.基于.NET的三層架構實現。本系統采用三層結構實現,所有用戶通過統一的應用界面進行交互。業務層技術由類庫完成,它由應用服務器IIS加載,用C#進行開發,通過建立有效的數據庫連接機制可以很容易處理大量客戶連接。基于.NET的數據庫訪問技術采用ADO.NET技術實現數據庫接口。WebForm和C#類庫是分別實現表示層和應用層,WebForm由IIS加載,C#類庫則是運行在.NET Framework平臺。本平臺的每個功能模塊由C#類來實現,通過公共的數據庫訪問類DataAccess和服務器的數據庫進行交互。
3.關鍵功能技術實現細節。本系統關鍵功能主要包含試題導入、隨機抽題、在線考試三個部分。下面我們就對這些方法進行詳細的闡述。(1)試題導入。本系統的試題導入主要分為兩個方面,一個方面是純文本數據的導入,另一個方面是含有圖片及數學公式的數據導入。我們在此主要對數學公式數據的導入進行分析。數學公式通過OMath對象進行判斷,需要轉換成圖片保存在服務器上。由于要與相應的試題對應,因此在Word中需要表格進行定位。讀數學公式具體的代碼片斷如下:
Word.OMaths oms=table.Cell(row,col)Range.OMaths;
foreach (Word.OMath om in oms){
byte[] math=(byte[])om.Range.EnhMetaFileBits;//將公式轉換成字節數組
MemoryStream ms =new MemoryStream(math); //轉換成內存流
Image im=System.Drawing.Image.FromStream(ms);
list.Add(im);
}
(2)隨機抽題。隨機抽題主要是使用SQL Server的newid()函數完成,為了保證效率,因此采用存儲過程實現。具體是通過讀取該門課程的組卷到游標中,然后遍歷游標,根據章節按照試題數量、難度系數讀取試題數據,得到一個由多個table構成的DataSet,將其綁定到Repeater中,在Web頁面呈現出來。(3)在線考試。在線考試由于要保證1000人同時考試,因此沒有采用Session保存學生信息,可以通過Cookie進行保存。為了保證考生的考試數據不丟失,所以采用的考生做一道題就保存答案。數據是綁定在Repeater中的,所以在Repeater的ItemCreated事件中為每一個選項按鈕設定事件,將對應的答案寫入數據庫。
因為考生每做一道試題的時候都需要與數據庫進行交互,所以需要考慮與服務器交互量過大的問題。本系統是部署的硬件環境是一臺數據庫服務器、三臺Web應用服務器(IIS),經過近三年的運行,基本上能夠滿足考試要求。當然,也可以將考生的試題答案寫在本地文件中,最后提交試卷的時候再統一提交。但這樣也需要考慮兩個問題:一是本地考試機死機了不能重新啟動,二是如果所有考生都在考試結束統一提交試卷,服務器的峰值會非常高。
四、結束語
四川交通職業技術學院應用該考試系統,能夠有效地進行考試,綜合該系統的研究與開發,主要取得以下成果:
1.根據高職院??荚嚨奶攸c,結合對考試的相關理論及.NET技術的研究,進行了系統的需求分析,提出了與之對應的實現方案。
2.通過對存儲過程的研究,應用存儲過程,實現了對數據庫高效靈活地進行訪問,提高了系統的運行效率。
3.通過.NET的研究,實現了圖片和數學公式的導入。
本文設計實現了基礎數據管理模塊、試題管理管理模塊、試卷管理模塊、考試管理模塊、系統數據管理模塊等功能模塊,運行在Windows 2008 Server上面,經過近三年的運用,運行效果良好。
參考文獻:
[1][美]Christian Nagel,等.C#高級編程[M].第四版.北京:清華大學出版社,2007.
[2]陳金玉,劉東榮,李卓偉,吳德垠.基于角色控制的教學權限訪問系統的設計與實現[J].重慶大學學報:自然科學版,2005,(12):63-65.
[3]Coulouris G,Dollimore J,Roberts M.Role and task-based access control in the PerDiS groupware platform.In:Proceedings of the ACM Workshop on Role-Based Access Control.George Mason University,1998:115-121.
[4]劉慧梅.基于UML的自動組卷系統的分析與設計[J].軟件,2012,(07).
[5]韋寧,鄭勇杰.遺傳算法在智能考試系統中的應用[J].南寧職業技術學院學報,2011,(06).