吳立峰 丁陟凌
摘要:本文基于高效學(xué)生和考試的需要。利用計算機技術(shù)實現(xiàn)在線考試系統(tǒng)的架構(gòu)和設(shè)計,在現(xiàn)有成熟的模式基礎(chǔ)上,以自適應(yīng)考試的模式,形成了本系統(tǒng)。本系統(tǒng)在Windows XP下,以IIS5.1(lntemet InformationServer)網(wǎng)絡(luò)信息服務(wù)為應(yīng)用服務(wù)器,通過ASPNET(C#)、SQL Server 2000來進行專業(yè)開發(fā),實現(xiàn)在線考試系統(tǒng)的應(yīng)用,本系統(tǒng)采用WEB技術(shù),采用的是三層體系(B/S)結(jié)構(gòu)模型,即從用戶端到服務(wù)器再到數(shù)據(jù)庫的一個貫穿線,應(yīng)該說安全性上還應(yīng)用上都表現(xiàn)的不錯;在功能上可以在相同水平的前提下實現(xiàn)隨機生成試卷,可以有A\B卷,保證每套試卷的題目內(nèi)容不同。同時還避免了“碰題”,即使碰上了順序也打亂了。對于在線考試效率的提高和維護來說都性價比很高。
關(guān)鍵詞:在線考試;ASP.NET;SQLServer;Browser/Server;C#
一、計算機配置與系統(tǒng)結(jié)構(gòu)要求
(一)搭建ASP.NET開發(fā)適應(yīng)環(huán)境
從“開始”進入到控制面板命令,雙擊網(wǎng)絡(luò)圖標(biāo),跳出來網(wǎng)絡(luò)對話框;通過添加所需的組件來完成基礎(chǔ)搭建軍,并在供應(yīng)商列表框中選微軟提供的協(xié)議,而另外需要在網(wǎng)絡(luò)協(xié)議列表框中點擊TCP/IP協(xié)議選項,勾選后再單擊確定“添加協(xié)議”完成涅黏出安裝[1]。
(二)安裝和配置IIS
安裝HS進入通道與搭建ASPNET相同,在“添加或刪除程序”里找到“添加或刪除組件”選項,在彈出微軟窗口后,在“Internet信息服務(wù)”這項中,點“詳細信息”審查IIS所包含的各種組件[2]。
從“主目錄”進入。主目錄默認地址:“C:\inetpub\wwwroot”,權(quán)限為讀取、記錄訪問和索引資源。
(三)題庫管理
(1)試題分類進行類型管理,這里要實現(xiàn)的是五個方面:一是試卷類別的分類和細分;二是添加、刪除、修改這三個基本的功能;三是如何做到排序不亂,這個很重要;四是應(yīng)用功能的緩存時間的設(shè)計;五是基于題庫自動更新的管理。
(2)考試試題進行分類管理,主要實現(xiàn)三個功能:一是試題的添加、刪除以及修改;二是實現(xiàn)試題的選擇;三是試題的A/B卷功能;
(3)試題答案要進行分類管理,主要實現(xiàn)三個功能:一是試題的答案的管理,需要滿足添加、刪除和修改和編輯的功能;二是試題答案的自我糾錯功能;三是試題答案隱藏功能。
(四)在線答題
(1)在線答題過程中需要進行動態(tài)化隨機處理,那么需要達成的效果是試卷的不同,也就是在使用隨機函數(shù)動態(tài)過程中,要進行計復(fù)好不同試題從題庫中生成整張試卷的能力。
(2)顯示整套試題。
(五)系統(tǒng)功能模塊劃分
數(shù)據(jù)庫、數(shù)據(jù)訪問和業(yè)務(wù)邏輯層,是本系統(tǒng)統(tǒng)的幾大構(gòu)件。
從二大數(shù)據(jù)庫、數(shù)據(jù)訪問層及業(yè)務(wù)邏輯層的具體描述情況來看主要滿足如下:
(1)數(shù)據(jù)庫層是最為基本的系統(tǒng)數(shù)據(jù)的底層一級,它重要性就是要滿足整個系統(tǒng)的穩(wěn)定和系充在存儲所有數(shù)據(jù)上的容量。
(2)數(shù)據(jù)訪問層是動態(tài)化的結(jié)構(gòu),需要在數(shù)據(jù)庫的運行基礎(chǔ)上,應(yīng)用程序通過該層訪問數(shù)據(jù)庫。從數(shù)據(jù)訪問層的基本架構(gòu)來看,對于數(shù)據(jù)庫的基本的功能化選擇、添加等操作能滿足,同時也有權(quán)力對于數(shù)據(jù)更新和刪除等操作可以進行重復(fù)。
UserDB類數(shù)據(jù)庫的方法實現(xiàn)如下:
(六)在線答題
在線答疑模塊是一個復(fù)雜的模塊。系統(tǒng)首先根據(jù)試卷的總分、難度系數(shù)等來實答題模塊的要求,并在生成一組隨機試卷,并根據(jù)不同題型在答題頁面上顯示每個試題。隨機組卷過程中有兩個回歸過程。右邊的回歸過程返回到隨機生成試卷的狀態(tài)。當(dāng)不滿足試卷類型條件時,會發(fā)生回歸過程;左側(cè)的回歸過程返回隨機獲取試卷類型的狀態(tài)。當(dāng)不滿足試卷類型條件時,會發(fā)生回歸過程。對于系統(tǒng)中同一類型的試卷,其難度系數(shù)控制在最大難度系數(shù)和最小難度系數(shù)之間。
(七)表設(shè)計
1.角色表(Roles)
角色表存儲用戶的角色信息,字段說明如表I所示:
用戶可以使用此表設(shè)置用戶的角色。
2.考生表(Exammees)
通過存儲的方式來實現(xiàn)考生表的靜態(tài)功能,實現(xiàn)參加考試考生信息的表達,引用用戶表Users的主鍵UserID作為該表的外鍵??忌淼淖侄握f明如表2所示。
管理員(教師)登錄后,可以通過此表查看考生參加的考試和考試成績。創(chuàng)建考生表的SQL腳本文件如下:
USE test1
GO
Create Table Exammees
Kinds)
問題種類表存儲問題種類的信息,如選擇題和判斷題。該表的字段說明如表3所示。
創(chuàng)建問題種類表的SQL腳本文件如下:
USE test1
存儲在圖片表里的相關(guān)信息,具體的字段說明請看表4所示。
創(chuàng)建圖片表的SQL腳本文件如下:
USE test1
GO
Create Table Exarninees
(
系數(shù)值。表中的title字段指示問題的標(biāo)題,系統(tǒng)使用該標(biāo)題顯示特定的問題、它僅用作問題標(biāo)題的可選字段。由于問題的描述很長,標(biāo)題字段不夠。如果問題描述較短,也可以使用該字段。便于描述開發(fā)過程中boby字段的存儲問題,它的型號為Text,可以存儲很長的文本(見表5)
創(chuàng)建圖片表的SQL腳本文件如下:
USE test1
Create Table Questions
存儲于題庫中的問題答案表對于答案信息的處理,該表的處理是通過引用問題表Question的QuestionID、圖片表Pictures的PictureID作為表的外鍵。向題答案表的字段說明如表6所示。
二、具體設(shè)計及實現(xiàn)
(一)用戶登錄和注冊
1.界面設(shè)計
用戶登錄通過loginl.aspx頁面實現(xiàn)。它的代碼脆藏文件是loginl.aspx.es文件。用戶登錄是應(yīng)用程序的主要入口。用戶只能通過此項進入系統(tǒng)。
由于用戶有三種身份角色:考生、教師和管理員,在設(shè)計登錄頁面時·需要提供每一個角色相應(yīng)的選擇框。用戶通過輸入用戶名和密碼即可以登錄界面使用。沒有注冊的當(dāng)然也可以注冊后再使用。
2.用戶登錄
用戶“登錄”后btnLogin_Cliek(),就開始了驗證后實現(xiàn)用戶登錄的真實有效的過程。如果彈出密碼錯誤對話框,那就說明登陸不對,需要進行調(diào)整,如果繼續(xù)錯誤只能找回密碼了。
3.用戶注冊
添加新用戶有兩種方法:一種是從后臺用戶管理添加用戶,另一種是注冊用戶。用戶注冊只能添加候選用戶,不能添加管理員用戶。由于管理員用戶可以直接進入系統(tǒng)后臺管理界面,用戶在前臺注冊該角色不安全,系統(tǒng)管理混亂系統(tǒng)數(shù)據(jù)安全受到威脅。下面介紹前臺用戶注冊的實現(xiàn)。考慮到用戶注冊需要輸入用戶名、用戶密碼、用戶郵箱等信息,我們可以設(shè)計。
添加新用戶有兩種方法:一種是從后臺用戶管理添加用戶,另一種是注冊用戶。用戶注冊只能添加候選用戶,不能添加管理員用戶。由于管理員用戶可以直接進入系統(tǒng)后臺管理界面,用戶在前臺注冊該角色不安全,系統(tǒng)管理混亂,系統(tǒng)數(shù)據(jù)安全受到威脅。下面介紹前臺用戶注冊的實現(xiàn)??紤]到用戶注朋需要輸入用戶名、用戶密碼、用戶郵箱等信息,我們可以設(shè)計。
(二)題庫設(shè)計
在這個界面中,用戶作為管理員,實現(xiàn)了對判斷題和多項選擇題的管理,以及成績管理和學(xué)生管理。
1.選擇題管理
(1)數(shù)據(jù)綁定
通過頁面selection.aspx來實現(xiàn)的,selection.aspx.cs是它的代碼隱藏文件。
實現(xiàn)數(shù)據(jù)綁定的代碼是:添加delete按鈕,當(dāng)用戶點擊該按鈕時,觸發(fā)event delete命令響應(yīng)事件,
(2)修改試題
在DataGrid中添加編輯按鈕,當(dāng)用戶單擊該按鈕時,事件EditCommand事件被觸發(fā)從而響應(yīng)該事件_
當(dāng)用戶不需要修改試題時,可以點擊“取消”按鈕,取消對試題的修改。此事件由cancelcommand事件響應(yīng),代碼如下:
private void DataGridl_CanceiCommand(object source,System.Web.UI.WebControls.DataGrdCommandEventArgs e)
this.DataGndl.Editltemlndex=-1;
this.BindToDataGtid();
}
用戶修改試題對應(yīng)內(nèi)容后,需要將修改后的內(nèi)容發(fā)送到數(shù)據(jù)庫,由事件UpdateCommand響應(yīng)。代碼如下:
private void DalaGridl_UpdateCommand(object source,System.Web.UI.WebControls.DataGndCommandEventArgs e)
}
(3)添加試題
當(dāng)單擊添加選擇題時,頁面轉(zhuǎn)入選擇題添加頁面addSelect.aspx。如圖7所示。
當(dāng)用戶單擊提交按鈕時,事件IbtnTijiao_Click()觸發(fā),該事件實現(xiàn)將管理員編寫的題目添加到數(shù)據(jù)庫中,其代碼為:
private void lbtnTipao_Click(object sender,System.EvemAcgs e)
{
if(this.Is Valid)
{
cript'>alert('添加失??!');");
}
}
}
2.判斷題管理
判斷題管理由rightOrWrong.aspx頁面實現(xiàn),它的頁面設(shè)計和功能實現(xiàn)的代碼和選擇題管理類似。
(三)在線答題實現(xiàn)
1.界面設(shè)計
系統(tǒng)的在線答題功能由頁面kaoShi.aspx和頁面examination.aspx實現(xiàn),它們的代碼隱藏文件分別為kaoShi.aspx.cs和examination.aspx.cs文件。
在隨機生成試卷的過程中,應(yīng)用程序首先調(diào)用函數(shù)CreateExammePaper()生成整套試卷。該函數(shù)遞歸調(diào)用自己,直到生成試卷。
private ArrayList CreateIntegerExaminePaper(int nTotalMark,int minDefficult,intmaxDefficult,ArrayList KindList)
{//定義函數(shù)的局部變量
if(KmdList.Count<=0)
{
return((ArrayList)null);st.Count;i++)
{//調(diào)用CreateSpecialKindQuestion函數(shù)生成特定題型
ArrayList tempList=CreateSpecialKindQuestion(((QuestionKinds)KindList[i]).KindNum,((QuestionKinds)KindList[i]).KindID);
for(intj=0;j { QuestionIDList.Add(tempList[j]); } } //添加到結(jié)果中 for(int k=0;k {//構(gòu)造檢查試卷的參數(shù) allMark+=((QuestionDetails)QuestionIDList[k]).Mark; deffieultParm+=((QuestionDetails)QuestionIDList[k]).Mark* ((QuestionDetails)QuestionIDList[k]).Defficult; } //檢查試卷是否成功,如果成功則中止該函數(shù),否則遞歸調(diào)用 if(allMark==nTotalMark&&defficultParm>=100*minDefficult*QuestionIDList.Count&&defficultParm<=100*maxDefficult*QuestionIDList.Count) 2.在線答題 函數(shù)BindQuestionData()實現(xiàn)了上述頁面初始化過程: private void BmdQuestionData() { ArrayList QuestionIDList=newArrayList(); if(Session[Session.SessionID+Session["UserName"].ToString()]!=null) { QuestionIDList=(ArrayList)Session[Session.SessionID+Session["UserName"].ToString()]; AnswcrDB answer=new AnswerDB(); Sq1DataReader reca=answer.GetAnswers(nQuestionID); radioList.DataSource=reca; radioList.DataTextField="Body"; radioList.Data ValueField="AnswerID"; radioList.DataBind(); reca.Close(); } 在數(shù)據(jù)綁定時,問題DataList控件觸發(fā)事件QuestionList_ItemDataBound(),并在事件中調(diào)用函數(shù)BindAnswerList()綁定問題答案數(shù)據(jù)。綁定數(shù)據(jù)步驟如下: (1)通過參數(shù)。的函數(shù)FindControl()找到需要綁定數(shù)據(jù)的RadioButtonList控件,命名為answerList。 (2)判斷answerList控件是否為空,若為空,則中止函數(shù)。 (3)若answerList控件不為空,則調(diào)用函數(shù)BindAnswerList()綁定answerList控件的答案數(shù)據(jù)。 事件QuestionList_ItemDataBound()代碼如下: (1)提交試卷顯示成績 當(dāng)用戶點擊交卷按鈕后,應(yīng)將用戶的答題結(jié)果與試題答案進行對比,并給出相應(yīng)的分值寫入數(shù)據(jù)表,最后讀取成績表Grade中的記錄集并顯示考試得分。 三、測試運行與維護 (一)網(wǎng)站測試通過后再運行 (1)由不同的身份的操作者來進行全面的測試,同時還要測試檢查在網(wǎng)站上所有鏈接是否合理和正確,功能是否能用,文字內(nèi)容等是否有錯誤,還有UI等效果是否正確,有美學(xué)價值。 (2)在測試中要對于整個網(wǎng)站應(yīng)該有一個完整的架構(gòu)來進行對比,特別是網(wǎng)站上的欄目結(jié)構(gòu)圖和欄目的功能和表達的內(nèi)容是否合適,它應(yīng)該清楚地表達各個網(wǎng)站之間的協(xié)調(diào)關(guān)系。 (二)網(wǎng)站的維護很重要 (1)維護服務(wù)器及相關(guān)軟硬件,評估可能出現(xiàn)的問題,制定響應(yīng)時間。 (2)數(shù)據(jù)庫維護,有效利用數(shù)據(jù)是網(wǎng)站維護的重要組成部分,數(shù)據(jù)庫維護應(yīng)引起重視。 參考文獻: [1]鄒建峰.ASPNE7開發(fā)技術(shù)詳解[M].人民郵電出版社,2005. [2]周良忠.C#精髓[M].人民郵電出版社,2002. [3]劉愛民.基于.net技術(shù)的在線考試系統(tǒng)的設(shè)計與實現(xiàn)[J].電腦開發(fā)與應(yīng)用,2011(07).