摘要:該文介紹了基于ASP.NET2.0的在線考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)。該系統(tǒng)采用多層體系結(jié)構(gòu),利用ASP.NET、C#和SQL SERVER2005技術(shù)實(shí)現(xiàn),闡述了在線考試系統(tǒng)的功能和實(shí)現(xiàn)方法。
關(guān)鍵詞:在線考試;ASP.NET2.0;SQL SERVER2005
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2009)36-10143-03
The Online Examination System Design and Implementation Based on ASP.NET
MA Qing-xia
(Department of Information Technology, Jinling Institute of Technology, Nanjing 211169, China)
Abstract: This paper introduces the online examination system design and implementation based on ASP.NET2.0. The system uses multi-tier architecture, The use of ASP.NET, C #, and SQL SERVER2005 technology, Described the function of online examination system and implementation of method.
Key words: online examination; ASP.NET2.0; SQL SERVER2005
隨著計(jì)算機(jī)與網(wǎng)絡(luò)技術(shù)的發(fā)展與普及,基于網(wǎng)絡(luò)教學(xué)已成為現(xiàn)代化教育必不可少的手段,構(gòu)建在線考試系統(tǒng)也成為教學(xué)中的一個(gè)重要環(huán)節(jié),越來(lái)越多的學(xué)校采用在線考試形式,利用網(wǎng)絡(luò)進(jìn)行無(wú)紙化的在線考試系統(tǒng)。與傳統(tǒng)的考試方式相比,在線考試可以動(dòng)態(tài)地管理各種考試信息,自動(dòng)生成試卷,自動(dòng)閱卷評(píng)分,大大提高了考試的可靠性、公平性、有效性,降低考試成本,提高工作效率。把教師從繁重的組卷、閱卷、成績(jī)分析中解放出來(lái),對(duì)提高教學(xué)效果和教學(xué)質(zhì)量具有重要的意義。
1 在線考試系統(tǒng)
從目前的應(yīng)用來(lái)看,一般的基于WEB的考試系統(tǒng)都會(huì)占用大量的服務(wù)器資源,其主要原因是系統(tǒng)在運(yùn)行的過程中采用動(dòng)態(tài)讀取數(shù)據(jù)的方法,這使用戶每一次測(cè)試都要向服務(wù)器多次查詢數(shù)據(jù)。所謂動(dòng)態(tài)讀取數(shù)據(jù)是指用戶每次要上下翻頁(yè)或傲視結(jié)束的時(shí)候都要向數(shù)據(jù)庫(kù)讀取數(shù)據(jù)。這是應(yīng)為瀏覽器是不能存儲(chǔ)數(shù)據(jù)的,在其刷新后,原來(lái)的數(shù)據(jù)將丟失。多次和服務(wù)器交互勢(shì)必增加服務(wù)器的負(fù)擔(dān),因此一個(gè)好的在線考試系統(tǒng)速度是關(guān)鍵。當(dāng)然還需要對(duì)安全性,可維護(hù)性進(jìn)行全面的考慮。
本系統(tǒng)主要有管理員模塊和學(xué)生模塊兩大部分組成,具有在線考試,自動(dòng)閱卷,查看試卷答案,動(dòng)態(tài)出題,考試時(shí)間的控制,題庫(kù)維護(hù),科目管理,用戶管理,分?jǐn)?shù)管理等功能。
2 ASP.NET2005簡(jiǎn)介
Visual Studio2005是一個(gè)功能強(qiáng)大的集成開發(fā)平臺(tái),幾乎可以在其中完成所有的軟件開發(fā)任務(wù),包括Windows應(yīng)用程序開發(fā)、Web應(yīng)用程序開發(fā),設(shè)備應(yīng)用程序開發(fā)以及與其相關(guān)的數(shù)據(jù)庫(kù)應(yīng)用處理等,同時(shí)還提供了各種應(yīng)用程序的發(fā)布安裝支持。
3 ADO.NET
ADO.NET是一種新的數(shù)據(jù)庫(kù)訪問技術(shù),其功能全面且靈活,并可在訪問各種不同類型數(shù)據(jù)時(shí),保持?jǐn)?shù)據(jù)的一致性。
3.1 ADO.NET的結(jié)構(gòu)
如圖1所示。
3.2 ADO.NET的優(yōu)點(diǎn)
1)斷開模式
在傳統(tǒng)的客戶機(jī)/服務(wù)器端的應(yīng)用程序中,采用的數(shù)據(jù)連接方式為連續(xù)連接方式,這種方式與數(shù)據(jù)庫(kù)一直保持連接狀態(tài)。ADO.NET采用斷開式連接方式,應(yīng)用程序連接數(shù)據(jù)庫(kù)的時(shí)間僅僅足夠提取或更新數(shù)據(jù),一旦完成就斷開連接。這樣數(shù)據(jù)庫(kù)不需要去維護(hù)長(zhǎng)時(shí)間處于閑置狀態(tài)的連接,而且能夠避免長(zhǎng)時(shí)間的數(shù)據(jù)庫(kù)鎖定,因此能是資源服務(wù)更多的用戶。
2)XML的支持
主要用于在不同系統(tǒng)中交換數(shù)據(jù),以及在網(wǎng)絡(luò)上傳遞大量的結(jié)構(gòu)化數(shù)據(jù)。
3)DataSet支持
DataSet是ADO.NET中最核心的成員之一,它可以用于多種不同的數(shù)據(jù)源。
4 系統(tǒng)分析與功能模塊
4.1 系統(tǒng)架構(gòu)
本系統(tǒng)采用多層體系結(jié)構(gòu)來(lái)實(shí)現(xiàn),如圖2所示。
1)數(shù)據(jù)訪問層:完成所有與數(shù)據(jù)交互的工作,同時(shí)記錄所有的異常信息,基本都使用存儲(chǔ)過程來(lái)操作數(shù)據(jù)。
部分代碼如下:
//構(gòu)造函數(shù)
Public DataBase()
{ConnectionString = ConfigurationManager.ConnectionStrings[\"ConnectionString\"].ConnectionString;
}
//保護(hù)方法,打開數(shù)據(jù)庫(kù)連接
private void Open()
{
if (Connection == 1)//判斷數(shù)據(jù)庫(kù)連接是否存在
{
Connection = new SqlConnection(ConnectionString);
Connection.Open();
}
else
{
if (Connection.State.Equals(ConnectionState.Closed))
Connection.Open();//連接處于關(guān)閉狀態(tài),重新打開
}
}
2)數(shù)據(jù)訪問接口層:實(shí)現(xiàn)對(duì)數(shù)據(jù)層的一些輔助和包裝。該層包含兩個(gè)類,一個(gè)是安全獲取數(shù)據(jù)的靜態(tài)方法,一個(gè)是能夠把字符串轉(zhuǎn)換為帶有單引號(hào)的字符串。
3)業(yè)務(wù)邏輯層:完成考試系統(tǒng)的功能,包括考試科目類,用戶類,成績(jī)類,試卷類,單選題類,多選題類,判斷題類,填空題類,簡(jiǎn)答題類,論述題類。
下面為考試科目類的部分代碼:
public bool InsertByProc()
{
SqlParameter[] Params = new SqlParameter[1];
DataBase DB = new DataBase();
Params[0] = DB.MakeInParam(\"@Name\", SqlDbType.VarChar, 50, Name); //考試科目名稱
int Count = -1;
Count = DB.RunProc(\"Proc_CourseAdd\", Params);
if (Count > 0)
return true;
else return 1;
}
4)頁(yè)面顯示層:考試系統(tǒng)中的頁(yè)面主要面向兩類用戶使用:考試者和管理員。
4.2 系統(tǒng)功能模塊
從大的方面來(lái)說,該系統(tǒng)分為學(xué)生模塊和管理員兩大模塊。學(xué)生可以登錄后進(jìn)行考試,管理員可以對(duì)系統(tǒng)進(jìn)行管理和維護(hù)。具體的功能模塊劃分如圖3所示。
5 系統(tǒng)開發(fā)的關(guān)鍵技術(shù)
5.1 數(shù)據(jù)庫(kù)實(shí)現(xiàn)
本系統(tǒng)采用SQL Server2005來(lái)存儲(chǔ)數(shù)據(jù),數(shù)據(jù)庫(kù)建立好后,考慮到絕大多數(shù)功能都要訪問數(shù)據(jù),系統(tǒng)采用存儲(chǔ)過程來(lái)完成所有對(duì)數(shù)據(jù)庫(kù)的讀寫。這樣可以提高數(shù)據(jù)庫(kù)的運(yùn)行效率,而且可以減少代碼編譯量,提高整個(gè)系統(tǒng)的性能。
在Web.Config文件中設(shè)置的數(shù)據(jù)庫(kù)連接語(yǔ)句為:
<connectionStrings>
<add name=\"ConnectionString\" connectionString=\"Data Source=(local);Initial Catalog=MyOnLineExam;User ID=sa;Password=sa\"
providerName=\"System.Data.SqlClient\" />
</connectionStrings>
5.2 客戶端設(shè)計(jì)
學(xué)生生通過瀏覽器,選擇自己要考試的科目,通過身份驗(yàn)證后,方可進(jìn)行入考試系統(tǒng),顯示考試頁(yè)面。開始答題后,系統(tǒng)就要啟動(dòng)倒計(jì)時(shí)系統(tǒng)。計(jì)時(shí)系統(tǒng)在考試過程中一直顯示考試剩余時(shí)間,當(dāng)考試結(jié)束時(shí),服務(wù)器向客戶端發(fā)出一條消息,把所有的按鈕(除提交按鈕外)都轉(zhuǎn)為\"FALSE\"狀態(tài),從而杜絕了學(xué)生交卷時(shí)間已到還繼續(xù)答題的現(xiàn)象??荚嚱Y(jié)束后可以看到自己的成績(jī)和查看試卷答案。
5.3 組卷
在本系統(tǒng)中,可以有試題庫(kù)中試題的參數(shù)主要有題型、難度系數(shù)、知識(shí)點(diǎn)、估計(jì)答題時(shí)間等。題型有單選、多選、填空、判斷、簡(jiǎn)答、論述。難度系數(shù)是試題難易程度的指標(biāo),它由教師錄入試題時(shí)給定。知識(shí)點(diǎn)的劃分是將課程按章節(jié)和內(nèi)容從上到下細(xì)化確定。教師在錄入試題時(shí)可以選擇相應(yīng)的知識(shí)點(diǎn)。
用戶在進(jìn)行組卷時(shí),通過人機(jī)交互的方式向系統(tǒng)提出組卷要求。試題庫(kù)系統(tǒng)根據(jù)提出的要求產(chǎn)生組卷控制參數(shù).并根據(jù)這些參數(shù)從試題庫(kù)中自動(dòng)抽取滿足用戶要求的試題。
在組卷開始之前,要判斷以上給出的參數(shù)是否合法,如試卷總分與各題型分?jǐn)?shù)之和不相符,則要求重新輸入?yún)?shù);若相符,則根據(jù)組卷算法進(jìn)行組卷。
5.4 系統(tǒng)的安全設(shè)計(jì)
在數(shù)據(jù)庫(kù)系統(tǒng)中,安全是很重要的一部分,特別是當(dāng)應(yīng)用程序放置在Internet的開放環(huán)境下,安全性就顯得更加重要了。
在系統(tǒng)中有一個(gè)權(quán)限表和一個(gè)存儲(chǔ)過程,然后通過關(guān)聯(lián)關(guān)系過濾掉沒有訪問權(quán)限的數(shù)據(jù),從而形成權(quán)限控制策略。存儲(chǔ)過程根據(jù)用戶ID從安全表中選取自己所管轄的安全區(qū)域,存儲(chǔ)過程通過角色表從安全表中選取安全區(qū)域,因此程序可以通過存儲(chǔ)過程來(lái)限制用戶訪問安全表中的內(nèi)容,從而增加數(shù)據(jù)庫(kù)的安全性。
6 總結(jié)
該文對(duì)在線考試系統(tǒng)進(jìn)行了研究和實(shí)現(xiàn),而且保證了系統(tǒng)的安全性和可靠性。系統(tǒng)采用基于.NET 的B/S 多層結(jié)構(gòu),具有更高的靈活性和穩(wěn)定性,并且更易于維護(hù)和擴(kuò)展。當(dāng)然系統(tǒng)的功能設(shè)計(jì)還不夠完善,在應(yīng)用過程中需要和遠(yuǎn)程教學(xué)系統(tǒng)有機(jī)的結(jié)合,使在線考試系統(tǒng)更好地為教學(xué)服務(wù),以提高教學(xué)質(zhì)量。
參考文獻(xiàn):
[1] 趙增敏.ASP.NET網(wǎng)站開發(fā)案例教程[M].北京:電子工業(yè)出版社,2006.
[2] 劉乃麗.asp.net+sql server 項(xiàng)目開發(fā)[M].北京:人民郵電出版社,2007.
[3] 李德奇.ASP.NET程序設(shè)計(jì)[M].北京:人民郵電出版社,2007.
[4] 張躍廷.ASP.NET技術(shù)方案寶典[M].北京:人民郵電出版社,2008.
[5] 沈陽(yáng),李勇敢.ASP.NET程序設(shè)計(jì)教程[M].北京:電子工業(yè)出版社,2006.
[6] 石偉平,徐國(guó)慶,明海波,黎浩宏,梅成才.ASP.NET項(xiàng)目化教程[M].上海:華東師范大學(xué)出版社,2007.
[7] 李蘭友,楊曉光.ASP.NET實(shí)用程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2006.
[8] 楊天奇,王文,何朋,李會(huì)鋒.ASP.NET網(wǎng)絡(luò)編程技術(shù)[M].北京:機(jī)械工業(yè)出版社,2006.
[9] 蔣培,王笑梅.ASP.NET Web程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2007.
[10] 榮耀,瞿靜文.ASP.NET 2.0實(shí)戰(zhàn)起步[M].北京:機(jī)械工業(yè)出版社,2008.