張以文 王德勝 金 瑩 王愛平
摘要:網(wǎng)絡(luò)考試系統(tǒng)是傳統(tǒng)考試的延伸,它充分利用了數(shù)據(jù)庫技術(shù),大大簡化了傳統(tǒng)考試的過程,提高了教學(xué)活動的靈活性,是電子化教學(xué)不可缺少的一個重要環(huán)節(jié)。本文介紹和分析基于B/S模式的網(wǎng)絡(luò)考試系統(tǒng)的開發(fā)與設(shè)計,實現(xiàn)了一個基本的網(wǎng)絡(luò)考試系統(tǒng)。
關(guān)鍵詞:網(wǎng)絡(luò)考試系統(tǒng);B/S;安全性
中圖分類號:G642 文獻標(biāo)識碼:A
考試是在教育過程中一個不可缺少的環(huán)節(jié),傳統(tǒng)紙面化考試消耗大量的人力、物力,而且保密性差。隨著計算機技術(shù)的不斷成熟,網(wǎng)絡(luò)考試技術(shù)漸漸的被引入考試過程中,典型的網(wǎng)絡(luò)考試系統(tǒng)如英語考試中的托福、GRE、雅思等。網(wǎng)絡(luò)考試系統(tǒng)可以提高教師閱卷的效率,降低人為因素的誤差,節(jié)省社會資源,更重要的是有利于提高考試的公平性,減少閱卷老師的主觀因素干擾。
1相關(guān)理論與技術(shù)
1.1系統(tǒng)架構(gòu)模式選擇
在近年來開發(fā)的網(wǎng)絡(luò)考試系統(tǒng)中,按其系統(tǒng)的架構(gòu)模式可以分為兩種:C/S模式和B/S模式。C/S架構(gòu)下的網(wǎng)絡(luò)考試系統(tǒng),一般是基于局域網(wǎng)的應(yīng)用系統(tǒng),它用于考試的機器分為服務(wù)器(Server)和客戶機(Client)兩種,優(yōu)點是能夠有效地做到對客戶機的靈活控制和試卷考試結(jié)果的自動回收,缺點是需要分別開發(fā)和安裝相應(yīng)的考試服務(wù)系統(tǒng)和考試客戶系統(tǒng),開發(fā)成本高,升級困難且麻煩,系統(tǒng)維護代價高。所以一般地來說C/S模式并不是網(wǎng)絡(luò)考試系統(tǒng)的理想模式。B/S架構(gòu)下的網(wǎng)絡(luò)考試系統(tǒng),是一種基于Web的應(yīng)用系統(tǒng),目前應(yīng)用比較廣泛,它將試題和成績等全部存放在服務(wù)器上,客戶機只要是帶有瀏覽器且能夠上網(wǎng)即可;它突破時空限制,可在任何時間、任何能夠上網(wǎng)的地點進行遠程考試和考務(wù)工作。它可自動生成試卷,考試結(jié)束時可迅速給出客觀題和部分主觀題考試成績,其他主觀題部分也是以網(wǎng)上閱卷的方式進行并實時提交成績。這些都使得網(wǎng)絡(luò)化考試比傳統(tǒng)的紙面考試具有無可比擬的效率和公平上的優(yōu)越性,是現(xiàn)代化考試發(fā)展的方向。
1.2ASP.NET技術(shù)
ASP.NET是Microsoft公司推出的一個統(tǒng)一的Web開發(fā)模型,它使用盡可能少的代碼生成企業(yè)級Web應(yīng)用程序所必需的各種服務(wù),ASP.NET為.NET Framework的一部分提供,當(dāng)編寫ASP.NET應(yīng)用程序的代碼時,可以訪問.NET Framework 中的類??梢允褂门c公共語言運行庫(CLR)兼容的任何語言來編寫應(yīng)用程序的代碼,這些語言包括Microsoft Visual Basic、C#等。使用這些語言,可以開發(fā)利用公共語言運行庫、類型安全、繼承等方面的優(yōu)點的ASP.NET應(yīng)用程序。
1.3SQL Server和ADO.NET技術(shù)
SQL(Structured Query Language,結(jié)構(gòu)化查詢語言)語言是關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言,是一種介于關(guān)系代數(shù)和關(guān)系演算之間的結(jié)構(gòu)化查詢語言。由于SQL語言功能豐富,語言簡潔,因而備受用戶和計算機工業(yè)界歡迎。SQL語句通常用于完成一些數(shù)據(jù)庫的操作任務(wù),比如在數(shù)據(jù)庫中更新數(shù)據(jù)或檢索數(shù)據(jù)。常見關(guān)系數(shù)據(jù)庫管理系統(tǒng)有Oracle、Microsoft SQL Server、Access等。本系統(tǒng)使用的是Microsoft SQL Server2000,它提供較多的高效開發(fā)工具和較成熟的開發(fā)技術(shù)。
ADO(ActiveX Data Objects)是ASP的內(nèi)置對象之一,凡是能由ODBC驅(qū)動程序訪問的數(shù)據(jù)庫,在ASP中都可以通過ADO對象與SQL語句對其進行網(wǎng)絡(luò)訪問。.NET Framework推出了ADO的升級技術(shù)—ADO.NET,但ADO.NET和ADO不同的。ADO.NET是一組向.NET 程序員公開數(shù)據(jù)訪問服務(wù)的類,ADO.NET為創(chuàng)建分布式數(shù)據(jù)共享應(yīng)用程序提供了一組豐富的組件。它提供了對關(guān)系數(shù)據(jù)庫、XML和應(yīng)用程序數(shù)據(jù)的訪問,ADO.NET能夠支持多種開發(fā)需求,包括創(chuàng)建由應(yīng)用程序、工具、語言或 Internet 瀏覽器使用的前端數(shù)據(jù)庫客戶端和中間層業(yè)務(wù)對象。
1.4Visual C#語言
C#是全新打造的.NET的核心語言,C#來自Visual C++,是C/C++家族的新成員;C#的程序結(jié)構(gòu)風(fēng)格和Java有許多的相似之處;C#博采Visual Basic的簡單樸實直觀的特點,形成了一個完全面向?qū)ο蟮?、類型安全的、功能強大又簡易友好的新型軟件開發(fā)工具??傊?C#融會了許多語言的優(yōu)點,代表了當(dāng)今編程語言的最新成果,體現(xiàn)了未來的軟件架構(gòu),適應(yīng)了Internet的應(yīng)用開發(fā)的需要。
2系統(tǒng)設(shè)計
2.1系統(tǒng)概述
系統(tǒng)是用于學(xué)生注冊、登錄、參加在線、查詢成績和教師進行登錄、上傳試題、批閱試卷、統(tǒng)計學(xué)生成績,以及管理員登錄后主要負責(zé)系統(tǒng)的維護,包括添加教師、學(xué)生或者管理員??忌M行有效的身份驗證登錄后,即可進行考試,在考試過程中對考生進行計時,考生必須在規(guī)定的時問內(nèi)答題,當(dāng)?shù)竭_考試規(guī)定的時間以后,考生如果仍然沒有完成考試,系統(tǒng)將自動鎖定屏幕,考生將不能再答題,若在規(guī)定的時間內(nèi)完成了考試,考生直接保存考試的結(jié)果即可。對于考試的結(jié)果,客觀題部分有系統(tǒng)自動地計算此部分成績,對于主觀題,部分試題實現(xiàn)自動評分(如填空題和程序設(shè)計題),其余主觀題必須有教師在線批改,系統(tǒng)自動將主觀題和客觀題一起計入考生的考試科目的總分。
2.2數(shù)據(jù)庫設(shè)計
人們在總結(jié)信息資源開發(fā)、管理和服務(wù)的各種手段時,認為最有效的是數(shù)據(jù)庫技術(shù)。任何管理系統(tǒng)都離不開數(shù)據(jù)庫,一個強健的數(shù)據(jù)庫是系統(tǒng)是否成功的前提。根據(jù)對網(wǎng)絡(luò)考試系統(tǒng)的分析與研究,設(shè)計出如下的數(shù)據(jù)項和數(shù)據(jù)結(jié)構(gòu)。
考生信息表:包括考生的用戶名、姓名、密碼、所屬的院系、性別等,主要用來說明考生的有關(guān)信息,其中主鍵為用戶名;
教師信息表:包括教師的用戶名、姓名、密碼、所屬的院系、教師的權(quán)限標(biāo)志、性別等,主要用來說明教師的有關(guān)信息,其中主鍵為用戶名;
管理員信息表:由于在實際中管理員的數(shù)量是有限的,所以管理員的信息表中的信息較少,主要包括用戶名、姓名、密碼等信息,管理員具有系統(tǒng)得一切的權(quán)限,其中主鍵為用戶名;
試題庫信息表:包括試題的編號、試題的名稱、試題題目的編號、題目和相關(guān)的選項,試題的正確答案或參考答案等信息,主要用來說明與試題有關(guān)的信息,其中主鍵為試題編號;
考生成績表:包括考生的編號、考生所考的科目、考試成績等信息,其中主鍵為考生編號和考試科目;
考生答案表:此表主要用來保存考生主觀題的結(jié)果,包括考生的編號、考試試題的編號,考生的答案、參考答案、題目批改標(biāo)志位等信息,其中主鍵為考生編號和考試試題編號。
通過以上分析易得網(wǎng)絡(luò)考試系統(tǒng)的E-R圖如圖1所示。
2.3功能模塊設(shè)計
按照系統(tǒng)的功能模塊,可以將系統(tǒng)分為三個部分,即學(xué)生管理模塊、教師管理模塊、管理員模塊,如圖2所示,本系統(tǒng)主要包含以下基本功能。
學(xué)生考試管理:主要包括學(xué)生登錄,選擇考試課目,考試成績查詢,學(xué)生考試,修改密碼等;
教師功能管理:主要包括教師登錄,上傳試卷,批閱試卷主觀題部分,統(tǒng)計考試成績,成績排名,修改密碼等;
管理員功能:主要包括對申請注冊的教師授權(quán),查看考試科目,查看成績,學(xué)生密碼查詢,系統(tǒng)參與人員查看,在后臺添加教師、學(xué)生或管理員等。
3系統(tǒng)實現(xiàn)
3.1數(shù)據(jù)庫連接
ASP.NET連接SQL Server 2000的常用方法如下:
(1) 導(dǎo)入命名空間
using System.Data.SqlClient;
(2) 創(chuàng)建連接
SqlConnection lo_conn = New SqlConnection ("Server=服務(wù)器名字或IP;Database=數(shù)據(jù)庫名字;uid=用戶名;pwd=密碼");
(3) 打開連接
lo_conn.Open();
(4) 向數(shù)據(jù)庫發(fā)送SQL命令要使用SqlCommand:
SqlCommand lo_cmd = new SqlCommand();
//創(chuàng)建命令對象
lo_cmd.CommandText = "這里是SQL語句";
//寫SQL語句
lo_cmd.Connection = lo_con;
//指定連接對象,即上面創(chuàng)建的
(5) 處理SQL命令或返回結(jié)果集
lo_cmd.ExecuteNonQuery();
//這個僅僅執(zhí)行SQL命令,不返回結(jié)果集,實用于建表、批量更新等不需要返回結(jié)果的操作。
SqlDataReader lo_reader = lo_cmd. ExecuteReader(); //返回結(jié)果集
(6) 以數(shù)據(jù)集的方式返回結(jié)果集
SqlDataAdapter dbAdapter = new SqlData Adapter(lo_cmd); //注意與上面的區(qū)分開
DataSet ds = new DataSet();
//創(chuàng)建數(shù)據(jù)集對象
dbAdapter.Fill(ds);
//用返回的結(jié)果集填充數(shù)據(jù)集,這個數(shù)據(jù)集可以被能 操作數(shù)據(jù)的控件DataBind
(7) 關(guān)閉連接
lo_conn.Close();
3.2用戶登錄
登錄分為三種角色:學(xué)生、教師、管理員,分別有各自不同的權(quán)限。經(jīng)身份合法性認證后可直接登錄,登錄后進入各自的操作界面。學(xué)生登錄代碼實現(xiàn)如下,其他角色代碼類似。
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(“);
}
此段代碼的主要算法思想:首先通過用戶名和密碼從數(shù)據(jù)庫中查詢滿足這樣條件的數(shù)據(jù)集,然后判斷數(shù)據(jù)集中滿足條件的數(shù)據(jù)個數(shù),如果個數(shù)大于0則登錄成功,否則登錄失敗。事實上由于數(shù)據(jù)庫要求主碼的唯一性,那么滿足條件的數(shù)據(jù)的個數(shù)只能可能是1個或者0個。
3.3教師上傳試卷
上傳試卷分為兩種方式:一種是按照題目的順序通過教師管理界面進行輸入,另一種方式是先把試題放在一個Excel文件中,然后再把Excel文件中的數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫中。下面主要解釋第二種方法。主要代碼如下:
//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管理員功能
管理員的功能主要有教師授權(quán),系統(tǒng)人員查詢,密碼查詢和修改,成績查詢,考試科目查詢,添加人員,文件管理等功能。
4系統(tǒng)安全性
對網(wǎng)絡(luò)考試系統(tǒng)來說,安全性至關(guān)重要,我們通過以下的技術(shù)提高系統(tǒng)的安全。
(1) 角色控制,每位學(xué)生或教師注冊以后,必須要得到管理員的審核或與系統(tǒng)數(shù)據(jù)庫中合法人員的身份認證一致以后才能進入系統(tǒng);
(2) 密碼管理,對于考生、教師以及管理員的密碼,將其加密處理,加密的函數(shù)可以自己選擇也可以選擇一些開發(fā)軟件自帶的加密方法。即使一些考務(wù)人員進入了數(shù)據(jù)庫,如果沒有管理員的權(quán)限,也無法獲得他人的密碼,這樣可以防止考試內(nèi)部人員的泄密;
(3) 試卷管理,每次考生考試時,都隨機的生成試卷,只要保證考試的題庫有足夠多的試題,那么每個考生的考試試題或題號是不一樣的,這樣更有利于防止學(xué)生作弊;
(4) 成績管理,對于考試的結(jié)果進行加密處理,例如將考試的成績分數(shù)進行加密,這樣即使有人得到數(shù)據(jù)庫,如果不知道解密和加密的函數(shù),也沒法獲得成績和修改成績。
5結(jié)束語
在網(wǎng)絡(luò)技術(shù)逐漸滲入社會生活各個層面的今天,傳統(tǒng)的考試方式也面臨著變革,而網(wǎng)絡(luò)考試則是一個很重要的方向。傳統(tǒng)的考試具有消耗資源大,安全性差等缺點,而網(wǎng)絡(luò)考試系統(tǒng)正好彌補了以上缺點,正受到人們高度重視。本文詳細介紹了網(wǎng)絡(luò)考試系統(tǒng)的設(shè)計和實現(xiàn)過程,希望能為社會節(jié)約資源和提高教師的工作效率作一點貢獻。本系統(tǒng)中還有需要進一步完善的地方,如語音部分試題的在線測試開發(fā)工作還沒有實現(xiàn),這也是我們下一步的工作。
參考文獻:
[1] 張友生.軟件體系結(jié)構(gòu)[M]. 北京:清華大學(xué)出版社,2006.
[2] 石志國.asp.net程序設(shè)計使用教程[M]. 北京:電子工業(yè)出版社,2006.
[3] 邱錦倫.Visual C#.net程序設(shè)計教程[M]. 北京:清華大學(xué)出版社,2006.
[4] 苗雪蘭,劉瑞新,宋會群. 數(shù)據(jù)庫系統(tǒng)原理及應(yīng)用教程[M].北京:機械工業(yè)出版社,2004.
[5] 王珊,薩師煊.數(shù)據(jù)庫系統(tǒng)概論[M]. 北京:高等教育出版社,2006.
[6] 邱錦倫.Visual C#.net程序設(shè)計教程[M]. 北京:清華大學(xué)出版社,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