自動組卷系統(tǒng)開發(fā)畢業(yè)設計_第1頁
已閱讀1頁,還剩46頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  本科畢業(yè)設計(論文)</p><p>  題 目: 自動組卷系統(tǒng)開發(fā) </p><p>  Development Of Test paper Auto-production System </p><p><b>  摘 要</b></p><p>  本文首先分析了自

2、動組卷系統(tǒng)在具體的教學活動過程中的實際需求,然后以C語言程序設計的教學為背景,設計與實現(xiàn)了一個實際通用的自動組卷系統(tǒng),對其中的數據庫結構設計以及各個主要模塊的實現(xiàn)進行了詳細的介紹。</p><p>  本系統(tǒng)可以從試題庫中自動的查找和組織出一些不同題型、不同難度、不同章節(jié)范圍內的試題來組成一份合理的試卷。它采用的是利用試卷的一組特征值,記錄用戶提供的試卷題目類型、章節(jié)分布、難易程度等條件,采用隨機算法,借助于系統(tǒng)

3、中的一系列數據文件,使具體課程的相關數據動態(tài)地抽象成邏輯數據,用以解決通用問題,線性的規(guī)劃出一份約束滿足的、合理的試卷。</p><p>  本系統(tǒng)的開發(fā)工具是powerbuilder 9.0,使用的數據庫為Access 2003。系統(tǒng)分為題庫編輯、自動組卷、試卷存儲、試卷打印等功能。 </p><p>  關鍵詞:自動組卷 題庫管理 數據庫 powerbuilder9.0</

4、p><p><b>  Abstract</b></p><p>  This paper analyses the actual demand of auto-production for test paper system in the course of concrete teaching activity at first. Then taking teachin

5、g of C language program design as the background,it designs and realizes a Test paper auto-production system. </p><p>  First, it Explains the design for the database structure, then introduces the detailed

6、one to the realization of each main module among them. It can automatically find and organize a certain number of test questions in various types with different degrees of difficulty in certain scope in the database to f

7、orm a reasonable test paper. What it adopt is to make use of to try a characteristic value of winding, recording the customer to provide of try a topic type, chapter to distribute, difficult ea</p><p>  The

8、development tool of this system is powerbuilder 9.0, the database of is Access 2003.The system is divided into database edit, test paper auto-production, test paper saving, test paper printing etc. function. </p>

9、<p>  Keywords: Test Paper Auto-production ; Database Management of Test Questions ; Database ; Powerbuilder 9.0</p><p><b>  目 錄</b></p><p><b>  前 言1</b></p>

10、;<p>  第一章 系統(tǒng)分析2</p><p>  1.1 系統(tǒng)目標2</p><p>  1.2 系統(tǒng)需求分析2</p><p>  第二章 系統(tǒng)總體設計4</p><p>  第三章 開發(fā)工具及開發(fā)環(huán)境6</p><p>  3.1 總體開發(fā)工具及環(huán)境6</p><p

11、>  3.2 開發(fā)工具簡介6</p><p>  3.3 數據庫的選擇7</p><p>  3.4 SQL基礎8</p><p>  3.5 SQL語句9</p><p>  第四章 數據庫的開發(fā)與設計10</p><p>  4.1 數據庫需求分析10</p><p>  

12、4.2 系統(tǒng)邏輯分析11</p><p>  4.3 數據庫的連接13</p><p>  4.3.1 程序設計時與數據庫的連接14</p><p>  4.3.2程序運行時與數據庫的連接14</p><p>  第五章 組卷策略設計16</p><p>  5.1 自動組卷系統(tǒng)16</p>

13、<p>  5.2自動組卷中隨機數選取問題16</p><p>  5.3自動組卷的具體實現(xiàn)17</p><p>  5.4試卷難度的程序控制18</p><p>  第六章 在PB中創(chuàng)建Word文檔20</p><p>  6.1 PB通過OLEOBJECT使用WORD20</p><p>  6

14、.2創(chuàng)建模板文件21</p><p>  6.3編寫程序22</p><p>  第七章 系統(tǒng)模塊頁面和代碼設計26</p><p>  7.1 應用程序對象設計26</p><p>  7.2系統(tǒng)登錄模塊26</p><p>  7.3主程序界面設計27</p><p>  7.4

15、菜單的設計28</p><p>  7.5 帳號管理模塊29</p><p>  7.6 題庫管理模塊31</p><p>  7.7 自動組卷模塊34</p><p>  7.8 試卷管理模塊37</p><p>  7.9 關鍵技術38</p><p>  7.9.1 數據窗口中

16、記錄顏色的隔行顯示38</p><p>  7.9.2 數據窗口中實現(xiàn)數據列自動折行40</p><p>  7.9.3 利用復合型數據窗口制作報表40</p><p>  第八章 系統(tǒng)發(fā)布42</p><p>  8.1 創(chuàng)建工程對象42</p><p><b>  8.2 發(fā)布43</b

17、></p><p><b>  結 論44</b></p><p><b>  致 謝45</b></p><p><b>  參考文獻46</b></p><p><b>  附錄47</b></p><p>&

18、lt;b>  前 言</b></p><p>  考試是教師檢查學生學習情況的必要手段,但出卷卻是一種繁重的智力和體力勞動,傳統(tǒng)的標準化試卷命題,需要由教學專家組成一個命題班子,根據許多優(yōu)秀教師多年的教學經驗,從貫徹教學大綱要求,到試卷意圖的組織,經過反復的推敲,才能完成一份標準化的試卷。這樣的命題方式不僅工作任務繁重而且試卷的標準化程度、難易程度、題量大小等各方面難以控制,難以形成有效的試題

