2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩43頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、<p><b>  車輛信息管理的開發(fā)</b></p><p><b>  摘要:</b></p><p>  車輛信息管理是智能辦公系統(tǒng)的重要組成部分,因此,車輛信息管理也以方便、快捷的優(yōu)點正慢慢地進入人們的生活,將傳統(tǒng)的車輛管理方式徹底的解脫出來,提高效率,減輕工作人員以往繁忙的工作,減小出錯的概率。從而使人們有更多時間來獲取信息、

2、了解信息、掌握信息。隨著企業(yè)的不斷發(fā)展,大中型企業(yè)的車輛使用與管理工作一日復(fù)雜,司機的不固定,車輛的保修,報廢等等,一系列問題干擾者我們。由此車輛管理信息系統(tǒng)產(chǎn)生了。</p><p>  關(guān)鍵詞:車輛信息管理;系統(tǒng)設(shè)計;信息;數(shù)據(jù)庫;PowerBuilder</p><p><b>  1.引言4</b></p><p>  1.1數(shù)據(jù)庫應(yīng)用

3、技術(shù)現(xiàn)狀4</p><p>  1.2面對對象與可視化技術(shù)應(yīng)用前景4</p><p>  1.3課程設(shè)計的目的和任務(wù)5</p><p>  1.4車輛管理的現(xiàn)狀5</p><p>  1.5 車輛信息管理的可行性分析5</p><p>  2.相關(guān)方法與技術(shù)6</p><p>  2

4、.1 數(shù)據(jù)庫應(yīng)用系統(tǒng)體系結(jié)構(gòu)6</p><p>  2.2可視化面向?qū)ο蠹夹g(shù)7</p><p>  2.3事件驅(qū)動程序設(shè)計8</p><p>  2.4數(shù)據(jù)庫事務(wù)控制技術(shù)8</p><p>  2.5數(shù)據(jù)庫連接策略10</p><p><b>  3 課題分析10</b></p&

5、gt;<p>  3.1選題背景10</p><p>  3.2 數(shù)據(jù)需求10</p><p>  3.3 功能需求11</p><p><b>  4 課題設(shè)計13</b></p><p>  4.1 總體設(shè)計13</p><p>  4.1.1 應(yīng)用程序功能的幾個事件

6、14</p><p><b>  5 課題實現(xiàn)15</b></p><p>  5.1應(yīng)用程序包裝的設(shè)計與實現(xiàn)15</p><p>  5.2數(shù)據(jù)庫訪問策略的設(shè)計與實現(xiàn)16</p><p>  5.3創(chuàng)建父窗口19</p><p><b>  6系統(tǒng)測試39</b>

7、</p><p>  6.1對系統(tǒng)模塊的測試39</p><p>  6.2對車輛信息維護模塊的測試42</p><p>  6.3車輛使用信息的維護測試43</p><p>  6.4司機信息維護模塊測試43</p><p><b>  7總結(jié)44</b></p><

8、;p>  7.1 主要研究內(nèi)容及成果44</p><p>  7.2 今后進一步研究方向45</p><p><b>  1.引言</b></p><p>  隨著計算機及網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,Internet/Intranet應(yīng)用在全球范圍內(nèi)日益普及,當(dāng)今社會正快速向信息化社會前進,信息系統(tǒng)的作用也越來越大。企業(yè)在正常運營中總是面

9、對大量的車輛使用信息,隨著企業(yè)的不斷發(fā)展,大中型企業(yè)的車輛使用與管理工作一日復(fù)雜,司機的不固定,車輛的保修,報廢等等,一系列問題干擾者我們。車輛管理信息系統(tǒng)可以減輕工作,將工作科學(xué)化、規(guī)范化,提高了企業(yè)的工作質(zhì)量因此根據(jù)企業(yè)目前實際的管理情況開發(fā)一套車輛信息管理是十分必要的。</p><p>  1.1數(shù)據(jù)庫應(yīng)用技術(shù)現(xiàn)狀</p><p>  數(shù)據(jù)庫技術(shù)是現(xiàn)代信息科學(xué)與技術(shù)的重要組成部分,是

10、計算機數(shù)據(jù)處理與信息管理系統(tǒng)的核心。數(shù)據(jù)庫技術(shù)研究和解決了計算機信息處理過程中大量數(shù)據(jù)有效地組織和存儲的問題,在數(shù)據(jù)庫系統(tǒng)中減少數(shù)據(jù)存儲冗余、實現(xiàn)數(shù)據(jù)共享、保障數(shù)據(jù)安全以及高效地檢索數(shù)據(jù)和處理數(shù)據(jù)。</p><p>  隨著計算機技術(shù)與網(wǎng)絡(luò)通信技術(shù)的發(fā)展,數(shù)據(jù)庫技術(shù)已成為信息社會中對大量數(shù)據(jù)進行組織與管理的重要技術(shù)手段及軟件技術(shù),是網(wǎng)絡(luò)信息化管理系統(tǒng)的基礎(chǔ)。本章主要介紹數(shù)據(jù)庫技術(shù)的應(yīng)用與發(fā)展、關(guān)系模型的基本概念、

11、關(guān)系數(shù)據(jù)庫的設(shè)計理論及數(shù)據(jù)庫設(shè)計方法等內(nèi)容,是學(xué)習(xí)和掌握現(xiàn)代數(shù)據(jù)庫技術(shù)的基礎(chǔ)</p><p>  1.2面對對象與可視化技術(shù)應(yīng)用前景</p><p>  可視化技術(shù)使人能夠直接對具有形體的信息進行操作,和計算機直接交流。這種技術(shù)已經(jīng)把人和機器的力量以一種直覺而自然的方式加以統(tǒng)一,這種革命性的變化無疑將極大地提高人們的工作效率,用以前不可想象的手段來獲取信息或發(fā)揮自己創(chuàng)造性的思維。</

