數(shù)據(jù)庫課程設(shè)計(jì)報(bào)告--車輛信息管理的開發(fā)_第1頁
已閱讀1頁,還剩43頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

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

2、了解信息、掌握信息。隨著企業(yè)的不斷發(fā)展,大中型企業(yè)的車輛使用與管理工作一日復(fù)雜,司機(jī)的不固定,車輛的保修,報(bào)廢等等,一系列問題干擾者我們。由此車輛管理信息系統(tǒng)產(chǎn)生了。</p><p>  關(guān)鍵詞:車輛信息管理;系統(tǒng)設(shè)計(jì);信息;數(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面對(duì)對(duì)象與可視化技術(shù)應(yīng)用前景4</p><p>  1.3課程設(shè)計(jì)的目的和任務(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ū)動(dòng)程序設(shè)計(jì)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è)計(jì)13</b></p><p>  4.1 總體設(shè)計(jì)13</p><p>  4.1.1 應(yīng)用程序功能的幾個(gè)事件

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

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

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

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

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

11、關(guān)系數(shù)據(jù)庫的設(shè)計(jì)理論及數(shù)據(jù)庫設(shè)計(jì)方法等內(nèi)容,是學(xué)習(xí)和掌握現(xiàn)代數(shù)據(jù)庫技術(shù)的基礎(chǔ)</p><p>  1.2面對(duì)對(duì)象與可視化技術(shù)應(yīng)用前景</p><p>  可視化技術(shù)使人能夠直接對(duì)具有形體的信息進(jìn)行操作,和計(jì)算機(jī)直接交流。這種技術(shù)已經(jīng)把人和機(jī)器的力量以一種直覺而自然的方式加以統(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è)計(jì)的目的和任務(wù)</p><p>  目的:熟悉一種可視化開發(fā)平臺(tái),掌握數(shù)據(jù)

13、庫應(yīng)用當(dāng)中的Java連接技術(shù)、嵌入式SQL語言使用技術(shù)、事務(wù)控制技術(shù)、事件程序設(shè)計(jì)技術(shù)、面向?qū)ο蟮目梢暬夹g(shù),掌握數(shù)據(jù)庫應(yīng)用的分析、設(shè)計(jì)實(shí)現(xiàn)的方法。</p><p>  任務(wù):安裝、設(shè)置PowerBuilder可視化開發(fā)環(huán)境并作出一系列技術(shù)實(shí)驗(yàn),包括應(yīng)用程序的創(chuàng)建,常用事件程序設(shè)計(jì)方法,一個(gè)表上提供的增、刪、改的實(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ù)勞動(dòng)多,勞動(dòng)強(qiáng)度大,而且容易出錯(cuò),隨著企業(yè)的不斷發(fā)展,大中型企業(yè)的車輛使用與管理工作一日復(fù)雜,司機(jī)的不固定,車輛的保修,報(bào)廢等等,一系列問題干擾者我們。</p><p>  1.5 車輛信息管理的可行性分析</p><p>  本次課程設(shè)計(jì)題目:“車輛信息管理的開發(fā)”主要目的

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

16、識(shí),并深入的了解PowerBuilder的使用和管理系統(tǒng)的相關(guān)知識(shí)。在信息時(shí)代的今天,人類需要對(duì)在政治、經(jīng)濟(jì)、軍事、文化、科研、教育等領(lǐng)域產(chǎn)生的大量信息進(jìn)行管理,并對(duì)數(shù)據(jù)進(jìn)行加工處理,數(shù)據(jù)庫技術(shù)則是信息管理與數(shù)據(jù)處理的先進(jìn)技術(shù)。隨著信息量的不斷增加,作為計(jì)算機(jī)的三大主要應(yīng)用(科學(xué)計(jì)算、過程控制和數(shù)據(jù)處理)之一的數(shù)據(jù)處理,已迅速上升為計(jì)算機(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ù)勞動(dòng)多,勞動(dòng)強(qiáng)度大,而且容易出錯(cuò),新系統(tǒng)的使用能否可以很好的解決這些問題要看系統(tǒng)的可行性,可行性研究的目的是用最小的代價(jià)在盡可能短的時(shí)間內(nèi)確定問題是否能夠解決。系統(tǒng)的可行性分析有以下幾個(gè)方面:</p><p>  (1)技術(shù)可行性:處理速度快、準(zhǔn)確通過權(quán)限的設(shè)置,數(shù)據(jù)的安全性好、方便查詢、管理等。 &

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

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

20、向?qū)ο蠹夹g(shù)、事件驅(qū)動(dòng)程序設(shè)計(jì)、數(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ù)庫中的所有信息通常都存儲(chǔ)在單個(gè)數(shù)據(jù)庫 文件中,可以從一臺(tái)計(jì)算機(jī)復(fù)制到另一臺(tái)計(jì)算機(jī)。還可以為若干文件生 成數(shù)據(jù)庫,但通常只有非常大的數(shù)據(jù)庫才需要這樣做。 除了數(shù)據(jù)庫文件外, </p&

21、gt;<p>  PowerBuilder 在運(yùn)行數(shù)據(jù)庫時(shí)還使用 另外兩個(gè)文件。這兩個(gè)文件是事務(wù)日志和臨時(shí)文件。 數(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ù)日志是一個(gè)單獨(dú)的文件,記錄在數(shù)據(jù)庫上執(zhí)行的 所有操作。通常,它具有與數(shù)據(jù)庫文件相同的名稱,只是它

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

43、查詢模塊,此模塊實(shí)現(xiàn)了對(duì)車輛,司機(jī),車隊(duì),車輛使用信息的查詢功能。</p><p>  4.1.1 應(yīng)用程序功能的幾個(gè)事件</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>  對(duì)窗口的繼承</b></p><p>  4.1.2 主控功能的實(shí)現(xiàn)</p><p>  4.1.2 ①號(hào)例子的實(shí)現(xiàn)</p><p>  4.1.3 ②號(hào)例子的實(shí)現(xiàn)</p><p>  4.1.4 ③號(hào)例子的實(shí)現(xiàn)</p><

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

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

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

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

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

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

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

53、名稱和找到數(shù)據(jù)源名稱,測(cè)試成功后,即可完成數(shù)據(jù)庫文件的創(chuàng)建,如下圖所示。</p><p> ?。?)單擊工具欄上的“ODBC Profile”圖標(biāo),打開“Database Profiles”對(duì)話框,如圖所示。</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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論