19、庫,給試題和試卷的管理帶來很多問題和困難。鑒于這種情況,利用計算機進行試卷的自動生成并逐步積累形成有效的試題庫,對試題和試卷的管理將變得高效而便捷,對提高工作效率,使試卷管理逐步走向正規(guī)化自動化將起到十分重要的作用。同時使出卷工作變得輕松愉快,從很大程度上減輕了教師利用傳統(tǒng)的出卷方式組卷的繁重工作量,大大節(jié)省了老師的工作時間,便于教師有更多的時間和精力致力于教學方法的研究。今日, 隨著計算機的應用的普及和硬件設備性能和軟件制作水平的提高

20、,為研制開發(fā)高性能的試題管理軟件提供了條件。</p><p>  本系統(tǒng)采用PowerBuilder9.0為開發(fā)工具。系統(tǒng)分為題庫編輯、自動組卷、試卷存儲、試卷打印等功能,具體要求中下:建立一個包含多門課程的試題數據庫,試題按照題型、章節(jié)和難度級別分類存放。允許教師增設新的課程題庫、增刪改試題、查詢試題、根據預先設置的題型和分值等相關參數自動組卷、對試卷進行格式編排、瀏覽和打印試卷、試卷存檔。</p>

21、<p>  本文主要包含以下內容:</p><p> ?。?)系統(tǒng)需求分析和系統(tǒng)功能設計。</p><p>  (2)開發(fā)環(huán)境及開發(fā)工具的選擇,編程語言簡介。</p><p> ?。?)數據庫的設計,介紹了數據庫設計理論、系統(tǒng)中所用到的表的邏輯結構設計方法和設計過程等。</p><p> ?。?)組卷策略以及實現(xiàn)PB與Word的

22、通信。</p><p> ?。?)功能模塊的設計,具體介紹了如何實現(xiàn)各個功能模塊,介紹了一些核心代碼等。</p><p><b>  第一章 系統(tǒng)分析</b></p><p><b>  1.1 系統(tǒng)目標</b></p><p>  自動組卷系統(tǒng)是一個可適用各門課程題庫的系統(tǒng)。只要題庫是按知識結構分

23、類錄人的,自動組卷系統(tǒng)即可按照組卷要求,從題庫的各部分隨機抽取試題及相應的標準答案,分別生成試卷與標準答案。該組卷系統(tǒng)適應規(guī)范化、科學化考試的要求,實用性強,便于推廣使用。</p><p><b>  系統(tǒng)具有以下特點:</b></p><p><b>  1、開放性</b></p><p>  組卷系統(tǒng)適合各類課程的書面

24、考試。試題庫中試題的錄入簡單,也可以直接對試題庫進行修改,易于使用。試卷的題數,可以自定義。在組卷系統(tǒng)中可以對組卷進行盡可能多的參數設置,以便可以組合出更加合理、符合要求的試卷。</p><p><b>  2、實用性</b></p><p>  在系統(tǒng)運行時可以直接對選題的范圍進行修改。試卷和試卷的答案一并給出。如果在該題沒有提供答案的情況下,也不出錯,答案上給出題

25、號。</p><p><b>  3、智能性</b></p><p>  組卷系統(tǒng)中抽題算法雖然是采用隨機算法,但在抽題之前用戶可以根據自己需要對組卷進行題型、題數以及章節(jié)分布進行盡可能精確的設置,實現(xiàn)人工智能化的控制。以便系統(tǒng)能夠組合出更加合理、符合用戶要求的試卷。</p><p>  1.2 系統(tǒng)需求分析</p><p&

26、gt;  系統(tǒng)分為題庫編輯、自動組卷、試卷存儲、試卷打印等功能,具體要求如下: </p><p>  一個好的組卷系統(tǒng)必需要有一個足夠龐大的題庫做支持,所以系統(tǒng)首先要做好題庫的管理,建立一個包含多門課程的試題數據庫,試題按照課程、題型、章節(jié)和難度級別分類存放。允許教師增設新的課程題庫、增刪改試題、查詢試題。</p><p>  系統(tǒng)因該能夠根據用戶預先設置的題型、題數、分值以及章節(jié)分布等相

27、關參數自動組卷、允許用戶對試卷進行打印或把試卷另存為Word文本,以便進一步的編輯排版。</p><p>  試卷要存檔以便查詢以及今后的管理。</p><p>  第二章 系統(tǒng)總體設計</p><p>  試卷自動生成系統(tǒng)是計算機輔助教學系統(tǒng)CAI( computer- aided instruction)的重要組成部分。在計算機普及的今天,考試作為發(fā)現(xiàn)和選拔人才

28、、資格認證、等級確定的有效手段.也正在朝著自動化、智能化的方向發(fā)展。對于從事高校教學的教師來說,有一個得心應手的試卷自動生成系統(tǒng),可以減輕教師負擔,避免重復工作,提高工作效率。</p><p>  本系統(tǒng)主要包括以下幾個功能模塊:</p><p>  圖2.1 系統(tǒng)功能模塊圖</p><p>  功能模塊的具體說明:</p><p>  1、

29、帳號管理對于本系統(tǒng)的一般用戶可進行當前用戶修改密碼和退出系統(tǒng)操作;對于本系統(tǒng)的管理員則還可進行帳號的添加和刪除操作。</p><p>  2、題庫管理包括課程管理和試題管理,可添加新課程,修改和刪除指定課程信息;添加新試題,修改和刪除指定試題。</p><p>  3、自動組卷填寫試卷的基本信息,設置組卷的難度值、題型、數量、分值以及章節(jié)分布參數。采用隨機算法,結合相關設置參數

30、,組合出合理的、符合用戶要求的試卷;用戶還可以選擇出同一學期同一課程的2份試卷(即A、B卷),并且使2份試卷的重復比例控制在最低范圍。組卷完成后給出相應試卷以及答案。</p><p>  4、試卷管理用戶可查詢所有出過的試卷的目錄,并且可以查看相應的試卷。用戶可以把試卷打印或者另存為Word文本。</p><p>  第三章 開發(fā)工具及開發(fā)環(huán)境</p><p>