12、p><p>  隨著科技的蓬勃發(fā)展,可視化技術(shù)的應(yīng)用領(lǐng)域越來越廣闊。從CT技術(shù)到數(shù)字人體,可視化技術(shù)在醫(yī)療與生命科學(xué)得到廣泛應(yīng)用;空間信息的可視化,在地理、軍事等領(lǐng)域應(yīng)用日益普遍。</p><p>  總之,可視化技術(shù),應(yīng)用前景無限廣闊。 </p><p>  1.3課程設(shè)計的目的和任務(wù)</p><p>  目的:熟悉一種可視化開發(fā)平臺,掌握數(shù)據(jù)

13、庫應(yīng)用當(dāng)中的Java連接技術(shù)、嵌入式SQL語言使用技術(shù)、事務(wù)控制技術(shù)、事件程序設(shè)計技術(shù)、面向?qū)ο蟮目梢暬夹g(shù),掌握數(shù)據(jù)庫應(yīng)用的分析、設(shè)計實現(xiàn)的方法。</p><p>  任務(wù):安裝、設(shè)置PowerBuilder可視化開發(fā)環(huán)境并作出一系列技術(shù)實驗,包括應(yīng)用程序的創(chuàng)建,常用事件程序設(shè)計方法,一個表上提供的增、刪、改的實現(xiàn)并且搭建應(yīng)用原型,事務(wù)訪問應(yīng)用,事務(wù)控制技術(shù),數(shù)據(jù)庫連接策略。</p><p&

14、gt;  1.4車輛管理的現(xiàn)狀</p><p>  現(xiàn)在大多數(shù)的車輛管理方式為手工處理,重復(fù)勞動多,勞動強度大,而且容易出錯,隨著企業(yè)的不斷發(fā)展,大中型企業(yè)的車輛使用與管理工作一日復(fù)雜,司機的不固定,車輛的保修,報廢等等,一系列問題干擾者我們。</p><p>  1.5 車輛信息管理的可行性分析</p><p>  本次課程設(shè)計題目:“車輛信息管理的開發(fā)”主要目的

15、是利用數(shù)據(jù)庫軟件編制一個管理軟件,用以實現(xiàn)車輛信息查詢和車輛信息編輯與使用以及日常工作等多項管理。同時對整個系統(tǒng)的分析、設(shè)計過程給出一個完整論證。車輛信息管理是一種基于集中統(tǒng)一規(guī)劃的數(shù)據(jù)庫數(shù)據(jù)管理新模式。在對司機、車輛的管理,其實是對車輛、車輛使用數(shù)據(jù)的管理。本系統(tǒng)的建成無疑會為管理者對車輛信息管理提供極大的幫助。本系統(tǒng)的設(shè)計主要從以下幾方面做起:系統(tǒng)業(yè)務(wù)流程分析、系統(tǒng)的功能設(shè)計、系統(tǒng)的數(shù)據(jù)庫結(jié)構(gòu)設(shè)計等。作這些工作需對數(shù)據(jù)庫知識有足夠認

16、識,并深入的了解PowerBuilder的使用和管理系統(tǒng)的相關(guān)知識。在信息時代的今天,人類需要對在政治、經(jīng)濟、軍事、文化、科研、教育等領(lǐng)域產(chǎn)生的大量信息進行管理,并對數(shù)據(jù)進行加工處理,數(shù)據(jù)庫技術(shù)則是信息管理與數(shù)據(jù)處理的先進技術(shù)。隨著信息量的不斷增加,作為計算機的三大主要應(yīng)用(科學(xué)計算、過程控制和數(shù)據(jù)處理)之一的數(shù)據(jù)處理,已迅速上升為計算機應(yīng)用的主要方面,數(shù)據(jù)庫技術(shù)則成為人們?nèi)粘I钪刑幚頂?shù)據(jù)不可缺少的有力工具,并且現(xiàn)代的信息管理系統(tǒng)幾乎

17、都以數(shù)據(jù)庫技術(shù)作為核心。</p><p>  現(xiàn)在大多數(shù)的車輛管理方式為手工處理,重復(fù)勞動多,勞動強度大,而且容易出錯,新系統(tǒng)的使用能否可以很好的解決這些問題要看系統(tǒng)的可行性,可行性研究的目的是用最小的代價在盡可能短的時間內(nèi)確定問題是否能夠解決。系統(tǒng)的可行性分析有以下幾個方面:</p><p>  (1)技術(shù)可行性:處理速度快、準確通過權(quán)限的設(shè)置,數(shù)據(jù)的安全性好、方便查詢、管理等。 &

18、lt;/p><p>  (2)經(jīng)濟可行性:系統(tǒng)建設(shè)不需要很大的投入、可縮減人力投入。</p><p>  (3)運行上可行性:本系統(tǒng)作為一個小型的圖書館信息管理系統(tǒng),所耗費的</p><p><b>  資源非常的小。 </b></p><p>  (4)從各種社會因素可行性分析:可降低工作人員工作強度,提高效率,會<

19、/p><p>  得到學(xué)校工作人員的一致同意的。</p><p>  綜上所述通過可行性分析認為新系統(tǒng)的開發(fā)方案切實可行,可進行開發(fā)。</p><p><b>  2.相關(guān)方法與技術(shù)</b></p><p>  本章內(nèi)容主要以查閱文獻為途徑,總結(jié)概括出數(shù)據(jù)庫應(yīng)用相關(guān)的方法與技術(shù),內(nèi)容主要涉及到數(shù)據(jù)庫應(yīng)用系統(tǒng)體系結(jié)構(gòu)、可視化面

