張以文 王德勝 金 瑩 王愛平
摘要:網絡考試系統是傳統考試的延伸,它充分利用了數據庫技術,大大簡化了傳統考試的過程,提高了教學活動的靈活性,是電子化教學不可缺少的一個重要環節。本文介紹和分析基于B/S模式的網絡考試系統的開發與設計,實現了一個基本的網絡考試系統。
關鍵詞:網絡考試系統;B/S;安全性
中圖分類號:G642 文獻標識碼:A
考試是在教育過程中一個不可缺少的環節,傳統紙面化考試消耗大量的人力、物力,而且保密性差。隨著計算機技術的不斷成熟,網絡考試技術漸漸的被引入考試過程中,典型的網絡考試系統如英語考試中的托福、GRE、雅思等。網絡考試系統可以提高教師閱卷的效率,降低人為因素的誤差,節省社會資源,更重要的是有利于提高考試的公平性,減少閱卷老師的主觀因素干擾。
1相關理論與技術
1.1系統架構模式選擇
在近年來開發的網絡考試系統中,按其系統的架構模式可以分為兩種:C/S模式和B/S模式。C/S架構下的網絡考試系統,一般是基于局域網的應用系統,它用于考試的機器分為服務器(Server)和客戶機(Client)兩種,優點是能夠有效地做到對客戶機的靈活控制和試卷考試結果的自動回收,缺點是需要分別開發和安裝相應的考試服務系統和考試客戶系統,開發成本高,升級困難且麻煩,系統維護代價高。所以一般地來說C/S模式并不是網絡考試系統的理想模式。B/S架構下的網絡考試系統,是一種基于Web的應用系統,目前應用比較廣泛,它將試題和成績等全部存放在服務器上,客戶機只要是帶有瀏覽器且能夠上網即可;它突破時空限制,可在任何時間、任何能夠上網的地點進行遠程考試和考務工作。它可自動生成試卷,考試結束時可迅速給出客觀題和部分主觀題考試成績,其他主觀題部分也是以網上閱卷的方式進行并實時提交成績。這些都使得網絡化考試比傳統的紙面考試具有無可比擬的效率和公平上的優越性,是現代化考試發展的方向。
1.2ASP.NET技術
ASP.NET是Microsoft公司推出的一個統一的Web開發模型,它使用盡可能少的代碼生成企業級Web應用程序所必需的各種服務,ASP.NET為.NET Framework的一部分提供,當編寫ASP.NET應用程序的代碼時,可以訪問.NET Framework 中的類??梢允褂门c公共語言運行庫(CLR)兼容的任何語言來編寫應用程序的代碼,這些語言包括Microsoft Visual Basic、C#等。使用這些語言,可以開發利用公共語言運行庫、類型安全、繼承等方面的優點的ASP.NET應用程序。
1.3SQL Server和ADO.NET技術
SQL(Structured Query Language,結構化查詢語言)語言是關系數據庫的標準語言,是一種介于關系代數和關系演算之間的結構化查詢語言。由于SQL語言功能豐富,語言簡潔,因而備受用戶和計算機工業界歡迎。SQL語句通常用于完成一些數據庫的操作任務,比如在數據庫中更新數據或檢索數據。常見關系數據庫管理系統有Oracle、Microsoft SQL Server、Access等。本系統使用的是Microsoft SQL Server2000,它提供較多的高效開發工具和較成熟的開發技術。
ADO(ActiveX Data Objects)是ASP的內置對象之一,凡是能由ODBC驅動程序訪問的數據庫,在ASP中都可以通過ADO對象與SQL語句對其進行網絡訪問。.NET Framework推出了ADO的升級技術—ADO.NET,但ADO.NET和ADO不同的。ADO.NET是一組向.NET 程序員公開數據訪問服務的類,ADO.NET為創建分布式數據共享應用程序提供了一組豐富的組件。它提供了對關系數據庫、XML和應用程序數據的訪問,ADO.NET能夠支持多種開發需求,包括創建由應用程序、工具、語言或 Internet 瀏覽器使用的前端數據庫客戶端和中間層業務對象。
1.4Visual C#語言
C#是全新打造的.NET的核心語言,C#來自Visual C++,是C/C++家族的新成員;C#的程序結構風格和Java有許多的相似之處;C#博采Visual Basic的簡單樸實直觀的特點,形成了一個完全面向對象的、類型安全的、功能強大又簡易友好的新型軟件開發工具。總之,C#融會了許多語言的優點,代表了當今編程語言的最新成果,體現了未來的軟件架構,適應了Internet的應用開發的需要。
2系統設計
2.1系統概述
系統是用于學生注冊、登錄、參加在線、查詢成績和教師進行登錄、上傳試題、批閱試卷、統計學生成績,以及管理員登錄后主要負責系統的維護,包括添加教師、學生或者管理員??忌M行有效的身份驗證登錄后,即可進行考試,在考試過程中對考生進行計時,考生必須在規定的時問內答題,當到達考試規定的時間以后,考生如果仍然沒有完成考試,系統將自動鎖定屏幕,考生將不能再答題,若在規定的時間內完成了考試,考生直接保存考試的結果即可。對于考試的結果,客觀題部分有系統自動地計算此部分成績,對于主觀題,部分試題實現自動評分(如填空題和程序設計題),其余主觀題必須有教師在線批改,系統自動將主觀題和客觀題一起計入考生的考試科目的總分。
2.2數據庫設計
人們在總結信息資源開發、管理和服務的各種手段時,認為最有效的是數據庫技術。任何管理系統都離不開數據庫,一個強健的數據庫是系統是否成功的前提。根據對網絡考試系統的分析與研究,設計出如下的數據項和數據結構。
考生信息表:包括考生的用戶名、姓名、密碼、所屬的院系、性別等,主要用來說明考生的有關信息,其中主鍵為用戶名;
教師信息表:包括教師的用戶名、姓名、密碼、所屬的院系、教師的權限標志、性別等,主要用來說明教師的有關信息,其中主鍵為用戶名;
管理員信息表:由于在實際中管理員的數量是有限的,所以管理員的信息表中的信息較少,主要包括用戶名、姓名、密碼等信息,管理員具有系統得一切的權限,其中主鍵為用戶名;
試題庫信息表:包括試題的編號、試題的名稱、試題題目的編號、題目和相關的選項,試題的正確答案或參考答案等信息,主要用來說明與試題有關的信息,其中主鍵為試題編號;
考生成績表:包括考生的編號、考生所考的科目、考試成績等信息,其中主鍵為考生編號和考試科目;
考生答案表:此表主要用來保存考生主觀題的結果,包括考生的編號、考試試題的編號,考生的答案、參考答案、題目批改標志位等信息,其中主鍵為考生編號和考試試題編號。
通過以上分析易得網絡考試系統的E-R圖如圖1所示。

