摘要:為了解決軟件開發中的重復開發問題,文章結合網絡課程中的自動化考試的特點,利用ASP作為開發工具,通過地址欄中參數傳遞方法,來實現軟件復用。
關鍵詞:網絡課程;自動化考試;參數傳遞;軟件復用
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2008)20-30308-04
Using Parameter Realize the Software Repeatment in WEB Roboticized Exam System
LI Cui-ping
(Guangdong Songshan Polytechnic College,Songshan 512126,China)
Abstract:In order to solve the problem of software development repeatment,this article combines the characteristic in the network course of roboticized exam ,using ASP as development tools,and using the method of parameter passes in address column,made the software repeatment come true.
Key words:network course;roboticized exam;parameter pass;software repeatment
1 引言
考試作為檢驗學生學習效果的一種重要手段,在很多學校和部門都會利用它來作為檢測和評價教學效果的手段。隨
著網絡的普及和使用,網絡課程的開發和應用得到很多高校的重視,使得很多高等學校把網絡課程作為教學建設的重要內容之一,網絡考試作為考試的一部分,在網絡課程教學環節中起到舉足輕重的作用。但由于各部門,各單位對考試系統的要求不同,通常需要根據不同的需要,開發適應不同要求的網絡考試系統,這不但給軟件開發增加了大量的工作量,而且大量的重復開發勢必浪費資源、人力和物力,那么能否有一種簡便,快速又可以重復利用的開發方法呢?當然有,下面我們以《英文導游》這門課程的網絡開發為例,著重分析以參數傳遞方式實現軟件復用的一些技術。
2 《英文導游》網絡考試系統需求分析
《英文導游》網絡考試系統包括兩個大的部分,中文筆試專項考試系統和英語口試專項題庫系統。
2.1 中文筆試專項考試系統
中文筆試專項題庫系統包括中文筆試單項訓練和考試,單項訓練包括:
(1)導游業務模擬測試
模擬訓練總分100分,包含單選題40個,每題1.5分;多選題10個,每題3分,多選或少選不得分;判斷題10題,每題1分。
(2)廣東導游基礎模擬測試
模擬測試總分100分,包含單選題30個,每題1分;多選題20個,每題3分,多選或少選不得分;判斷題10題,每題1分。
(3)全國導游基礎知識模擬測試
模擬測試總分100分,包含單選題20個,每題2分;多選題20個,每題3分,多選或少選不得分;判斷題10題,每題1分。
(4)政策法規模擬測試
模擬測試總分100分,包含單選題30個,每題2分;多選題10個,每題3分,多選或少選不得分;判斷題10題,每題1分。
中文考試系統是上述四個部分的組合:
(1)導游業務+政策法規試題
考試系統總分400分,包含單選題40個,每題4分;多選題20個,每題6分,多選或少選不得分;判斷題40題,每題3分。
(2)廣東導游基礎+全國導游試題
考試系統總分300分,包含單選題40個,每題3分;多選題20個,每題5分,多選或少選不得分;判斷題40題,每題2分。
2.2 英語口試題庫專項題庫系統
(1)英語口語模擬訓練
模擬測試總分100分,包含導游詞1篇,2個英譯漢,2個漢譯英,2個特殊問題應變題和2個導游規范服務知識服務題。
(2)英語口試考試系統
英語口試考試系統題目要求與英語口語模擬訓練相同。
上述系統其實分為兩個部分,訓練和考試,其結構如圖1所示。分析上述中文筆試部分可以看出,不管是考試還是訓練部分,題型都是三個:單選題、多選題和判斷題,只是題目數目和分值不相同,既然他們有共同的地方,考試系統就可以利用軟件復用技術。圖2為考試系統內容示意圖。
3 實現的幾個關鍵技術
在傳統的試題開發中,通常要根據不同的題型和題庫開發出不同的隨機出題程序和自動閱卷程序,如果有幾十套不同類型的試題,則需要開發幾十種不同的程序,這種設計思路勢必導致大量的浪費。針對這述問題,我們可以考慮使用ASP的地址欄參數和利用數組來傳遞參數實現軟件復用。其實現的基本思路是,通過地址欄傳遞每種題型的題目數和對應的分值,利用Session對象和數組來傳遞答案和進行自動閱卷。
3.1 數據庫的規劃與設計
首先創建一個名為KSXT.mdb的Access數據庫,用于保存考試過程中的試題及考試數據。如果使用的SQL Server2000作為后臺數據庫,可以使用如下語句來創建數據庫。
/*創建數據庫*/
CREATE DATABASE [KSXT]
GO
根據系統的需要,在數據庫需要定義中文筆試題庫、英文考試題庫,中文筆試題庫考試數據、英文口試考試數據等工作表,其中中文筆試題庫表主要包括四個字段:題目(備注型)、答案(文本)、題型(文本)、知識點(文本)、難度系統。英文考試題庫與中文筆試題庫表的結構基本相同。
3.2 利用Request對象接收網址后面傳遞的參數,以實現不同的功能
在ASP(ASP.NET)的程序設計中,通過使用 HTTP GET 方法或手工將表格的值添加到 URL,表格的值可以被附加在請求的 URL 之后。為了使程序具有通用性,在設計時,可以利用ASP在網址中傳遞參數的特性,實現不同功能[1],使用的基本格式是:
Http://<網址>/XXX.ASPX?<參數變量>=<參數值>
如果有多個參數,可用“”連接。這種參數可以通過Request.QueryString數據集合來接收,QueryString 集合獲取作為跟在請求的 URL 的問號后面的文本傳遞給 Web 服務器的值。
格式:Request.QueryString(\"參數變量\")
例如:upfile.asp?OP=1,將參數OP賦值為1,要獲取OP的值可以Request.QueryString對象,如。
GetOP=Request.QueryString(“OP”)。這樣就將參數OP的值傳遞到ASP文件的變量GetOP中了。
3.3 設計能夠實現隨機出不同題型的通用過程
考試系統的核心程序是實現隨機出卷和自動問卷的實現,要實現自動隨機出題,必須先要知道題庫中總共的題目數,需要出題的題目數,試題難度系數等因素,然后確定題目對應記錄的起始指針,隨機抽取指定的試題,并由此來實現隨機題。其實現的基本思路是通過過程實現出題,通過過程中的參數實現不同的題型、分數、題量等控制。
Sub SCST(TMS,TX,SSTH,ESTH,TKH)
(1)連接Web數據庫。
(2)打開試題對應的數據表。
(3)獲取數據庫中相應的試題總數目。
(4)確定隨機出題算法。
(5)獲取參數中的題型、題量、分數等參數。
(6)根據不同的題型、題量顯示隨機抽取的題目。
End Sub
其中參數TMS是表示要抽取的試題數,TX是表示要抽取的試題題型,SSTH是試題顯示的開始序列號,ESTH是試題顯示最后序列號,TKH表示的題庫序列號,隨機出題的核心代碼如下:
do while Not rs.eof
KSTMXX=KSTMXXrs(\"ID\")\",\"
KSTMTW=KSTMTWRS(\"答案\")\",\"
TS=TS+1
response.Write\"第\"Ts\"題:\"
DispChr=trim(Server.HTMLEncode(trim(rs(\"題目\"))))
DispChr=replace(dispchr,chr(13),\"<br>\")
DispChr=replace(dispchr,chr(32),\" \")
response.Write dispchr
dw=Server.HTMLEncode(rs.Fields(\"答案\").VALUE)%>
<b><font color=\"#FF0000\"><BR>
<% Select case TX
case \"單選題\"
動態生成A、B、C、D四個單選框。
<% case \"多選題\"
動態生成A、B、C、D、E、F六個復選框。
<% case \"判斷題\"
動態生成對、錯兩個單選框。
……
<%End Select
na=\"TW[\"TS\"]\"%>
</font></b><hrcolor=\"#E0EEFE\" />
<% IFTs>=ESTH then exit do
rs.Move bb
loop
在使用時只需要利用上述過程,首先接收地址欄傳遞的參數,然后再將接收的幾個關鍵參數傳遞到出題過程即可。例如:先利用Request對象接收地址欄中參數:
SS=CSng(Request.QueryString(\"SS\")) ’單選題目數量
SSF=CSng(Request.QueryString(\"SSF\"))’單選題目每題分數
MS=CSng(Request.QueryString(\"MS\")) ’多選題目數量
MSF=CSng(Request.QueryString(\"MSF\"))’多選題目每題分數
YN=CSng(Request.QueryString(\"YN\")) ’判斷題題目數
YNF=CSng(Request.QueryString(\"YNF\")) ’判斷題題目每題分數
TK=CSng(Request.QueryString(\"TK\"))’題庫號
然后,在需要顯示相應試題內容的位置調用過程,并將相應參數傳遞到不同的過程中,以實現不同題庫,不同題型的顯示,將答案保存于數據中,再將數組保存于SESSION對象中,通過SESSION對象可以將答案傳遞于任何頁面,便于以后的閱卷。下面的代碼將試題通過表格的單元格顯示。
<tr><td height=\"25\" align=\"left\"><p class=\"STYLE2\"><strong>一、單項選擇題(共<%=SS%>個題,每題<%=SSF%>分共<%=SS*SSF%>分)</strong></p></td>
</tr><tr>
<td align=\"left\"><%call SCST(SS,\"單選題\",1,SS,TKH)%>
<%DXTM=KSTMXX
DXTW=KSTMTW
Session(\"DXTM\")=Split(DXTM,\",\")
Session(\"DXTW\")=Split(DXTW,\",\")%>
</td></tr>
其效果如圖3所示。
3.4 試題自動閱卷的實現
試題自動閱卷的基本思路是,自動讀取隨機生成試卷頁面的用戶填寫的答案,將用戶答案對應試題號,與數據庫中對應試題答案進行比較,如果正確,則自動累計計分,并通過表格顯示卷卷結果,如圖4所示。有關自動閱卷程序的詳細實現,有關資料如文獻[2]、文獻[3]介紹比較多,這里不再贅述。
圖4 自動閱卷結果
4 結論
通過參數傳遞的思路來實現英語網絡課程的自動測試系統,即使試題量、試題內容、存放的數據庫、試題類型增減等因素發生變化時,不需要修改出題及閱卷程序,只需要修改連接到出題程序的地址欄參數就可以實現不同試題的出題和自動閱卷,決了重復開發和開發工作量,代碼復用率高,提高編程效率,現在已經在很多學科的考試中得到了較好的應用。
參考文獻:
[1] 劉友生,陳一平.用ASP實現Web數據庫的智能查詢[J].計算機應用與軟件,2005(02):39-40.
[2] 劉友生,趙輝,王麗莉.局域網內仿真在線考試系統的設計與實現[J].電腦學習,2004(02).
[3] 曹光忠,劉友生.軟件復用在網絡數據庫編程題自動化考試中的應用[J].計算機工程與設計,2006(21).
注:“本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文?!?/p>