20、向?qū)ο蠹夹g(shù)、事件驅(qū)動程序設(shè)計、數(shù)據(jù)庫事務(wù)控制技術(shù)、數(shù)據(jù)庫連接策略。</p><p>  2.1 數(shù)據(jù)庫應(yīng)用系統(tǒng)體系結(jié)構(gòu)</p><p>  數(shù)據(jù)庫內(nèi)部結(jié)構(gòu) PowerBuilder 數(shù)據(jù)庫中的所有信息通常都存儲在單個數(shù)據(jù)庫 文件中,可以從一臺計算機復(fù)制到另一臺計算機。還可以為若干文件生 成數(shù)據(jù)庫,但通常只有非常大的數(shù)據(jù)庫才需要這樣做。 除了數(shù)據(jù)庫文件外, </p&

21、gt;<p>  PowerBuilder 在運行數(shù)據(jù)庫時還使用 另外兩個文件。這兩個文件是事務(wù)日志和臨時文件。 數(shù)據(jù)庫文件 在內(nèi)部,數(shù)據(jù)庫文件是由頁 (磁盤的固定大小區(qū)域)組成的。數(shù)據(jù)訪問層一次讀取和寫入一頁上的數(shù)據(jù)。許多頁 保存數(shù)據(jù)庫表中的數(shù)據(jù),而其它一些頁則保存索引信息、與數(shù)據(jù) 庫內(nèi)數(shù)據(jù)的分發(fā)有關(guān)的信息等。 事務(wù)日志 事務(wù)日志是一個單獨的文件,記錄在數(shù)據(jù)庫上執(zhí)行的 所有操作。通常,它具有與數(shù)據(jù)庫文件相同的名稱,只是它

22、以后 綴 .log 結(jié)尾,而不是以 .db 結(jié)尾。事務(wù)日志具有三個重要功能。 </p><p>  ?記錄對數(shù)據(jù)執(zhí)行的操作以支持恢復(fù) 如果數(shù)據(jù)庫文件損壞, 您可以根據(jù)備份以及事務(wù)日志重新創(chuàng)建數(shù)據(jù)庫。 </p><p>  ?提高性能 通過將信息寫入事務(wù)日志,數(shù)據(jù)庫服務(wù)器可以安 全地處理您的語句,而不必頻繁寫入數(shù)據(jù)庫文件。 支持數(shù)據(jù)庫復(fù)制 SQL 和PowerBuilder客戶端實用程序 使

23、用此文件復(fù)制對有時候連接到網(wǎng)絡(luò)的便攜式計算機上的數(shù) 據(jù)庫的更改。 臨時文件 在數(shù)據(jù)庫服務(wù)器啟動時該臨時文件打開,在數(shù)據(jù)庫服 務(wù)器結(jié)束時該臨時文件關(guān)閉。顧名思義,臨時文件是在服務(wù)器運 行時用來保存臨時信息的。臨時文件不保存需要在兩個會話之間 保留的信息。 該臨時文件存儲在您的臨時目錄中。此目錄的位置通常由 TEMP 環(huán)境變量標(biāo)識。</p><p>  2.2可視化面向?qū)ο蠹夹g(shù)</p><p>

24、;  可視化(Visual)程序設(shè)計是一種全新的程序設(shè)計方法,它主要是讓程序設(shè)計人員利用軟件本身所提供的各種控件,像搭積木式地構(gòu)造應(yīng)用程序的各種界面??梢暬绦蛟O(shè)計最大的優(yōu)點是設(shè)計人員可以不用編寫或只需編寫很少的程序代碼,就能完成應(yīng)用程序的設(shè)計,這樣就能極大地提高設(shè)計人員的工作效率。能進行可視化程序設(shè)計的語言很多。</p><p>  在數(shù)據(jù)輸入模塊內(nèi)部設(shè)計中,采用面向?qū)ο蟮脑O(shè)計方法。[6]面向?qū)ο蟮幕靖拍钊缦?/p>

25、: 對象:對象是要研究的任何事物。從一本書到一家圖書館,單的整數(shù)到整數(shù)列龐大的數(shù)據(jù)庫、極其復(fù)雜的自動化工廠、航天飛機都可看作對象,它不僅能表示有形的實體,也能表示無形的(抽象的)規(guī)則、計劃或事件。對象由數(shù)據(jù)(描述事物的屬性)和作用于數(shù)據(jù)的操作(體現(xiàn)事物的行為)構(gòu)成一獨立整體。從程序設(shè)計者來看,對象是一個程序模塊,從用戶來看,對象為他們提供所希望的行為。在對內(nèi)的操作通常稱為方法。 類:類是對象的模板。即類是對一組有相同數(shù)據(jù)和相同操作的

26、對象的定義,一個類所包含的方法和數(shù)據(jù)描述一組對象的共同屬性和行為。類是在對象之上的抽象,對象則是類的具體化,是類的實例。類可有其子類,也可有其它類,形成類層次結(jié)構(gòu)。 消息:消息是對象之間進行通信的一種規(guī)格說明。一般它由三部分組成:接收消息的對象、消息名及實際變元。 面向?qū)ο笾饕卣鳎?封裝性:封裝是一種信息隱蔽技術(shù),它體現(xiàn)于類的說明,是對象的重要特性。封裝使數(shù)據(jù)和加工該數(shù)據(jù)的方法(函數(shù))封裝為一個整體,以實現(xiàn)獨立性很強的模塊,使得

