摘要:該文以基于B/S架構(gòu)的中醫(yī)針灸學課程在線測試系統(tǒng)為例,介紹了它的模塊組成及基本功能,并給出了關(guān)鍵性問題的實現(xiàn)方法,同時指出了下一步研究的方向。
關(guān)鍵詞:在線測試;B/S架構(gòu);隨機試題
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2010)03-638-03
在傳統(tǒng)的中醫(yī)針灸學教學過程中,為了使教師的教學活動和學生的自我測試融為一體,我們運用ASP技術(shù),以ACCESS作為后臺數(shù)據(jù)庫,開發(fā)了一套基于B/S架構(gòu)的在線測試系統(tǒng),以便借助計算機網(wǎng)絡(luò),打破時空的限制,實現(xiàn)遠程在線測試,使學生及時了解自己對所學課程的掌握程度。
1 系統(tǒng)實現(xiàn)的原理與技術(shù)
本系統(tǒng)是一個基于B/S架構(gòu)的WEB應用程序,運用了ASP技術(shù)和數(shù)據(jù)庫技術(shù)。其中,ASP(Active Server Pages)是微軟公司開發(fā)的一套服務器端腳本運行環(huán)境,通過ASP技術(shù),我們可以建立動態(tài)、交互、 高效的Web服務器應用程序。其工作過程是:當客戶端向服務器發(fā)出請求時,服務器便開始執(zhí)行程序,當程序執(zhí)行完畢后,服務器將執(zhí)行的結(jié)果返回給客戶端,從而生成與客戶端提交要求相符的HTML頁面,是真正意義上的動態(tài)頁面。
在WEB應用程序中,通常會有大量的信息資源需要被存儲和檢索,這就必須使用Web數(shù)據(jù)庫開發(fā)技術(shù)。常見的數(shù)據(jù)庫有SQLServer、Access、Oracle等,它們具有不同的結(jié)構(gòu)體系,需要根據(jù)情況,用不同的方法來實現(xiàn)對數(shù)據(jù)庫的訪問,通常有以下三種方式可實現(xiàn)應用程序和數(shù)據(jù)庫之間的連接,即ADO方式,ODBC方式和OLE DB方式,在本系統(tǒng)中,我們采用OLE DB(對象鏈接和嵌入數(shù)據(jù)庫)方式實現(xiàn)應用程序?qū)CCESS數(shù)據(jù)庫的訪問,OLE DB是微軟公司開發(fā)的系統(tǒng)級數(shù)據(jù)庫編程接口,直接由底層API函數(shù)實現(xiàn),通過它連接數(shù)據(jù)庫,不需要配置數(shù)據(jù)源,只需在程序中通過連接語句進行設(shè)置,是目前連接數(shù)據(jù)庫速度比較快的一種方式。
本在線測試系統(tǒng)由數(shù)據(jù)庫系統(tǒng)、WEB服務器和客戶端瀏覽器構(gòu)成三層體系結(jié)構(gòu),如圖1所示。
其中客戶端瀏覽器用于接受用戶的請求,并提交給WEB服務器,WEB服務器通過數(shù)據(jù)網(wǎng)關(guān)和數(shù)據(jù)庫相連,負責與數(shù)據(jù)庫間的數(shù)據(jù)交換,并將執(zhí)行的結(jié)果返回客戶端瀏覽器。
2 系統(tǒng)組成及主要功能
2.1 系統(tǒng)組成
根據(jù)針灸學課程的特點,我們將系統(tǒng)分為以下三大模塊如下:
1) 管理員模塊,主要用于教師用戶的管理及考試科目的設(shè)置;
2) 教師模塊,主要含學生資料管理,題庫管理及試卷管理等功能;
3) 學生模塊,含歷次成績查詢,參加在線測試等功能。
2.2 系統(tǒng)主要實現(xiàn)的管理功能
1) 用戶管理:根據(jù)用戶登錄帳號,判斷用戶身份(管理員,教師,學生),并分配相應的操作權(quán)限;
2) 題庫管理:主要包括不同科目試題的錄入,修改,刪除等;
3) 試卷管理:由任課教師根據(jù)各自需要,從題庫中抽取試題生成。相應的試卷。其抽題方式分成人工抽取試題和根據(jù)所設(shè)策略從題庫中隨機抽取試題兩種方式。
4) 在線測試(客觀題部份):學生登陸系統(tǒng)后,自主選擇相應科目試卷進行在線測試并提交,即時得到測試結(jié)果并存入后臺數(shù)據(jù)庫中備查;
5) 自動閱卷:在學生交閱后,將客觀題答案與試題的標準答案進行比對,從而實現(xiàn)系統(tǒng)的自動閱卷功能;
6) 統(tǒng)計分析:根據(jù)設(shè)置條件,統(tǒng)計出所需數(shù)據(jù),如學生單次測試成績,全部測試平均成績,各分數(shù)段分布比例等。
3 數(shù)據(jù)庫的設(shè)計
根據(jù)系統(tǒng)功能設(shè)計的要求以及模塊的劃分,采用ACCESS作為后臺數(shù)據(jù)庫,創(chuàng)建一個名為exam.mdb的數(shù)據(jù)庫。它包含以下各數(shù)據(jù)表,如表1。
3 系統(tǒng)中幾個關(guān)鍵性問題的實現(xiàn)
3.1 數(shù)據(jù)庫的連接
本系統(tǒng)中,采用了OLE DB方式實現(xiàn)數(shù)據(jù)庫的連接,同時,為了減少代碼的冗余,我們將連接數(shù)據(jù)庫的這部分代碼寫在一個公共文件conn.asp中,在其他ASP頁面代碼中可將此文件包含進來,建立與后臺數(shù)據(jù)庫的連接,這樣便于程序后期的維護,增強程序的高類聚性。
Conn.asp文件內(nèi)容如下:
<%
dim myconn,connstr,db,rs
db=\"data/exam.mdb\"
Set myconn = Server.CreateObject(\"ADODB.Connection\")
connstr=\"provider=microsoft.jet.oledb.4.0;data source=\"Server.MapPath(\"\"db\"\")
myconn.Open connstr
%>
在其他程序開始部分寫入:
即可建立該程序與數(shù)據(jù)庫的連接。
3.2 隨機試題的生成
主要利用函數(shù)randomize得到隨機的種子,此外再定義數(shù)組A用來儲存記錄,數(shù)組B用來篩選記錄。其核心代碼如下:
redim a(sl,2),b(Count)
……
Randomize timer '初始化隨機數(shù)生成器
for j=1 to sl
k=int(rnd*Count+1) '從總數(shù)里面隨機取一條記錄
'----以下 隨機抽取記錄號
do while t(k)<>0 '判斷記錄是否已經(jīng)在數(shù)組中
k=int(rnd*sl+1)
loop
b(k)=1 '第k條記錄被選中
next
j=1:i=1
'以下循環(huán)選取數(shù)據(jù)集RS中的記錄存放到數(shù)組中
Do While Not RS.Eof
if b(j)=1 then
a(i,1)=RS(\"que_id\")'試題編號
a(i,2)=RS(\"question\")'試題內(nèi)容
i=i+1
end if
j=j+1
RS.MoveNext
Loop
3.3 有關(guān)成績統(tǒng)計方面的問題
這主要涉及到統(tǒng)計有如學生全部測試平均成績,各分數(shù)段分布比例等方面的問題,需要調(diào)用SQL語句中有關(guān)統(tǒng)計函數(shù)。如統(tǒng)計某個學生全部測試平均成績,需利用average函數(shù),其SQL語句為:select avg(score) as avg_score from examscore where stu_xh like “指定的學號”。若統(tǒng)計某次測試80~100分人員所占比例,則需利用:\"select count(score) as n from examscore where 試卷號 like '指定的試卷號' \"語句得出參與測試學生總?cè)藬?shù)n,再利用\"select count(score) as m from examscore where 試卷號 like '指定的試卷號' and score>80 and score<=100\"得出符合條件人數(shù)m,再利用公式(m/n)*100%即可得出所求百分比。
3.4 系統(tǒng)安全方面的設(shè)計
1) 在系統(tǒng)運行中,為防止用戶不通過登錄頁面直接進入其他頁面進行瀏覽,我們設(shè)計了如下過程:
Sub msgbox(str,url)
Response.write\"\"
End sub
在頁面程序中,通過CALL語句來調(diào)用以上過程,即可判斷用戶是否已經(jīng)登錄,如尚未登錄,則將其強制跳轉(zhuǎn)到登錄頁面,其代碼如下:
<<%
if session(\"name\")=\"\" then
Call msgbox(\"請登陸!\",\"e_login.asp\")
Response.end
End if
%>>
2) 屏蔽某些不需要的按鍵:如當學生在線測試時,為禁止學生刷新頁面,,我們在程序中加入以下代碼,用以屏蔽F5按鍵。代碼如下:
function keydown()
{
if(event.keyCode==116){
event.keyCode=0;
event.returnValue=1;
alert(\"當前設(shè)置不允許使用F5刷新鍵\");
}
執(zhí)行結(jié)果所圖2所示。
通過以上代碼,可以防止產(chǎn)生一些意外錯誤。
3 尚需進一步解決的問題
本在線測試系統(tǒng),在組題、評分、考試時間控制等方面實現(xiàn)了網(wǎng)絡(luò)化與自動化,同時具有一定的安全措施,保證了在線測試的順利進行。但在自動組卷時,所抽取的試題在難易度分布方面還有不盡合理之處,尚需進一步改進完善,這也是我們下一步工作的努力方向。
4 結(jié)束語
本系統(tǒng)作為網(wǎng)絡(luò)教學軟件的一部分,充分利用便捷的校園網(wǎng)絡(luò),使學生隨時隨地通過計算機網(wǎng)絡(luò)進行自我測試,幫助學生鞏固學習成果,同時也使教師隨時了解學生對課程的掌握程度,利于進一步提高教學質(zhì)量,受到了廣大師生的歡迎。
參考文獻:
[1] 張固,汪曉平.ASP網(wǎng)絡(luò)應用系統(tǒng)典型模型開發(fā)實例解析[M].北京:人民郵電出版社,2004.
[2] 杜宏毅,鄭玄宜.完全接觸 ASP 之 VBScript [M].北京:電子工業(yè)出版社,2002.
[3] 韋群峰.基于ASP網(wǎng)上考試系統(tǒng)的設(shè)計與實現(xiàn)[J].寧波工程學院學報,2005,17(2):106-109.
[4] 楊志.Dreamweaver+ASP網(wǎng)絡(luò)編程[M].北京:電子工業(yè)出版社,2008.