31、  3.1 總體開發(fā)工具及環(huán)境</p><p>  本系統(tǒng)采用的軟件開發(fā)工具及環(huán)境如下:</p><p>  操作系統(tǒng): WINDOWS XP。</p><p>  開發(fā)工具: PowerBuilder9.0。</p><p>  數據庫:Access2003數據庫。</p><p>  開發(fā)用機器的硬件配置:<

32、/p><p>  Celeron(R) 2.66GHz、512MB內存、80GB硬盤等。</p><p><b>  運行要求的配置:</b></p><p>  硬件環(huán)境:英特爾奔騰處理器,166MHZ或更高的處理器、 32M RAM-ROM驅動器、256色、1024*768分辨率顯示器(推薦使用更高的分辨率和顏色深度)。</p>

33、<p>  軟件環(huán)境:WINDOWS98/2000/XP。</p><p>  3.2 開發(fā)工具簡介</p><p>  PowerBuilder是一個圖形化的應用程序開發(fā)環(huán)境。使用PowerBuilder開發(fā)的應用軟件由窗口構成,窗口中不僅可以包含按鈕、下拉列表框及單選按紐等標準的Windows控件,還可以有PowerBuilder提供的特殊控件。這些特殊控件可以使應用軟件更容

34、易使用,使應用軟件的開發(fā)效率更高。</p><p>  例如,數據窗口就是PowerBuilder提供的一個集成度很高的控件,使用該控件可以很方便地從數據庫中提取數據,很簡單地檢索數據,提供圖形化的數據顯示方式,創(chuàng)建統(tǒng)計功能非常強大的數據統(tǒng)計表。由于數據窗口對數據的操作是通過事務進行的,所以對數據的操作有很強的可靠性。這些都為開發(fā)功能強大的數據庫應用軟件提供了可靠的保證。</p><p>

35、  商業(yè)化的軟件開發(fā)要求有很好的移植性。PowerBuilder既可以跨平臺開發(fā),也可以發(fā)行跨平臺軟件。例如,在Windows 95下開發(fā)的程序,可以不修改源程序而形成UNIX下的執(zhí)行文件或Macintosh下的執(zhí)行文件。在開發(fā)小組中,不同成員可以使用不同的開發(fā)環(huán)境,但由于PowerBuilder的支持,在不同的開發(fā)環(huán)境下看到的共享PowerBuilder對象是相同的,所以仍可以同時開發(fā)同一個應用程序。</p><p

36、>  隨著軟件技術的不斷發(fā)展,PowerBuilder 9.0及時地強化了開發(fā)功能,并提供了一些配套的開發(fā)工具,成為一種易于使用的、可伸縮的并經實踐證明的快速集成開發(fā)環(huán)境。它在給用戶提供一條轉移到下一代平臺的途徑的同時,使用戶仍能夠保護和擴展現(xiàn)有的技術和應用上的投資。</p><p>  3.3 數據庫的選擇</p><p>  Access2003是微軟公司開發(fā)的基于Windows

37、平臺的小型數據庫管理系統(tǒng),是Office 2003 的組件之一。它承襲了舊版本Access的各項優(yōu)點,又新增或完善了數據訪問頁、個性化菜單、internet/intranet、編程、安全保密等功能。</p><p>  自從1992年,Microsoft 公司發(fā)布Access1.0以來,隨著Windows的普及,使用Access的人越來越多,它逐漸成為流行的數據庫軟件之一。 </p><p&g

38、t;  Access是一個面向對象的、采用事件驅動機制的小型關系數據庫管理系統(tǒng)。在Access中,用戶可以根據實際需要對數據進行分類,然后使用表對象分別存儲每一種類型的數據,并建立起不同類型數據之間的關系,供報表使用。此時,每條信息僅在一處存放,減少了冗余數據的產生,節(jié)省了寶貴的存儲空間,同時也加快了更新數據的速度。</p><p>  在Access數據庫中,任何有名字的事物都可以稱之為對象。Access使用了

39、與Windows 一致的風格,采取面向對象的方式,完成數據庫的各種功能。極大地簡化了用戶的開發(fā)工作。</p><p>  針對用戶在實際應用中的需求,Access數據庫提供了表、查詢、窗體、報表、頁、宏和模塊等七個對象,用于收集、存儲和操作各種不同的信息。 </p><p>  為了便于使用,Access的每個對象都為用戶提供了設計器和生成向導。用戶可以在設計器中設計生成對象,或對生成的對

40、象進行編輯;用戶也可通過生成向導方便快速的生成一個完備的對象。</p><p>  如上所述,Access 作為關系數據庫開發(fā)具備了許多優(yōu)點,所以本系統(tǒng)所采用的數據庫開發(fā)工具為Access。</p><p><b>  3.4 SQL基礎</b></p><p>  SQL(Structured Query Language,結構查詢語言)是一

41、個功能強大的數據庫語言。SQL通常使用于數據庫的通訊。ANSI(美國國家標準學會)聲稱,SQL是關系數據庫管理系統(tǒng)的標準語言。SQL語句通常用于完成一些數據庫的操作任務,比如在數據庫中更新數據,或者從數據庫中檢索數據。使用SQL的常見關系數據庫管理系統(tǒng)有:Oracle、Sybase、Microsoft SQL Server、Access、Ingres等等。雖然絕大多數的數據庫系統(tǒng)使用SQL,但是它們同樣有它們自立另外的專有擴展功能用于它

42、們的系統(tǒng)。但是,標準的SQL命令,比如"Select"、 "Insert"、 "Update"、"Delete"、"Create"和"Drop"常常被用于完成絕大多數數據庫的操作。MS SQL Server 就是用的Transact- SQL 。</p><p>  SQL語言有著非常突出的優(yōu)點

