摘 要:隨著計(jì)算機(jī)的應(yīng)用的普及和計(jì)算機(jī)技術(shù)的不斷發(fā)展,傳統(tǒng)的出卷方式已經(jīng)不能適應(yīng)當(dāng)前的需要,為了能更好的建立學(xué)校所需的試題庫,以及將老師從繁重出考卷的工作中解脫出來,開發(fā)了自動(dòng)組卷系統(tǒng)。本系統(tǒng)在前臺(tái)VB6.0為開發(fā)環(huán)境,后臺(tái)數(shù)據(jù)庫使用SQL2000下完成的。本系統(tǒng)能夠獲取所需要的數(shù)據(jù)庫,在題庫管理模塊中,能對(duì)單選題、多選題、填空題、簡答題、計(jì)算題進(jìn)行管理,最后根據(jù)出卷教師的設(shè)定生成相應(yīng)的試卷。
關(guān)鍵詞:自動(dòng)組卷;數(shù)據(jù)庫;題庫管理;SQL SERVER
中圖分類號(hào):TP311.13
系統(tǒng)研發(fā)的起點(diǎn)是系統(tǒng)設(shè)計(jì),關(guān)系到系統(tǒng)整個(gè)應(yīng)用程序的成敗與否,是進(jìn)行系統(tǒng)開發(fā)中最為關(guān)鍵的一步,系統(tǒng)設(shè)計(jì)包括了開發(fā)與運(yùn)行環(huán)境的選擇,系統(tǒng)功能分析,模塊的設(shè)計(jì)與實(shí)施,數(shù)據(jù)庫的設(shè)計(jì),而數(shù)據(jù)庫設(shè)計(jì)又是最為基礎(chǔ)的一部分。
1 開發(fā)與運(yùn)行環(huán)境的選擇
開發(fā)與運(yùn)行環(huán)境的選擇會(huì)影響到整個(gè)設(shè)計(jì)的成敗,要本著穩(wěn)定,通用性強(qiáng),設(shè)計(jì)者掌握熟練的要素進(jìn)行選擇,這里選擇了:開發(fā)環(huán)境:Windows XP或者Windows7
開發(fā)工具:Visual Basic6.0
數(shù)據(jù)庫管理系統(tǒng):SQL SERVER 2000
2 系統(tǒng)分析與設(shè)計(jì)
自動(dòng)組卷系統(tǒng)應(yīng)包括4個(gè)組成部分:(1)系統(tǒng)管理。本部分包括系統(tǒng)登錄,系統(tǒng)退出。在系統(tǒng)登陸的同時(shí)可以進(jìn)行數(shù)據(jù)庫的選擇,但是一定是具有權(quán)限者才能登錄,進(jìn)一步的可以操作該系統(tǒng)。(2)題型管理。本部分包括單選題、多選題、填空題、簡答題、計(jì)算題,選擇章節(jié)、按難度進(jìn)行錄入試題,也可以對(duì)試題進(jìn)行修改,刪除等操作;(3)自動(dòng)組卷系統(tǒng),根據(jù)難易程度,設(shè)定好分值和題量,再根據(jù)章節(jié)按照百分比出題;(4)幫助模塊,對(duì)該系統(tǒng)進(jìn)行介紹,對(duì)試卷的生成問題的解釋和說明。
3 數(shù)據(jù)庫的設(shè)計(jì)與實(shí)施
隨著題量的不斷增加,我們盡量用一個(gè)可擴(kuò)充的數(shù)據(jù)庫,因此我們采用當(dāng)前使用極為普遍的SQLSERVER,作為數(shù)據(jù)庫的開發(fā)環(huán)境。通過分析,我們?cè)O(shè)計(jì)出共6張表,分別是單選題,多選題,填空題,簡答題,計(jì)算題以及用戶表,表之間的關(guān)聯(lián)不是很復(fù)雜,比較容易實(shí)現(xiàn)。它們之間是通過章節(jié)表聯(lián)系在一起的。用戶表是單獨(dú)一張表和其他的表不存在聯(lián)系。
4 系統(tǒng)功能模塊的設(shè)計(jì)
4.1 系統(tǒng)管理
在系統(tǒng)管理模塊中包含了登陸系統(tǒng)和退出系統(tǒng),當(dāng)進(jìn)入登陸系統(tǒng),首先要選擇數(shù)據(jù)庫,如果系統(tǒng)獲取數(shù)據(jù)庫成功,也不能對(duì)數(shù)據(jù)庫和系統(tǒng)進(jìn)行操作,要進(jìn)行身份驗(yàn)證,有管理員權(quán)限和教師權(quán)限,只有獲得權(quán)限的用戶才能對(duì)系統(tǒng)進(jìn)行操作。驗(yàn)證通過,其他模塊才能使用,這樣防止了學(xué)生或者不相關(guān)人員看到進(jìn)入,增加的保密性。
關(guān)鍵代碼如下:Dim strSQL As String
Set objCn = New Connection
With objCn
.Provider = \"SQLOLEDB\"
strSQL = \"User ID=sa;PWD=sa;Server=(local);database=\" ThisDBName
.ConnectionString = strSQL
.Open '打開連接
End With
Set objRs = New Recordset
Set objRs.ActiveConnection = objCn
objRs.CursorLocation = adUseClient
objRs.CursorType = adOpenDynamic
objRs.LockType = adLockOptimistic
strSQL = \"select * from 系統(tǒng)用戶\"
objRs.Open strSQL
ShowCurrentRecord
cmdSave.Enabled = True
Exit Sub
4.2 題型管理
本部分是本系統(tǒng)的基礎(chǔ)部分,包括單選題,多選題,填空題,簡答題和計(jì)算題。關(guān)系到后面的組卷能否成功,每一個(gè)細(xì)節(jié)都要注意到。我們以這里面的多選題為例進(jìn)行詳細(xì)說明,這也是該程序比較有難度的地方。首先要能夠進(jìn)行章節(jié)的選擇,并且顯示出該題目在章節(jié)中所處于的順序,可添加章節(jié),也可以添加章節(jié)的名稱,該處的優(yōu)點(diǎn)是不同的科目老師,可以更改數(shù)據(jù)庫中數(shù)據(jù),這樣系統(tǒng)就不需要限定在某一個(gè)學(xué)科中了。系統(tǒng)的通用性就由此顯示出來了。在進(jìn)行錄入試題的同時(shí),我們可以限定該題目的難易程度,注意此處的難易程度要均衡,否則會(huì)影響后面生成試卷的速度??梢詾g覽各個(gè)章節(jié)的題目,重要的是能夠編輯試題,包括增刪改,由于某些題目是有圖形,因此在每個(gè)管理題目模塊中我們編寫了添加圖片的功能。
該處重要代碼,就是錄入好數(shù)據(jù)后,保存尤其的重要。
If isAdding Then objRs.AddNew
'保存試題
objRs!章節(jié) = cmbChapter.ItemData(cmbChapter.ListIndex)
objRs!題干 = Trim(txtContent)
objRs!選項(xiàng)1 = txtAnswer(0)
If picName <> \"\" Then
objRs!圖片 = picName
Else
objRs!圖片 = Null
End If
For i = 0 To 3
If CheckAnswer(i).Value = 0 Then objRs!答案 = objRs!答案 Int(CheckAnswer(i).Value)
If CheckAnswer(i).Value = 1 Then objRs!答案 = objRs!答案 Int(CheckAnswer(i).Value)
Next
If optLevel(0) Then
objRs!難度 = 0
ElseIf optLevel(1) Then
objRs!難度 = 1
Else
objRs!難度 = 2
End If
MsgBox \"kk\"
objRs.Update
MsgBox \"試題保存成功!\"
4.3 試卷管理
試卷管理模塊主要設(shè)定試卷的各種題型的數(shù)目和分值以及總分值,根據(jù)所設(shè)定的分值在設(shè)定各個(gè)章節(jié)的百分比,然后由系統(tǒng)分析,試卷的設(shè)定是否合理,在分析部分我們通過定義了一個(gè)五維數(shù)組,并定義了過濾器,以此篩選各個(gè)章節(jié)中的內(nèi)容和比例。再利用循環(huán)進(jìn)行篩選,本部分是系統(tǒng)中最為復(fù)雜的內(nèi)容,我還將在論文關(guān)鍵技術(shù)探究中詳細(xì)講解。這里只給出一小部分的重要代碼: '按難度檢查題量分配是否合理
For i = 0 To 4
'檢查難度屬于“難”的題題量分配是否有效
If Chapter(i, 0) < Int(Val(txtCount(i)) * txtLevel0(i) / 100) Then
MsgBox News(i) \"題庫中難度屬于“難”的題只有<\" _
Chapter(i, 0) \">道,難度百分比最大可為<\" _
Int(Chapter(i, 0) / Val(txtCount(i)) * 100) _
\">\", vbCritical
txtLevel0(i).SetFocus
Exit Sub
End If
4.4 幫助
在幫助模塊中,說明了系統(tǒng)的主要內(nèi)容:該系統(tǒng)是一個(gè)小型的題庫管理系統(tǒng),教師可以對(duì)自己所授的學(xué)科的試題可以進(jìn)行添加、修改、刪除等操作,并可以根據(jù)自己的需求來分配試卷的題量。在登陸該系統(tǒng)的時(shí)候,在選擇數(shù)據(jù)庫后,需輸入自己的用戶名和密碼,才能登陸到自己的學(xué)科數(shù)據(jù)庫。解釋了出卷失敗的原因。一旦生成試卷不成功:若是此次未能生成試卷,請(qǐng)重新分配各章節(jié)的題量和難易分配的比例!使用者可以進(jìn)行修改重新設(shè)定試卷。
5 結(jié)束語
自動(dòng)組卷并不是一個(gè)新的領(lǐng)域,但它仍處在需要不斷的完善的階段之中。由于各個(gè)學(xué)科的不同,基于試題庫的自動(dòng)組卷系統(tǒng)在數(shù)據(jù)庫設(shè)計(jì)等方面會(huì)有些許的差異,本文介紹和完成了一個(gè)具體的組卷系統(tǒng)的開發(fā),它具有一定的實(shí)際應(yīng)用價(jià)值,然而由于在時(shí)間、能力、技術(shù)等諸方面的不足,在算法優(yōu)化和庫結(jié)構(gòu)的設(shè)計(jì)上還有一些有待于改進(jìn)的地方,還有許多功能有待于日后來增強(qiáng)。這次系統(tǒng)開發(fā)是團(tuán)結(jié)協(xié)作的結(jié)果,得到了同事和好朋友的幫助,得以順利的完成,增強(qiáng)了合作的能力。在開發(fā)的過程中在一次次的發(fā)現(xiàn)問題、解決問題的過程中,學(xué)到了許多專業(yè)知識(shí)以及處理事務(wù)的方法,為以后的學(xué)習(xí)和工作積累了豐富的經(jīng)驗(yàn),更重要的是該系統(tǒng)的完成,對(duì)于緩解我校教師出試卷的工作量起到了一定作用,這是本人認(rèn)為完成軟件更具有意義價(jià)值的地方。
參考文獻(xiàn):
[1]王麗娜,肖京.通用智能題庫系統(tǒng)研究[J].東北大學(xué)學(xué)報(bào)(自然科學(xué)版).
[2]高守傳.精通SQL——結(jié)構(gòu)化查詢語言詳解[M].人民郵電出版社,2007-3-1.
[3]鄧貴英.試卷自動(dòng)生成算法[J].上海理工大學(xué)學(xué)報(bào).
[4]劉志嫵.基于VB和SQL的數(shù)據(jù)庫編程技術(shù)[M].清華大學(xué)出版社,2008-4-1.
[5](美)沸里茲,尹哲等譯.Visual basic 數(shù)據(jù)庫編程寶典[M].電子工業(yè)出版社.
[6]李丹丹,史秀璋.SQL Server 2000數(shù)據(jù)庫實(shí)訓(xùn)教程[M].清華大學(xué)出版社,2007-8-1.
[7]戴亞非,李曉明,唐溯飛.計(jì)算機(jī)自動(dòng)組卷算法分析.哈爾濱工業(yè)大學(xué)計(jì)算機(jī)中心.