27、用戶只能見到對象的外特性(對象能接受哪些消</p><p>  2.3事件驅(qū)動程序設(shè)計</p><p>  所謂事件驅(qū)動,簡單地說就是你點什么按鈕(即產(chǎn)生什么事件),電腦執(zhí)行什么操作(即調(diào)用什么函數(shù)).當(dāng)然事件不僅限于用戶的操作.   weWidgets的中所有可以處理事件的類都繼承自wxEvtHandler,其中包含frames, buttons, menus, even docume

28、nts,所有的窗體類(即從wxWindow繼承的類)和程序類(application class).   這些類可以有一個事件表,用來綁定事件和被調(diào)用的函數(shù)(handler functions).   過程 3.2. 建立一個靜態(tài)事件表(即編譯時生成的事件表)的操作步驟  建立一個新類(直接或間接從wxEvtHandler繼承)  為每個要處理的事件聲明被調(diào)用的函數(shù)  在被處理的事件所在的類的聲明中加入宏DECLARE_EVE

29、NT_TABLE  在宏BEGIN_EVENT_TABLE... END_EVENT_TABLE(就是事件表)中將函數(shù)與枚舉的數(shù)字綁定(因為產(chǎn)生該類型的事件的按鈕不唯一,要用枚舉數(shù)來區(qū)分);有些事件不必與枚舉數(shù)綁定,因為產(chǎn)生該類型的事件的對象可以確定(比如就是this).</p><p>  2.4數(shù)據(jù)庫事務(wù)控制技術(shù)</p><p>  一 事務(wù)處理介紹 事務(wù)是這樣一種機制,它確保多個

30、SQL語句被當(dāng)作單個工作單 元來處理。事務(wù)具有以下的作用: * 一致性:同時進行的查詢和更新彼此不會發(fā)生沖突,其他 用戶不會看到發(fā)生了變化但尚未提交的數(shù)據(jù)。 * 可恢復(fù)性:一旦系統(tǒng)故障,數(shù)據(jù)庫會自動地完全恢復(fù)未完 成的事務(wù)。 二 事務(wù)與一致性 事務(wù)是完整性的單位,一個事務(wù)的執(zhí)行是把數(shù)據(jù)庫從一個一 致的狀態(tài)轉(zhuǎn)換成另一個一致的狀態(tài)。因此,如果事務(wù)孤立執(zhí)行時 是正確的,但如果多個事務(wù)并發(fā)交錯地執(zhí)行,就可能相互干擾, 造成

31、數(shù)據(jù)庫狀態(tài)的不一致。在多用戶環(huán)境中,數(shù)據(jù)庫必須避免同 時進行的查詢和更新發(fā)生沖突。這一點是很重要的,如果正在被 處理的數(shù)據(jù)能夠在該處理正在運行時被另一用戶的修改所改變, 那么該處理結(jié)果是不明確的。 不加控制的并發(fā)存取會產(chǎn)生以下幾種錯誤: 1 丟失修改(lost updates) 當(dāng)多個事務(wù)并發(fā)修改一個數(shù)據(jù)時,不加控制會得出錯誤的結(jié) 果,一個修改會覆蓋掉另一個修改。 2 讀的不可重復(fù)性 當(dāng)多個事務(wù)按某種時間順序存取若干數(shù)

32、據(jù)時,如果對并發(fā)存 取不加控制,也會產(chǎn)生錯誤。 3 臟讀(DIRD</p><p>  2.5數(shù)據(jù)庫連接策略</p><p>  1.首先SQL企業(yè)管理器中要有事先建好的數(shù)據(jù)庫,然后通過PB自帶的db 控制畫板鏈接sql數(shù)據(jù)庫.</p><p>  2.如圖設(shè)置新的文件.隨即彈出初始化文件對話框。在第一空格隨便填入一個PB數(shù)據(jù)庫名字.第二個空格是服務(wù)器

33、.填入(local)   在第三個空格出填寫 sa      默認超級用戶管理員.然后再Database 空格處填寫 在SQL企業(yè)管理器建好的數(shù)據(jù)庫名字.確認無誤后,點擊ok 然后雙擊你所起名字的數(shù)據(jù)庫小圖標(biāo)即鏈接成功!望采納</p><p><b>  3 課題分析<

34、/b></p><p><b>  3.1選題背景</b></p><p>  隨著企業(yè)的不斷發(fā)展,大中型企業(yè)的車輛使用與管理工作一日復(fù)雜,司機的不固定,車輛的保修,報廢等等,一系列問題干擾者我們。由此車輛管理信息系統(tǒng)產(chǎn)生了。</p><p><b>  3.2 數(shù)據(jù)需求</b></p><p&g

35、t;  車輛的基本信息:車輛牌照號,品牌,購買日期,購買金額等等;</p><p>  司機的基本信息:司機編號,司機姓名,駕駛歷史,駕駛等級,電話,家庭住址;</p><p>  車輛和司機的關(guān)系屬性:駕駛時間,距離等等。</p><p><b>  3.3 功能需求</b></p><p>  3.3.1系統(tǒng)主要實現(xiàn)

36、以下幾個方面的功能</p><p>  1.用戶登錄 </p><p><b>  2.修改密碼 </b></p><p>  3.車輛信息編輯(添加,刪除,修改)及查詢 </p><p>  4.司機信息編輯(添加,刪除,修改)及查詢</p><p>  5.車輛使用信息編輯(添加,刪

37、除,修改)及查詢</p><p>  6.系統(tǒng)維護(設(shè)置用戶權(quán)限)</p><p><b>  3.3.2功能描述</b></p><p>  車輛管理包括用戶登錄、車輛信息編輯、車輛信息查詢、車輛使用信息查詢、司機信息編輯、司機信息查詢、車輛使用信息編輯、車輛使用信息查詢、車輛使用信息編輯及系統(tǒng)維護等功能。 </p><

38、p>  用戶登錄,用戶必須使用正確的用戶名和密碼才能訪問系統(tǒng);車輛信息編輯,實現(xiàn)對車輛信息的添加、修改和刪除的功能;司機信息查詢,實現(xiàn)了詳細查詢司機的信息。同時對車輛和司機信息的進行管理,車輛使用信息查詢及編輯,是更好地給司機安排車輛。系統(tǒng)維護,系統(tǒng)管理員可以注冊用戶,還可以設(shè)置新用戶的可編輯及查詢的權(quán)限。</p><p>  3.3.3功能需求模型</p><p><b>

39、;  3.3.4安全需求</b></p><p>  數(shù)據(jù)庫級的安全性控制一般采用用戶標(biāo)識與口令鑒別、存取控制、視圖和數(shù)據(jù)加密等安全技術(shù)。</p><p>  本車輛管理系統(tǒng)采用用戶名標(biāo)示與密碼鑒別技術(shù)來實現(xiàn)安全控制??紤]到不同用戶的權(quán)限不同,第一次進入該系統(tǒng)時應(yīng)該向系統(tǒng)管理員申請注冊一個用戶名和密碼,并完整的填寫相關(guān)信息,同時存入數(shù)據(jù)庫用戶權(quán)限表中。這樣系統(tǒng)管理員就可賦予不同

40、用戶不同的權(quán)限。每位用戶根據(jù)自己的身份不同,擁有不同的權(quán)限,包括可編輯,可查詢,可維護系統(tǒng)等。系統(tǒng)管理員有權(quán)力行使所有的管理功能,普通用戶只能進行一般的編輯或查詢,而系統(tǒng)管理員還有維護系統(tǒng)的權(quán)限。</p><p>  3.3.5一致性需求</p><p>  在車輛管理系統(tǒng)相關(guān)的表之間,有較強的關(guān)聯(lián)性,為了實現(xiàn)一致性的需求,我們在各個表之間建立起了一致性約束。例如在車輛信息編輯中,想刪除車

41、輛,系統(tǒng)會提示:該車輛有使用信息記錄,禁止刪除。</p><p>  3.3.6完整性需求</p><p>  根據(jù)車輛管理系統(tǒng)的要求,為保持數(shù)據(jù)的完整性,采用了數(shù)據(jù)庫的事務(wù)機制,防止出現(xiàn)操作故障。</p><p><b>  4 課題設(shè)計</b></p><p><b>  4.1 總體設(shè)計</b>

42、;</p><p>  本次車輛信息管理系統(tǒng)采用PowerBuilder8.0的可視化開發(fā)技術(shù),按照軟件開發(fā)的流程完成。系統(tǒng)分三個大的模塊,一個是系統(tǒng)維護模塊,主要要以下倆個子模塊組成,用戶口令更改模塊和用戶增刪改模塊,第二個功能模塊是車輛信息維護模塊,由四個子模塊構(gòu)成,分別是車輛使用信息子模塊,司機信息維護子模塊,車隊信息維護子模塊和司機信息維護子模塊。這四個模塊分別對應(yīng)數(shù)據(jù)庫里四張表的增刪改操作。第三個模塊是

43、查詢模塊,此模塊實現(xiàn)了對車輛,司機,車隊,車輛使用信息的查詢功能。</p><p>  4.1.1 應(yīng)用程序功能的幾個事件</p><p><b>  Open事件</b></p><p><b>  Click事件</b></p><p><b>  Start事件</b>&

44、lt;/p><p><b>  Stop事件</b></p><p><b>  刪除事件</b></p><p><b>  添加事件</b></p><p><b>  修改事件</b></p><p><b>  構(gòu)造函

45、數(shù)</b></p><p><b>  對窗口的繼承</b></p><p>  4.1.2 主控功能的實現(xiàn)</p><p>  4.1.2 ①號例子的實現(xiàn)</p><p>  4.1.3 ②號例子的實現(xiàn)</p><p>  4.1.4 ③號例子的實現(xiàn)</p><

46、p>  4.1.5 數(shù)據(jù)庫設(shè)計</p><p><b>  5 課題實現(xiàn)</b></p><p>  5.1應(yīng)用程序包裝的設(shè)計與實現(xiàn)</p><p>  5.1.1創(chuàng)建workspace</p><p>  進入PowerBuilder8.0開發(fā)環(huán)境,單擊工具欄上的“New”圖標(biāo),打開“New”對話框;選擇“Wor

47、kspace”選項卡并選擇“Workspace”圖標(biāo),單擊OK按鈕打開“New Workspace”對話框;設(shè)置好工作區(qū)保存的路徑和文件名后,單擊保存按鈕創(chuàng)建一個新的工作區(qū)。</p><p>  5.1.2創(chuàng)建target</p><p>  首先鼠標(biāo)在新建的workspace上右擊,選擇New,然后再給target取個名字,最后點擊OK后就生成了target。</p>&l

48、t;p>  5.1.3創(chuàng)建專用庫和共享庫</p><p>  在車輛信息管理系統(tǒng)中,只創(chuàng)建一個共享庫,在共享庫中定義共享的函數(shù),主窗口以及主菜單。根據(jù)具體的業(yè)務(wù)需求,在車輛信息管理系統(tǒng)中創(chuàng)建專用庫,分別實現(xiàn)5大功能。在共享庫中,首先創(chuàng)建一個主窗口,然后創(chuàng)建菜單,接著創(chuàng)建登錄窗口和修改密碼窗口,最后創(chuàng)建系統(tǒng)信息窗口。另外在共享庫中創(chuàng)建連接數(shù)據(jù)庫函數(shù)和斷開連接數(shù)據(jù)庫函數(shù),以及定義登錄系統(tǒng)所需的函數(shù)。在專用庫中創(chuàng)

49、建與每個模塊相關(guān)的窗口和數(shù)據(jù)窗口。</p><p>  5.1.4應(yīng)用程序的包裝實現(xiàn) </p><p>  5.2數(shù)據(jù)庫訪問策略的設(shè)計與實現(xiàn)</p><p>  PowerBuilder8.0與數(shù)據(jù)庫連接可以通過通用接口與專用數(shù)據(jù)庫接口兩種方式來實現(xiàn),在圖書信息系統(tǒng)開發(fā)的過程中,是通過ODBC與數(shù)據(jù)庫連接的。通過ODBC連接數(shù)據(jù)庫需要經(jīng)過兩個步驟:一是配

50、置ODBC數(shù)據(jù)源,二是連接到數(shù)據(jù)庫。</p><p><b>  1.配置數(shù)據(jù)源</b></p><p> ?。?)啟動PowerBuilder后,單擊工具欄上的“DB Profiles”圖標(biāo),如下圖所示。</p><p> ?。?)用鼠標(biāo)雙擊“ODB ODBC 下“Utilities 內(nèi)的”“Create ODBC Data Source””