43、,主要是:非過程化語言;統(tǒng)一的語言;所有關系數據庫的公共語言。</p><p>  非過程化語言:SQL是一個非過程化的語言,因為它一次處理一個記錄,對數據提供自動導航。SQL允許用戶在高層的數據結構上工作,而不對單個記錄進行操作,可操作記錄集,所有SQL 語句接受集合作為輸入,返回集合作為輸出。SQL的集合特性允許一條SQL語句的結果作為另一條SQL語句的輸入。</p><p>  SQ

44、L不要求用戶指定對數據的存放方法,這種特性使用戶更易集中精力于要得到的結果;所有SQL語句使用查詢優(yōu)化器,它是RDBMS的一部分,由它決定對指定數據存取的最快速度的手段,查詢優(yōu)化器知道存在什么索引,在哪兒使用索引合適,而用戶則從不需要知道表是否有索引、有什么類型的索引。 統(tǒng)一的語言:SQL可用于所有用戶的DB活動模型,包括系統(tǒng)管理員、數據庫管理員、應用程序員、決策支持系統(tǒng)人員及許多其它類型的終端用戶。</p>&l

45、t;p>  SQL為許多任務提供了命令,其中包括:查詢數據;在表中插入、修改和刪除記錄;建立、修改和刪除數據對象;控制對數據和數據對象的存??;保證數據庫一致性和完整性。</p><p>  以前的數據庫管理系統(tǒng)為上述各類操作提供單獨的語言,而SQL 將全部任務統(tǒng)一在一種語言中。</p><p>  所有關系數據庫的公共語言:由于所有主要的關系數據庫管理系統(tǒng)都支持SQL語言,用戶可將使

46、用SQL的技能從一個RDBMS(關系數據庫管理系統(tǒng))轉到另一個,所有用SQL編寫的程序都是可以移植的。</p><p><b>  3.5 SQL語句</b></p><p>  SQL功能強大,是一種完備的數據處理語言,不僅用于數據庫查詢而且用于數據庫中的數據修改和更新,概括起來它可以分成以下幾組:</p><p>  DML(Data Ma

47、nipulation Language,數據操作語言):用于檢索或者修改數據;DDL(Data Definition Language,數據定義語言): 用于定義數據的結構,比如創(chuàng)建、修改或者刪除數據庫對象;DCL(Data Control Language,數據控制語言):用于定義數據庫用戶的權限。</p><p>  DML組可以細分為以下的幾個語句: </p><p>  SELE

48、CT:用于檢索數據;INSERT:用于增加數據到數據庫;UPDATE:用于從數據庫中修改現(xiàn)存的數據;DELETE:用于從數據庫中刪除數據。</p><p>  第四章 數據庫的開發(fā)與設計</p><p>  數據庫結構設計的好壞將直接對應用系統(tǒng)的效率以及實現(xiàn)的效果產生影響,好的數據庫結構設計會減少數據庫的存儲量,資料的完整性和一致性比較高,系統(tǒng)具有較快的響應速度,簡化基于此數據庫的應

49、用程序的實現(xiàn)等等。由于數據庫設計的重要性,人們提出了許多數據庫結構設計的技術。但這些技術方法與數據庫系統(tǒng)并沒有統(tǒng)一的相對應的模式,而是要根據應用系統(tǒng)對數據庫不同的需求來選擇不同的技術方法,甚至是幾種不同的方法的融合。</p><p>  在本系統(tǒng)中數據庫的設計還要注意靈活,具有一定的通用性,把試題庫做成通用的試題庫。</p><p>  4.1 數據庫需求分析</p><

50、;p>  數據庫結構設計的第一階段,也是非常重要的一個階段是數據庫需求分析。在這個階段主要是收集基本資料以及數據處理的流程,為進一步設計打下基礎。根據以上的功能分析,系統(tǒng)的業(yè)務流程圖如下:</p><p>  試題庫 試卷庫</p><p>  圖4.1 系統(tǒng)業(yè)務流程圖</p><p>  基于上面對整個軟件功能的定義,并考慮到

51、要使系統(tǒng)具有擴展性和較強的適應性,在系統(tǒng)數據庫系統(tǒng)中,所包含的數據應該包括用戶信息表、課程信息表、試題表、試卷題型參數表、試卷章節(jié)分布表、試卷表、試卷目錄表。</p><p>  4.2 系統(tǒng)邏輯分析</p><p>  概念結構是獨立于實際數據模型的信息結構,必須將其轉化為邏輯結構后才能進行數據庫應用的設計。也就是要將概念上的結構轉化為Access數據庫系統(tǒng)所支持的實際數據庫模型。<

52、;/p><p>  該數據庫系統(tǒng)要求具有以下方面的特點:</p><p>  ● 結構合理,所建立的數據冗余度小,獨立性強。</p><p>  ● 建檔、修改、查詢、統(tǒng)計快而準確。</p><p><b>  保密性、可靠性好。</b></p><p>  數據庫的邏輯結構設計如下:</p&g

53、t;<p>  用戶信息表(user_info):帳號(user_id),密碼(user_pwd),用戶名(user_name)(主碼為用戶名(user_id))</p><p>  表4.1 用戶信息表(user_info表)表結構</p><p>  課程信息表(course):課程代號(cid),課程名稱(course)(主碼為課程代號(cid))</p>

54、<p>  表4.2 課程信息表(course表)表結構</p><p>  試題信息表(test):試題編號(id),題型(type),課程名稱(course),章(chapter),節(jié)(section),題目(test),答案(key),試題難度(difficutly),題目空格數(blanknum)(主碼為試題編號(id))</p><p>  表4.3 試題信息表(te

55、st表)表結構</p><p>  題型參數表(param):參數編號(id),題型(type),題數(num),每題分值(mark)(主碼為參數編號(id))</p><p>  表4.4 題型參數表(param表)表結構</p><p>  章節(jié)分布參數表(chapparam):參數編號(id),章(chapter),題數(num)(主碼為參數編號(id))&l

