摘 要:隨著互聯網的普及,越來越多的學校采用在線考試的形式,利用網絡進行無軟盤、無紙化的在線考試,大大提高了考試的可靠性、有效性、降低了考試成本。在ASP.NET技術和SQL Server 2005數據庫系統的基礎上,設計和實現基于ASP.NET的四層體系結構的在線考試系統,并實現動態隨機組卷和在線閱卷等主要功能,在實際應用中效果良好。
關鍵詞:ASP.NET 2.0;在線考試系統;SQL Server 2005;四層體系結構
中圖分類號:TP311文獻標識碼: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 引 言
從目前的應用來看,一般基于Web的在線考試系統都需大量占用服務器資源。其主要原因:系統在運行的過程中采用動態取數據的方法,這使用戶每一次進行測試都要向服務器多次查詢數據,因此一個好的在線系統速度是關鍵,另一方面,一個系統的好壞應需要對系統的安全性、可維護性進行全面考慮。
本文選擇ASP.NET技術實現在線考試系統,采用SQL Server 2005數據庫管理系統作為數據庫服務器,使用IIS來進行網頁的發布,客戶端通過IE或者其他的WWW瀏覽器來對系統進行操作。
2 系統設計
2.1 系統總體功能結構
在線考試系統主要面向2類用戶:考生和管理員。根據實際需求,系統應實現如圖1所示的各種功能。
2.2 系統功能模塊設計
如圖1所示,該系統在功能上分為2個模塊,分別是考生模塊和管理員模塊。其中考生模塊屬于子系統前臺,管理員模塊屬于子系統后臺。

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

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

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