51、選項,打開如下圖所示“創(chuàng)建新數(shù)據(jù)源”對話框。</p><p> ?。?)選擇“用戶數(shù)據(jù)源”選項,再一直按“下一步”,打開如下圖所示的“ODBC Configuration”對話框。</p><p> ?。?)在“ODBC”標(biāo)簽頁輸入數(shù)據(jù)源的名稱,在“Login”標(biāo)簽頁輸入連接數(shù)據(jù)庫的賬號和密碼,在“Database”標(biāo)簽頁輸入數(shù)據(jù)庫的名稱和導(dǎo)入已經(jīng)建好的數(shù)據(jù)庫“mydb.db”后,測試成功

52、后,單擊“確定”按鈕后,即可完成新數(shù)據(jù)源的創(chuàng)建。</p><p>  2.連接到ODBC數(shù)據(jù)庫</p><p> ?。?)單擊工具欄上的“Database”圖標(biāo),打開“Database Connection”圖標(biāo)。</p><p> ?。?)在“ODB ODBC”選項上,右擊鼠標(biāo),選擇“New profile”,打開“ODBC Profile Setup”。填寫文件

53、名稱和找到數(shù)據(jù)源名稱,測試成功后,即可完成數(shù)據(jù)庫文件的創(chuàng)建,如下圖所示。</p><p> ?。?)單擊工具欄上的“ODBC Profile”圖標(biāo),打開“Database Profiles”對話框,如圖所示。</p><p> ?。?)選中已配置好的數(shù)據(jù)源“hospital”,單擊“Connect”按鈕,就可以連接到該數(shù)據(jù)源所定義的數(shù)據(jù)庫上。</p><p><

