倉庫管理系統(tǒng)_第1頁
倉庫管理系統(tǒng)_第2頁
倉庫管理系統(tǒng)_第3頁
倉庫管理系統(tǒng)_第4頁
倉庫管理系統(tǒng)_第5頁
已閱讀5頁,還剩60頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1/3倉庫管理系統(tǒng)摘要本系統(tǒng)主要完成對物資倉庫的庫存管理,包括入庫、出庫,用戶信息,物資信息等四個方面。系統(tǒng)可以完成對各類信息的瀏覽、查詢、添加、刪除、修改等功能。系統(tǒng)的核心是入庫、出庫二者之間的聯(lián)系,每一個表的修改都將聯(lián)動的影響其它的表,當完成入庫或出庫操作時系統(tǒng)會自動地完成庫存的修改。查詢功能也是系統(tǒng)的核心之一,其目的都是為了方便用戶使用。系統(tǒng)有完整的用戶添加、刪除和密碼修改功能,系統(tǒng)采用MicrosoftOffice中的Access2000來設計數(shù)據(jù)庫,并使用開發(fā)工具eclipse.論文主要介紹了本課題的開發(fā)背景,所要完成的功能和開發(fā)的過程。重點的說明了系統(tǒng)設計的重點、設計思想、難點技術和解決方案。關鍵字:數(shù)據(jù)庫,SQL語言,eclipse.AbstractSummaryofthesystemofthemajormaterialswarehouseinventorymanagement,includingstorage,warehousing,userinformation,Informationmaterialsinfouraspects.Systemcanbecompletedonvariousinformationbrowsing,query,add,delete,change,andotherfunctions.Thecoreofthesystemiscreated,outofthelinksbetweenthetwo,oneforeachtabletheamendmentwillaffectotherlinkageofthetable,Uponthecompletionofthedeliveryorremovaloperationsystemwillautomaticallycompleteinventorychanges.Theinquiryisoneofthesystem'score,itsaimistofacilitatetheusers.Acompletesystemuserstoadd,deleteandchangepasswordfunction,systemusestheMicrosoftOfficeAccess2000databasedesign,andtheuseofdevelopmenttoolseclipse.Thispaperpresentsthedevelopmentofthebackgroundissues,tobeaccomplishedbythedevelopmentandfunctionoftheprocess.Notetheemphasisofthesystemdesignfocus,design,technicaldifficultiesandsolutions.Keywords:database,SQLlanguage,eclipse.目錄第一章引言……………61.1課題來源…………61.2開發(fā)工具的選擇………………6第二章數(shù)據(jù)庫概論……………………92.1數(shù)據(jù)庫的發(fā)展………………92.1.1數(shù)據(jù)庫的發(fā)展…………92.1.2數(shù)據(jù)庫階段的特點……………………102.1.3數(shù)據(jù)庫技術……………112.2數(shù)據(jù)庫理論基礎…………122.2.1數(shù)據(jù)庫模型……………122.2.2數(shù)據(jù)庫體系結構……………………152.2.3數(shù)據(jù)的獨立性………162.2.4范式…………………112.3SQL語言基礎……………142.3.1SQL簡介……………142.3.2SQL查詢……………142.3.3SQL數(shù)據(jù)更新………15第三章數(shù)據(jù)庫開發(fā)工具……………163.1Eclipse簡介……………163.2Access簡介……………17第四章系統(tǒng)總體設計………………184.1系統(tǒng)需求分析……………184.2系統(tǒng)概要設計……………204.2.1系統(tǒng)結構設計………204.2.2數(shù)據(jù)庫設計…………ER圖設計……………………224.3系統(tǒng)詳細設計………………24第五章統(tǒng)應用程序設計…………265.1系統(tǒng)窗體模塊組成…………265.2主窗體功能模塊的實現(xiàn)………265.3添加物資基本信息模塊……………………285.4刪除所有物資信息……………………335.5添加物資入庫信息……………335.6修改物資入庫信息…………………335.7查詢物資入庫信息………345.8添加物資出庫信息………345.9修改物資出庫信息………355.10查詢物資出庫信息………355.11查詢物資余額信息………365.12添加用戶………365.13修改用戶………375.14刪除用戶………375.15幫助………38結束語…………………39致謝…………………40參考文獻………………41第一章引言§1.1課題來源隨著社會經(jīng)濟的迅速發(fā)展和科學技術的全面進步,計算機事業(yè)的飛速發(fā)展,以計算機與通信技術為基礎的信息系統(tǒng)正處于蓬勃發(fā)展的時期。隨著經(jīng)濟文化水平的顯著提高,人們對生活質量與工作環(huán)境的要求也越來越高。與此同時,為了管理大量的貨品,貨品倉庫也大量的出現(xiàn),倉庫的管理問題也就提上了日程。隨著物資的大量增加,其管理難度也越來越大,如何優(yōu)化倉庫的日常管理也就成為了一個大眾化的課題。在計算機飛速發(fā)展的今天,將計算機這一信息處理利器應用于倉庫的日常管理已是勢必所然,而且這也將為倉庫管理帶來前所未有的改變,它可以帶來意想不到的效益,同時也會為企業(yè)的飛速發(fā)展提供無限潛力。采用計算機管理信息系統(tǒng)已成為倉庫管理科學化和現(xiàn)代化的重要標志,它給企業(yè)管理來了明顯的經(jīng)濟效益和社會效益。主要體現(xiàn)在:極大提高了倉庫工作人員的工作效率,大大減少了以往入出存流程繁瑣,雜亂,周期長的弊端。基于倉庫管理的全面自動化,可以減少入庫管理、出庫管理與庫存管理中的漏洞,可以節(jié)約不少管理開支,增加企業(yè)收入。倉庫的管理的操作自動化和信息的電子化,全面提高了倉庫的管理水平。隨著我國改革開放的不斷深入,經(jīng)濟飛速的發(fā)展,企業(yè)要想生存、發(fā)展,要想在激烈的市場競爭中立于不敗之地,沒有現(xiàn)代化的管理是萬萬不行的,倉庫管理的全面自動化、信息化則是其中極其重要的部分。為了加快倉庫管理自動化的步伐,提高倉庫的管理業(yè)務處理效率,建立倉庫管理系統(tǒng)已變得十分心要。入庫、出庫還是現(xiàn)在企業(yè)貨品倉庫管理的常規(guī)基本模式,雖然,最近又出現(xiàn)了很多新的管理模式,如:基于零庫存思想的沃爾瑪特管理方式,但這些新的思想在中國大部分企業(yè)的管理中還是難以實現(xiàn)的。所以如何設計好倉庫管理系統(tǒng),盡可能地減少倉庫管理的重復性和低效性就成為當前最為重要的問題。貨品倉庫管理的核心是入庫和出庫之間的聯(lián)系,如何處理好二者之間的關系是系統(tǒng)最為關鍵的部分。通過對倉庫管理日常工作的詳細調查,搜集了大量的資料,從系統(tǒng)結構的組織,功能的實現(xiàn),技術的要求以與可行性等多方面進行考慮,認為本課題是一個適應現(xiàn)今貨品倉庫管理需求的計算機信息管理系統(tǒng),具有一定的實際開發(fā)價值和使用價值。§1.2開發(fā)工具的選擇自Java誕生以來,隨著Internet技術的普與和應用需求的變化,以第四代語言為主的應用開發(fā)產品發(fā)生了較大的變化,它們不僅已成為人們開發(fā)應用的開發(fā)工具,而且很多產品已發(fā)展成為一種強有力的應用開發(fā)環(huán)境。這些新型的開發(fā)工具通常以一種集成軟件包的形式提供給開發(fā)人員,被稱為Studio(工作室)或Suite(程序組)?,F(xiàn)在,市場上可以選購的應用開發(fā)產品很多,流行的也有數(shù)十種。目前在我國市場上最為流行、使用最多、最為先進的可用作企業(yè)級開發(fā)工具的產品有:Microsoft公司的VisualBasic6.0版Microsoft公司的VisualC++6.0版Borland公司的Delphi6.0版IBM公司eclipse在目前市場上這些眾多的程序開發(fā)工具中,有些強調程語言的彈性與執(zhí)行效率;有些則偏重于可視化程序開發(fā)工具所帶來的便利性與效率的得高,各有各的優(yōu)點和特色,也滿足了不同用戶的需求。Eclipse是一個開放源代碼的、與NetBeans、SunONEStudio和BorlandJbuilder類似的一種基于Java的整合型可擴展開發(fā)平臺,也是目前最著名的開源項目之一,IBM在最近幾年里也一直在大力支持該項目的發(fā)展,目標是將其做成用以替代IBMVisualAgeforJava(簡稱IVJ)的下一代IDE開發(fā)環(huán)境,并于2001年11月宣布投入4千萬美元資金到該項目的研發(fā)。就其本身而言,它只是一個框架和一組服務,用于通過插件組件構建開發(fā)環(huán)境。幸運的是,Eclipse附帶了一個標準的插件集,包括Java開發(fā)工具(JavaDevelopmentTools,JDT)。其未來的目標不僅僅是成為專門開發(fā)Java程序的IDE環(huán)境,根據(jù)Eclipse的體系結構,通過開發(fā)插件,它能擴展到任何語言的開發(fā),甚至能成為圖片繪制的工具。目前,Eclipse已經(jīng)開始提供C語言開發(fā)的功能插件。更難能可貴的是,Eclipse是一個開放源代碼的項目,任何人都可以下載Eclipse的源代碼,并且在此基礎上開發(fā)自己的功能插件。也就是說未來只要有人需要,就會有建立在Eclipse之上的COBOL,Perl,Python等語言的開發(fā)插件出現(xiàn)。同時可以通過開發(fā)新的插件擴展現(xiàn)有插件的功能,比如本系列文章為了進行手機應用程序的開發(fā)就是通過J2ME插件的擴展來加以實現(xiàn)的??梢詿o限擴展,而且有著統(tǒng)一的外觀,操作和系統(tǒng)資源管理,這也正是Eclipse的潛力所在。Eclipse的主要組成

