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