54、;b>  5.3創(chuàng)建父窗口</b></p><p>  5.3.1父窗口resize事件:</p><p>  Integer li_count,li_tpcount</p><p>  Integer li_i,li_tpi</p><p>  This.Setredraw(False)</p><p&

55、gt;<b>  //控件數(shù)</b></p><p>  li_count = upperbound(This.Control[])</p><p>  li_allcount = li_count</p><p>  // 重新按照窗口大小來設(shè)定各控件的位置及大小</p><p>  FOR li_i = 1 TO l

56、i_count</p><p>  Choose Case This.Control[li_i].TypeOf()</p><p>  Case checkbox!</p><p>  icbx_obj = This.control[li_i]</p><p>  icbx_obj.x = newwidth * ir_x[li_i]</

57、p><p>  icbx_obj.y = newheight * ir_y[li_i]</p><p>  Case radiobutton!</p><p>  irb_obj = This.control[li_i]</p><p>  irb_obj.x = newwidth * ir_x[li_i]</p><p>

58、;  irb_obj.y = newheight * ir_y[li_i]</p><p>  Case commandbutton!</p><p>  icb_obj = This.control[li_i]</p><p>  icb_obj.x = newwidth * ir_x[li_i]</p><p>  icb_obj.y =

59、 newheight * ir_y[li_i]</p><p>  icb_obj.width = newwidth * ir_width[li_i]</p><p>  icb_obj.height = newheight * ir_height[li_i]</p><p>  Case picture!</p><p>  ip_obj

60、= This.control[li_i]</p><p>  ip_obj.x = newwidth * ir_x[li_i]</p><p>  ip_obj.y = newheight * ir_y[li_i]</p><p>  ip_obj.width = newwidth * ir_width[li_i]</p><p>  ip_

61、obj.height = newheight * ir_height[li_i]</p><p>  Case datawindow!</p><p>  idw_obj = This.control[li_i]</p><p>  idw_obj.x = newwidth * ir_x[li_i]</p><p>  idw_obj.y =

62、 newheight * ir_y[li_i]</p><p>  idw_obj.width = newwidth * ir_width[li_i]</p><p>  idw_obj.height = newheight * ir_height[li_i]</p><p>  Case dropdownlistbox!</p><p> 

63、 iddlb_obj = This.control[li_i]</p><p>  iddlb_obj.x = newwidth * ir_x[li_i]</p><p>  iddlb_obj.y = newheight * ir_y[li_i]</p><p>  iddlb_obj.width = newwidth * ir_width[li_i]</p

64、><p>  Case dropdownpicturelistbox!</p><p>  iddplb_obj = This.control[li_i]</p><p>  iddplb_obj.x = newwidth * ir_x[li_i]</p><p>  iddplb_obj.y = newheight * ir_y[li_i]&l

65、t;/p><p>  iddplb_obj.width = newwidth * ir_width[li_i]</p><p>  Case listbox!</p><p>  ilb_obj = This.control[li_i]</p><p>  ilb_obj.x = newwidth * ir_x[li_i]</p>

66、<p>  ilb_obj.y = newheight * ir_y[li_i]</p><p>  ilb_obj.width = newwidth * ir_width[li_i]</p><p>  ilb_obj.height = newheight * ir_height[li_i]</p><p>  Case multilineedit!

67、</p><p>  imle_obj = This.control[li_i]</p><p>  imle_obj.x = newwidth * ir_x[li_i]</p><p>  imle_obj.y = newheight * ir_y[li_i]</p><p>  imle_obj.width = newwidth * ir

68、_width[li_i]</p><p>  imle_obj.height = newheight * ir_height[li_i]</p><p>  Case editmask!</p><p>  iem_obj = This.control[li_i]</p><p>  iem_obj.x = newwidth * ir_x

69、[li_i]</p><p>  iem_obj.y = newheight * ir_y[li_i]</p><p>  iem_obj.width = newwidth * ir_width[li_i]</p><p>  iem_obj.height = newheight * ir_height[li_i]</p><p><

