版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 畢 業(yè) 設(shè) 計(jì)(論文)</p><p> 題 目: 倉庫管理系統(tǒng) </p><p> 專 業(yè): 信息工程系 </p><p><b> 摘 要</b></p><p> 本系統(tǒng)主要完成對圖書倉庫的庫存管理,包括圖書入庫、出庫、庫存,員工
2、信息,供應(yīng)商信息以及密碼管理等六個方面。系統(tǒng)可以完成對各類信息的瀏覽、查詢、添加、刪除、修改、報(bào)表等功能。</p><p> 系統(tǒng)的核心是入庫、庫存和出庫三者之間的聯(lián)系,每一個表的修改都將聯(lián)動的影響其它的表,當(dāng)完成入庫或出庫操作時系統(tǒng)會自動地完成庫存的修改。查詢功能也是系統(tǒng)核心之一,在系統(tǒng)中即有單條件查詢和多條件查詢,也有精確查詢和模糊查詢,系統(tǒng)不僅有靜態(tài)條件查詢,也有動態(tài)條件查詢,其目的都是為了方便用戶使用。
3、系統(tǒng)有完整的用戶添加、刪除和密碼修改功能。</p><p> 系統(tǒng)采用Microsoft Office中的Access 2000來設(shè)計(jì)數(shù)據(jù)庫,并使用當(dāng)前優(yōu)秀的開發(fā)工具—Delphi 6.0 ,它有著最為靈活的數(shù)據(jù)庫結(jié)構(gòu),對數(shù)據(jù)庫應(yīng)用有著良好的支持。</p><p> 論文主要介紹了本課題的開發(fā)背景,所要完成的功能和開發(fā)的過程。重點(diǎn)的說明了系統(tǒng)設(shè)計(jì)的重點(diǎn)、設(shè)計(jì)思想、難點(diǎn)技術(shù)和解決方案。&
4、lt;/p><p> 關(guān)鍵字:數(shù)據(jù)庫,Delph 6,數(shù)據(jù)庫組件,倉庫管理</p><p><b> 目 錄</b></p><p> 第一章 引言 ……………………………………………………………………………5</p><p> 1.1 課題來源 …………………………………………………………………………5<
5、/p><p> 1.2 開發(fā)工具的選擇 …………………………………………………………………5</p><p> 1.3 所做的主要工作 …………………………………………………………………6</p><p> 第二章 數(shù)據(jù)庫概論 ……………………………………………………………………6</p><p> 2.1 數(shù)據(jù)庫理論基礎(chǔ) …………
6、………………………………………………………9</p><p> 2.1.1 數(shù)據(jù)庫模型…………………………………………………………………9</p><p> 2.1.2 數(shù)據(jù)庫體系結(jié)構(gòu) ………………………………………………………10</p><p> 2.1.3 數(shù)據(jù)的獨(dú)立性 ……………………………………………………………11</p>
7、<p> 2.1.4 范式 ………………………………………………………………………11</p><p> 2.2 SQL語言基礎(chǔ) ……………………………………………………………………12</p><p> 2.2.1 SQL查詢 ………………………………………………………………12</p><p> 2.2.2 SQL數(shù)據(jù)更新
8、…………………………………………………………13</p><p> 第三章數(shù)據(jù)庫開發(fā)工具 ………………………………………………………………13</p><p> 3.1 Delphi 6.0 簡介 ………………………………………………………………14</p><p> 3.2 Delphi 6.0 控件 ……………………………………………………………
9、…14</p><p> 3.2.1 ADO數(shù)據(jù)訪問組件 ………………………………………………………14</p><p> 3.2.2 數(shù)據(jù)控制類DataControl ……………………………………………15</p><p> 3.2.3 數(shù)據(jù)訪問類DataAccess ……………………………………………15</p><
10、;p> 3.2.4 SQL語言在Delphi中的應(yīng)用 …………………………………………16</p><p> 3.3 Access 簡介 …………………………………………………………………17</p><p> 第四章 系統(tǒng)總體設(shè)計(jì) ………………………………………………………………17</p><p> 4.1 系統(tǒng)需求分析 …
11、………………………………………………………………17</p><p> 4.2 系統(tǒng)概要設(shè)計(jì) …………………………………………………………………18</p><p> 4.2.1 系統(tǒng)結(jié)構(gòu)設(shè)計(jì) …………………………………………………………18</p><p> 4.2.2 數(shù)據(jù)庫設(shè)計(jì) ……………………………………………………………18&l
12、t;/p><p> 4.3系統(tǒng)詳細(xì)設(shè)計(jì) ……………………………………………………………………21</p><p> 第五章 系統(tǒng)應(yīng)用程序設(shè)計(jì) ……………………………………………………………22</p><p> 5.1 入庫、出庫窗體模塊的實(shí)現(xiàn)………………………………………………………25</p><p> 5.2 查詢功能的實(shí)現(xiàn)…
13、…………………………………………………………………31</p><p> 5.3 系統(tǒng)登陸窗體模塊的實(shí)現(xiàn)…………………………………………………………31</p><p> 5.4 用戶管理功能的實(shí)現(xiàn)………………………………………………………………32</p><p> 5.4.1 密碼修改窗體模塊的實(shí)現(xiàn) ……………………………………………32&l
14、t;/p><p> 5.4.2 用戶注銷窗體模塊的實(shí)現(xiàn) ………………………………………………34</p><p> 結(jié)束語 ……………………………………………………………………………………59</p><p> 致謝 ………………………………………………………………………………………60</p><p> 參考文獻(xiàn) ……………………
15、……………………………………………………………61</p><p> 第一章 引 言 </p><p> §1.1 課題來源</p><p> 隨著社會經(jīng)濟(jì)的迅速發(fā)展和科學(xué)技術(shù)的全面進(jìn)步,計(jì)算機(jī)事業(yè)的飛速發(fā)展,以計(jì)算機(jī)與通信技術(shù)為基礎(chǔ)的信息系統(tǒng)正處于蓬勃發(fā)展的時期。隨著經(jīng)濟(jì)文化水平的顯著提高,人們對生活質(zhì)量及工作環(huán)境的要求也越來越高。書
16、籍做為人類的精神食糧,在現(xiàn)代社會中越來越受到重視,大量的書籍出現(xiàn)在市場上,人們有了各種各樣不同的選擇。與此同時,為了管理大量的圖書,圖書倉庫也大量的出現(xiàn),倉庫的管理問題也就提上了日程。隨著圖書的大量增加,其管理難度也越來越大,如何優(yōu)化倉庫的日常管理也就成為了一個大眾化的課題。</p><p> 在計(jì)算機(jī)飛速發(fā)展的今天,將計(jì)算機(jī)這一信息處理利器應(yīng)用于倉庫的日常管理已是勢必所然,而且這也將為倉庫管理帶來前所未有的改
17、變,它可以帶來意想不到的效益,同時也會為企業(yè)的飛速發(fā)展提供無限潛力。主要體現(xiàn)在:</p><p> 極大提高了倉庫工作人員的工作效率,大大減少了以往入出存流程繁瑣,雜亂,周期長的弊端。</p><p> 基于倉庫管理的全面自動化,可以減少入庫管理、出庫管理及庫存管理中的漏洞,可以節(jié)約不少管理開支,增加企業(yè)收入。</p><p> 倉庫的管理的操作自動化和信息的
18、電子化,全面提高了倉庫的管理水平。</p><p> 通過對倉庫管理日常工作的詳細(xì)調(diào)查,搜集了大量的資料,從系統(tǒng)結(jié)構(gòu)的組織,功能的實(shí)現(xiàn),技術(shù)的要求以及可行性等多方面進(jìn)行考慮,認(rèn)為本課題是一個適應(yīng)現(xiàn)今圖書倉庫管理需求的計(jì)算機(jī)信息管理系統(tǒng),具有一定的實(shí)際開發(fā)價值和使用價值。</p><p> §1.2 開發(fā)工具的選擇</p><p> 現(xiàn)在,市場上可以選
19、購的應(yīng)用開發(fā)產(chǎn)品很多,流行的也有數(shù)十種。目前在我國市場上最為流行、使用最多、最為先進(jìn)的可用作企業(yè)級開發(fā)工具的產(chǎn)品有:</p><p> Microsoft公司的Visual Basic 6.0版</p><p> Microsoft公司的Visual C++6.0版</p><p> Borland公司的Delphi 6.0版</p><p
20、> Delphi 6 是可視化的快速應(yīng)用程序開發(fā)語言,它提供了可視化的集成開發(fā)環(huán)境,這一環(huán)境為應(yīng)用程序設(shè)計(jì)人員提供了一系列靈活而先進(jìn)的工具,可以廣泛地用于種類應(yīng)用程序設(shè)計(jì)。在Delphi 6 的集成開發(fā)環(huán)境中,用戶可以設(shè)計(jì)程序代碼、運(yùn)行程序、進(jìn)行程序錯誤的調(diào)試等,可視化的開發(fā)方法降低了應(yīng)用程序開發(fā)的難度。</p><p> §1.3 本文所做工作</p><p>
21、引言部分介紹了本系統(tǒng)的課題來源以及對數(shù)據(jù)庫開發(fā)工具的選擇。</p><p> 第二章介紹了數(shù)據(jù)庫的發(fā)展,關(guān)系數(shù)據(jù)庫,數(shù)據(jù)庫體系結(jié)構(gòu),并系統(tǒng)介紹了SQL語言,為設(shè)計(jì)和理解應(yīng)用程序做了鋪墊。</p><p> 第三章系統(tǒng)介紹了Delphi 6.0及其部分控件,SQL語言在Delphi 6.0中的應(yīng)用,以及Access等。</p><p> 第四章是本文的主體,按照
22、軟件工程的要求,從需求分析開始,經(jīng)過概要設(shè)計(jì)最后到詳細(xì)設(shè)計(jì),完成對整個系統(tǒng)的設(shè)計(jì)。</p><p> 第五章根據(jù)第四章的設(shè)計(jì)結(jié)果利用Access 2000和Delphi 6.0進(jìn)行了具體的窗體和應(yīng)用程序設(shè)計(jì)。</p><p> 總結(jié)部分介紹了設(shè)計(jì)體會和編程體會,并指出了系統(tǒng)設(shè)計(jì)中的不足和改進(jìn)的方向。 </p><p> §2.1數(shù)據(jù)庫理論基礎(chǔ)<
23、/p><p> 2.1.1 數(shù)據(jù)庫模型</p><p> 模型是對現(xiàn)實(shí)世界的抽象。在數(shù)據(jù)庫技術(shù)中,我們用模型的概念描述數(shù)據(jù)庫的結(jié)構(gòu)與語義,對現(xiàn)實(shí)世界進(jìn)行抽象,表示實(shí)體類型及實(shí)體間聯(lián)系的模型稱為“數(shù)據(jù)模型” 。</p><p> 目前廣泛作用的數(shù)據(jù)模型可分為兩種類型。</p><p> 一種是獨(dú)立于計(jì)算機(jī)系統(tǒng)的模型,完全不涉及信息在系統(tǒng)中
24、的表示,只是用來描述某個特定組織所關(guān)心的信息結(jié)構(gòu),這類模型稱為“概念數(shù)據(jù)模型” 。</p><p> 另一種數(shù)據(jù)模型是直接面向數(shù)據(jù)庫的邏輯結(jié)構(gòu),它是現(xiàn)實(shí)世界的第二層抽象。 這類模型涉及到計(jì)算機(jī)系統(tǒng)和數(shù)據(jù)庫管理系統(tǒng),又稱為“結(jié)構(gòu)數(shù)據(jù)模型” 。</p><p><b> (1)層次模型。</b></p><p> 層次模型的特點(diǎn)是記錄之間的聯(lián)
25、系通過指針實(shí)現(xiàn),查詢效率較高。但層次模型有兩個缺點(diǎn):一是只能表示1∶N聯(lián)系,雖然有多種輔助手段實(shí)現(xiàn)了M∶N聯(lián)系,但都較復(fù)雜,用戶不易掌握,二是由于樹型結(jié)構(gòu)層次順序的嚴(yán)格和復(fù)雜,引起數(shù)據(jù)的查詢和更新操作也很復(fù)雜,因此,編寫應(yīng)用程序也很復(fù)雜。</p><p><b> ?。?)網(wǎng)狀模型。</b></p><p> 網(wǎng)狀模型的特點(diǎn):記錄之間聯(lián)系通過指針實(shí)現(xiàn),M∶N聯(lián)系也容
26、易實(shí)現(xiàn)(每個M∶N聯(lián)系可拆成兩個1∶N聯(lián)系),查詢效率較高。網(wǎng)狀模型的缺點(diǎn)是編寫應(yīng)用程序比較復(fù)雜,程序員必須熟悉數(shù)據(jù)庫的邏輯結(jié)構(gòu)。</p><p> (3)關(guān)系模型。關(guān)系模型的主要是用二維表格結(jié)構(gòu)表達(dá)實(shí)體集,用外鍵表示實(shí)體間聯(lián)系。關(guān)系模型是由若干個關(guān)系模式組成的集合。關(guān)系模式相當(dāng)于前面提到的記錄類型,它的實(shí)例稱為關(guān)系,每個關(guān)系實(shí)際上是一張二維表格。</p><p> 關(guān)系模型和網(wǎng)狀、層
27、次模型的最大區(qū)別是:關(guān)系模型用表格數(shù)據(jù)而不是通過指針鏈來表示和實(shí)現(xiàn)實(shí)體間聯(lián)系。關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)簡單、易懂。只需用簡單的查詢語句就可對數(shù)據(jù)庫進(jìn)行操作。</p><p> ?。?)面向?qū)ο竽P汀D壳?,關(guān)系數(shù)據(jù)庫的使用已相當(dāng)普遍,但是,現(xiàn)實(shí)世界中仍然存在著許多含有復(fù)雜數(shù)據(jù)結(jié)構(gòu)的應(yīng)用領(lǐng)域,例如,CAD數(shù)據(jù)、圖形數(shù)據(jù)等,而關(guān)系模型在這方面的處理能力就顯得力不從心。因此,人們需要更高級的數(shù)據(jù)庫技術(shù)來表達(dá)這類信息。面向?qū)ο蟮?/p>
28、概念最早出現(xiàn)在程序設(shè)計(jì)語言中,隨后迅速滲透到計(jì)算機(jī)領(lǐng)域的每一個分支。面向?qū)ο髷?shù)據(jù)庫是面向?qū)ο蟾拍钆c數(shù)據(jù)庫技術(shù)相結(jié)合的產(chǎn)物。</p><p> 2.1.2 數(shù)據(jù)庫體系結(jié)構(gòu)</p><p> 數(shù)據(jù)庫的體系結(jié)構(gòu)分三級:內(nèi)部級(internal),概念級(conceptual)和外部級(external)。這個三級結(jié)構(gòu)有時也稱為“三級模式結(jié)構(gòu)”,或“數(shù)據(jù)抽象的三個級別”,最早是在1971年通
29、過的DBTG報(bào)告中提出,后來收入在1975年的美國ANSI/SPARC報(bào)告中。雖然現(xiàn)在DBMS的產(chǎn)品多種多樣,在不同的操作系統(tǒng)支持下工作,但是大多數(shù)系統(tǒng)在總的體系結(jié)構(gòu)上都具有三級模式的結(jié)構(gòu)特征。從某個角度看到的數(shù)據(jù)特性稱為“數(shù)據(jù)視圖”(data view)。</p><p> 外部級最接近用戶,是單個用戶所能看到的數(shù)據(jù)特性。單個用戶使用的數(shù)據(jù)視圖的描述稱為“外模式”。</p><p>
30、 概念級涉及到所有用戶的數(shù)據(jù)定義,是全局的數(shù)據(jù)視圖。全局?jǐn)?shù)據(jù)視圖的描述稱為“概念模式”。</p><p> 內(nèi)部級最接近于物理存儲設(shè)備,涉及到實(shí)際數(shù)據(jù)存儲的結(jié)構(gòu)。物理存儲數(shù)據(jù)視圖的描述稱為“內(nèi)模式”。</p><p> 數(shù)據(jù)庫的三級模式結(jié)構(gòu)是數(shù)據(jù)的三個抽象級別。它把數(shù)據(jù)的具體組織留給DBMS去做,用戶只要抽象地處理數(shù)據(jù),而不必關(guān)心數(shù)據(jù)在計(jì)算機(jī)中的表示和存儲,這樣就減輕了用戶使用系統(tǒng)的負(fù)
31、擔(dān)。</p><p> 三級結(jié)構(gòu)之間往往差別很大,為了實(shí)現(xiàn)這三個抽象級別的聯(lián)系和轉(zhuǎn)換,DBMS在三級結(jié)構(gòu)之間提供兩個層次的映象(mappings):外模式/模式映象,模式/內(nèi)模式映象。此處模式是概念模式的簡稱。</p><p> 2.1.3 數(shù)據(jù)的獨(dú)立性</p><p> 由于數(shù)據(jù)庫系統(tǒng)采用三級模式結(jié)構(gòu),因此系統(tǒng)具有數(shù)據(jù)獨(dú)立性的特點(diǎn)。在數(shù)據(jù)庫技術(shù)中,數(shù)據(jù)獨(dú)立
32、性是指應(yīng)用程序和數(shù)據(jù)之間相互獨(dú)立,不受影響。數(shù)據(jù)獨(dú)立性分成物理數(shù)據(jù)獨(dú)立性和邏輯數(shù)據(jù)獨(dú)立性兩級。</p><p> ?。?)物理數(shù)據(jù)獨(dú)立性</p><p> 如果數(shù)據(jù)庫的內(nèi)模式要進(jìn)行修改,即數(shù)據(jù)庫的存儲設(shè)備和存儲方法有所變化,那么模式/內(nèi)模式映象也要進(jìn)行相當(dāng)?shù)男薷?,使概念模式盡可能保持不變。也就是對內(nèi)模式的修改盡量不影響概念模式,當(dāng)然,對于外模式和應(yīng)用程序的影響更小,這樣,我們稱數(shù)據(jù)庫達(dá)到
33、了物理數(shù)據(jù)獨(dú)立性。</p><p> ?。?)邏輯數(shù)據(jù)獨(dú)立性</p><p> 如果數(shù)據(jù)庫的概念模式要進(jìn)行修改,譬如增加記錄類型或增加數(shù)據(jù)項(xiàng),那么外模式/模式映象也要進(jìn)行相應(yīng)的修改,使外模式盡可能保持不變。也就是對概念模式的修改盡量不影響外模式和應(yīng)用程序,這樣,我們稱數(shù)據(jù)庫達(dá)到了邏輯數(shù)據(jù)獨(dú)立性。</p><p> 現(xiàn)有關(guān)系系統(tǒng)產(chǎn)品均提供了較高的物理獨(dú)立性,而對邏
34、輯獨(dú)立性的支持尚有欠缺,例如,對外模式的數(shù)據(jù)更新受到限制等。</p><p><b> 2.1.4 范式</b></p><p> 建立起一個良好的數(shù)據(jù)指標(biāo)體系,是建立數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)庫的最重要的一環(huán)。一個良好的數(shù)據(jù)指標(biāo)體系是建立DB的必要條件,但不是充分條件。我們完全可以認(rèn)為所建指標(biāo)體系中的一個指標(biāo)類就是關(guān)系數(shù)據(jù)庫中的一個基本表,而這個指標(biāo)類下面的一個個具體指標(biāo)
35、就是這個基本表中的一個字段。但如果直接按照這種方式建庫顯然還不能算最佳。對于指標(biāo)體系中數(shù)據(jù)的結(jié)構(gòu)在建庫前還必須進(jìn)行規(guī)范化的重新組織。</p><p> 在數(shù)據(jù)的規(guī)范化表達(dá)中,一般將一組相互關(guān)聯(lián)的數(shù)據(jù)稱為一個關(guān)系(relation),而在這個關(guān)系下的每個數(shù)據(jù)指標(biāo)項(xiàng)則被稱為數(shù)據(jù)元素(data element),這種關(guān)系落實(shí)到具體數(shù)據(jù)庫上就是基本表,而數(shù)據(jù)元素就是基本表中的一個字段(field)。 </p>
36、;<p> 在對表的形式進(jìn)行了規(guī)范化定義后,數(shù)據(jù)結(jié)構(gòu)還有五種規(guī)范化定義,定名為規(guī)范化模式,稱為范式。在這五種范式中,一般只用前三種,對于常用系統(tǒng)就足夠了。而且這五種范式是“向上兼容”的,即滿足第五范式的數(shù)據(jù)結(jié)構(gòu)自動滿足一、二、三、四范式,滿足第四范式的數(shù)據(jù)結(jié)構(gòu)自動滿足第一、二、三范式,……,依此類推。</p><p> 第一范式(first normal form,簡稱1st NF)就是指在同一
37、表中沒有重復(fù)項(xiàng)出現(xiàn),如果有則應(yīng)將重復(fù)項(xiàng)去掉。這個去掉重復(fù)項(xiàng)的過程就稱之為規(guī)范化處理。在本文所討論的開發(fā)方法里,1st NF實(shí)際上是沒有什么意義的。因?yàn)槲覀儼匆?guī)范化建立的指標(biāo)體系和表的過程都自動保證了所有表都滿足1st NF。 </p><p> 第二范式(second normal form,簡稱 2nd NF)是指每個表必須有一個(而且僅一個)數(shù)據(jù)元素為主關(guān)鍵字(primary key),其它數(shù)據(jù)元素與主關(guān)鍵
38、字一一對應(yīng)。例如,在圖l9.7中如果我們將合同號定義為主關(guān)鍵字(其它數(shù)據(jù)元素中的記錄數(shù)據(jù)都有可能重名,故不能作為主關(guān)鍵字),故只要知道了一個合同記錄的合同號,就可以唯一地在同一行中找到該合同的任何一項(xiàng)具體信息。通常我們稱這種關(guān)系為函數(shù)依賴(functional depEndence)關(guān)系。即表中其它數(shù)據(jù)元素都依賴于主關(guān)鍵字,或稱該數(shù)據(jù)元素唯一地被主關(guān)鍵字所標(biāo)識。</p><p> 第三范式(third norm
39、al form,簡稱 3rd NF)就是指表中的所有數(shù)據(jù)元素不但要能夠唯一地被主關(guān)鍵字所標(biāo)識,而且它們之間還必須相互獨(dú)立,不存在其它的函數(shù)關(guān)系。也就是說對于一個滿足了 2nd NF的數(shù)據(jù)結(jié)構(gòu)來說,表中有可能存在某些數(shù)據(jù)元素依賴于其它非關(guān)鍵宇數(shù)據(jù)元素的現(xiàn)象,必須加以消除。</p><p> §2.2 SQL語言基礎(chǔ)</p><p> 2.2.1 SQL查詢</p>
40、<p> 數(shù)據(jù)查詢是關(guān)系運(yùn)算理論在SQL語言中的主要體現(xiàn),SELECT 語句是SQL查詢的基本語句,當(dāng)我們在對一個數(shù)據(jù)庫進(jìn)各種各樣的操作時,使用的最多的就是數(shù)據(jù)查詢,在以SQL為基礎(chǔ)的關(guān)系數(shù)據(jù)庫中,使用的最多的就是SELECT查詢語句。</p><p> SELECT語句的完整句法如下:</p><p> SELECT 目標(biāo)表的列名或列表達(dá)式序列</p>
41、<p> FROM 基本表和(或)視圖序列</p><p> [WHERE 行條件表達(dá)式]</p><p> [GROUP BY 列名序列]</p><p> [HAVING 組條件表達(dá)式]</p><p> [ORDER BY列名 [ASC│DEAC]…]</p><p> 2.2.2 S
42、QL數(shù)據(jù)更新</p><p> 使用數(shù)據(jù)庫的目的是為了有效地管理數(shù)據(jù),而數(shù)據(jù)的插入、刪除和修改則是必不可少的一個功能。在本系統(tǒng)中就大量地使用了數(shù)據(jù)插入、刪除和修改這三種操作,現(xiàn)做一個簡單地介紹。</p><p><b> ●數(shù)據(jù)插入</b></p><p> 往數(shù)據(jù)庫的基本表中插入數(shù)據(jù)使用的是INSERT語句,其方式有兩種:一種是元組值的
43、插入,另一種是查詢結(jié)果的插入。在本系統(tǒng)中使用的是前一種方式,其句法如下:</p><p> INSERT INTO 基本表名(列表名)VALUES(元組值)</p><p><b> ●數(shù)據(jù)刪除</b></p><p> 往數(shù)據(jù)庫的基本表中刪除數(shù)據(jù)使用的是DELETE語句,其句法如下:</p><p> DELE
44、TE FROM 基本表名 [WHERE 條件表達(dá)式]</p><p> 在些作一點(diǎn)說明,刪除語句實(shí)際上是“SELECT * FROM 基本表名 [WHERE 條件表達(dá)式]”和DELETE操作的結(jié)合,每找到一個元組,就把它刪除。此外,DELETE語句只能從一個基本表中刪除元組,WHERE子句中條件可以嵌套,也可以是來自幾個基本表的復(fù)合條件。</p><p><b> ●數(shù)據(jù)修改
45、</b></p><p> 當(dāng)需要修改基本表中元組的某些列值時,可以用UPDATE語句實(shí)現(xiàn),其句法如下:</p><p> UPDATE基本表名</p><p> SET列名=值表達(dá)式[,列名=值表達(dá)式…]</p><p> [WHERE條件表達(dá)式]</p><p> 在Delphi中使用SQL語
46、句是很方便的,一般來說,都是通過TQuery組件來使用SQL語言的。有一點(diǎn)要進(jìn)行說明,雖然通過TQuery組件來使用SQL語言很方便,但考慮到自己對不同組件的理解程度、個人習(xí)慣以及其它各個方面,在本系統(tǒng)中我采用的是ADO組件來對數(shù)據(jù)庫進(jìn)行操作。最簡單的方法比如在TADOQuery組件的SQL屬性中就可以鍵入SQL語句,至于詳細(xì)的使用方法在后面進(jìn)行介紹。</p><p> 第三章 數(shù)據(jù)庫開發(fā)工具</p
47、><p> §3.1 Delphi 6.0 簡介</p><p> Delphi類可以粗略地分成兩部分:一部分是組件類,這些組件類通常以某種方式出現(xiàn)在組件面板上,當(dāng)用戶從組件面板上點(diǎn)取一個類的圖標(biāo)后,在程序中就自動生成了該類的對象(非可視組件除外);另一部分是功能類,這此功能類的對象通常出現(xiàn)在程序代碼中,起著不可代替的作用,但是這些功能類在組件面板上是找不到的。在Delphi中,
48、每一個類的祖先都是Tobject類,整個類的層次結(jié)構(gòu)就像一棵倒掛的樹,在最頂層的樹根即為Tobject類。這樣,按照面向?qū)ο缶幊痰幕舅枷?,就使得用戶可用Tobject類這個類型代替任何其它類的數(shù)據(jù)類型。實(shí)際上在Delphi的類庫中,Tobject類派生出了為數(shù)相當(dāng)眾多的子類,它們形成了一個龐大的體系,通常情況下,如果不自行開發(fā)組件,就不必了解整個類的體系結(jié)構(gòu),只用到類層次樹的葉結(jié)點(diǎn)就足夠了。</p><p>
49、 窗口組件類是窗口化的可視化組件類,在Delphi的類庫中占有最大的份額。在實(shí)際編程中,窗口組件類的對象都有句柄,可以接受輸入焦點(diǎn)和包含其它組件。</p><p> 圖形組件與窗口組件并列,是另一大類組件。圖形組件不是基于窗口的,因而不能有窗口句柄,不能接受輸入焦點(diǎn)和包含其它組件。從圖8-43中可以看出,圖形組件的基類是TgraphicControl,在實(shí)際編程中,它們必須寄生于它們的宿主——窗口組件類的對象,
50、由它們的擁有者負(fù)責(zé)其顯示,而且它們還能觸發(fā)一些和鼠標(biāo)活動相關(guān)的事件。圖形控件最典型的例子是Tlabel和TspeedButton。由此可以看出圖形組件的功能很弱,有讀者會問圖形組件的用處何在呢?其實(shí)使用圖形組件的最大好處在于節(jié)省資源,正是因?yàn)樗鼈兊墓δ茌^弱,所以使用的系統(tǒng)資源就要少。在一個應(yīng)用程序中,如果能在不影響其功能的前提下合理大量地使用圖形組件,將會大減少程序?qū)ο到y(tǒng)資源的消耗。</p><p> 非可視組
51、件是與可視組件相并列的另一類組件,非可視組件在程序運(yùn)行中是不可見的(除各種對話框組件之外,事實(shí)上有人認(rèn)為對話框組件不能歸入非可視組件,應(yīng)該是另一種介于可視與非可視之間的組件)。</p><p> §3.2 Delphi 6.0 控件</p><p> 用Delphi6開發(fā)數(shù)據(jù)庫應(yīng)用,重點(diǎn)是和各種數(shù)據(jù)庫組件打交道,當(dāng)然也要使用其它的一些組件,現(xiàn)在就我在系統(tǒng)設(shè)計(jì)中所使用的重要組件
52、給與簡單介紹。</p><p> 3.2.1 ADO數(shù)據(jù)訪問組件</p><p> ADO數(shù)據(jù)對象(Active Data Objects)實(shí)際是一種提供訪問各種數(shù)據(jù)類型的鏈接機(jī)制。ADO設(shè)計(jì)為一種極簡單的格式,通過ODBC的方法同數(shù)據(jù)庫接口中,可以使用任何一種ODBC數(shù)據(jù)源,即不止適合于SQL Server、Oracle、Access等數(shù)據(jù)庫應(yīng)用程序,也適合于Excel表格、文本文
53、件、圖形文件和無格式的數(shù)據(jù)文件。ADO是基于OLE-DB之上的技術(shù),因此ADO通過其內(nèi)部的屬性和方法提供統(tǒng)一的數(shù)據(jù)訪問接口方法。ADO使您的客戶端應(yīng)用程序能夠通過OLE DB提供訪問和操作在數(shù)據(jù)庫服務(wù)器中的數(shù)據(jù)。ADO支持用于建立C/S和Web的應(yīng)用程序的主要功能。其主要優(yōu)點(diǎn)是易于使用、高速度、低內(nèi)存支出和占用磁盤空間較少。ADO同時具有遠(yuǎn)程數(shù)據(jù)服務(wù)(RDS)功能,通過RDS可以在一次往返過程中實(shí)現(xiàn)將數(shù)據(jù)從服務(wù)器移動到客戶端應(yīng)用程序和W
54、eb頁、在客戶端對數(shù)據(jù)進(jìn)行處然后將更新結(jié)果返回服務(wù)器的操作。</p><p> 利用ADO數(shù)據(jù)訪問組件,可以只使用ADO結(jié)構(gòu)與數(shù)據(jù)庫取得聯(lián)系并對其中的數(shù)據(jù)進(jìn)行操作,而在這些過程中完全不需要使用BDE。大多數(shù)的ADO連接和數(shù)據(jù)集組件都是與基于BDE的連接和數(shù)據(jù)集組件相類似的。TADOConnection組件與基于BDE的應(yīng)用程序中的Tdatabase組件類似。TADOTable與Ttable,TADOQuery與
55、Tquery,以及TADOStoreProc和TstoredProc之間都具有這種類似的對應(yīng)關(guān)系。使用這些ADO組件的方式與我們常使用的數(shù)據(jù)訪問組件(基于BDE)都有許多相同之處。TTADODataSet沒有直接的BDE對應(yīng)組件,但它提供了許多與Ttable和Tquery相同的功能。同樣,TADOCommand也沒有相對應(yīng)的BDE組件,它是在Delphi/ADO環(huán)境中完成特定功能的組件。Delphi 6.0通過ADO數(shù)據(jù)集訪問組件,可以
56、不借助BDE數(shù)據(jù)引擎而是通過微軟的OLEDB來訪問更為廣泛的數(shù)據(jù)庫中的數(shù)據(jù)。ADO數(shù)據(jù)集訪問組件與常用的數(shù)據(jù)訪問組件是并列的關(guān)系。</p><p> 在系統(tǒng)中我主要使用的是ADOTablet和ADOQuery兩個組件。</p><p> 3.2.2 數(shù)據(jù)控制類DataControl</p><p> 數(shù)據(jù)控制類負(fù)責(zé)數(shù)據(jù)庫數(shù)據(jù)的顯示,并把用戶對數(shù)據(jù)的修改傳回。
57、這里的絕大多數(shù)組件,如DBText, DBEdit, DBMemo, DBImage, DBListBox, DBComboBox, DBCheckBox, DBRadioGroup, DBLookupListBox, DBLookupCombox, DBCtrGrid的功能和對應(yīng)的非數(shù)據(jù)感知組件相同,如TEdit框,TRadioGroups單選按鈕組等,只不過在顯示數(shù)據(jù)庫數(shù)據(jù)時要用而已。</p><p>
58、在系統(tǒng)中主要使用數(shù)據(jù)網(wǎng)格控件DBGrid和數(shù)據(jù)庫導(dǎo)航器控件DBNavigator。</p><p> 3.2.3 數(shù)據(jù)訪問類DataAccess</p><p> 數(shù)據(jù)庫應(yīng)用系統(tǒng)中數(shù)據(jù)訪問是一個首要問題,包括單用戶和 C/S系統(tǒng),都必須聯(lián)系</p><p> Tdatabase:當(dāng)一個基于BDE的數(shù)據(jù)庫應(yīng)用程序需要一個永久數(shù)據(jù)庫連接時,需要定制向一個數(shù)據(jù)庫服
59、務(wù)器的連接時,需要事務(wù)控制和特殊的數(shù)據(jù)庫別名時就得用到Tdatabase對象。特別是當(dāng)連接到一個遠(yuǎn)程的SQL數(shù)據(jù)庫服務(wù)器時,如果要利用BDE進(jìn)行數(shù)據(jù)庫事務(wù)處理,那么,TDatabase對象的威力就體現(xiàn)出來了。在一個應(yīng)用程序中為每一個數(shù)據(jù)庫連接顯示的聲明Tdatabase對象要根據(jù)需要而定,不是必需的。對一個數(shù)據(jù)庫連接,如果沒有顯示的聲明并實(shí)例化TDatabase對象,系統(tǒng)就會產(chǎn)生一個帶有默認(rèn)屬性的TDatabase對象。</p&g
60、t;<p> TdataSource對象用于在DataSet對象(包括Tquery,TstoredProc,Ttable等)和數(shù)據(jù)感知組件之間提供一個連接的紐帶,以便在窗體上顯示數(shù)據(jù)庫中的數(shù)據(jù),在數(shù)據(jù)庫中導(dǎo)航定位與編輯數(shù)據(jù)集中的數(shù)據(jù)。如果一個DataSet對象中的數(shù)據(jù)想在數(shù)據(jù)感知組件中顯示和修改,它就必須和TdataSource對象相聯(lián)系。同樣,一個數(shù)據(jù)感知組件如果想和數(shù)據(jù)源相聯(lián)系以便顯示和操縱數(shù)據(jù),就必須以TDataS
61、ource對象為中介。</p><p> 用Delphi6作數(shù)據(jù)庫應(yīng)用開發(fā)概括來說如下:先利用數(shù)據(jù)存取組件和實(shí)際的數(shù)據(jù)庫建立連接,并用Tsession對象和Tdatabase對象管理這些連接。然后以Tdatasource對象為中介,用數(shù)據(jù)感知組件向用戶顯示數(shù)據(jù)庫的內(nèi)容并接受用戶的查詢和修改等操作。</p><p> 3.2.4 SQL語言在Delphi中的應(yīng)用</p>
62、<p> 在Delphi中使用SQL語言非常方便,一般來說,都是通過Tquery組件來使用SQL語言的??梢栽赥Query組件的SQL屬性中設(shè)置SQL語句。設(shè)計(jì)程序時,在該組件的屬性對話框中選擇SQL屬性,單擊帶省略號的按鈕,就可以打開String List Editor對話框,然后我們就可以在對話框中添加SQL語句。還可以使用Delphi的SQL Builder來自動生成SQL語句,這樣可以避免手工編寫SQL而可能造成的語
63、法錯誤。</p><p> 靜態(tài)SQL語句在程序設(shè)計(jì)時便已固定下來,它不包含任何參數(shù)和變量。</p><p> 動態(tài)SQL語句,也被稱作參數(shù)化的語句,在其中間包含著表示字段名或表名的參數(shù),例如下面的語句是一條動態(tài)SQL語句: </p><p> Select * From Students Where StudentCode =: StudentCod
64、e;</p><p> 其中的變量StudentCode便是一個參數(shù)變量,它由一個冒號引導(dǎo),在程序運(yùn)行過程中,必須要為該參數(shù)賦值,該條SQL語句才能正確執(zhí)行,每次運(yùn)行應(yīng)用程序時可以為該參數(shù)變量賦予不同的值。為參數(shù)賦值有三種方法:</p><p> ?、俑鶕?jù)參數(shù)在SQL語句中出現(xiàn)的順序,設(shè)置TQuery部件的Params屬性值為參數(shù)賦值。</p><p> ②直接
65、根據(jù)SQL語句中各參數(shù)的名字,調(diào)用ParamByName方法來為各參數(shù)賦值。</p><p> ?、蹖Query部件的DataSource屬性設(shè)置為另一個數(shù)據(jù)源,這樣將另一個數(shù)據(jù)源中與當(dāng)前TQuery部件的SQL語句中的參數(shù)名相匹配的字段值賦給其對應(yīng)的參數(shù)。利用這種方法也能實(shí)現(xiàn)所謂的連接查詢,創(chuàng)建主要—明細(xì)型數(shù)據(jù)庫應(yīng)用。</p><p> 在程序運(yùn)行過程中,要想設(shè)置TQuery部件的S
66、QL屬性,必須首先調(diào)用Close方法,關(guān)閉TQuery部件,然后再調(diào)用Clear方法清除SQL屬性中現(xiàn)存的SQL命令語句, 最后再調(diào)用Add方法為SQL屬性設(shè)置新的SQL命令語句。例如:</p><p> Query1.Close {關(guān)閉Query1)</p><p> Query1.SQL.Clear {清除SQL屬性中的SQL命令語句}</p><p>
67、Query1.SQL.Add(‘Select * From Students‘);</p><p> Query1.SQL.Add(‘ Where Name ="Lucy" ‘);</p><p> 在為TQuery部件設(shè)置SQL屬性時調(diào)用Close方法總是很安全的,如果TQuery部件已經(jīng)被關(guān)閉了,調(diào)用Close方法時不會產(chǎn)生任何影響。在應(yīng)用程序中為SQL屬性設(shè)置
68、新的SQL 命令語句時,必須要調(diào)用Clear方法以清除SQL屬性中現(xiàn)存的SQL命令語句,如果不調(diào)用Clear方法,便調(diào)用Add方法向SQL屬性中設(shè)置SQL命令語句,那么新設(shè)置的SQL命令語句會追加在現(xiàn)存SQL命令語句后面, 在程序運(yùn)行時常常會出現(xiàn)出乎意料的查詢結(jié)果甚至程序無法運(yùn)行下去。</p><p> 在這里要特別注意的,一般情況下TQuery部件的SQL屬性只能包含一條完整的SQL語句,它不允許被設(shè)置成多條
69、SQL語句。當(dāng)然有些數(shù)據(jù)庫服務(wù)器也支持在TQuery部件的SQL屬性中設(shè)置多條SQL語句,只要數(shù)據(jù)庫服務(wù)器允許這樣,我們在編程時可以為 SQL 屬性設(shè)置多條SQL語句。</p><p> 在為TQuery部件設(shè)置完SQL屬性的屬性值之后,也即編寫好適當(dāng)?shù)腟QL程序之后,可以有多種方式來執(zhí)行SQL程序。</p><p> 在設(shè)計(jì)過程中,設(shè)置完TQuery部件的SQL屬性之后將其Activ
70、e屬性的值置為True, 這樣便可以執(zhí)行SQL屬性中的SQL程序,如果應(yīng)用中有與TQuery部件相連的數(shù)據(jù)瀏覽部件( 如TDDGrid TDBEdit等)那么在這些數(shù)據(jù)瀏覽部件中會顯示SQL程序的執(zhí)行結(jié)果。</p><p> 在應(yīng)用程序運(yùn)行過程中,通過程序調(diào)用TQuery部件的Open方法或ExecSQL 方法可以執(zhí)行其SQL屬性中的SQL程序。Open方法和ExecSQL方法是不一樣的。Open方法只能用來執(zhí)
71、行SQL語言的查詢語句(Select命令), 并返回一個查詢結(jié)果集,而ExecSQL方法還可以用來執(zhí)行其它常用的SQL語句(如INSERT, UPDATE, DELETE等命令),例如:</p><p> Query1.Open (這樣會返回一個查詢結(jié)果集)</p><p> 如果調(diào)用Open方法,而沒有查詢結(jié)果時,會出錯。此時應(yīng)該調(diào)用ExecSQL 方法來代替Open方法。如:<
72、;/p><p> Query1.ExecSQL (沒有返回結(jié)果)</p><p> 當(dāng)然在設(shè)計(jì)應(yīng)用程序時,程序設(shè)計(jì)人員是無法確定TQuery部件中的SQL 語句是否會返回一個查詢結(jié)果的。對于這種情況應(yīng)當(dāng)用Try…Except模塊來設(shè)計(jì)程序。在 Try 部分調(diào)用Open方法,而在Except部分調(diào)用ExceSQL方法,這樣才能保證程序的正確運(yùn)行。</p><p>
73、Delphi中用ADOQuery來使用SQL語句同樣十分方便。在ADOQuery組件中首先通過ConnectionString屬性值來聯(lián)接數(shù)據(jù)源,然后就通過雙擊SQL…屬性值來寫入SQL語句。在Delphi中調(diào)用數(shù)據(jù)庫,就可以調(diào)用ADOQuery組件,通過修改其中的SQL…屬性中的SQL語句來實(shí)現(xiàn)對數(shù)據(jù)庫的各項(xiàng)操作。</p><p> §3.3 Access 簡介</p><p&g
74、t; Access做為一個數(shù)據(jù)庫管理系統(tǒng),它被集成在Microsoft Office中。Access數(shù)據(jù)庫處理的基本結(jié)構(gòu),采取關(guān)系型數(shù)據(jù)庫模式。與其他的數(shù)據(jù)庫系統(tǒng)相比,Access更加簡單易學(xué),一個普通的計(jì)算機(jī)用戶可以很快地掌握它。</p><p> 第四章 系統(tǒng)總體設(shè)計(jì)</p><p> 軟件系統(tǒng)的總體設(shè)計(jì)大約要經(jīng)歷可行性分析和項(xiàng)目開發(fā)計(jì)劃,需求分析,概要設(shè)計(jì),詳細(xì)設(shè)計(jì),編碼,測
75、試以及維護(hù)等七個階段??尚行苑治龊晚?xiàng)目開發(fā)計(jì)劃在前面已經(jīng)敘述,下面所要做的是進(jìn)行軟件需求分析,概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)。編碼過程將在下一節(jié)論述,而測試和維護(hù)過程不在本文敘及。</p><p> §4.1 系統(tǒng)需求分析</p><p> 在經(jīng)過前一階段的分析之后,我確定了我的開發(fā)課題為圖書倉庫管理?,F(xiàn)在所要做的是要準(zhǔn)確定義系統(tǒng)必須做什么以及系統(tǒng)必須具備的功能。</p>
76、<p> 軟件需求分析中我采用結(jié)構(gòu)化分析方法(Structured Analysis,簡稱SA),SA是面向數(shù)據(jù)流進(jìn)行需求分析的方法,像所有的軟件分析方法(如面向?qū)ο蠓治龇椒?、IDEF方法等等)一樣,SA也是一種建?;顒樱褂煤唵我鬃x的符號,根據(jù)軟件內(nèi)部數(shù)據(jù)傳遞、變換的關(guān)系,自頂向下逐層分解,描繪滿足功能要求的軟件模型。</p><p> 在系統(tǒng)中我采用數(shù)據(jù)流圖(DFD)。它是一種功能模型,以
77、圖形的方式描繪數(shù)據(jù)在系統(tǒng)中流動和處理的過程,只反映系統(tǒng)必須完成的邏輯功能。它有四種基本圖形符號:</p><p> ◆ →:箭頭,表示數(shù)據(jù)流;</p><p> ◆ 〇:圓或橢圓,表示加工;</p><p> ◆ ═:雙杠,表示數(shù)據(jù)存儲;</p><p> ◆ □:方框,表示數(shù)據(jù)的源點(diǎn)或終點(diǎn)。</p><p>
78、 在多層數(shù)據(jù)流圖中,頂層流圖僅包含一個加工,它代表被開發(fā)系統(tǒng),它的輸入流是該系統(tǒng)的輸入數(shù)據(jù)了,輸出流是該系統(tǒng)的輸出數(shù)據(jù);底層流圖是指其加工不需要再做分解的數(shù)據(jù)流圖,中間層流圖表示對其上層父圖的細(xì)化,它的每一步加工可能繼續(xù)細(xì)化成子圖。</p><p> §4.2 系統(tǒng)概要設(shè)計(jì)</p><p> 在軟件需求分析階段,搞清楚了軟件“做什么”的問題,形成了目標(biāo)系統(tǒng)的邏輯模型?,F(xiàn)
79、在我們所要做的就是要把軟件“做什么”的邏輯模型變換為“怎么做”的物理模型,即著手實(shí)現(xiàn)軟件的需求。首先,我們需要描述的是系統(tǒng)的總的體系結(jié)構(gòu)。</p><p> 4.2.1 系統(tǒng)結(jié)構(gòu)設(shè)計(jì)</p><p> 系統(tǒng)的概要設(shè)計(jì)中最重要的就是系統(tǒng)的模塊化。模塊化是指解決一個復(fù)雜問題時自項(xiàng)向下逐層把軟件系統(tǒng)劃分成若干個模塊的過程。每個模塊完成一個特定的功能,所有的模塊按某種方法組織起來,成為一個整
80、體,完成整個系統(tǒng)所要求的功能。</p><p> 將系統(tǒng)劃分為多個模塊是為了降低軟件系統(tǒng)的復(fù)雜性,提高可讀性、可維護(hù)性,但模塊的劃分不能是任意的,應(yīng)盡量保持其獨(dú)立性。也就是說,每個模塊只完成系統(tǒng)要求的獨(dú)立的子功能,并且與其他模塊的聯(lián)系最少且接口簡單,即盡量做到高內(nèi)聚低耦合,提高模塊的獨(dú)立性,為設(shè)計(jì)高質(zhì)量的軟件結(jié)構(gòu)奠定基礎(chǔ)。</p><p> 4.2.2 數(shù)據(jù)庫設(shè)計(jì)</p>
81、<p> 在信息世界中,信息從客觀事物出發(fā)流經(jīng)數(shù)據(jù)庫,通過決策機(jī)構(gòu)最后又回到客觀世界,信息的這一循環(huán)經(jīng)歷了三個領(lǐng)域:信息世界,數(shù)據(jù)世界,現(xiàn)實(shí)世界?,F(xiàn)實(shí)世界的事物反映到人的頭腦中,人的大腦對它有個認(rèn)識過程,經(jīng)過分析(選擇、命名、分類等)進(jìn)入信息世界。這些信息再進(jìn)一步加工、編碼,然后進(jìn)數(shù)據(jù)世界,而軟件系統(tǒng)的開發(fā)工作需要考慮這兩個方面的問題,也就是要考慮系統(tǒng)開發(fā)所需要的數(shù)據(jù),以及如何對這些數(shù)據(jù)進(jìn)行操作。這兩個問題貫穿了整個軟件
82、系統(tǒng)的開發(fā)過程,這也就是數(shù)據(jù)庫的設(shè)計(jì)問題,軟件設(shè)計(jì)的一個核心。</p><p><b> ER圖設(shè)計(jì)</b></p><p> 在系統(tǒng)設(shè)計(jì)的開始,我首先考慮的是如何用數(shù)據(jù)模型來數(shù)據(jù)庫的結(jié)構(gòu)與語義,以對現(xiàn)實(shí)世界進(jìn)行抽象。目前廣泛使用的數(shù)據(jù)模型可分為兩種類型,一種是獨(dú)立于計(jì)算機(jī)系統(tǒng)的“概念數(shù)據(jù)模型”,如“實(shí)體聯(lián)系模型”;另一種是直接面向數(shù)據(jù)庫邏輯結(jié)構(gòu)的“結(jié)構(gòu)數(shù)據(jù)模型”
83、。</p><p> ER圖是直觀表示概念模型的工具,它有四個基本成分:</p><p> ◆ 矩形框,表示實(shí)體類型(考慮問題的對象)。</p><p> ◆ 菱形框,表示聯(lián)系類型(實(shí)體間的聯(lián)系)。</p><p> ◆ 橢圓形框,表示實(shí)體類型和聯(lián)系類型的屬性。對于關(guān)鍵碼的屬性,在屬性名下劃一橫線。</p><p&
84、gt; ◆直線,聯(lián)系類型與其涉及的實(shí)體類型之間以直線連接。</p><p> 入庫聯(lián)系類型將庫存信息、供應(yīng)商信息和員工信息聯(lián)系在一起,可以方便地實(shí)現(xiàn)三個實(shí)體之間的聯(lián)接,而出庫聯(lián)系類型則將庫存信息和員工信息較好地聯(lián)接起,同時這兩個聯(lián)系類型又都具有各自特有的屬性。</p><p> 在完成系統(tǒng)的ER圖之后,需要將ER模型轉(zhuǎn)化為關(guān)系模型,也就是說,要設(shè)計(jì)出數(shù)據(jù)庫所需要的表格。</p&
85、gt;<p> BookRecord 表(庫存信息表) </p><p> 字段名稱 數(shù)據(jù)類型 說明</p><p> K BookID 數(shù)字 圖書編號</p><p> BookName 文本 圖書名</p><p> Author 文本 作者</p><p> Publisher 文本 出
86、版社</p><p> PubDate 日期/時間 出版日期</p><p> Price 貨幣 價格</p><p> BookType 文本 圖書類型</p><p> Number1 數(shù)字 庫存數(shù)量</p><p> Addation 文本 備注</p><p> 庫存信息表主
87、要用于記錄倉庫中現(xiàn)存放的所有圖書的詳細(xì)信息,包括圖書編號、書名、作者、出版社、圖書類型等有關(guān)圖書的各類信息,它即是該數(shù)據(jù)庫的主表,也是系統(tǒng)主界面的主要內(nèi)容。</p><p> Shopkeeper 表(供應(yīng)商信息表)</p><p> 字段名稱 數(shù)據(jù)類型 說明</p><p> K ShopkeeperID 數(shù)字 供應(yīng)商編號</p><p&
88、gt; ShopkeeperName 文本 供應(yīng)商姓名</p><p> Address 文本 地址</p><p> PostNo 數(shù)字 郵編</p><p> OfficePhone 文本 辦公電話</p><p> HomePhone 文本 住宅電話</p><p> Email 文本 E-mail&
89、lt;/p><p> PayType 文本 付款方式</p><p> 供應(yīng)商信息表主要用于記錄有關(guān)供應(yīng)商的各類信息,包括姓名、地址、電話、付款方式等。它主要用來為系統(tǒng)提供供應(yīng)商的有關(guān)信息,在系統(tǒng)中入庫記錄是與供應(yīng)商記錄相聯(lián)系的,通過入庫記錄可以查找相關(guān)的供應(yīng)商信息。</p><p> InRecord 表(入庫信息表)</p><p>
90、 字段名稱 數(shù)據(jù)類型 說明</p><p> K InID 數(shù)字 入庫編號</p><p> # BookID 數(shù)字 圖書編號</p><p> # EmployeeID 數(shù)字 員工編號</p><p> # ShopkeeperID 數(shù)字 供應(yīng)商編號</p><p> Number 數(shù)字 入庫數(shù)量</
91、p><p> BuyDate 日期/時間 入庫日期</p><p> OutRecord 表(出庫信息表)</p><p> 字段名稱 數(shù)據(jù)類型 說明</p><p> K OutID 數(shù)字 出庫編號</p><p> # BookID 數(shù)字 圖書編號</p><p> # Employ
92、eeID 數(shù)字 員工編號</p><p> Number2 數(shù)字 出庫數(shù)量</p><p> OutDate 日期/時間 出庫日期</p><p> 入庫信息表主要用于記錄有關(guān)入庫的詳細(xì)信息,包括入庫數(shù)量、入庫日期以及圖書、員工、供應(yīng)商三方的編號,以便查詢。出庫信息表主要用于記錄有關(guān)出庫的詳細(xì)信息,包括出庫數(shù)量、出庫日期以及圖書、員工的編號。出庫信息表和入庫信
93、息表一樣,其實(shí)它們都屬于聯(lián)系類型,系統(tǒng)通過這兩個表可以聯(lián)接上其它的表為用戶提供多種條件的聯(lián)接查詢。</p><p> Key 表(密碼信息表)</p><p> 字段名稱 數(shù)據(jù)類型 說明</p><p> K KeyName 文本 用戶姓名</p><p> KeyNo 文本 用戶密碼</p><p> 密碼
94、信息表主要用于記錄所有的用戶名和用戶密碼。它是在用戶登陸時用來確定用戶和密碼的正確性,以防止非法用戶登陸。</p><p> §4.3 系統(tǒng)詳細(xì)設(shè)計(jì)</p><p> 在前面的概要設(shè)計(jì)中,已將系統(tǒng)劃分為多個模塊,并將它們按照一定的原則組裝起來,同時確定了每個功能及模塊之間的外部接口。現(xiàn)在所要做的就是確定每個模塊具體執(zhí)行過程,也可以說是“過程設(shè)計(jì)”。</p>
95、<p> 在處理過程設(shè)計(jì)時我采用的是結(jié)構(gòu)化程序設(shè)計(jì)(簡稱SP)方法。需要指出的是系統(tǒng)的詳細(xì)設(shè)計(jì)并不是指具體的編程序,而是將概要設(shè)計(jì)階段產(chǎn)生的系統(tǒng)功能模塊圖細(xì)化成很容易產(chǎn)生程序的圖紙。因此詳細(xì)設(shè)計(jì)的結(jié)果基本決定了最終程序的質(zhì)量。為軟件的質(zhì)量,延長軟件的生存期,軟件的可測試性、可維護(hù)性提供重要的保障。詳細(xì)設(shè)計(jì)的目標(biāo)不僅是邏輯上正確地實(shí)現(xiàn)每個模塊的功能,還應(yīng)使設(shè)計(jì)出的處理過程清晰易讀。</p><p>
96、第五章 系統(tǒng)應(yīng)用程序設(shè)計(jì)</p><p> 在編寫數(shù)據(jù)庫應(yīng)用程序時,經(jīng)常要遇到這樣的情況,即好多組件、窗體同時訪問相同的數(shù)據(jù)源,如果為每一個組件或者窗體都設(shè)置一個數(shù)據(jù)源將是十分耗時的工件,而且要保證這些數(shù)據(jù)源的確是相同的也需花一番功夫。那么,能不能將這些數(shù)據(jù)源集中管理,最好是做成一個統(tǒng)一的模塊,需要時就將該模塊引入而不必直接操作數(shù)據(jù)源本身呢?數(shù)據(jù)模塊(DataModule)是解決這個問題最好的答案。<
97、/p><p> 主窗體功能模塊的實(shí)現(xiàn) </p><p> file://主窗體程序代碼</p><p> public file://在程序的起始部分,定義快捷按鈕點(diǎn)擊事件</p><p> Procedure Popup1Handler(Sender:Tobject);<
98、;/p><p> Procedure Popup2Handler(Sender:TObject);</p><p> **********************************************************************</p><p> procedure Tmainform.SpeedButton3Click(Sender
99、: TObject);</p><p> begin file://庫存表刷新按鈕事件</p><p> with datamoduleform.MainQuery do</p><p><b> begin</b></p><p><b> close;</b></p
100、><p> SQL.Clear;</p><p> SQL.Add(‘select * from BookRecord‘);</p><p><b> open;</b></p><p><b> end; </b></p><p><b> end;<
101、;/b></p><p> **********************************************************************</p><p> procedure Tmainform.FormCreate(Sender: TObject);</p><p> begin file://系統(tǒng)初始化,定義界
102、面大小,以適應(yīng)不同分辯率</p><p> Width:=800;Height:=600;</p><p><b> end;</b></p><p> **********************************************************************</p><p>
103、procedure Tmainform.Timer1Timer(Sender: TObject);</p><p> begin file://在狀態(tài)欄顯示時間</p><p> StatusBar1.Panels[2].Text:=DateToStr(Date);</p><p> StatusBar1.Panels[4].Text:=Tim
104、eToStr(Time);</p><p><b> end;</b></p><p> §5.1 入庫、出庫窗體模塊的實(shí)現(xiàn)</p><p> **********************************************************************</p><p>
105、 procedure Tinoutform.SpeedButton1Click(Sender: TObject);</p><p> var s:integer;</p><p> begin file://入庫管理添加按鈕事件</p><p> if Edit1.Text<>NULL</p><p>
106、 then MessageDlg(‘請輸入完整的入庫信息和圖書信息,然后單擊確定按鈕?!?</p><p> mtInformation,[mbok],0)</p><p> else begin</p><p> if (Edit2.Text=‘‘) or (Edit3.Text=‘‘) or (Edit4.Text=‘‘) or (Edit5.Text
107、=‘‘)</p><p> then begin</p><p> MessageDlg(‘請輸入完整的入庫信息!‘,mtInformation,[mbok],0);</p><p> Edit2.SetFocus;</p><p><b> end</b></p><p> else
108、 begin</p><p> with datamoduleform.InQuery do file://將找到的圖書信息顯示</p><p><b> begin</b></p><p><b> close;</b></p><p> SQL.Clear;</p>
109、<p> SQL.Add(‘insert into InRecord values(:InID,:BookID,:EmpID,:ShopID,</p><p> :Number,:InDate)‘); file://向入庫信息表中插入記錄</p><p> Parameters.ParamByName(‘InID‘).Value:=Edit26.Text; file
110、://向Edit框取值</p><p> Parameters.ParamByName(‘BookID‘).Value:=Edit13.Text;</p><p> Parameters.ParamByName(‘EmpID‘).Value:=Edit2.Text;</p><p> Parameters.ParamByName(‘ShopID‘).Value
111、:=Edit3.Text;</p><p> Parameters.ParamByName(‘Number‘).Value:=Edit4.Text;</p><p> Parameters.ParamByName(‘InDate‘).Value:=Edit5.Text;</p><p><b> execSQL;</b></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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 倉庫管理系統(tǒng) 畢業(yè)論文
- 倉庫管理系統(tǒng)畢業(yè)論文
- 畢業(yè)論文-倉庫管理系統(tǒng)
- 畢業(yè)論文--倉庫管理系統(tǒng)
- 倉庫管理系統(tǒng)畢業(yè)論文.doc
- java畢業(yè)論文--倉庫管理系統(tǒng)
- 倉庫管理系統(tǒng)設(shè)計(jì)畢業(yè)論文
- 企業(yè)倉庫管理系統(tǒng)畢業(yè)論文
- 基于.net的倉庫管理系統(tǒng)系統(tǒng)倉庫管理系統(tǒng)畢業(yè)論文
- 畢業(yè)論文----vb倉庫管理系統(tǒng)論文
- 倉庫管理系統(tǒng)-畢業(yè)論文開題報(bào)告
- 基于倉庫管理系統(tǒng)的畢業(yè)論文
- 倉庫管理系統(tǒng)的設(shè)計(jì)畢業(yè)論文
- 基于java的倉庫管理系統(tǒng)畢業(yè)論文
- 基于javaweb的倉庫管理系統(tǒng)畢業(yè)論文
- 畢業(yè)論文范文——倉庫庫存管理系統(tǒng)
- 畢業(yè)論文范文——倉庫管理系統(tǒng) (2)
- 《倉庫管理系統(tǒng)之進(jìn)銷存管理》畢業(yè)論文
- 畢業(yè)論文范文——倉庫庫存管理系統(tǒng) (2)
- 倉庫貨物管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文
評論
0/150
提交評論