翁健高 李 文
(廣西大學(xué)計(jì)算機(jī)與電子信息學(xué)院,廣西 南寧 530004)
文本型試卷隨機(jī)組卷系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
翁健高 李 文
(廣西大學(xué)計(jì)算機(jī)與電子信息學(xué)院,廣西 南寧 530004)
隨著高校教學(xué)改革的深化,目前的高校的各門(mén)課程基本上都采用試卷庫(kù)的方式進(jìn)行組卷考試,這樣能夠更全面地衡量學(xué)生對(duì)每門(mén)功課的掌握程度,也更體現(xiàn)了教考分離的核心本質(zhì)。目前考試試卷的組卷方式普遍采用任課教師預(yù)先組好每一份試題,考試時(shí)再隨機(jī)抽取任一份試卷的方式或采用市面上的數(shù)據(jù)庫(kù)隨機(jī)組卷系統(tǒng)的方式進(jìn)行組卷,而文本型試卷隨機(jī)組卷系統(tǒng)利用教師提交的WORD文檔組成的試題庫(kù)直接轉(zhuǎn)換為文本文檔,然后使用此文檔類(lèi)型的試題庫(kù)直接隨機(jī)生成考試試卷,使試題庫(kù)隨機(jī)組卷實(shí)現(xiàn)簡(jiǎn)單化、易用性和便利性。
試題庫(kù);文本文檔;隨機(jī)組卷
隨著高校教學(xué)改革的深化,目前的高校的各門(mén)課程基本上都采用試卷庫(kù)的方式進(jìn)行組卷考試,這樣對(duì)學(xué)生會(huì)更公平、更能全面衡量學(xué)生所掌握的知識(shí)。
目前試卷的組卷方式普遍采用任課教師預(yù)先組好每一份試卷,考試時(shí)再隨機(jī)抽取任一份試卷的方式或采用市面上的數(shù)據(jù)庫(kù)隨機(jī)組卷系統(tǒng)的方式進(jìn)行組卷,前者隨機(jī)性不高,而數(shù)據(jù)庫(kù)類(lèi)型的隨機(jī)組卷系統(tǒng)在建立試卷庫(kù)時(shí)錄入量大,給建立試卷庫(kù)帶來(lái)了很大的難度。
“文本型試卷庫(kù)隨機(jī)組卷系統(tǒng)” 能夠避免以上兩種組卷方式的缺點(diǎn),只要將已上交的WORD文檔類(lèi)型的試卷庫(kù)轉(zhuǎn)換為文本文檔,就能實(shí)現(xiàn)試卷庫(kù)的隨機(jī)組卷工作,不需要再做設(shè)置,也不需要錄入,從而大大地減輕了教務(wù)人員或教師的試題錄入工作量。該系統(tǒng)的缺點(diǎn)是只適用于能將WORD文檔并順利轉(zhuǎn)換為文本文檔的試卷庫(kù),對(duì)于有數(shù)學(xué)公式的試卷庫(kù)不適用。
目前,高校任課教師上交的試卷庫(kù)一般都為WORD文檔,如果需要使用本系統(tǒng)來(lái)隨成生成考試試卷,必須按照下列規(guī)則來(lái)構(gòu)建試卷庫(kù),系統(tǒng)才能順利穩(wěn)定地運(yùn)行。
1.試卷中每大類(lèi)型題目的標(biāo)號(hào)必須為“一、二、 三、四、… ”(如“一、填空題,二、選擇題.....”)設(shè)置,否則不能正確工作。試卷庫(kù)最多能設(shè)置十大類(lèi)型的題目,如果超過(guò)十個(gè)類(lèi)型的題目量,則十大類(lèi)型題以后的題目系統(tǒng)不作組卷操作;如果試卷庫(kù)的題目類(lèi)型確實(shí)超過(guò)十大類(lèi),則可將十大類(lèi)型后面的題目放在另一個(gè)WORD文檔中,組卷時(shí)分別組卷,然后將組出的兩份試卷合并即可。
2.每大類(lèi)型題目的每小題的標(biāo)號(hào)必須如“1、2、……999.”設(shè)置,每大類(lèi)型題目最多能設(shè)置999小題,否則不能正確工作。
3.如果小題內(nèi)還有分標(biāo)題,則分標(biāo)題的標(biāo)號(hào)可以設(shè)置為①、②、③、④…或Ⅰ、Ⅱ、Ⅲ、Ⅳ…或⑴、⑵、⑶、⑷…或 A、B、C、D…或 1)、2)、3)、4)…。
4.每小題的排列可以換行,也可以包含有空行,系統(tǒng)都能正確分辨。
考慮到系統(tǒng)的通用性,系統(tǒng)應(yīng)包含試卷庫(kù)試題類(lèi)型分析、試題抽取和試卷組卷三部分。界面設(shè)計(jì)應(yīng)包括輸入將要生成試卷的試卷名稱(chēng),試卷庫(kù)路徑選擇、試卷文件輸出路徑選擇、試題抽取和試卷組卷五個(gè)部分。
1.抽題隨機(jī)性的實(shí)現(xiàn)
隨機(jī)性是該系統(tǒng)的靈魂,只有實(shí)現(xiàn)對(duì)每大題的所有小題抽取的隨機(jī)均等抽取的機(jī)會(huì),才能真正體現(xiàn)系統(tǒng)的優(yōu)越性。目前在編程過(guò)程中產(chǎn)生隨機(jī)數(shù),最常用的方法是使用隨機(jī)函數(shù),但該函數(shù)是根據(jù)數(shù)學(xué)迭代的方式產(chǎn)生,雖然能隨機(jī)產(chǎn)生各不相同的隨機(jī)數(shù),但分布仍然太集中,所以本系統(tǒng)采用由系統(tǒng)時(shí)鐘的方法產(chǎn)生隨機(jī)數(shù),這樣每大題內(nèi)所有小題都會(huì)最大限度地獲得均等隨機(jī)抽取的機(jī)會(huì),保證了系統(tǒng)的隨機(jī)性。實(shí)現(xiàn)核心代碼為:
For i =1 To m
a(i) = i
Next i
100: start = Second(Time) Mod m
If start = 0 Then GoTo 100
For w =1 To 10
Next w
120: step = Second(Time) Mod m
If step = 0 Or step =1 Then GoTo 120
j = 1
Do
b1(k, j) = a(start)
i = start
For h = i +1 To m
a(h - 1) = a(h)
Next h
If (start + step) < m Then
start = (start + step) Mod m - 1
Else
start = (start + step) Mod m
End If
If start = 0 Then start = m
m = m - 1
j = j + 1
Loop Until j > n
End If
其中DO循環(huán)的功能是過(guò)濾掉已經(jīng)選取過(guò)的題目被重新選擇的情況。
2.試卷庫(kù)題型及題量分析
試卷庫(kù)中包含了題目類(lèi)型和每類(lèi)型的題目數(shù)量,組卷的目的就是能從每個(gè)類(lèi)型的題目中抽取一定數(shù)量的題目。為此,系統(tǒng)必須先分析試卷庫(kù),確定試卷庫(kù)中所包含的題目類(lèi)型及每類(lèi)型題的小題數(shù)量和每類(lèi)型題目在文檔中的位置,為產(chǎn)生隨機(jī)題目和試題抽取提供依據(jù)。實(shí)現(xiàn)核心代碼為:
Do While Not EOF(1)
On Error Resume Next
Line Input #1, NextLine
ftotal = ftotal + 1
If InStr(Trim(NextLine), "一、") Then
tmname(itypenum) = NextLine
ftotalh(itypenum) = ftotal
Do While InStr(Trim(NextLine), "二、") = 0 And Not EOF(1)
Line Input #1, NextLine
ftotal = ftotal + 1
If InStr(Trim(NextLine), "、") <> 0 Then
yestm = Left(Trim(NextLine),InStr(Trim(NextLine), "、") - 1)
If yestm > 0 And yestm <= 999 Then
tmnum(itypenum) = tmnum(itypenum) + 1
yestm = 0
End If
End If
Loop
itypenum = itypenum + 1
End If
Loop
3.試題抽取
試卷庫(kù)的構(gòu)成比較復(fù)雜。首先,試卷庫(kù)主要由題目類(lèi)型和各小題組成,小題中又包含有小標(biāo)題,每小題有可能包含多行文字,也可能包含有空行。如何區(qū)分每小題的讀取完整并過(guò)濾掉有可能出現(xiàn)的空行,是本系統(tǒng)的難點(diǎn)和關(guān)鍵點(diǎn)。為此,完整讀取選取的每小題并過(guò)濾掉空行的核心代碼為:
Do While Not EOF(1)
On Error Resume Next
Line Input #1, NextLine
readh = readh + 1
If readh = btwz Then
If NextLine <> "" Then
Lines = ""
Lines = Lines & NextLine & Chr(13)
Do While Not EOF(1)
Line Input #1, NextLine
wq = 0
wq = Left(Trim(NextLine),InStr(Trim(NextLine), "、") - 1)
If wq = 0 Then
wb = Left(Trim(NextLine),InStr(Trim(NextLine), "、") - 1)
If wb <> "一" And wb <> "二" And
wb <> "三" And wb <> "四" And
wb <> "五" And wb <> "六" And
wb <> "七" And wb <> "八" And
wb <> "九" And wb <> "十" Then
Lines = Lines & NextLine & Chr(13)
End If
Else
Exit Do
End If
Loop
readh = 0
Close #1
Exit Function
LOOP
4.試卷組卷
主要是把試題抽取中的變量值寫(xiě)入WORD文檔,從而生成完整的試卷,具體實(shí)現(xiàn)為:
Open txtdestination For Output As #1
Print #1, lines2
Close #1
Txtdestination為試卷的保存路徑。
文本型試卷隨機(jī)組卷系統(tǒng)的研究成功,解決了高校廣大教師試卷庫(kù)組卷的難題,簡(jiǎn)便易用的操作,使每位教師都能方便利用該系統(tǒng)進(jìn)行隨機(jī)組卷,從而能更全面、更客觀地含量學(xué)生所掌握的知識(shí)。
[1] 王雍均.試題庫(kù)系統(tǒng)智能組卷技術(shù)的研究[J].長(zhǎng)江大學(xué)學(xué)報(bào)(自然版),2006,34(3):56~58.
[2] 尹柯,甘志華.隨機(jī)選題算法的設(shè)計(jì)與實(shí)現(xiàn)[J].河南大學(xué)學(xué)報(bào),2004,34(1):91-93.
[3] 郭繼虎,李國(guó)宏,張金桐.利用VB6.0開(kāi)發(fā)化學(xué)試卷生成器[J].計(jì)算機(jī)與應(yīng)用化學(xué),2003,3:374-376.
[4] 王宇穎,侯爽,郭茂祖.題庫(kù)系統(tǒng)試卷自動(dòng)生成算法研究[J].哈爾濱工業(yè)大學(xué)學(xué)報(bào),2003.35(3):342-346.
[5] 惠曉實(shí),王凱航.一種基于Web技術(shù)的網(wǎng)絡(luò)數(shù)據(jù)庫(kù)系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用與研究,2000,17:84-97.
G647
A
1008-1151(2011)05-0052-02
2011-02-28
計(jì)算機(jī)應(yīng)用與軟件新技術(shù)
翁健高(1971-),男,廣西貴港人,廣西大學(xué)計(jì)算機(jī)與電子信息學(xué)院網(wǎng)絡(luò)中心實(shí)驗(yàn)師,研究方向?yàn)閃indows操作系統(tǒng)控制。