70、;b>  Case tab!</b></p><p>  it_obj = This.control[li_i]</p><p>  it_obj.x = newwidth * ir_x[li_i]</p><p>  it_obj.y = newheight * ir_y[li_i]</p><p>  it_obj.wi

71、dth = newwidth * ir_width[li_i]</p><p>  it_obj.height = newheight * ir_height[li_i]</p><p>  li_tpcount = upperbound(it_obj.control[])</p><p>  for li_tpi = 1 to li_tpcount</p&g

72、t;<p>  tabresize(it_obj,li_tpi,li_allcount)</p><p><b>  next</b></p><p>  Case groupbox!</p><p>  igb_obj = This.control[li_i]</p><p>  igb_obj.x =

73、newwidth * ir_x[li_i]</p><p>  igb_obj.y = newheight * ir_y[li_i]</p><p>  igb_obj.width = newwidth * ir_width[li_i]</p><p>  igb_obj.height = newheight * ir_height[li_i]</p>

74、;<p>  Case hscrollbar!</p><p>  ihsb_obj = This.control[li_i]</p><p>  ihsb_obj.x = newwidth * ir_x[li_i]</p><p>  ihsb_obj.y = newheight * ir_y[li_i]</p><p>  

75、ihsb_obj.width = newwidth * ir_width[li_i]</p><p>  ihsb_obj.height = newheight * ir_height[li_i]</p><p>  Case picturebutton!</p><p>  ipb_obj = This.control[li_i]</p><

76、p>  ipb_obj.x = newwidth * ir_x[li_i]</p><p>  ipb_obj.y = newheight * ir_y[li_i]</p><p>  ipb_obj.width = newwidth * ir_width[li_i]</p><p>  ipb_obj.height = newheight * ir_heig

77、ht[li_i]</p><p>  Case listview!</p><p>  ilv_obj = This.control[li_i]</p><p>  ilv_obj.x = newwidth * ir_x[li_i]</p><p>  ilv_obj.y = newheight * ir_y[li_i]</p>

78、;<p>  ilv_obj.width = newwidth * ir_width[li_i]</p><p>  ilv_obj.height = newheight * ir_height[li_i]</p><p>  Case picturelistbox!</p><p>  iplb_obj = This.control[li_i]

79、</p><p>  iplb_obj.x = newwidth * ir_x[li_i]</p><p>  iplb_obj.y = newheight * ir_y[li_i]</p><p>  iplb_obj.width = newwidth * ir_width[li_i]</p><p>  iplb_obj.height =

80、 newheight * ir_height[li_i]</p><p>  Case singlelineedit!</p><p>  isle_obj = This.control[li_i]</p><p>  isle_obj.x = newwidth * ir_x[li_i]</p><p>  isle_obj.y = ne

81、wheight * ir_y[li_i]</p><p>  isle_obj.width = newwidth * ir_width[li_i]</p><p>  isle_obj.height = newheight * ir_height[li_i]</p><p>  Case treeview!</p><p>  itv_ob

82、j = This.control[li_i]</p><p>  itv_obj.x = newwidth * ir_x[li_i]</p><p>  itv_obj.y = newheight * ir_y[li_i]</p><p>  itv_obj.width = newwidth * ir_width[li_i]</p><p>

83、  itv_obj.height = newheight * ir_height[li_i]</p><p>  Case userobject!</p><p>  iuo_obj = This.control[li_i]</p><p>  iuo_obj.x = newwidth * ir_x[li_i]</p><p>  iuo

84、_obj.y = newheight * ir_y[li_i]</p><p>  iuo_obj.width = newwidth * ir_width[li_i]</p><p>  iuo_obj.height = newheight * ir_height[li_i]</p><p>  Case vscrollbar!</p><p

85、>  ivsb_obj = This.control[li_i]</p><p>  ivsb_obj.x = newwidth * ir_x[li_i]</p><p>  ivsb_obj.y = newheight * ir_y[li_i]</p><p>  ivsb_obj.width = newwidth * ir_width[li_i]</

86、p><p>  ivsb_obj.height = newheight * ir_height[li_i]</p><p>  Case graph!</p><p>  igr_obj = This.control[li_i]</p><p>  igr_obj.x = newwidth * ir_x[li_i]</p><

87、;p>  igr_obj.y = newheight * ir_y[li_i]</p><p>  igr_obj.width = newwidth * ir_width[li_i]</p><p>  igr_obj.height = newheight * ir_height[li_i]</p><p>  Case olecontrol!</p

88、><p>  iole_obj = This.control[li_i]</p><p>  iole_obj.x = newwidth * ir_x[li_i]</p><p>  iole_obj.y = newheight * ir_y[li_i]</p><p>  iole_obj.width = newwidth * ir_width

89、[li_i]</p><p>  iole_obj.height = newheight * ir_height[li_i]</p><p>  Case richtextedit!</p><p>  irte_obj = This.control[li_i]</p><p>  irte_obj.x = newwidth * ir_x[

90、li_i]</p><p>  irte_obj.y = newheight * ir_y[li_i]</p><p>  irte_obj.width = newwidth * ir_width[li_i]</p><p>  irte_obj.height = newheight * ir_height[li_i]</p><p>

91、  Case statictext!</p><p>  ist_obj = This.control[li_i]</p><p>  ist_obj.x = newwidth * ir_x[li_i]</p><p>  ist_obj.y = newheight * ir_y[li_i]</p><p>  ist_obj.width =

92、 newwidth * ir_width[li_i]</p><p>  Case line!</p><p>  iln_obj = This.control[li_i]</p><p>  iln_obj.beginx = newwidth * ir_x[li_i]</p><p>  iln_obj.beginy = newheight

93、 * ir_y[li_i]</p><p>  iln_obj.endx = newwidth * ir_width[li_i]</p><p>  iln_obj.endy = newheight * ir_height[li_i]</p><p>  case HProgressBar!</p><p>  ihpb_obj = Th

