![倉庫管理圖書倉庫管理系統(tǒng)及培訓(xùn)教材_第1頁](http://file4.renrendoc.com/view/1ef7f9e56f775d673fca58c4cb372dba/1ef7f9e56f775d673fca58c4cb372dba1.gif)
![倉庫管理圖書倉庫管理系統(tǒng)及培訓(xùn)教材_第2頁](http://file4.renrendoc.com/view/1ef7f9e56f775d673fca58c4cb372dba/1ef7f9e56f775d673fca58c4cb372dba2.gif)
![倉庫管理圖書倉庫管理系統(tǒng)及培訓(xùn)教材_第3頁](http://file4.renrendoc.com/view/1ef7f9e56f775d673fca58c4cb372dba/1ef7f9e56f775d673fca58c4cb372dba3.gif)
![倉庫管理圖書倉庫管理系統(tǒng)及培訓(xùn)教材_第4頁](http://file4.renrendoc.com/view/1ef7f9e56f775d673fca58c4cb372dba/1ef7f9e56f775d673fca58c4cb372dba4.gif)
![倉庫管理圖書倉庫管理系統(tǒng)及培訓(xùn)教材_第5頁](http://file4.renrendoc.com/view/1ef7f9e56f775d673fca58c4cb372dba/1ef7f9e56f775d673fca58c4cb372dba5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
倉庫管理圖書倉庫管理系統(tǒng)及培訓(xùn)教材圖書倉庫管理系統(tǒng)息以及密碼管理等六個(gè)方面。系統(tǒng)可以完成對(duì)各類信息的瀏覽、查詢、添加、刪除、修改、報(bào)表等功能。除和密碼修改功能,并具備報(bào)表打印功能。系統(tǒng)采用MicrosoftOffice中的Access2000來設(shè)計(jì)數(shù)據(jù)庫,并使用當(dāng)前優(yōu)秀的開發(fā)工具—Delphi6.0,它有著最為靈活的數(shù)據(jù)庫結(jié)構(gòu),對(duì)數(shù)據(jù)庫應(yīng)用有著良好的支持。的重點(diǎn)、設(shè)計(jì)思想、難點(diǎn)技術(shù)和解決方案。關(guān)鍵字:數(shù)據(jù)庫,SQL語言,Delph6,數(shù)據(jù)庫組件,倉庫管理目錄第一章引言……………11.1課題來源……………………11.2開發(fā)工具的選擇……………21.3所做的主要工作……………3
第二章數(shù)據(jù)庫概論……………………42.1數(shù)據(jù)庫的發(fā)展………………42.1.1數(shù)據(jù)庫的發(fā)展…………42.1.2數(shù)據(jù)庫階段的特點(diǎn)……………………52.1.3數(shù)據(jù)庫技術(shù)……………62.2數(shù)據(jù)庫理論基礎(chǔ)……………72.2.1數(shù)據(jù)庫模型……………72.2.2數(shù)據(jù)庫體系結(jié)構(gòu)……………………102.2.3數(shù)據(jù)的獨(dú)立性………112.2.4范式…………………112.3SQL語言基礎(chǔ)……………132.3.1SQL簡(jiǎn)介……………132.3.2SQL查詢……………132.3.3SQL數(shù)據(jù)更新………14第三章數(shù)據(jù)庫開發(fā)工具……………163.1Delphi6.0簡(jiǎn)介……………163.2Delphi6.0控件……………173.2.1ADO數(shù)據(jù)訪問組件…………………173.2.2數(shù)據(jù)控制類DataControl……………183.2.3數(shù)據(jù)訪問類DataAccess……………183.2.4SQL語言在Delphi中的應(yīng)用………193.3Access簡(jiǎn)介………………21
第四章系統(tǒng)總體設(shè)計(jì)………………234.1系統(tǒng)需求分析……………234.2系統(tǒng)概要設(shè)計(jì)……………254.2.1系統(tǒng)結(jié)構(gòu)設(shè)計(jì)………254.2.2數(shù)據(jù)庫設(shè)計(jì)…………2ER圖設(shè)計(jì)……………………2數(shù)據(jù)庫表格設(shè)計(jì)………………294.3系統(tǒng)詳細(xì)設(shè)計(jì)………………34
第五章系統(tǒng)應(yīng)用程序設(shè)計(jì)…………375.1系統(tǒng)窗體模塊組成…………375.2數(shù)據(jù)模塊窗體設(shè)置…………385.3主窗體功能模塊的實(shí)現(xiàn)……………………395.4入庫、出庫窗體模塊的實(shí)現(xiàn)………………435.5查詢功能的實(shí)現(xiàn)……………515.6系統(tǒng)登陸窗體模塊的實(shí)現(xiàn)…………………525.7用戶管理功能的實(shí)現(xiàn)………545.7.1用戶管理主窗體……………………545.7.2密碼修改窗體模塊的實(shí)現(xiàn)…………545.7.3用戶注冊(cè)窗體模塊的實(shí)現(xiàn)…………555.7.4用戶注銷窗體模塊的實(shí)現(xiàn)…………57結(jié)束語…………………59致謝……………………60參考文獻(xiàn)………………61第一章引言§1.1課題來源管理難度也越來越大,如何優(yōu)化倉庫的日常管理也就成為了一個(gè)大眾化的課題。標(biāo)志,它給企業(yè)管理來了明顯的經(jīng)濟(jì)效益和社會(huì)效益。主要體現(xiàn)在:端。不少管理開支,增加企業(yè)收入。倉庫的管理的操作自動(dòng)化和信息的電子化,全面提高了倉庫的管理水平。
是其中極其重要的部分。為了加快倉庫管理自動(dòng)化的步伐,提高倉庫的管理業(yè)務(wù)處理效率,
建立倉庫管理系統(tǒng)已變得十分心要。更加完整,更加實(shí)用。計(jì)算機(jī)信息管理系統(tǒng),具有一定的實(shí)際開發(fā)價(jià)值和使用價(jià)值?!?.2開發(fā)工具的選擇自JavaInternet技術(shù)的普及和應(yīng)用需求的變化,以第四代語言為主的應(yīng)用給開發(fā)人員,被稱為Studio(工作室)或Suite(程序組例如,微軟的VisualStudio6.0,Borland公司的Delphi6.0等數(shù)據(jù)庫輔助開發(fā)工具。行、使用最多、最為先進(jìn)的可用作企業(yè)級(jí)開發(fā)工具的產(chǎn)品有:Microsoft公司的VisualBasic6.0版Microsoft公司的VisualC++6.0版Borland公司的Delphi6.0版效率提高的優(yōu)點(diǎn)失去了作用;相反,如果只強(qiáng)調(diào)程語言的彈性,卻沒有便利的工具作配合,
會(huì)使一些即使非常簡(jiǎn)單的界面處理動(dòng)作,也會(huì)嚴(yán)重地浪費(fèi)程序設(shè)計(jì)師的寶貴時(shí)間。
而Delphi是一個(gè)非常理想選擇。Delphi6是當(dāng)前Windows平臺(tái)上第一個(gè)全面支持最新Web服務(wù)的快速開發(fā)工具。無論是企業(yè)級(jí)用戶,
還是個(gè)人開發(fā)者,都能夠利用Delphi6輕松、快捷地構(gòu)建新一代電子商務(wù)應(yīng)用。Delphi6是
惟一支持所有新出現(xiàn)的工業(yè)標(biāo)準(zhǔn)的RAD環(huán)境,包括XML(擴(kuò)展標(biāo)記語言)/XSL(可擴(kuò)展樣式
SOAP(簡(jiǎn)單對(duì)象存取協(xié)議)和WSDL(Web服務(wù)器描述語言)等。Delphi6是可視化的快速應(yīng)用程序開發(fā)語言,它提供了可視化的集成開發(fā)環(huán)境,這一環(huán)境為
Delphi6的集成開發(fā)環(huán)境中,用戶可以設(shè)計(jì)程序代碼、運(yùn)行程序、進(jìn)行程序錯(cuò)誤的調(diào)試等,
可視化的開發(fā)方法降低了應(yīng)用程序開發(fā)的難度。Delphi的基礎(chǔ)編程語言是具有面向?qū)ο筇匦?/p>
的PascalObjectPascalObjectPascal優(yōu)點(diǎn),并將面向?qū)ο蟮母拍钜浦驳搅薖ascal語言中,使這種基礎(chǔ)語言有了新的發(fā)展空間。
使用Delphi6.0,我們幾乎可以作任何事情,還可以撰寫種各種類型的應(yīng)用程序,動(dòng)態(tài)鏈接
DLLCONCORBACGI/ISAPIMicrosoftBackOfficeDelphi
程序開發(fā)和程序運(yùn)行,備受廣大程序開發(fā)人員的好評(píng)。尤其是Delphi對(duì)數(shù)據(jù)庫應(yīng)用的強(qiáng)大設(shè)計(jì)人員的喜愛。Delphi用開發(fā)功能更強(qiáng)大,控制更靈活,編譯后的程序運(yùn)行速度更快?!?.3本文所做工作引言部分介紹了本系統(tǒng)的課題來源以及對(duì)數(shù)據(jù)庫開發(fā)工具的選擇。第二章介紹了數(shù)據(jù)庫的發(fā)展,關(guān)系數(shù)據(jù)庫,數(shù)據(jù)庫體系結(jié)構(gòu),并系統(tǒng)介紹了SQL計(jì)和理解應(yīng)用程序做了鋪墊。第三章系統(tǒng)介紹了Delphi6.0SQL語言在Delphi6.0Access等。計(jì),完成對(duì)整個(gè)系統(tǒng)的設(shè)計(jì)。第五章根據(jù)第四章的設(shè)計(jì)結(jié)果利用Access2000和Delphi6.0進(jìn)行了具體的窗體和應(yīng)用程序設(shè)計(jì)。庫概論§2.1數(shù)據(jù)庫的發(fā)展數(shù)據(jù)庫處理在信息系統(tǒng)的研究中一直是非常重要的主題,然而,近年來,隨著
WorldWideWeb(WWW)的猛增及Internet術(shù)之一。數(shù)據(jù)庫技術(shù)能使Internet應(yīng)用超越具有早期應(yīng)用特點(diǎn)的簡(jiǎn)單的發(fā)布。同時(shí),
Internet典數(shù)據(jù)庫技術(shù)的要求。它們只是加重了數(shù)據(jù)庫技術(shù)的重要性。數(shù)據(jù)庫設(shè)計(jì)是一個(gè)藝術(shù)過程。把設(shè)計(jì)轉(zhuǎn)變?yōu)閷?shí)際的數(shù)據(jù)庫,并且這些數(shù)據(jù)庫帶有功能完備、
高效能的應(yīng)用,是一個(gè)工程過程。數(shù)據(jù)庫的目的是幫助人們跟蹤事務(wù)。經(jīng)典的數(shù)據(jù)庫應(yīng)用涉及諸如訂單、顧客、工作、員工、
數(shù)據(jù)庫技術(shù)已經(jīng)被應(yīng)用到了新的領(lǐng)域,諸如用于Internet的數(shù)據(jù)庫或用于公司內(nèi)聯(lián)網(wǎng)的數(shù)
據(jù)庫。數(shù)據(jù)庫也被越來越多地應(yīng)用于生成和維護(hù)多媒體應(yīng)用程序上。計(jì)算機(jī)的數(shù)據(jù)處理應(yīng)用,首先要把大量的信息以數(shù)據(jù)形式存放在存儲(chǔ)器中。存儲(chǔ)器的容量、
存儲(chǔ)速率直接影響到數(shù)據(jù)管理技術(shù)的發(fā)展。從1956年生產(chǎn)出第一臺(tái)計(jì)算機(jī)到現(xiàn)在,存儲(chǔ)器
的發(fā)展,為數(shù)據(jù)庫技術(shù)提供了良好的物質(zhì)基礎(chǔ)。直接影響數(shù)據(jù)處理的效率。2.1.1數(shù)據(jù)庫的發(fā)展據(jù)管理技術(shù)的發(fā)展經(jīng)過三個(gè)階段:人工管理階段、文件系統(tǒng)階段和數(shù)據(jù)庫階段。技術(shù)。20世紀(jì)60IMSDBTG報(bào)告的發(fā)表以及關(guān)于關(guān)系模型論文的連續(xù)發(fā)表標(biāo)志著數(shù)據(jù)管理技術(shù)進(jìn)入數(shù)據(jù)庫階段。進(jìn)入70年代以系統(tǒng)的缺陷,提供了對(duì)數(shù)據(jù)更高級(jí)更有效的管理。20世紀(jì)602.1.2數(shù)據(jù)庫階段的特點(diǎn)(1)減少數(shù)據(jù)的重復(fù)(Redundancycanbereduced)與工資管理程序或許都會(huì)使用到職員與部門的信息或文件,而我們可以運(yùn)用數(shù)據(jù)庫的方法,把這兩個(gè)文件整理起來,以減少多余的數(shù)據(jù),過度地占用存儲(chǔ)空間。(2)避免數(shù)據(jù)的不一致(Inconsistencycanavoid)決定。(3)數(shù)據(jù)共享(Datashared)對(duì)于數(shù)據(jù)共享的意義,并不是只有針對(duì)數(shù)據(jù)庫設(shè)計(jì)的應(yīng)用程序,可以使用數(shù)據(jù)庫中的數(shù)據(jù),
享的目的。(4)強(qiáng)化數(shù)據(jù)的標(biāo)準(zhǔn)化(Standardcanbeenforced)制,如此一來,對(duì)于不同的環(huán)境的數(shù)據(jù)交換(DataInterchange)上將有很大的幫助,也能提高數(shù)據(jù)處理的效率。(5)實(shí)踐安全性的管理(Securityrestrictioncanbeapplied)任何不當(dāng)損毀的情形降至最低。(6)完整性的維護(hù)(Integritycanbemaintained)所謂完整性的問題,就是要確認(rèn)某條數(shù)據(jù)在數(shù)據(jù)庫當(dāng)中,是正確無誤的。正如(2)所述,高數(shù)據(jù)完整性,也會(huì)增加數(shù)據(jù)庫的維護(hù)能力與維護(hù)簡(jiǎn)便性。(7)需求沖突會(huì)獲得平衡(Conflictingrequirementscanbebalance)是一個(gè)合適的數(shù)據(jù)庫系統(tǒng),可以通過數(shù)據(jù)庫管理員的管理,將會(huì)有效地整理各方面的信息,戶在需求上的沖突。2.1.3數(shù)據(jù)庫技術(shù)結(jié)構(gòu)為基礎(chǔ)的外圍地位。目前世界上已有數(shù)百萬個(gè)數(shù)據(jù)庫系統(tǒng)在運(yùn)行,其應(yīng)用已經(jīng)深入到人類社會(huì)生活的各個(gè)領(lǐng)域,
20世紀(jì)90年代初在全國(guó)范圍
內(nèi)裝備了12個(gè)以數(shù)據(jù)庫技術(shù)為基礎(chǔ)的大型計(jì)算機(jī)系統(tǒng),這些系分布在郵電、計(jì)委、銀行、
電力、鐵路、氣象、民航、情報(bào)、公安、軍事、航天和財(cái)稅等行業(yè)。對(duì)象數(shù)據(jù)庫系統(tǒng)。在數(shù)據(jù)庫技術(shù)中有四個(gè)名詞,其概念應(yīng)該分清。(1)數(shù)據(jù)庫(database,DB):DB是統(tǒng)一管理的相關(guān)數(shù)據(jù)的集合。DB能為各種用戶共享,具有最小冗余度,數(shù)據(jù)間聯(lián)系密切,而又有較高的數(shù)據(jù)獨(dú)立性。(2DatabaseManagementSystem,DBMSDBMS是位于用戶與操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件,為用戶或應(yīng)用程序提供訪問DBDBDBMS對(duì)象型DBMS。(3DatabaseSystem,DBS:DBS是實(shí)現(xiàn)有組織地、動(dòng)態(tài)地存儲(chǔ)大量關(guān)聯(lián)數(shù)據(jù),系統(tǒng)。(4)數(shù)據(jù)庫技術(shù):這是一門研究數(shù)據(jù)庫的結(jié)構(gòu)、存儲(chǔ)、管理和使用的軟件學(xué)科。數(shù)據(jù)庫技DBMS本身要在操作系統(tǒng)的支持下才能工作。論、數(shù)理邏輯的理論。因此,數(shù)據(jù)庫技術(shù)是一門綜合性較強(qiáng)的學(xué)科?!?.2數(shù)據(jù)庫理論基礎(chǔ)2.2.1數(shù)據(jù)庫模型從20世紀(jì)5060域的一個(gè)重要分支,產(chǎn)生于60年代末?,F(xiàn)已形成相當(dāng)規(guī)模的理論體系和實(shí)用技術(shù)。模型是對(duì)現(xiàn)實(shí)世界的抽象。在數(shù)據(jù)庫技術(shù)中,我們用模型的概念描述數(shù)據(jù)庫的結(jié)構(gòu)與語義,對(duì)現(xiàn)實(shí)世界進(jìn)行抽象,表示實(shí)體類型及實(shí)體間聯(lián)系的模型稱為“數(shù)據(jù)模型。目前廣泛作用的數(shù)據(jù)模型可分為兩種類型。組織所關(guān)心的信息結(jié)構(gòu),這類模型稱為“概念數(shù)據(jù)模型。要領(lǐng)模型用于建立信息世界的數(shù)模型。到計(jì)算機(jī)系統(tǒng)和數(shù)據(jù)庫管理系統(tǒng),又稱為“結(jié)構(gòu)數(shù)據(jù)模型。例如,層次、網(wǎng)狀、關(guān)系、面
向?qū)ο蟮饶P?。這類模型有嚴(yán)格的形式化定義,以便于在計(jì)算機(jī)系統(tǒng)中實(shí)現(xiàn)。(11∶N聯(lián)系。
層次模型的特點(diǎn)是記錄之間的聯(lián)系通過指針實(shí)現(xiàn),查詢效率較高。但層次模型有兩個(gè)缺點(diǎn):
一是只能表示1∶N聯(lián)系,雖然有多種輔助手段實(shí)現(xiàn)了M∶N編寫應(yīng)用程序也很復(fù)雜。(21969年DBTG報(bào)告端的記錄類型到箭頭一端的記錄類型間聯(lián)系是1∶N聯(lián)系。網(wǎng)狀模型的特點(diǎn):記錄之間聯(lián)系通過指針實(shí)現(xiàn),M∶N聯(lián)系也容易實(shí)現(xiàn)(每個(gè)M∶N聯(lián)系可拆成兩個(gè)1∶N熟悉數(shù)據(jù)庫的邏輯結(jié)構(gòu)。由于層次系統(tǒng)和網(wǎng)狀系統(tǒng)的應(yīng)用程序編制比較復(fù)雜,因此,從20世紀(jì)80年代中期起,其市場(chǎng)已被關(guān)系系統(tǒng)所取代。但是使用這兩種模型建立起的許多數(shù)據(jù)庫仍然在正常運(yùn)轉(zhuǎn),只是在外層加了個(gè)關(guān)系數(shù)據(jù)庫語言的接口。網(wǎng)狀模型有許多成功的產(chǎn)品,20世紀(jì)70年代的產(chǎn)品大部分網(wǎng)狀系統(tǒng),例如,Honeywell公司的IDS/Ⅱ、HP公司的IMAGE/3000、Burroughs公司的DMSⅡ、Umivac公司的DMS1100、Cullinet公司的IDMS、Cimcom公司的TOTAL等(3)關(guān)系模型。關(guān)系模型的主要是用二維表格結(jié)構(gòu)表達(dá)實(shí)體集,用外鍵表示實(shí)體間聯(lián)系。稱為關(guān)系,每個(gè)關(guān)系實(shí)際上是一張二維表格。懂,編程時(shí)并不涉及存儲(chǔ)結(jié)構(gòu),訪問技術(shù)等細(xì)節(jié)。關(guān)系模型是數(shù)學(xué)化模型。SQL語言是關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)化語言,已得到了廣泛的應(yīng)用。20世紀(jì)70年代對(duì)關(guān)系數(shù)據(jù)庫的研究主要集中80終取代了層次、網(wǎng)狀數(shù)據(jù)庫產(chǎn)品?,F(xiàn)在市場(chǎng)上典型的關(guān)系DBMS產(chǎn)品有DB2、ORACLE、SYBASE、INFORMIX和微機(jī)型產(chǎn)品Foxpro、Access等。行操作。關(guān)系模型中來。關(guān)系模型已是一個(gè)成熟的有前途的模型,已得到廣泛應(yīng)用。(4)面向?qū)ο竽P?。目前,關(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)系模型在這方面的
據(jù)庫是面向?qū)ο蟾拍钆c數(shù)據(jù)庫技術(shù)相結(jié)合的產(chǎn)物。涉及的知識(shí)面也廣,因此面向?qū)ο髷?shù)據(jù)庫尚未達(dá)到關(guān)系數(shù)據(jù)庫那樣的普及程度。2.2.2數(shù)據(jù)庫體系結(jié)構(gòu)數(shù)據(jù)庫的體系結(jié)構(gòu)分三級(jí):內(nèi)部級(jí)(internal),概念級(jí)(conceptual)和外部級(jí)(external“三級(jí)模式結(jié)構(gòu),或“數(shù)據(jù)抽象的三個(gè)級(jí)別,最早是在1971年通過的DBTG1975年的美國(guó)ANSI/SPARC然現(xiàn)在DBMS的產(chǎn)品多種多樣,在不同的操作系統(tǒng)支持下工作,但是大多數(shù)系統(tǒng)在總的體系結(jié)構(gòu)上都具有三級(jí)模式的結(jié)構(gòu)特征。從某個(gè)角度看到的數(shù)據(jù)特性稱為“數(shù)據(jù)視圖”(dataview“外模式。式?!皟?nèi)模式。數(shù)據(jù)庫的三級(jí)模式結(jié)構(gòu)是數(shù)據(jù)的三個(gè)抽象級(jí)別。它把數(shù)據(jù)的具體組織留給DBMS去做,用戶統(tǒng)的負(fù)擔(dān)。DBMS在三級(jí)結(jié)構(gòu)之間提供兩個(gè)層次的映象(mappings):外模式/模式映象,模式/內(nèi)模式映象。此處模式是概念模式的簡(jiǎn)稱。2.2.3數(shù)據(jù)的獨(dú)立性邏輯數(shù)據(jù)獨(dú)立性兩級(jí)。(1)物理數(shù)據(jù)獨(dú)立性如果數(shù)據(jù)庫的內(nèi)模式要進(jìn)行修改,即數(shù)據(jù)庫的存儲(chǔ)設(shè)備和存儲(chǔ)方法有所變化,那么模式/內(nèi)數(shù)據(jù)獨(dú)立性。(2)邏輯數(shù)據(jù)獨(dú)立性如果數(shù)據(jù)庫的概念模式要進(jìn)行修改,譬如增加記錄類型或增加數(shù)據(jù)項(xiàng),那么外模式/模式映
模式和應(yīng)用程序,這樣,我們稱數(shù)據(jù)庫達(dá)到了邏輯數(shù)據(jù)獨(dú)立性。外模式的數(shù)據(jù)更新受到限制等。2.2.4范式據(jù)指標(biāo)體系是建立DB的必要條件,但不是充分條件。我們完全可以認(rèn)為所建指標(biāo)體系中的據(jù)的結(jié)構(gòu)在建庫前還必須進(jìn)行規(guī)范化的重新組織。在數(shù)據(jù)的規(guī)范化表達(dá)中,一般將一組相互關(guān)聯(lián)的數(shù)據(jù)稱為一個(gè)關(guān)系(relation)系下的每個(gè)數(shù)據(jù)指標(biāo)項(xiàng)則被稱為數(shù)據(jù)元素(dataelement),這種關(guān)系落實(shí)到具體數(shù)據(jù)庫上就是基本表,而數(shù)據(jù)元素就是基本表中的一個(gè)字段(field)。規(guī)范化表達(dá)還規(guī)定在每一個(gè)基本
表中必須定義一個(gè)數(shù)據(jù)元素為關(guān)鍵字(key),它可以唯一地標(biāo)識(shí)出該表中其它相關(guān)的數(shù)據(jù)元素。在規(guī)范化理論中表是二維的,它有如下四個(gè)性質(zhì):在表中的任意一列上,數(shù)據(jù)項(xiàng)應(yīng)屬于同一個(gè)屬性(如圖中每一列都存放著不同合同記錄的同一屬性數(shù)據(jù))。表中所有行都是不相同的,不允許有重復(fù)組項(xiàng)出現(xiàn)(如圖中每一行都是一個(gè)不同的合同記錄)。在表中,行的順序無關(guān)緊要(如圖中每行存的都是合同記錄,至于先放哪一個(gè)合同都沒關(guān)系)。在表中,列的順序無關(guān)緊要,但不能重復(fù)(如圖中合同號(hào)和合同名誰先誰后都沒關(guān)系,但二者不可重復(fù)或同名)。為范式。在這五種范式中,一般只用前三種,對(duì)于常用系統(tǒng)就足夠了。而且這五種范式是
“向上兼容的,即滿足第五范式的數(shù)據(jù)結(jié)構(gòu)自動(dòng)滿足一、二、三、四范式,滿足第四范式
的數(shù)據(jù)結(jié)構(gòu)自動(dòng)滿足第一、二、三范式,……,依此類推。第一范式(firstnormalform1stNF)重復(fù)項(xiàng)去掉。這個(gè)去掉重復(fù)項(xiàng)的過程就稱之為規(guī)范化處理。在本文所討論的開發(fā)方法里,
1stNF實(shí)際上是沒有什么意義的。因?yàn)槲覀儼匆?guī)范化建立的指標(biāo)體系和表的過程都自動(dòng)保證
了所有表都滿足1stNF。第二范式(secondnormalform,簡(jiǎn)稱2ndNF)是指每個(gè)表必須有一個(gè)(而且僅一個(gè))數(shù)據(jù)元素為
主關(guān)鍵字(primarykey),其它數(shù)據(jù)元素與主關(guān)鍵字一一對(duì)應(yīng)。例如,在圖l9.7中如果我們
將合同號(hào)定義為主關(guān)鍵字(其它數(shù)據(jù)元素中的記錄數(shù)據(jù)都有可能重名,故不能作為主關(guān)鍵字),
(functionaldepEndence)都依賴于主關(guān)鍵字,或稱該數(shù)據(jù)元素唯一地被主關(guān)鍵字所標(biāo)識(shí)。第三范式(thirdnormalform3rdNF)就是指表中的所有數(shù)據(jù)元素不但要能夠唯一地被主
滿足了2ndNF的現(xiàn)象,必須加以消除。盡量按關(guān)系規(guī)范化要求進(jìn)行數(shù)據(jù)庫設(shè)計(jì)?!?.3SQL語言基礎(chǔ)2.3.1SQL簡(jiǎn)介提供不同的數(shù)據(jù)庫語言。關(guān)系數(shù)據(jù)庫管理系統(tǒng)幾乎都提供關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言——SQL。SQL的全稱是StructuredQueryLanguageSQL語句可以從關(guān)系數(shù)據(jù)庫中獲得數(shù)據(jù),也可以建立數(shù)據(jù)庫、增加數(shù)據(jù)、修改數(shù)據(jù)。1986年ANSI采用SQL語言作為關(guān)系
數(shù)據(jù)庫系統(tǒng)的標(biāo)準(zhǔn)語言,后被國(guó)際化標(biāo)準(zhǔn)組織(ISO)采納為國(guó)際標(biāo)準(zhǔn)。SQL語言使用方便、品DB2ORACLE等都實(shí)現(xiàn)了SQLSQL的軟件或者與SQL的接口軟件。這樣SQL語言很快被整個(gè)計(jì)算機(jī)界認(rèn)可。SQL語言是一種非過程化語言,它一次處理一個(gè)記錄集合,對(duì)數(shù)據(jù)提供自動(dòng)導(dǎo)航。SQL語言允許用戶在高層的數(shù)據(jù)結(jié)構(gòu)上工作,而不對(duì)單個(gè)記錄進(jìn)行操作。SQL語言不要求用戶指定數(shù)引或者有什么類型的索引等細(xì)節(jié)。SQL語言可以完成許多功能,例如:●查詢數(shù)據(jù)●在數(shù)據(jù)庫表格中插入、修改和刪除記錄●建立、修改和刪除數(shù)據(jù)對(duì)象●控制對(duì)數(shù)據(jù)和數(shù)據(jù)對(duì)象的存取●確保數(shù)據(jù)庫的一致性和完整性等2.3.2SQL查詢數(shù)據(jù)查詢是關(guān)系運(yùn)算理論在SQL語言中的主要體現(xiàn),SELECT語句是SQLSQL為基礎(chǔ)的
關(guān)系數(shù)據(jù)庫中,使用的最多的就是SELECT查詢語句。SELECT語句的完整句法如下:SELECT目標(biāo)表的列名或列表達(dá)式序列FROM基本表和(或)視圖序列[WHERE行條件表達(dá)式][GROUPBY列名序列][HAVING組條件表達(dá)式][ORDERBY列名[ASC│DEAC]…]我在SELECT語句中還使用了大量的保留字和通配符以進(jìn)行各種各樣的條件查詢。在系統(tǒng)中所以大量的使用了模式匹配符LIKE(判斷值是否與指定的字符通配格式相符)。在包含LIKE的查詢語句中可以使用兩個(gè)通配符:%_運(yùn)算符NOT、AND、OR(用于多條件的邏輯連接),謂詞ALL以及保留字DISTINCT等等。做為SELECT語句還有很多的使用方法,這里就不再敘述。2.3.3SQL數(shù)據(jù)更新●數(shù)據(jù)插入往數(shù)據(jù)庫的基本表中插入數(shù)據(jù)使用的是INSERT另一種是查詢結(jié)果的插入。在本系統(tǒng)中使用的是前一種方式,其句法如下:INSERTINTO基本表名(列表名)VALUES(元組值)●數(shù)據(jù)刪除往數(shù)據(jù)庫的基本表中刪除數(shù)據(jù)使用的是DELETE語句,其句法如下:DELETEFROM基本表名[WHERE條件表達(dá)式]“SELECT*FROM基本表名[WHERE條件表達(dá)式]”和DELETEDELETE語句只能從一個(gè)基本表中刪除元組,WHERE子句中條件可以嵌套,也可以是來自幾個(gè)基本表的復(fù)合條件?!駭?shù)據(jù)修改當(dāng)需要修改基本表中元組的某些列值時(shí),可以用UPDATE語句實(shí)現(xiàn),其句法如下:UPDATE基本表名SET列名=值表達(dá)式[,列名=值表達(dá)式…][WHERE條件表達(dá)式]在Delphi中使用SQLTQuery組件來使用SQL語言的。
有一點(diǎn)要進(jìn)行說明,雖然通過TQuery組件來使用SQL語言很方便,但考慮到自己對(duì)不同組
ADO組件來對(duì)數(shù)據(jù)庫進(jìn)
TADOQuery組件的SQL屬性中就可以鍵入SQL的使用方法在后面進(jìn)行介紹。第三章數(shù)據(jù)庫開發(fā)工具§3.1Delphi6.0簡(jiǎn)介Delphi代替的作用,但是這些功能類在組件面板上是找不到的。在Delphi中,每一個(gè)類的祖先都是Tobject類,整個(gè)類的層次結(jié)構(gòu)就像一棵倒掛的樹,在最頂層的樹根即為Tobject類。這Tobject類這個(gè)類型代替任何其它類的DelphiTobject用到類層次樹的葉結(jié)點(diǎn)就足夠了。本身都構(gòu)不成數(shù)據(jù)庫應(yīng)用程序,因而用Delphi6.0開發(fā)數(shù)據(jù)庫應(yīng)用程序就隱含著界面開發(fā)。Delphi6中的VCL組件可用圖3-1Delphi有一些組件不在組件面板上,例如Tform和TapplicationTcomponentsDFMPublish屬性。Delphi窗口組件類的對(duì)象都有句柄,可以接受輸入焦點(diǎn)和包含其它組件。柄,不能接受輸入焦點(diǎn)和包含其它組件。從圖8-43中可以看出,圖形組件的基類是TgraphicControl,——例子是Tlabel和TspeedButton。由此可以看出圖形組件的功能很弱,有讀者會(huì)問圖形組件使用圖形組件,將會(huì)大減少程序?qū)ο到y(tǒng)資源的消耗。§3.2Delphi6.0控件用Delphi6件,現(xiàn)在就我在系統(tǒng)設(shè)計(jì)中所使用的重要組件給與簡(jiǎn)單介紹。3.2.1ADO數(shù)據(jù)訪問組件ADO數(shù)據(jù)對(duì)象(ActiveDataObjects)ADO設(shè)計(jì)
為一種極簡(jiǎn)單的格式,通過ODBC的方法同數(shù)據(jù)庫接口中,可以使用任何一種ODBC數(shù)據(jù)源,
即不止適合于SQLServerOracleAccess等數(shù)據(jù)庫應(yīng)用程序,也適合于ExcelADO是基于OLE-DBADO通過其內(nèi)部的屬性和方法提供統(tǒng)一的數(shù)據(jù)訪問接口方法。ADO使您的客戶端應(yīng)用程序能夠通過OLEDB提供訪問和操作在數(shù)據(jù)庫服務(wù)器中的數(shù)據(jù)。ADO支持用于建立C/S和Web的應(yīng)用程序的主要功能。其主要優(yōu)點(diǎn)是易于使用、高速度、低內(nèi)存支出和占用磁盤空間較少。ADO同時(shí)具有遠(yuǎn)程數(shù)據(jù)服務(wù)(RDS)功能,通過RDS可以在一次往返過程中實(shí)現(xiàn)將數(shù)據(jù)從服務(wù)器移動(dòng)到客戶端應(yīng)用程序和Web頁、在客戶端對(duì)數(shù)據(jù)進(jìn)行處然后將更新結(jié)果返回服務(wù)器的操作。Delphi6.0繼續(xù)對(duì)Microsoft的ADO訪問能力的支持。這種能力是通過一組新組件實(shí)現(xiàn)的,這些組件是在企業(yè)版的ADOADO面章節(jié)提到的TdataSet抽象類,ADO組件可以不通過BDE而直接實(shí)現(xiàn)ADO需要很少的代碼就可以實(shí)現(xiàn)該連接并且性能得到提高。利用ADO數(shù)據(jù)訪問組件,可以只使用ADO結(jié)構(gòu)與數(shù)據(jù)庫取得聯(lián)系并對(duì)其中的數(shù)據(jù)進(jìn)行操作,
而在這些過程中完全不需要使用BDE。大多數(shù)的ADO連接和數(shù)據(jù)集組件都是與基于BDE的連
接和數(shù)據(jù)集組件相類似的。TADOConnection組件與基于BDE的應(yīng)用程序中的Tdatabase組件
TADOTable與TtableTADOQuery與TqueryTADOStoreProc和TstoredProc之
ADO于BDE)都有許多相同之處。TTADODataSet沒有直接的BDE對(duì)應(yīng)組件,但它提供了許多與
Ttable和Tquery相同的功能。同樣,TADOCommand也沒有相對(duì)應(yīng)的BDE組件,它是在
Delphi/ADODelphi6.0通過ADOBDE數(shù)據(jù)引擎而是通過微軟的OLEDB來訪問更為廣泛的數(shù)據(jù)庫中的數(shù)據(jù)。ADO數(shù)據(jù)集訪問組
件與常用的數(shù)據(jù)訪問組件是并列的關(guān)系。在系統(tǒng)中我主要使用的是ADOTablet和ADOQuery兩個(gè)組件。3.2.2數(shù)據(jù)控制類DataControlDBText,DBEdit,DBMemo,DBImage,DBListBox,DBComboBox,DBCheckBox,DBRadioGroup,DBLoo
kupListBox,DBLookupCombox,DBCtrGridTEdit框,
TRadioGroups單選按鈕組等,只不過在顯示數(shù)據(jù)庫數(shù)據(jù)時(shí)要用而已。在系統(tǒng)中主要使用數(shù)據(jù)網(wǎng)格控件DBGrid和數(shù)據(jù)庫導(dǎo)航器控件DBNavigator。3.2.3數(shù)據(jù)訪問類DataAccess數(shù)據(jù)庫應(yīng)用系統(tǒng)中數(shù)據(jù)訪問是一個(gè)首要問題,包括單用戶和C/S庫和數(shù)據(jù)表文件。Delphi6提供了專門用于數(shù)據(jù)訪問的基類控件。主要包括數(shù)據(jù)源控件
DataSource、客戶數(shù)據(jù)集控件ClientDataSet、數(shù)據(jù)集提供器控件DataSetProvider等等。
Tdatabase:當(dāng)一個(gè)基于BDE的數(shù)據(jù)庫應(yīng)用程序需要一個(gè)永久數(shù)據(jù)庫連接時(shí),需要定制向一
個(gè)數(shù)據(jù)庫服務(wù)器的連接時(shí),需要事務(wù)控制和特殊的數(shù)據(jù)庫別名時(shí)就得用到Tdatabase對(duì)象。
特別是當(dāng)連接到一個(gè)遠(yuǎn)程的SQLBDE么,TDatabase對(duì)象的威力就體現(xiàn)出來了。在一個(gè)應(yīng)用程序中為每一個(gè)數(shù)據(jù)庫連接顯示的聲明Tdatabase并實(shí)例化TDatabase對(duì)象,系統(tǒng)就會(huì)產(chǎn)生一個(gè)帶有默認(rèn)屬性的TDatabase對(duì)象。TdataSource對(duì)象用于在DataSet對(duì)象(包括Tquery,TstoredProc,Ttable等)和數(shù)據(jù)感知DataSet對(duì)象中的數(shù)據(jù)想在數(shù)據(jù)感知組件中顯示和修改,它就必須和TdataSource示和操縱數(shù)據(jù),就必須以TDataSource對(duì)象為中介。用Delphi6并用Tsession對(duì)象和Tdatabase對(duì)象管理這些連接。然后以Tdatasource對(duì)象為中介,用
數(shù)據(jù)感知組件向用戶顯示數(shù)據(jù)庫的內(nèi)容并接受用戶的查詢和修改等操作。3.2.4SQL語言在Delphi中的應(yīng)用在Delphi中使用SQL語言非常方便,一般來說,都是通過Tquery組件來使用SQL語言的。
可以在TQuery組件的SQL屬性中設(shè)置SQL語句。設(shè)計(jì)程序時(shí),在該組件的屬性對(duì)話框中選
擇SQL屬性,單擊帶省略號(hào)的按鈕,就可以打開StringListEditor對(duì)話框,然后我們就可
以在對(duì)話框中添加SQLDelphi的SQLBuilder來自動(dòng)生成SQL可以避免手工編寫SQL而可能造成的語法錯(cuò)誤。靜態(tài)SQL語句在程序設(shè)計(jì)時(shí)便已固定下來,它不包含任何參數(shù)和變量。
動(dòng)態(tài)SQL面的語句是一條動(dòng)態(tài)SQL語句:Select*FromStudentsWhereStudentCode=:StudentCode;其中的變量StudentCodeSQL語句才能正確執(zhí)行,每次運(yùn)行應(yīng)用程序時(shí)可以為該參數(shù)變量賦予
不同的值。為參數(shù)賦值有三種方法:①根據(jù)參數(shù)在SQL語句中出現(xiàn)的順序,設(shè)置TQuery部件的Params屬性值為參數(shù)賦值。
②直接根據(jù)SQL語句中各參數(shù)的名字,調(diào)用ParamByName方法來為各參數(shù)賦值。
③將TQuery部件的DataSource屬性設(shè)置為另一個(gè)數(shù)據(jù)源,這樣將另一個(gè)數(shù)據(jù)源中與當(dāng)前
TQuery部件的SQL現(xiàn)所謂的連接查詢,創(chuàng)建主要—明細(xì)型數(shù)據(jù)庫應(yīng)用。在程序運(yùn)行過程中,要想設(shè)置TQuery部件的SQL屬性,必須首先調(diào)用Close方法,關(guān)閉
TQueryClear方法清除SQL屬性中現(xiàn)存的SQLAdd
方法為SQL屬性設(shè)置新的SQL命令語句。例如:Query1.Close{關(guān)閉Query1)Query1.SQL.Clear{清除SQL屬性中的SQL命令語句}Query1.SQL.Add(‘Select*FromStudents‘);Query1.SQL.Add(‘WhereName="Lucy"‘);在為TQuery部件設(shè)置SQL屬性時(shí)調(diào)用CloseTQuery部件已經(jīng)被關(guān)CloseSQL屬性設(shè)置新的SQL命令語Clear方法以清除SQL屬性中現(xiàn)存的SQLClear方Add方法向SQL屬性中設(shè)置SQLSQL命令語句會(huì)追加在現(xiàn)存SQL去。在這里要特別注意的,一般情況下TQuery部件的SQL屬性只能包含一條完整的SQL語句,它不允許被設(shè)置成多條SQL語句。當(dāng)然有些數(shù)據(jù)庫服務(wù)器也支持在TQuery部件的SQL屬性中設(shè)置多條SQLSQL屬性設(shè)置多條SQL語句。在為TQuery部件設(shè)置完SQL屬性的屬性值之后,也即編寫好適當(dāng)?shù)腟QL程序之后,可以有多種方式來執(zhí)行SQL程序。TQuery部件的SQL屬性之后將其Active屬性的值置為True可以執(zhí)行SQL屬性中的SQL程序,如果應(yīng)用中有與TQuery部件相連的數(shù)據(jù)瀏覽部件(如TDDGridTDBEdit等)那么在這些數(shù)據(jù)瀏覽部件中會(huì)顯示SQL程序的執(zhí)行結(jié)果。TQuery部件的Open方法或ExecSQL方法可以執(zhí)行其SQL屬性中的SQLOpen方法和ExecSQLOpen方法只能用來執(zhí)行SQL語言的查詢語句(Select命令)ExecSQL方法還可以用來執(zhí)行其它常用的SQL語句(如INSERT,UPDATE,DELETE等命令),例如:Query1.Open(這樣會(huì)返回一個(gè)查詢結(jié)果集)如果調(diào)用Open方法,而沒有查詢結(jié)果時(shí),會(huì)出錯(cuò)。此時(shí)應(yīng)該調(diào)用ExecSQL方法來代替Open方法。如:Query1.ExecSQL(沒有返回結(jié)果)當(dāng)然在設(shè)計(jì)應(yīng)用程序時(shí),程序設(shè)計(jì)人員是無法確定TQuery部件中的SQL語句是否會(huì)返回一
個(gè)查詢結(jié)果的。對(duì)于這種情況應(yīng)當(dāng)用Try…Except模塊來設(shè)計(jì)程序。在Try部分調(diào)用Open
方法,而在Except部分調(diào)用ExceSQL方法,這樣才能保證程序的正確運(yùn)行。
Delphi中用ADOQuery來使用SQL語句同樣十分方便。在ADOQuery組件中首先通過
ConnectionStringSQL…屬性值來寫入SQLDelphi中調(diào)用數(shù)據(jù)庫,就可以調(diào)用ADOQuery組件,通過修改其中的SQL…屬性中的SQL語
句來實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的各項(xiàng)操作。值得注意的是,ADOQueryADOQuery組件的SQL…SQL…中所有的SQL語句后才可以添加新的SQL語句。而且,在每一次修改完成以后,還應(yīng)該記得重新將ADOQuery激活。其它的使用方法與TTQuery有許多的相似之處?!?.3Access簡(jiǎn)介SQLServer和Oracle這樣的大型數(shù)據(jù)庫。我首先想到的數(shù)據(jù)庫是Borland公司的Paradox數(shù)據(jù)庫。另外,
MicrosoftOffice中的Access比較理想的選擇,所以,在本系統(tǒng)中我選擇了Access數(shù)據(jù)庫。Access做為一個(gè)數(shù)據(jù)庫管理系統(tǒng),它被集成在MicrosoftOffice中。Access數(shù)據(jù)庫處理的AccessAccess2000對(duì)信息保存、維護(hù)、查詢、統(tǒng)計(jì)、打印、交流、發(fā)布,而且它可以十分方便地與Office其他組件交流數(shù)據(jù),這些功能對(duì)一個(gè)一般用戶而言已經(jīng)足夠了。第四章系統(tǒng)總體設(shè)計(jì)護(hù)過程不在本文敘及?!?.1系統(tǒng)需求分析確定義系統(tǒng)必須做什么以及系統(tǒng)必須具備的功能。軟件需求分析中我采用結(jié)構(gòu)化分析方法(StructuredAnalysis,簡(jiǎn)稱SASA是面向數(shù)據(jù)流
IDEFSA向下逐層分解,描繪滿足功能要求的軟件模型。在系統(tǒng)中我采用數(shù)據(jù)流圖(DFD)這種半形式化的描述方式表達(dá)需求。它是一種功能模型,
四種基本圖形符號(hào):◆→:箭頭,表示數(shù)據(jù)流;◆〇:圓或橢圓,表示加工;◆═:雙杠,表示數(shù)據(jù)存儲(chǔ);◆□:方框,表示數(shù)據(jù)的源點(diǎn)或終點(diǎn)。流圖,即頂層圖,0層圖和1中間層流圖表示對(duì)其上層父圖的細(xì)化,它的每一步加工可能繼續(xù)細(xì)化成子圖。經(jīng)過對(duì)系統(tǒng)的分析首先得到系統(tǒng)的頂層DFD,如下:一步細(xì)化得到系統(tǒng)的0層DFD,如下:再進(jìn)一步細(xì)化每一個(gè)數(shù)據(jù)加工功能,得到系統(tǒng)的1層DFD圖。在這里只給出有關(guān)入庫管理和出庫管理的1所要做的就是系統(tǒng)功能模塊的劃分和數(shù)據(jù)庫的設(shè)計(jì),也就是系統(tǒng)的概要設(shè)計(jì)?!?.2系統(tǒng)概要設(shè)計(jì)在軟件需求分析階段,搞清楚了軟件“做什么的問題,形成了目標(biāo)系統(tǒng)的邏輯模型。現(xiàn)在我們所要做的就是要把軟件“做什么的邏輯模型變換為“怎么做的物理模型,即著手實(shí)現(xiàn)軟件的需求。首先,我們需要描述的是系統(tǒng)的總的體系結(jié)構(gòu)。4.2.1系統(tǒng)結(jié)構(gòu)設(shè)計(jì)方法組織起來,成為一個(gè)整體,完成整個(gè)系統(tǒng)所要求的功能。為設(shè)計(jì)高質(zhì)量的軟件結(jié)構(gòu)奠定基礎(chǔ)。在系統(tǒng)的概要設(shè)計(jì)中我采用結(jié)構(gòu)化設(shè)計(jì)(StructureDesign,簡(jiǎn)稱SDSD以需求分析階段產(chǎn)生的數(shù)據(jù)流圖DFD理和供應(yīng)商管理6錄打印等等。在得到系統(tǒng)的第一層功能模塊圖后,經(jīng)過進(jìn)一步地細(xì)化,得一系統(tǒng)的子功能模塊圖:4.2.2數(shù)據(jù)庫設(shè)計(jì)貫穿了整個(gè)軟件系統(tǒng)的開發(fā)過程,這也就是數(shù)據(jù)庫的設(shè)計(jì)問題,軟件設(shè)計(jì)的一個(gè)核心。ER圖設(shè)計(jì)據(jù)模型,如“實(shí)體聯(lián)系模型;另一種是直接面向數(shù)據(jù)庫邏輯結(jié)構(gòu)的“結(jié)構(gòu)數(shù)據(jù)模型。在本系統(tǒng)中我采用“實(shí)體聯(lián)系模型(ER模型)來描述數(shù)據(jù)庫的結(jié)構(gòu)與語義,以對(duì)現(xiàn)實(shí)世界進(jìn)行第一次抽象。ER模型直接從現(xiàn)實(shí)世界抽象出實(shí)體類型及實(shí)體間聯(lián)系,然后用ER圖來表示受。但ER模型只能說明實(shí)體間語義的聯(lián)系,不能進(jìn)一步說明詳細(xì)的數(shù)據(jù)結(jié)構(gòu),它只是數(shù)據(jù)庫設(shè)計(jì)的第一步。ER圖是直觀表示概念模型的工具,它有四個(gè)基本成分:◆橢圓形框,表示實(shí)體類型和聯(lián)系類型的屬性。對(duì)于關(guān)鍵碼的屬性,在屬性名下劃一橫線。
◆直線,聯(lián)系類型與其涉及的實(shí)體類型之間以直線連接。際情況,考慮了多方面的因素以后,確定系統(tǒng)的ER圖如下:(為了表達(dá)的方便,在這里我沒有在一張圖上表達(dá)出所有的關(guān)系,而是用一張總體ER圖,的添加是考慮到責(zé)任問題,也就是說,在倉庫管理的實(shí)際運(yùn)用中,出現(xiàn)了責(zé)任不清的現(xiàn)象,
信譽(yù)都可以進(jìn)行了解,同時(shí)可以為以后的圖書進(jìn)購提供一定有用的信息。都具有各自特有的屬性。下面就是各實(shí)體及聯(lián)系類型的屬性圖:(帶#號(hào)的屬性為關(guān)鍵字段)數(shù)據(jù)庫表格設(shè)計(jì)在完成系統(tǒng)的ERER述數(shù)據(jù)之間的聯(lián)系。在這里不得不提到一個(gè)概念——范式。其實(shí)在上一節(jié)的ER圖設(shè)計(jì)中,已經(jīng)運(yùn)用了范式的思不注意這個(gè)問題將會(huì)導(dǎo)致一系列問題的出現(xiàn)。ERK代表主鍵,#代表外鍵,字段值BookRecord表(庫存信息表)字段名稱數(shù)據(jù)類型說明KBookID數(shù)字圖書編號(hào)BookName文本圖書名Author文本作者Publisher文本出版社PubDate日期/時(shí)間出版日期Price貨幣價(jià)格BookType文本圖書類型Number1數(shù)字庫存數(shù)量Addation文本備注圖4.13庫存信息表內(nèi)容。數(shù)據(jù)類型是文本,而不是備注類型,主要考慮到該字段的長(zhǎng)度并不大,而且在Delphi中文本數(shù)據(jù)類型的處理也比較方便一點(diǎn)。Employee表(員工信息表)字段名稱數(shù)據(jù)類型說明KEmployeeID數(shù)字員工編號(hào)EmployeeName文本員工姓名Sex文本性別BornDate日期/時(shí)間出生日期Grade文本職稱WorkDate日期/時(shí)間工作日期Telephone文本聯(lián)系電話Address文本聯(lián)系地址圖4.14員工信息表成的。另外,作為一個(gè)倉庫也有必要了解其所屬員工的一些基本情況,以便查詢。Shopkeeper表(供應(yīng)商信息表)字段名稱數(shù)據(jù)類型說明KShopkeeperID數(shù)字供應(yīng)商編號(hào)ShopkeeperName文本供應(yīng)商姓名Address文本地址PostNo數(shù)字郵編OfficePhone文本辦公電話HomePhone文本住宅電話Email文本E-mailPayType文本付款方式圖4.15供應(yīng)商信息表供應(yīng)商信息表主要用于記錄有關(guān)供應(yīng)商的各類信息,包括姓名、地址、電話、付款方式等。
Email和付款方式這兩個(gè)字段,因?yàn)樵诋?dāng)今信息世界中,多種多樣的通訊方式和多種多樣的付款方式是必然的,是數(shù)據(jù)庫中必須與以記錄。InRecord表(入庫信息表)字段名稱數(shù)據(jù)類型說明KInID數(shù)字入庫編號(hào)#BookID數(shù)字圖書編號(hào)#EmployeeID數(shù)字員工編號(hào)#ShopkeeperID數(shù)字供應(yīng)商編號(hào)Number數(shù)字入庫數(shù)量BuyDate日期/時(shí)間入庫日期圖4.16入庫信息表OutRecord表(出庫信息表)字段名稱數(shù)據(jù)類型說明KOutID數(shù)字出庫編號(hào)#BookID數(shù)字圖書編號(hào)#EmployeeID數(shù)字員工編號(hào)Number2數(shù)字出庫數(shù)量OutDate日期/時(shí)間出庫日期圖4.17出庫信息表入庫信息表主要用于記錄有關(guān)入庫的詳細(xì)信息,包括入庫數(shù)量、入庫日期以及圖書、員工、
出庫記錄,系統(tǒng)都將自動(dòng)修改庫存中圖書的數(shù)量,而且,在您出庫的數(shù)量大于庫存數(shù)量時(shí),
系統(tǒng)還會(huì)自動(dòng)提示錯(cuò)誤,這樣就可以防止一定錯(cuò)誤的發(fā)生。BookIDEmployeeID和ShopkeeperID可以將
入外鍵的定義是實(shí)體完整性約束的一個(gè)主要方面。Key表(密碼信息表)字段名稱數(shù)據(jù)類型說明KKeyName文本用戶姓名KeyNo文本用戶密碼圖4.18密碼信息表的正確性,以防止非法用戶登陸。需要著手去實(shí)現(xiàn)每一個(gè)模塊,為每一個(gè)功能設(shè)計(jì)程序流程圖,這也就是系統(tǒng)的詳細(xì)設(shè)計(jì)。§4.3系統(tǒng)詳細(xì)設(shè)計(jì)可以說是“過程設(shè)計(jì)。在處理過程設(shè)計(jì)時(shí)我采用的是結(jié)構(gòu)化程序設(shè)計(jì)(簡(jiǎn)稱SP現(xiàn)每個(gè)模塊的功能,還應(yīng)使設(shè)計(jì)出的處理過程清晰易讀。能更有利于編碼,產(chǎn)生好的軟件系統(tǒng)。第五章系統(tǒng)應(yīng)用程序設(shè)計(jì)§5.1系統(tǒng)窗體模塊組成§5.2數(shù)據(jù)模塊窗體的設(shè)置統(tǒng)一的模塊,需要時(shí)就將該模塊引入而不必直接操作數(shù)據(jù)源本身呢?數(shù)據(jù)模塊
(DataModule一個(gè)窗體,該窗體可被需要的地方隨時(shí)引入。圖5.2給出了本程序的數(shù)據(jù)模塊(datamoduleform組件和數(shù)據(jù)源組件都在此數(shù)據(jù)模塊中進(jìn)行了定義。值得一提的是,設(shè)置了數(shù)據(jù)庫Database
tsxsDatabase組件的DatabaseName屬性設(shè)
置為tsckgltsxs數(shù)據(jù)庫已在ODBC配置程序中進(jìn)行了設(shè)置。其他的數(shù)據(jù)存取組件都是基于
Tdatabase組件的AliasName屬性即可。另外,在本系統(tǒng)的數(shù)據(jù)模塊窗體圖中,我大多采用的AODQuery組件而沒有采用BDE組,這主要是基于對(duì)ADO組件的了解。在Delphi的學(xué)習(xí)中我對(duì)ADO組件了解的更加清楚,使用也較BDE更為熟練,而且,ADO組件的功能也較BDE更為強(qiáng)大,所以在這里大多采用ADO組件來進(jìn)行數(shù)據(jù)庫聯(lián)接。同時(shí)我也使用了BDE組件中的Table,因?yàn)樵谀承r(shí)候BDE有著其自身特有的優(yōu)越性。主窗體功能模塊的實(shí)現(xiàn)file://主窗體程序代碼publicfile://在程序的起始部分,定義快捷按鈕點(diǎn)擊事件ProcedurePopup1Handler(Sender:Tobject);
ProcedurePopup2Handler(Sender:TObject);**********************************************************************procedureTmainform.Popup1Handler(Sender:TObject);beginfile://快捷按鈕1(點(diǎn)“按出版社分類”按鈕產(chǎn)生)的點(diǎn)擊事件withdatamoduleform.MainQuerydobeginfile://打開數(shù)據(jù)模塊窗體的MainQuery,對(duì)BookRecord表進(jìn)行操作close;file://關(guān)閉MainQuerySQL.Clear;file://清除SQL屬性中的SQL命令語句SQL.Add(‘select*fromBookRecordwherePublisher=:Pub‘);file://添加新的SQL語句Parameters.ParamByName(‘Pub‘).Value:=(SenderasTMenuItem).Caption;open;file://重新打開MainQueryend;end;**********************************************************************procedureTmainform.SpeedButton1Click(Sender:TObject);Vars1,s2,s3,s4,s5:String;file://設(shè)立5個(gè)變量以方便實(shí)現(xiàn)模糊查詢beginfile://主窗口庫存查詢按鈕事件withdatamoduleform.MainQuerydobeginclose;SQL.Clear;SQL.Add(‘select*fromBookRecord‘);SQL.Add(‘whereBookIDLike:BookIDandBookNameLike:NameandAuthorLike:AuthorandPubl
isherLike:pubandBookTypeLike:BookType‘);file://使用Like語句來實(shí)現(xiàn)模糊查詢ifEdit1.Text<>‘‘thens1:=‘%‘+Edit1.Text+‘%‘elses1:=‘%‘;Parameters.ParamByName(‘BookID‘).Value:=s1;file://給變量s1賦值ifEdit2.Text<>‘‘thens2:=‘%‘+Edit2.Text+‘%‘elses2:=‘%‘;Parameters.ParamByName(‘Name‘).Value:=s2;file://給變量s2賦值ifEdit3.Text<>‘‘thens3:=‘%‘+Edit3.Text+‘%‘elses3:=‘%‘;Parameters.ParamByName(‘Author‘).Value:=s3;file://給變量s2賦值ifEdit4.Text<>‘‘thens4:=‘%‘+Edit4.Text+‘%‘elses4:=‘%‘;Parameters.ParamByName(‘Pub‘).Value:=s4;file://給變量s2賦值ifEdit5.Text<>‘‘thens5:=‘%‘+Edit5.Text+‘%‘elses5:=‘%‘;Parameters.ParamByName(‘BookType‘).Value:=s5;file://給變量s2賦值open;ifFieldValues[‘BookID‘]=NULLfile://判斷是否找到記錄thenbeginMessagedlg(‘沒有找到你所需要的記錄!‘,mtInformation,[mbOK],0);Edit1.Text:=‘‘;Edit2.Text:=‘‘;Edit3.Text:=‘‘;Edit4.Text:=‘‘;Edit5.Text:=‘‘;close;SQL.Clear;SQL.Add(‘select*fromBookRecord‘);file://這里相當(dāng)于一個(gè)刷新功能open;end;end;end;**********************************************************************procedureTmainform.SpeedButton3Click(Sender:TObject);beginfile://庫存表刷新按鈕事件withdatamoduleform.MainQuerydobeginclose;SQL.Clear;SQL.Add(‘select*fromBookRecord‘);open;end;end;**********************************************************************
procedureTmainform.SpeedButton11Click(Sender:TObject);varPopupItem:TMenuItem;beginfile://自動(dòng)生成快捷按鈕1的內(nèi)容withdatamoduleform.BookQuerydobeginfile://從數(shù)據(jù)庫中選擇出版社類型close;SQL.Clear;SQL.Add(‘selectdistinctPublisherfromBookRecord‘);open;PopupMenu1:=TPopupMenu.Create(Self);file://自動(dòng)生成快捷菜單PopupMenu1.AutoHotkeys:=maManual;file://自定義熱鍵whileNotEofdobeginfile://根據(jù)出版社內(nèi)容生成菜單子項(xiàng)PopupItem:=TMenuItem.Create(Self);PopupItem.Caption:=FieldByName(‘Publisher‘).AsString;PopupMenu1.Items.Add(PopupItem);PopupItem.onClick:=Popup1Handler;file://確定菜單子項(xiàng)的點(diǎn)擊事件Next;end;end;PopupMenu1.Popup(384,67);file://在指定位置顯示快捷菜單1end;**********************************************************************
procedureTmainform.FormActivate(Sender:TObject);beginfile://系統(tǒng)初始化,在進(jìn)入mainform時(shí)自動(dòng)添加數(shù)據(jù)源
mainform.DBGrid1.DataSource:=datamoduleform.MainSource;
mainform.DBNavigator1.DataSource:=datamoduleform.MainSource;
mainform.DBGrid2.DataSource:=datamoduleform.EmpSource;
mainform.DBNavigator2.DataSource:=datamoduleform.EmpSource;
mainform.DBGrid3.DataSource:=datamoduleform.ShopSource;
mainform.DBNavigator3.DataSource:=datamoduleform.ShopSource;
mainform.DBGrid4.DataSource:=datamoduleform.InSource;
mainform.DBNavigator4.DataSource:=datamoduleform.InSource;
mainform.DBGrid5.DataSource:=datamoduleform.OutSource;
mainform.DBNavigator5.DataSource:=datamoduleform.OutSource;
end;**********************************************************************procedureTmainform.FormCreate(Sender:TObject);beginfile://系統(tǒng)初始化,定義界面大小,以適應(yīng)不同分辯率Width:=800;Height:=600;end;**********************************************************************procedureTmainform.Timer1Timer(Sender:TObject);beginfile://在狀態(tài)欄顯示時(shí)間StatusBar1.Panels[2].Text:=DateToStr(Date);StatusBar1.Panels[4].Text:=TimeToStr(Time);end;§5.4入庫、出庫窗體模塊的實(shí)現(xiàn)圖5.4系統(tǒng)入庫管理窗體圖5.5系統(tǒng)出庫管理窗體procedureTinoutform.SpeedButton4Click(Sender:TObject);beginfile://入庫管理查找按鈕事件withdatamoduleform.BookQuerydofile://入庫查詢處理beginclose;SQL.Clear;SQL.Add(‘select*fromBookRecordwhereBookID=:BookID‘);Parameters.ParamByName(‘BookID‘).Value:=Edit13.Text;open;ifFieldValues[‘BookID‘]<>NULLthenbeginEdit1.Text:=‘‘;Edit1.ReadOnly:=true;Edit1.Color:=clMenu;Edit6.Text:=FieldValues[‘BookName‘];file://顯示圖書名
Edit6.ReadOnly:=true;Edit6.Color:=clMenu;file://設(shè)置顯示框不可更改屬性
Edit7.Text:=FieldValues[‘Author‘];Edit7.ReadOnly:=true;Edit7.Color:=clMenu;Edit8.Text:=FieldValues[‘Publisher‘];Edit8.ReadOnly:=true;Edit8.Color:=clMenu;Edit9.Text:=FieldValues[‘PubDate‘];Edit9.ReadOnly:=true;Edit9.Color:=clMenu;Edit10.Text:=FieldValues[‘Price‘];Edit10.ReadOnly:=true;Edit10.Color:=clMenu;Edit11.Text:=FieldValues[‘BookType‘];Edit11.ReadOnly:=true;Edit11.Color:=clMenu;Edit12.Text:=FieldValues[‘Number1‘];Edit12.ReadOnly:=true;Edit12.Color:=clMenu;
IfFieldValues[‘Addation‘]<>NULLthenEdit25.Text:=FieldValues[‘Addation‘]elseEdit25.Text:=‘‘;Edit25.ReadOnly:=true;Edit25.Color:=clMenu;endelsebeginfile://在沒有查找到的情況下,清空所有顯示框Edit1.ReadOnly:=false;Edit1.Text:=‘‘;Edit1.Color:=clMenu;Edit6.ReadOnly:=false;Edit6.Text:=‘‘;Edit6.Color:=clMenu;Edit7.ReadOnly:=false;Edit7.Text:=‘‘;Edit7.Color:=clMenu;Edit8.ReadOnly:=false;Edit8.Text:=‘‘;Edit8.Color:=clMenu;Edit9.ReadOnly:=false;Edit9.Text:=‘‘;Edit9.Color:=clMenu;Edit10.ReadOnly:=false;Edit10.Text:=‘‘;Edit10.Color:=clMenu;Edit11.ReadOnly:=false;Edit11.Text:=‘‘;Edit11.Color:=clMenu;Edit12.ReadOnly:=false;Edit12.Text:=‘‘;Edit12.Color:=clMenu;Edit25.ReadOnly:=false;Edit25.Text:=‘‘;Edit25.Color:=clMenu;MessageDlg(‘沒有找到你所需要的記錄!‘,mtInformation,[mbOK],0);Edit13.Text:=‘‘;Edit13.SetFocus;end;end;withdatamoduleform.InQuerydofile://自動(dòng)入庫編號(hào)的獲取beginclose;SQL.Clear;SQL.Add(‘select*fromInRecordwhereInID>=All(selectInIDfromInRecord)‘);open;file://找到入庫編號(hào)中最大的一個(gè)Edit26.ReadOnly:=false;Edit26.Text:=FieldValues[‘InID‘]+1;file://最大的入庫編號(hào)加1形成新的入庫編號(hào)Edit26.ReadOnly:=true;Edit26.Color:=clMenu;file://設(shè)置編號(hào)的不可更改性end;end;**********************************************************************procedureTinoutform.SpeedButton1Click(Sender:TObject);vars:integer;beginfile://入庫管理添加按鈕事件ifEdit1.Text<>NULLthenMessageDlg(‘請(qǐng)輸入完整的入庫信息和圖書信息,然后單擊確定按鈕?!?mtInformation,[mbok],0)elsebeginif(Edit2.Text=‘‘)or(Edit3.Text=‘‘)or(Edit4.Text=‘‘)or(Edit5.Text=‘‘)thenbeginMessageDlg(‘請(qǐng)輸入完整的入庫信息!‘,mtInformation,[mbok],0);Edit2.SetFocus;endelsebeginwithdatamoduleform.InQuerydofile://將找到的圖書信息顯示beginclose;SQL.Clear;SQL.Add(‘insertintoInRecordvalues(:InID,:BookID,:EmpID,:ShopID,
:Number,:InDate)‘);file://向入庫信息表中插入記錄
Parameters.ParamByName(‘InID‘).Value:=Edit26.Text;file://向Edit框取值
Parameters.ParamByName(‘BookID‘).Value:=Edit13.Text;
Parameters.ParamByName(‘EmpID‘).Value:=Edit2.Text;
Parameters.ParamByName(‘ShopID‘).Value:=Edit3.Text;
Parameters.ParamByName(‘Number‘).Value:=Edit4.Text;
Parameters.ParamByName(‘InDate‘).Value:=Edit5.Text;
execSQL;end;Edit12.ReadOnly:=False;S:=StrToInt(Edit12.Text)+StrToInt(Edit4.Text);file://計(jì)算入庫后庫存圖書數(shù)量Edit12.Text:=IntToStr(s);file://將修改后的庫存圖書數(shù)量顯示Edit12.ReadOnly:=true;withdatamoduleform.BookQuerydofile://修改庫存記錄中圖書數(shù)量beginclose;SQL.Clear;SQL.Add(‘updateBookRecordsetNumber1=:Numberwhere
BookID=:BookID‘);Parameters.ParamByName(‘Number‘).Value:=s;Parameters.ParamByName(‘BookID‘).Value:=Edit13.Text;execSQL;file://提交SQL語句MessageDlg(‘記錄已成功添加!‘,mtInformation,[mbOK],0);Edit13.SetFocus;end;end;end;end;**********************************************************************procedureTinoutform.SpeedButton2Click(Sender:TObject);beginfile://入庫管理確定按鈕事件if(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(Edit25.Text=‘‘)thenbeginfile://判斷輸入信息的完整性MessageDlg(‘請(qǐng)輸入所需的全部入庫信息!‘,mtInformation,[mbok],0);Edit2.SetFocus;endelsebeginwithdatamoduleform.InQuerydofile://入庫信息添加beginclose;SQL.Clear;SQL.Add(‘insertintoInRecordvalues(:InID,:BookID,:EmpID,:ShopID,:Number,:InDate)‘);file://向入庫信息表中插入記錄Parameters.ParamByName(‘InID‘).Value:=Edit26.Text;Parameters.ParamByName(‘BookID‘).Value:=Edit1.Text;Parameters.ParamByName(‘EmpID‘).Value:=Edit2.Text;Parameters.ParamByName(‘ShopID‘).Value:=Edit3.Text;Parameters.ParamByName(‘Number‘).Value:=Edit4.Text;Parameters.ParamByName(‘InDate‘).Value:=Edit5.Text;
execSQL;end;withdatamoduleform.BookQuerydobeginclose;SQL.Clear;file://在完成入庫信息的添加后,修改庫存記錄SQL.Add(‘insertintoBookRecordvalues(:BookID,:BookName,:Author,:Publisher,:PubDate,:Price,:BookType,:Number,:Addration)‘);Parameters.ParamByName(‘BookID‘).Value:=Edit1.Text;Parameters.ParamByName(‘BookName‘).Value:=Edit6.Text;Parameters.ParamByName(‘Author‘).Value:=Edit7.Text;Parameters.ParamByName(‘Publisher‘).Value:=Edit8.Text;Parameters.ParamByName(‘PubDate‘).Value:=Edit9.Text;Parameters.ParamByName(‘Price‘).Value:=Edit10.Text;Parameters.ParamByName(‘BookType‘).Value:=Edit11.Text;Parameters.ParamByName(‘Number‘).Value:=Edit4.Text;Parameters.ParamByName(‘Addration‘).Value:=Edit25.Text;execSQL;end;MessageDlg(‘記錄添加成功!‘,mtInformation,[mbok],0);end;end;**********************************************************************
procedureTinoutform.SpeedButton11Click(Sender:TObject);
beginfile://新書入庫按鈕事件Edit13.Text:=‘‘;Edit13.Color:=clMenu;withdatamoduleform.InQuerydofile://自動(dòng)入庫編號(hào)的獲取beginclose;SQL.Clear;SQL.Add(‘select*fromInRecordwhereInID>=All(selectInIDfromInRecord)‘);open;Edit26.Text:=FieldValues[‘InID‘]+1;Edit26.ReadOnly:=true;Edit26.Color:=clMenu;
end;withdatamoduleform.BookQuerydofile://自動(dòng)圖書編號(hào)的獲取beginclose;SQL.Clear;SQL.Add(‘select*fromBookRecordwhereBookID>=All(selectBookIDfromBookRecord)‘);file://找到庫存圖書編號(hào)中最大的一個(gè)open;Edit1.ReadOnly:=false;Edit1.Text:=FieldValues[‘BookID‘]+1;file://顯示自動(dòng)生成的圖書編號(hào)Edit1.ReadOnly:=true;Edit1.Color:=clMenu;end;Edit2.Text:=‘‘;Edit3.Text:=‘‘;Edit4.Text:=‘‘;Edit5.Text:=‘‘;Edit6.ReadOnly:=false;Edit6.Text:=‘‘;Edit6.Color:=clWindow;Edit7.ReadOnly:=false;Edit7.Text:=‘‘;Edit7.Color:=clWindow;Edit8.ReadOnly:=false;Edit8.Text:=‘‘;Edit8.Color:=clWindow;Edit9.ReadOnly:=false;Edit9.Text:=‘‘;Edit9.Color:=clWindow;Edit10.ReadOnly:=
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 會(huì)博通 文件檔案知識(shí)一體化管理的引領(lǐng)者(單用戶版)
- 廣東省佛山市普通高中高三教學(xué)質(zhì)量檢測(cè)(一)語文試題(含答案)
- 專題06《最動(dòng)聽的聲音》《把奮斗寫進(jìn)明天》《成功的鑰匙》《青年之擔(dān)當(dāng)》
- 購書買賣合同
- 產(chǎn)品代銷合同范本
- 幼兒園重陽節(jié)主題活動(dòng)策劃方案五篇
- 包裝材料購銷合同范本
- 2024年世界旅游產(chǎn)業(yè)發(fā)展投資合同
- 海參海鮮采購合同
- 西安二手車買賣合同
- 電力溝施工組織設(shè)計(jì)-電纜溝
- 《法律援助》課件
- 《高處作業(yè)安全》課件
- 鍋爐本體安裝單位工程驗(yàn)收表格
- 一種基于STM32的智能門鎖系統(tǒng)的設(shè)計(jì)-畢業(yè)論文
- 妊娠合并強(qiáng)直性脊柱炎的護(hù)理查房
- 2024年山東鐵投集團(tuán)招聘筆試參考題庫含答案解析
- 兒童10歲生日-百日宴-滿月酒生日會(huì)成長(zhǎng)相冊(cè)展示(共二篇)
- 《繪本閱讀與指導(dǎo)》課程教學(xué)大綱
- 員工離職登記表(范本模板)
- 2023人教版(PEP)小學(xué)英語(三、四、五、六年級(jí))詞匯及常用表達(dá)法(課本同步)
評(píng)論
0/150
提交評(píng)論