56、t;/p><p>  表4.5 章節(jié)分布參數表(chapparam表)表結構</p><p>  試卷目錄表(list):試卷編號(id),課程名稱(course),學期(term),試卷類型(type),組卷教師(teacher),考試班級(class),考試專業(yè)(spec),考試人數(num) ,試卷難度(diff)(主碼為試卷編號(id))</p><p>  表

57、4.6 試卷目錄表(list表)表結構</p><p>  試卷表(paper):試卷編號(id),大題編號(type_no),標題(testtype),小題編號(testno),題目(test),答案(key),試題編號(testid),題型(test_type)(主碼為試卷編號(id)和試題編號(testid))</p><p>  表4.7 試卷表(paper表)表結構</p&

58、gt;<p>  4.3 數據庫的連接</p><p>  在PowerBuilder開發(fā)環(huán)境和應用程序能夠操作數據庫中的數據之前,必須首先與數據庫建立聯(lián)系,也就是連接到數據庫上。PowerBuilder與數據庫的連接建立在驅動程序之上。PowerBuilder通過數據庫驅動程序接口實現(xiàn)與各種類型數據庫的連接。接口的參數可以通過一個Database Profile來完成。對于每一個可能要用到的數據庫

59、,均可以建立一個Database Profile。在此Database Profile中所記錄的是建立到數據庫的一些連接信息,如數據庫管理信息(DBMS)的類型、用戶賬號、口令、數據庫以及其他的連接參數。</p><p>  當開發(fā)環(huán)境通過Database Profile連接到數據庫上之后,在PowerBuilder中使用數據庫畫筆可實現(xiàn)對該數據庫中表格、視圖等的操作,如創(chuàng)建表、修改表、刪除表、增加/刪除記錄。&

60、lt;/p><p>  PowerBuilder中設計數據窗口的時候,通過“Database Profile”對話框實現(xiàn)與數據庫的連接。在應用程序中則一般是在應用程序對象中寫連接數據庫的程序代碼,使得應用程序開始運行并實現(xiàn)與數據庫的連接。</p><p>  4.3.1 程序設計時與數據庫的連接</p><p>  在程序設計中可以使用“Database Profile

61、”對話框完成配置和連接。如果已經定義了所需數據庫的配置,那么就可以通過單擊選中該配置,然后單擊“Connect”按鈕,將系統(tǒng)連接到相應的數據庫上。如果沒有定義數據庫配置,需要創(chuàng)建新的數據庫配置。</p><p>  首先選擇Tool菜單中的Database Profile子菜單,或者單擊圖標,出現(xiàn)“Database Profile”對話框。在其中選擇要配置的數據庫使用的數據庫接口,“ODB ODBC”節(jié)點。然后,

62、單擊“New”按鈕,打開“Database Profile Setup-ODBC”對話框,并設置所要連接數據庫的配置信息。完成設置后,單擊“Preview”標簽頁,在該標簽頁中列出了數據庫剛剛配置的語句。單擊“OK”按鈕,返回到“Database Profile”對話框。這時“ODB ODBC”節(jié)點下面就多了剛剛配置好的Database Profile。選中該配置,單擊該對話框中的“Connect”按鈕,系統(tǒng)即通過專用接口連接到數據庫上

63、。</p><p>  當PowerBuilder 9.0通過Database Profile 連接到數據庫上之后,在程序上之后,在程序設計的創(chuàng)建數據窗口對象時,可以直接顯示該用戶在數據庫中可以修改的表,通過選擇某個(或者多個)表可以將它們和數據窗口對象連接起來。</p><p>  4.3.2程序運行時與數據庫的連接</p><p>  在程序設計是和數據庫的連接

64、Database Profile對話框來實現(xiàn)的,在程序運行時,則需要通過應用程序對象來實現(xiàn)和數據庫的連接。在應用程序對象中實現(xiàn)與數據庫連接,不在通過“Database Profile”對話框,而是使用Transaction事物對象。</p><p>  一般數據庫的連接是在應用程序開始運行是建立起來的。PowerBuilder9.0開發(fā)的應用程序的入口點是PowerBuilder9.0的應用程序對象。每個Powe

65、rBuilder應用程序都必須有一個、而且只能有一個應用程序對象,在該應用程序對象中寫入與數據庫連接的程序代碼,從而使得應用程序一開始變實現(xiàn)與數據庫的連接。</p><p>  在“Database Profile”對話框完成設置后,單擊“Preview”標簽頁,在該標簽頁中列出了配置的語句。將連接數據庫的代碼復制到應用程序對象中,即可完成代碼的編寫。</p><p>  第五章 組卷策略

66、設計</p><p>  5.1 自動組卷系統(tǒng)</p><p>  組卷系統(tǒng)的主要任務是根據用戶的需要,用當前數據庫中的試題組成一套符合用戶需求的試卷。本系統(tǒng)采用隨機抽題策略實現(xiàn)自動組卷功能,即由用戶輸入要添加的試卷名、學期、試卷類型(即A卷或B卷)、試卷難度、考試對象信息、試卷中各種題型的具體數量以及每小題的分值和試卷的章節(jié)分布范圍,然后通過系統(tǒng)隨機抽題策略向數據庫中的試卷表中添加一張各

67、個題型題量固定的試卷,并在試卷目錄表中保存該試卷的基本信息,以便于今后試卷的查詢管理。</p><p>  5.2自動組卷中隨機數選取問題</p><p>  在自動組卷中首先要考慮的就是如何按照用戶選擇的組卷方案在數據庫中隨機抽取試題。要想隨機抽取試題就必須產生隨機數,因此隨機數的產生問題才是問題的真正關鍵點。</p><p>  用計算機產生隨機數的方法有很多,

