袁志
摘 要:研究一種在線題庫(kù)錄入問(wèn)題的便捷方法,讓教師通過(guò)復(fù)制粘貼加上簡(jiǎn)單編輯即可完成各類試題錄入,同時(shí)又能滿足答題習(xí)慣。關(guān)鍵途徑包括三個(gè)部分:一是利用正則表達(dá)式,根據(jù)文本內(nèi)容自動(dòng)判別題型;二是根據(jù)題型對(duì)原始數(shù)據(jù)進(jìn)行轉(zhuǎn)換,生成包含表單的HTML段,為學(xué)生提供答題操作的接口;三是遠(yuǎn)程圖片的服務(wù)器端自動(dòng)存儲(chǔ)。用ASP.NET進(jìn)行了編程實(shí)現(xiàn),驗(yàn)證了可行性。
關(guān)鍵詞:在線題庫(kù);正則表達(dá)式;圖片本地化;ASP.NET
中圖分類號(hào):TP3 文獻(xiàn)標(biāo)識(shí)碼:A
1 引言(Instruction)
Web題庫(kù)對(duì)教學(xué)的支撐作用是明顯的,對(duì)于在線題庫(kù)建設(shè)的技術(shù)討論,集中在數(shù)據(jù)庫(kù)設(shè)計(jì)與自動(dòng)組卷技術(shù)[1],試題錄入方法的討論沒(méi)有得到應(yīng)重視。然而題庫(kù)建設(shè)工作量很大,除了技術(shù)開(kāi)發(fā)之外,試題錄入也是繁重的工作。
題庫(kù)的主體用戶分為兩種角色:教師和學(xué)生。從學(xué)生的角度,有一些答題操作已經(jīng)形成習(xí)慣,比如:?jiǎn)芜x題使用單選按鈕,多選題使用復(fù)選按鈕,填空題在下劃線上方填寫字符,簡(jiǎn)答題在空白處填寫大段文本。為了滿足這些習(xí)慣,現(xiàn)有的做法是讓教師在錄入試題時(shí),對(duì)每一種題型進(jìn)行不同的錄入操作,比如為選擇題分若干步添加若干不同的選項(xiàng),為填空題插入表單控件等等,這些方法雖然從技術(shù)上是可行的,但教師的工作過(guò)程繁瑣,直接影響到了題庫(kù)建設(shè)的效率。
本文研究題庫(kù)的便捷錄入方法,使教師可以通過(guò)復(fù)制粘貼加簡(jiǎn)單的文本編輯即可完成題庫(kù)錄入,所有的題型錄入方法是一致的,不需要考慮題型之間的差異。為此要解決三個(gè)問(wèn)題關(guān)鍵問(wèn)題:
問(wèn)題一:題型的自動(dòng)判別問(wèn)題。對(duì)于一段文本,要從其內(nèi)容自動(dòng)判別其題型。
問(wèn)題二:答題樣式的自動(dòng)生成問(wèn)題。根據(jù)題型對(duì)文本進(jìn)行轉(zhuǎn)換,使之呈現(xiàn)為不同的答題操作視圖。
問(wèn)題三:圖片的服務(wù)器端自動(dòng)存儲(chǔ)問(wèn)題。復(fù)制粘貼的內(nèi)容可能包括遠(yuǎn)程圖片鏈接,鏈接的數(shù)據(jù)源要自動(dòng)存放到題庫(kù)服務(wù)器,使題庫(kù)系統(tǒng)離開(kāi)遠(yuǎn)程資源也可獨(dú)立運(yùn)行。
2 自動(dòng)判別題型(Automatic identification topic of
question)
正則表達(dá)式可用來(lái)處理有規(guī)律可循的字符串,在文獻(xiàn)元數(shù)據(jù)提取[2]、Web信息提取[3]等方面得到廣泛應(yīng)用,本文用正則表達(dá)式來(lái)進(jìn)行題型自動(dòng)識(shí)別。
本文只討論單選題和單項(xiàng)填空題,其余題型完全可以在此基礎(chǔ)上擴(kuò)展。不妨約定,在教師錄入試題時(shí),單選題必然存在A、B、C、D等四個(gè)選項(xiàng),填空題的待填部分用任意長(zhǎng)度的下劃線作為占位符。試題存放在數(shù)據(jù)庫(kù)中,為了避開(kāi)不同DBMS的技術(shù)細(xì)節(jié)差異,采用XML文件描述存儲(chǔ)格式:
<?xml version="1.0" encoding="gb2312"?>
計(jì)算機(jī)網(wǎng)絡(luò)的OSI參考模型中,負(fù)責(zé)端到端的數(shù)據(jù)傳輸控制的功能位于( )。
A.物理層 B.數(shù)據(jù)鏈路層 C.網(wǎng)絡(luò)層 D.傳輸層
在計(jì)算機(jī)網(wǎng)絡(luò)的OSI參考模型中,負(fù)責(zé)端到端的數(shù)據(jù)傳輸控制的功能位于_______層。
以上XML文件中,Lesson元素對(duì)應(yīng)課程,Category元素對(duì)應(yīng)知識(shí)點(diǎn),Problem元素對(duì)應(yīng)試題,Question元素對(duì)應(yīng)試題中的問(wèn)題,依次呈包含關(guān)系。Problem元素中除了Question元素之外,還可以包括難度系數(shù)、參考答案和問(wèn)題解析等等,本文只關(guān)注Question元素??梢钥吹?,題型是問(wèn)題文本隱式包含的,可以通過(guò)文本的規(guī)則來(lái)自動(dòng)判斷題型。
簡(jiǎn)單起見(jiàn),可以將上述兩種題型的正則表達(dá)式描述如下,這兩個(gè)表達(dá)式當(dāng)然可以寫的更為精確。
單選題的正則式:(.*)(A.*)(B.*)(C.*)(D.*)
填空題的正則式:(.*)(_{3,})(.*)
3 自動(dòng)生成答題界面(Automatic generation the UI
for answering)
根據(jù)自動(dòng)判斷所得的題型,在答題界面對(duì)Question部分生成HTML片段,其中包含的HTML表單控件用于提供答題操作接口。具體地說(shuō):?jiǎn)芜x題生成單選按鈕組,供學(xué)生選擇;填空題生成輸入框,供學(xué)生填寫答案。每個(gè)表單控件用ProblemID來(lái)標(biāo)記,使得提交答案與題號(hào)建立聯(lián)系,為后續(xù)技術(shù)處理提供方便。
兩種轉(zhuǎn)換分別由下面的兩個(gè)函數(shù)來(lái)實(shí)現(xiàn)。
//選擇題文本轉(zhuǎn)換
string transfer2SelectionHtml(int problemID)
{
string question = ""; //取出question……略
string pattern = @"(.*)(A.*)(B.*)(C.*)(D.*)"; //正則表達(dá)式模式
//文本替換模式,生成一段問(wèn)題和一個(gè)單選按鈕組,其Name屬性等于ProblemID
//$1,$2,$3,$4,$5分別表示匹配的組
string replacement = string.Format(@"
$1
$2
$3endprint
$4
$5", problemID);
Regex regex = new Regex(pattern); //生成正則表達(dá)式
Match match= regex.Matches(question); //匹配
String result = match.Result(replacement); //轉(zhuǎn)換
return result;
}
//填空題文本轉(zhuǎn)換
string transfer2BlankHtml(int problemID)
{
string question = "";
string result = "";
string pattern = @"(.*)(_{3,})(.*)";
string replacement1 = string.Format(@"$1$3",probelmID);
Regex regex = new Regex(pattern);
MatchCollection matches = regex.Matches(question);
foreach (Match match in matches)
{
result = match.Result(replacement1);
}
return result;
}
4 遠(yuǎn)程圖片的自動(dòng)本地化(Automatic locationize
remote images)
在錄入試題時(shí),用戶經(jīng)常從其他網(wǎng)站中復(fù)制一段內(nèi)容粘貼,從HTML的角度來(lái)講,復(fù)制的內(nèi)容包括純文本和圖片鏈接地址。純文本保存到題庫(kù)服務(wù)器是沒(méi)有問(wèn)題的,而圖片鏈接地址保存到題庫(kù)服務(wù)器可能造成問(wèn)題,這是因?yàn)殒溄釉纯赡軙?huì)消失。因此,遠(yuǎn)程圖片應(yīng)該保存到題庫(kù)服務(wù)器。
人工操作方法是先將遠(yuǎn)程圖片下載到用戶主機(jī),然后再上傳到服務(wù)器,然后利用在線編輯工具編輯試題,在試題中加入服務(wù)器端的圖片鏈接,這種方法頗為費(fèi)時(shí)費(fèi)力。這里討論的是自動(dòng)存儲(chǔ)技術(shù)。
當(dāng)試題中包含了遠(yuǎn)程網(wǎng)站上的一個(gè)圖片鏈接時(shí),其Question元素必然包含類似以下的HTML段落,可以用正則表達(dá)式來(lái)捕獲。
我們所需要做的工作是:錄入的數(shù)據(jù)提交時(shí),由服務(wù)器端程序向鏈接源發(fā)送請(qǐng)求,將獲取的圖片數(shù)據(jù)保存到服務(wù)器的文件系統(tǒng)中,并對(duì)應(yīng)修改鏈接地址。核心函數(shù)如下:
void saveImage(string uri)
{
int index = uri.LastIndexOf("/");
string filename = Server.MapPath("/Files/") + uri.Substring(index + 1);
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(uri);
req.Method = "GET";
using (WebResponse res = req.GetResponse())
{
byte[] buff = new byte[1024];
Stream r = res.GetResponseStream();
FileStream w = new FileStream(filename, FileMode.Create);
int byteCount = 0;
while ((byteCount = r.Read(buff, 0, buff.Length)) > 0)
{
w.Write(buff, 0, byteCount);
}
r.Close();
w.Close();
}
}
5 示例(Example)
我們開(kāi)發(fā)了一個(gè)“計(jì)算機(jī)軟件水平(資格)考試在線練習(xí)網(wǎng)站”,該網(wǎng)站的主要功能是題庫(kù)維護(hù)和在線練習(xí),在該網(wǎng)站中采用本文所述的方法,大大減小了題庫(kù)錄入的工作量。舉一個(gè)選擇題為例,從某網(wǎng)站復(fù)制2013年的網(wǎng)絡(luò)工程師考試的一道選擇題,錄入操作界面和答題界面如圖1和圖2。
圖1 試題錄入界面
Fig.1 The test question input interface
由圖1可以看出,對(duì)于一道單選題,在錄入的時(shí)候直接復(fù)制粘貼即可完成錄入操作,不必分項(xiàng)填寫待選項(xiàng)。
圖2 單選題的答題界面
Fig.2 The answer interface
由圖2可以看出,該選擇題的問(wèn)題文本自動(dòng)轉(zhuǎn)換為用戶的習(xí)慣答題方式,用單選按鈕來(lái)答題,其中的圖片源地址指向題庫(kù)服務(wù)器上圖片文件,不會(huì)因?yàn)樵季W(wǎng)站的變化而丟失。
6 結(jié)論(Conclusion)
本文敘述的題庫(kù)快捷錄入方法,使教師可以采用一致性的方法完成大多數(shù)類型的試題錄入,教師的操作只有復(fù)制粘貼加上簡(jiǎn)單的文本編輯,省去復(fù)雜的操作流程,大大提高了試題錄入效率。該方法所依賴的技術(shù),一是利用正則表達(dá)式對(duì)試題進(jìn)行匹配和轉(zhuǎn)換,將其轉(zhuǎn)換為HTML片段輸出到頁(yè)面,二是采用后臺(tái)自動(dòng)運(yùn)行的持久化技術(shù)實(shí)現(xiàn)圖片的服務(wù)器端存儲(chǔ)。
下一步要做的工作:試題錄入時(shí)常常有重復(fù)錄入的可能性,依靠人工檢索是比較困難的,計(jì)劃采用以編輯距離為度量的試題相似度檢查機(jī)制,進(jìn)一步提高題庫(kù)錄入的便利度。
參考文獻(xiàn)(References)
[1] 董園.在線考試系統(tǒng)中的題庫(kù)建設(shè)相關(guān)技術(shù)的研究[J].電子世
界,2013,17:112-115.
[2] 曹俊,萬(wàn)曉云,廖順保.基于正則表達(dá)式批量提取CNKI文獻(xiàn)元
數(shù)據(jù)技術(shù)探究[J].圖書(shū)情報(bào)工作,2010,10(19):111-114.
[3] 胡軍偉,秦奕青,張偉.正則表達(dá)式在Web信息抽取中的應(yīng)用
[J].北京信息科技大學(xué)學(xué)報(bào),2011,12(6):86-89.
作者簡(jiǎn)介:
袁 志(1971-),男,碩士,副教授.研究領(lǐng)域:網(wǎng)絡(luò)與信息
系統(tǒng).endprint
摘 要:研究一種在線題庫(kù)錄入問(wèn)題的便捷方法,讓教師通過(guò)復(fù)制粘貼加上簡(jiǎn)單編輯即可完成各類試題錄入,同時(shí)又能滿足答題習(xí)慣。關(guān)鍵途徑包括三個(gè)部分:一是利用正則表達(dá)式,根據(jù)文本內(nèi)容自動(dòng)判別題型;二是根據(jù)題型對(duì)原始數(shù)據(jù)進(jìn)行轉(zhuǎn)換,生成包含表單的HTML段,為學(xué)生提供答題操作的接口;三是遠(yuǎn)程圖片的服務(wù)器端自動(dòng)存儲(chǔ)。用ASP.NET進(jìn)行了編程實(shí)現(xiàn),驗(yàn)證了可行性。
關(guān)鍵詞:在線題庫(kù);正則表達(dá)式;圖片本地化;ASP.NET
中圖分類號(hào):TP3 文獻(xiàn)標(biāo)識(shí)碼:A
1 引言(Instruction)
Web題庫(kù)對(duì)教學(xué)的支撐作用是明顯的,對(duì)于在線題庫(kù)建設(shè)的技術(shù)討論,集中在數(shù)據(jù)庫(kù)設(shè)計(jì)與自動(dòng)組卷技術(shù)[1],試題錄入方法的討論沒(méi)有得到應(yīng)重視。然而題庫(kù)建設(shè)工作量很大,除了技術(shù)開(kāi)發(fā)之外,試題錄入也是繁重的工作。
題庫(kù)的主體用戶分為兩種角色:教師和學(xué)生。從學(xué)生的角度,有一些答題操作已經(jīng)形成習(xí)慣,比如:?jiǎn)芜x題使用單選按鈕,多選題使用復(fù)選按鈕,填空題在下劃線上方填寫字符,簡(jiǎn)答題在空白處填寫大段文本。為了滿足這些習(xí)慣,現(xiàn)有的做法是讓教師在錄入試題時(shí),對(duì)每一種題型進(jìn)行不同的錄入操作,比如為選擇題分若干步添加若干不同的選項(xiàng),為填空題插入表單控件等等,這些方法雖然從技術(shù)上是可行的,但教師的工作過(guò)程繁瑣,直接影響到了題庫(kù)建設(shè)的效率。
本文研究題庫(kù)的便捷錄入方法,使教師可以通過(guò)復(fù)制粘貼加簡(jiǎn)單的文本編輯即可完成題庫(kù)錄入,所有的題型錄入方法是一致的,不需要考慮題型之間的差異。為此要解決三個(gè)問(wèn)題關(guān)鍵問(wèn)題:
問(wèn)題一:題型的自動(dòng)判別問(wèn)題。對(duì)于一段文本,要從其內(nèi)容自動(dòng)判別其題型。
問(wèn)題二:答題樣式的自動(dòng)生成問(wèn)題。根據(jù)題型對(duì)文本進(jìn)行轉(zhuǎn)換,使之呈現(xiàn)為不同的答題操作視圖。
問(wèn)題三:圖片的服務(wù)器端自動(dòng)存儲(chǔ)問(wèn)題。復(fù)制粘貼的內(nèi)容可能包括遠(yuǎn)程圖片鏈接,鏈接的數(shù)據(jù)源要自動(dòng)存放到題庫(kù)服務(wù)器,使題庫(kù)系統(tǒng)離開(kāi)遠(yuǎn)程資源也可獨(dú)立運(yùn)行。
2 自動(dòng)判別題型(Automatic identification topic of
question)
正則表達(dá)式可用來(lái)處理有規(guī)律可循的字符串,在文獻(xiàn)元數(shù)據(jù)提取[2]、Web信息提取[3]等方面得到廣泛應(yīng)用,本文用正則表達(dá)式來(lái)進(jìn)行題型自動(dòng)識(shí)別。
本文只討論單選題和單項(xiàng)填空題,其余題型完全可以在此基礎(chǔ)上擴(kuò)展。不妨約定,在教師錄入試題時(shí),單選題必然存在A、B、C、D等四個(gè)選項(xiàng),填空題的待填部分用任意長(zhǎng)度的下劃線作為占位符。試題存放在數(shù)據(jù)庫(kù)中,為了避開(kāi)不同DBMS的技術(shù)細(xì)節(jié)差異,采用XML文件描述存儲(chǔ)格式:
<?xml version="1.0" encoding="gb2312"?>
計(jì)算機(jī)網(wǎng)絡(luò)的OSI參考模型中,負(fù)責(zé)端到端的數(shù)據(jù)傳輸控制的功能位于( )。
A.物理層 B.數(shù)據(jù)鏈路層 C.網(wǎng)絡(luò)層 D.傳輸層
在計(jì)算機(jī)網(wǎng)絡(luò)的OSI參考模型中,負(fù)責(zé)端到端的數(shù)據(jù)傳輸控制的功能位于_______層。
以上XML文件中,Lesson元素對(duì)應(yīng)課程,Category元素對(duì)應(yīng)知識(shí)點(diǎn),Problem元素對(duì)應(yīng)試題,Question元素對(duì)應(yīng)試題中的問(wèn)題,依次呈包含關(guān)系。Problem元素中除了Question元素之外,還可以包括難度系數(shù)、參考答案和問(wèn)題解析等等,本文只關(guān)注Question元素??梢钥吹?,題型是問(wèn)題文本隱式包含的,可以通過(guò)文本的規(guī)則來(lái)自動(dòng)判斷題型。
簡(jiǎn)單起見(jiàn),可以將上述兩種題型的正則表達(dá)式描述如下,這兩個(gè)表達(dá)式當(dāng)然可以寫的更為精確。
單選題的正則式:(.*)(A.*)(B.*)(C.*)(D.*)
填空題的正則式:(.*)(_{3,})(.*)
3 自動(dòng)生成答題界面(Automatic generation the UI
for answering)
根據(jù)自動(dòng)判斷所得的題型,在答題界面對(duì)Question部分生成HTML片段,其中包含的HTML表單控件用于提供答題操作接口。具體地說(shuō):?jiǎn)芜x題生成單選按鈕組,供學(xué)生選擇;填空題生成輸入框,供學(xué)生填寫答案。每個(gè)表單控件用ProblemID來(lái)標(biāo)記,使得提交答案與題號(hào)建立聯(lián)系,為后續(xù)技術(shù)處理提供方便。
兩種轉(zhuǎn)換分別由下面的兩個(gè)函數(shù)來(lái)實(shí)現(xiàn)。
//選擇題文本轉(zhuǎn)換
string transfer2SelectionHtml(int problemID)
{
string question = ""; //取出question……略
string pattern = @"(.*)(A.*)(B.*)(C.*)(D.*)"; //正則表達(dá)式模式
//文本替換模式,生成一段問(wèn)題和一個(gè)單選按鈕組,其Name屬性等于ProblemID
//$1,$2,$3,$4,$5分別表示匹配的組
string replacement = string.Format(@"
$1
$2
$3endprint
摘 要:研究一種在線題庫(kù)錄入問(wèn)題的便捷方法,讓教師通過(guò)復(fù)制粘貼加上簡(jiǎn)單編輯即可完成各類試題錄入,同時(shí)又能滿足答題習(xí)慣。關(guān)鍵途徑包括三個(gè)部分:一是利用正則表達(dá)式,根據(jù)文本內(nèi)容自動(dòng)判別題型;二是根據(jù)題型對(duì)原始數(shù)據(jù)進(jìn)行轉(zhuǎn)換,生成包含表單的HTML段,為學(xué)生提供答題操作的接口;三是遠(yuǎn)程圖片的服務(wù)器端自動(dòng)存儲(chǔ)。用ASP.NET進(jìn)行了編程實(shí)現(xiàn),驗(yàn)證了可行性。
關(guān)鍵詞:在線題庫(kù);正則表達(dá)式;圖片本地化;ASP.NET
中圖分類號(hào):TP3 文獻(xiàn)標(biāo)識(shí)碼:A
1 引言(Instruction)
Web題庫(kù)對(duì)教學(xué)的支撐作用是明顯的,對(duì)于在線題庫(kù)建設(shè)的技術(shù)討論,集中在數(shù)據(jù)庫(kù)設(shè)計(jì)與自動(dòng)組卷技術(shù)[1],試題錄入方法的討論沒(méi)有得到應(yīng)重視。然而題庫(kù)建設(shè)工作量很大,除了技術(shù)開(kāi)發(fā)之外,試題錄入也是繁重的工作。
題庫(kù)的主體用戶分為兩種角色:教師和學(xué)生。從學(xué)生的角度,有一些答題操作已經(jīng)形成習(xí)慣,比如:?jiǎn)芜x題使用單選按鈕,多選題使用復(fù)選按鈕,填空題在下劃線上方填寫字符,簡(jiǎn)答題在空白處填寫大段文本。為了滿足這些習(xí)慣,現(xiàn)有的做法是讓教師在錄入試題時(shí),對(duì)每一種題型進(jìn)行不同的錄入操作,比如為選擇題分若干步添加若干不同的選項(xiàng),為填空題插入表單控件等等,這些方法雖然從技術(shù)上是可行的,但教師的工作過(guò)程繁瑣,直接影響到了題庫(kù)建設(shè)的效率。
本文研究題庫(kù)的便捷錄入方法,使教師可以通過(guò)復(fù)制粘貼加簡(jiǎn)單的文本編輯即可完成題庫(kù)錄入,所有的題型錄入方法是一致的,不需要考慮題型之間的差異。為此要解決三個(gè)問(wèn)題關(guān)鍵問(wèn)題:
問(wèn)題一:題型的自動(dòng)判別問(wèn)題。對(duì)于一段文本,要從其內(nèi)容自動(dòng)判別其題型。
問(wèn)題二:答題樣式的自動(dòng)生成問(wèn)題。根據(jù)題型對(duì)文本進(jìn)行轉(zhuǎn)換,使之呈現(xiàn)為不同的答題操作視圖。
問(wèn)題三:圖片的服務(wù)器端自動(dòng)存儲(chǔ)問(wèn)題。復(fù)制粘貼的內(nèi)容可能包括遠(yuǎn)程圖片鏈接,鏈接的數(shù)據(jù)源要自動(dòng)存放到題庫(kù)服務(wù)器,使題庫(kù)系統(tǒng)離開(kāi)遠(yuǎn)程資源也可獨(dú)立運(yùn)行。
2 自動(dòng)判別題型(Automatic identification topic of
question)
正則表達(dá)式可用來(lái)處理有規(guī)律可循的字符串,在文獻(xiàn)元數(shù)據(jù)提取[2]、Web信息提取[3]等方面得到廣泛應(yīng)用,本文用正則表達(dá)式來(lái)進(jìn)行題型自動(dòng)識(shí)別。
本文只討論單選題和單項(xiàng)填空題,其余題型完全可以在此基礎(chǔ)上擴(kuò)展。不妨約定,在教師錄入試題時(shí),單選題必然存在A、B、C、D等四個(gè)選項(xiàng),填空題的待填部分用任意長(zhǎng)度的下劃線作為占位符。試題存放在數(shù)據(jù)庫(kù)中,為了避開(kāi)不同DBMS的技術(shù)細(xì)節(jié)差異,采用XML文件描述存儲(chǔ)格式:
<?xml version="1.0" encoding="gb2312"?>
計(jì)算機(jī)網(wǎng)絡(luò)的OSI參考模型中,負(fù)責(zé)端到端的數(shù)據(jù)傳輸控制的功能位于( )。
A.物理層 B.數(shù)據(jù)鏈路層 C.網(wǎng)絡(luò)層 D.傳輸層
在計(jì)算機(jī)網(wǎng)絡(luò)的OSI參考模型中,負(fù)責(zé)端到端的數(shù)據(jù)傳輸控制的功能位于_______層。
以上XML文件中,Lesson元素對(duì)應(yīng)課程,Category元素對(duì)應(yīng)知識(shí)點(diǎn),Problem元素對(duì)應(yīng)試題,Question元素對(duì)應(yīng)試題中的問(wèn)題,依次呈包含關(guān)系。Problem元素中除了Question元素之外,還可以包括難度系數(shù)、參考答案和問(wèn)題解析等等,本文只關(guān)注Question元素??梢钥吹?,題型是問(wèn)題文本隱式包含的,可以通過(guò)文本的規(guī)則來(lái)自動(dòng)判斷題型。
簡(jiǎn)單起見(jiàn),可以將上述兩種題型的正則表達(dá)式描述如下,這兩個(gè)表達(dá)式當(dāng)然可以寫的更為精確。
單選題的正則式:(.*)(A.*)(B.*)(C.*)(D.*)
填空題的正則式:(.*)(_{3,})(.*)
3 自動(dòng)生成答題界面(Automatic generation the UI
for answering)
根據(jù)自動(dòng)判斷所得的題型,在答題界面對(duì)Question部分生成HTML片段,其中包含的HTML表單控件用于提供答題操作接口。具體地說(shuō):?jiǎn)芜x題生成單選按鈕組,供學(xué)生選擇;填空題生成輸入框,供學(xué)生填寫答案。每個(gè)表單控件用ProblemID來(lái)標(biāo)記,使得提交答案與題號(hào)建立聯(lián)系,為后續(xù)技術(shù)處理提供方便。
兩種轉(zhuǎn)換分別由下面的兩個(gè)函數(shù)來(lái)實(shí)現(xiàn)。
//選擇題文本轉(zhuǎn)換
string transfer2SelectionHtml(int problemID)
{
string question = ""; //取出question……略
string pattern = @"(.*)(A.*)(B.*)(C.*)(D.*)"; //正則表達(dá)式模式
//文本替換模式,生成一段問(wèn)題和一個(gè)單選按鈕組,其Name屬性等于ProblemID
//$1,$2,$3,$4,$5分別表示匹配的組
string replacement = string.Format(@"
$1
$2
$3endprint