94、is.control[li_i]</p><p>  ihpb_obj.x = newwidth * ir_x[li_i]</p><p>  ihpb_obj.y = newheight * ir_y[li_i]</p><p>  ihpb_obj.width = newwidth * ir_width[li_i]</p><p>  i

95、hpb_obj.height = newheight * ir_height[li_i]</p><p>  case HTrackBar!</p><p>  ihtb_obj = This.control[li_i]</p><p>  ihtb_obj.x = newwidth * ir_x[li_i]</p><p> 

96、 ihtb_obj.y = newheight * ir_y[li_i]</p><p>  ihtb_obj.width = newwidth * ir_width[li_i]</p><p>  ihtb_obj.height = newheight * ir_height[li_i]</p><p>  case Oval!</p>

97、<p>  iov_obj = This.control[li_i]</p><p>  iov_obj.x = newwidth * ir_x[li_i]</p><p>  iov_obj.y = newheight * ir_y[li_i]</p><p>  iov_obj.width = newwidth * ir_width[li_i]<

98、/p><p>  iov_obj.height = newheight * ir_height[li_i]</p><p>  case PictureHyperLink!</p><p>  iphl_obj = This.control[li_i]</p><p>  iphl_obj.x = newwidth * ir_x[

99、li_i]</p><p>  iphl_obj.y = newheight * ir_y[li_i]</p><p>  iphl_obj.width = newwidth * ir_width[li_i]</p><p>  iphl_obj.height = newheight * ir_height[li_i]</p><p>

100、;  case Rectangle!</p><p>  ir_obj = This.control[li_i]</p><p>  ir_obj.x = newwidth * ir_x[li_i]</p><p>  ir_obj.y = newheight * ir_y[li_i]</p><p>  ir_obj.width = new

101、width * ir_width[li_i]</p><p>  ir_obj.height = newheight * ir_height[li_i]</p><p>  case RoundRectangle!</p><p>  irr_obj = This.control[li_i]</p><p>  irr_obj

102、.x = newwidth * ir_x[li_i]</p><p>  irr_obj.y = newheight * ir_y[li_i]</p><p>  irr_obj.width = newwidth * ir_width[li_i]</p><p>  irr_obj.height = newheight * ir_height[li_i]<

103、/p><p>  case vscrollbar!</p><p>  ivsb_obj = This.control[li_i]</p><p>  ivsb_obj.x = newwidth * ir_x[li_i]</p><p>  ivsb_obj.y = newheight * ir_y[li_i]</p><

104、;p>  ivsb_obj.width = newwidth * ir_width[li_i]</p><p>  ivsb_obj.height = newheight * ir_height[li_i]</p><p>  case StaticHyperLink!</p><p>  ishl_obj = This.control[li_i]&l

105、t;/p><p>  ishl_obj.x = newwidth * ir_x[li_i]</p><p>  ishl_obj.y = newheight * ir_y[li_i]</p><p>  ishl_obj.width = newwidth * ir_width[li_i]</p><p>  ishl_obj.height = n

106、ewheight * ir_height[li_i]</p><p>  case VProgressBar!</p><p>  ivpb_obj = This.control[li_i]</p><p>  ivpb_obj.x = newwidth * ir_x[li_i]</p><p>  ivpb_obj.y = newh

107、eight * ir_y[li_i]</p><p>  ivpb_obj.width = newwidth * ir_width[li_i]</p><p>  ivpb_obj.height = newheight * ir_height[li_i]</p><p>  case VTrackBar!</p><p>  ivtb

108、_obj = This.control[li_i]</p><p>  ivtb_obj.x = newwidth * ir_x[li_i]</p><p>  ivtb_obj.y = newheight * ir_y[li_i]</p><p>  ivtb_obj.width = newwidth * ir_width[li_i]</p><

109、;p>  ivtb_obj.height = newheight * ir_height[li_i]</p><p>  End Choose</p><p><b>  Next</b></p><p>  This.Setredraw(true)</p><p>  5.3.2父窗口的open事件:<

110、/p><p>  Integer li_count</p><p>  Integer li_i</p><p>  Long ll_width</p><p>  LOng ll_height</p><p>  integer li_tpcount,li_tpi</p><p>  

111、ll_width = this.workspacewidth()</p><p>  ll_height = this.workspaceheight()</p><p><b>  // 窗口內(nèi)控件數(shù)</b></p><p>  li_count = upperbound(this.control[])</p><p>

112、;  li_allcount = li_count</p><p>  // 循環(huán)記錄各控件大小與窗口大小的比例</p><p>  FOR li_i = 1 TO li_count</p><p>  CHOOSE CASE this.control[li_i].typeof()</p><p>  CASE checkbox!</p

113、><p>  icbx_obj = this.control[li_i]</p><p>  ir_x[li_i] = round(icbx_obj.x / ll_width, 3)</p><p>  ir_y[li_i] = round(icbx_obj.y / ll_height, 3)</p><p>  ir_width[li_i] =

114、 round(icbx_obj.width / ll_width, 3)</p><p>  ir_height[li_i] = round(icbx_obj.height / ll_height, 3)</p><p>  CASE radiobutton!</p><p>  irb_obj = this.control[li_i]</p><

115、;p>  ir_x[li_i] = round(irb_obj.x / ll_width, 3)</p><p>  ir_y[li_i] = round(irb_obj.y / ll_height, 3)</p><p>  ir_width[li_i] = round(irb_obj.width / ll_width, 3)</p><p>  ir_he

116、ight[li_i] = round(irb_obj.height / ll_height, 3)</p><p>  CASE commandbutton!</p><p>  icb_obj = this.control[li_i]</p><p>  ir_x[li_i] = round(icb_obj.x / ll_width, 3)</p>

溫馨提示

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

最新文檔

評論

0/150

提交評論