68、有用數學公式實現(xiàn)的,也有按照系統(tǒng)時間產生的,還要按照當時的系統(tǒng)中的線程數產生的等等。PowerBuilder 9.0環(huán)境本身已經提供了產生隨機數的函數Rand(),不過在沒有初始化的情況下,每次運行程序所獲得的隨機數都是一樣的,因此Rand()也被稱為偽隨機數函數。要實現(xiàn)真正的隨機還必須在Rand()函數之前調用函數Randomize()。Randomize()可以初始化偽隨機數發(fā)生器,這樣讓應用程序每次使用不同的偽隨機數序列。Rand

69、omize()的語法為Randomize ( n ),其中參數n:數值型變量或表達式,指定偽隨機數生成器使用的起始值,不同的起始值可以生成不同的偽隨機數序列。當n的值為0時,該函數把系統(tǒng)時鐘作為偽隨機數生成器的起始值,這樣可以生成不可重復的偽隨機數序列。當n的值不為0時,可以產生不同的偽隨機數序列,但是,如果兩次使用相同的偽隨機數生成器起始值,那么兩次生成的偽隨機數序列相同。</p><p>  5.3自動組卷的

70、具體實現(xiàn)</p><p>  由于組卷時僅產生隨機數還不能滿足要求,因為組卷要求的是從一定量的試題中抽取確定題量的隨機試題,因此問題也就變成了從一組數中隨機抽取確定的數。在本系統(tǒng)中這組數的確定是通過以指定的課程名稱和試題題型為檢索條件對數據庫中的試題表進行檢索,并把檢索結果顯示在指定的數據窗口,而此時數據窗口中記錄的總條數就是這組數。</p><p>  在具體的程序實現(xiàn)中是把數據窗口中記

71、錄的總條數做為Rand()函數要產生的偽隨機數的上界,由系統(tǒng)隨機產生一個隨機數,以該隨機數做為數據窗口的某一特定行,即選定試題。然后將該試題的相關信息做為一條新的記錄存入相應試卷表中。不過在存入試卷表之前要對試題的相關信息與組卷要求進行比較,只有符合條件的試題才能存入試卷表。具體的組卷程序流程如下: </p><p><b>  否</b></p><p><b

72、>  是</b></p><p><b>  否</b></p><p><b>  是</b></p><p><b>  否</b></p><p><b>  是</b></p><p>  圖5.1 組卷程

73、序流程圖</p><p>  本系統(tǒng)在程序設計過程中,凡從數據窗口中每取出一道符合組卷要求的試題,便將該試題存入系統(tǒng)的試卷表中,并把該試題從數據窗口中刪除,以免在隨后的選題過程中選出重復的試題,保證整份試卷試題的重復比例為0。具體程序實現(xiàn)代碼如附錄程序1所示。</p><p>  5.4試卷難度的程序控制</p><p>  本系統(tǒng)在組卷時為試卷提供3種難度選擇,分

74、別為易、中、難,分別對應為0.1~0.4、0.4~0.6、0.6~0.9。而在試題錄入的時候為試題提供5種難度選擇,分別為0.1、0.3、0.5、0.7、0.9。</p><p>  為了能夠有效控制試卷的難度,對于整份試卷中的每種難度的試題的總分占試卷總分的最大比例進行人為的設置,具體在程序中設置如下:</p><p>  /////////////設置對應試卷難度的相應難度值試題的分值

75、的最大值</p><p>  int sum_1,sum_2,sum_3,sum_4,sum_5</p><p>  ////////// sum_1,sum_2,sum_3,sum_4,sum_5分別為難度值為0.1、0.3、0.5、//////////0.7、0.9的試題分值的最大值,sum為試卷的總分</p><p>  if diff="易&quo

76、t; then</p><p>  sum_1=round(0.4*sum,0)</p><p>  sum_2=round(0.6*sum,0)</p><p>  sum_3=round(0.1*sum,0)</p><p>  sum_4=round(0.1*sum,0)</p><p>  sum_5=roun

77、d(0.1*sum,0)</p><p>  elseif diff="中" then</p><p>  sum_1=round(0.2*sum,0)</p><p>  sum_2=round(0.2*sum,0)</p><p>  sum_3=round(0.5*sum,0)</p><p>

78、;  sum_4=round(0.2*sum,0)</p><p>  sum_5=round(0.2*sum,0)</p><p><b>  else</b></p><p>  sum_1=round(0.1*sum,0)</p><p>  sum_2=round(0.1*sum,0)</p>&l

79、t;p>  sum_3=round(0.1*sum,0)</p><p>  sum_4=round(0.6*sum,0)</p><p>  sum_5=round(0.4*sum,0)</p><p><b>  end if</b></p><p>  說明:函數Round ( x, n ) 返回將x四舍五入

80、到小數點后第n位的數值。</p><p>  第六章 在PB中創(chuàng)建Word文檔</p><p>  PB(PowerBuilder)是Sybase公司推出的一種優(yōu)秀的數據庫開發(fā)工具,利用它的數據窗口控件可以快速地開發(fā)出一個數據管理系統(tǒng)。在實際應用中,很多場合都很注重報表的格式,需要不同類型的報表,所以必須提高報表格式的多樣性。雖然可以利用PB設計出具有打印功能的窗口,但是由于格式是事先規(guī)定

81、好的,用戶很難根據需要進行修改。Word是大家熟悉的一種文字處理工具,具有強大的編輯與打印功能。如果能夠將數據源動態(tài)地導入到Word文檔中,然后在Word中調整和打印,用戶的自由度就比較大。下面介紹一種通過OLE技術嵌入Word文檔的方法。</p><p>  6.1 PB通過OLEOBJECT使用WORD</p><p>  在編程的時候,常常需要訪問Word文檔。除了使用DDE之外,P

82、owerBuilder還有一種操作Word的方式,就是通過OLEObjcet和OLEControl。</p><p>  OLEObject是不可視的OLE對象,而OLEControl則是可視的窗口控件。由于OLEObject較后者更靈活方便,如果不是必須在窗口上顯示Word文檔內容,使用前者是更好的選擇。</p><p>  程序開發(fā)員在使用OLE連接Word文檔的時候,常常遇到這樣兩個

