




已閱讀5頁,還剩34頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第一章 總論1.1 Delphi 7.0簡介Delphi7.0是著名的Borland(現(xiàn)在已和Inprise合并)公司開發(fā)的可視化軟件開發(fā)工具?!罢嬲某绦騿T用c,聰明的程序員用Delphi”,這句話是對Delphi最經(jīng)典、最實(shí)在的描述。Delphi被稱為第四代編程語言,它具有簡單、高效、功能強(qiáng)大的特點(diǎn)。和VC相比,Delphi更簡單、更易于掌握,而在功能上卻絲毫不遜色;和VB相比,Delphi則功能更強(qiáng)大、更實(shí)用。可以說Delphi同時(shí)兼?zhèn)淞薞C功能強(qiáng)大和VB簡單易學(xué)的特點(diǎn)。它一直是程序員至愛的編程工具。Delphi具有以下的特性:基于窗體和面向?qū)ο蟮姆椒?,高速的編譯器,強(qiáng)大的數(shù)據(jù)庫支持,與Windows編程緊密結(jié)合,強(qiáng)大而成熟的組件技術(shù)。但最重要的還是ObjectPascal語言,它才是一切的根本。ObjectPascal語言是在Pascal語言的基礎(chǔ)上發(fā)展起來的,簡單易學(xué)。Delphi提供了各種開發(fā)工具,包括集成環(huán)境、圖像編輯(ImageEditor),以及各種開發(fā)數(shù)據(jù)庫的應(yīng)用程序,如DesktopDataBaseExpert等。除此之外,還允許用戶掛接其它的應(yīng)用程序開發(fā)工具,如Borland公司的資源編輯器(ResourseWorkshop)。在Delphi眾多的優(yōu)勢當(dāng)中,它在數(shù)據(jù)庫方面的特長顯得尤為突出:適應(yīng)于多種數(shù)據(jù)庫結(jié)構(gòu),從客戶機(jī)服務(wù)器模式到多層數(shù)據(jù)結(jié)構(gòu)模式;高效率的數(shù)據(jù)庫管理系統(tǒng)和新一代更先進(jìn)的數(shù)據(jù)庫引擎;最新的數(shù)據(jù)分析手段和提供大量的企業(yè)組件111專業(yè)的客戶/服務(wù)器開發(fā)工具客戶/服務(wù)器是一種將任務(wù)進(jìn)行分解,然后協(xié)同解決的計(jì)算模式??蛻舳说膽?yīng)用程序負(fù)責(zé)提出任務(wù)需求,服務(wù)器端的應(yīng)用程序則為客戶提供服務(wù),例如數(shù)據(jù)查詢、打印等。用Delphi7.0開發(fā)出的應(yīng)用程序能夠與數(shù)據(jù)庫服務(wù)器完美地協(xié)同工作,構(gòu)成客戶/服務(wù)器計(jì)算模式。112 面向?qū)ο蟮木幊淘贒elphi7.0中創(chuàng)建的窗口、菜單、數(shù)據(jù)窗口等都是對象。除了使用系統(tǒng)預(yù)先定義的對象外,開發(fā)人員可以自行構(gòu)造新的對象,擴(kuò)展系統(tǒng)的預(yù)定義對象,將各種對象有機(jī)地組合起來就構(gòu)成了Delphi應(yīng)用程序。113 Delphi和Object PascalObject Pascal是Delphi的語言基礎(chǔ),Delphi是Object Pascal的加速引擎。軟件開發(fā)工具在任何發(fā)展階段都具有一個永遠(yuǎn)不變的目標(biāo):提高軟件生產(chǎn)力。換句話說,就是最大程度為開發(fā)者提供方便,在最短時(shí)間內(nèi)建立應(yīng)用程序。例如,為了降低代碼編寫難度(對于近幾年來才入門的程序員,匯編語言是晦澀難懂的,更不要說去編寫代碼了),最早的C語言和Pascal語言出現(xiàn)了;為了提高代碼效率,面向?qū)ο蠹夹g(shù)應(yīng)用到編程語言中;為了提高開發(fā)效率,可視化開發(fā)工具出現(xiàn)了;為了實(shí)現(xiàn)跨平臺應(yīng)用,Delphi6和Kylix出現(xiàn)了。Delphi的精華是VCL。離開了VCL,開發(fā)者又回到了刀耕火種的年代。你可以試著將你編寫的單元中的uses子句中由Delphi自動添加的如SysUtils、Forms等單元名刪除,你會發(fā)現(xiàn)你編寫的代碼無法編譯。VCL封裝了Windows消息機(jī)制,因此開發(fā)者可以方便地通過屬性、事件、方法來控制對象;VCL封裝了數(shù)據(jù)庫游標(biāo)機(jī)制(準(zhǔn)確地說是BDE封裝的),因此用Delphi進(jìn)行數(shù)據(jù)庫應(yīng)用開發(fā)的開發(fā)者完全可以對關(guān)系數(shù)據(jù)庫的游標(biāo)機(jī)制一無所知。Delphi已經(jīng)充分提供了積木元件(組件、類、標(biāo)準(zhǔn)例程),而開發(fā)者只需要加以利用就能夠快速實(shí)現(xiàn)構(gòu)想(應(yīng)用程序)??梢?,快速應(yīng)用開發(fā)(RAD)對于Delphi來說是當(dāng)之無愧的114 Delphi和SQLSQL語言作為關(guān)系數(shù)據(jù)庫管理系統(tǒng)中的一種通用的結(jié)構(gòu)查詢語言, 已經(jīng)被眾多的數(shù)據(jù)庫管理系統(tǒng)所采用,如ORACLE、Sybase、Informix等數(shù)據(jù)庫管理系統(tǒng),它們都支持SQL 語言。Delphi與使用SQL語言的數(shù)據(jù)庫管理系統(tǒng)兼容,在使用Delphi開發(fā)數(shù)據(jù)庫應(yīng)用程序時(shí),我們可以使用SQL語言編程,支持SQL編程是Delphi的一個重要特征,這也是體現(xiàn)Delphi作為一個強(qiáng)大的數(shù)據(jù)庫應(yīng)用開發(fā)工具的一個重要標(biāo)志。115 Delphi的數(shù)據(jù)庫特性及功能簡介直到目前為止,計(jì)算機(jī)軟件的開發(fā)分為兩個不同的體系,其中一個體系是使用傳統(tǒng)的程序設(shè)計(jì)語言(如Pascal、Basic和C等)開發(fā)數(shù)值控制、數(shù)值運(yùn)算等軟件,圍繞它們的重點(diǎn)是算術(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ù)庫語言進(jìn)行傳統(tǒng)的算術(shù)編程,雖然也能完成相應(yīng)的功能,但是其編程過程可能極為復(fù)雜。如果使用傳統(tǒng)的編程語言進(jìn)行數(shù)據(jù)庫編程,通過調(diào)用專用的數(shù)據(jù)庫應(yīng)用程序接口函數(shù)和過程,利用這些函數(shù)和過程提供的功能,可能也能做得比較完善,但這做起來大多是極其困難的。而Delphi結(jié)合了兩個體系的優(yōu)點(diǎn),它結(jié)合了傳統(tǒng)的編程語言O(shè)bject Pascal和數(shù)據(jù)庫語言的強(qiáng)大功能, 它即可以用于傳統(tǒng)的算術(shù)編程又可以用于數(shù)據(jù)庫編程,特別是Delphi具有強(qiáng)大的數(shù)據(jù)庫功能,利用Delphi的數(shù)據(jù)庫工具,我們根本不需要編寫任何Object Pascal代碼便可以創(chuàng)建一個簡單的數(shù)據(jù)庫應(yīng)用。116 Delphi對多種數(shù)據(jù)庫管理系統(tǒng)的支持 Delphi在Window3.1以上版本的系統(tǒng)環(huán)境下運(yù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ù)庫。Delphi的客戶/服務(wù)器版本包括Borland SQL Link, 它能直接訪問 ORACLE 、 SyBase 和Microsoft SQL Server,Informix以及InterBase數(shù)據(jù)庫服務(wù)器。Delphi可以訪問多種數(shù)據(jù)庫管理系統(tǒng)的數(shù)據(jù)庫,憑借窗體(Forms)和報(bào)表(Reports),BDE(Borland Database Engine)可以訪問諸如Paradox、dBASE、本地InterBase 服務(wù)器的數(shù)據(jù)庫,也可以訪問遠(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ù)庫。117 異常處理與程序調(diào)試在應(yīng)用程序開發(fā)中如何檢測、處理程序的運(yùn)行錯誤是一個很重要的問題。在 Delphi 的集成開發(fā)環(huán)境( IDE )中提供了一個完善的內(nèi)置調(diào)試器,可以幫助你發(fā)現(xiàn)大部分程序錯誤。但并不是所有的錯誤都可以被發(fā)現(xiàn),而且當(dāng)程序涉及到與外設(shè)的數(shù)據(jù)交換或操作外設(shè),如要求用戶輸入、讀寫磁盤等時(shí),錯誤的發(fā)生是程序無法控制的,如輸入非法字符、磁盤不能讀寫等。這些情況不僅會導(dǎo)致應(yīng)用程序異常中止而且可能引起系統(tǒng)的崩潰。針對這些問題,Delphi同時(shí)提供了一套強(qiáng)大的異常處理機(jī)制。巧妙地利用它,可以使你的程序更為強(qiáng)健,使用更為友好。第二章 系統(tǒng)設(shè)計(jì)21 系統(tǒng)功能分析超市銷售系統(tǒng)目前國內(nèi)外做得較多,比較成熟,這個系統(tǒng)是畢業(yè)生畢業(yè)前的最后一次模擬,對畢業(yè)生的軟件開發(fā)能力有很大幫助。本系統(tǒng)主要由以下幾個功能組成:商品入庫,用于將進(jìn)來的商品錄入到庫里。商品銷售,用于售貨員銷售商品。商品信息管理,現(xiàn)有庫存、庫存警報(bào)、商品報(bào)表三部分。查詢,管理員根據(jù)自己的需要進(jìn)行查詢,可按商品代號和商品名稱查詢??诹罡模糜趩T工更改自己的口令。員工信息維護(hù),用于管理員修改員工的信息。22系統(tǒng)功能模塊設(shè)計(jì) 根據(jù)系統(tǒng)功能要求可以將系統(tǒng)分解成幾個子系統(tǒng)模塊來分別設(shè)計(jì)應(yīng)用程序界面,超市銷售管理系統(tǒng)如圖所示:銷售子系統(tǒng)入庫子系統(tǒng)商品信息管理查詢子系統(tǒng)口令更改子系統(tǒng)員工信息維護(hù)子系統(tǒng)入庫子系統(tǒng)原庫存無原庫存有銷售子系統(tǒng)前臺銷售界面顧客清單商品信息管理現(xiàn)有庫存庫存警報(bào)商品信息報(bào)表查詢子系統(tǒng)顧客查詢管理員查詢23數(shù)據(jù)流程圖數(shù)據(jù)流程圖描繪了系統(tǒng)的邏輯模型,圖中沒有任何具體的物理元素,只是描繪信息在系統(tǒng)中的流動和處理情況。對數(shù)據(jù)流的分析,主要是整體數(shù)據(jù)流、單元模塊數(shù)據(jù)流。整體數(shù)據(jù)流概括為進(jìn)入計(jì)算機(jī)操作員系統(tǒng)的操作過程和用戶(各部門或個人)進(jìn)入系統(tǒng)的數(shù)據(jù)流向。 整體數(shù)據(jù)流:用戶通過密碼進(jìn)入系統(tǒng),分別對上述幾大功能逐一實(shí)現(xiàn),其中涉及到模塊數(shù)據(jù)流分析。 根據(jù)上一節(jié)業(yè)務(wù)流程的分析以及業(yè)務(wù)流程圖我們可以得出系統(tǒng)的數(shù)據(jù)流程。 數(shù)據(jù)流圖圖例表示:數(shù)據(jù)的源點(diǎn)/終點(diǎn) 變換數(shù)據(jù)的處理數(shù)據(jù)存儲 數(shù)據(jù)流本系統(tǒng)各功能模塊的數(shù)據(jù)流程圖如下圖所示:入庫模塊流程圖:庫存原有入庫記錄新進(jìn)商品庫存原無庫存銷售模塊流程圖:銷 售銷售信息庫 存庫 存商品信息管理模塊流程圖:現(xiàn)有庫存報(bào)現(xiàn)有庫存庫存警報(bào)報(bào)庫存警報(bào)庫存進(jìn) 貨進(jìn)貨報(bào)表 查詢模塊流程圖:管理員查詢管理員查詢結(jié)果庫 存口令更改模塊流程圖:口令更改員工口令員工口令員工信息維護(hù)模塊流程圖:增加員工信息員工信息刪 除第三章 數(shù)據(jù)庫設(shè)計(jì)31 數(shù)據(jù)庫需求分析數(shù)據(jù)庫是信息管理的基礎(chǔ)。數(shù)據(jù)庫結(jié)構(gòu)直接關(guān)系到各種功能的實(shí)現(xiàn)和程序運(yùn)行的效率。進(jìn)行數(shù)據(jù)庫設(shè)計(jì)首先必須準(zhǔn)確了解與分析用戶需求(包括數(shù)據(jù)與處理)。需求分析是整個設(shè)計(jì)過程的基礎(chǔ),是最困難、最耗費(fèi)時(shí)間的一步。需求分析的結(jié)果是否準(zhǔn)確地反映了用戶的實(shí)際要求,將直接影響到后面各個階段的設(shè)計(jì),并影響到設(shè)計(jì)結(jié)果是否合理和實(shí)用。根據(jù)上一章的流程圖,可以列出以下各模塊記錄信息所需的數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu):1入庫信息管理入庫記錄:商品編號(SPNO)、商品名稱(SPNAM)、經(jīng)辦人員(JBREN)、進(jìn)貨數(shù)量(JHNUM)、進(jìn)貨小計(jì)(inprice)、備注(BEIZHU)2.銷售信息管理銷售記錄:商品編號(SPNO)、商品數(shù)量(SPNUM)、經(jīng)辦人員(JBREN)、商品名稱(SPNAM)、標(biāo)準(zhǔn)價(jià)格(BZJG)、銷售小計(jì)(XSXJ)3.商品信息管理商品信息記錄:商品編號(SPNO)、商品名稱(SPNAM)、本店庫存量(BDKCL)、默認(rèn)成本(MORCB)、供應(yīng)商編號(GYSNO)、商品分類(SPKIN)、安全存量(SAFCL)、商品規(guī)格(SPGG)、庫存單位(KCDW)、商品顏色(SPCOL)、商品尺寸(SPSIZ)、標(biāo)準(zhǔn)價(jià)格(BEIZHU BZJG)、會員價(jià)格(HYJG)、批發(fā)價(jià)格(PFJG)、備注(BEIZHU)4.員工信息管理員工信息:用戶名(user)、口令(password)32數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計(jì)概念模型是對信息世界的建模,所以概念模型應(yīng)該能夠方便、準(zhǔn)確的表示出信息世界中的常用概念。實(shí)體-關(guān)系模型(Entity-Relationship Module,簡稱E-R圖)是數(shù)據(jù)庫結(jié)構(gòu)設(shè)計(jì)常用的方法。E-R圖提供了表示實(shí)體、屬性和聯(lián)系的方法。實(shí)體型:用矩形表示,矩形框內(nèi)寫明實(shí)體名屬性:用橢圓型表示,并用無向邊與其相應(yīng)實(shí)體連接起來聯(lián)系:用菱形表示,菱形框內(nèi)寫明聯(lián)系名,并用無向邊與其有關(guān)實(shí)體連接起來,同時(shí)在邊旁邊標(biāo)上聯(lián)系的類型(1:1,1:n或m:n)。對象類型的組成成份可以抽象為實(shí)體的屬性。組成成份與對象之間是“is part of”的關(guān)系。實(shí)際上實(shí)體與屬性是相對而言的,很難有截然劃分的界限。同一事物,在一種應(yīng)用環(huán)境中作為“屬性”,在另一種環(huán)境中就必須作為“實(shí)體”。一般來說,在給定的應(yīng)用環(huán)境中,屬性不能再具有需要描述的性質(zhì)。即屬性必須是不可分的數(shù)據(jù)項(xiàng),不能再由另一些屬性組成。屬性不能與其它實(shí)體具有聯(lián)系。聯(lián)系只發(fā)生在實(shí)體之間。本系統(tǒng)中部分E-R圖如圖所示:本店庫存量安全存量庫存 包含 1:m商品編號商品名稱 入庫價(jià)格入庫查詢1:m 管理員 1:m入庫信息商品入庫數(shù)量銷售供應(yīng)商編號 1:m 銷售信息銷售價(jià)格銷售數(shù)量33數(shù)據(jù)庫結(jié)構(gòu)實(shí)現(xiàn) 商品信息表(SPXXB)結(jié)構(gòu):銷售信息表(XSB)結(jié)構(gòu):進(jìn)貨信息表(JHZB)結(jié)構(gòu):供應(yīng)商信息表(GYSB)結(jié)構(gòu): 第四章 詳細(xì)設(shè)計(jì)41登錄界面 為了提高系統(tǒng)的安全性,我們完全有理由相信,設(shè)置用戶以及密碼是必要的。用戶登錄界面很簡單,首先在用戶輸入框輸入用戶名,再對應(yīng)輸入密碼,程序?qū)⑴c用戶數(shù)據(jù)庫連接,確認(rèn)用戶是其中一員,并輸入了正確的密碼,然后進(jìn)入主界面,否則警告出錯,讓用戶重新輸入。界面設(shè)置如下:42主界面主窗口界面主要是完成系統(tǒng)功能模塊的劃分。超市銷售系統(tǒng)主窗口包括四個按紐,進(jìn)貨作業(yè)按紐、商品信息按紐、供應(yīng)商信息按紐、銷售作業(yè)按紐。界面設(shè)置如下:43入庫子系統(tǒng)商品入庫是將購進(jìn)的商品進(jìn)行入庫。在入庫時(shí)由入庫員將商品信息輸入到入庫信息表中,然后系統(tǒng)將入庫的商品的代號與庫存里的商品信息比較,如果能找到相同的代號,則說明庫存里有這種商品,只要相應(yīng)增加這種商品的庫存量。如果找不到,則說明原來庫存里沒有這種商品,則要增加這種商品的一系列信息,如商品代號、商品名稱、進(jìn)價(jià)等,界面設(shè)置如下:44銷售子系統(tǒng)商品銷售是將顧客購買的商品銷售出去。在銷售時(shí),由銷售員將顧客購買的商品代號輸入到銷售窗口中,系統(tǒng)自動根據(jù)商品代號把這種商品的相應(yīng)信息反饋到數(shù)據(jù)窗口中,每一種商品都有一個小計(jì),最后算出總計(jì)。最后點(diǎn)擊“打印”便可打印出顧客清單了。銷售界面界面設(shè)置如下:45商品信息管理子系統(tǒng)商品信息管理子系統(tǒng)包括三個小的基本功能,即:1 現(xiàn)有庫存,本功能是統(tǒng)計(jì)現(xiàn)在庫存中所有的商品的信息,包括商品的代號,商品名,進(jìn)價(jià),售價(jià),還有庫存量等,主要是要庫存量,因?yàn)楹竺娴膸齑婢瘓?bào)和進(jìn)貨報(bào)表都要建立在現(xiàn)在庫存量的基礎(chǔ)上。同樣,點(diǎn)擊“打印”按鈕便可打印現(xiàn)有商品的庫存信息了。2 庫存警報(bào),本功能是根據(jù)現(xiàn)有商品的庫存量來判斷哪種商品的庫存量少于最小庫存量,這就能提示管理員哪些商品需要進(jìn)貨。一開始打開窗口時(shí),數(shù)據(jù)窗口內(nèi)也是顯示所有的庫存商品信息,通過點(diǎn)擊“安存不足”按鈕便可查詢庫存量過少的商品信息了。3 進(jìn)貨報(bào)表,本功能是顯示要進(jìn)貨的商品的信息,它是建立在庫存警報(bào)窗口中的過少的商品的信息上的。點(diǎn)擊“打印安存不足”便可打印出進(jìn)貨報(bào)表,供進(jìn)貨員去進(jìn)貨。其功能界面設(shè)置如下:46查詢子系統(tǒng)查詢功能實(shí)現(xiàn)管理員查詢所需的商品信息。在商品信息界面的快速查詢部分,管理員可以根據(jù)商品編號、商品名稱、供應(yīng)商編號、商品分類來查詢相應(yīng)的商品信息。界面設(shè)置同上。47口令更改子系統(tǒng)口令更改功能實(shí)現(xiàn)了員工更改自己的口令,在更改口令時(shí),要求用戶輸入舊口令、新口令和確認(rèn)新口令,用戶必須輸入正確的舊口令和兩次相同的新口令,如果輸入的舊口令不正確,則系統(tǒng)會彈出錯誤警告告訴用戶舊口令錯誤,請用戶重新輸入舊口令。兩樣,如果兩次新口令不一致,也會彈出警告窗口,提醒用戶兩次新口令不一樣,請重新輸入兩次新口令。最后,點(diǎn)擊“確認(rèn)”就完成口令更改了。48員工信息維護(hù)子系統(tǒng)員工信息維護(hù)功能實(shí)現(xiàn)了管理員修改員工的信息。這也要求先用管理員用戶名和口令登錄,點(diǎn)擊“增加”后,數(shù)據(jù)窗口會自動插入新的一行,管理員在數(shù)據(jù)窗口中輸入員工的用戶名和口令后按“保存”就完成增加員工信息的功能了。同樣,要刪除一個員工的信息只要先選中這個員工的信息,按“刪除”后,這個員工的信息就在數(shù)據(jù)窗口中刪除了,再點(diǎn)擊“保存”就可以了。49幫助子系統(tǒng)任何一個系統(tǒng)都會有幫助系統(tǒng),它用來解決用戶的一些疑問,如用戶對系統(tǒng)的功能及一些功能的使用方面可能有疑問,這時(shí),可參考幫助系統(tǒng)提供的信息,能有效的給用戶提供幫助。本系統(tǒng)的幫助系統(tǒng)對每一個子系統(tǒng)的功能及使用方法都有介紹,如用戶有疑問或參考。第五章 各功能模塊的部分源代碼主界面代碼:procedure TFMMAIN.BitBtn1Click(Sender: TObject);beginFMSPXXB.SHOW;end;當(dāng)點(diǎn)擊商品信息按紐時(shí)調(diào)用show方法打開商品信息管理界面。procedure TFMMAIN.BitBtn2Click(Sender: TObject);beginFMGYSB.Show;end;當(dāng)點(diǎn)擊供應(yīng)商信息按紐時(shí)調(diào)用show方法打開供應(yīng)商信息管理界面。procedure TFMMAIN.BitBtn3Click(Sender: TObject);beginFMJH.Show;end;當(dāng)點(diǎn)擊進(jìn)貨作業(yè)按紐時(shí)調(diào)用show方法打開進(jìn)貨作業(yè)界面。procedure TFMMAIN.BitBtn4Click(Sender: TObject);begin FMXSB.SHOW;end;當(dāng)點(diǎn)擊銷售作業(yè)按紐時(shí)調(diào)用show方法打開商品銷售界面。 1 入庫子系統(tǒng)procedure TFMJH.BitBtn2Click(Sender: TObject);VARLOC1:BOOLEAN;LOC2:BOOLEAN;N:REAL;Na:REAL;STR1:STRING;beginIF (EDIT1.Text=) OR (EDIT2.Text=) THEN BEGIN SHOWMESSAGE(請輸入商品編號和進(jìn)貨數(shù)量!); ABORT; END;LOC1:=FMSPXXBD.TSPXXB.Locate(SPNO,EDIT1.Text,LOCASEINSENSITIVE);IF LOC1=TRUE THEN BEGIN FMSPXXBD.TSPXXB.Edit; FMSPXXBD.TSPXXB.FieldByName(BDKCL).Value:=FMSPXXBD.TSPXXB.FieldByName(BDKCL).Value+STRTOINT(EDIT2.Text); FMSPXXBD.TSPXXB.Post; SHOWMESSAGE(新增商品數(shù)量成功!); END;IF LOC1=FALSE THEN BEGIN IF (EDIT1.Text=) OR (EDIT2.Text=) OR (EDIT3.Text=) OR (EDIT4.Text=) OR (EDIT5.Text=) OR (EDIT6.Text=) OR (EDIT7.Text=) OR (EDIT8.Text=) OR (EDIT9.Text=) OR (EDIT10.Text=) OR (EDIT11.Text=) OR (EDIT12.Text=) THEN BEGIN SHOWMESSAGE(新商品!請輸入完全信息!); abort; END ELSE BEGIN FMSPXXBD.TSPXXB.InsertRecord(EDIT1.Text,STRTOINT(EDIT2.Text),EDIT3.Text,STRTOFLOAT(EDIT4.Text),Edit6.TEXT,EDIT7.Text,STRTOFLOAT(EDIT8.Text),EDIT9.Text,EDIT10.Text,EDIT11.Text,EDIT12.Text); SHOWMESSAGE(新增商品成功!); END; END;BEGINLOC2:=FMJHD.TJHZB.Locate(SPNO,EDIT1.Text,LOCASEINSENSITIVE);IF LOC2=FALSE THEN BEGIN FMJHD.TJHZB.Active:=TRUE; FMSPXXBD.TSPXXB.Active:=TRUE; FMJHD.TJHZB.InsertRecord(EDIT1.Text,STRTOINT(EDIT2.Text),EDIT3.Text,EDIT5.Text,Memo1.Text); FMSPXXBD.TSPXXB.FindKey(EDIT1.Text); N:=FMSPXXBD.TSPXXB.FieldByName(MORCB).AsFloat; STR1:=FMSPXXBD.TSPXXB.FieldByName(SPNAM).AsString; FMJHD.TJHZB.FindKey(EDIT1.Text); FMJHD.TJHZB.Edit; FMJHD.TJHZB.FieldByName(JHXJ).AsFloat:=STRTOFLOAT(Edit2.Text)*N; FMJHD.TJHZB.FieldByName(SPNAM).Value:=STR1; FMJHD.TJHZB.Post; END;IF LOC2=True THEN BEGIN FMJHD.TJHZB.Active:=TRUE; FMSPXXBD.TSPXXB.Active:=TRUE; FMSPXXBD.TSPXXB.FindKey(EDIT1.Text); Na:=FMSPXXBD.TSPXXB.FieldByName(MORCB).AsFloat; FMJHD.TJHZB.FindKey(EDIT1.Text); FMJHD.TJHZB.Edit; FMJHD.TJHZB.FieldByName(JHNUM).Value:=FMJHD.TJHZB.FieldByName(JHNUM).Value+STRTOINT(EDIT2.Text); FMJHD.TJHZB.FieldByName(JHXJ).AsFloat:=STRTOFLOAT(Edit2.Text)*Na+FMJHD.TJHZB.FieldByName(JHXJ).Value; END;END;當(dāng)點(diǎn)擊存盤按紐時(shí),先檢查商品編號和商品數(shù)量是否為空,為空就輸出消息請輸入商品編號和進(jìn)貨數(shù)量!,不為空就檢查商品信息表中是否有記錄用的是Locate(),有就直接存盤增加庫存量,沒有就要求輸入完整的信息再存盤。2 銷售子系統(tǒng) procedure TFMXSB.BitBtn2Click(Sender: TObject);VARLOC3:BOOLEAN;LOC4:BOOLEAN;LOCOP:TLOCATEOPTIONS;Nb:REAL;Nc:REAL;STR2:STRING;beginIF (EDIT1.Text=) OR (EDIT2.Text=) THEN BEGIN SHOWMESSAGE(請輸入商品編號和數(shù)量!); ABORT; END; LOC3:=FMSPXXBD.TSPXXB.Locate(SPNO,EDIT1.Text,LOCOP);IF LOC3=TRUE THEN BEGIN FMSPXXBD.TSPXXB.Edit; FMSPXXBD.TSPXXB.FieldByName(BDKCL).Value:=FMSPXXBD.TSPXXB.FieldByName(BDKCL).Value-STRTOINT(EDIT2.Text); FMSPXXBD.TSPXXB.Post; END;IF LOC3=FALSE THEN BEGIN SHOWMESSAGE(無此商品!); abort; END;/LOC4:=FMXSBD.TXSB.Locate(SPNO,EDIT1.Text,LOCOP);BEGINIF LOC4=FALSE THEN BEGIN FMXSBD.TXSB.Active:=TRUE; FMSPXXBD.TSPXXB.Active:=TRUE; FMXSBD.TXSB.InsertRecord(EDIT1.Text,STRTOINT(EDIT2.Text),EDIT3.Text); FMSPXXBD.TSPXXB.FindKey(EDIT1.Text); STR2:=FMSPXXBD.TSPXXB.FieldByName(SPNAM).AsString; Nb:=FMSPXXBD.TSPXXB.FieldByName(MORCB).AsFloat; FMXSBD.TXSB.FindKey(EDIT1.Text); FMXSBD.TXSB.Edit; FMXSBD.TXSB.FieldByName(XSXJ).AsFloat:=STRTOFLOAT(Edit2.Text)*Nb; FMXSBD.TXSB.FieldByName(SPNAM).Value:=STR2; FMXSBD.TXSB.FieldByName(BZJG).Value:=Nb; FMXSBD.TXSB.Post; END;IF LOC4=True THEN BEGIN FMXSBD.TXSB.Active:=TRUE; FMSPXXBD.TSPXXB.Active:=TRUE; FMSPXXBD.TSPXXB.FindKey(EDIT1.Text); Nc:=FMSPXXBD.TSPXXB.FieldByName(MORCB).AsFloat; FMXSBD.TXSB.FindKey(EDIT1.Text); FMXSBD.TXSB.Edit; FMXSBD.TXSB.FieldByName(SPNUM).Value:=FMXSBD.TXSB.FieldByName(SPNUM).Value+STRTOINT(EDIT2.Text); FMXSBD.TXSB.FieldByName(XSXJ).AsFloat:=STRTOFLOAT(Edit2.Text)*Nc+FMXSBD.TXSB.FieldByName(XSXJ).Value; END;END;在點(diǎn)擊存盤按紐后,將該商品的庫存量減少。3查詢子系統(tǒng)procedure TFMSPXXB.BitBtn2Click(Sender: TObject);beginWITH FMSPXXBD.QSPXXB DO BEGIN CLOSE; SQL.Clear; SQL.Add(SELECT * FROM SPXXB); SQL.Add(WHERE SPNO IS NOT NULL); SQL.Add(AND BDKCL=SAFCL); SQL.Add(ORDER BY BDKCL,SAFCL); OPEN; END;end;點(diǎn)擊安存不足按紐執(zhí)行上述代碼,Delphi對SQL的支持可以體現(xiàn)在Tquery組件上,Tquery組件有一個SQL屬性可以在其中添加SQL語句,上面代碼中的SQL語句就是在商品信息表中查詢本店庫存量小于安全存量的記錄并按BDKCL,SAFCL排序第六章 設(shè)計(jì)中遇到的問題和解決辦法(1) 一開始建立數(shù)據(jù)庫時(shí),沒有把開發(fā)系統(tǒng)時(shí)將會遇到的一些問題考慮詳細(xì)。導(dǎo)致在數(shù)據(jù)庫建立好之后,在以后的系統(tǒng)設(shè)計(jì)過程中發(fā)現(xiàn)當(dāng)時(shí)數(shù)據(jù)庫建立得不夠完全,還要不斷添加一些表。還有就是一些已建立好的表其中有的變量類型不對,所以又要修改,因此浪費(fèi)了很多寶貴的時(shí)間。后來,仔細(xì)分析了一下系統(tǒng),將開發(fā)中會遇到的問題都考慮清楚了,才建立數(shù)據(jù)庫。這樣,以后就不要改動數(shù)據(jù)庫,為設(shè)計(jì)節(jié)約了很多時(shí)間。(2) 一開始做的時(shí)候,對數(shù)據(jù)窗口的操作及編程語言還了解不夠透徹,因此在實(shí)現(xiàn)數(shù)據(jù)窗口之間數(shù)據(jù)傳遞的功能遇到了很大的困難。后來,經(jīng)過查詢資料學(xué)習(xí),對它有了較多的了解,做設(shè)計(jì)的時(shí)候也加快了進(jìn)度。(3) 在入庫的時(shí)候,原來庫里有的只要相應(yīng)增加這個商品的庫存量,這個功能實(shí)現(xiàn)了,但原來庫里沒有的就要增加這種商品的一系列信息,這個功能一直困擾我,但現(xiàn)在解決了。(4) 在銷售商品時(shí),商品銷售總額的計(jì)算這個問題還沒解決,正在想辦法,以求盡快解決。第七章 自我評價(jià)71系統(tǒng)的特點(diǎn)本系統(tǒng)是采用Delphi7.0開發(fā),該系統(tǒng)由四個主要的功能來實(shí)現(xiàn)的。(1)入庫功能。本功能實(shí)現(xiàn)了將進(jìn)來的貨品錄入到庫存中,使之在庫存中有這些商品的記錄,在入庫的同時(shí),要修改庫存量。(2)銷售功能。本功能實(shí)現(xiàn)了出售商品的功能,在銷售商品的同時(shí)要減少庫存量。(3)商品信息管理功能。本功能實(shí)現(xiàn)了將一天下來所有入庫和銷售的商品信息統(tǒng)計(jì)出來 ,有助于管理員查詢。(4)查詢功能。本功能實(shí)現(xiàn)管理員可以根據(jù)自己需要查詢相應(yīng)的商品信息,管理員可根據(jù)商品代號和商品名來查詢。711優(yōu)點(diǎn)本系統(tǒng)軟件具有統(tǒng)一的人機(jī)界面,這不至于會增加超市員工和管理員的負(fù)擔(dān),讓他們始終以一種輕松的感覺去思考和操作。該系統(tǒng)界面友好,輸出界面盡可能接近實(shí)際,以增加人機(jī)親和力。712缺點(diǎn) 由于時(shí)間倉促,本軟件功能還不夠強(qiáng)大,系統(tǒng)對實(shí)驗(yàn)信息的操作還不夠完善,某些地方還存在問題,還有待于進(jìn)一步改進(jìn)。日期信息的存盤還沒有解決,正在想辦法。在銷售模塊還有缺陷,有些功能還沒有實(shí)現(xiàn),比如顧客給錢后的找零。結(jié) 論為期半個學(xué)期的設(shè)計(jì)生活很快就要過去,回憶這一段時(shí)間,我的感觸很深,由于是第一次開發(fā)一個很實(shí)用的管理系統(tǒng),而且是用一種以前我們不太了解的語言,雖然以前學(xué)過,但涉及不多。所以開發(fā)起來有一定的難度,我們都感到肩上的壓力很大。隨著開發(fā)的進(jìn)程,一個個問題都被克服了,這使我深深的體會到了學(xué)習(xí)的樂趣和運(yùn)用的艱辛。首先,這次設(shè)計(jì)我覺得最大的收獲是軟件設(shè)計(jì)概念思想的建立。以前我們做一些小軟件的開發(fā)或課程設(shè)計(jì)時(shí),常常是沒有明確的思路,就開始編寫代碼,當(dāng)遇到問題是才發(fā)現(xiàn)是由于剛開始考慮的不夠周到所致。通過這次設(shè)計(jì)我發(fā)現(xiàn),軟件設(shè)計(jì)前工作準(zhǔn)備的重要性。在做開題報(bào)告的過程中,我們通過主動的系統(tǒng)調(diào)查、系統(tǒng)分析,完成系統(tǒng)的結(jié)構(gòu)設(shè)計(jì),數(shù)據(jù)庫規(guī)劃等工作,這對我們將要開發(fā)的系統(tǒng)有了更深的了解,為下一步系統(tǒng)開發(fā)做好了準(zhǔn)備。這使我們建立了軟件設(shè)計(jì)的正確概念,為今后繼續(xù)開發(fā)系統(tǒng)奠定了基礎(chǔ)。這次我做的課題是超市銷售系統(tǒng),我采用Delphi 7.0開發(fā)工具來實(shí)現(xiàn)。由于以前我對它并不太了解,所以為了更好的開發(fā)這項(xiàng)系統(tǒng),我又重新拿起教材,從最基本的學(xué)起。由于有
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年濟(jì)南貨車資格證答案
- 2025年黃南年貨運(yùn)從業(yè)資格證考試題大全
- 2025年太原貨運(yùn)從業(yè)資格證考試科目
- 2025年漯河貨物運(yùn)輸駕駛員從業(yè)資格考試系統(tǒng)
- 《多媒體制作技術(shù)》課件-5.3多邊形建模
- 揚(yáng)州市職業(yè)大學(xué)《拓展英語》2023-2024學(xué)年第一學(xué)期期末試卷
- 大學(xué)遠(yuǎn)程教育學(xué)院調(diào)查報(bào)告的寫作規(guī)范格式
- 大學(xué)生職業(yè)生涯規(guī)劃講座心得體會
- 2025-2030國內(nèi)體育用品行業(yè)市場發(fā)展現(xiàn)狀及發(fā)展前景與投資機(jī)會研究報(bào)告
- 2025年公共管理碩士考試題及答案
- 手術(shù)室不良事件
- 2024年大學(xué)試題(宗教學(xué))-道教文化筆試歷年真題薈萃含答案
- 礦用自動抑爆裝置應(yīng)用技術(shù)規(guī)范
- 2024年四川省公務(wù)員錄用考試《行測》試題及答案
- 慢性心力衰竭患者的藥物治療與查房護(hù)理
- 多元智能理論與學(xué)科融合
- 醫(yī)務(wù)人員手衛(wèi)生規(guī)范課件2
- 女性寶媽健康知識講座
- 運(yùn)動營養(yǎng)食品生產(chǎn)許可審查方案
- 景區(qū)保安投標(biāo)方案技術(shù)標(biāo)
- 九宮格數(shù)獨(dú)附答案
評論
0/150
提交評論