- 相關(guān)推薦
試卷生成系統(tǒng)
論文關(guān)鍵詞:試題庫(kù)系統(tǒng) 試卷生成 算法
論文摘要:教學(xué)評(píng)價(jià)是教學(xué)工作的一個(gè)重要環(huán)節(jié),通常的教學(xué)評(píng)價(jià)方式多為通過(guò)試卷進(jìn)行考試,因而試卷的質(zhì)量將直接影響到教學(xué)評(píng)價(jià)的結(jié)果。一般情況下,教師出試卷時(shí)要么到龐大的題庫(kù)里一道一道的把題目挑選出來(lái),或是從幾本相關(guān)的書里把題挑選出來(lái)組成一份試卷,這樣既費(fèi)時(shí)又費(fèi)力,而且很難保證試題的覆蓋面和把握試卷的難度。為了將老師從繁重的命題工作中解放出來(lái),為了提高命題的質(zhì)量和的現(xiàn)代化、科學(xué)化、規(guī)范化,本文開發(fā)一個(gè)試卷生成系統(tǒng)。
本文在充分的需求分析基礎(chǔ)上,設(shè)計(jì)和實(shí)現(xiàn)了一個(gè)試卷生成系統(tǒng),主要完成了手動(dòng)生成試卷、自動(dòng)生成試卷、抽取現(xiàn)有試卷和用戶管理等功能。通過(guò)測(cè)試,系統(tǒng)在Windows 98/me/2000/XP平臺(tái)下能穩(wěn)定運(yùn)行,且基本達(dá)到了預(yù)期的設(shè)計(jì)目標(biāo),有一定的實(shí)用價(jià)值。
Abstract :Value of teaching is an important tathe for teaching,usually a value of teaching is from a exam ,so a quality paper straight touches the value of teaching. The general situation ,teacher thinks out a paper,reach huge exam pool each finds out the question, or shoulder the question together out from several relevant books. Time-consuming and also strenuous like this, and very difficult to guarantee coverage rate and paper degree of difficulty of examination question. Helping the teacher disengages from the burdensome proposition about exam, In order to improve the quality and management proposition of the modern, scientific, standardized, the paper developed a test generation system.
Paper Generation System is designed and implemented based on the sufficient needs analysis in this paper,It mainly implements some functions include in manually and automatically generating papers,extrating some of existing papers,maintaining user information and so on ,the system can operate stably in Windows 98/me/2000/XP platform ,reach the expected goal and have some practical value.
Keywords: test library system;paper generation;algorithmic
前言
隨著技術(shù)的發(fā)展和普及,在我們的學(xué)習(xí)和日常生活中都離不開計(jì)算機(jī)技術(shù),大到科研的超級(jí)計(jì)算機(jī),小到我們?nèi)粘J褂玫氖痔犭娫挘瑢?shí)際都是計(jì)算機(jī)技術(shù)的應(yīng)用,對(duì)于學(xué)校、企事業(yè)單位來(lái)說(shuō),計(jì)算機(jī)特別是PC機(jī)已經(jīng)相當(dāng)普及,大家對(duì)計(jì)算機(jī)的操作更加熟悉,充分發(fā)揮設(shè)備潛能是一種節(jié)約的表現(xiàn),是一種美德。
設(shè)計(jì)編寫試卷生成系統(tǒng),是基于二種目的:一是充分利用現(xiàn)有的計(jì)算機(jī)系統(tǒng)減輕工作人員的勞動(dòng)強(qiáng)度。二是摒棄傳統(tǒng)的手工整理、以試卷(紙質(zhì))的形式存放到室,浪費(fèi)紙張等原,不利于保護(hù)。
一個(gè)好的試卷生成系統(tǒng),要求界面友好,能方便地生成試卷,試卷的維護(hù)(修改、刪除試題)操作簡(jiǎn)單,組卷靈活快捷,查詢?cè)囶}或試卷迅速,以適應(yīng)各種知識(shí)更新對(duì)試卷難度的要求,還要具有一定的安全性。為此,在對(duì)系統(tǒng)進(jìn)行概要設(shè)計(jì)時(shí),就充分考試慮到以上的因素,模塊圍繞實(shí)用性設(shè)計(jì),比如,編輯模塊就是為了實(shí)現(xiàn)試題的錄入、試題的維護(hù)、試卷的生成而設(shè)計(jì)的;查詢模塊是為了實(shí)現(xiàn)試題和試卷的快速查詢而設(shè)計(jì)的;系統(tǒng)管理是考慮系統(tǒng)的安全性,用戶名和密碼,整個(gè)設(shè)計(jì)簡(jiǎn)潔明了,同時(shí)也就方便了操作。
本軟件的開發(fā)成功為試卷的生成工作又添加了一款實(shí)用性較強(qiáng)的軟件,為試卷生成系統(tǒng)告別手工管理的時(shí)代又推進(jìn)了一大步。
1 緒論
1.1 開發(fā)背景與研究現(xiàn)狀
在以往的教學(xué)中,老師出試卷大多由手工出卷,這樣生成的試卷往往會(huì)有知識(shí)點(diǎn)分布太集中、難易程度不當(dāng)、分值分布不均等一些缺點(diǎn);這樣,既增加了老師的負(fù)擔(dān),也沒有達(dá)到很好考查學(xué)生學(xué)習(xí)的真實(shí)水平,造成教學(xué)上的失誤。
基于以上的原因,有很多從事軟件開發(fā)的人員,在試卷自動(dòng)生成方面做了很大的研究。目前這一領(lǐng)域也以良好的發(fā)展姿態(tài)而不斷進(jìn)步,早期已經(jīng)有了一些類似的系統(tǒng),但經(jīng)過(guò)軟件開發(fā)人不斷的完善,大致形成了具備如下功能的系統(tǒng):
刪除試題、批量錄入試題、試題交流、合并題庫(kù)、自定義試題參數(shù)等一些功能,其中試題交流功能非常實(shí)用,主要用于同事間交流試題。系統(tǒng)“體積”非常小,壓縮后只有幾百KB。平時(shí)只要將一些試題或從網(wǎng)絡(luò)下載的試題,按“學(xué)科”、“章節(jié)”、“知識(shí)點(diǎn)”、“題型”、“難易程度”五個(gè)參數(shù)進(jìn)行歸類,錄入題庫(kù),需要用時(shí),只要輸入一些查詢條件即可查出所要找的試題。生成試卷非常方便,只需幾分鐘就可以生成一份試卷,生成的試卷還配有答案,更重要的是軟件能與WROD的完美結(jié)合,試題、答案的編輯、試卷的排版打印全部由WORD來(lái)完成,試卷和答案都可保存為*.DOC格式。
組卷算法是該系統(tǒng)中的重點(diǎn),目前被使用的算法主要有三種,分別是隨機(jī)選取法,回溯試探法和遺傳算法。這三種算法各有特點(diǎn),隨機(jī)選取法結(jié)構(gòu)簡(jiǎn)單,對(duì)于單道題的抽取運(yùn)行速度較快,但是對(duì)于整個(gè)組卷過(guò)程來(lái)說(shuō)組卷成功率低,即使組卷成功,花費(fèi)時(shí)間也令人難以忍受,所以很少被使用。而回溯試探法,同樣結(jié)構(gòu)簡(jiǎn)單,但是組卷成功率很高,所以常被使用。遺傳算法是目前很流行的組卷方法,結(jié)合了前兩種算法的多個(gè)優(yōu)點(diǎn),體現(xiàn)了組卷的隨機(jī)性和科學(xué)性,被廣泛使用中。
可見,試卷自動(dòng)生成系統(tǒng)這方面的研究日益成熟,這不但減輕了教師的工作負(fù)擔(dān),也使得教學(xué)評(píng)價(jià)更加科學(xué)化、規(guī)范化,有利用事業(yè)的發(fā)展。
1.2論文組織
論文全面詳細(xì)地介紹了試卷生成系統(tǒng)的設(shè)計(jì)思想、實(shí)現(xiàn)原理和使用技巧。論文按如下方式組織。
第一部分是主要是對(duì)系統(tǒng)的開發(fā)背景和研究現(xiàn)狀進(jìn)行詳細(xì)的介紹。
第二部分主要是對(duì)開發(fā)工具的介紹。
第三部分是主要是對(duì)本系統(tǒng)做詳細(xì)的需求分析。
第四、五、六部分是本文的主要內(nèi)容,是軟件的開發(fā)設(shè)計(jì)。第四部分主要對(duì)于系統(tǒng)組卷的設(shè)計(jì),重點(diǎn)介紹了自動(dòng)生成試卷,手動(dòng)生成試卷和抽取現(xiàn)有試卷三種組卷算法。而第五部分是系統(tǒng)的實(shí)現(xiàn)部分,具體的分析了三種組卷算法的實(shí)現(xiàn)過(guò)程。同時(shí)也仔細(xì)說(shuō)明了系統(tǒng)實(shí)現(xiàn)過(guò)程中的關(guān)鍵技術(shù)。第六部分是系統(tǒng)的測(cè)試部分,利用測(cè)試實(shí)例來(lái)說(shuō)明系統(tǒng)的可用性和數(shù)據(jù)的準(zhǔn)確性。
2 開發(fā)工具簡(jiǎn)介
2.1 Visual Basic
Visual Basic是可視化的Basic,他創(chuàng)建應(yīng)用程序時(shí),不需要編寫大量的程序代碼來(lái)描述和控制界面元素的位置,大小等屬性,只需要簡(jiǎn)單的在屏幕中增加已經(jīng)建立的對(duì)象?梢暬幊痰囊粋(gè)突出特點(diǎn)就是其開發(fā)就像一個(gè)百寶箱,很多功能都集成在其之中,這就是IDE(Integrated Development Environment),即集成開發(fā)環(huán)境。IDE是指在相應(yīng)的開發(fā)平臺(tái)中集成了編輯器、編譯連接工具、控件器箱輔助工具。例如在VB的集成開發(fā)環(huán)境中就包括了以下一些主要元素:工具欄、工具箱、工程器窗口、屬性窗口、窗體設(shè)計(jì)器、代碼編輯器窗口等;
VB的程序設(shè)計(jì)風(fēng)格與傳統(tǒng)設(shè)計(jì)方法不同,它是面向?qū)ο蠛褪录某绦蛟O(shè)計(jì)方法。面向?qū)ο笫墙陙?lái)出現(xiàn)的程序設(shè)計(jì)技術(shù),它是一種全新的設(shè)計(jì)和構(gòu)造軟件的思維方法。在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,“對(duì)象”是系統(tǒng)中的基本運(yùn)行實(shí)體。例如窗體和控件,就是VB的對(duì)象,VB中的對(duì)象是由系統(tǒng)設(shè)計(jì)好提供給用戶使用的。對(duì)象建立、移動(dòng)、增刪、縮放操作也是由系統(tǒng)規(guī)定好的,這比一般的面向?qū)ο蟪绦蛟O(shè)計(jì)中的操作要簡(jiǎn)單的多,因此本軟件選擇了VB6.0作為開發(fā)工具。
2.1.1 主要控件及其屬性簡(jiǎn)介
Form類的控件:
Picture屬性:用來(lái)設(shè)置窗體的背景圖象。
Visible屬性:界面是否顯示。
BackColor屬性:用來(lái)控制程序界面的顏色。
Font屬性:用來(lái)控制程序界面的字體。
StartUpPosition屬性:用來(lái)控制程序運(yùn)行時(shí)界面的顯示位置。
ImageList類的控件:
ImageHeight屬性:用來(lái)設(shè)置圖的高度。
ImageWidth屬性:用來(lái)設(shè)置圖的寬度。
MSFlexGrid控件:
Rows屬性:返回或設(shè)置在一個(gè) MSHFlexGrid 中的總行數(shù)。
Cols屬性:返回或設(shè)置在一個(gè) MSHFlexGrid 中的總列數(shù)。
AllowBigSelectorBoolean屬性: 返回/設(shè)置一個(gè)值,定義當(dāng)在行或列的頭部單擊時(shí),是否該行或列將整個(gè)被選中。
EnterCell的事件:當(dāng)一個(gè)新的單元成為當(dāng)前活動(dòng)單元時(shí)。
CommandButton控件:
Caption屬性:用來(lái)指定CommandButton的標(biāo)題。
Click事件:用來(lái)添加按鈕的單擊事件所執(zhí)行的程序代碼。
TreeView控件:顯示 Node 對(duì)象的分層列表,每個(gè) Node 對(duì)象均由一個(gè)標(biāo)簽和一個(gè)可選的位圖組成。
ImageList屬性:指定的ImageList控件保存在Node對(duì)象中使用的點(diǎn)位圖和圖標(biāo)。
Node屬性:可以表現(xiàn)為文本,點(diǎn)位圖,線條和加減號(hào)的8種組合之一。
NodeClick時(shí)間:用來(lái)添加按鈕的單擊事件所執(zhí)行的程序代碼。
2.1.2 數(shù)據(jù)庫(kù)連接方式
簡(jiǎn)單的文本文件到各種復(fù)雜的關(guān)系型數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)應(yīng)用程序需要面對(duì)各種各樣的數(shù)據(jù)源。Visual basic 6.0提供ADO(Active Data Objects)作為應(yīng)用程序和OLE-DB連接的橋梁。
ADO,即Active數(shù)據(jù)對(duì)象(Active Data Objects):實(shí)際是一種提供訪問(wèn)各種數(shù)據(jù)類型的連接機(jī)制。ADO設(shè)計(jì)為一種極簡(jiǎn)單的格式,通過(guò)ODBC的方法同數(shù)據(jù)庫(kù)接口相連。用戶可以使用任何一種ODBC數(shù)據(jù)源,即不僅適合于SQL Server、Oracle、Access等數(shù)據(jù)庫(kù)應(yīng)用程序,也適合于Excel表格、文本文件、圖形文件和無(wú)格式的數(shù)據(jù)文件。ADO是基于OLE-DB之上的技術(shù),因此ADO通過(guò)其內(nèi)部的屬性和方法提供統(tǒng)一的數(shù)據(jù)訪問(wèn)接口方法。本系統(tǒng)就是用ADO對(duì)象來(lái)連接數(shù)據(jù)庫(kù)的。
以下是本系統(tǒng)開發(fā)過(guò)程中用到的一些ADO對(duì)象:
Connection對(duì)象:通過(guò)“連接”可從應(yīng)用程序訪問(wèn)數(shù)據(jù)源,連接是交換數(shù)據(jù)所必需的環(huán)境。對(duì)象模型使用Connection對(duì)象使連接概念得以具體。
Recordset對(duì)象:表示的是來(lái)自基本表或命令執(zhí)行結(jié)果的記錄全集。Recordset 對(duì)象可支持兩類更新:立即更新和批更新。使用立即更新,一旦調(diào)用Update方法,對(duì)數(shù)據(jù)的所有更改將被立即寫入基本數(shù)據(jù)源。也可以使用AddNew和Update方法將值的數(shù)組作為參數(shù)傳遞,同時(shí)更新記錄的若干字段。
Field對(duì)象:代表使用普通數(shù)據(jù)類型的數(shù)據(jù)的列。Recordset對(duì)象含有由Field對(duì)象組成的Fields集合。每個(gè)Field對(duì)象對(duì)應(yīng)于Recordset中的一列。使用Field對(duì)象的Value屬性可設(shè)置或返回當(dāng)前記錄的數(shù)據(jù)。
以下是本程序中用到的方法:
AddNew方法:創(chuàng)建可更新Recordset對(duì)象的新記錄。
Open方法(ADO Connection):打開到數(shù)據(jù)源的連接。
Open方法(ADO Recordset):打開記錄集。
Close方法:關(guān)閉打開的對(duì)象及任何相關(guān)對(duì)象。
Execute方法:執(zhí)行指定的查詢、SQL語(yǔ)句、存儲(chǔ)過(guò)程或特定提供者的文本等內(nèi)容。
2.2 SQL Server2000
SQL Server 是一個(gè)關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),它最初是由Microsoft Sybase 和Ashton-Tate三家公司共同開發(fā)的。于1988 年推出了第一個(gè)OS/2 版本在Windows NT 推出后,Microsoft與Sybase 在SQL Server 的開發(fā)上就分道揚(yáng)鑣了。Microsoft 將SQL Server 移植到Windows NT系統(tǒng)上專注于開發(fā)推廣SQL Server 的Windows NT 版本,Sybase 則較專注于SQL Server在UNIX 操作系統(tǒng)上的應(yīng)用。在系統(tǒng)中用到的是Microsoft SQL Server 以后簡(jiǎn)稱為SQL Server或MS SQL Server。
SQL Server 2000 是Microsoft 公司推出的SQL Server 數(shù)據(jù)庫(kù)管理系統(tǒng)的最新版本該版本繼承了SQL Server 7.0 版本的優(yōu)點(diǎn)。同時(shí)又比它增加了許多更先進(jìn)的功能具有使用方便可伸縮性好與相關(guān)軟件集成程度高等優(yōu)點(diǎn),可跨越從運(yùn)行Microsoft Windows 98 的膝上型電腦到運(yùn)行Microsoft Windows 2000 的大型多處理器的服務(wù)器等多種平臺(tái)使用。
目前被廣泛使用的數(shù)據(jù)庫(kù)有SQL Server、Oracle、Access等。Access是一個(gè)可視化工具,是風(fēng)格與Windows完全一樣,用戶想要生成對(duì)象并應(yīng)用,只要使用鼠標(biāo)進(jìn)行拖放即可,非常直觀方便。系統(tǒng)還提供了表生成器、查詢生成器、報(bào)表設(shè)計(jì)器以及數(shù)據(jù)庫(kù)向?qū)、表向(qū)、查詢向(qū)А⒋绑w向?qū)、?bào)表向?qū)У裙ぞ,使得操作?jiǎn)便,容易使用和掌握。但是access數(shù)據(jù)庫(kù)有一定的極限,如果數(shù)據(jù)達(dá)到100M左右,很容易造成服務(wù)器iis假死,或者消耗掉服務(wù)器的內(nèi)存導(dǎo)致服務(wù)器崩潰。
而SQL Server是基于服務(wù)器端的中型的數(shù)據(jù)庫(kù),可以適合大容量數(shù)據(jù)的應(yīng)用,在功能上管理上也要比Access要強(qiáng)得多。在處理海量數(shù)據(jù)的效率,后臺(tái)開發(fā)的靈活性,可擴(kuò)展性等方面強(qiáng)大。因?yàn)楝F(xiàn)在數(shù)據(jù)庫(kù)都使用標(biāo)準(zhǔn)的SQL對(duì)數(shù)據(jù)庫(kù)進(jìn)行管理,所以如果是標(biāo)準(zhǔn)SQL語(yǔ)言,兩者基本上都可以通用的。SQL Server還有更多的擴(kuò)展,可以用存儲(chǔ)過(guò)程,數(shù)據(jù)庫(kù)大小無(wú)極限限制。因?yàn)楸鞠到y(tǒng)需求一個(gè)中型,而且安全性強(qiáng)的數(shù)據(jù)庫(kù),所以選擇SQL Server做為該系統(tǒng)的數(shù)據(jù)庫(kù)。
2.3 SQL 語(yǔ)言
SQL(Structured Query Language,結(jié)構(gòu)查詢語(yǔ)言)是一個(gè)功能強(qiáng)大的數(shù)據(jù)庫(kù)語(yǔ)言。SQL通常使用于數(shù)據(jù)庫(kù)的通訊。ANSI(美國(guó)國(guó)家標(biāo)準(zhǔn)學(xué)會(huì))聲稱,SQL是關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)的標(biāo)準(zhǔn)語(yǔ)言。SQL語(yǔ)句通常用于完成一些數(shù)據(jù)庫(kù)的操作任務(wù),比如在數(shù)據(jù)庫(kù)中更新數(shù)據(jù),或者從數(shù)據(jù)庫(kù)中檢索數(shù)據(jù)。使用SQL的常見關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)有:Oracle、 Sybase、 Microsoft SQL Server、 Access等等。雖然絕大多數(shù)的數(shù)據(jù)庫(kù)系統(tǒng)使用SQL,但是它們同樣有它們自立另外的專有擴(kuò)展功能用于它們的系統(tǒng)。但是,標(biāo)準(zhǔn)的SQL命令,比如“Select”、 “Insert”、 “Update”、 “Delete” 、“Create”和 “Drop”常常被用于完成絕大多數(shù)數(shù)據(jù)庫(kù)的操作。MS SQL Server 就是用的Transact- SQL。SQL語(yǔ)言有著非常突出的優(yōu)點(diǎn),SQL語(yǔ)言是非過(guò)程化的語(yǔ)言、統(tǒng)一的語(yǔ)言、是所有關(guān)系數(shù)據(jù)庫(kù)的語(yǔ)言。
非過(guò)程化語(yǔ)言:SQL是一個(gè)非過(guò)程化的語(yǔ)言,因?yàn)樗淮翁幚硪粋(gè)記錄,對(duì)數(shù)據(jù)提供自動(dòng)導(dǎo)航。SQL允許用戶在高層的數(shù)據(jù)結(jié)構(gòu)上工作,而不對(duì)單個(gè)記錄進(jìn)行操作,可操作記錄集,所有SQL 語(yǔ)句接受集合作為輸入,返回集合作為輸出。SQL的集合特性允許一條SQL語(yǔ)句的結(jié)果作為另一條SQL語(yǔ)句的輸入。
統(tǒng)一的語(yǔ)言:SQL可用于所有用戶的DB活動(dòng)模型,包括系統(tǒng)管理員、數(shù)據(jù)庫(kù)管理員、 應(yīng)用程序員、決策支持系統(tǒng)人員及許多其它類型的終端用戶。
所有關(guān)系數(shù)據(jù)庫(kù)的公共語(yǔ)言:由于所有主要的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)都支持SQL語(yǔ)言,用戶可將使用SQL的技能從一個(gè)RDBMS(關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng))轉(zhuǎn)到另一個(gè),所有用SQL編寫的程序都是可以移植的。
SQL為許多任務(wù)提供了命令,其中包括:查詢數(shù)據(jù)、在表中插入、修改和刪除記錄、建立、修改和刪除數(shù)據(jù)對(duì)象、控制對(duì)數(shù)據(jù)和數(shù)據(jù)對(duì)象的存取、保證數(shù)據(jù)庫(kù)一致性和完整性等。
以前的數(shù)據(jù)庫(kù)管理系統(tǒng)為上述各類操作提供單獨(dú)的語(yǔ)言,而SQL 將全部任務(wù)統(tǒng)一在一種語(yǔ)言中。
SQL功能強(qiáng)大,是一種完備的數(shù)據(jù)處理語(yǔ)言,不僅用于數(shù)據(jù)庫(kù)查詢,而且用于數(shù)據(jù)庫(kù)中的數(shù)據(jù)修改和更新,概括起來(lái),它可以分成以下幾組:
DML(Data Manipulation Language,數(shù)據(jù)操作語(yǔ)言):用于檢索或者修改數(shù)據(jù);
DDL(Data Definition Language,數(shù)據(jù)定義語(yǔ)言):用于定義數(shù)據(jù)的結(jié)構(gòu),比如 創(chuàng)建、修改或者刪除數(shù)據(jù)庫(kù)對(duì)象;
DCL(Data Control Language,數(shù)據(jù)控制語(yǔ)言):用于定義數(shù)據(jù)庫(kù)用戶的權(quán)限。
3 需求分析
考試是整個(gè)教學(xué)過(guò)程中的一個(gè)重要環(huán)節(jié),它是對(duì)學(xué)生所學(xué)知識(shí)和能力的一種評(píng)價(jià),也是衡量教師教學(xué)效果優(yōu)劣的一種測(cè)量手段。但是,目前考試的實(shí)施過(guò)程不完全科學(xué),命題內(nèi)容,評(píng)分標(biāo)準(zhǔn)等缺乏普遍的可比性,考試不夠客觀和準(zhǔn)確。隨著科學(xué)的迅速發(fā)展和廣泛應(yīng)用,計(jì)算機(jī)技術(shù)已進(jìn)入現(xiàn)代教育領(lǐng)域,并形成了一門新興的邊緣科學(xué)—計(jì)算機(jī)輔助教學(xué)(Computer Aided Instruction,CAI)。
3.1用戶需求
利用計(jì)算機(jī)建立試題庫(kù),實(shí)現(xiàn)計(jì)算機(jī)自動(dòng)選題組卷,是CAI工程的重要組成部分,也是實(shí)現(xiàn)教考分離的一個(gè)重要手段。利用計(jì)算機(jī)組卷,不僅能節(jié)省教師的寶貴時(shí)間,提高工作效率,而且能消除出卷人主觀意識(shí)的影響,使考試更加標(biāo)準(zhǔn)化,更加客觀,真實(shí),全面地反映反映教學(xué)的實(shí)際效果,有利于教學(xué)質(zhì)量的提高。建立了試題庫(kù)系統(tǒng)以后,可實(shí)行教考分離,促使任課老師必須按照教學(xué)大綱的要求認(rèn)真?zhèn)湔n,認(rèn)真組織教學(xué)內(nèi)容,改進(jìn)教學(xué)方法,對(duì)提高教學(xué)質(zhì)量和整體教學(xué)水平有著非常重要的意義。每次考試后,還可利用計(jì)算機(jī)對(duì)試卷和考試分?jǐn)?shù)進(jìn)行分析和評(píng)價(jià),使考試這一教學(xué)環(huán)節(jié)更加科學(xué)化和規(guī)范化。
作為試題庫(kù)系統(tǒng)中的一部分,試卷生成系統(tǒng)必須滿足如下需求:
。1)靈活多樣的組卷方式,如手工組卷和自動(dòng)組卷。
。2)既能臨時(shí)生成試卷,又能直接使用以前生成的試卷,也就是要求能對(duì)生成的試卷進(jìn)行保存,以便下次直接使用,并能刪除不再需要的試卷。
。3)試卷的保密性要求,只有授權(quán)人員才能生成和查閱試卷。
(4)試卷生成速度不宜太慢。
(5)生成的試卷按照規(guī)定的模板輸出,并能導(dǎo)出到word文檔中。
。6)生成的試卷既可以直接打印,也可以在word中修改和打印。
。7)友好的用戶界面。
3.2功能需求
本系統(tǒng)是試卷生成系統(tǒng),主要有三方面的功能需求,其分別是:
(1)抽取現(xiàn)有試卷:為了用戶能方便現(xiàn)有的試卷,此模塊主要有預(yù)覽試卷,保存答案,刪除試卷三大功能。
。2)手動(dòng)生成試卷:為了能按照用戶的意愿組卷,用戶可以按試題所涉及的知識(shí)點(diǎn)瀏覽各種題型,生成一份知識(shí)覆蓋面廣泛的試卷,并能保存試卷。
。3)自動(dòng)生成試卷:用戶能選擇生成試卷的題型,試題數(shù)量,試題難度,以及試卷分值,且有預(yù)覽試卷,預(yù)覽答案,保存試卷和答案的功能。
3.3 系統(tǒng)流程圖
根據(jù)對(duì)用戶的,本系統(tǒng)有三類用戶使用,分別是管理員,教務(wù)管理員和教師。這三種身份的人具有不同權(quán)限,管理員負(fù)責(zé)管理系統(tǒng)帳號(hào);教務(wù)管理員負(fù)責(zé)管理試題、審核試題、打印試題;教師只能瀏覽和根據(jù)需要組卷。本系統(tǒng)主要是對(duì)試題組卷的管理,根據(jù)需求分析,可以得到系統(tǒng)流程如圖3-1所示。
SHAPE \* MERGEFORMAT
圖3-1 系統(tǒng)總流程圖
3.4 性能需求
3.4.1 加載數(shù)據(jù)效率要求
本系統(tǒng)的使用不受時(shí)間限制,可以24小時(shí)正常使用,對(duì)于用戶登陸,試卷預(yù)覽,答案預(yù)覽,試卷生成功能響應(yīng)時(shí)間不宜超過(guò)5秒鐘。
3.4.2 界面風(fēng)格要求
整體以白色和淡藍(lán)色為主,輔助米黃色和淡綠色給人清新,舒坦的感覺,在1024*768分辨率下達(dá)到最佳顯示效果,界面簡(jiǎn)潔清爽,不能過(guò)于復(fù)雜。
3.5 開發(fā)
3.5.1 軟件環(huán)境
操作系統(tǒng): Windows98以上/ME/2000/XP等
數(shù)據(jù)庫(kù): SQL Server 2000
開發(fā): Visual Basic
開發(fā)工具: VB6.0
3.5.2 硬件環(huán)境
CPU:P = 2 \* ROMAN II200以上
內(nèi)存:256MB以上
硬盤:2.1GB以上(可用空間最好在160MB以上)
4 系統(tǒng)設(shè)計(jì)
系統(tǒng)設(shè)計(jì)的目的是確定系統(tǒng)如何完成預(yù)定的任務(wù),也就是確定系統(tǒng)的配置方案,并且進(jìn)而確定組成系統(tǒng)的每個(gè)程序的結(jié)構(gòu)。首先設(shè)想完成系統(tǒng)功能的若干種合理的物理方案,分析員應(yīng)該仔細(xì)比較這些方案,并且和用戶共同選定一個(gè)最佳方案,然后,進(jìn)行軟件結(jié)構(gòu)設(shè)計(jì),確定軟件由哪些模塊組成以及這些模塊之間的動(dòng)態(tài)調(diào)用關(guān)系。進(jìn)行軟件結(jié)構(gòu)設(shè)計(jì)時(shí)應(yīng)該遵循的最主要的原理是模塊獨(dú)立原理,也就是說(shuō):軟件應(yīng)該由一組完成相對(duì)獨(dú)立的子功能模塊組成,這些模塊之間的接口關(guān)系應(yīng)盡量簡(jiǎn)單。
自頂向下逐步求精是進(jìn)行軟件結(jié)構(gòu)設(shè)計(jì)的常用途經(jīng),在進(jìn)行詳細(xì)的過(guò)程設(shè)計(jì)和編寫程序之前,首先進(jìn)行結(jié)構(gòu)設(shè)計(jì),其好處在于可以在軟件開發(fā)的早期站在全局高度對(duì)軟件結(jié)構(gòu)進(jìn)行優(yōu)化,在這個(gè)時(shí)期進(jìn)行優(yōu)化付出的代價(jià)不高,卻可以使軟件質(zhì)量得到重大改進(jìn)。
試題管理系統(tǒng)和試卷生成系統(tǒng)是兩個(gè)連在一起的系統(tǒng),而本系統(tǒng)主要介紹的就是試卷生成系統(tǒng)的設(shè)計(jì)和方法。
4.1 系統(tǒng)功能模塊圖
根據(jù)需求分析,將系統(tǒng)分為四個(gè)模塊:系統(tǒng)管理模塊,試卷生成管理模塊,數(shù)據(jù)庫(kù)管理系統(tǒng),系統(tǒng)幫助模塊。系統(tǒng)功能模塊結(jié)構(gòu)如圖4-1所示。
SHAPE \* MERGEFORMAT
圖4-1 系統(tǒng)功能模塊圖
下面對(duì)各功能模塊的子功能進(jìn)行較詳細(xì)的討論。
(1) 系統(tǒng)模塊
該模塊包括用戶管理模塊和用戶密碼管理模塊。系統(tǒng)啟動(dòng)時(shí)調(diào)用此模塊,要求用戶先進(jìn)行登陸。登陸功能模塊如圖4-2所示。
SHAPE \* MERGEFORMAT
圖4-2 登陸模塊功能圖
(2) 試卷生成管理模塊
試卷生成管理模塊主要包括如下子模塊:
n 抽取現(xiàn)有試卷模塊:顯示預(yù)覽試卷,保存答案,刪除試卷功能。
n 手動(dòng)生成試卷模塊:顯示加入試卷,保存試卷功能。
n 自動(dòng)生成模塊:顯示生成試卷,預(yù)覽試卷,預(yù)覽答案,保存試卷功能。
詳細(xì)的試卷生成管理功能模塊如圖4-3所示。
SHAPE \* MERGEFORMAT
圖4-3 試卷生成管理模塊功能圖
(3) 數(shù)據(jù)庫(kù)管理模塊主要包括數(shù)據(jù)庫(kù)還原和數(shù)據(jù)庫(kù)備份。數(shù)據(jù)庫(kù)管理模塊結(jié)構(gòu)如圖4-4所示。
SHAPE \* MERGEFORMAT
圖4-4 數(shù)據(jù)庫(kù)管理模塊功能圖
(4) 系統(tǒng)幫助模塊主要包括系統(tǒng)幫助和系統(tǒng)關(guān)于。系統(tǒng)幫助模塊結(jié)構(gòu)如圖4-5所示。
SHAPE \* MERGEFORMAT
圖4-5 系統(tǒng)幫助模塊功能圖
4.2 數(shù)據(jù)表設(shè)計(jì)
根據(jù)系統(tǒng)功能設(shè)計(jì),把數(shù)據(jù)庫(kù)命名:STGL,在SQL Server 2000數(shù)據(jù)庫(kù)創(chuàng)建了題型表、難度程度表、出卷人表、用戶信息表等。各數(shù)據(jù)表的具體情況如表1至表9所示。
表1 用戶信息表(usermanagement)
表2 題型表(TX)
表3 難度程度表(NYD)
表4 選擇題表(selects)
表5 填空題表(adds)
表6 簡(jiǎn)答題表(ask)
表7 閱讀程序題表(YDCX)
表8 出卷人表(SJ)
表9 已存試卷表(SJT)
4.3 組卷算法
4.3.1 現(xiàn)有算法分析
自動(dòng)組卷是考試系統(tǒng)自動(dòng)化或半自動(dòng)化操作的核心目標(biāo)之一,而如何保證生成的試卷能最大程度的滿足用戶的不同需要,并具有隨機(jī)性、科學(xué)性、合理性,這是實(shí)現(xiàn)中的一個(gè)難點(diǎn)。尤其在交互式下用戶對(duì)于組卷速度要求較高,而一個(gè)理論上較完美的算法可能會(huì)以犧牲時(shí)間作為代價(jià),往往不能達(dá)到預(yù)期的效果。因此,選擇一個(gè)高效、科學(xué)、合理的算法是自動(dòng)組卷的關(guān)鍵。
以往的具有自動(dòng)組卷功能的考試系統(tǒng)大多采用隨機(jī)選取法和回溯試探法。隨機(jī)選取法根據(jù)狀態(tài)空間的控制指標(biāo),由隨機(jī)的抽取一道試題放入試題庫(kù),此過(guò)程不斷重復(fù),直到組卷完畢,或已無(wú)法從題庫(kù)中抽取滿足控制指標(biāo)的試題為止。該方法結(jié)構(gòu)簡(jiǎn)單,對(duì)于單道題的抽取運(yùn)行速度較快,但是對(duì)于整個(gè)組卷過(guò)程來(lái)說(shuō)組卷成功率低,即使組卷成功,花費(fèi)時(shí)間也令人難以忍受。尤其是當(dāng)題庫(kù)中各狀態(tài)類型平均出題量較低時(shí),組卷往往以失敗而告終。
回溯試探法這是將隨機(jī)選取法產(chǎn)生的每一狀態(tài)類型紀(jì)錄下來(lái),當(dāng)搜索失敗時(shí)釋放上次紀(jì)錄的狀態(tài)類型,然后再依據(jù)一定的規(guī)律變換一種新的狀態(tài)類型進(jìn)行試探,通過(guò)不斷的回溯試探直到試卷生成完畢或退回出發(fā)點(diǎn)為止,這種有條件的深度優(yōu)先算法,對(duì)于狀態(tài)類型和出題量都較少的題庫(kù)系統(tǒng)而言,組卷成功率較好。
分析上述兩種算法的優(yōu)缺點(diǎn),不難發(fā)現(xiàn),在限制條件狀態(tài)空間的控制下,隨機(jī)選取法有時(shí)能夠抽取出一組令用戶滿意的試題。只不過(guò)由于它隨機(jī)選取試題的范圍太大,無(wú)法確定目前條件下哪些區(qū)域能夠抽取合適的試題,反而可能在那些已經(jīng)證明是無(wú)法抽取合適試題的區(qū)域內(nèi)反復(fù)選題,進(jìn)行大量的無(wú)效操作進(jìn)入死循環(huán),最終導(dǎo)致組卷失敗;厮菰囂椒ńM卷成功率高,但它是以犧牲大量的時(shí)間為代價(jià)的,由于本軟件只是個(gè)小型的單科考試組卷系統(tǒng),結(jié)構(gòu)簡(jiǎn)單,出題量也較少,所以本系統(tǒng)選擇相對(duì)簡(jiǎn)單,組卷成功率較好的回溯試探法進(jìn)行組卷。
4.3.2 回溯試探法的應(yīng)用
回溯算法也叫試探法,它是一種系統(tǒng)地搜索問(wèn)題的解的方法。回溯算法的基本思想是:從一條路往前走,能進(jìn)則進(jìn),不能進(jìn)則退回來(lái),換一條路再試。
用回溯算法解決問(wèn)題的一般步驟為:
1、定義一個(gè)解空間,它包含問(wèn)題的解;
2、利用適于搜索的方法組織解空間;
3、利用深度優(yōu)先法搜索解空間;
4、利用限界函數(shù)避免移動(dòng)到不可能產(chǎn)生解的子空間。
問(wèn)題的解空間通常是在搜索問(wèn)題的解的過(guò)程中動(dòng)態(tài)產(chǎn)生的,這是回溯算法的一個(gè)重要特性。
回溯法是一個(gè)既帶有系統(tǒng)性又帶有跳躍性的的搜索算法。它在包含問(wèn)題的所有解的解空間樹中,按照深度優(yōu)先的策略,從根結(jié)點(diǎn)出發(fā)搜索解空間樹。算法搜索至解空間樹的任一結(jié)點(diǎn)時(shí),總是先判斷該結(jié)點(diǎn)是否肯定不包含問(wèn)題的解。如果肯定不包含,則跳過(guò)對(duì)以該結(jié)點(diǎn)為根的子樹的系統(tǒng)搜索,逐層向其祖先結(jié)點(diǎn)回溯。否則,進(jìn)入該子樹,繼續(xù)按深度優(yōu)先的策略進(jìn)行搜索;厮莘ㄔ谟脕(lái)求問(wèn)題的所有解時(shí),要回溯到根,且根結(jié)點(diǎn)的所有子樹都已被搜索遍才結(jié)束。而回溯法在用來(lái)求問(wèn)題的任一解時(shí),只要搜索到問(wèn)題的一個(gè)解就可以結(jié)束。
搜索:全面訪問(wèn)所有可能的情況,分為兩種:不考慮給定問(wèn)題的特有性質(zhì),按事先頂好的順序,依次運(yùn)用規(guī)則,即盲目搜索的方法;另一種則考慮問(wèn)題給定的特有性質(zhì),選用合適的規(guī)則,提高搜索的效率,即啟發(fā)式的搜索。
本系統(tǒng)使用的是回溯法的啟發(fā)式搜索,以試題題型,試題分值和選題數(shù)量為約束條件進(jìn)行隨機(jī)搜索,而把設(shè)置的試卷總分?jǐn)?shù)作為一個(gè)解空間。如果各題型分值之和等于用戶設(shè)置的試卷總分?jǐn)?shù),則產(chǎn)生一個(gè)有效解,系統(tǒng)生成一份試卷,試題的題型,編號(hào),分值等信息儲(chǔ)存進(jìn)試題庫(kù)表中。通過(guò)系統(tǒng)的預(yù)覽試卷功能,系統(tǒng)通過(guò)所存信息搜索數(shù)據(jù)庫(kù),獲取試題內(nèi)容,并輸入Word文檔中組成一份完整試卷。
4.4 自動(dòng)組卷
自動(dòng)組卷是時(shí)系統(tǒng)根據(jù)用戶要求,隨機(jī)選取試題,組成一份完整的試卷。本系統(tǒng)使用的是回溯探取法隨機(jī)選題。其主要過(guò)程如下:
(1)用戶輸入選題要求,如各題型數(shù)量,題型分值和題型難度,并設(shè)置試卷總分?jǐn)?shù)。
。2)初始化隨機(jī)數(shù)生成器。
(3)系統(tǒng)根據(jù)題型數(shù)量和題型難度要求在各題型表中隨機(jī)抽取試題,將抽取到的試題的“編號(hào)”、“試題類型”、“分值”等信息存入臨時(shí)表LSSJ中,并對(duì)其進(jìn)行排序和比較,如有重復(fù)則返回繼續(xù)搜索,防止試題被重復(fù)選取,一直到抽取試題數(shù)等于用戶設(shè)置的各題型的試題數(shù)量。
。4)系統(tǒng)自動(dòng)判斷用戶設(shè)置的試卷總分值與試題總分值是否相等,是則生成試卷,并將試題信息“編號(hào)”、“分值”、“難度”等信息存入數(shù)據(jù)庫(kù)表SJT中,且生成“試卷代號(hào)”、“試卷創(chuàng)建者”、并判斷“試卷難度”,存入數(shù)據(jù)庫(kù)表SJ中。否則試卷生成失敗,并清空臨時(shí)表SJ中所有信息。
。5)設(shè)置試卷模板。
(6)預(yù)覽試卷,系統(tǒng)根據(jù)數(shù)據(jù)庫(kù)表SJT中信息搜索題庫(kù)試題內(nèi)容,并按設(shè)置好的試卷模板導(dǎo)入Word中,生成一份完整的試卷,并以*.doc文件的形式保存。
自動(dòng)生成試卷的流程如圖4-9所示。
4.5 手動(dòng)組卷
由于自動(dòng)生成的試卷,對(duì)于試卷知識(shí)覆蓋面的問(wèn)題不好控制,為了解決這各問(wèn)題,所以本軟件增加了另一種組卷方式,也就是手動(dòng)生成試卷。此組卷方式的優(yōu)點(diǎn)在于,系統(tǒng)將各題型的試題具體的分到了此科考試的具體章節(jié)和知識(shí)點(diǎn)。用戶可以根據(jù)具體章節(jié)和知識(shí)點(diǎn)瀏覽此知識(shí)點(diǎn)下的各試題,并可以選擇加入試卷,組成一份知識(shí)覆蓋面廣的試卷。其主要組卷過(guò)程如下:
。1)用戶選擇試題題型,題型分值,試題數(shù)量和知識(shí)點(diǎn),并設(shè)置試卷總分值,系統(tǒng)根據(jù)用戶選擇的題型和知識(shí)點(diǎn)顯示所有試題。
。2)用戶選擇試題,試題的“編號(hào)”、“難度”、“題型”等信息存入臨時(shí)表LSST中,如果重復(fù)選題,則系統(tǒng)提示“您已選擇此試題!”,否則系統(tǒng)提示“試題添加成功!”。
。3)生成試卷,系統(tǒng)判斷用戶設(shè)置分?jǐn)?shù)是否與試題總分?jǐn)?shù)相等,是則生成一份完整的試卷,并將試題的“編號(hào)”、“難度”、“分值”、“類型”等信息存入數(shù)據(jù)庫(kù)表SJT中。且生成“試卷代號(hào)、”試卷創(chuàng)建者“,并判斷”試卷難度“,存入數(shù)據(jù)庫(kù)表SJ中。否則試卷生成失敗,提示用戶“您生成的試卷分值與設(shè)置的試卷分值不等,試卷生成失。 。
。4)設(shè)置試卷模板。
。5)預(yù)覽試卷,系統(tǒng)根據(jù)數(shù)據(jù)庫(kù)表SJT中信息搜索題庫(kù)試題內(nèi)容,并按設(shè)置好的試卷模板導(dǎo)入Word中,生成一份完整的試卷,并以*.doc文件的形式保存。
SHAPE \* MERGEFORMAT
圖4-9 自動(dòng)生成試卷流程圖
手動(dòng)生成試卷的流程如圖4-10所示。
SHAPE \* MERGEFORMAT
圖4-10 手動(dòng)生成試卷流程圖
4.6 抽取現(xiàn)有試卷
為了讓用戶能很方便的已生成的試卷,本系統(tǒng)增加了抽取現(xiàn)有試卷這個(gè)功能模塊。用戶能通過(guò)這個(gè)模塊能很方便的對(duì)現(xiàn)有試卷進(jìn)行刪除和預(yù)覽,同時(shí)也能預(yù)覽用戶所選擇的試卷的答案。其主要過(guò)程如下:
。1)用戶進(jìn)入抽取現(xiàn)有試卷界面,系統(tǒng)自動(dòng)搜索數(shù)據(jù)庫(kù)表SJ中信息,顯示現(xiàn)有試卷的“代號(hào)”,“試卷創(chuàng)建者”,“試卷難度”。
。2)用戶選擇一份已有試卷,系統(tǒng)自動(dòng)從數(shù)據(jù)庫(kù)表SJT中搜索該試卷試題的“編號(hào)”, “分值”, “難度”。
。3)預(yù)覽試卷,系統(tǒng)根據(jù)數(shù)據(jù)庫(kù)表SJT中信息搜索題庫(kù)試題內(nèi)容,并按設(shè)置好的試卷模板導(dǎo)入Word中,生成一份完整的試卷,并以*.doc文件的形式打開。
。4)保存答案,系統(tǒng)根據(jù)數(shù)據(jù)庫(kù)表SJT中信息搜索題庫(kù)試題答案,并按試卷模板以 *.doc文件的形式打開。
。5)刪除試卷,系統(tǒng)刪除試卷在數(shù)據(jù)庫(kù)表SJT中的信息,系統(tǒng)顯示“刪除試卷成功”。
抽取現(xiàn)有試卷算法的具體流程可用圖4-11直觀說(shuō)明。
SHAPE \* MERGEFORMAT
圖4-11 抽取現(xiàn)有試卷流程圖
5 關(guān)鍵技術(shù)與系統(tǒng)實(shí)現(xiàn)
本系統(tǒng)是一個(gè)試卷生成管理系統(tǒng),重點(diǎn)在于組卷,所以主要是對(duì)關(guān)于試卷生成的實(shí)現(xiàn)的說(shuō)明。本系統(tǒng)包括抽取現(xiàn)有試卷,自動(dòng)生成試卷和手動(dòng)生成試卷三大功能。
5.1 登錄模塊
登錄界面是用戶最先看到的系統(tǒng)的界面,所以直觀上給用戶的感覺很重要,所以做一個(gè)好的界面,提高軟件的親和力。本管理系統(tǒng)登錄界面如圖5-1所示。
登陸功能實(shí)現(xiàn)的核心代碼如下。
圖5-1 系統(tǒng)登陸界面
Private Sub cmdOK_Click() ''進(jìn)入..確定
On Error GoTo Err
Dim txtSql As String
UserName = ""
If Trim(txtUserName.Text) = "" Then ''判斷用戶名是否為空
MsgBox "請(qǐng)輸入帳號(hào)!", vbOKOnly + vbExclamation, "警告"
txtUserName.SetFocus
Exit Sub
End If
If Trim(txtPassword.Text) = "" Then '判斷密碼是否為空
MsgBox "請(qǐng)輸入密碼!", vbOKOnly + vbExclamation, "警告"
txtPassword.SetFocus
Exit Sub
End If
''判斷是否有這個(gè)用戶
txtSql = "select * from 用戶信息表 where 用戶名稱 = '" & txtUserName.Text & "'"
If rs.State Then rs.Close
rs.Open txtSql, CN, adOpenStatic, adLockOptimistic
If rs.EOF = True Then ''如果沒有這個(gè)用戶
MsgBox "沒有這個(gè)帳號(hào),請(qǐng)重新輸入帳號(hào)!", vbOKOnly + vbExclamation, "警告"
txtUserName.Text = ""
txtPassword.Text = ""
txtUserName.SetFocus
如果輸入的用戶名和密碼正確,將對(duì)用戶的權(quán)限進(jìn)行判斷,如果是管理員就進(jìn)入到管理員模式;如果是教務(wù)管理員就進(jìn)入到教務(wù)管理員模式;如果是教師就進(jìn)入到教師模式;如果用戶沒有權(quán)限,則會(huì)警告。具體代碼如下:
If Trim(rs.Fields(1)) = Trim(txtPassword.Text) Then
''判斷權(quán)限
UserPrivs = ""
If Trim(rs.Fields(2)) = "管理員" Then ''管理員權(quán)限
IsUserMode = 1
ElseIf Trim(rs.Fields(2)) = "教務(wù)管理員" Then ''教務(wù)管理員權(quán)限
IsUserMode = 2
ElseIf Trim(rs.Fields(2)) = "教師" Then ''教師權(quán)限
IsUserMode = 3
Else ''無(wú)權(quán)
IsUserMode = 0
MsgBox "你沒有權(quán)限!", vbExclamation, "警告"
End
End If
UserPrivs = Trim(rs.Fields(2))
UserName = Trim(txtUserName.Text)
Unload Me
Mainfrm.Show
Exit Sub
rs.Close
miCount = miCount + 1
If miCount = 3 Then ''三次錯(cuò)誤,自動(dòng)退出程序
登錄系統(tǒng)后進(jìn)入主界面如圖5-2所示。
圖5-2 軟件主界面
軟件主界面是各個(gè)功能模塊的調(diào)用接口,主要有以下功能:
(1)題庫(kù)已有試卷:點(diǎn)擊后進(jìn)入抽取現(xiàn)有試卷的功能界面。
(2)自動(dòng)生成試卷:點(diǎn)擊后進(jìn)入自動(dòng)生成試卷的功能界面。
(3)手動(dòng)生成試卷:點(diǎn)擊后進(jìn)入手動(dòng)生成試卷界面。
(4)題庫(kù)錄入: 點(diǎn)擊后進(jìn)入試題錄入界面。
(5)數(shù)據(jù)備份:點(diǎn)擊后自動(dòng)備份數(shù)據(jù)庫(kù)。
(6)關(guān)于菜單:對(duì)于本系統(tǒng)版權(quán)的說(shuō)明。
5.2 試卷生成管理
試卷生成管理分為三個(gè)部分:題庫(kù)已有試卷、自動(dòng)生成試卷和手動(dòng)生成試卷。下面詳細(xì)討論各部分功能的實(shí)現(xiàn)。
1. 題庫(kù)已有試卷
如果題庫(kù)中已經(jīng)存在試卷,可以直接從已經(jīng)存在的試卷中抽取試卷,包括如下操作:
v 試卷預(yù)覽:通過(guò)WORD文檔打開試卷,可以瀏覽已有試卷模版。
v 保存答案:保存所選試卷的答案。
v 刪除試卷:徹底清除已存試卷的任何信息。
其界面如圖5-3所示。
圖5-3 抽取現(xiàn)有試卷
刪除試卷的核心代碼段如下:
Private Sub Command3_Click() '刪除試卷
Dim rst As Recordset
If MsgBox("是否刪除該試卷?", vbYesNo, "確認(rèn)") = vbYes Then
strSQl = "select * from SJ where SJDH= '" & MStry1.TextMatrix(MStry1.RowSel, 0) & "'"
'確定操作的表和方式
Set rst = QueryExt(strSQl)
rst.Delete
rst.Close
strSQl = "select * from SJT where SJDH= '" & MStry1.TextMatrix(MStry1.RowSel, 0) & "'"
'確定操作的表和方式
Set rst = QueryExt(strSQl)
Do Until rst.EOF
rst.Delete
rst.MoveFirst
Loop
rst.Close
MsgBox "刪除成功", vbExclamation
InitGrid1
InitGrid2
2. 自動(dòng)生成試卷
自動(dòng)生成試卷界面下可進(jìn)行如下操作:
v 生成試卷:系統(tǒng)根據(jù)用戶要求隨機(jī)選題,生成試卷。
v 預(yù)覽試卷:通過(guò)WORD文檔打開剛生成試卷,可以瀏覽生成試卷模版。
v 預(yù)覽答案:通過(guò)WORD文檔打開剛生成試卷答案,可以瀏覽試卷答案。
v 保存試卷:保存生成試卷“代號(hào)”、“創(chuàng)建者”、“難易度”等信息。
其界面如圖5-4所示。
圖5-4 自動(dòng)生成試卷界面
實(shí)現(xiàn)該功能的核心代碼如下:
Public Function LoadObject() '加載選擇題
On Error GoTo DealError
strSQl = "select * from Choice order by BH" '確定操作的表和方式
Set rs = QueryExt(strSQl) '打開紀(jì)錄集
If rs.RecordCount > 0 Then
rs.MoveFirst
Do Until rs.EOF
If rs.Fields("ND") = 5 Then
int1 = int1 + 1
Else
If rs.Fields("ND") = 10 Then
int2 = int2 + 1
Else
If rs.Fields("ND") = 15 Then
int3 = int3 + 1
End If
rs.MoveNext
Loop
int4 = int1 + int2 + int3
Label10(0).Caption = int1
Label10(1).Caption = int2
Label10(2).Caption = int3
Label10(3).Caption = int4
End If
rs.Close
Set rs = Nothing
Exit Function
DealError:
ShowError "程序執(zhí)行出錯(cuò),錯(cuò)誤信息如下:" & vbCrLf & Err.Description
End Function
3. 手動(dòng)生成試卷
自動(dòng)生成試卷界面下可進(jìn)行如下操作:
v 加入試卷:選定加入試卷的題目,并記錄其信息。
v 保存試卷:當(dāng)總分正好100分時(shí),點(diǎn)擊保存試卷,生成試卷并保存其信息。
其界面如圖5-5所示。
圖5-5 手動(dòng)生成試卷界面
以下為保存試卷功能的核心代碼:
Private Sub Command2_Click()
Dim index1 As Integer
RefreshMarks
Summarks=RandChoice.Summarks+RandPragramfilling.Summarks+ andAnswerQuestion.Summarks + RandPargramReading.Summarks + RandPargramDesign.Summarks
If Summarks = Combo1.Text Then
CalTestDifficult
SaveContest '保存試卷,調(diào)用函數(shù)
MsgBox "保存成功", vbInformation
Else
MsgBox "您設(shè)計(jì)的試卷與實(shí)際總分不合,請(qǐng)修改", vbCritical
End If
4. 生成試卷的模版
生成的試卷必須按照定義的模板保存,圖5-6給出了定義的模板示意。
圖5-6 生成試卷模版
5.3 系統(tǒng)中的關(guān)鍵技術(shù)實(shí)現(xiàn)
5.3.1 顯示教材章節(jié)信息供用戶使用
為了顯示教材章節(jié)信息供用戶使用,在數(shù)據(jù)庫(kù)里章節(jié)的存放是沒有規(guī)則也即它們的順序不一定按照真實(shí)書本的章節(jié)順序來(lái)存儲(chǔ)的。但是在顯示章節(jié)信息的時(shí)候必須按照書本的章節(jié)順序來(lái)顯示。所以特別設(shè)置如下的數(shù)據(jù)類型:
Dim Sql As String;
Dim rs As String;
論文選擇了TreeView控件來(lái)顯示章節(jié),因?yàn)檫@個(gè)控件用起來(lái)比較方便。其具體算法代碼如下:
If Not TreeView1.SelectedItem Is Nothing Then
'只響應(yīng)葉節(jié)點(diǎn)(沒有孩子)
If TreeView1.SelectedItem.Children = 0 Then
Dim Sql As String
Sql = "select BH,Type,TM,ZJ,ND from " & ItemInfo
Sql = Sql & " where ZJ= '"
Sql = Sql & Mid(TreeView1.SelectedItem.Key, 3, 4) & "'"
Set rs = QueryExt(Sql)
DataGrid_Object rs, DataGrid1
Else
5.3.2 手動(dòng)生成試卷時(shí)所選試題的臨時(shí)保存處理
手動(dòng)生成試卷時(shí)要不斷的將用戶選擇的題目臨時(shí)存儲(chǔ)起來(lái),由于記錄的信息不是很多,論文用數(shù)組把添加進(jìn)去的試題的題號(hào)和類型存儲(chǔ)起來(lái),后面添加的時(shí)候檢查在數(shù)組中是否存在,如果存在就證明已經(jīng)添加過(guò)了。
If ItemInfo = “Choice” Then
If RandChoice.DataExit(DataGrid1.Columns(0).Text) = True Then
Text1(0).Text = Text1(0).Text + 1
RandChoice.TotalNum = Text1(0).Text
RandChoice.KindOfitem DataGrid1.Columns(4).Text ‘判斷添加試題難度,并
RandChoice.IncreaseContents
RandChoice.SetContent DataGrid1.Columns(0).Text, Text1(0).Text - 1
MsgBox “添加成功!”, vbInformation
Else
MsgBox “您已經(jīng)選擇了此題!”, vbCritical
5.3.3自動(dòng)生成試卷時(shí)生成一個(gè)覆蓋知識(shí)點(diǎn)廣且試題不重復(fù)的試卷處理
自動(dòng)生成試卷時(shí)如何生成一個(gè)覆蓋知識(shí)點(diǎn)廣且試題不重復(fù)的試卷,處理該問(wèn)題的關(guān)鍵算法在于如何生成一個(gè)不重復(fù)的隨機(jī)數(shù)序列。產(chǎn)生不重復(fù)隨機(jī)數(shù)算法如下:
(1)首先生成隨機(jī)數(shù)
For index1 = 1 To SJ
Do While True
Randomize
tempid = Int(Rnd() * (sum - 1)) + 1
flag = True
For index2 = 1 To index1
If tempid = RandNo(index2) Then
flag = False
Exit For
Next index2
If flag = True Then Exit Do
Loop
RandNo(index1) = tempid
Next index1
(2)然后對(duì)生成的隨機(jī)數(shù)排序
For index1 = 1 To SJ - 1
tempid = index1
For index2 = index1 + 1 To SJ
If CInt(Trim(RandNo(index2))) < CInt(Trim(RandNo(tempid))) Then
tempid = index2
End If
Next index2
temp = RandNo(index1)
RandNo(index1) = RandNo(tempid)
RandNo(tempid) = temp
Next index1
(3)最后將隨機(jī)號(hào)對(duì)應(yīng)的記錄集中編號(hào)取出
For index1 = 1 To SJ
Dim intemp As Long
intemp = CLng(RandNo(index1))
rs.Move intemp - 1
SaveItemSerial(index1) = Trim(rs.Fields(“BH”))
rs.MoveFirst
Next index1
RItem = True
5.3.4數(shù)據(jù)庫(kù)的備份與恢復(fù)
1) 數(shù)據(jù)庫(kù)備份的部分代碼
Public Function DBBackUp()
Dim fs
Set fs = CreateObject("Scripting.FileSystemObject")
If fs.FileExists(App.path & "\數(shù)據(jù)庫(kù)備份\shijuanbeifen.mdb") Then fs.DeleteFile App.path & "\數(shù)據(jù)庫(kù)備份\shijuanbeifen.mdb"
fs.copyfile App.path & "\shijuan.mdb", App.path & "\數(shù)據(jù)庫(kù)備份\shijuanbeifen.mdb"
MsgBox "備份完成!", 64, "數(shù)據(jù)庫(kù)備份情況"
End Function
2) 數(shù)據(jù)庫(kù)恢復(fù)的部分代碼:
Public Function DBRestore()
Dim fs
Set fs = CreateObject("Scripting.FileSystemObject")
syscnn.Close
If fs.FileExists(App.path & "\shijuan.mdb") Then fs.DeleteFile App.path & "\shijuan.mdb"
fs.copyfile App.path & "\數(shù)據(jù)庫(kù)備份\shijuanbeifen.mdb", App.path & "\shijuan.mdb"
Main
MsgBox "已恢復(fù)上次備份!", 64, "數(shù)據(jù)庫(kù)恢復(fù)情況"
6 系統(tǒng)的測(cè)試
6.1 測(cè)試方法
軟件測(cè)試方法一般分成白盒測(cè)試和黑盒測(cè)試,其各自具體定義如下:
1、黑盒測(cè)試
黑盒測(cè)試也稱功能測(cè)試或數(shù)據(jù)驅(qū)動(dòng)測(cè)試,它是在已知產(chǎn)品所應(yīng)具有的功能,通過(guò)測(cè)試來(lái)檢測(cè)每個(gè)功能是否都能正常使用,在測(cè)試時(shí),把程序看作一個(gè)不能打開的黑盆子,在完全不考慮程序內(nèi)部結(jié)構(gòu)和內(nèi)部特性的情況下,測(cè)試者在程序接口進(jìn)行測(cè)試,它只檢查程序功能是否按照需求規(guī)格說(shuō)明書的規(guī)定正常使用,程序是否能適當(dāng)?shù)亟邮蛰斎霐?shù)鋸而產(chǎn)生正確的輸出信息,并且保持外部信息(如數(shù)據(jù)庫(kù)或文件)的完整性。黑盒測(cè)試方法主要有等價(jià)類劃分、邊值分析、因—果圖、錯(cuò)誤推測(cè)等,主要用于軟件確認(rèn)測(cè)試。 “黑盒”法著眼于程序外部結(jié)構(gòu)、不考慮內(nèi)部結(jié)構(gòu)、針對(duì)軟件界面和軟件功能進(jìn)行測(cè)試!昂诤小狈ㄊ歉F舉輸入測(cè)試,只有把所有可能的輸入都作為測(cè)試情況使用,才能以這種方法查出程序中所有的錯(cuò)誤。實(shí)際上測(cè)試情況有無(wú)窮多個(gè),人們不僅要測(cè)試所有合法的輸入,而且還要對(duì)那些不合法但是可能的輸入進(jìn)行測(cè)試。
2、白盒測(cè)試
白盒測(cè)試也稱結(jié)構(gòu)測(cè)試或邏輯驅(qū)動(dòng)測(cè)試,它是知道產(chǎn)品內(nèi)部工作過(guò)程,可通過(guò)測(cè)試來(lái)檢測(cè)產(chǎn)品內(nèi)部動(dòng)作是否按照規(guī)格說(shuō)明書的規(guī)定正常進(jìn)行,按照程序內(nèi)部的結(jié)構(gòu)測(cè)試程序,程序中的每條通路是否都有能按預(yù)定要求正確工作,而不顧它的功能,白盒測(cè)試的主要方法有邏輯驅(qū)動(dòng)、基路測(cè)試等,主要用于軟件驗(yàn)證。
6.2 測(cè)試配置
1、硬件配置要求:
CPU:P = 2 \* ROMAN II200以上。
內(nèi)存:256MB以上。
硬盤:2.1GB以上(可用空間最好在160MB以上)。
打印機(jī):推薦EPSON LQ-1600K = 2 \* ROMAN II
2、軟件配置要求:
WINDOWS2000/xp中文版操作系統(tǒng)。
本系統(tǒng)運(yùn)行:首先啟動(dòng)Windows2000/XP,將本系統(tǒng)拷貝到硬盤相應(yīng)地目錄下,用附加數(shù)據(jù)庫(kù)加載上數(shù)據(jù),運(yùn)行“EXE文件”即可。
6.3 測(cè)試目的
測(cè)試在軟件開發(fā)過(guò)程中一直都是備受關(guān)注的,即使在傳統(tǒng)的軟件工程中,也有一個(gè)明確、獨(dú)立的測(cè)試階段。隨著軟件危機(jī)的頻頻出現(xiàn)以及人們對(duì)于軟件本質(zhì)的進(jìn)一步認(rèn)識(shí),測(cè)試的地位得到了前所未有的提高。測(cè)試已經(jīng)不僅僅局限于軟件開發(fā)中的一個(gè)階段,它已經(jīng)開始貫穿于整個(gè)軟件開發(fā)過(guò)程,人們已經(jīng)開始認(rèn)識(shí)到:測(cè)試開始的時(shí)間越早,測(cè)試執(zhí)行的越頻繁,所帶來(lái)的整個(gè)軟件開發(fā)的下降就會(huì)越多。Extreme Programming更是把測(cè)試推到了極限的位置,一切軟件開發(fā)活動(dòng)都要從首先編寫測(cè)試代碼開始。
6.4 測(cè)試過(guò)程
本系統(tǒng)各功能已經(jīng)了解清楚,所以對(duì)其進(jìn)行黑盒測(cè)試。黑盒測(cè)試主要是對(duì)軟件進(jìn)行功能測(cè)試,它是在已知產(chǎn)品所應(yīng)具有的功能,通過(guò)測(cè)試來(lái)檢測(cè)每個(gè)功能是否都能正常使用。
6.4.1 測(cè)試抽取現(xiàn)有試卷模塊
表6.1 抽取現(xiàn)有試卷模塊用例表
第一個(gè)用例是測(cè)試系統(tǒng)的預(yù)覽試卷功能,其測(cè)試結(jié)果為如圖6-2所示。
圖6-2 使用第一個(gè)用例后
第二個(gè)用例是測(cè)試系統(tǒng)的刪除試卷功能,其測(cè)試前為如圖6-3,測(cè)試結(jié)果為圖6-4所示。其過(guò)程顯示刪除試卷功能運(yùn)行正常。
圖6-3 使用第二個(gè)用例前
圖6-4 使用第二個(gè)用例后
通過(guò)測(cè)試用例可知抽取現(xiàn)有試卷模塊的刪除試卷和試卷預(yù)覽功能運(yùn)行正常。
6.4.2 測(cè)試自動(dòng)生成試卷模塊
表6.2 自動(dòng)抽取試卷模塊用例
圖6-5 使用第一個(gè)用例后
圖6-6 使用第二個(gè)用例后
通過(guò)測(cè)試用例可知,試題的總分要與用戶設(shè)置的試題總分要相等才能生成試卷,否則提示“你設(shè)計(jì)的試卷與試題總分不合”,生成試卷失敗。
6.4.3 測(cè)試手動(dòng)生成試卷模塊
表6.3 手動(dòng)生成試卷模塊
第一次添加試題后,測(cè)試結(jié)果如圖6-7所示。
圖6-7 使用第一個(gè)測(cè)試用例后
第二次添加同一試題后,測(cè)試結(jié)果如圖6-8所示。
圖6-8 使用第二個(gè)測(cè)試用例后
通過(guò)測(cè)試用例可知,手動(dòng)生成試卷模塊中,如果用戶重復(fù)選擇同一題,則系統(tǒng)提示“您已經(jīng)選擇了此題”,添加試題失敗,避免同一題被多次選入同一份試卷中。
由對(duì)各個(gè)模塊的功能測(cè)試可知,本系統(tǒng)各種功能都能正常使用,對(duì)于各數(shù)據(jù)的關(guān)系也處理的很準(zhǔn)確,具有了一定的實(shí)用性。
結(jié)束語(yǔ)
本軟件的設(shè)計(jì)目的是在題庫(kù)建立維護(hù)和試卷生成方面為教學(xué)單位和人員提供方便和幫助。通過(guò)這幾個(gè)月的畢業(yè)設(shè)計(jì),我學(xué)到很多以前沒有學(xué)到的VB開發(fā)技術(shù),在軟件工程學(xué)上更是取得了很大的進(jìn)步。經(jīng)過(guò)大量的測(cè)試和試用,作者深信本軟件達(dá)到了方便和實(shí)用的設(shè)計(jì)目的,并在軟件界面和易用實(shí)用等方面有著獨(dú)到之處。
總的來(lái)說(shuō),在這次的畢業(yè)設(shè)計(jì)種遇到了不少的問(wèn)題,大部分得到了很好的解決,但也有少部分遺留的問(wèn)題。
首先便是調(diào)研的不充分。由于以前根本未曾接觸過(guò)軟件的整體開發(fā)設(shè)計(jì),所以在前期的調(diào)研中相當(dāng)不充分,開題也有些盲目,以為把屬性和表寫得越多越好,這個(gè)問(wèn)題越到后來(lái)越嚴(yán)種,而且因?yàn)榭陀^的原因耽誤了進(jìn)度,因而對(duì)開題做了修改。
其次是軟件的編程問(wèn)題,由于以前對(duì)VB只是了解并不能夠靈活運(yùn)用,所以在畢設(shè)期間進(jìn)行了苦讀,終于可以基本掌握了常用控件的用法和語(yǔ)句編程。
然后就是從一而終的問(wèn)題了,在開發(fā)過(guò)程中我遇到了許許多多的問(wèn)題,很多地方都不明白,經(jīng)常有打退堂鼓的想法,我經(jīng)常的請(qǐng)教同學(xué),最后的成果雖然不很完美,但我盡力了,并有所收獲。
雖然軟件基本達(dá)到設(shè)計(jì)要求并且達(dá)到同行的先進(jìn)水平,但由于作者水平有限,軟件存在bug也是在所難免的 ,您的意見和建議將極大的幫助我改進(jìn)并完善軟件。真誠(chéng)的希望你的參與。
參考文獻(xiàn):
[1].C.J.Date , 《Database system implementation》,北京:出版社, 2000
[2].Hector Garcial-Molina , Jeffrey D.Ullman, Jennifer Widom,《An introduction to Database Systems(Seventh Edition), 機(jī)械工業(yè)出版社,2001
[3].林陳雷, 郭安源, 葛曉東, 《信息化系統(tǒng)開發(fā)實(shí)例導(dǎo)航》 , 人民郵電出版社,2003
[4].張立科,《數(shù)據(jù)庫(kù)開發(fā)技術(shù)與工程實(shí)踐》,人民郵電出版社,2004
[5].張紅軍, 王虹 等 《Visual basic 6.0 中文版高級(jí)應(yīng)用與開發(fā)指南》, 人民郵電出版社, 2002
[6].伍俊良 主編 等 《VB課程設(shè)計(jì)與系統(tǒng)開發(fā)案例》清華大學(xué)出版社, 2002
[7].姚巍,《Visual Basic數(shù)據(jù)庫(kù)開發(fā)及工程實(shí)例》,人民郵電出版社,2003
[8].求是科技,《Visual Basic 6.0 數(shù)據(jù)庫(kù)開發(fā)技術(shù)與工程實(shí)踐》,人民郵電出版社,2004
[9].劉瑞新,汪遠(yuǎn)征,《Visual Basic程序設(shè)計(jì)教程》,機(jī)械工業(yè)出版社,2001
[10].劉萌,周學(xué)明,郭安源,《Visual Basic企業(yè)辦公系統(tǒng)開發(fā)實(shí)例導(dǎo)航》,人民郵電出版社,2003
[11].孟小峰,王珊,《數(shù)據(jù)庫(kù)系統(tǒng)導(dǎo)論》,機(jī)械工業(yè)出版社,2000
[12].張海藩,《軟件工程導(dǎo)論》,清華大學(xué)出版社,2003
【試卷生成系統(tǒng)】相關(guān)文章:
word自動(dòng)生成目錄和參考文獻(xiàn)的技巧04-19
Word文檔如何自動(dòng)生成參考文獻(xiàn)引用04-21
存在的超越:審美無(wú)限性時(shí)間意識(shí)的生成05-24
一堂成功的美術(shù)生成課教育論文05-02
談如何構(gòu)建動(dòng)態(tài)生成的英語(yǔ)課堂08-20
綜合布線系統(tǒng)概述09-22
前臺(tái)mis治理系統(tǒng)06-04
績(jī)效治理系統(tǒng)及作用06-05