83、問題:</p><p>  第一:如果某文檔已經打開,再使用程序調用的時候,會產生程序運行錯誤;</p><p>  第二:經常發(fā)現(xiàn)創(chuàng)建的WinWord.exe進程沒有能夠正常終止。以上兩個錯誤產生的原因:</p><p>  一是由于使用OLEObjectVar.ConnectToObject(“<FileName>”)的時候,<FileNam

84、e>這個文件已經打開了,此時使用ConnectToObject會造成錯誤。</p><p>  二是使用 OLEObjectVar.ConnectToNewObject (“Word. Application”) 時創(chuàng)建了新的Winword.exe進程,但是沒有執(zhí)行關閉這個新的應用的操作。 對上述問題可以采用以下方法進行解決:</p><p><b> ?。?)打開

85、文檔</b></p><p>  首先,使用<OLEObjectVar>.ConnectToObject(“<WordFileName>”)來打開一個空Word文檔。打開成功后,使用<OLEObjectVar>.Application獲得對Word.Application的引用并設置Applicatin.Visible=TRUE,并關閉剛才打開的空文檔。然后,使用W

86、ord.Application的Open方法打開要使用的文檔。</p><p>  這樣的方法打開文檔,如果當前有正在運行的Windows.exe進程,就不必打開新的進程,而是使用當前的進程,并且可以成功地對當前的進程獲得引用。</p><p><b>  (2)關閉文檔</b></p><p>  首先,我們關閉程序打開的使用的文檔,然后判斷

87、Application是否還有其他的打開的文檔。如果沒有其他打開的文檔,則調用Application的Quit方法,讓Application退出,結束Winword.exe的程序進程。如果確定以后還經常的調用Word,也可以不關閉Winword.exe的進程,這樣可以每次很快的打開Word的文檔。 不過,由于通過OLEObject調用Word等Office有許多限制,所以盡管用這個方法能夠解決許多問題,但是還是有許多需要特別注意

88、的地方:</p><p>  第一,使用ConnectToObject連接的文檔,不能被鎖定(比如被以前的進程打開,或者被當作模板新建立了一個文檔,都可能鎖定),否則將會產生未知錯誤(返回值-9);</p><p>  第二,對Document的各種操作,要保證Word.Application.Visible=TRUE,否則調用可能會產生程序錯誤.</p><p>

89、<b>  6.2創(chuàng)建模板文件</b></p><p>  首先,我們建立一個試卷樣式的模板文件,取名為“試卷模板.doc”。根據需要錄入靜態(tài)文本,并在需要插入動態(tài)數據的地方插入“書簽”?!皶灐泵峙cPB數據源中列的名字一致,如下圖所示。</p><p><b>  圖6.1 模版文件</b></p><p><b

90、>  6.3編寫程序</b></p><p>  1. 數據窗口d_list和d_paper,分別取自試卷目錄表和試卷表,數據模型如</p><p>  試卷目錄表 試卷表</p><p><b>  圖6.2 數據模型</b></p><p>  2.創(chuàng)建窗口

91、w_paper,其中包含兩個數據窗口dw_3和dw_4,分別對應數據窗口d_list和d_paper,但在實際的程序運行過程中,這兩個數據窗口是不可視的。再插入兩個單行編輯器sle_1和sle_2,分別用于用戶錄入和選擇模板文件與文檔保存路徑。在這里省略選擇文件與路徑按鈕的編程代碼。</p><p>  3.添加“保存”按鈕。該按鈕Clicked事件代碼如附錄程序2所示。</p><p>

92、  當用戶單擊“保存”按鈕后,程序將利用OLE技術連接Word,在相應的位置填寫數據,生成試卷,并且保存在指定目錄下。程序運行時界面如下圖所示:</p><p>  圖6.3 程序運行界面</p><p>  在上面的程序運行界面中,顯示試卷內容的數據窗口是復合型(Composite)顯示風格,是實現(xiàn)打印功能的數據窗口,而實現(xiàn)與Word進行數據通訊的數據窗口在當前窗口中是處于隱藏狀態(tài),但它

93、們之間的內容是一致的。保存到Word中的文本效果如下圖所示:</p><p>  圖6.4 保存到Word的效果圖一 選擇題樣式</p><p>  圖6.5 保存到Word的效果圖二 填空題樣式</p><p>  圖6.6 保存到Word的效果圖三 編程題樣式</p><p>  把試卷保存到Word中,用戶就可以進行更加自由的編輯修改。

94、</p><p>  第七章 系統(tǒng)模塊頁面和代碼設計</p><p>  7.1 應用程序對象設計</p><p>  PowerBuilder9.0開發(fā)的應用程序的入口點是PowerBuilder9.0的應用程序對象,運行是程序從這個入口點啟動,所以應用程序對象的設計是應用程序設計的開始。</p><p>  應用程序對象的事件不多,一共只

95、有6個,分別是Open、Close、Idle、SystemError、ConnectionBegin、ConnectionEnd事件。</p><p>  1、在應用程序對象的Open事件,輸入如下程序代碼:</p><p>  // Profile sys</p><p>  SQLCA.DBMS = "ODBC"</p><

96、;p>  SQLCA.AutoCommit = False</p><p>  SQLCA.DBParm = "ConnectString='DSN=system'"</p><p><b>  //連接數據庫</b></p><p><b>  connect;</b></

97、p><p>  open(w_login) //打開登錄窗口; </p><p>  2、在應用程序對象的Open事件,輸入如下程序代碼:</p><p><b>  //斷開數據庫連接</b></p><p>  disconnect;</p><p><b>  7.2系統(tǒng)登錄模塊<

