摘 要:隨著互聯(lián)網(wǎng)的普及,越來越多的學(xué)校采用在線考試的形式,利用網(wǎng)絡(luò)進(jìn)行無軟盤、無紙化的在線考試,大大提高了考試的可靠性、有效性、降低了考試成本。在ASP.NET技術(shù)和SQL Server 2005數(shù)據(jù)庫系統(tǒng)的基礎(chǔ)上,設(shè)計和實現(xiàn)基于ASP.NET的四層體系結(jié)構(gòu)的在線考試系統(tǒng),并實現(xiàn)動態(tài)隨機(jī)組卷和在線閱卷等主要功能,在實際應(yīng)用中效果良好。
關(guān)鍵詞:ASP.NET 2.0;在線考試系統(tǒng);SQL Server 2005;四層體系結(jié)構(gòu)
中圖分類號:TP311文獻(xiàn)標(biāo)識碼:B
文章編號:1004-373X(2008)22-059-03
Design and Realization of On-line Exam System Based on ASP.NET
PU Xuanji1,YANG Bailong1,YANG Jianfei2
(1.The Second Artillery Engineering College,Xi′an,710025,China;2.Qingzhou Non-commissioned ofticers School of Second Artillery,Qingzhou,262500,China)
Abstract:Along with the popularization of Internet,more and more schools adopt the on-line exam,using the net non-disk,non-paper can improve the reliability,validity of the exam and it can reduce the cost of the exam.On the basis of the technology of ASP.NET and the database of SQL Server 2005,this Paper designs and realizes the on-line exam system with four tiers,and realizes the function of forming the paper at random and the function of judging the paper on-line,it has worked well in practice.
Keywords:ASP.NET 2.0;on-line exam system;SQL Server 2005;four tiers architecture
1 引 言
從目前的應(yīng)用來看,一般基于Web的在線考試系統(tǒng)都需大量占用服務(wù)器資源。其主要原因:系統(tǒng)在運行的過程中采用動態(tài)取數(shù)據(jù)的方法,這使用戶每一次進(jìn)行測試都要向服務(wù)器多次查詢數(shù)據(jù),因此一個好的在線系統(tǒng)速度是關(guān)鍵,另一方面,一個系統(tǒng)的好壞應(yīng)需要對系統(tǒng)的安全性、可維護(hù)性進(jìn)行全面考慮。
本文選擇ASP.NET技術(shù)實現(xiàn)在線考試系統(tǒng),采用SQL Server 2005數(shù)據(jù)庫管理系統(tǒng)作為數(shù)據(jù)庫服務(wù)器,使用IIS來進(jìn)行網(wǎng)頁的發(fā)布,客戶端通過IE或者其他的WWW瀏覽器來對系統(tǒng)進(jìn)行操作。
2 系統(tǒng)設(shè)計
2.1 系統(tǒng)總體功能結(jié)構(gòu)
在線考試系統(tǒng)主要面向2類用戶:考生和管理員。根據(jù)實際需求,系統(tǒng)應(yīng)實現(xiàn)如圖1所示的各種功能。
2.2 系統(tǒng)功能模塊設(shè)計
如圖1所示,該系統(tǒng)在功能上分為2個模塊,分別是考生模塊和管理員模塊。其中考生模塊屬于子系統(tǒng)前臺,管理員模塊屬于子系統(tǒng)后臺。