2.3功能模塊設計
按照系統的功能模塊,可以將系統分為三個部分,即學生管理模塊、教師管理模塊、管理員模塊,如圖2所示,本系統主要包含以下基本功能。
學生考試管理:主要包括學生登錄,選擇考試課目,考試成績查詢,學生考試,修改密碼等;
教師功能管理:主要包括教師登錄,上傳試卷,批閱試卷主觀題部分,統計考試成績,成績排名,修改密碼等;
管理員功能:主要包括對申請注冊的教師授權,查看考試科目,查看成績,學生密碼查詢,系統參與人員查看,在后臺添加教師、學生或管理員等。

3系統實現
3.1數據庫連接
ASP.NET連接SQL Server 2000的常用方法如下:
(1) 導入命名空間
using System.Data.SqlClient;
(2) 創建連接
SqlConnection lo_conn = New SqlConnection ("Server=服務器名字或IP;Database=數據庫名字;uid=用戶名;pwd=密碼");
(3) 打開連接
lo_conn.Open();
(4) 向數據庫發送SQL命令要使用SqlCommand:
SqlCommand lo_cmd = new SqlCommand();
//創建命令對象
lo_cmd.CommandText = "這里是SQL語句";
//寫SQL語句
lo_cmd.Connection = lo_con;
//指定連接對象,即上面創建的
(5) 處理SQL命令或返回結果集
lo_cmd.ExecuteNonQuery();
//這個僅僅執行SQL命令,不返回結果集,實用于建表、批量更新等不需要返回結果的操作。
SqlDataReader lo_reader = lo_cmd. ExecuteReader(); //返回結果集
(6) 以數據集的方式返回結果集
SqlDataAdapter dbAdapter = new SqlData Adapter(lo_cmd); //注意與上面的區分開
DataSet ds = new DataSet();
//創建數據集對象
dbAdapter.Fill(ds);
//用返回的結果集填充數據集,這個數據集可以被能 操作數據的控件DataBind
(7) 關閉連接
lo_conn.Close();
3.2用戶登錄
登錄分為三種角色:學生、教師、管理員,分別有各自不同的權限。經身份合法性認證后可直接登錄,登錄后進入各自的操作界面。學生登錄代碼實現如下,其他角色代碼類似。
if (ds.Tables[0].Rows.Count>0){
String strname=ds.Tables[“newtable”].
rows[0][1].ToString();
Session[“UserName”]=strname;
String strID=TextBox1.Text;
Session[“UserID”]=strID;
Response.Redirect(“/student/student.aspx”);
} else {
Response.write(“);
}
此段代碼的主要算法思想:首先通過用戶名和密碼從數據庫中查詢滿足這樣條件的數據集,然后判斷數據集中滿足條件的數據個數,如果個數大于0則登錄成功,否則登錄失敗。事實上由于數據庫要求主碼的唯一性,那么滿足條件的數據的個數只能可能是1個或者0個。
3.3教師上傳試卷
上傳試卷分為兩種方式:一種是按照題目的順序通過教師管理界面進行輸入,另一種方式是先把試題放在一個Excel文件中,然后再把Excel文件中的數據導入到數據庫中。下面主要解釋第二種方法。主要代碼如下:
//EXCEL 的連接串
string sConnectionString = "Provider= Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + FileUpload1. PostedFile.FileName.ToString() + ";" + "Extended Properties=Excel 8.0;";
//建立EXCEL的連接
OleDbConnection objConn = new Ole DbConnection(sConnectionString);
objConn.Open();
OleDbCommand objCmdSelect = new OleDbCommand("SELECT * FROM [Sheet1$]", objConn);
OleDbDataAdapter objAdapter1 = new OleDbDataAdapter();
objAdapter1.SelectCommand = objCmdSelect;
DataSet objDataset1 = new DataSet();
objAdapter1.Fill(objDataset1, "XLData");
for (int i = 0; i < objDataset1. Tables["XLData"].Rows.Count; i++){
String strsql2="insertintotb_question (PaperID,ID,ID_type,type,score,question,choice1,choice2, choice3,choice4,rightanswer) values ('" + TextBox1.Text.ToString() + "','" + objDataset1.Tables ["XLData"].Rows[i][0]. ToString() + "','"+ TextBox2.Text.ToString()+"','"+objDataset1. Tables ["XLData"]. Rows[i][1].ToString()+
"','"+objDataset1.Tables["XLData"].Rows[i][2].ToString()+"','"+ objDataset1.Tables["XLData"].Rows[i][3].ToString()+"','"+ objDataset1.Tables["XLData"].Rows[i][4].ToString()+"','"+ objDataset1.Tables["XLData"].Rows[i][5].ToString()+"','"+ objDataset1.Tables["XLData"].Rows[i][6].ToString()+"','"+ objDataset1.Tables["XLData"].Rows[i][7].ToString()+"','"+ objDataset1.Tables["XLData"].Rows[i][8].ToString() + "')";
SqlConnection insertconn;
insertconn = new SqlConnection("Server=SHENG-PC;Database=kaoshi;uid=sa;pwd=''");
insertconn.Open();
SqlCommand intsertconn_cmd = new SqlCommand(strsql2, insertconn);
intsertconn_cmd.ExecuteNonQuery();
insertconn.Close();}
Response.Write(""); }
3.6管理員功能
管理員的功能主要有教師授權,系統人員查詢,密碼查詢和修改,成績查詢,考試科目查詢,添加人員,文件管理等功能。
4系統安全性
對網絡考試系統來說,安全性至關重要,我們通過以下的技術提高系統的安全。
(1) 角色控制,每位學生或教師注冊以后,必須要得到管理員的審核或與系統數據庫中合法人員的身份認證一致以后才能進入系統;
(2) 密碼管理,對于考生、教師以及管理員的密碼,將其加密處理,加密的函數可以自己選擇也可以選擇一些開發軟件自帶的加密方法。即使一些考務人員進入了數據庫,如果沒有管理員的權限,也無法獲得他人的密碼,這樣可以防止考試內部人員的泄密;
(3) 試卷管理,每次考生考試時,都隨機的生成試卷,只要保證考試的題庫有足夠多的試題,那么每個考生的考試試題或題號是不一樣的,這樣更有利于防止學生作弊;
(4) 成績管理,對于考試的結果進行加密處理,例如將考試的成績分數進行加密,這樣即使有人得到數據庫,如果不知道解密和加密的函數,也沒法獲得成績和修改成績。
5結束語
在網絡技術逐漸滲入社會生活各個層面的今天,傳統的考試方式也面臨著變革,而網絡考試則是一個很重要的方向。傳統的考試具有消耗資源大,安全性差等缺點,而網絡考試系統正好彌補了以上缺點,正受到人們高度重視。本文詳細介紹了網絡考試系統的設計和實現過程,希望能為社會節約資源和提高教師的工作效率作一點貢獻。本系統中還有需要進一步完善的地方,如語音部分試題的在線測試開發工作還沒有實現,這也是我們下一步的工作。
參考文獻:
[1] 張友生.軟件體系結構[M]. 北京:清華大學出版社,2006.
[2] 石志國.asp.net程序設計使用教程[M]. 北京:電子工業出版社,2006.
[3] 邱錦倫.Visual C#.net程序設計教程[M]. 北京:清華大學出版社,2006.
[4] 苗雪蘭,劉瑞新,宋會群. 數據庫系統原理及應用教程[M].北京:機械工業出版社,2004.
[5] 王珊,薩師煊.數據庫系統概論[M]. 北京:高等教育出版社,2006.
[6] 邱錦倫.Visual C#.net程序設計教程[M]. 北京:清華大學出版社,2006.
Design and Implement of Internet Examination System
ZHANG Yi-wen1, WANG De-sheng1, JIN Ying2, WANG Ai-ping1
(1.School of Computer Science and Technology, Anhui University, Hefei 230009, China; 2. Department of
management of Hefei University, Hefei 230022, China)
Abstract:The network test system is an extension of the traditional test, which makes full use of database technology, greatly simplifies the traditional process of examination, enhances the flexibility of the teaching and learning activities, so it is an important part to e-teaching. In this paper, exploitation and design of network test system base on B/S model are introduced and analyzed and actualized a basic network test system.
Key words: Internet examination system; Browser/Server; security