98、;/b></p><p>  程序啟動后,首先進入系統(tǒng)登錄窗口驗證用戶密碼。系統(tǒng)登陸窗口主要實現(xiàn)如下功能:</p><p>  選擇帳號,憑口令進入系統(tǒng)。</p><p>  確認用戶的身份及使用權限。</p><p>  支持鍵盤和鼠標操作。</p><p>  系統(tǒng)登陸窗口如圖7.1所示。</p>

99、<p><b>  圖7.1 登錄界面</b></p><p>  7.3主程序界面設計</p><p>  在系統(tǒng)登錄成功后,進入主程序界面。主程序界面主要實現(xiàn)如下功能:</p><p>  根據登錄用戶的權限設置系統(tǒng)的菜單。</p><p>  選擇主界面的菜單,調用相應程序,進行相應操作。</p

100、><p>  本應用程序的主要功能都是在主窗口w_main及在其下打開的眾多窗口中完成的。采用的是多文檔界面。另外還加入了背景圖片。主程序界面如圖7.2所示。</p><p>  圖7.2 主程序界面</p><p>  在窗口w_main的open () 事件中加入如下代碼用于打開背景圖片:</p><p>  opensheet(w_blan

101、kground,w_main,5,Layered!)</p><p>  在窗口w_main的open() 事件中加入如下代碼用于根據當前登錄的用戶的權限設置菜單的可見性:</p><p>  if g_user="admin" then //當前用戶為系統(tǒng)管理員</p><p>  m_main.m_用戶管理.m_增加帳

102、號.visible=true</p><p>  m_main.m_用戶管理.m_刪除帳號.visible=true</p><p><b>  else</b></p><p>  m_main.m_用戶管理.m_增加帳號.visible=false</p><p>  m_main.m_用戶管理.m_刪除帳號.vis

103、ible=false</p><p><b>  end if</b></p><p><b>  7.4菜單的設計</b></p><p>  在菜單中設計應用程序的主窗口所連接的菜單m_main。該菜單的結構如下圖所示。</p><p>  圖7.3 菜單的結構</p><p

104、>  由于主窗口采用了多文檔。所以每一個按鈕都用來打開一個窗口。</p><p><b>  (1)帳號管理模塊</b></p><p>  1) 增加帳號(只有系統(tǒng)管理員登錄才可用):</p><p>  Clicked事件程序代碼:OpenSheet(w_adduser,w_main,5,original!)</p>&

105、lt;p>  2) 刪除帳號(只有系統(tǒng)管理員登錄才可用):</p><p>  Clicked事件程序代碼:OpenSheet(w_deluser,w_main,5,original!)</p><p><b>  3) 修改密碼:</b></p><p>  Clicked事件程序代碼:OpenSheet(w_changepwd,w_m

106、ain,5,original!)</p><p><b>  4) 退出系統(tǒng):</b></p><p>  Clicked事件程序代碼:halt //kill the program</p><p><b>  (2)題庫管理模塊</b></p><p><b>

107、  1) 添加課程:</b></p><p>  Clicked事件程序代碼:OpenSheet(w_addcourse,w_main,5,original!)</p><p><b>  2) 更新課程:</b></p><p>  Clicked事件程序代碼:OpenSheet(w_updatecourse,w_main,5,o

108、riginal!)</p><p><b>  3) 添加試題:</b></p><p>  Clicked事件程序代碼:OpenSheet(w_addtest,w_main,5,original!)</p><p><b>  4) 查看試題</b></p><p>  Clicked事件程序代碼

109、:OpenSheet(w_searchtest,w_main,5,original!)</p><p><b>  (3)自動組卷模塊</b></p><p><b>  設置參數:</b></p><p>  Clicked事件程序代碼OpenSheet(w_setpaperparameter,w_main,5,orig

110、inal!)</p><p><b>  (4)試卷管理</b></p><p><b>  查看試卷:</b></p><p>  Clicked事件程序代碼:OpenSheet(w_paperlist,w_main,5,original!)</p><p>  7.5 帳號管理模塊</p&

111、gt;<p><b>  (1)增加帳號</b></p><p>  只有系統(tǒng)管理員才有權限調用此模塊,用于增加系統(tǒng)的合法用戶,而且只能添加當前系統(tǒng)中未存在的帳號,界面如圖所示:</p><p>  圖7.4 增加帳號界面</p><p><b>  (2)更新帳號</b></p><p&

112、gt;  只有系統(tǒng)管理員才有權限調用此模塊,用于修改和刪除系統(tǒng)的用戶,而且系統(tǒng)管理員的帳號不能被刪除,界面如圖所示:</p><p>  圖7.5 修改帳號界面</p><p>  圖7.6 刪除帳號界面</p><p><b>  (3)修改密碼</b></p><p>  用于修改當前登錄用戶的密碼,界面如圖所示:&

113、lt;/p><p>  圖7.7 修改密碼界面</p><p>  7.6 題庫管理模塊</p><p><b>  (1)添加課程</b></p><p>  本系統(tǒng)是一個通用的自動組卷系統(tǒng),用戶可以根據自己需要,任意添加新的課程,實現(xiàn)對該課程的自動組卷,界面如圖所示:</p><p>  圖7.8

114、 添加課程界面</p><p><b>  (2)更新課程</b></p><p>  用戶可以實際需要對已有的課程信息進行修改和刪除,但這些操作會對數據庫中其它已存在的相關信息做出相應修改和刪除,用戶應該謹慎操作。界面如圖所示:</p><p>  圖7.9 更新課程界面</p><p>  圖7.10 修改課程信息&

115、lt;/p><p>  圖7.11 刪除課程</p><p><b>  (3)添加試題</b></p><p>  用于用戶添加新的試題,用戶在操作時應盡量填滿所有與有關試題的信息,這樣有利與后續(xù)操作的開展,界面如圖所示:</p><p>  圖7.12 添加試題界面</p><p><b&g

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論