2.2.1 考生模塊
考生模塊部分的功能主要有:
(1) 考生登錄:當(dāng)考生初次使用系統(tǒng)時必須注冊,然后使用用戶名和密碼才能登錄系統(tǒng);
(2) 在線考試:當(dāng)考生登錄成功后,轉(zhuǎn)入在線考試頁面,選擇所需參加考試的科目進(jìn)行在線考試;
(3) 成績、答案查詢:在考試結(jié)束后,考生可以查看自己的考試成績,并查看試卷答案。
2.2.2 管理員模塊
管理員模塊部分的主要功能有:
(1) 管理員登錄:管理員維護(hù)系統(tǒng)的入口;
(2) 考試科目管理:用來添加考試科目和對考試科目進(jìn)行修改和刪除;
(3) 考生管理:添加考生,對考生信息的維護(hù)等;
(4) 題庫管理:題型包括單選題、判斷題、填空題和問答題4種,每種題型包括對試題的添加和維護(hù);
(5) 成績管理:查看考生的成績,將成績導(dǎo)出到Excel等;
(6) 試卷管理:設(shè)置參數(shù)由系統(tǒng)自動組卷,設(shè)置試卷是否可用等功能。
2.3 系統(tǒng)數(shù)據(jù)庫設(shè)計
數(shù)據(jù)庫中的數(shù)據(jù)是整個系統(tǒng)的核心,怎樣合理地進(jìn)行信息建模和范式分解將直接影響到整個數(shù)據(jù)庫系統(tǒng)的運行效率。根據(jù)系統(tǒng)的安全性要求,在SQL Server 2005中主要建立如下數(shù)據(jù)表:
(1) 考生信息表:編號,考生用戶名,考生密碼,考生權(quán)限,考生電子郵件;
(2) 試卷表:編號,科目編號,試卷名稱,試卷狀態(tài);
(3) 科目表:編號,科目名稱;
(4) 試卷詳細(xì)表:編號,試卷編號,試題類型,試題編號,試題分值;
(5) 成績表:編號,用戶編號,試卷編號,客觀題成績,主觀題成績,考試時間;
(6) 單選題表:編號,科目編號,題目,選項A,選項B,選項C,選項D,答案;
(7) 判斷題表:編號,科目編號,題目,答案;
(8) 填空題表:編號,科目編號,題目前描述,題目后描述,答案;
(9) 問答題表:編號,科目編號,題目,答案。
3 系統(tǒng)四層體系結(jié)構(gòu)
對于較大型的系統(tǒng),往往采用分層的體系結(jié)構(gòu),這種多層結(jié)構(gòu)在層與層之間相互獨立,任何一層的改變不會影響其他層的功能。本系統(tǒng)采用四層體系結(jié)構(gòu)來實現(xiàn),如圖2所示,主要包括以下各層:
(1) 頁面顯示層:將業(yè)務(wù)功能在瀏覽器上顯示出來,如考生登錄頁面,考試頁面等;
(2) 業(yè)務(wù)邏輯層:實現(xiàn)業(yè)務(wù)的具體邏輯功能,如試卷管理、考生管理、題庫管理等;
(3) 數(shù)據(jù)訪問接口層:實現(xiàn)對數(shù)據(jù)訪問層的一些輔助和包裝,主要包括2個類:
GetSafeData:包含一系列從DataRow對象中,安全獲取數(shù)據(jù)的靜態(tài)方法。
SqlStringFormat:包含一個靜態(tài)方法,該方法能夠把字符串轉(zhuǎn)換為帶有單引號“‘”的字符串。
(4) 數(shù)據(jù)訪問層:實現(xiàn)對數(shù)據(jù)的訪問功能,只包括一個類Database,完成數(shù)據(jù)庫訪問的所有操作,同時記錄所有的異常信息。

4 系統(tǒng)實現(xiàn)
4.1 使用ADO.NET鏈接數(shù)據(jù)庫
為了實現(xiàn)與數(shù)據(jù)庫的連接,需要在Web.config文件中配置鏈接字符串,并在配置節(jié)<appSettings/>下的子配置節(jié)<connectionStrings>添加鏈接字符串,具體鏈接字符串的配置如下:
<connectionStrings>
<add name=\"ConnectionString\" connectionString=\"Data Source=(local);Initial Catalog=OnLineExam;User ID=pp;Password=dorient\"/>
</connectionStrings>
其中Data Source指定服務(wù)器的名稱,Initial Catalog屬性指定數(shù)據(jù)庫的名稱,而ID和Password分別指定鏈接數(shù)據(jù)庫時使用的用戶名和密碼。
4.2 身份驗證的實現(xiàn)
考生和管理員在登錄時分別登錄不同頁面,進(jìn)入相應(yīng)的功能模塊。如圖3所示為考生登錄系統(tǒng)時的流程圖,實現(xiàn)過程中根據(jù)考生的輸入信息對其進(jìn)行身份驗證,驗證成功才能進(jìn)入考試頁面,同時使用Session對象保存考生輸入信息,由于Session對象被每一個用戶所獨享,且利用該對象可以實現(xiàn)在網(wǎng)頁之間信息的傳遞,因此減少了考生信息的輸入,提高了效率。
4.3 試卷生成功能的實現(xiàn)
管理員可以設(shè)置某門課程的試卷,并設(shè)置該試卷的名稱,設(shè)置該試卷中存在的題型,各個題型的數(shù)量及每題的分值,設(shè)置完畢后單擊“確定”按鈕,將在頁面下方顯示自動生成的試卷。以生成單選題為例,主要代碼如下所示:

DataBase db=new DataBase();[JY]//創(chuàng)建DataBase類對象
String GridView1str=\"select top\"+ int Parse(txtSingleNum.Text.Trim())+\"* from
SingleProblem order by newid()\";[JY]//根據(jù)參數(shù)設(shè)置查詢單選題的SQL語句
DataSet ds1=db.GetDataSetSql(GridView1);[JY]//調(diào)用DataBase類方法GetDataSetSql方法查詢數(shù)據(jù)
GridView1.DataSource=ds1.Tables[0].DefaultView;[JY]//為單選題GridView控件指明數(shù)據(jù)源
GridView1.DataBind();[JY]//綁定數(shù)據(jù)
4.4 考生在線考試功能的實現(xiàn)
在線考試頁面用于實現(xiàn)讓考生根據(jù)自己選擇的試卷進(jìn)行在線考試和考試后提交答案,查看自己的客觀題分?jǐn)?shù)并查看試卷答案的功能。
Int fillmark=int.Parse(((Label)GridView3.Rows[0].FindControl(\"Label16\")).Text);[JY]//取出填空題每題分值
foreach(GridViewRow dr inGridView3.Rows)
{
String str=\"\";
Str=((TextBox)dr.FindControl(\"TextBox1\")).Text.Trim();
If(str==((Label)dr.FindControl(\"Label18\")).Text.Trim()) [JY]//將考生答案和標(biāo)準(zhǔn)答案比較
{ Score=score+fillmark; [JY]//如果答對,記錄分值 }
}
Score insertScore=new Scores();[JY]//創(chuàng)建成績類Scores對象
insertScore.UserID=Session[\"userID\"].ToString(); [JY]//設(shè)置Scores對象的屬性
insertScore.PaperID=int.Parse(Session[\"PaperID\"].ToString());
insertScore.Score=score;
if(insertScore.InsertByProc()) [JY]//調(diào)用InsertByProc方法向數(shù)據(jù)庫中插入成績[LL]
{ If(score>=80) [JY]//根據(jù)成績給出提示
{Response.Write(\"<script language=javascript>alter(′非常優(yōu)秀!您的成績?yōu)椋篭"+score+\"分′)
<script>\");
…
}
系統(tǒng)還涉及到考生管理頁面、試卷管理頁面、成績管理頁面、各類試題添加與維護(hù)頁面等,這里不詳細(xì)介紹。
5 結(jié) 語
在線考試系統(tǒng)的設(shè)計與實現(xiàn),為現(xiàn)階段教務(wù)管理的信息化起到了一定的推動作用,解決了人工考試方式中存在的一些問題,為管理員、學(xué)生的實際操作提供了很大的便利。在本校局域網(wǎng)內(nèi)進(jìn)行試運行,速度快,安全性較高。
參 考 文 獻(xiàn)
[1]肖金秀,何鵬.ASP.NET程序設(shè)計[M].北京:冶金工業(yè)出版社,2004.
[2]李玉林,王巖.ASP.NET 2.0網(wǎng)絡(luò)編程從入門到精通[M].北京:清華大學(xué)出版社,2006.
[3]Christian N,Bill E,Jay G. C# 高級編程[M].4版.李敏波,譯.北京:清華大學(xué)出版社,2006.
[4]陳冠軍.精通ASP.NET 2.0典型模塊設(shè)計與實現(xiàn)[M].北京:人民郵電出版社,2007.
[5]Paul Nilsen.Microsoft SQL Server 2000寶典[M].劉瑞,劉文,譯.北京:中國鐵道出版<br> 社,2005.
[6]胡勇輝,曹倬瑝,蘭湘濤,等.ASP.NET 開發(fā)實戰(zhàn)詳解:入門、模塊、系統(tǒng)[M].北京:電子工業(yè)出版社,2006.
[7]葉汶華,程永靈.ASP.NET網(wǎng)頁制作教程[M].北京:冶金工業(yè)出版社,2004.
[8]徐國智,汪孝宜.SQL Server數(shù)據(jù)庫開發(fā)實例精粹[M].北京:電子工業(yè)出版社,2006.
[9]求實科技.ASP.NET信息管理系統(tǒng)開發(fā)實例導(dǎo)航[M].北京:人民郵電出版社,2005.
[10]郭寶紅,孫靜,張穎.基于ASP網(wǎng)上考試系統(tǒng)的設(shè)計與實現(xiàn)[J].天津師范大學(xué)學(xué)報:自然科學(xué)版,2002,22(4):46-49.
[11]廖武陵.基于ASP技術(shù)開發(fā)網(wǎng)上考試系統(tǒng)[J].電腦開發(fā)與應(yīng)用,2001,14(6):35-36.
作者簡介 蒲玄及 女,1983年出生,第二炮兵工程學(xué)院在讀碩士研究生。主要研究方向為計算機(jī)軟件與理論。
楊百龍 男,第二炮兵工程學(xué)院教授。主要研究方向為網(wǎng)絡(luò)信息安全。
楊建飛 男,第二炮兵青州士官學(xué)校教員。主要研究方向為測試控制。