胡曉萍,鐘葉龍,王宛蘋
(1.杭州電子科技大學(xué)電子信息學(xué)院,浙江杭州310018;2.華數(shù)傳媒網(wǎng)絡(luò)有限公司,浙江杭州310023)
隨著計(jì)算機(jī)應(yīng)用的普及,傳統(tǒng)手工出卷的方式無法滿足教學(xué)和科技發(fā)展的需求,自動(dòng)組卷系統(tǒng)在這種背景下被提出[1]。國內(nèi)各種類型的組卷系統(tǒng)非常多,但是傳統(tǒng)的試卷生成系統(tǒng)通常只能針對(duì)某一門課程或?qū)W科進(jìn)行組卷,無法綜合多門課程的知識(shí)點(diǎn)進(jìn)行出卷[2],或者用戶除了利用系統(tǒng)中的題庫進(jìn)行出卷,很難自由改變系統(tǒng)的題庫內(nèi)容,如:增加新的課程、新的題型或試題等。為解決這一弊端,本文提出模塊化的設(shè)計(jì)理念,基于Powerbuilder10.0開發(fā)環(huán)境下實(shí)現(xiàn)的題庫與自動(dòng)組卷系統(tǒng),能夠靈活添加新的課程及其相應(yīng)的試題題庫、新題型等;既能對(duì)各門課程單獨(dú)出卷,又能交叉組合多門課程的知識(shí)點(diǎn)綜合出卷;且本系統(tǒng)具有強(qiáng)大的題庫和試卷庫管理功能,有較大的通用性和實(shí)際應(yīng)用價(jià)值。
考慮到要實(shí)現(xiàn)題庫管理與自動(dòng)組卷系統(tǒng)的可擴(kuò)展性、可移植性等多種功能,將系統(tǒng)分解為4個(gè)功能模塊,各個(gè)模塊都具有一定的獨(dú)立性和通用功能,系統(tǒng)功能模塊如圖1所示。
圖1 通用試題庫與自動(dòng)組卷系統(tǒng)的功能模塊框圖
試題庫管理子系統(tǒng)是為能順利組卷而設(shè)計(jì)的,既具有傳統(tǒng)試題庫的功能,如實(shí)現(xiàn)不同題型試題的輸入、修改、刪除,統(tǒng)計(jì)以及對(duì)題庫進(jìn)行條件瀏覽等功能[3];又具有強(qiáng)大的通用性,系統(tǒng)對(duì)每門課程建立獨(dú)立的數(shù)據(jù)庫,以保存該課程的試題。其最大的特點(diǎn)是可以任意添加新課程以及新題型,或者刪除系統(tǒng)中已建立的某一課程的試題庫等。本系統(tǒng)已建立完成的試題庫包含了4門電子信息類專業(yè)課程的試題,設(shè)置的試題難度有容易、提高、較難和難4個(gè)級(jí)別,題型分為選擇題、填空題、判斷題和計(jì)算題等。
模塊分手工組卷和自動(dòng)組卷兩種功能,能同時(shí)生成試卷及相應(yīng)的參考答案和詳細(xì)的解題過程。手工組卷需要對(duì)課程名、題型、難度系數(shù)、每題的分?jǐn)?shù)值等均進(jìn)行設(shè)定方能組卷。自動(dòng)組卷則只需設(shè)定課程名和總體的知識(shí)點(diǎn)分配比例就能進(jìn)行選題組卷,題型、難度系數(shù)等則按照系統(tǒng)默認(rèn)值設(shè)定。兩種方式生成的試卷均保存為Word文檔,而不是僅顯示在電腦屏幕上。這種功能設(shè)計(jì)便于教師進(jìn)行試卷管理,且與目前各個(gè)高校多數(shù)課程仍采用紙質(zhì)試卷的考試方式相適應(yīng)。
為了便于對(duì)試卷進(jìn)行管理,設(shè)計(jì)的試卷庫管理子系統(tǒng)能夠?qū)崿F(xiàn)對(duì)所有Word格式的試卷及其參考答案進(jìn)行保存、刪除、檢索、打印預(yù)覽、打印等功能。系統(tǒng)的通用性體現(xiàn)于即使不在本系統(tǒng)生成的試卷也能導(dǎo)入該試卷庫中進(jìn)行統(tǒng)一管理;同時(shí)也能將試卷庫中的試卷導(dǎo)出為Word格式的文件。系統(tǒng)能根據(jù)試卷ID號(hào)或年份、學(xué)期、考試對(duì)象、專業(yè)等各種組合模式查詢?cè)嚲韼?,有利于教師了解不同階段或不同專業(yè)學(xué)生的考試情況,為再次組卷提供了有效的參考價(jià)值。
模擬自測(cè)子系統(tǒng)主要是針對(duì)學(xué)生自主學(xué)習(xí)而設(shè)計(jì)的,具有自我打分評(píng)測(cè)功能。系統(tǒng)根據(jù)章節(jié)內(nèi)容、題型、難度等條件設(shè)置進(jìn)行選題,或者完全隨機(jī)選題。模擬練習(xí)后,系統(tǒng)能給出試題的答案、詳細(xì)分析過程等相關(guān)信息。
數(shù)據(jù)庫設(shè)計(jì)的合理與否,直接影響數(shù)據(jù)的完整性、安全性、程序運(yùn)行的效率和程序設(shè)計(jì)的復(fù)雜程度等。本系統(tǒng)程序是在PowerBuilder10.0環(huán)境下編寫的,因此試題庫和試卷庫均采用由PB自帶的ASA本地?cái)?shù)據(jù)庫;結(jié)合PowerScript語言與嵌入式SQL語句進(jìn)行編程,實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的各項(xiàng)功能操作[4]。
目前本系統(tǒng)由5個(gè)數(shù)據(jù)庫組成,其中4個(gè)數(shù)據(jù)庫分別存放不同課程的試題,第5個(gè)數(shù)據(jù)庫用來存放試卷。若增加新的課程,則系統(tǒng)能自動(dòng)增加新的數(shù)據(jù)庫,即數(shù)據(jù)庫可以動(dòng)態(tài)建立。每門課程的數(shù)據(jù)庫中分配7張表,分別為選擇題表、填空題表、判斷題表、計(jì)算題表、電路單元表、題數(shù)表和已用ID表,電路單元表中放的是這個(gè)科目中所有的電路單元名,題數(shù)表用于存放科目中每種題型中的題數(shù),已用ID表中存放的是用過的但被刪除的ID號(hào)。試卷庫由5張表構(gòu)成,用于存放試題、專業(yè)名和專業(yè)數(shù)、考試對(duì)象名/考試對(duì)象數(shù)、相關(guān)項(xiàng)目的數(shù)量和已用的ID列表等。
根據(jù)已經(jīng)輸入題庫的試題,本系統(tǒng)目前可針對(duì)4門課程進(jìn)行獨(dú)立出題或綜合出題。用戶按照條件設(shè)置組卷信息,組卷功能考慮周全,有較強(qiáng)的通用性,系統(tǒng)充分考慮教學(xué)需求,主要實(shí)現(xiàn)以下功能:
(1)可以對(duì)某一課程進(jìn)行單獨(dú)組卷,也可以任意組合多門課程的知識(shí)點(diǎn)按照比例設(shè)置進(jìn)行自動(dòng)組卷,或選擇手工逐題選題組卷。若需對(duì)別的課程組卷,則首先需要添加新的試題庫;
(2)在生成試卷后,如對(duì)某題不滿意,系統(tǒng)可以根據(jù)條件設(shè)置自動(dòng)替換該題;甚至讓系統(tǒng)重新生成新的試卷;
(3)系統(tǒng)可以根據(jù)相同設(shè)置的條件生成B卷,并有兩種模式可供選擇。一是允許和A卷有重復(fù),重復(fù)率可以選擇;二是不允許和A卷有重復(fù);
(4)能同時(shí)生成試卷的參考答案和詳細(xì)的解答過程。
系統(tǒng)功能實(shí)現(xiàn)的難點(diǎn)很多,主要如:試題的圖形顯示、試卷中試題以及其它試卷信息的拼接等;如何實(shí)現(xiàn)組卷參數(shù)的獲取,并能保證易于操作;如何使用OLE控件,并對(duì)內(nèi)嵌的WORD應(yīng)用程序進(jìn)行控制;如何使組卷的題目不重復(fù)等均為關(guān)鍵難點(diǎn)。
考慮到試題中會(huì)有大量的電路圖和公式等,所以僅用純文本的方法來保存和顯示試題是無法滿足要求的。在此通過調(diào)用Microsoft Office Word文字編輯器來實(shí)現(xiàn)該功能[5]。PowerBuilder 10.0提供了很好的軟件接口,通過加載OLE控件實(shí)現(xiàn)對(duì)Word外掛程序的鏈接,實(shí)現(xiàn)在PB應(yīng)用程序內(nèi)部調(diào)用和使用Word[6]。公式、圖片等試題信息通過Word文檔的處理,用戶可以在熟悉的環(huán)境下查看生成的試題,也可以在Word中輸入、更新、刪除和瀏覽題庫。
試題庫中的試題是以題為單位的,如何按照用戶意愿將查詢到的題目組合起來,以整張?jiān)嚲淼男问斤@示出來是系統(tǒng)開發(fā)的一個(gè)難點(diǎn)。在系統(tǒng)中內(nèi)嵌Word組件實(shí)現(xiàn)對(duì)試卷內(nèi)容的管理是個(gè)不錯(cuò)的選擇,但如何在PB中控制Word,如實(shí)現(xiàn)試卷的拼接、標(biāo)題插入、顯示、打印等操作就比較困難。使用Word中自動(dòng)生成VBA程序功能是解決該難點(diǎn)的一個(gè)主要途徑。
Microsoft Word是一個(gè)集成化環(huán)境,它集成了Microsoft Visual Basic,可以通過編程來實(shí)現(xiàn)對(duì)Word功能的擴(kuò)展。Microsoft Visual Basic在Word中的代碼即Word的宏,通過編寫Word宏,實(shí)現(xiàn)一些文檔處理的自動(dòng)化,如實(shí)現(xiàn)文檔的自動(dòng)備份、存盤等,擴(kuò)展Word文檔的功能。因此,本系統(tǒng)充分利用Word的特性,使用Word的VBA功能獲得“插入文件”的VBA代碼,將從數(shù)據(jù)庫中查找的題目以文件的形式存儲(chǔ),然后使用“插入文件”的VBA代碼將各個(gè)題目拼接成一張?jiān)嚲?。同樣的,利用VBA程序插入試卷標(biāo)題、題號(hào)和分值等試卷信息。系統(tǒng)最終生成的試卷格式為Microsoft Word文檔文件。
實(shí)現(xiàn)試題拼接的 VBA 函數(shù)為:OLE_1.Object.Application.Selection.InsertFile(filename)。
組卷參數(shù)是系統(tǒng)默認(rèn)或者由用戶設(shè)定的,如何滿足用戶各種組卷要求、用盡量人性化和簡(jiǎn)易化的程序界面獲取各種組合的組卷參數(shù)也是一個(gè)技術(shù)難點(diǎn)。問題的關(guān)鍵是如何權(quán)衡參數(shù)設(shè)置的多樣化和程序操作的簡(jiǎn)易化間的矛盾。本設(shè)計(jì)中,選擇以“向?qū)А钡男问胶褪褂靡晥D樹(TreeView)控件的方法,使參數(shù)的設(shè)置既符合人的一般思維習(xí)慣,又使得需反復(fù)設(shè)置的參數(shù)能在盡量少的界面上方便地設(shè)置。組卷參數(shù)分為宏觀參數(shù)和具體參數(shù),宏觀參數(shù)確定組卷的科目范圍和題目數(shù)量等;具體參數(shù)是每個(gè)題目的參數(shù),如科目、電路單元、題型和難度等。組卷參數(shù)設(shè)置的系統(tǒng)框圖如圖2所示。
圖2 組卷參數(shù)設(shè)置的子流程圖
如何隨機(jī)抽取試題,且使得試卷中的題目不重復(fù)是自動(dòng)組卷系統(tǒng)的關(guān)鍵難點(diǎn)[7]。重復(fù)表現(xiàn)為同一份試卷中相同的試題重復(fù)出現(xiàn),或者A、B兩份試卷中有相同的試題出現(xiàn)。同時(shí)同一組卷?xiàng)l件有可能查詢到多個(gè)結(jié)果。解決的辦法是,在可行性分析check()函數(shù)中,設(shè)立用于存放所有符合條件的試題的ID數(shù)組為my_id[],將已經(jīng)抽到的試題的ID號(hào)放在動(dòng)態(tài)數(shù)組used_ID[]中,選題時(shí)將符合條件的試題的ID和used_ID中的比較,如果該ID在used_ID中不存在,就將該題目ID放入my_id[]中,再用隨機(jī)數(shù)產(chǎn)生函數(shù)rand()隨機(jī)選取一個(gè)ID作為該題所選用題目的ID,然后再將該ID寫入到used_ID中。循環(huán)執(zhí)行上面步驟,直至抽完所有的題目,如此實(shí)現(xiàn)不重復(fù)抽題,且具有較大的隨機(jī)性。當(dāng)然,試題庫中有一定數(shù)量和分級(jí)難度的試題是有效生成高質(zhì)量試卷的前提保證。
本文實(shí)現(xiàn)的基于PowerBuilder10.0開發(fā)的通用試題庫與自動(dòng)組卷系統(tǒng)在實(shí)際教學(xué)應(yīng)用中獲得一定的成功,關(guān)鍵在于PB對(duì)數(shù)據(jù)庫操作的強(qiáng)大功能和其對(duì)軟件接口的廣泛支持。應(yīng)用程序通過OLE技術(shù)嵌入Word應(yīng)用程序,共享不同的應(yīng)用程序信息資源,實(shí)現(xiàn)文本、圖形、公式等為一體的復(fù)合文檔和文檔的編輯,以及對(duì)試題庫、試卷庫的實(shí)時(shí)管理和試卷、答案的控制輸出。有效獲取用戶組卷的參數(shù),并簡(jiǎn)化參數(shù)的設(shè)置,同時(shí)使用組卷向?qū)Ш鸵晥D樹相結(jié)合的方法,使得題庫管理、試卷庫管理、組卷過程等更符合人的一般思維方式,更人性化。由于模塊化設(shè)計(jì),本系統(tǒng)具有較大的通用性,較好地保證了系統(tǒng)的有效性、可擴(kuò)展性、開放性和可移植性。本系統(tǒng)已經(jīng)在本校相關(guān)專業(yè)的教學(xué)中應(yīng)用近兩年,為教師出卷提供了方便高效的工作平臺(tái),提高了教學(xué)效率,具有較好的實(shí)用和推廣價(jià)值。
[1]丁秀麗,林堅(jiān).基于DAO技術(shù)的中學(xué)信息技術(shù)等級(jí)考試考務(wù)管理系統(tǒng)的開發(fā)[J].計(jì)算機(jī)應(yīng)用研究,2005,19(6):130-131.
[2]潘應(yīng)暉.通用題庫管理系統(tǒng)開發(fā)[J].電腦知識(shí)與技術(shù),2009,5(5):1 035-1 037.
[3]陳加糧.試卷自動(dòng)生成系統(tǒng)的開發(fā)與實(shí)踐[J].懷化學(xué)院學(xué)報(bào),2010,29(11):75-78.
[4]解亞萍.基于PB開發(fā)環(huán)境中應(yīng)用軟件重用技術(shù)[J].隴東學(xué)院學(xué)報(bào),2009,20(5):16-18.
[5]陳特放,方斌.VC平臺(tái)下基于OLE的Word自動(dòng)化操作應(yīng)用[J].計(jì)算機(jī)應(yīng)用與軟件,2009,26(9):123-125.
[6]陳石友.利用OLE技術(shù)實(shí)現(xiàn)數(shù)據(jù)庫與Office文檔間的數(shù)據(jù)交換[J].電腦編程技巧與維護(hù),2011,(5):179-180.
[7]董晨,李繼芳,冒秉文.基于ASP隨機(jī)抽取自動(dòng)組卷系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2008,(12):88-91.