版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、摘 要c語(yǔ)言試卷自動(dòng)生成系統(tǒng)主要是實(shí)現(xiàn)按照所學(xué)章節(jié)和試題難易程度在試題庫(kù)中隨機(jī)的抽取試題,然后把隨機(jī)抽出的試題制作成一份標(biāo)準(zhǔn)考試卷。還可進(jìn)行試題查詢,按照試題所屬章節(jié),試題所屬章節(jié)查詢也可以綜合上面兩個(gè)條件進(jìn)行查詢。在隨機(jī)抽取試題模塊中采用了datastore技術(shù),解決了如何對(duì)數(shù)據(jù)進(jìn)行操縱的問(wèn)題。利用自己定值得隨機(jī)函數(shù)實(shí)現(xiàn)了隨機(jī)生成試題。在試卷打印模塊中,考慮到不能簡(jiǎn)單的只對(duì)隨機(jī)生成的試題進(jìn)行打印。基于本系統(tǒng)最終要生成一份標(biāo)準(zhǔn)試卷,所以利用了ole技術(shù)建立powerbulider與word的通信。通過(guò)調(diào)用connecttonewobject()函數(shù),建立powerbulider與word200
2、0的ole聯(lián)結(jié),并通過(guò)word宏語(yǔ)言wordbasic,向word2000寫(xiě)入數(shù)據(jù),對(duì)產(chǎn)生的word文檔進(jìn)行編輯,存儲(chǔ),打印等操作,最后,通過(guò)調(diào)用disconnectobject()函數(shù)斷開(kāi)與word2000的ole聯(lián)接。在制作這個(gè)系統(tǒng)是大量的用到了datawindow技術(shù),它是powerbulider中功能最強(qiáng)大的一塊。它將有關(guān)數(shù)據(jù)庫(kù)的訪問(wèn),更新,顯示等操作集成在一起,形成了一個(gè)強(qiáng)大的用戶數(shù)據(jù)庫(kù)接口。它的主要功能是從數(shù)據(jù)庫(kù)中檢索出數(shù)據(jù)并且顯示在用戶界面上,并且允許用戶通過(guò)這個(gè)數(shù)據(jù)窗口對(duì)象和數(shù)據(jù)庫(kù)通信。關(guān)鍵詞:數(shù)據(jù)窗口(datawindow), 數(shù)據(jù)存儲(chǔ)(datastore)ole技術(shù) , p
3、owerbulider8.0 目 錄摘 要21概述51.1.1課題來(lái)源:51.1.2.課題內(nèi)容:51.1.3 具體目標(biāo):62 系統(tǒng)開(kāi)發(fā)工具簡(jiǎn)介72.1 powerbulider 8.0的開(kāi)發(fā)環(huán)境的介紹92.2使用數(shù)據(jù)窗口檢索數(shù)據(jù)庫(kù)數(shù)據(jù)的全過(guò)程:113 系統(tǒng)的分析及設(shè)計(jì)133.1 系統(tǒng)需求分析133.2系統(tǒng)的設(shè)計(jì)原則143.3 系統(tǒng)功能設(shè)計(jì)143.4 后臺(tái)數(shù)據(jù)庫(kù)的建設(shè)153.4.1 后臺(tái)數(shù)據(jù)庫(kù)的選擇153.4.2 數(shù)據(jù)庫(kù)的設(shè)計(jì)174. 系 統(tǒng) 實(shí) 現(xiàn)204.1 登陸界面204.2 主選擇模塊224.3 試題查詢模塊234.4 試題整理模塊274.4.1 數(shù)據(jù)窗口與數(shù)據(jù)編輯324.5 打印模塊37
4、5 難點(diǎn)及對(duì)策415.1隨機(jī)抽取試題的算法416 總結(jié)及展望44致 謝45概述1.1.1課題來(lái)源: 考試是考察學(xué)生是否掌握一門課程較為有效的方法。隨著高校教育事業(yè)的迅速發(fā)展,如何使考試試卷的試題合理布局是所有老師必須面臨的問(wèn)題。傳統(tǒng)的出卷既費(fèi)時(shí)又費(fèi)力,而且不能夠達(dá)到迅速出卷。傳統(tǒng)出卷的方法亟待改進(jìn)。如今大多數(shù)高效的教師采用了試卷自動(dòng)生成系統(tǒng)來(lái)解決這個(gè)問(wèn)題。c語(yǔ)言課試卷自動(dòng)生成系統(tǒng)是為了方便任課教師在完成教學(xué)后方便制作考試卷. 1.1.2.課題內(nèi)容: 根據(jù)用戶的要求,本課題的內(nèi)容主要是:在windows平臺(tái)下開(kāi)發(fā)一套用戶界面友好,可以根據(jù)用戶的要求迅速的制作成一套考試卷,并可以實(shí)現(xiàn)考試卷的打印和
5、答案的打印。本系統(tǒng)最大的特點(diǎn)就是可以根據(jù)用戶的要求在是題庫(kù)中隨機(jī)出題,這樣每次出的考試題是不相同的,而且可以使考試更公平合理。同時(shí)本系統(tǒng)可以對(duì)試題庫(kù)進(jìn)行添加,刪除,修改。也可以單一條件或組合條件對(duì)題庫(kù)中的試題進(jìn)行查詢。 該系統(tǒng)完成后可節(jié)約大量的出題時(shí)間,還可對(duì)重點(diǎn)章節(jié)進(jìn)行考察,還可根據(jù)老師的考察要求制成不同難易程度的試卷,符合了考試所要求的合理性和科學(xué)性。1.1.3 具體目標(biāo): 本系統(tǒng)的具體目標(biāo)是: (1) 對(duì)試題庫(kù)中的各類型試題(填空題,單項(xiàng)選擇題,判斷題,編程題)可以進(jìn)行添加、刪除、修改等常規(guī)維護(hù); (2) 可以對(duì)試題庫(kù)中的各類型試題(填空題,單項(xiàng)選擇題,判斷題,編程題)進(jìn)行單一條件或多條
6、件組合查詢 ; (3) 可以根據(jù)用戶的要求在試題庫(kù)中隨機(jī)的抽取各種類型的試題; (4) 將隨機(jī)抽出的試題和答案分別保存在word文檔中,可利用word對(duì)其進(jìn)行編輯,最終打印成標(biāo)準(zhǔn)試卷,和答案卷。2 系統(tǒng)開(kāi)發(fā)工具簡(jiǎn)介隨著計(jì)算機(jī)應(yīng)用水平和網(wǎng)絡(luò)技術(shù)的發(fā)展,人們對(duì)于信息的需求、管理和應(yīng)用不再局限于有限地理空間內(nèi),信息分布在位于不同地方的計(jì)算機(jī)上。對(duì)于這些信息的需求可能在位于其他的計(jì)算機(jī)上由于存儲(chǔ)數(shù)據(jù)和操作數(shù)據(jù)的計(jì)算機(jī)所使用的操作系統(tǒng)的不同,客觀上,人們需要一個(gè)跨平臺(tái)的,可以支持多種大型數(shù)據(jù)庫(kù)和桌面數(shù)據(jù)庫(kù)的開(kāi)發(fā)系統(tǒng),以便開(kāi)發(fā)出既不依賴于開(kāi)發(fā)平臺(tái),又既有廣泛適應(yīng)性的應(yīng)用系統(tǒng),powerbuilder 即是
7、具有這一基本要求的開(kāi)發(fā)工具。此外,powerbuilder 還具有分布式,分割化,可編譯和可視化等特點(diǎn)。所有這些特點(diǎn),使 powerbuilder 成為一種客戶/服務(wù)器環(huán)境下的優(yōu)秀的數(shù)據(jù)庫(kù)開(kāi)發(fā)工具。 使用powerbuilder 之前,首先應(yīng)該了解 powerbuilder 是什么,它是如何工作的。概括而言,powerbuilder 是一個(gè)功能超群,使用方便,易于開(kāi)發(fā)復(fù)雜應(yīng)用系統(tǒng)的前端數(shù)據(jù)庫(kù)開(kāi)發(fā)工具。利用powerbuilder 所提供的豐富而完善的開(kāi)發(fā)工具,可以輕松的開(kāi)發(fā)大型數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)。由于powerbuilder 是具有圖形界面的分布式數(shù)據(jù)庫(kù)前端開(kāi)發(fā)工具,它所采用的圖形界面使得程序員能
8、夠迅速方便地開(kāi)發(fā)出相互獨(dú)立的對(duì)象,而這些對(duì)象可供程序員共享或重復(fù)使用。powerbuilder 自問(wèn)世以來(lái)受到了應(yīng)用軟件開(kāi)發(fā)人員的重視,其主要的原因在于:(1)開(kāi)發(fā)效率高,成本底。(2)面向?qū)ο蟮拈_(kāi)發(fā)工具,代碼的可重復(fù)性好,開(kāi)發(fā)的軟件易于 維護(hù)。(3)客戶/服務(wù)器計(jì)算模式的前端工具,對(duì)數(shù)據(jù)庫(kù)的應(yīng)用開(kāi)發(fā)有 著特殊的支持,特別適合做信息系統(tǒng)的開(kāi)發(fā)。(4)提供了豐富的對(duì)象,控件和函數(shù),為開(kāi)發(fā)人員提供良好的用 戶界面和編制功能強(qiáng)大的應(yīng)用軟件創(chuàng)造了便利條件。powerbuilder 的核心技術(shù)是數(shù)據(jù)窗口(datawindow)技術(shù),可以說(shuō),powerbuilder的最大特色就是數(shù)據(jù)窗口。powerbul
9、ider作為一種數(shù)據(jù)庫(kù)前端開(kāi)發(fā)技術(shù),操作的核心是數(shù)據(jù)庫(kù)中的數(shù)據(jù)。而數(shù)據(jù)窗口是一個(gè)對(duì)象,它包含了對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行特定的操作的信息。只要定義好一個(gè)數(shù)據(jù)窗口對(duì)象,以后就可以在多個(gè)應(yīng)用程序中使用這個(gè)數(shù)據(jù)窗口對(duì)象,總之,可以把數(shù)據(jù)窗口看作封裝了對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)操作的對(duì)象,他極大的方便了應(yīng)用程序?qū)?shù)據(jù)庫(kù)的使用。數(shù)據(jù)窗口(datawindow)同時(shí)提供給開(kāi)發(fā)人員快速建立應(yīng)用程序的強(qiáng)有力的工具,是一種智能型的數(shù)據(jù)處理對(duì)象,它具有判斷所輸入的數(shù)據(jù)是否正確的能力。這也是powerbulider與其他面向?qū)ο蟮臄?shù)據(jù)庫(kù)應(yīng)用前端開(kāi)發(fā)工具的最主要的區(qū)別。它以自動(dòng)化的用戶數(shù)據(jù)庫(kù)接口為開(kāi)發(fā)人員最大限度的節(jié)省了時(shí)間和精力,
10、但這種自動(dòng)化并不限制開(kāi)發(fā)、人員的主觀能動(dòng)性,開(kāi)發(fā)者能夠以獨(dú)具特色的方式靈活運(yùn)用數(shù)據(jù)窗口。數(shù)據(jù)窗口(datawindow)可以方便而快速的處理數(shù)據(jù),與數(shù)據(jù)庫(kù)連接,這個(gè)技術(shù)已被擴(kuò)展到web應(yīng)用中。拖動(dòng)式的編程方法可以避免許多編寫(xiě)代碼的工作,比如在象是格式、客戶端的與確認(rèn)、域的大小計(jì)算、標(biāo)簽排序、向前或向后瀏覽、數(shù)據(jù)操作按鈕、支持的客戶端事件和其他標(biāo)準(zhǔn)的數(shù)據(jù)窗口功能方面都無(wú)需編寫(xiě)詳細(xì)代碼。另外,數(shù)據(jù)窗口可以運(yùn)行在多客戶端,不必關(guān)心它們使用什么語(yǔ)言寫(xiě)的。建立一個(gè)數(shù)據(jù)窗口,可以在任何應(yīng)用程序中使用,無(wú)論client/server應(yīng)用,分布式應(yīng)用還是web應(yīng)用都可以。數(shù)據(jù)窗口(datawindow)是po
11、werbulider成功的關(guān)鍵所在,可以說(shuō)沒(méi)有數(shù)據(jù)窗口就沒(méi)有今天powerbulider的成就。靈活運(yùn)用數(shù)據(jù)窗口的強(qiáng)大功能,可以為應(yīng)用開(kāi)發(fā)提供極大的方便。數(shù)據(jù)窗口控件是sybase 公司的一項(xiàng)專利技術(shù)。通過(guò)本次畢業(yè)設(shè)計(jì)深深地感受到了數(shù)據(jù)窗口控件功能的強(qiáng)大。深入理解數(shù)據(jù)窗口控件的工作原理、靈活應(yīng)用數(shù)據(jù)窗口控件對(duì)系統(tǒng)的開(kāi)發(fā)有很大的幫助。數(shù)據(jù)窗口控件的一般應(yīng)用就可以滿足大多數(shù)的用戶的要求,但powerbuilder 提供了動(dòng)態(tài)數(shù)據(jù)窗口、共享數(shù)據(jù)窗口和利用數(shù)據(jù)窗口制作復(fù)雜報(bào)表的技術(shù)。根據(jù)用戶的需要,結(jié)合powerbuilder 的特點(diǎn)。在選擇開(kāi)發(fā)工具時(shí)選定了powerbuilder 8.0為開(kāi)發(fā)工具。
12、2.1 powerbulider 8.0的開(kāi)發(fā)環(huán)境的介紹 雖則數(shù)據(jù)庫(kù)技術(shù)在各行powerbuilder8.各業(yè)的廣泛應(yīng)用,作為數(shù)據(jù)庫(kù)前端開(kāi)發(fā)工具的powerbuilder8.已成為開(kāi)發(fā)人員的得力助手。powerbuilder8.開(kāi)放的體系結(jié)構(gòu),簡(jiǎn)潔高效的繼承開(kāi)發(fā)環(huán)境,強(qiáng)大的數(shù)據(jù)窗口技術(shù),幾乎無(wú)所不能的數(shù)據(jù)庫(kù)訪問(wèn)能力和友好的用戶界面,越來(lái)越受到開(kāi)發(fā)人員的青睞。同當(dāng)今流行的許多的開(kāi)發(fā)環(huán)境一樣,powerbuilder8.的開(kāi)發(fā)環(huán)境也是可視的集成化開(kāi)發(fā)環(huán)境。為了方便和簡(jiǎn)化,它提供了一系列的描繪器(painter)每個(gè)描繪器都有專門的用途。根據(jù)本次畢業(yè)設(shè)計(jì)的重點(diǎn),在此僅僅闡述powerbuilder的
13、一部分描繪器。(1)powerbuilder8.的描述文件描述文件是powerbuilder獲取后臺(tái)數(shù)據(jù)庫(kù)信息的橋梁,通過(guò)描述文件中指定的信息系統(tǒng)可以與指定數(shù)據(jù)庫(kù)的連接建立。因此,對(duì)于powerbuilder開(kāi)發(fā)出的系統(tǒng)。描述文件是必須的。在本次的畢業(yè)設(shè)計(jì)中將描述文件制作成盤,用戶必須持有盤和密碼才允許進(jìn)入系統(tǒng),起到了加密的作用,powerbuilder提供了兩個(gè)專用于對(duì)描述文件進(jìn)行操作的函數(shù),profilestring() 函數(shù)和 setprofilestring()函數(shù) 。通過(guò)profilestring() 用戶可以讀取到描述文件中指定節(jié)中的指定項(xiàng)目的字符串值。通過(guò)setprofilest
14、ring() 函數(shù)用戶可以設(shè)定描述文件中指定的節(jié)中的指定項(xiàng)目的字符串值。因此利用profilestring() 函數(shù)和setprofilestring()函數(shù)可以方便地完成對(duì)描述文件的操作,從而控制應(yīng)用程序與數(shù)據(jù)庫(kù)的連接,進(jìn)一步實(shí)現(xiàn)了與后臺(tái)數(shù)據(jù)庫(kù)的動(dòng)態(tài)連接。(2)powerbuilder8.的事物對(duì)象事物對(duì)象是powerbuilder眾多對(duì)象中最重要的一個(gè)對(duì)象并且也是最不易理解的一個(gè)對(duì)象。它實(shí)際上是powerbuilder程序與數(shù)據(jù)庫(kù)之間傳遞信息的一個(gè)結(jié)構(gòu)體變量。其共有個(gè)成員。在訪問(wèn)數(shù)據(jù)庫(kù)之前,必須為這個(gè)結(jié)構(gòu)體變量準(zhǔn)備好訪問(wèn)數(shù)據(jù)庫(kù)的參數(shù),它包括要連接的數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)所基于的服務(wù)器及用戶名和口令
15、等個(gè)參數(shù)。然后才能通過(guò)這個(gè)結(jié)構(gòu)體變量與數(shù)據(jù)庫(kù)進(jìn)行連接,完成所需的數(shù)據(jù)庫(kù)操作。數(shù)據(jù)庫(kù)操作的執(zhí)行情況等個(gè)狀態(tài)信息也要通過(guò)這個(gè)結(jié)構(gòu)體變量傳遞個(gè)powerbuilder程序。無(wú)論在何時(shí)以何種的方法在應(yīng)用程序中訪問(wèn)數(shù)據(jù)庫(kù)都必須使用事物對(duì)象。鑒于事物對(duì)象的重要性,下面對(duì)事物對(duì)象的個(gè)參數(shù)進(jìn)行詳細(xì)的介紹。(1)string類型。所使用的數(shù)據(jù)庫(kù)管理系統(tǒng)。(2)string 類型。要連接的數(shù)據(jù)庫(kù)名字。(3)string 類型。連接數(shù)據(jù)庫(kù)時(shí)所需的用戶 名。(4)string 類型。用戶連接數(shù)據(jù)庫(kù)時(shí)所需 的密碼。(5)string 類型。數(shù)據(jù)庫(kù)的保護(hù)級(jí)別。(6)string 類型。登錄到數(shù)據(jù)庫(kù)服務(wù)器上的用 戶名。(7
16、) string 類型。登錄到數(shù)據(jù)庫(kù)服務(wù)器上 的用戶口令。(8)string 類型。數(shù)據(jù)庫(kù)服務(wù)器 名。(9)string 類型。指定是否將 數(shù)據(jù)庫(kù)設(shè)定成自動(dòng)提交所有事物。(10)string 類型。用于向數(shù)據(jù)庫(kù)傳遞特 定信息的屬性。(11)long 類型。指定最近一次 操作失敗或成功。(12)long 類型。最近一次操 作影響的行數(shù)。(13)long 類型。數(shù)據(jù)庫(kù)錯(cuò)誤代 碼。(14)string 類型。相當(dāng)于 中錯(cuò)誤碼的文字說(shuō)明。(15)string 類型。返回 m執(zhí)行的附加信息。powerbuilder提供了一個(gè)默認(rèn)的全局事物變量(communication area)。一 般的情況下使用,
17、但是當(dāng)涉及到同時(shí)連接多個(gè)數(shù)據(jù)庫(kù)或同一數(shù)據(jù)庫(kù)有多個(gè)連接時(shí),就要使用自定義的事物變量。在語(yǔ)言課試卷自動(dòng)生成系統(tǒng)中采用的就是自定義的事物變量。對(duì)于系統(tǒng)使用的四個(gè)基本庫(kù)、一個(gè)匯總庫(kù),總計(jì)五個(gè)庫(kù)均采用對(duì)應(yīng)的自定義事物變量。.使用數(shù)據(jù)窗口檢索數(shù)據(jù)庫(kù)數(shù)據(jù)的全過(guò)程:數(shù)據(jù)窗口(datawindow)是powerbuilder的一大特色,而處理數(shù)據(jù)是powerbuilder最強(qiáng)的功能。二者是如何聯(lián)系起來(lái)的呢?下面就此次畢業(yè)設(shè)計(jì)中采用的檢索方法簡(jiǎn)要地總結(jié)一下如何利用數(shù)據(jù)窗口檢索數(shù)據(jù)庫(kù)中的數(shù)據(jù)。(1)創(chuàng)建一個(gè)事物變量,為了使其能與確定的數(shù)據(jù)庫(kù)連 接,應(yīng)為其賦值。(2)使用語(yǔ)句把事物對(duì)象與數(shù)據(jù)庫(kù) 連接。語(yǔ)句的語(yǔ)法如下:
18、 ;(3)使用settransobject() 函數(shù)把具體的事物對(duì)象與數(shù) 據(jù)窗口控件關(guān)聯(lián)。(4)執(zhí)行檢索操作: datawindowcntrol.retrieve()(5)斷開(kāi)與數(shù)據(jù)庫(kù)的連接: disconnect using transaction;(6)刪除自己創(chuàng)建的事物對(duì)象: destory tansaction;數(shù)據(jù)窗口控件是 powerbuilder 最有特色的控件之一,還有很多的思想,屬性,事物,方法。由于篇幅所限,這里只介紹與本課題有關(guān)的內(nèi)容。3 系統(tǒng)的分析及設(shè)計(jì)任何系統(tǒng)在設(shè)計(jì)的時(shí)候必須有一個(gè)整體的設(shè)計(jì)思路作為指導(dǎo)思想。在本章主要就以下幾個(gè)問(wèn)題進(jìn)行闡述:1 系統(tǒng)需求分析2 系統(tǒng)的
19、設(shè)計(jì)原則3 系統(tǒng)功能設(shè)計(jì)4 數(shù)據(jù)庫(kù)設(shè)計(jì)3.1 系統(tǒng)需求分析傳統(tǒng)的出卷方法在計(jì)算機(jī)日益普及的今天,已經(jīng)被淘汰。傳統(tǒng)方法及費(fèi)時(shí)又費(fèi)力。而試卷自動(dòng)生成系統(tǒng)很好的解決了這個(gè)問(wèn)題。它可以依據(jù)用戶的要求在很短時(shí)間內(nèi)生成一份試卷。用戶可以選擇試題的難度,考察章節(jié),然后依據(jù)用戶的條件在試題庫(kù)中隨機(jī)抽取試題。最后把試卷保存在word文檔中,進(jìn)行排版等打印的前期工作。隨后即可打印成一份標(biāo)準(zhǔn)試卷,另附答案。老師可以在試題查詢模塊中對(duì)題庫(kù)中的各類型試題進(jìn)行查詢??梢詫?duì)一種題型,例如填空題可以查詢某章某節(jié)的試題(例如第三章第二節(jié)的填空題),也可以通過(guò)難度進(jìn)行查詢(例如中等難度的填空題),好可以把上述兩種條件綜合起來(lái)進(jìn)行
20、查詢(例如的三章第二節(jié)中等難度的填空題)。在試題整理模塊中,可以對(duì)試題分類進(jìn)行添加,刪除,修改,保存。在試題抽取模塊中,對(duì)各種類型試題進(jìn)行分類隨機(jī)抽取。例如在隨機(jī)抽取填空時(shí),輸入截止章節(jié)和所需的試題的難度。就可隨機(jī)抽取試題。隨機(jī)抽出的試題通過(guò)ole自動(dòng)化實(shí)現(xiàn)powerbulider于word的通信。數(shù)據(jù)被保存在word文檔中,當(dāng)按下“打印”按鈕時(shí)就實(shí)現(xiàn)了powerbulider于word的通信,打開(kāi)了word文檔,老師在此文檔中就可以對(duì)隨機(jī)抽取的試題進(jìn)行排版,打印。3.2系統(tǒng)的設(shè)計(jì)原則 本系統(tǒng)是基于使用戶方便操作,簡(jiǎn)化步驟,實(shí)用,美觀的原則設(shè)計(jì)的。3.3 系統(tǒng)功能設(shè)計(jì) 根據(jù)用戶的要求對(duì)試題庫(kù)中
21、的各類型試題(填空題,單項(xiàng)選擇題,判斷題編程題)可以進(jìn)行添加、刪除、修改等常規(guī)維護(hù);還可以對(duì)試題庫(kù)中的各類型試題(填空題,單項(xiàng)選擇題,判斷題,編程題)進(jìn)行單一條件或多條件組合查詢 ; 可以根據(jù)用戶的要求在試題庫(kù)中隨機(jī)的抽取各種類型的試題; 將隨機(jī)抽出的試題和答案分別保存在word文檔中,可利用word對(duì)其進(jìn)行編輯,最終打印成標(biāo)準(zhǔn)試卷,和答案卷。登陸功能選擇試題查詢?cè)囶}庫(kù)維護(hù)隨機(jī)抽取試題打印單一條件查詢多條件組合查詢添加刪除修改圖31 系統(tǒng)邏輯結(jié)構(gòu)示意圖3.4 后臺(tái)數(shù)據(jù)庫(kù)的建設(shè)3.4.1 后臺(tái)數(shù)據(jù)庫(kù)的選擇powerbuilder 作為專業(yè)的數(shù)據(jù)庫(kù)前端開(kāi)發(fā)工具,在數(shù)據(jù)庫(kù)應(yīng)用開(kāi)發(fā)方面有獨(dú)到之處,幾乎
22、支持所有常見(jiàn)數(shù)據(jù)庫(kù)的連接。powerbuilder 與數(shù)據(jù)庫(kù)的連接可以通過(guò)odbc接口或數(shù)據(jù)庫(kù)廠商提供的專用數(shù)據(jù)庫(kù)接口實(shí)現(xiàn)。ms sql server是一個(gè)客戶/服務(wù)器關(guān)系(c/s)模式數(shù)據(jù)庫(kù)系統(tǒng),程序的所有數(shù)據(jù)處理過(guò)程,不象基于桌面數(shù)據(jù)庫(kù)那樣,只發(fā)生在一臺(tái)計(jì)算機(jī)上,而ms sql server可同時(shí)運(yùn)行于多臺(tái)計(jì)算機(jī)上,程序的用戶界面運(yùn)行在本地計(jì)算機(jī)上,而所有運(yùn)行的程序的數(shù)據(jù)庫(kù)引擎都駐留在服務(wù)器上。ms sql server具有以下主要特點(diǎn):支持三層客戶/服務(wù)器結(jié)構(gòu);有隱藏的并發(fā)控制能力;包含豐富的編程接口工具(支持odbc訪問(wèn));簡(jiǎn)單的圖形化管理工具,使系統(tǒng)管理更為直觀方便。因此,ms sq
23、l server得到不少程序員的青睞。在此次的系統(tǒng)開(kāi)發(fā)的過(guò)程中,后臺(tái)數(shù)據(jù)庫(kù)采用ms sql系列中的ms sql server2000 。powerbuilder與ms sql server數(shù)據(jù)庫(kù)的連接需要幾組動(dòng)態(tài)鏈接庫(kù)配合完成:通過(guò)專用接口文件pbmss80.dll,powerbulider8.0可以訪問(wèn)sql server2000版數(shù)據(jù)庫(kù),而ms sql server提供的數(shù)據(jù)庫(kù)接口文件是ntwdblb.dll,另外還需要數(shù)據(jù)庫(kù)網(wǎng)絡(luò)支持文件,此文件隨數(shù)據(jù)庫(kù)服務(wù)器支持的網(wǎng)絡(luò)類型不同而不同,對(duì)于namedpipes,支持文件是dbnmpntw.dll;對(duì)于tcp/ip sockets,支持文件是
24、dbmsocn.dll。這幾組動(dòng)態(tài)鏈接庫(kù)的作用分別是:powerbuilder8.0提供的數(shù)據(jù)庫(kù)接口可以接收powerbuilder應(yīng)用程序及其可執(zhí)行文件中的數(shù)據(jù)庫(kù)連接的信息,而ms sql server提供的的數(shù)據(jù)庫(kù)接口文件則負(fù)責(zé)與powerbuilder中的動(dòng)態(tài)鏈接庫(kù)進(jìn)行交換信息,傳達(dá)到數(shù)據(jù)庫(kù)服務(wù)器,數(shù)據(jù)庫(kù)網(wǎng)絡(luò)支持文件則保證客戶端與服務(wù)器的網(wǎng)絡(luò)連接。數(shù)據(jù)庫(kù)網(wǎng)絡(luò)協(xié)議microsoft sql server客戶端軟件pbmaa80. dll開(kāi)發(fā)環(huán)境microsoft sqlservermicrosoft支持powerbulider支持?jǐn)?shù)據(jù)庫(kù)或網(wǎng)絡(luò)支持網(wǎng)絡(luò)層數(shù)據(jù)庫(kù)客戶端軟件數(shù)據(jù)庫(kù)接口動(dòng)態(tài)鏈接庫(kù)
25、圖32 連接示意圖3.4.2 數(shù)據(jù)庫(kù)的設(shè)計(jì)根據(jù)系統(tǒng)功能設(shè)計(jì)的要求以及功能模塊的劃分,對(duì)于語(yǔ)言可試卷自動(dòng)生成系統(tǒng)的式題庫(kù)的數(shù)據(jù)庫(kù),可以列出以下數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu):l 填空題試題信息表:主要包括試題的id,類型,分值,章和難度,題目,答案,標(biāo)志,備注等。l 選擇題試題信息表:主要包括試題的id,類型,分值,章和難度,題目,選項(xiàng),答案,標(biāo)志,備注等。l 判斷題試題信息表:主要包括試題的id,類型,分值,章和難度,題目,答案,標(biāo)志,備注等。l 編程題試題信息表:主要包括試題的id,類型,分值,章和難度,題目,答案,標(biāo)志,備注等。l 試卷信息表:主要包括題目,答案。表3-3 填空題數(shù)據(jù)表column na
26、me data typewidth null備注tihao char3no題號(hào)leixing char4yes類型fenzi char1yes分值z(mì)hanghenanduchar4yes章和難度timuchar200yes題目daan char80yes答案biaozhi char1yes標(biāo)志表34 選擇題數(shù)據(jù)表column namedata typewidthnull備注tiaho char3no 題號(hào)leixing char4yes類型fenzhi char2yes分值z(mì)hanghenandu char4yes章和難度timu char150yes題目xuanxiangachar150ye
27、s選項(xiàng)axuanxiang bchar150yes選項(xiàng)bxuanxiang cchar150yes選項(xiàng)cxuanxiang dchar150yes選項(xiàng)ddaanchar1yes答案biaozhi char1yes標(biāo)志表35 判斷題數(shù)據(jù)表column name data typewidth null備注tihao char3no題號(hào)leixing char4yes類型fenzi char1yes分值z(mì)hanghenanduchar4yes章和難度timuchar200yes題目daan char80yes答案biaozhi char1yes標(biāo)志表36 編程題數(shù)據(jù)表column name data
28、 typewidth null備注tihao char3no題號(hào)leixing char4yes類型fenzi char1yes分值z(mì)hanghenanduchar4yes章和難度timuchar200yes題目daan char80yes答案biaozhi char1yes標(biāo)志4. 系 統(tǒng) 實(shí) 現(xiàn)4.1 登陸界面如圖41所示的頁(yè)面是c語(yǔ)言課試卷自動(dòng)生成系統(tǒng)的登陸畫(huà)面。該頁(yè)面的功能非常簡(jiǎn)單,輸入用戶名和用戶口令就可以登陸本系統(tǒng)。圖41 c語(yǔ)言課試卷自動(dòng)生成系統(tǒng)的登陸畫(huà)面下面是登陸頁(yè)面的源代碼:/判斷用戶名是否正確if sle_1.texthejing thenmessagebox(提示,請(qǐng)輸入
29、正確的用戶名!)returnend if/判斷用戶口令是否正確if sle_2.text1234thenmessagebox(提示,登錄口令非法,請(qǐng)確定后重新輸入!)returnend ifopen(w_main)4.2 主選擇模塊如圖42給出的主選擇界面的圖片,他有四個(gè)主模塊。分別是:試題查詢,試題整理,出題,打印,退出。圖42 主選擇界面4.3 試題查詢模塊這個(gè)主模塊包含有四個(gè)子模塊。其邏輯結(jié)構(gòu)如圖43所示。四個(gè)子模塊的功能,代碼基本相同。因此以填空題查詢?yōu)槔v解。試題查詢部分代碼如下:string lookforconditionif ddlb_1.text= and ddlb_2.te
30、xt= thenmessagebox(提示,請(qǐng)輸入查詢條件)elseif ddlb_1.text and ddlb_2.text= then lookforcondition=zhanghenandu = + ddlb_1.text + end ifif ddlb_1.text= and ddlb_2.text then lookforcondition=biaozhi = + ddlb_2.text + end ifif ddlb_1.text and ddlb_2.text then lookforcondition=zhanghenandu = + ddlb_1.text + + and
31、 + biaozhi = + ddlb_2.text + end ifdw_1.setfilter(lookforcondition)filter(dw_1)dw_1.retrieve()end if試題查詢填空題選擇題判斷題編程題單一條件查詢多條件查詢單一條件查詢多條件查詢單一條件查詢多條件查詢單一條件查詢多條件查詢圖43 試題查詢模塊邏輯結(jié)構(gòu)示意圖1) 選擇“填空題”這一項(xiàng);進(jìn)入填空題查詢頁(yè)面,如圖44所示;圖44 填空題查詢界面1) 在第一個(gè)下拉列表中選擇“章和難度”,在第二個(gè)下拉列表中選擇“標(biāo)志”,例如:在第一個(gè)下拉列表中選擇“1.1”,在第二個(gè)下拉列表中選擇“0”,查詢結(jié)果如45所示
32、;2) 符合查詢要求的記錄不止一條,所以可以按“上一條記錄”或“下一條記錄”按鈕來(lái)進(jìn)行選擇;45 查詢結(jié)果界面4.4 試題整理模塊這個(gè)主模塊包含有四個(gè)子模塊。其邏輯結(jié)構(gòu)如圖46所示。四個(gè)子模塊的功能,代碼基本相同。因此以填空題整理為例講解。填空題整理模塊的邏輯結(jié)構(gòu)如圖47所示。試題整理填空題整理選擇題整理判斷題整理編程題整理圖46 試題整理模塊邏輯結(jié)構(gòu)示意圖填空題整理添加一條記錄刪除一條記錄修改一條記錄上一條記錄下一條記錄 保存 放棄 退出圖47 填空題整理模塊邏輯結(jié)構(gòu)圖圖48 填空題整理模塊界面1) “增加”按鈕可在數(shù)據(jù)庫(kù)中增加一條記錄;2) “刪除”按鈕課在數(shù)據(jù)庫(kù)中刪除一條記錄;3) “上
33、一條記錄”和“下一條記錄”按鈕可實(shí)現(xiàn)試題的瀏覽;4) “允許修改”按鈕可以對(duì)一條記錄中的某一項(xiàng)或所有象進(jìn)行修改,修改后必須點(diǎn)“保存”按鈕以確保保存成功;5) “放棄”按鈕可以放棄用戶剛才所作的修改;“允許修改”功能代碼如下:string lookforconditionif ddlb_1.text= and ddlb_2.text= thenmessagebox(提示,請(qǐng)輸入查詢條件)elseif ddlb_1.text and ddlb_2.text= then lookforcondition=zhanghenandu = + ddlb_1.text + end ifif ddlb_1.t
34、ext= and ddlb_2.text then lookforcondition=biaozhi = + ddlb_2.text + end ifif ddlb_1.text and ddlb_2.text then lookforcondition=zhanghenandu = + ddlb_1.text + + and + biaozhi = + ddlb_2.text + end ifdw_1.setfilter(lookforcondition)filter(dw_1)dw_1.retrieve()end if“添加”功能代碼如下:integer li_rowcb_5.enable
35、d=falsecb_6.enabled=falsecb_1.enabled=falsecb_2.enabled=falsecb_3.enabled=falsecb_7.enabled=truecb_8.enabled=truedw_1.enabled=true/數(shù)據(jù)窗口獲得焦點(diǎn)dw_1.setfocus()/插入一條空紀(jì)錄,以待修改li_row=dw_1.insertrow(0)/滾動(dòng)到指定行dw_1.scrolltorow(li_row)在這個(gè)模塊中主要使用了數(shù)據(jù)窗口技術(shù)(datawindow)。4.4.1 數(shù)據(jù)窗口與數(shù)據(jù)編輯 數(shù)據(jù)窗口的主要功能是從數(shù)據(jù)庫(kù)中檢索出數(shù)據(jù)并顯示在用戶界面上,并且
36、允許用戶通過(guò)這個(gè)數(shù)據(jù)窗口對(duì)象和數(shù)據(jù)庫(kù)通信,進(jìn)行數(shù)據(jù)的添加,刪除和修改。數(shù)據(jù)窗口包括兩方面的內(nèi)容:數(shù)據(jù)窗口對(duì)象和數(shù)據(jù)窗口控件。數(shù)據(jù)窗口對(duì)象主要用于展示數(shù)據(jù)并允許用戶增刪改數(shù)據(jù),數(shù)據(jù)窗口控件則把數(shù)據(jù)窗口對(duì)象放置到窗口上并呈現(xiàn)在用戶面前。數(shù)據(jù)窗口對(duì)象無(wú)法直接在程序中使用,而數(shù)據(jù)窗口控件沒(méi)有了數(shù)據(jù)窗口對(duì)象就成了一個(gè)沒(méi)有數(shù)據(jù)的空舞臺(tái)??梢赃@樣理解,數(shù)據(jù)窗口對(duì)象是一個(gè)很大的風(fēng)景區(qū),而數(shù)據(jù)窗口控件只是一個(gè)顯示框。數(shù)據(jù)窗口控件每次只能顯示一定大小的數(shù)據(jù),數(shù)據(jù)窗口對(duì)象中的數(shù)據(jù)就是通過(guò)這個(gè)顯示框?qū)⑵渲械臄?shù)據(jù)顯示給用戶。數(shù)據(jù)窗口對(duì)象提供了強(qiáng)大的操縱數(shù)據(jù)的功能,包括過(guò)濾數(shù)據(jù),數(shù)據(jù)排序,分組檢索等,修改后的數(shù)據(jù)還可以有
37、數(shù)據(jù)窗口提交給數(shù)據(jù)庫(kù)進(jìn)行更新。構(gòu)造數(shù)據(jù)窗口對(duì)象時(shí),首先應(yīng)考慮兩方面的內(nèi)容:數(shù)據(jù)源和顯示風(fēng)格。數(shù)據(jù)窗口對(duì)象中的數(shù)據(jù)源決定了數(shù)據(jù)窗口對(duì)象從什么地方得到數(shù)據(jù)。顯示風(fēng)格決定了數(shù)據(jù)窗口以何種方式展示,表現(xiàn)數(shù)據(jù)。利用數(shù)據(jù)窗口可以完成復(fù)雜的數(shù)據(jù)編輯任務(wù)。有以下幾點(diǎn)可以實(shí)現(xiàn)1 數(shù)據(jù)查找功能的實(shí)現(xiàn)2 記錄刪除功能的實(shí)現(xiàn)3 記錄保存功能的實(shí)現(xiàn)4 數(shù)據(jù)清空功能的實(shí)現(xiàn)5 記錄插入功能的實(shí)現(xiàn)數(shù)據(jù)窗口控件是powerbuilder中最有特色的控件之一,是sybase公司的專利控件。由于有了數(shù)據(jù)窗口控件使得用戶界面更加友好,減少了開(kāi)發(fā)的工作量。powerbuilder的數(shù)據(jù)窗口控件有freeform風(fēng)格、tabular風(fēng)格
38、、grid風(fēng)格、label風(fēng)格、n-up風(fēng)格、group風(fēng)格、comosite風(fēng)格、crosstab風(fēng)格、graph風(fēng)格、ole2.0風(fēng)格和richtext風(fēng)格。在此次開(kāi)發(fā)中根據(jù)數(shù)據(jù)的格式和用戶的需要采用的是freeform風(fēng)格數(shù)據(jù)窗口。當(dāng)我們?cè)诩埳侠L制數(shù)據(jù)表格記錄數(shù)據(jù)的時(shí)候,經(jīng)常進(jìn)行的操作就是查找記錄,刪除記錄,保存記錄等操作。同樣對(duì)于一個(gè)數(shù)據(jù)管理系統(tǒng)類似這樣的功能是必不可少的。這些功能在利用計(jì)算機(jī)實(shí)現(xiàn)的時(shí)候必須充分地發(fā)揮計(jì)算機(jī)的優(yōu)勢(shì)快速,準(zhǔn)確地處理大量的數(shù)據(jù)。4.5 隨機(jī)出題功能出題模塊包含有抽取填空題,抽取選擇題,抽取判斷題,抽取編程題四個(gè)子模塊?,F(xiàn)以抽取選擇題為例。出題模塊邏輯結(jié)構(gòu)如圖
39、49所示。在這個(gè)主模塊中用到了datastore技術(shù),此技術(shù)將在下一章中作詳細(xì)講述,在這里不做論述。 出題抽取填空題抽取選擇題抽取判斷題抽取編程題圖49 出題模塊邏輯結(jié)構(gòu)示意圖選擇題抽?。?) 選擇截止到哪一章和試題難度;2) 抽取四道題;3) 還可以重新抽取主要代碼如下:if ddlb_1.text=8.3 then tag_1=5end ifif ddlb_1.text=9.3 then tag_1=10end ifif ddlb_1.text=10.3 then tag_1=15end ifint temp_1temp_1=rand(tag_1)irow=temp_1mle_1.text
40、=題號(hào):+ds.getitemstring(irow,8)mle_1.text=mle_1.text+char(13)+char(10)+章和難度:+ds.getitemstring(irow,9)mle_1.text=mle_1.text+char(13)+char(10)+題目:+ds.getitemstring(irow,1)mle_1.text=mle_1.text+char(13)+char(10)+選項(xiàng)a:+ds.getitemstring(irow,2)mle_1.text=mle_1.text+char(13)+char(10)+選項(xiàng)b:+ds.getitemstring(ir
41、ow,3)mle_1.text=mle_1.text+char(13)+char(10)+選項(xiàng)c:+ds.getitemstring(irow,4)mle_1.text=mle_1.text+char(13)+char(10)+選項(xiàng)d:+ds.getitemstring(irow,5)mle_1.text=mle_1.text+char(13)+char(10)+答案:+ds.getitemstring(irow,6)return 0部分代碼如下:datastore dsint irowstring ianswer0 to 4int tag_1tihao=1ds=create datastor
42、eds.dataobject=dw_xuanzeds.settransobject(sqlca)ds.retrieve()st_1.text=當(dāng)前考題為:+string(1,000)show(tihao)cb_1.enabled=falsest_1.text=當(dāng)前考題為:+string(2,000)show(tihao)cb_2.enabled=falsest_1.text=當(dāng)前考題為:+string(3,000)show(tihao)圖410 抽取選擇題界面4.5 打印模塊在抽取完試題后應(yīng)對(duì)所抽取試題進(jìn)行打印。此功能是通過(guò)ole實(shí)現(xiàn)與word通信。這項(xiàng)技術(shù)在第四章第三節(jié)已作詳細(xì)講述,在這里就
43、不詳細(xì)論述了。圖411 打印界面主要代碼如下:oleobject ole_objectole_object=create oleobjectif ole_object.connecttonewobject(word.application)0 then/message (ole錯(cuò)誤,ole無(wú)法連接)return end if ole_object.visible=truelong ll_colnum,ll_rownumconstant long wdtablebehzvior=1constant long wdautofitfixed=0constant long wdcell=12strin
44、g is_valuell_colnum=long(dw_da.object.datawindow.column.count)ll_rownum=dw_da.rowcount()+1ole_object.documents.add(f:畢設(shè)畢業(yè)設(shè)計(jì)1.doc,false,0)ole_object.actievedocument.tables.add()string is_colnameinteger f,g,hfor f=1 to ll_colnumis_colname=dw_da.describe(#+string(f)+.name)+_tis_value=dw_da.describe(is_
45、colname+.text)ole_object.selection.typetext(is_value)ole_object.selection.moveright(wdcell)nextdw_da.setredraw(false)ole_object.selection.moveleft(wdcell)for f=2 to ll_rownumfor g=1 to ll_colnumdw_da.scrolltorow(g - 1)/dw_da.setcolnum(g)is_value=dw_da.gettext()ole_object.selection.moveright(wdcell)o
46、le_object.selection.typetext(is_value)nextnextdw_da.setredraw(true)constant long wdformatdocument=0ole_object.disconnect.saveasole_object.disconnectobject()destroy ole_object5 難點(diǎn)及對(duì)策在這個(gè)系統(tǒng)的設(shè)計(jì)中,明顯存在一些難點(diǎn):5.1隨機(jī)抽取試題的算法if ddlb_1.text=8.3 then tag_1=5end ifif ddlb_1.text=9.3 then tag_1=10end ifif ddlb_1.tex
47、t=10.3 then tag_1=15end ifint temp_1temp_1=rand(tag_1)irow=temp_1mle_1.text=題號(hào):+ds.getitemstring(irow,8)mle_1.text=mle_1.text+char(13)+char(10)+章和難度:+ds.getitemstring(irow,9)mle_1.text=mle_1.text+char(13)+char(10)+題目:+ds.getitemstring(irow,1)mle_1.text=mle_1.text+char(13)+char(10)+選項(xiàng)a:+ds.getitemstring(irow,2)mle_1.text=m
溫馨提示
- 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ù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 商鋪?zhàn)赓U解除合同法律意見(jiàn)書(shū)
- 項(xiàng)目咨詢服務(wù)合同條件
- 電子借款合同格式
- 安全評(píng)估招標(biāo)指南
- 房屋買賣合同中契稅繳納的注意事項(xiàng)
- 供應(yīng)商品質(zhì)保證書(shū)
- 商務(wù)樓衛(wèi)生維護(hù)契約
- 供貨協(xié)議合同模板
- 春運(yùn)出行完全手冊(cè)解析
- 傳遞正能量的保證宣言
- 2023河南省成人高考《英語(yǔ)》(高升專)考試卷及答案(單選題型)
- 教學(xué)設(shè)計(jì)《營(yíng)養(yǎng)健康我守護(hù)-數(shù)據(jù)的價(jià)值》
- 小學(xué)三年發(fā)展規(guī)劃(2022-2025)
- 專升本學(xué)英語(yǔ)心得體會(huì)范文英語(yǔ)專升本范文10篇(9篇)
- 安徽省水利工程資料表格
- JJG 2047-2006扭矩計(jì)量器具
- GB/T 1354-2018大米
- 超材料(metamaterials)教學(xué)講解課件
- 20XX年高校維穩(wěn)工作案例(四)
- 二年級(jí)上冊(cè)語(yǔ)文課件 語(yǔ)文園地八 人教部編版(共19張PPT)
- 2022(SOP)人民醫(yī)院倫理委員會(huì)標(biāo)準(zhǔn)操作規(guī)程
評(píng)論
0/150
提交評(píng)論