版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 第一章</b></p><p><b> 總論</b></p><p> 1.1 Delphi 6.0簡介</p><p> Delphi6.0是著名的Borland(現(xiàn)在已和Inprise合并)公司開發(fā)的可視化軟件開發(fā)工具。“真正的程序員用c,聰明的程序員用Delphi”,這句話是對
2、Delphi最經(jīng)典、最實在的描述。Delphi被稱為第四代編程語言,它具有簡單、高效、功能強大的特點。和VC相比,Delphi更簡單、更易于掌握,而在功能上卻絲毫不遜色;和VB相比,Delphi則功能更強大、更實用??梢哉fDelphi同時兼?zhèn)淞薞C功能強大和VB簡單易學(xué)的特點。它一直是程序員至愛的編程工具?! elphi具有以下的特性:基于窗體和面向?qū)ο蟮姆椒ǎ咚俚木幾g器,強大的數(shù)據(jù)庫支持,與Windows編程緊密結(jié)合,強大而成
3、熟的組件技術(shù)。但最重要的還是Object Pascal語言,它才是一切的根本。 Object Pascal語言是在Pascal語言的基礎(chǔ)上發(fā)展起來的,簡單易學(xué)。</p><p> Delphi提供了各種開發(fā)工具,包括集成環(huán)境、圖像編輯(Image Editor),以及各種開發(fā)數(shù)據(jù)庫的應(yīng)用程序,如DesktopDataBase Expert等。除此之外,還允許用戶
4、掛接其它的應(yīng)用程序開發(fā)工具,如Borland公司的資源編輯器(Resourse Workshop)?! ≡贒elphi眾多的優(yōu)勢當(dāng)中,它在數(shù)據(jù)庫方面的特長顯得尤為突出:適應(yīng)于多種數(shù)據(jù)庫結(jié)構(gòu),從客戶機/服務(wù)器模式到多層數(shù)據(jù)結(jié)構(gòu)模式;高效率的數(shù)據(jù)庫管理系統(tǒng)和新一代更先進的數(shù)據(jù)庫引擎;最新的數(shù)據(jù)分析手段和提供大量的企業(yè)組件</p><p> 1.1.1專業(yè)的客戶/服務(wù)器開發(fā)工具</p>&
5、lt;p> 客戶/服務(wù)器是一種將任務(wù)進行分解,然后協(xié)同解決的計算模式??蛻舳说膽?yīng)用程序負(fù)責(zé)提出任務(wù)需求,服務(wù)器端的應(yīng)用程序則為客戶提供服務(wù),例如數(shù)據(jù)查詢、打印等。用Delphi6.0開發(fā)出的應(yīng)用程序能夠與數(shù)據(jù)庫服務(wù)器完美地協(xié)同工作,構(gòu)成客戶/服務(wù)器計算模式。</p><p> 1.1.2 面向?qū)ο蟮木幊?lt;/p><p> 在Delphi6.0中創(chuàng)建的窗口、菜單、數(shù)據(jù)窗口等都是對
6、象。除了使用系統(tǒng)預(yù)先定義的對象外,開發(fā)人員可以自行構(gòu)造新的對象,擴展系統(tǒng)的預(yù)定義對象,將各種對象有機地組合起來就構(gòu)成了Delphi應(yīng)用程序。</p><p> 1.1.3 Delphi和Object Pascal</p><p> Object Pascal是Delphi的語言基礎(chǔ),Delphi是Object Pascal的加速引擎。軟件開發(fā)工具在任何發(fā)展階段都具有一個永遠(yuǎn)不變的目標(biāo):
7、提高軟件生產(chǎn)力。換句話說,就是最大程度為開發(fā)者提供方便,在最短時間內(nèi)建立應(yīng)用程序。例如,為了降低代碼編寫難度(對于近幾年來才入門的程序員,匯編語言是晦澀難懂的,更不要說去編寫代碼了),最早的C語言和Pascal語言出現(xiàn)了;為了提高代碼效率,面向?qū)ο蠹夹g(shù)應(yīng)用到編程語言中;為了提高開發(fā)效率,可視化開發(fā)工具出現(xiàn)了;為了實現(xiàn)跨平臺應(yīng)用,Delphi6和Kylix出現(xiàn)了。</p><p> Delphi的精華是VCL。離
8、開了VCL,開發(fā)者又回到了刀耕火種的年代。你可以試著將你編寫的單元中的uses子句中由Delphi自動添加的如SysUtils、Forms等單元名刪除,你會發(fā)現(xiàn)你編寫的代碼無法編譯。VCL封裝了Windows消息機制,因此開發(fā)者可以方便地通過屬性、事件、方法來控制對象;VCL封裝了數(shù)據(jù)庫游標(biāo)機制(準(zhǔn)確地說是BDE封裝的),因此用Delphi進行數(shù)據(jù)庫應(yīng)用開發(fā)的開發(fā)者完全可以對關(guān)系數(shù)據(jù)庫的游標(biāo)機制一無所知。Delphi已經(jīng)充分提供了積木元
9、件(組件、類、標(biāo)準(zhǔn)例程),而開發(fā)者只需要加以利用就能夠快速實現(xiàn)構(gòu)想(應(yīng)用程序)??梢姡焖賾?yīng)用開發(fā)(RAD)對于Delphi來說是當(dāng)之無愧的</p><p> 1.1.4 Delphi和SQL</p><p> SQL語言作為關(guān)系數(shù)據(jù)庫管理系統(tǒng)中的一種通用的結(jié)構(gòu)查詢語言, 已經(jīng)被眾多的數(shù)據(jù)庫管理系統(tǒng)所采用,如ORACLE、Sybase、Informix等數(shù)據(jù)庫管理系統(tǒng),它們都支持SQL
10、 語言。Delphi與使用SQL語言的數(shù)據(jù)庫管理系統(tǒng)兼容,在使用Delphi開發(fā)數(shù)據(jù)庫應(yīng)用程序時,我們可以使用SQL語言編程,支持SQL編程是Delphi的一個重要特征,這也是體現(xiàn)Delphi作為一個強大的數(shù)據(jù)庫應(yīng)用開發(fā)工具的一個重要標(biāo)志。</p><p> 1.1.5 Delphi的數(shù)據(jù)庫特性及功能簡介 </p><p> 直到目前為止,計算機軟件的開發(fā)分為兩個不同的體系,其中一個體
11、系是使用傳統(tǒng)的程序設(shè)計語言(如Pascal、Basic和C等)開發(fā)數(shù)值控制、數(shù)值運算等軟件,圍繞它們的重點是算術(shù)、數(shù)據(jù)結(jié)構(gòu)以及近年產(chǎn)生的面向?qū)ο蠹夹g(shù)。另一個體系則是通用的數(shù)據(jù)庫管理軟件領(lǐng)域(數(shù)據(jù)庫應(yīng)用程序的開發(fā))。這兩個體系的發(fā)展都極為迅猛,但是二者并沒出現(xiàn)混合滲透跡象。如果使用數(shù)據(jù)庫語言進行傳統(tǒng)的算術(shù)編程,雖然也能完成相應(yīng)的功能,但是其編程過程可能極為復(fù)雜。如果使用傳統(tǒng)的編程語言進行數(shù)據(jù)庫編程,通過調(diào)用專用的數(shù)據(jù)庫應(yīng)用程序接口函數(shù)和過
12、程,利用這些函數(shù)和過程提供的功能,可能也能做得比較完善,但這做起來大多是極其困難的。而Delphi結(jié)合了兩個體系的優(yōu)點,它結(jié)合了傳統(tǒng)的編程語言O(shè)bject Pascal和數(shù)據(jù)庫語言的強大功能, 它即可以用于傳統(tǒng)的算術(shù)編程又可以用于數(shù)據(jù)庫編程,特別是Delphi具有強大的數(shù)據(jù)庫功能,利用Delphi的數(shù)據(jù)庫工具,我們根本不需要編寫任何Object Pascal代碼便可以創(chuàng)建一個簡單的數(shù)據(jù)庫應(yīng)用。</p><p>
13、 1.1.6 Delphi對多種數(shù)據(jù)庫管理系統(tǒng)的支持</p><p> Delphi在Window3.1以上版本的系統(tǒng)環(huán)境下運行,目前具有兩個版本:Delphi的標(biāo)準(zhǔn)版本和客戶/服務(wù)器版本。標(biāo)準(zhǔn)版本包含一個Borland Database Engine的局部拷貝,它允許用戶創(chuàng)建能訪問dBASE、Paradox和Local InterBase 服務(wù)器的數(shù)據(jù)庫應(yīng)用, 它還支持具有 ODBC 接口的數(shù)據(jù)庫。Delph
14、i的客戶/服務(wù)器版本包括Borland SQL Link, 它能直接訪問 ORACLE 、 SyBase 和Microsoft SQL Server,Informix以及InterBase數(shù)據(jù)庫服務(wù)器。Delphi可以訪問多種數(shù)據(jù)庫管理系統(tǒng)的數(shù)據(jù)庫,憑借窗體(Forms)和報表(Reports),BDE(Borland Database Engine)可以訪問諸如Paradox、dBASE、本地InterBase 服務(wù)器的數(shù)據(jù)庫,也可以
15、訪問遠(yuǎn)程數(shù)據(jù)庫服務(wù)器上的數(shù)據(jù)庫(如ORACLE、SyBase、Informix等客戶/服務(wù)器數(shù)據(jù)庫中的數(shù)據(jù)庫),或任何經(jīng)ODBC(Open Database Connecticity) 可訪問的數(shù)據(jù)庫管理系統(tǒng)中的數(shù)據(jù)庫</p><p> 1.1.7 異常處理與程序調(diào)試</p><p> 在應(yīng)用程序開發(fā)中如何檢測、處理程序的運行錯誤是一個很重要的問題。在 Delphi 的集成開發(fā)環(huán)境(
16、IDE )中提供了一個完善的內(nèi)置調(diào)試器,可以幫助你發(fā)現(xiàn)大部分程序錯誤。但并不是所有的錯誤都可以被發(fā)現(xiàn),而且當(dāng)程序涉及到與外設(shè)的數(shù)據(jù)交換或操作外設(shè),如要求用戶輸入、讀寫磁盤等時,錯誤的發(fā)生是程序無法控制的,如輸入非法字符、磁盤不能讀寫等。這些情況不僅會導(dǎo)致應(yīng)用程序異常中止而且可能引起系統(tǒng)的崩潰。針對這些問題,Delphi同時提供了一套強大的異常處理機制。巧妙地利用它,可以使你的程序更為強健,使用更為友好。</p><p
17、><b> 第二章 系統(tǒng)設(shè)計</b></p><p> 2.1 系統(tǒng)功能分析</p><p> 超市銷售系統(tǒng)目前國內(nèi)外做得較多,比較成熟,這個系統(tǒng)是畢業(yè)生畢業(yè)前的最后一次模擬,對畢業(yè)生的軟件開發(fā)能力有很大幫助。本系統(tǒng)主要由以下幾個功能組成:</p><p> ·商品入庫,用于將進來的商品錄入到庫里。</p>
18、<p> ·商品銷售,用于售貨員銷售商品。</p><p> ·商品信息管理,現(xiàn)有庫存、庫存警報、商品報表三部分。</p><p> ·查詢,管理員根據(jù)自己的需要進行查詢,可按商品代號和商品名稱查詢。</p><p> ·口令更改,用于員工更改自己的口令。</p><p>
19、83;員工信息維護,用于管理員修改員工的信息。</p><p> 2.2系統(tǒng)功能模塊設(shè)計</p><p> 根據(jù)系統(tǒng)功能要求可以將系統(tǒng)分解成幾個子系統(tǒng)模塊來分別設(shè)計應(yīng)用程序界面,</p><p><b> 如圖所示:</b></p><p><b> 2.3數(shù)據(jù)流程圖</b></p&g
20、t;<p> 數(shù)據(jù)流程圖描繪了系統(tǒng)的邏輯模型,圖中沒有任何具體的物理元素,只是描繪信息在系統(tǒng)中的流動和處理情況。對數(shù)據(jù)流的分析,主要是整體數(shù)據(jù)流、單元模塊數(shù)據(jù)流。整體數(shù)據(jù)流概括為進入計算機操作員系統(tǒng)的操作過程和用戶(各部門或個人)進入系統(tǒng)的數(shù)據(jù)流向。</p><p> 整體數(shù)據(jù)流:用戶通過密碼進入系統(tǒng),分別對上述幾大功能逐一實現(xiàn),其中涉及到模塊數(shù)據(jù)流分析。 </p&
21、gt;<p> 根據(jù)上一節(jié)業(yè)務(wù)流程的分析以及業(yè)務(wù)流程圖我們可以得出系統(tǒng)的數(shù)據(jù)流程。</p><p><b> 數(shù)據(jù)流圖圖例表示:</b></p><p> 數(shù)據(jù)的源點/終點 變換數(shù)據(jù)的處理</p><p> 數(shù)據(jù)存儲 數(shù)據(jù)流</p><p&g
22、t; 本系統(tǒng)各功能模塊的數(shù)據(jù)流程圖如下圖所示:</p><p><b> 入庫模塊流程圖:</b></p><p><b> 銷售模塊流程圖:</b></p><p> 商品信息管理模塊流程圖:</p><p><b> 查詢模塊流程圖:</b></p>
23、<p> 口令更改模塊流程圖:</p><p> 員工信息維護模塊流程圖:</p><p><b> 第三章 數(shù)據(jù)庫設(shè)計</b></p><p> 3.1 數(shù)據(jù)庫需求分析</p><p> 數(shù)據(jù)庫是信息管理的基礎(chǔ)。數(shù)據(jù)庫結(jié)構(gòu)直接關(guān)系到各種功能的實現(xiàn)和程序運行的效率。</p><p
24、> 進行數(shù)據(jù)庫設(shè)計首先必須準(zhǔn)確了解與分析用戶需求(包括數(shù)據(jù)與處理)。需求分析是整個設(shè)計過程的基礎(chǔ),是最困難、最耗費時間的一步。需求分析的結(jié)果是否準(zhǔn)確地反映了用戶的實際要求,將直接影響到后面各個階段的設(shè)計,并影響到設(shè)計結(jié)果是否合理和實用。</p><p> 根據(jù)上一章的流程圖,可以列出以下各模塊記錄信息所需的數(shù)據(jù)項和數(shù)據(jù)結(jié)構(gòu):</p><p><b> 1.入庫信息管理
25、</b></p><p> ·入庫記錄:商品編號(SPNO)、商品名稱(SPNAM)、經(jīng)辦人員(JBREN)、進貨數(shù)量(JHNUM)、進貨小計(inprice)、備注(BEIZHU)</p><p><b> 2.銷售信息管理</b></p><p> ·銷售記錄:商品編號(SPNO)、商品數(shù)量(SPNUM
26、)、經(jīng)辦人員(JBREN)、商品名稱(SPNAM)、標(biāo)準(zhǔn)價格(BZJG)、銷售小計(XSXJ)</p><p><b> 3.商品信息管理</b></p><p> ·商品信息記錄:商品編號(SPNO)、商品名稱(SPNAM)、本店庫存量(BDKCL)、默認(rèn)成本(MORCB)、供應(yīng)商編號(GYSNO)、商品分類(SPKIN)、安全存量(SAFCL)、商品
27、規(guī)格(SPGG)、庫存單位(KCDW)、商品顏色(SPCOL)、商品尺寸(SPSIZ)、標(biāo)準(zhǔn)價格(BEIZHU BZJG)、會員價格(HYJG)、批發(fā)價格(PFJG)、備注(BEIZHU)</p><p><b> 4.員工信息管理</b></p><p> ·員工信息:用戶名(user)、口令(password)</p><p>
28、; 3.2數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計</p><p> 概念模型是對信息世界的建模,所以概念模型應(yīng)該能夠方便、準(zhǔn)確的表示出信息世界中的常用概念。實體------關(guān)系模型(Entity-Relationship Module,簡稱E-R圖)是數(shù)據(jù)庫結(jié)構(gòu)設(shè)計常用的方法。</p><p> E-R圖提供了表示實體、屬性和聯(lián)系的方法。</p><p> ·實體型:
29、用矩形表示,矩形框內(nèi)寫明實體名</p><p> ·屬性:用橢圓型表示,并用無向邊與其相應(yīng)實體連接起來</p><p> ·聯(lián)系:用菱形表示,菱形框內(nèi)寫明聯(lián)系名,并用無向邊與其有關(guān)實體連接起來,同時在邊旁邊標(biāo)上聯(lián)系的類型(1:1,1:n或m:n)。</p><p> 對象類型的組成成份可以抽象為實體的屬性。組成成份與對象之間是“is par
30、t of”的關(guān)系。</p><p> 實際上實體與屬性是相對而言的,很難有截然劃分的界限。同一事物,在一種應(yīng)用環(huán)境中作為“屬性”,在另一種環(huán)境中就必須作為“實體”。一般來說,在給定的應(yīng)用環(huán)境中,屬性不能再具有需要描述的性質(zhì)。即屬性必須是不可分的數(shù)據(jù)項,不能再由另一些屬性組成。屬性不能與其它實體具有聯(lián)系。聯(lián)系只發(fā)生在實體之間。</p><p> 本系統(tǒng)中部分E-R圖如圖所示:</p
31、><p><b> 1:m</b></p><p> 1:m 1:m</p><p> 1:m </p><p> 3.3數(shù)據(jù)庫結(jié)構(gòu)實現(xiàn)</p><p> 商品信息表(SPXXB)結(jié)構(gòu):</p><p>
32、 銷售信息表(XSB)結(jié)構(gòu):</p><p> 進貨信息表(JHZB)結(jié)構(gòu):</p><p> 供應(yīng)商信息表(GYSB)結(jié)構(gòu):</p><p><b> 第四章 詳細(xì)設(shè)計</b></p><p><b> 4.1登錄界面</b></p><p> 為了提高系統(tǒng)的安
33、全性,我們完全有理由相信,設(shè)置用戶以及密碼是必要的。用戶登錄界面很簡單,首先在用戶輸入框輸入用戶名,再對應(yīng)輸入密碼,程序?qū)⑴c用戶數(shù)據(jù)庫連接,確認(rèn)用戶是其中一員,并輸入了正確的密碼,然后進入主界面,否則警告出錯,讓用戶重新輸入。界面設(shè)置如下:</p><p><b> 4.2主界面</b></p><p> 主窗口界面主要是完成系統(tǒng)功能模塊的劃分。超市銷售系統(tǒng)主窗口
34、包括四個按紐,進貨作業(yè)按紐、商品信息按紐、供應(yīng)商信息按紐、銷售作業(yè)按紐。界面設(shè)置如下:</p><p><b> 4.3入庫子系統(tǒng)</b></p><p> 商品入庫是將購進的商品進行入庫。在入庫時由入庫員將商品信息輸入到入庫信息表中,然后系統(tǒng)將入庫的商品的代號與庫存里的商品信息比較,如果能找到相同的代號,則說明庫存里有這種商品,只要相應(yīng)增加這種商品的庫存量。如果
35、找不到,則說明原來庫存里沒有這種商品,則要增加這種商品的一系列信息,如商品代號、商品名稱、進價等,界面設(shè)置如下:</p><p><b> 4.4銷售子系統(tǒng)</b></p><p> 商品銷售是將顧客購買的商品銷售出去。在銷售時,由銷售員將顧客購買的商品代號輸入到銷售窗口中,系統(tǒng)自動根據(jù)商品代號把這種商品的相應(yīng)信息反饋到數(shù)據(jù)窗口中,每一種商品都有一個小計,最后算出
36、總計。最后點擊“打印”便可打印出顧客清單了。銷售界面界面設(shè)置如下:</p><p> 4.5商品信息管理子系統(tǒng)</p><p> 商品信息管理子系統(tǒng)包括三個小的基本功能,即:</p><p> 現(xiàn)有庫存,本功能是統(tǒng)計現(xiàn)在庫存中所有的商品的信息,包括商品的代號,商品名,進價,售價,還有庫存量等,主要是要庫存量,因為后面的庫存警報和進貨報表都要建立在現(xiàn)在庫存量的基
37、礎(chǔ)上。同樣,點擊“打印”按鈕便可打印現(xiàn)有商品的庫存信息了。</p><p> 庫存警報,本功能是根據(jù)現(xiàn)有商品的庫存量來判斷哪種商品的庫存量少于最小庫存量,這就能提示管理員哪些商品需要進貨。一開始打開窗口時,數(shù)據(jù)窗口內(nèi)也是顯示所有的庫存商品信息,通過點擊“安存不足”按鈕便可查詢庫存量過少的商品信息了。</p><p> 進貨報表,本功能是顯示要進貨的商品的信息,它是建立在庫存警報窗口中的
38、過少的商品的信息上的。點擊“打印安存不足”便可打印出進貨報表,供進貨員去進貨。</p><p> 其功能界面設(shè)置如下:</p><p><b> 4.6查詢子系統(tǒng)</b></p><p> 查詢功能實現(xiàn)管理員查詢所需的商品信息。在商品信息界面的快速查詢部分,管理員可以根據(jù)商品編號、商品名稱、供應(yīng)商編號、商品分類來查詢相應(yīng)的商品信息。界面設(shè)
39、置同上。</p><p> 4.7口令更改子系統(tǒng)</p><p> 口令更改功能實現(xiàn)了員工更改自己的口令,在更改口令時,要求用戶輸入舊口令、新口令和確認(rèn)新口令,用戶必須輸入正確的舊口令和兩次相同的新口令,如果輸入的舊口令不正確,則系統(tǒng)會彈出錯誤警告告訴用戶舊口令錯誤,請用戶重新輸入舊口令。兩樣,如果兩次新口令不一致,也會彈出警告窗口,提醒用戶兩次新口令不一樣,請重新輸入兩次新口令。最后
40、,點擊“確認(rèn)”就完成口令更改了。</p><p> 4.8員工信息維護子系統(tǒng)</p><p> 員工信息維護功能實現(xiàn)了管理員修改員工的信息。這也要求先用管理員用戶名和口令登錄,點擊“增加”后,數(shù)據(jù)窗口會自動插入新的一行,管理員在數(shù)據(jù)窗口中輸入員工的用戶名和口令后按“保存”就完成增加員工信息的功能了。同樣,要刪除一個員工的信息只要先選中這個員工的信息,按“刪除”后,這個員工的信息就在數(shù)據(jù)
41、窗口中刪除了,再點擊“保存”就可以了。</p><p><b> 4.9幫助子系統(tǒng)</b></p><p> 任何一個系統(tǒng)都會有幫助系統(tǒng),它用來解決用戶的一些疑問,如用戶對系統(tǒng)的功能及一些功能的使用方面可能有疑問,這時,可參考幫助系統(tǒng)提供的信息,能有效的給用戶提供幫助。本系統(tǒng)的幫助系統(tǒng)對每一個子系統(tǒng)的功能及使用方法都有介紹,如用戶有疑問或參考。</p>
42、<p> 第五章 各功能模塊的部分源代碼</p><p><b> 主界面代碼:</b></p><p> procedure TFMMAIN.BitBtn1Click(Sender: TObject);</p><p><b> begin</b></p><p> FMS
43、PXXB.SHOW;</p><p><b> end;</b></p><p> ?。?dāng)點擊商品信息按紐時調(diào)用show方法打開商品信息管理界面。</p><p> procedure TFMMAIN.BitBtn2Click(Sender: TObject);</p><p><b> begin&l
44、t;/b></p><p> FMGYSB.Show;</p><p><b> end;</b></p><p> ?。?dāng)點擊供應(yīng)商信息按紐時調(diào)用show方法打開供應(yīng)商信息管理界面。</p><p> procedure TFMMAIN.BitBtn3Click(Sender: TObject);<
45、/p><p><b> begin</b></p><p> FMJH.Show;</p><p><b> end;</b></p><p> ?。?dāng)點擊進貨作業(yè)按紐時調(diào)用show方法打開進貨作業(yè)界面。</p><p> procedure TFMMAIN.BitBt
46、n4Click(Sender: TObject);</p><p><b> begin</b></p><p> FMXSB.SHOW;</p><p><b> end;</b></p><p> ?。?dāng)點擊銷售作業(yè)按紐時調(diào)用show方法打開商品銷售界面。</p><
47、p><b> 入庫子系統(tǒng)</b></p><p> procedure TFMJH.BitBtn2Click(Sender: TObject);</p><p><b> VAR</b></p><p> LOC1:BOOLEAN;</p><p> LOC2:BOOLEAN;<
48、;/p><p><b> N:REAL;</b></p><p><b> Na:REAL;</b></p><p> STR1:STRING;</p><p><b> begin</b></p><p> IF (EDIT1.Text='
49、;') OR (EDIT2.Text='') THEN</p><p><b> BEGIN</b></p><p> SHOWMESSAGE('請輸入商品編號和進貨數(shù)量!');</p><p><b> ABORT;</b></p><p><b
50、> END;</b></p><p> LOC1:=FMSPXXBD.TSPXXB.Locate('SPNO',EDIT1.Text,[LOCASEINSENSITIVE]);</p><p> IF LOC1=TRUE THEN</p><p><b> BEGIN</b></p>&l
51、t;p> FMSPXXBD.TSPXXB.Edit;</p><p> FMSPXXBD.TSPXXB.FieldByName('BDKCL').Value:=FMSPXXBD.TSPXXB.FieldByName('BDKCL').Value+STRTOINT(EDIT2.Text);</p><p> FMSPXXBD.TSPXXB.Post
52、;</p><p> SHOWMESSAGE('新增商品數(shù)量成功!');</p><p><b> END;</b></p><p> IF LOC1=FALSE THEN</p><p><b> BEGIN</b></p><p> IF (ED
53、IT1.Text='') OR (EDIT2.Text='') OR (EDIT3.Text='') OR (EDIT4.Text='') OR (EDIT5.Text='') OR (EDIT6.Text='') OR (EDIT7.Text='') OR (EDIT8.Text='') OR (EDIT9.
54、Text='') OR (EDIT10.Text='') OR (EDIT11.Text='') OR (EDIT12.Text='') THEN</p><p><b> BEGIN</b></p><p> SHOWMESSAGE('新商品!請輸入完全信息!');</p>
55、;<p><b> abort;</b></p><p><b> END ELSE</b></p><p><b> BEGIN</b></p><p> FMSPXXBD.TSPXXB.InsertRecord([EDIT1.Text,STRTOINT(EDIT2.Text)
56、,EDIT3.Text,STRTOFLOAT(EDIT4.Text),Edit6.TEXT,EDIT7.Text,STRTOFLOAT(EDIT8.Text),EDIT9.Text,EDIT10.Text,EDIT11.Text,EDIT12.Text]);</p><p> SHOWMESSAGE('新增商品成功!');</p><p><b> END;&
57、lt;/b></p><p><b> END;</b></p><p><b> BEGIN</b></p><p> LOC2:=FMJHD.TJHZB.Locate('SPNO',EDIT1.Text,[LOCASEINSENSITIVE]);</p><p>
58、IF LOC2=FALSE THEN</p><p><b> BEGIN</b></p><p> FMJHD.TJHZB.Active:=TRUE;</p><p> FMSPXXBD.TSPXXB.Active:=TRUE;</p><p> FMJHD.TJHZB.InsertRecord([EDIT1.
59、Text,STRTOINT(EDIT2.Text),EDIT3.Text,EDIT5.Text,Memo1.Text]);</p><p> FMSPXXBD.TSPXXB.FindKey([EDIT1.Text]);</p><p> N:=FMSPXXBD.TSPXXB.FieldByName('MORCB').AsFloat;</p><p&g
60、t; STR1:=FMSPXXBD.TSPXXB.FieldByName('SPNAM').AsString;</p><p> FMJHD.TJHZB.FindKey([EDIT1.Text]);</p><p> FMJHD.TJHZB.Edit;</p><p> FMJHD.TJHZB.FieldByName('JHXJ
61、9;).AsFloat:=STRTOFLOAT(Edit2.Text)*N;</p><p> FMJHD.TJHZB.FieldByName('SPNAM').Value:=STR1;</p><p> FMJHD.TJHZB.Post;</p><p><b> END;</b></p><p>
62、; IF LOC2=True THEN</p><p><b> BEGIN</b></p><p> FMJHD.TJHZB.Active:=TRUE;</p><p> FMSPXXBD.TSPXXB.Active:=TRUE;</p><p> FMSPXXBD.TSPXXB.FindKey([EDIT1
63、.Text]);</p><p> Na:=FMSPXXBD.TSPXXB.FieldByName('MORCB').AsFloat;</p><p> FMJHD.TJHZB.FindKey([EDIT1.Text]);</p><p> FMJHD.TJHZB.Edit;</p><p> FMJHD.TJHZB.
64、FieldByName('JHNUM').Value:=FMJHD.TJHZB.FieldByName('JHNUM').Value+STRTOINT(EDIT2.Text);</p><p> FMJHD.TJHZB.FieldByName('JHXJ').AsFloat:=STRTOFLOAT(Edit2.Text)*Na+FMJHD.TJHZB.FieldB
65、yName('JHXJ').Value;</p><p><b> END;</b></p><p><b> END;</b></p><p> ?。?dāng)點擊存盤按紐時,先檢查商品編號和商品數(shù)量是否為空,為空就輸出消息'請輸入商品編號和進貨數(shù)量!',不為空就檢查商品信息表中是否有記錄用
66、的是Locate(),有就直接存盤增加庫存量,沒有就要求輸入完整的信息再存盤。</p><p><b> 銷售子系統(tǒng)</b></p><p> procedure TFMXSB.BitBtn2Click(Sender: TObject);</p><p><b> VAR</b></p><p&g
67、t; LOC3:BOOLEAN;</p><p> LOC4:BOOLEAN;</p><p> LOCOP:TLOCATEOPTIONS;</p><p><b> Nb:REAL;</b></p><p><b> Nc:REAL;</b></p><p>
68、STR2:STRING;</p><p><b> begin</b></p><p> IF (EDIT1.Text='') OR (EDIT2.Text='') THEN</p><p><b> BEGIN</b></p><p> SHOWMESSAG
69、E('請輸入商品編號和數(shù)量!');</p><p><b> ABORT;</b></p><p><b> END;</b></p><p> LOC3:=FMSPXXBD.TSPXXB.Locate('SPNO',EDIT1.Text,LOCOP);</p><
70、p> IF LOC3=TRUE THEN</p><p><b> BEGIN</b></p><p> FMSPXXBD.TSPXXB.Edit;</p><p> FMSPXXBD.TSPXXB.FieldByName('BDKCL').Value:=FMSPXXBD.TSPXXB.FieldByName(
71、39;BDKCL').Value-STRTOINT(EDIT2.Text);</p><p> FMSPXXBD.TSPXXB.Post;</p><p><b> END;</b></p><p> IF LOC3=FALSE THEN</p><p><b> BEGIN</b>
72、</p><p> SHOWMESSAGE('無此商品!');</p><p><b> abort;</b></p><p><b> END;</b></p><p> /////////////////////////////////////</p>&l
73、t;p> LOC4:=FMXSBD.TXSB.Locate('SPNO',EDIT1.Text,LOCOP);</p><p><b> BEGIN</b></p><p> IF LOC4=FALSE THEN</p><p><b> BEGIN</b></p><p&
74、gt; FMXSBD.TXSB.Active:=TRUE;</p><p> FMSPXXBD.TSPXXB.Active:=TRUE;</p><p> FMXSBD.TXSB.InsertRecord([EDIT1.Text,STRTOINT(EDIT2.Text),EDIT3.Text]);</p><p> FMSPXXBD.TSPXXB.FindK
75、ey([EDIT1.Text]);</p><p> STR2:=FMSPXXBD.TSPXXB.FieldByName('SPNAM').AsString;</p><p> Nb:=FMSPXXBD.TSPXXB.FieldByName('MORCB').AsFloat;</p><p> FMXSBD.TXSB.FindK
76、ey([EDIT1.Text]);</p><p> FMXSBD.TXSB.Edit;</p><p> FMXSBD.TXSB.FieldByName('XSXJ').AsFloat:=STRTOFLOAT(Edit2.Text)*Nb;</p><p> FMXSBD.TXSB.FieldByName('SPNAM').V
77、alue:=STR2;</p><p> FMXSBD.TXSB.FieldByName('BZJG').Value:=Nb;</p><p> FMXSBD.TXSB.Post;</p><p><b> END;</b></p><p> IF LOC4=True THEN</p>
78、<p><b> BEGIN</b></p><p> FMXSBD.TXSB.Active:=TRUE;</p><p> FMSPXXBD.TSPXXB.Active:=TRUE;</p><p> FMSPXXBD.TSPXXB.FindKey([EDIT1.Text]);</p><p>
79、 Nc:=FMSPXXBD.TSPXXB.FieldByName('MORCB').AsFloat;</p><p> FMXSBD.TXSB.FindKey([EDIT1.Text]);</p><p> FMXSBD.TXSB.Edit;</p><p> FMXSBD.TXSB.FieldByName('SPNUM').V
80、alue:=FMXSBD.TXSB.FieldByName('SPNUM').Value+STRTOINT(EDIT2.Text);</p><p> FMXSBD.TXSB.FieldByName('XSXJ').AsFloat:=STRTOFLOAT(Edit2.Text)*Nc+FMXSBD.TXSB.FieldByName('XSXJ').Value;&l
81、t;/p><p><b> END;</b></p><p><b> END;</b></p><p> ?。邳c擊存盤按紐后,將該商品的庫存量減少。</p><p><b> 3.查詢子系統(tǒng)</b></p><p> procedure TFM
82、SPXXB.BitBtn2Click(Sender: TObject);</p><p><b> begin</b></p><p> WITH FMSPXXBD.QSPXXB DO</p><p><b> BEGIN</b></p><p><b> CLOSE;</b
83、></p><p> SQL.Clear;</p><p> SQL.Add('SELECT * FROM SPXXB');</p><p> SQL.Add('WHERE SPNO IS NOT NULL');</p><p> SQL.Add('AND BDKCL<=SAFCL&
84、#39;);</p><p> SQL.Add('ORDER BY BDKCL,SAFCL');</p><p><b> OPEN;</b></p><p><b> END;</b></p><p><b> end;</b></p>
85、<p> 點擊安存不足按紐執(zhí)行上述代碼,Delphi對SQL的支持可以體現(xiàn)在Tquery組件上,Tquery組件有一個SQL屬性可以在其中添加SQL語句,上面代碼中的SQL語句就是在商品信息表中查詢本店庫存量小于安全存量的記錄并按BDKCL,SAFCL排序</p><p> 第六章 設(shè)計中遇到的問題和解決辦法</p><p> 一開始建立數(shù)據(jù)庫時,沒有把開發(fā)系統(tǒng)時將會遇到的
86、一些問題考慮詳細(xì)。導(dǎo)致在數(shù)據(jù)庫建立好之后,在以后的系統(tǒng)設(shè)計過程中發(fā)現(xiàn)當(dāng)時數(shù)據(jù)庫建立得不夠完全,還要不斷添加一些表。還有就是一些已建立好的表其中有的變量類型不對,所以又要修改,因此浪費了很多寶貴的時間。后來,仔細(xì)分析了一下系統(tǒng),將開發(fā)中會遇到的問題都考慮清楚了,才建立數(shù)據(jù)庫。這樣,以后就不要改動數(shù)據(jù)庫,為設(shè)計節(jié)約了很多時間。</p><p> 一開始做的時候,對數(shù)據(jù)窗口的操作及編程語言還了解不夠透徹,因此在實現(xiàn)數(shù)
87、據(jù)窗口之間數(shù)據(jù)傳遞的功能遇到了很大的困難。后來,經(jīng)過查詢資料學(xué)習(xí),對它有了較多的了解,做設(shè)計的時候也加快了進度。</p><p> 在入庫的時候,原來庫里有的只要相應(yīng)增加這個商品的庫存量,這個功能實現(xiàn)了,但原來庫里沒有的就要增加這種商品的一系列信息,這個功能一直困擾我,但現(xiàn)在解決了。</p><p> 在銷售商品時,商品銷售總額的計算這個問題還沒解決,正在想辦法,以求盡快解決。<
88、/p><p><b> 第七章 自我評價</b></p><p><b> 7.1系統(tǒng)的特點</b></p><p> 本系統(tǒng)是采用Delphi6.0開發(fā),該系統(tǒng)由四個主要的功能來實現(xiàn)的。(1)入庫功能。本功能實現(xiàn)了將進來的貨品錄入到庫存中,使之在庫存中有這些商品的記錄,在入庫的同時,要修改庫存量。</p>
89、<p> ?。?)銷售功能。本功能實現(xiàn)了出售商品的功能,在銷售商品的同時要減少庫存量。</p><p> ?。?)商品信息管理功能。本功能實現(xiàn)了將一天下來所有入庫和銷售的商品信息統(tǒng)計出來 ,有助于管理員查詢。</p><p> ?。?)查詢功能。本功能實現(xiàn)管理員可以根據(jù)自己需要查詢相應(yīng)的商品信息,管理員可根據(jù)商品代號和商品名來查詢。</p><p>&l
90、t;b> 7.1.1優(yōu)點</b></p><p> 本系統(tǒng)軟件具有統(tǒng)一的人機界面,這不至于會增加超市員工和管理員的負(fù)擔(dān),讓他們始終以一種輕松的感覺去思考和操作。該系統(tǒng)界面友好,輸出界面盡可能接近實際,以增加人機親和力。</p><p><b> 7.1.2缺點</b></p><p> 由于時間倉促,本軟件功能還不夠強
91、大,系統(tǒng)對實驗信息的操作還不夠完善,某些地方還存在問題,還有待于進一步改進。日期信息的存盤還沒有解決,正在想辦法。在銷售模塊還有缺陷,有些功能還沒有實現(xiàn),比如顧客給錢后的找零。</p><p><b> 結(jié) 論</b></p><p> 為期半個學(xué)期的設(shè)計生活很快就要過去,回憶這一段時間,我的感觸很深,由于是第一次開發(fā)一個很實用的管理系統(tǒng),而且是用一種以前我們不
92、太了解的語言,雖然以前學(xué)過,但涉及不多。所以開發(fā)起來有一定的難度,我們都感到肩上的壓力很大。隨著開發(fā)的進程,一個個問題都被克服了,這使我深深的體會到了學(xué)習(xí)的樂趣和運用的艱辛。</p><p> 首先,這次設(shè)計我覺得最大的收獲是軟件設(shè)計概念思想的建立。以前我們做一些小軟件的開發(fā)或課程設(shè)計時,常常是沒有明確的思路,就開始編寫代碼,當(dāng)遇到問題是才發(fā)現(xiàn)是由于剛開始考慮的不夠周到所致。通過這次設(shè)計我發(fā)現(xiàn),軟件設(shè)計前工作準(zhǔn)
93、備的重要性。</p><p> 在做開題報告的過程中,我們通過主動的系統(tǒng)調(diào)查、系統(tǒng)分析,完成系統(tǒng)的結(jié)構(gòu)設(shè)計,數(shù)據(jù)庫規(guī)劃等工作,這對我們將要開發(fā)的系統(tǒng)有了更深的了解,為下一步系統(tǒng)開發(fā)做好了準(zhǔn)備。這使我們建立了軟件設(shè)計的正確概念,為今后繼續(xù)開發(fā)系統(tǒng)奠定了基礎(chǔ)。</p><p> 這次我做的課題是《超市銷售系統(tǒng)》,我采用Delphi 6.0開發(fā)工具來實現(xiàn)。由于以前我對它并不太了解,所以為了更
94、好的開發(fā)這項系統(tǒng),我又重新拿起教材,從最基本的學(xué)起。由于有了前面的準(zhǔn)備工作,這次我對系統(tǒng)的開發(fā)有了明確的思路。可是設(shè)計的過程并沒有原來想象的那么輕松。有時候要實現(xiàn)一個小的功能,我就要調(diào)試好長時間甚至幾天。最典型的就是在設(shè)計本管理系統(tǒng)的數(shù)據(jù)庫之前沒有經(jīng)過詳細(xì)的考慮,所以一開始建立的數(shù)據(jù)庫做到后來時就覺得有很多有合適,于是只能重新設(shè)計數(shù)據(jù)庫,然后與之相關(guān)聯(lián)的數(shù)據(jù)窗口也要改變,浪費了很多寶貴的時間。后來指導(dǎo)老師給我們提供了好多寶貴的建議,再加
95、上同學(xué)的幫助和我自身的努力下,終于把數(shù)據(jù)庫設(shè)計好了。這使我們感受到了程序調(diào)試成功后的成就感和無比的喜悅感。</p><p> 設(shè)計過程中遇到的艱辛讓我感覺到以前學(xué)習(xí)的不足。通過問題的交流我也感覺到,討論會是問題清晰化,更容易發(fā)現(xiàn)問題,解決問題,也積累了編程經(jīng)驗。同時我還認(rèn)識到,無論什么方面的編程,都要經(jīng)過不斷的實踐積累,而不是一蹴而就的。</p><p> 三年的學(xué)習(xí)不算很短,也不算很
96、長。計算機知識的運用也不止一次了,但我覺得這次畢業(yè)設(shè)計才是一種真正的實戰(zhàn)。從開始到結(jié)束,老師只能在軟件開發(fā)的整體設(shè)計和思路上給我們指導(dǎo),但如何用語言把該軟件給開發(fā)出來,要完全由自己去完成,這對于我們來說是一種鍛煉更是一種挑戰(zhàn),這次畢業(yè)設(shè)計為我們今后的開發(fā)工作奠定了基礎(chǔ),積累了經(jīng)驗。</p><p><b> 致 謝</b></p><p> 在完成設(shè)計之際,我首
97、先向我們的指導(dǎo)老師——xx老師表示衷心的感謝。在我們設(shè)計期間,xx老師給了我們很大的幫助和支持,給我們提出了大量的具有實用價值的寶貴意見,幫我們理順設(shè)計的思路,給我們批閱畢業(yè)設(shè)計任務(wù)書、開題報告和畢業(yè)論文,并隨時給我提出一些新的要求,使的我的系統(tǒng)更加完善和符合用戶的要求,這使我較好的完成了設(shè)計。</p><p> 在這次畢業(yè)設(shè)計過程中,我受益匪淺。體會到了如何把自己所學(xué)到的知識與實際結(jié)合起來,懂得了如何靈活運用
98、自己所掌握的理論知識。通過這次畢業(yè)設(shè)計使我的動手能力得以增強。在專業(yè)知識方面,我學(xué)到了很多新東西,特別在Delphi方面,有了很大的提高。我體會到了軟件開發(fā)不僅僅是編程,它需要方方面面的考慮,同時也必須具備比較全面的知識。就像我們生活中的每一件事都需要有始有終,認(rèn)真對待。</p><p> 在設(shè)計過程中,我也遇到了許多的困難,在老師和同學(xué)的幫助下,都一一克服了。這同時也培養(yǎng)了我的細(xì)心和耐心,樹立了一種科學(xué)的態(tài)度
99、。這對我以后的工作和學(xué)習(xí)有很大的幫助和指導(dǎo)。同時,我也認(rèn)識到本身還存在很多不足的地方,還需要不斷地努力來充實自己完善自己,只有這樣我們才能學(xué)無止境,以求得更大的發(fā)展。</p><p> 在這向那些幫助過我的老師,同學(xué),以及圖書館的工作人員表示我的感激。</p><p><b> 參 考 文 獻</b></p><p> [1] 飛思科技
100、產(chǎn)品研發(fā)中心. SQL Server 2000數(shù)據(jù)庫和數(shù)據(jù)倉庫.電子工業(yè)出版社出版, 2001年6月;</p><p> [2] 王志偉、黃超. Delphi 企業(yè)經(jīng)營管理系統(tǒng)開發(fā)實例導(dǎo)航.人民郵電出版社出版, 2003年6月;</p><p> [3] 張春林. Delphi6 程序設(shè)計導(dǎo)學(xué). 清華大學(xué)出版社出版,2004年4月;</p><p>
101、[4] 段興、唐一丁、李寶. Delphi6 數(shù)據(jù)庫實用程序設(shè)計100例. 人民郵電出版社出版,2002年10月;</p><p> [5] 清宏計算機工作室.Delphi編程技巧網(wǎng)絡(luò)與數(shù)據(jù)庫篇.機械工業(yè)出版社出版,2001年4月;</p><p> [6] 狄宏運,陳戰(zhàn)林,趙宗福,鐘顯宏. Delphi6組件大全. 電子工業(yè)出版社出版,2002年7月.</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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- delphisql超市銷售系統(tǒng)畢業(yè)設(shè)計
- 畢業(yè)設(shè)計---超市銷售系統(tǒng)的設(shè)計與實現(xiàn)
- 超市銷售管理系統(tǒng)設(shè)計與實現(xiàn)畢業(yè)設(shè)計
- 超市銷售管理信息系統(tǒng)畢業(yè)設(shè)計
- 畢業(yè)設(shè)計---超市商品銷售管理系統(tǒng)設(shè)計與實現(xiàn)
- 畢業(yè)設(shè)計(論文)超市銷售管理系統(tǒng)的設(shè)計與實現(xiàn)
- 超市管理系統(tǒng)畢業(yè)設(shè)計---超市管理系統(tǒng)
- 超市管理系統(tǒng)畢業(yè)設(shè)計
- 畢業(yè)設(shè)計---超市管理系統(tǒng)
- 計算機畢業(yè)設(shè)計29delphi超市銷售管理系統(tǒng)設(shè)計
- 畢業(yè)設(shè)計----超市收費系統(tǒng)
- 畢業(yè)設(shè)計----超市管理系統(tǒng)
- 計算機畢業(yè)設(shè)計29delphi超市銷售管理系統(tǒng)設(shè)計
- 計算機畢業(yè)設(shè)計29Delphi超市銷售管理系統(tǒng)設(shè)計.doc
- 計算機畢業(yè)設(shè)計29Delphi超市銷售管理系統(tǒng)設(shè)計.doc
- 超市管理系統(tǒng)畢業(yè)設(shè)計論文
- 超市管理系統(tǒng)畢業(yè)設(shè)計3
- 畢業(yè)設(shè)計--在線超市管理系統(tǒng)
- 超市管理系統(tǒng)畢業(yè)設(shè)計論文
- 簡易超市收銀系統(tǒng)畢業(yè)設(shè)計
評論
0/150
提交評論