版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 摘 要</b></p><p> 一般情況教師想出一份試卷,要么到龐大的題庫(kù)里一道一道的把題找出來(lái),或是從幾本相關(guān)的書里把題一道一道挑出來(lái)。這樣即費(fèi)時(shí)又費(fèi)力,而且很難保證試題的覆蓋面和把握好試卷的難度。正是為了能夠幫助教師輕松的出一份高質(zhì)量的試卷而開(kāi)發(fā)了本系統(tǒng)。</p><p> 以做一個(gè)數(shù)據(jù)庫(kù)原理這門課的題庫(kù)系統(tǒng)為例,為了達(dá)到預(yù)期
2、的標(biāo)準(zhǔn)本文最終選擇了txt文本文件做為本系統(tǒng)的終端輸出。并且實(shí)現(xiàn)了以下主要功能試題數(shù)據(jù)庫(kù)的創(chuàng)建、不同章節(jié)不同難度的試題錄入、圖片保存、試卷分析、自動(dòng)生成試卷等功能,多次運(yùn)行證明本系統(tǒng)運(yùn)行較為穩(wěn)定且各項(xiàng)功能運(yùn)行得比較正確,基本達(dá)到了預(yù)期的要求。</p><p> 關(guān)鍵詞: Visual Basic 6.0,SQL Server 2000,題庫(kù)管理系統(tǒng) </p><p><b>
3、 目錄</b></p><p> 1 系統(tǒng)功能概述3</p><p><b> 1.1系統(tǒng)功能3</b></p><p> 1.2系統(tǒng)結(jié)構(gòu)總圖3</p><p> 1.3系統(tǒng)E-R模型4</p><p><b> 2 數(shù)據(jù)庫(kù)設(shè)計(jì)5</b><
4、;/p><p> 2.1 需求分析5</p><p> 2.2 功能分析5</p><p> 2.4 表結(jié)構(gòu)設(shè)計(jì)21</p><p> 3 系統(tǒng)各功能模塊的詳細(xì)設(shè)計(jì)24</p><p> 3.1配置數(shù)據(jù)源(ODBC數(shù)據(jù)源)24</p><p> 3.2 窗體的設(shè)計(jì)24<
5、;/p><p> 3.3主要窗體源程序代碼28</p><p> 4系統(tǒng)優(yōu)缺點(diǎn)評(píng)價(jià)42</p><p><b> 參考文獻(xiàn)42</b></p><p><b> 1 系統(tǒng)功能概述</b></p><p><b> 1.1系統(tǒng)功能</b><
6、;/p><p><b> 系統(tǒng)功能介紹:</b></p><p> 1、創(chuàng)建題庫(kù):本系統(tǒng)適合不同科目的老師進(jìn)行試題的錄入,可根據(jù)不同的課程名創(chuàng)建不同的試題數(shù)據(jù)庫(kù),且自動(dòng)生成簡(jiǎn)答題、單選題、多選題、填空題、難度值四張表。</p><p><b> 題庫(kù)維護(hù)系統(tǒng):</b></p><p> 該系統(tǒng)是
7、適合不同課程的老師錄入考試試題,本系統(tǒng)包括了題文的錄入、題文的查找、題文的刪除和修改,章節(jié)的設(shè)定,分值的設(shè)置,試題的難度設(shè)置,試卷分析,以及生成試卷的功能。</p><p><b> 2、生成卷:</b></p><p> 該系統(tǒng)是本軟件的主要的功能的體現(xiàn),不受分值和難易程度的限制,可以人為定義,同時(shí)在分析的過(guò)程中那判定合理性,并提示最高設(shè)置值,讓老師更合理地考察
8、不同程度的學(xué)生的學(xué)習(xí)情況。</p><p> 3、各個(gè)試題數(shù)據(jù)庫(kù)中主要包含以下實(shí)體及其屬性:</p><p> ?。?)簡(jiǎn)答題(旅游團(tuán)編號(hào)、旅游點(diǎn)名稱、地理位置、旅游天數(shù),價(jià)格,出發(fā)日期,返回日期)</p><p> ?。?)單選題(導(dǎo)游編號(hào)、導(dǎo)游姓名、性別、聯(lián)系電話)</p><p> (3)多選題(游客編號(hào)、游客姓名、性別、年齡、聯(lián)系
9、電話)</p><p> ?。?)填空題(用戶名、密碼)</p><p><b> 1.2系統(tǒng)結(jié)構(gòu)總圖</b></p><p><b> 流程圖:</b></p><p><b> 結(jié)構(gòu)圖:</b></p><p> 1.3系統(tǒng)E-R模型<
10、/p><p><b> 2 數(shù)據(jù)庫(kù)設(shè)計(jì)</b></p><p><b> 2.1 需求分析</b></p><p> 設(shè)計(jì)試題生成功能,試題能分布整個(gè)教學(xué)內(nèi)容</p><p> 設(shè)計(jì)試題的難易程度分析功能</p><p> 具有試題的答案生成功能</p>
11、<p><b> 數(shù)據(jù)庫(kù)設(shè)計(jì)及維護(hù)</b></p><p><b> 程序的其它選項(xiàng)設(shè)置</b></p><p><b> 2.2 功能分析</b></p><p> 1.每創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)將自動(dòng)生成四種題型幾個(gè)各個(gè)章節(jié)的數(shù)據(jù)表,因?yàn)樵阡浫腩}目的時(shí)候要顯示書本章節(jié)信息以供用戶使用。而在
12、數(shù)據(jù)庫(kù)里章節(jié)的存放是沒(méi)有規(guī)則也即它們的順序不一定按照真實(shí)書本的章節(jié)順序來(lái)存儲(chǔ)的。但是在顯示章節(jié)信息的時(shí)候必須按照書本的章節(jié)順序來(lái)顯示。所以分別設(shè)置如下的各張表的數(shù)據(jù)類型: </p><p> '創(chuàng)建“章節(jié)”數(shù)據(jù)表</p><p> strSQL = "Create Table 章節(jié) (" _</p><p> &
13、"編號(hào) int identity primary key," _</p><p> & "名稱 varchar(50) not null)"</p><p> objCn.Execute strSQL</p><p> objCn.Close</p><p> Set objCn =
14、Nothing</p><p> MsgBox "數(shù)據(jù)庫(kù)已成功創(chuàng)建!"</p><p> 由于數(shù)據(jù)庫(kù)里章節(jié)的數(shù)量是不定的,故此種數(shù)據(jù)類型的變量必須是一種長(zhǎng)度可變的類型才行。接下來(lái)的問(wèn)題就是把這個(gè)變量記錄的數(shù)據(jù)按一定順序顯示到combobox的控件里了。由于章節(jié)的數(shù)量還是比較多的,所以我選擇了“改進(jìn)的選擇排序”,具體的排序算法代碼實(shí)現(xiàn)如下:</p>&l
15、t;p> If cmbChapter <> "" Then</p><p> objRs.Filter = "章節(jié)=" & cmbChapter.ItemData(cmbChapter.ListIndex)</p><p> If objRs.RecordCount > 0 Then objRs.MoveFirs
16、t</p><p><b> Show_Data</b></p><p><b> Else</b></p><p> objRs.Filter = "章節(jié)=-99999"</p><p><b> Show_Data</b></p>
17、<p><b> End If </b></p><p> 2.試卷分析的過(guò)程中,要考慮到一張?jiān)嚲砝锩娓鱾€(gè)不同題目所在比例與試題庫(kù)中該類試題占所有試題庫(kù)中的比例之間的差異問(wèn)題,所以在分析的過(guò)程中在成分不足或者成分超過(guò)的情況需要設(shè)置提示,整個(gè)參數(shù)分析代碼為:</p><p> '分析章節(jié)中的題數(shù)分配</p><p>
18、 Dim News, i%, j%, strFilter$, Chapter%(3, 2), k%</p><p> News = Array("判斷題", "單選題", "多選題", "填空題")</p><p> For i = 0 To 3</p><p> If Val(t
19、xtScore(i)) <> 0 And Val(lblRemain(i)) <> 0 Then</p><p> MsgBox News(i) & "試題剩余" & lblRemain(i) & "%未分配", vbCritical</p><p> txtScale(i).SetFocus<
20、;/p><p><b> Exit Sub</b></p><p><b> End If</b></p><p><b> Next</b></p><p> '檢查章節(jié)題量分配是否有效</p><p> If objRsChapter.
21、RecordCount <= 0 Then Exit Sub</p><p> For i = 0 To 3</p><p> If Val(txtScore(i)) <> 0 Then</p><p> For j = 0 To cmbChapter(i).ListCount - 1</p><p> objRsC
22、hapter.MoveFirst</p><p> objRsChapter.Find "名稱='" & cmbChapter(i).List(j) & "'"</p><p> strFilter = "章節(jié)=" & objRsChapter!編號(hào)</p><p&g
23、t; Select Case i</p><p> Case 0 '檢查判斷題題量分配是否有效</p><p> objRsJudge.Filter = strFilter</p><p> If objRsJudge.RecordCount < Int(cmbChapter(i).ItemData(j) * _</p><
24、;p> txtCount(i) / 100) Then</p><p> MsgBox "<" & News(i) & "><" & objRsChapter!名稱 & ">中只有<" _</p><p> & objRsJudge.RecordCo
25、unt & ">道試題,小題百分比最多<" _</p><p> & Int(objRsJudge.RecordCount / Val(txtCount(i)) * 100) _</p><p> & ">", vbCritical</p><p> cmbChapter(i).
26、ListIndex = j</p><p><b> Exit Sub</b></p><p><b> End If</b></p><p> '小題數(shù)通過(guò)檢驗(yàn),統(tǒng)計(jì)各類難度試題數(shù)量</p><p> For k = 0 To 2</p><p> obj
27、RsJudge.Filter = strFilter & " and 難度=" & k</p><p> Chapter(i, k) = Chapter(i, k) + objRsJudge.RecordCount</p><p><b> Next</b></p><p> Case 1 '
28、檢查單選題題量分配是否有效</p><p> objRsSingle.Filter = strFilter</p><p> If objRsSingle.RecordCount < Int(cmbChapter(i).ItemData(j) * _</p><p> txtCount(i) / 100) Then</p><p>
29、; MsgBox "<" & News(i) & "><" & objRsChapter!名稱 & ">中只有<" _</p><p> & objRsSingle.RecordCount & ">道試題,小題百分比最多<" _</p&
30、gt;<p> & Int(objRsSingle.RecordCount / Val(txtCount(i)) * 100) _</p><p> & ">", vbCritical</p><p> cmbChapter(i).ListIndex = j</p><p><b> Exit
31、 Sub</b></p><p><b> End If</b></p><p> '小題數(shù)通過(guò)檢驗(yàn),統(tǒng)計(jì)各類難度試題數(shù)量</p><p> For k = 0 To 2</p><p> objRsSingle.Filter = strFilter & " and 難度=&
32、quot; & k</p><p> Chapter(i, k) = Chapter(i, k) + objRsSingle.RecordCount</p><p><b> Next</b></p><p> Case 2 '檢查多選題題量分配是否有效</p><p> objRsMore.F
33、ilter = strFilter</p><p> If objRsMore.RecordCount < Int(cmbChapter(i).ItemData(j) * _</p><p> txtCount(i) / 100) Then</p><p> MsgBox "<" & News(i) & &quo
34、t;><" & objRsChapter!名稱 & ">中只有<" _</p><p> & objRsMore.RecordCount & ">道試題,小題百分比最多<" _</p><p> & Int(objRsMore.RecordCount / Val
35、(txtCount(i)) * 100) _</p><p> & ">", vbCritical</p><p> cmbChapter(i).ListIndex = j</p><p><b> Exit Sub</b></p><p><b> End If<
36、;/b></p><p> '小題數(shù)通過(guò)檢驗(yàn),統(tǒng)計(jì)各類難度試題數(shù)量</p><p> For k = 0 To 2</p><p> objRsMore.Filter = strFilter & " And 難度 = " & k</p><p> Chapter(i, k) = Cha
37、pter(i, k) + objRsMore.RecordCount</p><p><b> Next</b></p><p> Case 3 '檢查填空題題量分配是否有效</p><p> objRsSpace.Filter = strFilter</p><p> If objRsSpace.Re
38、cordCount < Int(cmbChapter(i).ItemData(j) * _</p><p> txtCount(i) / 100) Then</p><p> MsgBox "<" & News(i) & "><" & objRsChapter!名稱 & ">
39、中只有<" _</p><p> & objRsSpace.RecordCount & ">道試題,小題百分比最多<" _</p><p> & Int(objRsSpace.RecordCount / Val(txtCount(i)) * 100) & ">", vbCritic
40、al</p><p> cmbChapter(i).ListIndex = j</p><p><b> Exit Sub</b></p><p><b> End If</b></p><p> '小題數(shù)通過(guò)檢驗(yàn),統(tǒng)計(jì)各類難度試題數(shù)量</p><p> F
41、or k = 0 To 2</p><p> objRsSpace.Filter = strFilter & " and 難度=" & k</p><p> Chapter(i, k) = Chapter(i, k) + objRsSpace.RecordCount</p><p><b> Next</b&
42、gt;</p><p> End Select</p><p><b> Next</b></p><p><b> End If</b></p><p><b> Next</b></p><p> '按難度檢查題量分配是否合理<
43、;/p><p> For i = 0 To 3</p><p> '檢查難度屬于“難”的題題量分配是否有效</p><p> If Chapter(i, 0) < Int(Val(txtCount(i)) * txtLevel0(i) / 100) Then</p><p> MsgBox News(i) & &qu
44、ot;題庫(kù)中難度屬于“難”的題只有<" _</p><p> & Chapter(i, 0) & ">道,難度百分比最大可為<" _</p><p> & Int(Chapter(i, 0) / Val(txtCount(i)) * 100) _</p><p> & "
45、>", vbCritical</p><p> txtLevel0(i).SetFocus</p><p><b> Exit Sub</b></p><p><b> End If</b></p><p> '檢查難度屬于“一般”的題題量分配是否有效</p&g
46、t;<p> If Chapter(i, 1) < Int(Val(txtCount(i)) * txtLevel1(i) / 100) Then</p><p> MsgBox News(i) & "題庫(kù)中難度屬于“一般”的題只有<" _</p><p> & Chapter(i, 1) & ">
47、道,難度百分比最大可為<" _</p><p> & Int(Chapter(i, 1) / Val(txtCount(i)) * 100) _</p><p> & ">", vbCritical</p><p> txtLevel1(i).SetFocus</p><p>&
48、lt;b> Exit Sub</b></p><p><b> End If</b></p><p> '檢查難度屬于“容易”的題題量分配是否有效</p><p> If Chapter(i, 2) < Int(Val(txtCount(i)) * txtLevel2(i) / 100) Then<
49、/p><p> MsgBox News(i) & "題庫(kù)中難度屬于“容易”的題只有<" _</p><p> & Chapter(i, 2) & ">道,難度百分比最大可為<" _</p><p> & Int(Chapter(i, 2) / Val(txtCount(i))
50、 * 100) _</p><p> & ">", vbCritical</p><p> txtLevel2(i).SetFocus</p><p><b> Exit Sub</b></p><p><b> End If</b></p>
51、<p><b> Next</b></p><p> MsgBox "試卷參數(shù)設(shè)置正確,可以生成試卷!", vbInformation</p><p> '取消各個(gè)記錄集的過(guò)慮設(shè)置</p><p> objRsSpace.Filter = ""</p><p&
52、gt; objRsMore.Filter = ""</p><p> objRsSingle.Filter = ""</p><p> objRsJudge.Filter = ""</p><p> cmdMakePaper.Enabled = True</p><p>&l
53、t;b> Exit Sub</b></p><p> 3.在自動(dòng)生成試卷里最主要的一點(diǎn)就是如何生成一個(gè)覆蓋知道點(diǎn)廣且試題不重復(fù)的試卷。其中的關(guān)鍵算法在于如何生成一個(gè)不重復(fù)的隨機(jī)數(shù)序列。同時(shí),為了防止生成時(shí)間過(guò)長(zhǎng)或者說(shuō)代碼編寫出錯(cuò)時(shí)造成程序運(yùn)行不停止,需要設(shè)置一個(gè)時(shí)間函數(shù),控制試卷生成時(shí)間,本文定義的是30秒,如果超過(guò)這個(gè)時(shí)間將停止生成試卷并提示錯(cuò)誤。程序如下:</p><
54、p> Randomize Timer</p><p> Dim Level0%(3), Level1%(3), Level2%(3), i%, n%, strTest$, strAnswer$</p><p> Dim Count%(3), Selected$, Chapter%(), Ok, Abcd, more%, doTime As Long</p><
55、;p> doTime = Timer '開(kāi)始計(jì)算生成試題時(shí)間</p><p> Abcd = Array("A", "B", "C", "D")</p><p> ReDim Chapter(3, cmbChapter(0).ListCount - 1)</p><p
56、> '計(jì)算各類題型的難度小題數(shù)</p><p> For i = 0 To 3</p><p> n = Val(txtCount(i))</p><p> Count(i) = n</p><p> Level0%(i) = Int(Val(txtLevel0(i)) * n / 100)</p>&l
57、t;p> Level1%(i) = Int(Val(txtLevel1(i)) * n / 100)</p><p> Level2%(i) = Int(Val(txtLevel2(i)) * n / 100)</p><p> If Level0%(i) + Level1%(i) + Level2%(i) <> n Then _</p><p&
58、gt; Level1%(i) = n - Level0%(i) - Level2%(i)</p><p><b> Next</b></p><p> For i = 0 To 3</p><p> cmbChapter(i).ItemData(0) = 20</p><p> cmbChapter(i).It
59、emData(1) = 30</p><p> cmbChapter(i).ItemData(2) = 30</p><p> cmbChapter(i).ItemData(3) = 20</p><p><b> Next</b></p><p> '計(jì)算個(gè)章節(jié)各類題型的小題數(shù)</p>&
60、lt;p> For i = 0 To 3</p><p> For j = 0 To cmbChapter(0).ListCount - 1</p><p> Chapter(i, j) = Int(cmbChapter(i).ItemData(j) * Val(txtCount(i)) / 100)</p><p><b> Next<
61、;/b></p><p><b> n = 0</b></p><p> For j = 0 To cmbChapter(0).ListCount - 1</p><p> n = n + Chapter(i, j)</p><p><b> Next</b></p>&
62、lt;p> If n <> Val(txtCount(i)) Then Chapter(i, 0) = Chapter(i, 0) + Val(txtCount(i)) - n</p><p><b> Next</b></p><p> '將cmbchapter列表itemdata中的百分比數(shù)轉(zhuǎn)換為章節(jié)編號(hào)</p>&l
63、t;p> For i = 0 To 3</p><p> For j = 0 To cmbChapter(0).ListCount - 1</p><p> objRsChapter.MoveFirst</p><p> objRsChapter.Find "名稱='" & cmbChapter(i).List(j)
64、 & "'"</p><p> cmbChapter(i).ItemData(j) = objRsChapter!編號(hào)</p><p><b> Next</b></p><p><b> Next</b></p><p><b> '生
65、成試卷</b></p><p> For i = 0 To 3</p><p> Selected = ""</p><p> Select Case i</p><p> Case 0 '選擇判斷題</p><p> strTest = strTest &
66、"一、簡(jiǎn)答題。(共" & txtCount(i) _</p><p> & ",每小題" & txtAvg(i) & "分,共" & txtScore(i) & "分)" & vbCrLf</p><p> strAnswer = strAnswer
67、& "一、簡(jiǎn)答題。(共" & txtCount(i) _</p><p> & ",每小題" & txtAvg(i) & "分,共" & txtScore(i) & "分)" & vbCrLf</p><p><b> j = 1&l
68、t;/b></p><p> While Count(i) > 0</p><p> '隨即產(chǎn)生一個(gè)未選擇的試題的記錄序號(hào)</p><p><b> Do</b></p><p> If Timer - doTime > 30 Then</p><p> Msg
69、Box "本次生成判斷題花費(fèi)時(shí)間過(guò)長(zhǎng),退出重試!", vbCritical</p><p><b> Exit Sub</b></p><p><b> End If</b></p><p> n = Int(Rnd * objRsJudge.RecordCount + 1)</p>
70、<p> Loop Until InStr(Selected, "#" & n & "#") = 0</p><p> Selected = Selected & "#" & n & "#"</p><p> objRsJudge.MoveFirst&l
71、t;/p><p> objRsJudge.Move n - 1</p><p> Select Case objRsJudge!難度</p><p><b> Case 0</b></p><p> If Level0(i) > 0 Then</p><p> '檢查本章試題是
72、否已選夠</p><p> For n = 0 To 3</p><p> If cmbChapter(i).ItemData(n) = objRsJudge!章節(jié) Then Exit For</p><p><b> Next</b></p><p> If Chapter(i, n) > 0 Then&
73、lt;/p><p> strTest = strTest & j & "、" & objRsJudge!題干 & "( )" & vbCrLf</p><p> strAnswer = strAnswer & j & "、"</p><p>
74、9;If objRsJudge!答案 Then</p><p> ' strAnswer = strAnswer & "錯(cuò)誤"</p><p><b> ' Else</b></p><p> ' strAnswer = strAnswer & "正確"&l
75、t;/p><p><b> ' End If</b></p><p> strAnswer = strAnswer & vbCrLf</p><p><b> j = j + 1</b></p><p> Chapter(i, n) = Chapter(i, n) - 1<
76、/p><p> Level0(i) = Level0(i) - 1</p><p> Count(i) = Count(i) - 1</p><p> If Not IsNull(objRsJudge!圖片) Then _</p><p> strTest = strTest & "本題圖片:" & o
77、bjRsJudge!圖片</p><p><b> End If</b></p><p><b> End If</b></p><p><b> Case 1</b></p><p> If Level1(i) > 0 Then</p><p
78、> '檢查本章試題是否已選夠</p><p> For n = 0 To 3</p><p> If cmbChapter(i).ItemData(n) = objRsJudge!章節(jié) Then Exit For</p><p><b> Next</b></p><p> If Chapter(
79、i, n) > 0 Then</p><p> strTest = strTest & j & "、" & objRsJudge!題干 & "( )" & vbCrLf</p><p> strAnswer = strAnswer & j & "、"</p&g
80、t;<p> 'If objRsJudge!答案 Then</p><p> 'strAnswer = strAnswer & "錯(cuò)誤"</p><p><b> 'Else</b></p><p> ' strAnswer = strAnswer & &
81、quot;正確"</p><p><b> 'End If</b></p><p> strAnswer = strAnswer & vbCrLf</p><p><b> j = j + 1</b></p><p> Chapter(i, n) = Chapter
82、(i, n) - 1</p><p> Level1(i) = Level1(i) - 1</p><p> Count(i) = Count(i) - 1</p><p> If Not IsNull(objRsJudge!圖片) Then _</p><p> strTest = strTest & "本題圖片:
83、" & objRsJudge!圖片</p><p><b> End If</b></p><p><b> End If</b></p><p><b> Case 2</b></p><p> If Level2(i) > 0 Then<
84、;/p><p> '檢查本章試題是否已選夠</p><p> For n = 0 To 3</p><p> If cmbChapter(i).ItemData(n) = objRsJudge!章節(jié) Then Exit For</p><p><b> Next</b></p><p>
85、; If Chapter(i, n) > 0 Then</p><p> strTest = strTest & j & "、" & objRsJudge!題干 & "( )" & vbCrLf</p><p> strAnswer = strAnswer & j & "、
86、"</p><p> strAnswer = strAnswer & vbCrLf</p><p><b> j = j + 1</b></p><p> Chapter(i, n) = Chapter(i, n) - 1</p><p> Level2(i) = Level2(i) - 1&l
87、t;/p><p> Count(i) = Count(i) - 1</p><p> If Not IsNull(objRsJudge!圖片) Then _</p><p> strTest = strTest & "本題圖片:" & objRsJudge!圖片</p><p><b> En
88、d If</b></p><p><b> End If</b></p><p> End Select</p><p><b> Wend</b></p><p> Case 1 '卸載單選題</p><p> strTest = strTe
89、st & "二、單選題。(共" & txtCount(i) _</p><p> & ",每小題" & txtAvg(i) & "分,共" & txtScore(i) & "分)" & vbCrLf</p><p> strAnswer = s
90、trAnswer & "二、單選題。(共" & txtCount(i) _</p><p> & ",每小題" & txtAvg(i) & "分,共" & txtScore(i) & "分)" & vbCrLf</p><p><b>
91、 j = 1</b></p><p> While Count(i) > 0</p><p> '隨即產(chǎn)生一個(gè)未選擇的試題的記錄序號(hào)</p><p><b> Do</b></p><p> If Timer - doTime > 30 Then</p><p
92、> MsgBox "本次生成單選題試題花費(fèi)時(shí)間過(guò)長(zhǎng),退出重試!", vbCritical</p><p><b> Exit Sub</b></p><p><b> End If</b></p><p> n = Int(Rnd * objRsSingle.RecordCount + 1
93、)</p><p> Loop Until InStr(Selected, "#" & n & "#") = 0</p><p> Selected = Selected & "#" & n & "#"</p><p> objRsSingl
94、e.MoveFirst</p><p> objRsSingle.Move n - 1</p><p> Select Case objRsSingle!難度</p><p><b> Case 0</b></p><p> If Level0(i) > 0 Then</p><p>
95、; '檢查本章試題是否已選夠</p><p> For n = 0 To 3</p><p> If cmbChapter(i).ItemData(n) = objRsSingle!章節(jié) Then Exit For</p><p><b> Next</b></p><p> If Chapter(i,
96、 n) > 0 Then</p><p> strTest = strTest & j & "、" & objRsSingle!題干 & vbCrLf</p><p> strTest = strTest & " A、" & objRsSingle!選項(xiàng)1 & vbCrLf<
97、;/p><p> strTest = strTest & " B、" & objRsSingle!選項(xiàng)2 & vbCrLf</p><p> strTest = strTest & " C、" & objRsSingle!選項(xiàng)3 & vbCrLf</p><p>
98、strTest = strTest & " D、" & objRsSingle!選項(xiàng)4 & vbCrLf</p><p> strAnswer = strAnswer & j & "、" & Abcd(objRsSingle!答案) & vbCrLf</p><p><b>
99、 j = j + 1</b></p><p> Chapter(i, n) = Chapter(i, n) - 1</p><p> Level0(i) = Level0(i) - 1</p><p> Count(i) = Count(i) - 1</p><p> If Not IsNull(objRsSingle!圖
100、片) Then _</p><p> strTest = strTest & "本題圖片:" & objRsSingle!圖片</p><p><b> End If</b></p><p><b> End If</b></p><p><b>
101、 Case 1</b></p><p> If Level1(i) > 0 Then</p><p> '檢查本章試題是否已選夠</p><p> For n = 0 To 3</p><p> If cmbChapter(i).ItemData(n) = objRsSingle!章節(jié) Then Exit
102、For</p><p><b> Next</b></p><p> If Chapter(i, n) > 0 Then</p><p> strTest = strTest & j & "、" & objRsSingle!題干 & vbCrLf</p><p&
103、gt; strTest = strTest & " A、" & objRsSingle!選項(xiàng)1 & vbCrLf</p><p> strTest = strTest & " B、" & objRsSingle!選項(xiàng)2 & vbCrLf</p><p> strTest = strTe
104、st & " C、" & objRsSingle!選項(xiàng)3 & vbCrLf</p><p> strTest = strTest & " D、" & objRsSingle!選項(xiàng)4 & vbCrLf</p><p> strAnswer = strAnswer & j &
105、 "、" & Abcd(objRsSingle!答案) & vbCrLf</p><p><b> j = j + 1</b></p><p> Chapter(i, n) = Chapter(i, n) - 1</p><p> Level1(i) = Level1(i) - 1</p>
106、<p> Count(i) = Count(i) - 1</p><p> If Not IsNull(objRsSingle!圖片) Then _</p><p> strTest = strTest & "本題圖片:" & objRsSingle!圖片</p><p><b> End If<
107、;/b></p><p><b> End If</b></p><p><b> Case 2</b></p><p> If Level2(i) > 0 Then</p><p> '檢查本章試題是否已選夠</p><p> For n =
108、0 To 3</p><p> If cmbChapter(i).ItemData(n) = objRsSingle!章節(jié) Then Exit For</p><p><b> Next</b></p><p> If Chapter(i, n) > 0 Then</p><p> strTest = st
109、rTest & j & "、" & objRsSingle!題干 & vbCrLf</p><p> strTest = strTest & " A、" & objRsSingle!選項(xiàng)1 & vbCrLf</p><p> strTest = strTest & "
110、 B、" & objRsSingle!選項(xiàng)2 & vbCrLf</p><p> strTest = strTest & " C、" & objRsSingle!選項(xiàng)3 & vbCrLf</p><p> strTest = strTest & " D、" & o
111、bjRsSingle!選項(xiàng)4 & vbCrLf</p><p> strAnswer = strAnswer & j & "、" & Abcd(objRsSingle!答案) & vbCrLf</p><p><b> j = j + 1</b></p><p> Chapter
112、(i, n) = Chapter(i, n) - 1</p><p> Level2(i) = Level2(i) - 1</p><p> Count(i) = Count(i) - 1</p><p> If Not IsNull(objRsSingle!圖片) Then _</p><p> strTest = strTest
113、& "本題圖片:" & objRsSingle!圖片</p><p><b> End If</b></p><p><b> End If</b></p><p> End Select</p><p><b> Wend</b>&
114、lt;/p><p> Case 2 '選擇多選題</p><p> strTest = strTest & "三、多選題。(共" & txtCount(i) _</p><p> & ",每小題" & txtAvg(i) & "分,共" & txt
115、Score(i) & "分)" & vbCrLf</p><p> strAnswer = strAnswer & "三、多選題。(共" & txtCount(i) _ & ",每小題" & txtAvg(i) & "分,共" & txtScore(i) & &
116、quot;分)" & vbCrLf</p><p><b> j = 1</b></p><p> While Count(i) > 0</p><p> '隨即產(chǎn)生一個(gè)未選擇的試題的記錄序號(hào)</p><p><b> Do</b></p>&l
117、t;p> If Timer - doTime > 30 Then</p><p> MsgBox "本次生成試題花費(fèi)時(shí)間過(guò)長(zhǎng),退出重試!", vbCritical</p><p><b> Exit Sub</b></p><p><b> End If</b></p>
118、<p> n = Int(Rnd * objRsMore.RecordCount + 1)</p><p> Loop Until InStr(Selected, "#" & n & "#") = 0</p><p> Selected = Selected & "#" & n &
119、amp; "#"</p><p> objRsMore.MoveFirst</p><p> objRsMore.Move n - 1</p><p> Select Case objRsMore!難度</p><p><b> Case 0</b></p><p>
120、 If Level0(i) > 0 Then</p><p> '檢查本章試題是否已選夠</p><p> For n = 0 To 3</p><p> If cmbChapter(i).ItemData(n) = objRsMore!章節(jié) Then Exit For</p><p><b> Next<
121、;/b></p><p> If Chapter(i, n) > 0 Then</p><p> strTest = strTest & j & "、" & objRsMore!題干 & vbCrLf</p><p> strTest = strTest & " A、&qu
122、ot; & objRsMore!選項(xiàng)1 & vbCrLf</p><p> strTest = strTest & " B、" & objRsMore!選項(xiàng)2 & vbCrLf</p><p> strTest = strTest & " C、" & objRsMore!選項(xiàng)3
123、& vbCrLf</p><p> strTest = strTest & " D、" & objRsMore!選項(xiàng)4 & vbCrLf</p><p> strAnswer = strAnswer & j & "、"</p><p> For more = 0 To
124、 3</p><p> If Mid(objRsMore!答案, more + 1, 1) = "1" Then _</p><p> strAnswer = strAnswer & Abcd(more) & ","</p><p><b> Next</b></p>
125、<p> strAnswer = strAnswer & vbCrLf</p><p><b> j = j + 1</b></p><p> Chapter(i, n) = Chapter(i, n) - 1</p><p> Level0(i) = Level0(i) - 1</p><p>
126、; Count(i) = Count(i) - 1</p><p> If Not IsNull(objRsMore!圖片) Then _</p><p> strTest = strTest & "本題圖片:" & objRsMore!圖片</p><p><b> End If</b></p
127、><p><b> End If</b></p><p><b> Case 1</b></p><p> If Level1(i) > 0 Then</p><p> '檢查本章試題是否已選夠</p><p> For n = 0 To 3</p&
128、gt;<p> If cmbChapter(i).ItemData(n) = objRsMore!章節(jié) Then Exit For</p><p><b> Next</b></p><p> If Chapter(i, n) > 0 Then</p><p> strTest = strTest & j &
129、amp; "、" & objRsMore!題干 & vbCrLf</p><p> strTest = strTest & " A、" & objRsMore!選項(xiàng)1 & vbCrLf</p><p> strTest = strTest & " B、" &
130、objRsMore!選項(xiàng)2 & vbCrLf</p><p> strTest = strTest & " C、" & objRsMore!選項(xiàng)3 & vbCrLf</p><p> strTest = strTest & " D、" & objRsMore!選項(xiàng)4 & vbCr
131、Lf</p><p> strAnswer = strAnswer & j & "、"</p><p> For more = 0 To 3</p><p> If Mid(objRsMore!答案, more + 1, 1) = "1" Then _</p><p> strA
132、nswer = strAnswer & Abcd(more) & ","</p><p><b> Next</b></p><p> strAnswer = strAnswer & vbCrLf</p><p><b> j = j + 1</b></p>
133、<p> Chapter(i, n) = Chapter(i, n) - 1</p><p> Level1(i) = Level1(i) - 1</p><p> Count(i) = Count(i) - 1</p><p> If Not IsNull(objRsMore!圖片) Then _</p><p> st
134、rTest = strTest & "本題圖片:" & objRsMore!圖片</p><p><b> End If</b></p><p><b> End If</b></p><p><b> Case 2</b></p><p&
135、gt; If Level2(i) > 0 Then</p><p> '檢查本章試題是否已選夠</p><p> For n = 0 To 3</p><p> If cmbChapter(i).ItemData(n) = objRsMore!章節(jié) Then Exit For</p><p><b> Nex
136、t</b></p><p> If Chapter(i, n) > 0 Then</p><p> strTest = strTest & j & "、" & objRsMore!題干 & vbCrLf</p><p> strTest = strTest & " A
137、、" & objRsMore!選項(xiàng)1 & vbCrLf</p><p> strTest = strTest & " B、" & objRsMore!選項(xiàng)2 & vbCrLf</p><p> strTest = strTest & " C、" & objRsMore!
138、選項(xiàng)3 & vbCrLf</p><p> strTest = strTest & " D、" & objRsMore!選項(xiàng)4 & vbCrLf</p><p> strAnswer = strAnswer & j & "、"</p><p> For more =
139、0 To 3</p><p> If Mid(objRsMore!答案, more + 1, 1) = "1" Then _</p><p> strAnswer = strAnswer & Abcd(more) & ","</p><p><b> Next</b></p&g
140、t;<p> strAnswer = strAnswer & vbCrLf</p><p><b> j = j + 1</b></p><p> Chapter(i, n) = Chapter(i, n) - 1</p><p> Level2(i) = Level2(i) - 1</p><
141、p> Count(i) = Count(i) - 1</p><p> If Not IsNull(objRsMore!圖片) Then _</p><p> strTest = strTest & "本題圖片:" & objRsMore!圖片</p><p> End If End If</p>
142、<p> End Select</p><p><b> Wend</b></p><p> Case 3 '選擇填空題</p><p> strTest = strTest & "四、填空題。(共" & txtCount(i) _</p><p> &a
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)---教室管理系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)
- 數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)---圖書管理系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)--數(shù)據(jù)庫(kù)系統(tǒng)原理
- 數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)---個(gè)人事物管理數(shù)據(jù)庫(kù)課程設(shè)計(jì)
- 數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)-- 庫(kù)存管理系統(tǒng)
- 數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)——倉(cāng)庫(kù)管理系統(tǒng)
- 數(shù)據(jù)庫(kù)系統(tǒng)原理課程設(shè)計(jì)--人事管理系統(tǒng)數(shù)據(jù)庫(kù)
- 數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)---學(xué)籍管理系統(tǒng)
- 數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)--超市管理系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)--數(shù)據(jù)庫(kù)原理及應(yīng)用課程設(shè)計(jì)
- 數(shù)據(jù)庫(kù)原理b課程設(shè)計(jì)--數(shù)據(jù)庫(kù)學(xué)生信息管理系統(tǒng)
- 《數(shù)據(jù)庫(kù)原理》課程設(shè)計(jì)--物業(yè)管理系統(tǒng)
- 《數(shù)據(jù)庫(kù)原理及應(yīng)用》課程設(shè)計(jì)---師生管理數(shù)據(jù)庫(kù)系統(tǒng)設(shè)計(jì)
- 《數(shù)據(jù)庫(kù)系統(tǒng)原理》課程設(shè)計(jì)
- 數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)--圖書管理系統(tǒng)
- 數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)---人事管理系統(tǒng)
- 數(shù)據(jù)庫(kù)原理及應(yīng)用課程設(shè)計(jì)--職工考勤管理系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)
- 數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)-試題庫(kù)管理系統(tǒng)
- 《數(shù)據(jù)庫(kù)原理》課程設(shè)計(jì)-圖書管理系統(tǒng)
評(píng)論
0/150
提交評(píng)論