摘要:從考試管理的實(shí)際需求出發(fā),以實(shí)現(xiàn)在線考試管理為目標(biāo),討論了系統(tǒng)體系結(jié)構(gòu),功能模塊及實(shí)現(xiàn)的關(guān)鍵技術(shù)。采用微軟.NET 平臺(tái),ADO.NET 技術(shù),SQL Server 2005 數(shù)據(jù)庫(kù),設(shè)計(jì)并實(shí)現(xiàn)了基于ADO.NET的在線答題管理系統(tǒng)。系統(tǒng)實(shí)現(xiàn)了基于知識(shí)點(diǎn)的動(dòng)態(tài)組卷管理,極大地提高了考試管理的準(zhǔn)確性與效率。
關(guān)鍵詞:ADO.NET;數(shù)據(jù)適配器;數(shù)據(jù)訪問(wèn);數(shù)據(jù)集;數(shù)據(jù)庫(kù)
中圖分類(lèi)號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2009)36-10602-02
Design and Implementation of Online Examination Management System Based on ADO.NET
HUANG Yi, HE Xiao-feng, ZHOU Xu-yuan
(College of Computer Science, Chongqing University of Arts and Sciences, Chongqing 402160, China)
Abstract: According to the real situation of examination management, aimed at the online examination information management, the structure, function model and key technology of the system is discussed. A online examination information management system based on ADO.NET technology is designed and implemented by use .NET platform of Microsoft, ADO.NET technology, and SQL Server 2005 database. With the implementation of system, the dynamic paper management of knowledge points come true, the accuracy and efficiency of management is improved highly.
Key words: ADO.NET; data adapter; database accessing; dataset; database
隨著教學(xué)改革的深入,傳統(tǒng)考試方式的弊端日益凸現(xiàn),不必要的重復(fù)勞動(dòng)造成人力資源和時(shí)間上的浪費(fèi),試卷命題質(zhì)量受教師主觀因素的影響而難以做到客觀公正,判卷過(guò)程中容易出現(xiàn)錯(cuò)判、漏判以及缺乏衡量教學(xué)效果的有效機(jī)制等。因此,迫切需要一種能夠?qū)崿F(xiàn)考試自動(dòng)化、網(wǎng)絡(luò)化的在線考試系統(tǒng),不僅能夠大大降低教師的勞動(dòng)強(qiáng)度、提高教學(xué)質(zhì)量,而且通過(guò)評(píng)價(jià)機(jī)制,針對(duì)不同的教學(xué)內(nèi)容調(diào)整教學(xué)方法,從而達(dá)到教考分離、教學(xué)資源共享、科學(xué)評(píng)價(jià)教學(xué)效果、合理安排教學(xué)的教改目標(biāo)[1]。開(kāi)發(fā)通用的高校在線答題系統(tǒng),符合各高校在今后的發(fā)展趨勢(shì),在線作答已成為當(dāng)今社會(huì)考試、審核的重要手段。
1 系統(tǒng)核心技術(shù)
1.1 .NET Framework框架
.NET Framework框架是.NET戰(zhàn)略的基礎(chǔ),它提供給我們一個(gè)一致的編程環(huán)境,無(wú)論是本地的代碼執(zhí)行還是網(wǎng)絡(luò)上的代碼執(zhí)行,它都使我們的編程經(jīng)驗(yàn)在面對(duì)類(lèi)型不同的應(yīng)用程序時(shí)保持一致。提供了一個(gè)面向?qū)ο蟮木幊汰h(huán)境,完全支持面向?qū)ο缶幊?。提高軟件的可?fù)用性、可擴(kuò)展性、靈活性。它包括CLR(公共語(yǔ)言運(yùn)行時(shí))和框架類(lèi)庫(kù)[2]。CLR用于解決不同語(yǔ)言的數(shù)據(jù)類(lèi)型不同的問(wèn)題和指定了一種以.Net平臺(tái)為目標(biāo)的語(yǔ)言所必須支持的最小特征以及該語(yǔ)言與其他.Net框架下都可以實(shí)現(xiàn)互操作性所需要的完備特征。.NET框架類(lèi)庫(kù)提供了大量好用的實(shí)用的類(lèi)包括基礎(chǔ)數(shù)據(jù)庫(kù)類(lèi)、I/O訪問(wèn)、安全控制、數(shù)據(jù)訪問(wèn)、XML描述數(shù)據(jù)的文件格式等。對(duì)Web應(yīng)用與web service(Web服務(wù))的強(qiáng)大支持等。
1.2 ADO.NET對(duì)象模型
.NET數(shù)據(jù)庫(kù)核心為ADO.NET,它提供了對(duì)關(guān)系數(shù)據(jù)庫(kù)、XML以及其他數(shù)據(jù)存儲(chǔ)的訪問(wèn)。它最大的優(yōu)點(diǎn)是,它與數(shù)據(jù)庫(kù)源斷開(kāi)連接時(shí)也可以使用數(shù)據(jù)庫(kù)。ADO.NET提供了兩個(gè)組件:.NET Framework數(shù)據(jù)提供程序和DataSet(數(shù)據(jù)集)[3]。ADO.NET 中有5個(gè)主要的數(shù)據(jù)庫(kù)訪問(wèn)和操作對(duì)象,分別是Connection、Command、DataReader、DataAdapter、DataSet 對(duì)象。它們的操作數(shù)據(jù)庫(kù)結(jié)構(gòu)圖如圖1所示。不同的命名空間都用相應(yīng)的對(duì)象,比如我們要操作SQL Server數(shù)據(jù)庫(kù),要使用System.Data.SqlClient使用OLEDB要用System.Data.OleDb。
1) Connection 對(duì)象主要負(fù)責(zé)連接數(shù)據(jù)庫(kù),可根據(jù)Connection對(duì)象的各種不同屬性來(lái)指定數(shù)據(jù)源的類(lèi)型、位置及其他屬性,可用它來(lái)與數(shù)據(jù)庫(kù)建立連接或斷開(kāi)連接。根據(jù)所連接的數(shù)據(jù)庫(kù)不同,.NET Framework數(shù)據(jù)提供程序也有不同的Connection,如針對(duì)SQLServer的SqlConnection、針對(duì)Oracle的OracleConnection、針對(duì)MySQL的MySqlConnection、針對(duì)OLEDB的OleDbConnection等。
2) Command對(duì)象封裝了與用戶想要完成的動(dòng)作相關(guān)的數(shù)據(jù)庫(kù)命令,在一般情況下這些命令就是SQL語(yǔ)句。
3) DataReader對(duì)象主要負(fù)責(zé)讀取數(shù)據(jù)庫(kù)中的數(shù)據(jù),DataReader以只進(jìn)、只讀方式返回?cái)?shù)據(jù),從而提高應(yīng)用程序的性能。
4) DataAdapter提供連接DataSet對(duì)象和數(shù)據(jù)源的橋梁。DataAdapter使用Command對(duì)象在數(shù)據(jù)源中執(zhí)行SQL命令,以便將數(shù)據(jù)加載到DataSet中,并使DataSet中數(shù)據(jù)的更改與數(shù)據(jù)源保持一致。
5) DataSet 對(duì)象主要負(fù)責(zé)存取和更新數(shù)據(jù),最大優(yōu)點(diǎn)是離線和連接。DataSet既可以以離線方式,也可以以實(shí)時(shí)連接方式來(lái)操作數(shù)據(jù)庫(kù)中的數(shù)據(jù)。這樣的好處是大大減少了服務(wù)器端數(shù)據(jù)庫(kù)的連接線程,從而大大地減少了服務(wù)器端的運(yùn)行壓力。所以,在數(shù)據(jù)量不大的情況下,使用DataSet是最好的選擇。
2 系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
2.1 數(shù)據(jù)庫(kù)設(shè)計(jì)
根據(jù)系統(tǒng)功能設(shè)計(jì)的要求以及模塊的劃分,主要的數(shù)據(jù)表:學(xué)員信息表(Student):用戶名、密碼、用戶狀態(tài)、班級(jí)、學(xué)號(hào)、姓名、性別、身份證號(hào)、主修科目、就讀院校、電話、地址、郵編、期望的工作、電子郵件。管理員信息表(Admin):用戶名、密碼。教員信息表(Teacher):用戶名、密碼、用戶狀態(tài)、姓名、性別、生日。試題表(Question):問(wèn)題編號(hào)、問(wèn)題內(nèi)容、答案、試題難度、科目Id、各個(gè)選項(xiàng)的內(nèi)容。
2.2 基本模塊與總體框圖
管理員模塊:管理員只有唯一的用戶名和密碼,經(jīng)系統(tǒng)驗(yàn)證后方可進(jìn)入系統(tǒng),進(jìn)入系統(tǒng)后管理員擁有所有用戶的最大權(quán)限。包括新增學(xué)員、新增教員、查詢及修改學(xué)員、學(xué)員信息列表、教員信息列表、題庫(kù)管理等權(quán)限。
教員管理:該模塊用于增加試題,查詢?cè)囶},教師可根據(jù)不同的科目增加相應(yīng)的試題內(nèi)容。
學(xué)員管理:學(xué)員登錄考試管理系統(tǒng)需要進(jìn)行身份驗(yàn)證,一個(gè)學(xué)員對(duì)應(yīng)一個(gè)用戶名和密碼,管理員在考試開(kāi)始前需要導(dǎo)入學(xué)生的必要信息,如學(xué)號(hào)、姓名、班級(jí)、姓名、性別、身份證號(hào)、主修科目等。除上述考試信息外,還需導(dǎo)入用戶注冊(cè)信息:用戶名、密碼、用戶狀態(tài)(活動(dòng)||不活動(dòng))。
用戶和用戶角色管理:用戶管理模塊對(duì)使用本系統(tǒng)的用戶進(jìn)行用戶名、密碼、用戶身份的驗(yàn)證,確保了系統(tǒng)的安全性。
試題的錄入管理:指具有相應(yīng)權(quán)限的用戶對(duì)試題的錄入、修改、刪除等管理,試題的錄入要按照題型錄入。
自動(dòng)組卷:主要是學(xué)員登錄后在線答題,系統(tǒng)隨機(jī)抽取試題,組合成一套試卷,最后自動(dòng)閱卷,試題是由教員添加。系統(tǒng)總的流程框架圖,如圖2所示。
2.3 使用ADO.NET連接數(shù)據(jù)庫(kù)
.NET為SQL Server提供的連接類(lèi)是SqlConnection,其實(shí)現(xiàn)System.Data.IDbConnection 接口,用于實(shí)現(xiàn)與數(shù)據(jù)源的連接,同時(shí)建立了一個(gè)連接數(shù)據(jù)庫(kù)字符串得DBHelper類(lèi)與UserHelper類(lèi)。
要與一個(gè) SQL SERVER 數(shù)據(jù)庫(kù)建立連接,首先引入命名空間:
Using System.Data;
Using System.Data.SqlClient;
具體的使用://查詢語(yǔ)句。
String sql=string.Format (\"select Id, Name from Admin where FromUserId= {0} and MessageTypeId=1 \", loginId, UserHelper.loginName);
//command對(duì)象負(fù)責(zé)對(duì)數(shù)據(jù)庫(kù)執(zhí)行命令。
SqlCommand command = new SqlCommand (sql, DBHelper.connection);
//打開(kāi)和關(guān)閉數(shù)據(jù)庫(kù)連接,使用了靜態(tài)字段。
DBHelper.connection.Open ();
DBHelper.connection.Close ();
使用DataAdapter對(duì)象和DataSet對(duì)象實(shí)現(xiàn)考試信息查找及隨機(jī)抽題等。其具體實(shí)現(xiàn),這里不再一一闡述。
3 結(jié)論
建立在線考試系統(tǒng)方便學(xué)習(xí)者自主測(cè)驗(yàn),及時(shí)得到反饋信息,從而有計(jì)劃、有步驟、系統(tǒng)地調(diào)整學(xué)習(xí)進(jìn)度,使學(xué)習(xí)更有效。與此同時(shí),教師(或管理)可以通過(guò)系統(tǒng)對(duì)學(xué)生信息的分析統(tǒng)計(jì),有針對(duì)性地為學(xué)習(xí)者提供指導(dǎo)。掌握ADO.NET 數(shù)據(jù)存取技術(shù),可以使上下級(jí)數(shù)據(jù)庫(kù)、同級(jí)數(shù)據(jù)庫(kù)之間數(shù)據(jù)一致性得到保證的同時(shí)[4],程序執(zhí)行速度更快,編程方式更加靈活,使用的對(duì)象模型更豐富,從而大大提高程序開(kāi)發(fā)效率。
參考文獻(xiàn):
[1] 陳華清.基于WEB 考試信息管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù):學(xué)術(shù)交流,2009,5(17):4422-4424.
[2] Microsoft Corporation.ADO.NET技術(shù)文檔[EB/OL].http://msdn.microsoft.com/zh-cn/library/ms971481.aspx.
[3] 詹發(fā)榮.ADO.NET數(shù)據(jù)訪問(wèn)體系結(jié)構(gòu)研究[J].電腦知識(shí)與技術(shù):學(xué)術(shù)交流,2009,5(20):5339-5340.
[4] 趙雪峰.ADO.NET數(shù)據(jù)訪問(wèn)技術(shù)在電子檔案管理系統(tǒng)中的應(yīng)用[J].通信技術(shù),2009(8):123-125.