Eclipse是一個開放源代碼的軟件開發(fā)項目,專注于為高度集成的工具開發(fā)提供一個全功能的、具有商業(yè)品質的工業(yè)平臺。它主要由Eclipse項目、Eclipse工具項目和Eclipse技術項目三個項目組成,具體包括四個部分組成--EclipsePlatform、JDT、CDT和PDE。JDT支持Java開發(fā)、CDT支持C開發(fā)、PDE用來支持插件開發(fā),EclipsePlatform則是一個開放的可擴展IDE,提供了一個通用的開發(fā)平臺。它提供建造塊和構造并運行集成軟件開發(fā)工具的基礎。EclipsePlatform允許工具建造者獨立開發(fā)與他人工具無縫集成的工具從而無須分辨一個工具功能在哪里結束,而另一個工具功能在哪里開始。EclipseSDK(軟件開發(fā)者包)是EclipsePlatform、JDT和PDE所生產的組件合并,它們可以一次下載。這些部分在一起提供了一個具有豐富特性的開發(fā)環(huán)境,允許開發(fā)者有效地建造可以無縫集成到EclipsePlatform中的工具。EclipseSDK由Eclipse項目生產的工具和來自其它開放源代碼的第三方軟件組合而成。Eclipse項目生產的軟件以CPL發(fā)布,第三方組件有各自自身的許可協(xié)議。第二章數(shù)據(jù)庫概論§2.1數(shù)據(jù)庫的發(fā)展數(shù)據(jù)庫處理在信息系統(tǒng)的研究中一直是非常重要的主題,然而,近年來,隨著WorldWideWeb(WWW)的猛增與Internet技術的迅速發(fā)展,使得數(shù)據(jù)庫技術之時成為最熱門技術之一。數(shù)據(jù)庫技術能使Internet應用超越具有早期應用特點的簡單的發(fā)布。同時,Internet技術提供了一種向用戶發(fā)布數(shù)據(jù)庫內容的標準化的訪問方法。這些技術沒有脫離經(jīng)典數(shù)據(jù)庫技術的要求。它們只是加重了數(shù)據(jù)庫技術的重要性。數(shù)據(jù)庫的設計和開發(fā)與包括藝術有包括工程。理解用戶的需求,然后,把它們轉變?yōu)橛行У臄?shù)據(jù)庫設計是一個藝術過程。把設計轉變?yōu)閷嶋H的數(shù)據(jù)庫,并且這些數(shù)據(jù)庫帶有功能完備、高效能的應用,是一個工程過程。數(shù)據(jù)庫的目的是幫助人們跟蹤事務。最近,由于數(shù)據(jù)庫的普與,數(shù)據(jù)庫技術已經(jīng)被應用到了新的領域,諸如用于Internet的數(shù)據(jù)庫或用于公司內聯(lián)網(wǎng)的數(shù)據(jù)庫。數(shù)據(jù)庫也被越來越多地應用于生成和維護多媒體應用程序上。計算機的數(shù)據(jù)處理應用,首先要把大量的信息以數(shù)據(jù)形式存放在存儲器中。存儲器的容量、存儲速率直接影響到數(shù)據(jù)管理技術的發(fā)展。從1956年生產出第一臺計算機到現(xiàn)在,存儲器的發(fā)展,為數(shù)據(jù)庫技術提供了良好的物質基礎。使用計算機以后,數(shù)據(jù)處理的速度和規(guī)模,無論是相對于手工方式,還是機械方式,都有無可比擬的優(yōu)勢。通常在數(shù)據(jù)處理中,計算是比較簡單的而數(shù)據(jù)的管理卻比較復雜。數(shù)據(jù)管理是指數(shù)據(jù)的收集、整理、組織、存儲、維護、檢索、傳送等操作,這部分操作是數(shù)據(jù)處理業(yè)務的基本環(huán)節(jié),而且是任何數(shù)據(jù)處理業(yè)務中必不可少的共有部分。數(shù)據(jù)管理技術的優(yōu)劣,將直接影響數(shù)據(jù)處理的效率。2.1.1數(shù)據(jù)庫的發(fā)展數(shù)據(jù)管理技術的發(fā)展,與硬件(主要是外存)、軟件、計算機應用的范圍有密切的聯(lián)系。數(shù)據(jù)管理技術的發(fā)展經(jīng)過三個階段:人工管理階段、文件系統(tǒng)階段和數(shù)據(jù)庫階段。人工管理階段和文件系統(tǒng)階段都有著相當多的缺陷,諸如數(shù)據(jù)冗余性,數(shù)據(jù)不一致性以與數(shù)據(jù)聯(lián)系弱等等。也正是由于這些原因,促使人們研究新的數(shù)據(jù)管理技術,從而產生了數(shù)據(jù)庫技術。20世紀60年代末發(fā)生的三件大事,層次模型IMS系統(tǒng)的推出、關于網(wǎng)狀模型DBTG報告的發(fā)表以與關于關系模型論文的連續(xù)發(fā)表標志著數(shù)據(jù)管理技術進入數(shù)據(jù)庫階段。進入70年代以后,數(shù)據(jù)庫技術得到迅速發(fā)展,開發(fā)了許多有效的產品并投入運行。數(shù)據(jù)庫系統(tǒng)克服了文件系統(tǒng)的缺陷,提供了對數(shù)據(jù)更高級更有效的管理。當進入數(shù)據(jù)庫階段后,隨著數(shù)據(jù)管理規(guī)模一再擴大,數(shù)據(jù)量急劇增加,為了提高效率,開始時,人們只是對文件系統(tǒng)加以擴充,在應用文件中建立了許多輔助索引,形成倒排文件系統(tǒng)。但這并不能最終解決問題。在20世紀60年代末,磁盤技術取得重要進展,具有數(shù)百兆容量和快速存取的磁盤陸續(xù)進入市場,成本也不高,為數(shù)據(jù)庫技術的產生提供了良好的物質條件。2.1.2數(shù)據(jù)庫階段的特點(1)減少數(shù)據(jù)的重復(Redundancycanbereduced)當在一個非數(shù)據(jù)庫系統(tǒng)當中,每一個應用程序都有屬于他們自己的文件,由于無法有系統(tǒng)建立的數(shù)據(jù),因此常常會造成存儲數(shù)據(jù)的重復與浪費。例如:在一家公司當中,人事管理程序與工資管理程序或許都會使用到職員與部門的信息或文件,而我們可以運用數(shù)據(jù)庫的方法,把這兩個文件整理起來,以減少多余的數(shù)據(jù),過度地占用存儲空間。(2)避免數(shù)據(jù)的不一致(Inconsistencycanavoid)本項的特色,可以說是延伸前項的一個特點,要說明這樣的一個現(xiàn)象,我們可以從下面這個實例來看:若是在同一家公司當中,職員甲在策劃部門工作,且職員甲的記錄同時被存放在數(shù)據(jù)庫的兩個地方,而數(shù)據(jù)庫管理系統(tǒng)卻沒有對這樣重要的情況加以控制,當其中一條數(shù)據(jù)庫被修改時,便會造成數(shù)據(jù)的不一致,但是,對于一個健全的數(shù)據(jù)庫管理系統(tǒng)而言,將會對這樣的情況加以控制,但有時并不需要刻意消除這種情形,應當視該數(shù)據(jù)庫的需求與效率來決定。(3)數(shù)據(jù)共享(Datashared)對于數(shù)據(jù)共享的意義,并不是只有針對數(shù)據(jù)庫設計的應用程序,可以使用數(shù)據(jù)庫中的數(shù)據(jù),對于其他撰寫好的應用程序,同樣可以對相同數(shù)據(jù)庫當中的數(shù)據(jù)進行處理,進而達到數(shù)據(jù)共享的目的。(4)強化數(shù)據(jù)的標準化(Standardcanbeenforced)由數(shù)據(jù)庫管理系統(tǒng),對數(shù)據(jù)做出統(tǒng)籌性的管理,對于數(shù)據(jù)的格式與一些存儲上的標準進行控制,如此一來,對于不同的環(huán)境的數(shù)據(jù)交換(DataInterchange)上將有很大的幫助,也能提高數(shù)據(jù)處理的效率。(5)實踐安全性的管理(Securityrestrictioncanbeapplied)通過對數(shù)據(jù)庫完整的權限控制,數(shù)據(jù)庫管理者可以確認所有可供用戶存取數(shù)據(jù)的合法途徑渠道,并且可以事先對一些較重要或關鍵性的數(shù)據(jù)進行安全檢查,以確保數(shù)據(jù)存取時,能夠將任何不當損毀的情形降至最低。(6)完整性的維護(Integritycanbemaintained)所謂完整性的問題,就是要確認某條數(shù)據(jù)在數(shù)據(jù)庫當中,是正確無誤的。正如(2)所述,若是無法控制數(shù)據(jù)的不一致性,便會產生完整性不足的問題,所以,我們會發(fā)現(xiàn),當數(shù)據(jù)重復性高的時候,數(shù)據(jù)不完整的情形也會增加,當然,若是數(shù)據(jù)庫的功能完整,將會大大地提高數(shù)據(jù)完整性,也會增加數(shù)據(jù)庫的維護能力與維護簡便性。(7)需求沖突會獲得平衡(Conflictingrequirementscanbebalance)在一個較大型的企業(yè)當中,用戶不同的需求,往往會造成系統(tǒng)或數(shù)據(jù)庫在設計上的困擾,但是一個合適的數(shù)據(jù)庫系統(tǒng),可以通過數(shù)據(jù)庫管理員的管理,將會有效地整理各方面的信息,對于一些較重要的應用程序,可以適時地提供較快速的數(shù)據(jù)存取方法與格式,以平衡多個用戶在需求上的沖突。2.1.3數(shù)據(jù)庫技術從文件系統(tǒng)發(fā)展到數(shù)據(jù)庫系統(tǒng)是信息處理領域的一個重大變化。在文件系統(tǒng)階段,人們關注的中心問題是系統(tǒng)功能的設計,因而程序設計處于主導地位,數(shù)據(jù)只起著服從程序需要的作用。在數(shù)據(jù)庫方式下,信息處理觀念已為新體系所取代,數(shù)據(jù)占據(jù)了中心位置。數(shù)據(jù)結構的設計成為信息系統(tǒng)首先關心的問題,而利用這些數(shù)據(jù)的應用程序設計則退居到以既定的數(shù)據(jù)結構為基礎的外圍地位。目前世界上已有數(shù)百萬個數(shù)據(jù)庫系統(tǒng)在運行,其應用已經(jīng)深入到人類社會生活的各個領域,從企業(yè)管理、銀行業(yè)務、資源分配、經(jīng)濟預測一直到信息檢索、檔案管理、普查統(tǒng)計等。并在通信網(wǎng)絡基礎上,建立了許多國際性的聯(lián)機檢索系統(tǒng)。我國20世紀90年代初在全國范圍內裝備了12個以數(shù)據(jù)庫技術為基礎的大型計算機系統(tǒng),這些系分布在郵電、計委、銀行、電力、鐵路、氣象、民航、情報、公安、軍事、航天和財稅等行業(yè)。數(shù)據(jù)庫技術還在不斷的發(fā)展,并且不斷地與其它計算機技術相互滲透。數(shù)據(jù)庫技術與網(wǎng)絡通信技術相結合,產生了分布式數(shù)據(jù)庫系統(tǒng)。數(shù)據(jù)庫技術與面向對象技術相結合,產生了面向對象數(shù)據(jù)庫系統(tǒng)。在數(shù)據(jù)庫技術中有四個名詞,其概念應該分清。(1)數(shù)據(jù)庫(database,DB):DB是統(tǒng)一管理的相關數(shù)據(jù)的集合。DB能為各種用戶共享,具有最小冗余度,數(shù)據(jù)間聯(lián)系密切,而又有較高的數(shù)據(jù)獨立性。(2)數(shù)據(jù)庫管理系統(tǒng)(DatabaseManagementSystem,DBMS):DBMS是位于用戶與操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件,為用戶或應用程序提供訪問DB的方法,包括DB的建立、查詢、更新與各種數(shù)據(jù)控制。DBMS總是基于某種數(shù)據(jù)模型,可以分為層次型、網(wǎng)狀型、關系型和面向對象型DBMS。(3)數(shù)據(jù)庫系統(tǒng)(DatabaseSystem,DBS):DBS是實現(xiàn)有組織地、動態(tài)地存儲大量關聯(lián)數(shù)據(jù),方便多用戶訪問的計算機軟件、硬件和數(shù)據(jù)資源組成的系統(tǒng),即采用了數(shù)據(jù)庫技術的計算機系統(tǒng)。(4)數(shù)據(jù)庫技術:這是一門研究數(shù)據(jù)庫的結構、存儲、管理和使用的軟件學科。數(shù)據(jù)庫技術是操作系統(tǒng)的文件系統(tǒng)基礎上發(fā)展起來的。而DBMS本身要在操作系統(tǒng)的支持下才能工作。數(shù)據(jù)庫不僅用到數(shù)據(jù)結構的知識,而且豐富了數(shù)據(jù)結構的內容。在關系數(shù)據(jù)庫中要用到集合論、數(shù)理邏輯的理論。因此,數(shù)據(jù)庫技術是一門綜合性較強的學科。§2.2數(shù)據(jù)庫理論基礎2.2.1數(shù)據(jù)庫模型從20世紀50年代中期開始,計算機的應用由科學研究部門逐步擴展到企業(yè)、行政部門。至60年代,數(shù)據(jù)處理成為計算機的主要應用。數(shù)據(jù)庫技術作為數(shù)據(jù)管理技術,是計算機軟件領域的一個重要分支,產生于60年代末。現(xiàn)已形成相當規(guī)模的理論體系和實用技術。模型是對現(xiàn)實世界的抽象。在數(shù)據(jù)庫技術中,我們用模型的概念描述數(shù)據(jù)庫的結構與語義,對現(xiàn)實世界進行抽象,表示實體類型與實體間聯(lián)系的模型稱為“數(shù)據(jù)模型”。目前廣泛作用的數(shù)據(jù)模型可分為兩種類型。一種是獨立于計算機系統(tǒng)的模型,完全不涉與信息在系統(tǒng)中的表示,只是用來描述某個特定組織所關心的信息結構,這類模型稱為“概念數(shù)據(jù)模型”。要領模型用于建立信息世界的數(shù)據(jù)模型,強調其語義表達功能,應該概念簡單、清晰,易于用戶理解,它是現(xiàn)實世界的第一層抽象,是用戶和數(shù)據(jù)庫設計人員之間進行交流的工具。這一其中著名的模型是“實體聯(lián)系模型”。另一種數(shù)據(jù)模型是直接面向數(shù)據(jù)庫的邏輯結構,它是現(xiàn)實世界的第二層抽象。這類模型涉與到計算機系統(tǒng)和數(shù)據(jù)庫管理系統(tǒng),又稱為“結構數(shù)據(jù)模型”。例如,層次、網(wǎng)狀、關系、面向對象等模型。這類模型有嚴格的形式化定義,以便于在計算機系統(tǒng)中實現(xiàn)。(1)層次模型。用樹型結構表示實體類型與實體間聯(lián)系的數(shù)據(jù)模型。樹的結點是記錄類型,每個非根結點有且只有一個父結點。上一層記錄類型和下一層記錄類型間聯(lián)系是1∶N聯(lián)系。層次模型的特點是記錄之間的聯(lián)系通過指針實現(xiàn),查詢效率較高。但層次模型有兩個缺點:一是只能表示1∶N聯(lián)系,雖然有多種輔助手段實現(xiàn)了M∶N聯(lián)系,但都較復雜,用戶不易掌握,二是由于樹型結構層次順序的嚴格和復雜,引起數(shù)據(jù)的查詢和更新操作也很復雜,因此,編寫應用程序也很復雜。(2)網(wǎng)狀模型。用有向圖結構表示實體類型與實體間聯(lián)系的數(shù)據(jù)模型。。1969年DBTG報告提出的數(shù)據(jù)模型是網(wǎng)狀模型的主要代表。有向圖中的結點是記錄類型,有向邊表示從箭尾一端的記錄類型到箭頭一端的記錄類型間聯(lián)系是1∶N聯(lián)系。網(wǎng)狀模型的特點:記錄之間聯(lián)系通過指針實現(xiàn),M∶N聯(lián)系也容易實現(xiàn)(每個M∶N聯(lián)系可拆成兩個1∶N聯(lián)系),查詢效率較高。網(wǎng)狀模型的缺點是編寫應用程序比較復雜,程序員必須熟悉數(shù)據(jù)庫的邏輯結構。由于層次系統(tǒng)和網(wǎng)狀系統(tǒng)的應用程序編制比較復雜,因此,從20世紀80年代中期起,其市場已被關系系統(tǒng)所取代。但是使用這兩種模型建立起的許多數(shù)據(jù)庫仍然在正常運轉,只是在外層加了個關系數(shù)據(jù)庫語言的接口。網(wǎng)狀模型有許多成功的產品,20世紀70年代的產品大部分網(wǎng)狀系統(tǒng),例如,Honeywell公司的IDS/Ⅱ、HP公司的IMAGE/3000、Burroughs公司的DMSⅡ、Umivac公司的DMS1100、Cullinet公司的IDMS、Cimcom公司的TOTAL等(3)關系模型。關系模型的主要是用二維表格結構表達實體集,用外鍵表示實體間聯(lián)系。關系模型是由若干個關系模式組成的集合。關系模式相當于前面提到的記錄類型,它的實例稱為關系,每個關系實際上是一張二維表格。關系模型和層次、網(wǎng)狀模型的最大判別是用關鍵碼而不是用指針導航數(shù)據(jù),表格簡單用戶易懂,編程時并不涉與存儲結構,訪問技術等細節(jié)。關系模型是數(shù)學化模型。SQL語言是關系數(shù)據(jù)庫的標準化語言,已得到了廣泛的應用。20世紀70年代對關系數(shù)據(jù)庫的研究主要集中在理論和實驗系統(tǒng)的開發(fā)方面。80年代初才形成產品,但很快得到廣泛的應用和普與,并最終取代了層次、網(wǎng)狀數(shù)據(jù)庫產品。現(xiàn)在市場上典型的關系DBMS產品有DB2、ORACLE、SYBASE、INFORMIX和微機型產品Foxpro、Access等。關系模型和網(wǎng)狀、層次模型的最大區(qū)別是:關系模型用表格數(shù)據(jù)而不是通過指針鏈來表示和實現(xiàn)實體間聯(lián)系。關系模型的數(shù)據(jù)結構簡單、易懂。只需用簡單的查詢語句就可對數(shù)據(jù)庫進行操作。關系模型是數(shù)學化的模型,可把表格看成一個集合,因此集合論、數(shù)理邏輯等知識可引入到關系模型中來。關系模型已是一個成熟的有前途的模型,已得到廣泛應用。(4)面向對象模型。目前,關系數(shù)據(jù)庫的使用已相當普遍,但是,現(xiàn)實世界中仍然存在著許多含有復雜數(shù)據(jù)結構的應用領域,例如,CAD數(shù)據(jù)、圖形數(shù)據(jù)等,而關系模型在這方面的處理能力就顯得力不從心。因此,人們需要更高級的數(shù)據(jù)庫技術來表達這類信息。面向對象的概念最早出現(xiàn)在程序設計語言中,隨后迅速滲透到計算機領域的每一個分支。面向對象數(shù)據(jù)庫是面向對象概念與數(shù)據(jù)庫技術相結合的產物。面向對象模型能完整地描述現(xiàn)實世界的數(shù)據(jù)結構,具有豐富的表達能力,但模型相對較復雜,涉與的知識面也廣,因此面向對象數(shù)據(jù)庫尚未達到關系數(shù)據(jù)庫那樣的普與程度。2.2.2數(shù)據(jù)庫體系結構數(shù)據(jù)庫的體系結構分三級:內部級(internal),概念級(conceptual)和外部級(external)。這個三級結構有時也稱為“三級模式結構”,或“數(shù)據(jù)抽象的三個級別”,最早是在1971年通過的DBTG報告中提出,后來收入在1975年的美國ANSI/SPARC報告中。雖然現(xiàn)在DBMS的產品多種多樣,在不同的操作系統(tǒng)支持下工作,但是大多數(shù)系統(tǒng)在總的體系結構上都具有三級模式的結構特征。從某個角度看到的數(shù)據(jù)特性稱為“數(shù)據(jù)視圖”(dataview)。外部級最接近用戶,是單個用戶所能看到的數(shù)據(jù)特性。單個用戶使用的數(shù)據(jù)視圖的描述稱為“外模式”。概念級涉與到所有用戶的數(shù)據(jù)定義,是全局的數(shù)據(jù)視圖。全局數(shù)據(jù)視圖的描述稱為“概念模式”。內部級最接近于物理存儲設備,涉與到實際數(shù)據(jù)存儲的結構。物理存儲數(shù)據(jù)視圖的描述稱為“內模式”。數(shù)據(jù)庫的三級模式結構是數(shù)據(jù)的三個抽象級別。它把數(shù)據(jù)的具體組織留給DBMS去做,用戶只要抽象地處理數(shù)據(jù),而不必關心數(shù)據(jù)在計算機中的表示和存儲,這樣就減輕了用戶使用系統(tǒng)的負擔。三級結構之間往往差別很大,為了實現(xiàn)這三個抽象級別的聯(lián)系和轉換,DBMS在三級結構之間提供兩個層次的映象(mappings):外模式/模式映象,模式/內模式映象。此處模式是概念模式的簡稱。2.2.3數(shù)據(jù)的獨立性由于數(shù)據(jù)庫系統(tǒng)采用三級模式結構,因此系統(tǒng)具有數(shù)據(jù)獨立性的特點。在數(shù)據(jù)庫技術中,數(shù)據(jù)獨立性是指應用程序和數(shù)據(jù)之間相互獨立,不受影響。數(shù)據(jù)獨立性分成物理數(shù)據(jù)獨立性和邏輯數(shù)據(jù)獨立性兩級。(1)物理數(shù)據(jù)獨立性如果數(shù)據(jù)庫的內模式要進行修改,即數(shù)據(jù)庫的存儲設備和存儲方法有所變化,那么模式/內模式映象也要進行相當?shù)男薷?,使概念模式盡可能保持不變。也就是對內模式的修改盡量不影響概念模式,當然,對于外模式和應用程序的影響更小,這樣,我們稱數(shù)據(jù)庫達到了物理數(shù)據(jù)獨立性。(2)邏輯數(shù)據(jù)獨立性如果數(shù)據(jù)庫的概念模式要進行修改,譬如增加記錄類型或增加數(shù)據(jù)項,那么外模式/模式映象也要進行相應的修改,使外模式盡可能保持不變。也就是對概念模式的修改盡量不影響外模式和應用程序,這樣,我們稱數(shù)據(jù)庫達到了邏輯數(shù)據(jù)獨立性?,F(xiàn)有關系系統(tǒng)產品均提供了較高的物理獨立性,而對邏輯獨立性的支持尚有欠缺,例如,對外模式的數(shù)據(jù)更新受到限制等。2.2.4范式建立起一個良好的數(shù)據(jù)指標體系,是建立數(shù)據(jù)結構和數(shù)據(jù)庫的最重要的一環(huán)。一個良好的數(shù)據(jù)指標體系是建立DB的必要條件,但不是充分條件。我們完全可以認為所建指標體系中的一個指標類就是關系數(shù)據(jù)庫中的一個基本表,而這個指標類下面的一個個具體指標就是這個基本表中的一個字段。但如果直接按照這種方式建庫顯然還不能算最佳。對于指標體系中數(shù)據(jù)的結構在建庫前還必須進行規(guī)范化的重新組織。在數(shù)據(jù)的規(guī)范化表達中,一般將一組相互關聯(lián)的數(shù)據(jù)稱為一個關系(relation),而在這個關系下的每個數(shù)據(jù)指標項則被稱為數(shù)據(jù)元素(dataelement),這種關系落實到具體數(shù)據(jù)庫上就是基本表,而數(shù)據(jù)元素就是基本表中的一個字段(field)。規(guī)范化表達還規(guī)定在每一個基本表中必須定義一個數(shù)據(jù)元素為關鍵字(key),它可以唯一地標識出該表中其它相關的數(shù)據(jù)元素。在規(guī)范化理論中表是二維的,它有如下四個性質:在表中的任意一列上,數(shù)據(jù)項應屬于同一個屬性(如圖中每一列都存放著不同合同記錄的同一屬性數(shù)據(jù))。表中所有行都是不相同的,不允許有重復組項出現(xiàn)(如圖中每一行都是一個不同的合同記錄)。在表中,行的順序無關緊要(如圖中每行存的都是合同記錄,至于先放哪一個合同都沒關系)。在表中,列的順序無關緊要,但不能重復(如圖中合同號和合同名誰先誰后都沒關系,但二者不可重復或同名)。在對表的形式進行了規(guī)范化定義后,數(shù)據(jù)結構還有五種規(guī)范化定義,定名為規(guī)范化模式,稱為范式。在這五種范式中,一般只用前三種,對于常用系統(tǒng)就足夠了。而且這五種范式是“向上兼容”的,即滿足第五范式的數(shù)據(jù)結構自動滿足一、二、三、四范式,滿足第四范式的數(shù)據(jù)結構自動滿足第一、二、三范式,……,依此類推。第一范式(firstnormalform,簡稱1stNF)就是指在同一表中沒有重復項出現(xiàn),如果有則應將重復項去掉。這個去掉重復項的過程就稱之為規(guī)范化處理。在本文所討論的開發(fā)方法里,1stNF實際上是沒有什么意義的。因為我們按規(guī)范化建立的指標體系和表的過程都自動保證了所有表都滿足1stNF。第二范式(secondnormalform,簡稱2ndNF)是指每個表必須有一個(而且僅一個)數(shù)據(jù)元素為主關鍵字(primarykey),其它數(shù)據(jù)元素與主關鍵字一一對應。例如,在圖l9.7中如果我們將合同號定義為主關鍵字(其它數(shù)據(jù)元素中的記錄數(shù)據(jù)都有可能重名,故不能作為主關鍵字),故只要知道了一個合同記錄的合同號,就可以唯一地在同一行中找到該合同的任何一項具體信息。通常我們稱這種關系為函數(shù)依賴(functionaldepEndence)關系。即表中其它數(shù)據(jù)元素都依賴于主關鍵字,或稱該數(shù)據(jù)元素唯一地被主關鍵字所標識。第三范式(thirdnormalform,簡稱3rdNF)就是指表中的所有數(shù)據(jù)元素不但要能夠唯一地被主關鍵字所標識,而且它們之間還必須相互獨立,不存在其它的函數(shù)關系。也就是說對于一個滿足了2ndNF的數(shù)據(jù)結構來說,表中有可能存在某些數(shù)據(jù)元素依賴于其它非關鍵宇數(shù)據(jù)元素的現(xiàn)象,必須加以消除。為防止數(shù)據(jù)庫出現(xiàn)更新異常、插入異常、刪除異常、數(shù)據(jù)冗余太大等現(xiàn)象,關系型數(shù)據(jù)庫要盡量按關系規(guī)范化要求進行數(shù)據(jù)庫設計?!?.3SQL語言基礎2.3.1SQL簡介用戶對數(shù)據(jù)庫的使用,是通過數(shù)據(jù)庫管理系統(tǒng)提供的語言來實現(xiàn)的。不同的數(shù)據(jù)庫管理系統(tǒng)提供不同的數(shù)據(jù)庫語言。關系數(shù)據(jù)庫管理系統(tǒng)幾乎都提供關系數(shù)據(jù)庫標準語言——SQL。SQL的全稱是StructuredQueryLanguage,即結構化查詢語言。SQL語句可以從關系數(shù)據(jù)庫中獲得數(shù)據(jù),也可以建立數(shù)據(jù)庫、增加數(shù)據(jù)、修改數(shù)據(jù)。1986年ANSI采用SQL語言作為關系數(shù)據(jù)庫系統(tǒng)的標準語言,后被國際化標準組織(ISO)采納為國際標準。SQL語言使用方便、功能豐富、簡潔易學,是操作數(shù)據(jù)庫的工業(yè)標準語言,得到廣泛地應用。例如關系數(shù)據(jù)庫產品DB2、ORACLE等都實現(xiàn)了SQL語言。同時,其它數(shù)據(jù)庫產品廠家也紛紛推出各自的支持SQL的軟件或者與SQL的接口軟件。這樣SQL語言很快被整個計算機界認可。SQL語言是一種非過程化語言,它一次處理一個記錄集合,對數(shù)據(jù)提供自動導航。SQL語言允許用戶在高層的數(shù)據(jù)結構上工作,而不對單個記錄進行操作。SQL語言不要求用戶指定數(shù)據(jù)的存取方法,而是使用查詢優(yōu)化器,由系統(tǒng)決定對指定數(shù)據(jù)存取的最快速手段。當設計者在關系表上定義了索引時,系統(tǒng)會自動利用索引進行快速檢索,用戶不需知道表上是否有索引或者有什么類型的索引等細節(jié)。SQL語言可以完成許多功能,例如:●查詢數(shù)據(jù)●在數(shù)據(jù)庫表格中插入、修改和刪除記錄●建立、修改和刪除數(shù)據(jù)對象●控制對數(shù)據(jù)和數(shù)據(jù)對象的存取●確保數(shù)據(jù)庫的一致性和完整性等2.3.2SQL查詢數(shù)據(jù)查詢是關系運算理論在SQL語言中的主要體現(xiàn),SELECT語句是SQL查詢的基本語句,當我們在對一個數(shù)據(jù)庫進各種各樣的操作時,使用的最多的就是數(shù)據(jù)查詢,在以SQL為基礎的關系數(shù)據(jù)庫中,使用的最多的就是SELECT查詢語句。SELECT語句的完整句法如下:SELECT目標表的列名或列表達式序列FROM基本表和(或)視圖序列[WHERE行條件表達式][GROUPBY列名序列][HAVING組條件表達式][ORDERBY列名[ASC│DEAC]…]我在SELECT語句中還使用了大量的保留字和通配符以進行各種各樣的條件查詢。在系統(tǒng)中有大量的查詢按鈕,其使用了大量的查詢語句,而且這些查詢語句大部分使用的是模糊查詢,所以大量的使用了模式匹配符LIKE(判斷值是否與指定的字符通配格式相符)。在包含LIKE的查詢語句中可以使用兩個通配符:%(百分號):與零個或多個字符組成的字符串匹配;_(下劃線):與單個字符匹配。系統(tǒng)中的條件判斷往往包含多個條件,這時就需要使用邏輯運算符NOT、AND、OR(用于多條件的邏輯連接),謂詞ALL以與保留字DISTINCT等等。做為SELECT語句還有很多的使用方法,這里就不再敘述。2.3.3SQL數(shù)據(jù)更新使用數(shù)據(jù)庫的目的是為了有效地管理數(shù)據(jù),而數(shù)據(jù)的插入、刪除和修改則是必不可少的一個功能。在本系統(tǒng)中就大量地使用了數(shù)據(jù)插入、刪除和修改這三種操作,現(xiàn)做一個簡單地介紹?!駭?shù)據(jù)插入往數(shù)據(jù)庫的基本表中插入數(shù)據(jù)使用的是INSERT語句,其方式有兩種:一種是元組值的插入,另一種是查詢結果的插入。在本系統(tǒng)中使用的是前一種方式,其句法如下:INSERTINTO基本表名(列表名)VALUES(元組值)●數(shù)據(jù)刪除往數(shù)據(jù)庫的基本表中刪除數(shù)據(jù)使用的是DELETE語句,其句法如下:DELETEFROM基本表名[WHERE條件表達式]在些作一點說明,刪除語句實際上是“SELECT*FROM基本表名[WHERE條件表達式]”和DELETE操作的結合,每找到一個元組,就把它刪除。此外,DELETE語句只能從一個基本表中刪除元組,WHERE子句中條件可以嵌套,也可以是來自幾個基本表的復合條件。●數(shù)據(jù)修改當需要修改基本表中元組的某些列值時,可以用UPDATE語句實現(xiàn),其句法如下:UPDATE基本表名SET列名=值表達式[,列名=值表達式…][WHERE條件表達式]第三章數(shù)據(jù)庫開發(fā)工具§3.1Eclipse簡介Eclipse是開放源碼社區(qū),其項目專注于提供用于構建軟件的可擴展開發(fā)平臺和應用程序框架。本文給出最新版本Eclipse的鏈接、有關IBM參與Eclipse的信息以與一些最有趣的Eclipse項目的指南。了解Eclipse對誰有益、為何如此重要、如何入門,以與在哪里可以了解有關它的更多信息。什么是Eclipse最簡短的說法是,Eclipse是一個開放源碼社區(qū),專注于開發(fā)框架和示范工具的通用平臺,從而使得構建和部署軟件更簡單且成本有效。這個大型聯(lián)盟包括主要軟件供應商、解決方案提供商、企業(yè)、教研機構和個人,他們密切合作,一起創(chuàng)建一個生態(tài)系統(tǒng),以便用補充的產品、能力和服務增強和形成EclipsePlatform。Eclipse為三類支持者提供價值:基于Eclipse的產品的用戶將獲益于:提供對整個Eclipse生態(tài)系統(tǒng)中研究和知識的訪問經(jīng)受開放源碼社區(qū)詳細審查而產生的高質量軟件Eclipse一致接口導致的重用技術的能力使用Eclipse的Java?技術開發(fā)人員將獲益于:世界級JavaIDE跨平臺的本機外觀Java工具的簡單擴展Eclipse工具的開發(fā)人員將獲益于:可移植和可定制的平臺無縫的工具集成端到端的解決方案Eclipse有什么益處這是難以回答的問題,因為答案取決于詢問的人。從研究人員的角度來看,Eclipse提供了一個允許快速原型、協(xié)作并分享看法的構建于通用架構之上的平臺。從工具開發(fā)人員的角度來看,可以訪問功能強大的可擴展平臺,從而使得快速有效地開發(fā)高質量的工具變得十分容易。如果整個平臺太重量級以至于難以使用,Eclipse提供了RichClientPlatform(RCP),它用于不需要通用資源模型或平臺其他功能的應用程序。RCPFAQ是用于了解RCP能力的重要資源。查看此FAQ中列出的著名項目和流行應用程序將使您對Eclipse的能力有所了解。EclipsePlatform通過為平臺提供源代碼來構建信心和信任。軟件開發(fā)人員厭倦了集成工具和嘗試了解如何使工具在環(huán)境中協(xié)同工作。讓EclipsePlatform成為開放源碼計劃使得工具開發(fā)人員行為一致,而且不僅貢獻新的插件,還幫助改進現(xiàn)有平臺。總之,Eclipse的重要性在于,每個人—工具開發(fā)人員和用戶—都可以獲益于完全公開了如何以行業(yè)級開發(fā)工具,并最終惠與最終用戶?!?.2Access簡介建立一個數(shù)據(jù)庫我們有多種選擇,現(xiàn)在市場上有各種各樣的數(shù)據(jù)庫,而且每一種數(shù)據(jù)庫都有其自身的特點,不能說哪一種更好,只能在其中尋找一種能更好地適應系統(tǒng)需求、更好地滿足用戶的要求以與適應開發(fā)人員的習慣。在本系統(tǒng)中,做為貨品倉庫管理系統(tǒng)是一個比較小的應用系統(tǒng),它所產生和處理的數(shù)據(jù)量也比較小。因此,沒有必要使用像SQLServer和Oracle這樣的大型數(shù)據(jù)庫。我首先想到的數(shù)據(jù)庫是Borland公司的Paradox數(shù)據(jù)庫。另外,MicrosoftOffice中的Access數(shù)據(jù)庫在計算機上的應用比較普與,是開發(fā)小型數(shù)據(jù)庫系統(tǒng)的比較理想的選擇,所以,在本系統(tǒng)中我選擇了Access數(shù)據(jù)庫。Access做為一個數(shù)據(jù)庫管理系統(tǒng),它被集成在MicrosoftOffice中。Access數(shù)據(jù)庫處理的基本結構,采取關系型數(shù)據(jù)庫模式。與其他的數(shù)據(jù)庫系統(tǒng)相比,Access更加簡單易學,一個普通的計算機用戶可以很快地掌握它。Access2000的功能十分強大,利用它可以方便地實現(xiàn)對信息保存、維護、查詢、統(tǒng)計、打印、交流、發(fā)布,而且它可以十分方便地與Office其他組件交流數(shù)據(jù),這些功能對一個一般用戶而言已經(jīng)足夠了。第四章系統(tǒng)總體設計軟件系統(tǒng)的總體設計大約要經(jīng)歷可行性分析和項目開發(fā)計劃,需求分析,概要設計,詳細設計,編碼,測試以與維護等七個階段。可行性分析和項目開發(fā)計劃在前面已經(jīng)敘述,下面所要做的是進行軟件需求分析,概要設計和詳細設計。編碼過程將在下一節(jié)論述,而測試和維護過程不在本文敘與?!?.1系統(tǒng)需求分析在經(jīng)過前一階段的分析之后,我確定了我的開發(fā)課題為貨品倉庫管理?,F(xiàn)在所要做的是要準確定義系統(tǒng)必須做什么以與系統(tǒng)必須具備的功能。軟件需求分析中我采用結構化分析方法(StructuredAnalysis,簡稱SA),SA是面向數(shù)據(jù)流進行需求分析的方法,像所有的軟件分析方法(如面向對象分析方法、IDEF方法等等)一樣,SA也是一種建?;顒?,它使用簡單易讀的符號,根據(jù)軟件內部數(shù)據(jù)傳遞、變換的關系,自頂向下逐層分解,描繪滿足功能要求的軟件模型。在系統(tǒng)中我采用數(shù)據(jù)流圖(DFD)這種半形式化的描述方式表達需求。它是一種功能模型,以圖形的方式描繪數(shù)據(jù)在系統(tǒng)中流動和處理的過程,只反映系統(tǒng)必須完成的邏輯功能。經(jīng)過對系統(tǒng)的分析首先得到系統(tǒng)的頂層DFD,如下:登入系統(tǒng)登入系統(tǒng)驗證用戶信息系統(tǒng)主窗體物資基本信息管理物資出庫信息管理物資余額信息管理用戶管理幫助物資入庫信息管理退出系統(tǒng)在這里只給出系統(tǒng)頂層數(shù)據(jù)流圖,通過以上對數(shù)據(jù)流圖的分析之后,我們已大體地了解了系統(tǒng)的功能和目標,接下來所要做的就是系統(tǒng)功能模塊的劃分和數(shù)據(jù)庫的設計,也就是系統(tǒng)的概要設計。§4.2系統(tǒng)概要設計在軟件需求分析階段,搞清楚了軟件“做什么”的問題,形成了目標系統(tǒng)的邏輯模型?,F(xiàn)在我們所要做的就是要把軟件“做什么”的邏輯模型變換為“怎么做”的物理模型,即著手實現(xiàn)軟件的需求。首先,我們需要描述的是系統(tǒng)的總的體系結構。4.2.1系統(tǒng)結構設計系統(tǒng)的概要設計中最重要的就是系統(tǒng)的模塊化。模塊化是指解決一個復雜問題時自項向下逐層把軟件系統(tǒng)劃分成若干個模塊的過程。每個模塊完成一個特定的功能,所有的模塊按某種方法組織起來,成為一個整體,完成整個系統(tǒng)所要求的功能。將系統(tǒng)劃分為多個模塊是為了降低軟件系統(tǒng)的復雜性,提高可讀性、可維護性,但模塊的劃分不能是任意的,應盡量保持其獨立性。也就是說,每個模塊只完成系統(tǒng)要求的獨立的子功能,并且與其他模塊的聯(lián)系最少且接口簡單,即盡量做到高內聚低耦合,提高模塊的獨立性,為設計高質量的軟件結構奠定基礎。在系統(tǒng)的概要設計中我采用結構化設計(StructureDesign,簡稱SD),SD以需求分析階段產生的數(shù)據(jù)流圖DFD為基礎,按一定的步驟映射成軟件結構。我首先將整個系統(tǒng)化分為幾個小問題,小模塊,在系統(tǒng)中,我設計了用戶管理、物資出庫信息管理、物資入庫信息管理,物資基本信息管理5個小模塊。然后,進一步細分模塊,添加細節(jié)。比如,用戶管理我又將其分為添加用戶、刪除用戶、修改用戶;4.2.2數(shù)據(jù)庫設計在信息世界中,信息從客觀事物出發(fā)流經(jīng)數(shù)據(jù)庫,通過決策機構最后又回到客觀世界,信息的這一循環(huán)經(jīng)歷了三個領域:信息世界,數(shù)據(jù)世界,現(xiàn)實世界。現(xiàn)實世界的事物反映到人的頭腦中,人的大腦對它有個認識過程,經(jīng)過分析(選擇、命名、分類等)進入信息世界。這些信息再進一步加工、編碼,然后進數(shù)據(jù)世界,而軟件系統(tǒng)的開發(fā)工作需要考慮這兩個方面的問題,也就是要考慮系統(tǒng)開發(fā)所需要的數(shù)據(jù),以與如何對這些數(shù)據(jù)進行操作。這兩個問題貫穿了整個軟件系統(tǒng)的開發(fā)過程,這也就是數(shù)據(jù)庫的設計問題,軟件設計的一個核心。本倉庫管理系統(tǒng)是應用在單機系統(tǒng)上的,所以只需建立起一個數(shù)據(jù)庫,在此數(shù)據(jù)庫基礎上建立起表格,現(xiàn)將數(shù)據(jù)表描述如下:物資基本信息表字段名數(shù)據(jù)類型字段長度是否為空物資編號文本10否物資名稱文本50規(guī)格型號文本10類別文本50計量單位文本10入庫信息表字段名數(shù)據(jù)類型字段長度是否為空物資編號文本10物資名稱文本50規(guī)格型號文本10類別文本50計量單位文本10數(shù)量文本10單價文本20金額文本20入庫時間文本50經(jīng)辦人文本50出庫信息表字段名數(shù)據(jù)類型字段長度是否為空物資編號文本10物資名稱文本50規(guī)格型號文本10類別文本50計量單位文本10數(shù)量文本10單價文本20金額文本20出庫時間文本50經(jīng)辦人文本50用戶表字段名數(shù)據(jù)類型字段長度是否為空用戶名文本50否密碼文本20否權限文本30ER圖設計在系統(tǒng)設計的開始,我首先考慮的是如何用數(shù)據(jù)模型來數(shù)據(jù)庫的結構與語義,以對現(xiàn)實世界進行抽象。目前廣泛使用的數(shù)據(jù)模型可分為兩種類型,一種是獨立于計算機系統(tǒng)的“概念數(shù)據(jù)模型”,如“實體聯(lián)系模型”;另一種是直接面向數(shù)據(jù)庫邏輯結構的“結構數(shù)據(jù)模型”。在本系統(tǒng)中我采用“實體聯(lián)系模型”(ER模型)來描述數(shù)據(jù)庫的結構與語義,以對現(xiàn)實世界進行第一次抽象。ER模型直接從現(xiàn)實世界抽象出實體類型與實體間聯(lián)系,然后用ER圖來表示數(shù)據(jù)模型。它有兩個明顯的優(yōu)點:接近于人的思維,容易理解;與計算機無關,用戶容易接受。但ER模型只能說明實體間語義的聯(lián)系,不能進一步說明詳細的數(shù)據(jù)結構,它只是數(shù)據(jù)庫設計的第一步。ER圖是直觀表示概念模型的工具,它有四個基本成分:◆矩形框,表示實體類型(考慮問題的對象)。◆菱形框,表示聯(lián)系類型(實體間的聯(lián)系)?!魴E圓形框,表示實體類型和聯(lián)系類型的屬性。◆直線,聯(lián)系類型與其涉與的實體類型之間以直線連接。本系統(tǒng)為貨品倉庫管理,主要管理物資的入庫、出庫等事項。倉庫根據(jù)需要可以查詢貨品供應商的信息,同時還需要了解在入庫和出庫中員工的參與情況。依據(jù)倉庫管理的實際情況,考慮了多方面的因素以后,確定系統(tǒng)的實體與屬性圖如下:物資實體與屬性圖物資物資物資編號物資名稱計量單位規(guī)格型號類別用戶實體與屬性圖用戶用戶用戶名稱密碼權限入庫屬性圖入庫入庫物資物資編號物資名稱規(guī)格型號類別計量單位數(shù)量單價余額入庫時間經(jīng)辦人出庫屬性圖出庫出庫物資物資編號物資名稱規(guī)格型號類別計量單位數(shù)量單價余額出庫時間經(jīng)辦人在該數(shù)據(jù)庫中,我設計了二個實體,分別是物資,用戶以與兩個聯(lián)系類型入庫和出庫。用戶的添加是考慮到責任問題,也就是說,在倉庫管理的實際運用中,出現(xiàn)了責任不清的現(xiàn)象,特別是由于倉庫的進出貨品數(shù)量都比較大時產生了一系列問題,所以在設計數(shù)據(jù)庫時,我特別考慮到這一點,加入了用戶這一實體。供應商信息的添加主要出于對貨品來源問題的思考。通過添加供應商信息可以比較清楚地了解貨品的進貨渠道,從貨品的質量到供應商的信譽都可以進行了解,同時可以為以后的貨品進購提供一定有用的信息。入庫聯(lián)系類型將物資信息、入庫聯(lián)系在一起,而出庫聯(lián)系類型則將物資信息和出庫較好地聯(lián)接起,同時這兩個聯(lián)系類型又都具有各自特有的屬性?!?.3系統(tǒng)詳細設計在前面的概要設計中,已將系統(tǒng)劃分為多個模塊,并將它們按照一定的原則組裝起來,同時確定了每個功能與模塊之間的外部接口。現(xiàn)在所要做的就是確定每個模塊具體執(zhí)行過程,也可以說是“過程設計”。在處理過程設計時我采用的是結構化程序設計(簡稱SP)方法。需要指出的是系統(tǒng)的詳細設計并不是指具體的編程序,而是將概要設計階段產生的系統(tǒng)功能模塊圖細化成很容易產生程序的圖紙。因此詳細設計的結果基本決定了最終程序的質量。為軟件的質量,延長軟件的生存期,軟件的可測試性、可維護性提供重要的保障。詳細設計的目標不僅是邏輯上正確地實現(xiàn)每個模塊的功能,還應使設計出的處理過程清晰易讀。通過以上步驟,基本上完成了對整個系統(tǒng)的總體設計,接下來所要做的就是軟件的編碼工作。系統(tǒng)總體設計的好壞直接影響著下一步工作,只有在這一階段設計出好的模塊圖和程序流程圖,才能更有利于編碼,產生好的軟件系統(tǒng)。第五章系統(tǒng)應用程序設計§5.1系統(tǒng)窗體模塊組成添加物資基本信息模塊刪除所有物資信息添加物資入庫信息修改物資入庫信息查詢物資入庫信息添加物資出庫信息修改物資出庫信息查詢物資出庫信息查詢物資余額信息添加用戶修改擁護刪除用戶Abort§5.2主窗體功能模塊的實現(xiàn)主窗體運行界面圖如下:代碼如下:publicvoidzhujiemian() { p=newJPanel(); wuzijibenxinxiguanli=newJMenu("物資基本信息管理"); wuzijibenxinxiguanli.setForeground(Color.red); tianjiawuzijibenxinxi=newJMenuItem("添加物資基本信息"); qingchusuoyouwuzixinxi=newJMenuItem("清楚所有物資信息"); qingchusuoyouwuzixinxi.setEnabled(guanliyuan); wuzirukuxinxiguanli=newJMenu("物資入庫信息管理"); wuzirukuxinxiguanli.setForeground(Color.red); tianjiawuzirukuxinxi=newJMenuItem("添加物資入庫信息"); xiugaiwuzirukuxinxi=newJMenuItem("修改物資入庫信息"); chaxunwuzirukuxinxi=newJMenuItem("查詢物資入庫信息"); wuzichukuxinxiguanli=newJMenu("物資出庫信息管理"); wuzichukuxinxiguanli.setForeground(Color.red); tianjiawuzichukuxinxi=newJMenuItem("添加物資出庫信息"); xiugaiwuzichukuxinxi=newJMenuItem("修改物資出庫信息"); chaxunwuzichukuxinxi=newJMenuItem("查詢物資出庫信息"); wuziyuerxinxiguanli=newJMenu("物資余額信息管理"); wuziyuerxinxiguanli.setForeground(Color.red); chaxunwuziyuerxinxi=newJMenuItem("查詢物資余額信息"); yonghuguanli=newJMenu("用戶管理"); yonghuguanli.setForeground(Color.red); tianjiayonghu=newJMenuItem("添加用戶"); shanchuyonghu=newJMenuItem("刪除用戶"); xiugaiyonghu=newJMenuItem("修改用戶"); bangzhu=newJMenu("幫助"); bangzhu.setForeground(Color.red); abort=newJMenuItem("Abort"); caidantiao=newJMenuBar(); setJMenuBar(caidantiao); setTitle("倉庫管理系統(tǒng)"); setSize(800,500); setLocation(100,100); setResizable(false); wuzijibenxinxiguanli.add(tianjiawuzijibenxinxi); wuzijibenxinxiguanli.add(qingchusuoyouwuzixinxi); wuzirukuxinxiguanli.add(tianjiawuzirukuxinxi); wuzirukuxinxiguanli.add(xiugaiwuzirukuxinxi); wuzirukuxinxiguanli.add(chaxunwuzirukuxinxi); wuzichukuxinxiguanli.add(tianjiawuzichukuxinxi); wuzichukuxinxiguanli.add(xiugaiwuzichukuxinxi); wuzichukuxinxiguanli.add(chaxunwuzichukuxinxi); wuziyuerxinxiguanli.add(chaxunwuziyuerxinxi); yonghuguanli.add(tianjiayonghu); yonghuguanli.add(shanchuyonghu); yonghuguanli.add(xiugaiyonghu); bangzhu.add(abort); caidantiao.add(wuzijibenxinxiguanli); caidantiao.add(wuzirukuxinxiguanli); caidantiao.add(wuzichukuxinxiguanli); caidantiao.add(wuziyuerxinxiguanli); caidantiao.add(yonghuguanli); caidantiao.add(bangzhu); tianjiawuzijibenxinxi.addActionListener(this); qingchusuoyouwuzixinxi.addActionListener(this); tianjiawuzirukuxinxi.addActionListener(this); xiugaiwuzirukuxinxi.addActionListener(this); chaxunwuzirukuxinxi.addActionListener(this); tianjiawuzichukuxinxi.addActionListener(this); xiugaiwuzichukuxinxi.addActionListener(this); chaxunwuzichukuxinxi.addActionListener(this); chaxunwuziyuerxinxi.addActionListener(this); tianjiayonghu.addActionListener(this); shanchuyonghu.addActionListener(this); xiugaiyonghu.addActionListener(this); abort.addActionListener(this); addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.exit(0);}}); setVisible(true); }5.3添加物資基本信息模塊運行界面如下:代碼如下:publicvoidtianjiawuzi() { p.removeAll(); JPanelp1,p2; wuzibianhaoF=newJTextField(); wuzimingchengF=newJTextField(); guigexinghaoF=newJTextField(); leibieF=newJTextField(); jiliangdanweiF=newJTextField(); wuzibianhaoF.setText(""); wuzimingchengF.setText(""); guigexinghaoF.setText(""); leibieF.setText(""); jiliangdanweiF.setText(""); JLabelwuzibianhaoL1,wuzimingchengL1,guigexinghaoL1,leibieL1,jiliangdanweiL1; wuzibianhaoL1=newJLabel("物資編號",SwingConstants.CENTER); wuzimingchengL1=newJLabel("物資名稱",SwingConstants.CENTER); guigexinghaoL1=newJLabel("規(guī)格型號",SwingConstants.CENTER); leibieL1=newJLabel("類別",SwingConstants.CENTER); jiliangdanweiL1=newJLabel("計量單位",SwingConstants.CENTER); p1=newJPanel(); p1.setLayout(newGridLayout(5,2,5,10)); p1.add(wuzibianhaoL1);p1.add(wuzibianhaoF); p1.add(wuzimingchengL1);p1.add(wuzimingchengF); p1.add(guigexinghaoL1);p1.add(guigexinghaoF); p1.add(leibieL1);p1.add(leibieF); p1.add(jiliangdanweiL1);p1.add(jiliangdanweiF); tianjiaB=newJButton("添加"); shanchuB=newJButton("刪除"); xiugaiB=newJButton("修改"); fanhuiB=newJButton("返回"); shanchuB.setEnabled(false); xiugaiB.setEnabled(false); tianjiaB.addActionListener(newtianjiawuziB1(this)); shanchuB.addActionListener(newshanchuwuziB1(this)); xiugaiB.addActionListener(newxiugaiwuziB1(this)); fanhuiB.addActionListener(newfanhuiB1(this)); p2=newJPanel(); p2.setLayout(newFlowLayout(FlowLayout.CENTER)); p2.add(tianjiaB); p2.add(shanchuB); p2.add(xiugaiB); p2.add(fanhuiB); JPanelp3=newJPanel(); p3.setLayout(newGridLayout(1,2,20,5)); p3.add(p1);p3.add(p2); JPanelp4=newJPanel(); p4.setLayout(newGridLayout(1,9,20,10)); JLabelwuzibianhaoL,wuzimingchengL,guigexinghaoL,leibieL,jiliangdanweiL; wuzibianhaoL=newJLabel("物資編號",SwingConstants.CENTER); wuzimingchengL=newJLabel("物資名稱",SwingConstants.CENTER); guigexinghaoL=newJLabel("規(guī)格型號",SwingConstants.CENTER); leibieL=newJLabel("類別",SwingConstants.CENTER); jiliangdanweiL=newJLabel("計量單位",SwingConstants.CENTER); JLabelkongge1=newJLabel(""); JLabelkongge2=newJLabel(""); JLabelkongge3=newJLabel(""); JLabelkongge4=newJLabel("");p4.add(wuzibianhaoL);p4.add(kongge1);p4.add(wuzimingchengL);p4.add(kongge2);p4.add(guigexinghaoL);p4.add(kongge3);p4.add(leibieL);p4.add(kongge4);p4.add(jiliangdanweiL); shuju=newList(); JPanelp5=newJPanel(); p5.setLayout(newFlowLayout(FlowLayout.CENTER)); p5.add(p4); shuju.removeAll(); try {Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch(ClassNotFoundExceptionex){ System.out.println(ex.getMessage());} try { Connectioncon=DriverManager.getConnection("jdbc:odbc:haha","haha","123"); Statementpstmt=con.createStatement(); ResultSetrs=pstmt.executeQuery("select*from物資基本信息"); while(rs.next()) { inti=15; intlength; Stringstr=""; StringwuzibianhaoS,wuzimingchengS,guigexinghaoS,leibieS,jiliangdanweiS; wuzibianhaoS=rs.getString(1); length=wuzibianhaoS.length(); str=str+wuzibianhaoS; while(i-length>=0) { str=str+""; i--; } wuzimingchengS=rs.getString(2); length=wuzimingchengS.length(); i=15; str=str+wuzimingchengS; while(i-length>=0)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論