超市收銀系統(tǒng)的設計與實現(xiàn)畢業(yè)設計說明書_第1頁
超市收銀系統(tǒng)的設計與實現(xiàn)畢業(yè)設計說明書_第2頁
超市收銀系統(tǒng)的設計與實現(xiàn)畢業(yè)設計說明書_第3頁
超市收銀系統(tǒng)的設計與實現(xiàn)畢業(yè)設計說明書_第4頁
超市收銀系統(tǒng)的設計與實現(xiàn)畢業(yè)設計說明書_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

畢業(yè)設計說明書題目:超市收銀系統(tǒng)的設計與實現(xiàn)產(chǎn)品設計工藝設計方案設計類型:學生姓名:學號:_________________學院:軟件學院專業(yè):軟件技術(shù)(軟件開發(fā)方向)班級:學校指導教師:企業(yè)指導教師:2016年05月03日目錄TOC\o"1-3"\u1.緒論 11.1項目開發(fā)主要技術(shù)java介紹 緒論雖然在當今的21世紀,各種商場的收銀系統(tǒng)都很齊全,但是不免會有些許的不足,比如傳統(tǒng)的按單結(jié)算,但是我想開發(fā)一款既能收銀服務,又能管理超市的各項業(yè)務,比如銷售模塊,庫存模塊,商品模塊,進退貨模塊等,這樣一來就比傳統(tǒng)的收銀系統(tǒng)在功能上和經(jīng)濟上更加方便快捷,因為現(xiàn)在市場上的競爭與日俱增,不僅僅是軟件這方面的競爭了,更是各行各業(yè)的事情,一款簡單方便的收銀系統(tǒng)肯定是必須的,自此我選擇了超市收銀這個系統(tǒng),以我最大的努力設計出獨具一格且富有經(jīng)濟性的軟件,節(jié)省人力物力!僅靠計算機輕松實現(xiàn)收銀與管理,不管是效率還是速度都遠遠超過人工!尤其是本系統(tǒng)的后臺管理,可謂是萬事俱備。本系統(tǒng)采用了eclipse開發(fā)java項目,Oracle作為數(shù)據(jù)庫的開發(fā)軟件,取名為emp,利用jdbc技術(shù)進行連接用來保存各種數(shù)據(jù),商品管理模塊實現(xiàn)了添加商品以及進出貨管理,用戶管理實現(xiàn)了用戶信息添加比如收銀員、管理員、會員、顧客等和用戶信息查詢,庫存查詢模塊實現(xiàn)了快速瀏覽查詢和較為詳細的查詢,信息查詢模塊實現(xiàn)了根據(jù)商品編號和條形碼來查詢商品的信息,銷售管理功能模塊實現(xiàn)了可以查詢商品的銷售的相關(guān)信息,可以顯示已經(jīng)銷售掉的商品的名稱、商品編碼、銷售數(shù)量、銷售金額、銷售日期以及金額??偠灾@款超市收銀系統(tǒng)的開發(fā)對我對企業(yè)一定有很大的幫助。1.1項目開發(fā)主要技術(shù)java介紹Java是由SunMicrosystems公司于1995年5月推出的Java面向?qū)ο蟪绦蛟O計語言和Java平臺的總稱。由JamesGosling和同事們共同研發(fā),并在1995年正式推出。JAVA語言的主要特征有以下幾點:1.Java語言是簡單的:Java語言的語法與C語言和C++語言很接近,使得大多數(shù)程序員很容易學習和使用。另一方面,Java丟棄了C++中很少使用的、很難理解的、令人迷惑的那些特性,如操作符重載、多繼承、自動的強制類型轉(zhuǎn)換。特別地,Java語言不使用指針,而是引用。并提供了自動的廢料收集,使得程序員不必為內(nèi)存管理而擔憂。2.Java語言是面向?qū)ο蟮模篔ava語言提供類、接口和繼承等原語,為了簡單起見,只支持類之間的單繼承,但支持接口之間的多繼承,并支持類與接口之間的實現(xiàn)機制(關(guān)鍵字為implements)。Java語言全面支持動態(tài)綁定,而C++語言只對虛函數(shù)使用動態(tài)綁定??傊?,Java語言是一個純的面向?qū)ο蟪绦蛟O計語言。3.Java語言是分布式的:Java語言支持Internet應用的開發(fā),在基本的Java應用編程接口中有一個網(wǎng)絡應用編程接口(javanet),它提供了用于網(wǎng)絡應用編程的類庫,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(遠程方法激活)機制也是開發(fā)分布式應用的重要手段。4.Java語言是健壯的:Java的強類型機制、異常處理、垃圾的自動收集等是Java程序健壯性的重要保證。對指針的丟棄是Java的明智選擇。Java的安全檢查機制使得Java更具健壯性。5.Java語言是安全的:Java通常被用在網(wǎng)絡環(huán)境中,為此,Java提供了一個安全機制以防惡意代碼的攻擊。除了Java語言具有的許多安全特性以外,Java對通過網(wǎng)絡下載的類具有一個安全防范機制(類ClassLoader),如分配不同的名字空間以防替代本地的同名類、字節(jié)代碼檢查,并提供安全管理機制(類SecurityManager)讓Java應用設置安全哨兵。6.Java語言是體系結(jié)構(gòu)中立的:Java程序(后綴為java的文件)在Java平臺上被編譯為體系結(jié)構(gòu)中立的字節(jié)碼格式(后綴為class的文件),然后可以在實現(xiàn)這個Java平臺的任何系統(tǒng)中運行。這種途徑適合于異構(gòu)的網(wǎng)絡環(huán)境和軟件的分發(fā)。7.Java語言是可移植的:這種可移植性來源于體系結(jié)構(gòu)中立性,另外,Java還嚴格規(guī)定了各個基本數(shù)據(jù)類型的長度。Java系統(tǒng)本身也具有很強的可移植性,Java編譯器是用Java實現(xiàn)的,Java的運行環(huán)境是用ANSIC實現(xiàn)的。8.Java語言是解釋型的:如前所述,Java程序在Java平臺上被編譯為字節(jié)碼格式,然后可以在實現(xiàn)這個Java平臺的任何系統(tǒng)中運行。在運行時,Java平臺中的Java解釋器對這些字節(jié)碼進行解釋執(zhí)行,執(zhí)行過程中需要的類在聯(lián)接階段被載入到運行環(huán)境中。9.Java是高性能的:與那些解釋型的高級腳本語言相比,Java的確是高性能的。事實上,Java的運行速度隨著JIT(Just.In.Time)編譯器技術(shù)的發(fā)展越來越接近于C++。10.Java語言是多線程的:在Java語言中,線程是一種特殊的對象,它必須由Thread類或其子(孫)類來創(chuàng)建。通常有兩種方法來創(chuàng)建線程:其一,使用型構(gòu)為Thread(Runnable)的構(gòu)造子將一個實現(xiàn)了Runnable接口的對象包裝成一個線程,其二,從Thread類派生出子類并重寫run方法,使用該子類創(chuàng)建的對象即為線程。值得注意的是Thread類已經(jīng)實現(xiàn)了Runnable接口,因此,任何一個線程均有它的run方法,而run方法中包含了線程所要運行的代碼。線程的活動由一組方法來控制。Java語言支持多個線程的同時執(zhí)行,并提供多線程之間的同步機制(關(guān)鍵字為synchronized)。11.Java語言是動態(tài)的:Java語言的設計目標之一是適應于動態(tài)變化的環(huán)境。Java程序需要的類能夠動態(tài)地被載入到運行環(huán)境,也可以通過網(wǎng)絡來載入所需要的類。這也有利于軟件的升級。另外,Java中的類有一個運行時刻的表示,能進行運行時刻的類型檢查。關(guān)于數(shù)據(jù)庫連接,java中鏈接數(shù)據(jù)庫的技術(shù)是jdbc,java程序通過jdbc驅(qū)動程序與數(shù)據(jù)庫相連,執(zhí)行DDL、DML、tcl、等操作。目前大多數(shù)數(shù)據(jù)庫系統(tǒng)都帶有jdbc驅(qū)動程序,所以java能夠訪問Oracle、MYSQL、等等數(shù)據(jù)庫。1.2項目開發(fā)主要技術(shù)Oracle簡介ORACLE數(shù)據(jù)庫系統(tǒng)是美國ORACLE公司(甲骨文)提供的以分布式數(shù)據(jù)庫為核心的一組軟件產(chǎn)品,是目前最流行的客戶/服務器(CLIENT/SERVER)或B/S體系結(jié)構(gòu)的數(shù)據(jù)庫之一。比如SilverStream就是基于數(shù)據(jù)庫的一種中間件。ORACLE數(shù)據(jù)庫是目前世界上使用最為廣泛的數(shù)據(jù)庫管理系統(tǒng),作為一個通用的數(shù)據(jù)庫系統(tǒng),它具有完整的數(shù)據(jù)管理功能;作為一個關(guān)系數(shù)據(jù)庫,它是一個完備關(guān)系的產(chǎn)品;作為分布式數(shù)據(jù)庫它實現(xiàn)了分布式處理功能。但它的所有知識,只要在一種機型上學習了ORACLE知識,便能在各種類型的機器上使用它。它的特點有以下幾點:1、完整的數(shù)據(jù)管理功能:1)數(shù)據(jù)的大量性2)數(shù)據(jù)的保存的持久性3)數(shù)據(jù)的共享性4)數(shù)據(jù)的可靠性2、完備關(guān)系的產(chǎn)品:1)信息準則:關(guān)系型DBMS的所有信息都應在邏輯上用一中方法,即表中的值顯式地表示;2)保證訪問的準則3)視圖更新準則:只要形成視圖的表中的數(shù)據(jù)變化了,相應的視圖中的數(shù)據(jù)同時變化4)數(shù)據(jù)物理性和邏輯性獨立準則關(guān)于Oracle的管理:創(chuàng)建數(shù)據(jù)庫,數(shù)據(jù)庫的創(chuàng)建就是準備若干個操作系統(tǒng)文件,使其能夠作為一個ORACLE數(shù)據(jù)庫運轉(zhuǎn),用于數(shù)據(jù)存儲。然而,對于一個數(shù)據(jù)庫系統(tǒng)來說,無論其數(shù)據(jù)庫由多少個數(shù)據(jù)庫文件組成或被多少個例程所存取,數(shù)據(jù)庫需要被創(chuàng)建一次。針對一個現(xiàn)存的數(shù)據(jù)庫進行創(chuàng)建工作,將毀壞先前數(shù)據(jù)庫文件中已經(jīng)存在的任何數(shù)據(jù)。修改數(shù)據(jù)庫配置,ORACLE數(shù)據(jù)庫能夠處于三種不同的狀態(tài),決定了其可用性:①卸載狀態(tài)數(shù)據(jù)庫當前不與任何例程相聯(lián)系,DBA用戶和普通用戶均不能存取。②裝載且關(guān)閉狀態(tài)數(shù)據(jù)庫當前已與一個例程相聯(lián)系,僅DBA用戶能夠存取(進行系統(tǒng)維護)。③裝載且打開狀態(tài)數(shù)據(jù)庫當前能夠用于正常的數(shù)據(jù)庫操作,DBA用戶和普通用戶均能夠存取。1.3項目開發(fā)主要技術(shù)Visio2010簡介MicrosoftVisio使用各種預繪制的形狀、示例繪圖以及用于IT、業(yè)務、流程管理和更多方面的模板集快速開始圖表繪制。對于任何類型的繪圖需要,Visio都可幫助您快速開始工作。在一個位置即可找到完成繪圖任務所需的任何信息。使用功能區(qū)選項卡中的邏輯功能組合(增強的形狀窗口)可輕松訪問形狀和模具,全新的狀態(tài)欄可幫助您在圖表之間和圖表中更高效地移動,這樣,創(chuàng)建圖表的每個步驟都更直觀。使用諸如快速形狀浮動工具欄、增強的動態(tài)網(wǎng)格、自動布局調(diào)整和自動調(diào)整頁面大小等功能添加和對齊形狀。使用子流程和容器可直觀且合理地組合相關(guān)形狀,從而簡化了大型復雜的圖表。子流程是單獨頁上的小型圖表,它鏈接到更大圖表中的子流程形狀,從而將圖表中的復雜流程分割為更易管理的部分。容器可幫助您組織不同的形狀集并說明它們在圖表中的相互關(guān)系。使用新穎的形狀和可視效果、豐富的主題庫和實時預覽可快速將您的圖表裝扮得外觀專業(yè)且引入注目。針對業(yè)務規(guī)則和邏輯核對圖表以確保圖表中的準確性和一致性。只需一次單擊,即可驗證圖表以確保其結(jié)構(gòu)合理且適當。使用包含SharePoint工作流規(guī)則和邏輯的全新高級模板,以及在MicrosoftSharePointDesigner2010和Visio2010之間導出和導入工作流的功能,可以比以往更輕松地創(chuàng)建和監(jiān)視SharePoint工作流。需求分析需求分析是指理解用戶需求,就軟件功能與客戶達成一致,需求分析的任務就是解決做什么的問題,就是要全面地理解用戶的各項要求,并準確地表達所接受的用戶需求,具有決策性、方向性、策略性的作業(yè)。2.1超市收銀系統(tǒng)設計要求和目標超市收銀系統(tǒng)主要還是以客戶為中心,根據(jù)用戶的需求來定義各種功能,將信息技術(shù)應用到普通超市進行管理,通過點擊按鈕操作各項功能。為了達到預期設定應用目標,最基本的要求是系統(tǒng)能夠運行起來,實現(xiàn)集成化應用,建立規(guī)范的超市收銀系統(tǒng),堅決以提高收益和客戶利益為主要原則!銷售管理、庫存查詢、用戶管理、信息查詢、商品管理等各項功能的實現(xiàn)。以簡便操作高效益為主體!理員可以隨時查詢信息,這個系統(tǒng)主要功能模塊為銷售管理。內(nèi)部各功能模塊緊密相連,都是相互協(xié)作運行的,讓客戶感受到超市收銀的管理嚴謹系統(tǒng)齊全,讓企業(yè)管理者容易管理,并且易于操作,簡單明了。2.2超市收銀系統(tǒng)可行性分析2.2.1經(jīng)濟可行性分析經(jīng)濟可行性對于企業(yè)來說,就是能否應用得當,能否有實際的經(jīng)濟意義,能不能給企業(yè)帶來利益自己節(jié)省開支等,這次設計的超市收銀系統(tǒng)能夠很好地將實際情況與程序緊密結(jié)合起來,特別有利于提高企業(yè)的效率,增加收益,在經(jīng)營方面,該系統(tǒng)大大提高了效益,避免了客戶排隊長時間等待的情況,同時增加了經(jīng)濟收入,因為有時客流量一多就容易流失客戶,但是有了這個系統(tǒng)就方便了許多,更帶來了方便快捷,省人省力!經(jīng)濟上完全可行。2.2.2操作可行性分析由于還是學生,設計的系統(tǒng)肯定不會很難操作,肯定是越簡單方便越好,可以在各種windows系統(tǒng)運行,界面友好,使用輕松,操作簡單易懂,格式簡單明了,非常適合各種等級的收銀員使用。2.2.3技術(shù)可行性分析技術(shù)可行性主要是指開發(fā)人員能否順利完成系統(tǒng)開發(fā),水平技術(shù)能否達標等,開發(fā)設備是否可以支持程序開發(fā),當然,現(xiàn)在的計算機硬件不斷更新增強,有足夠的功能支持開發(fā),本系統(tǒng)在技術(shù)上也是完全可行的。2.3業(yè)務流程需求分析超市收銀系統(tǒng)流程圖如下。管理員的流程圖:如圖2.1所示。銷售管理銷售管理銷售管理管理員銷售管理管理員增刪改查后臺頁面登錄成功增刪改查后臺頁面登錄銷售管理銷售管理銷售管理失敗銷售管理銷售管理銷售管理圖2.1管理員操作流程圖收銀員的流程圖:如圖2.2所示。管理員結(jié)算管理員結(jié)算輸入商品編號輸入商品編號找零找零圖2.2收銀員的流程圖這次的系統(tǒng)流程運作也很簡單,首先打開項目運行進入到主界面,在主界面收銀員可以進行收銀,刪除取消等普通操作,進行銷售結(jié)算和添刪改,管理員身份可以經(jīng)過驗證轉(zhuǎn)到后臺進行后臺管理,因為考慮到安全問題,除了收銀以及簡單的刪除和銷售功能所有的功能都先要經(jīng)過管理員驗證才可以使用,這樣保證了企業(yè)信息的安全性。3.概要設計3.1超市收銀系統(tǒng)的設計需求邏輯結(jié)構(gòu)收銀以及簡單的刪除取消等操作是第一要實現(xiàn)的,再者要進行商品添加,用戶(收銀員)的添加和會員的添加,還有進貨添加。收銀員可以通過掃碼以及輸入商品編號的方法進行結(jié)算賬單,對于員工的管理設計,這里面設置了用戶管理、信息查詢模塊,使員工和管理員可以快速了解到需要查詢的內(nèi)容,處理相關(guān)數(shù)據(jù)信息等。下面是系統(tǒng)功能的總體瀏覽,本系統(tǒng)主要分為五個模塊:銷售管理模塊、庫存查詢模塊、用戶管理模塊、信息查詢模塊、商品管理模塊。如圖3.1所示。超市收銀系統(tǒng)超市收銀系統(tǒng)銷售收銀銷售收銀用戶管理銷售管理庫存查詢信息查詢商品管理用戶管理銷售管理庫存查詢信息查詢商品管理輸入輸入結(jié)算結(jié)算圖3.1超市收銀系統(tǒng)整體結(jié)構(gòu)3.2超市收銀系統(tǒng)的設計系統(tǒng)功能結(jié)構(gòu)本系統(tǒng)功能模塊設計包括五個部分:銷售管理、庫存查詢、用戶管理、信息查詢、商品管理。銷售管理模塊功能描述:銷售管理功能可以查詢商品的銷售信息,并以列表的形式輸出銷售商品的商品名稱、商品編碼、銷售數(shù)量、銷售金額、銷售日期以及金額。如圖3.2所示。銷售管理查詢銷售管理輸出金額銷售日期銷售金額銷售數(shù)量商品編碼商品名稱用戶管理金額銷售日期銷售金額銷售數(shù)量商品編碼商品名稱用戶管理圖3.2銷售管理模塊功能圖庫存查詢模塊功能描述:庫存查詢功能可以分為快速瀏覽查詢和詳細查詢,其中快速瀏覽查詢就是一次性顯示所有的信息,詳細查詢就是查詢商品編號顯示的信息。如圖3.3所示。庫存查詢庫存查詢詳細查詢?yōu)g覽查詢詳細查詢?yōu)g覽查詢商品編號商品庫存信息商品信息返回商品庫存信息商品信息圖3.3庫存查詢功能模塊圖用戶管理用戶管理模塊功能描述:用戶管理查詢功能可以查詢用戶賬戶信息。如圖3.4所示。用戶管理商品庫存信息商品庫存信息通過管理員商品庫存信息商品庫存信息圖3.4用戶管理功能模塊圖信息查詢信息查詢功能模塊描述:信息查詢功能可以根據(jù)商品的名稱編號或者條形碼來查詢商品的相關(guān)信息。如圖3.5所示。信息查詢編號、條形碼查詢商品信息名稱查詢商品信息圖3.5信息查詢圖商品管理功能模塊描述:商品管理功能可以進行出入庫的管理以及添加商品的功能。如圖3.6所示。商品管理商品管理通過管理員出入庫出入庫添加商品進出貨添加商品進出貨圖3.6商品管理功能模塊圖4.數(shù)據(jù)庫設計4.1數(shù)據(jù)庫設計原則一個項目的數(shù)據(jù)庫在整個程序中起著很大的作用,數(shù)據(jù)庫可以儲存項目所有的信息,進行增刪改查,在這個系統(tǒng)中占著最主要的位置。數(shù)據(jù)庫的設計直接與程序掛鉤,會影響整個程序,一個好的數(shù)據(jù)庫,可以提高數(shù)據(jù)信息的存儲效率,可以保證數(shù)據(jù)的安全性與全面性。再者,只要數(shù)據(jù)庫設計好了,程序也就實現(xiàn)了一大半了。這次的數(shù)據(jù)庫名稱我用orcl作為后臺數(shù)據(jù)庫。4.2數(shù)據(jù)庫概念結(jié)構(gòu)設計數(shù)據(jù)庫的原則是共享性、獨立性、完整性、靈活性、安全與保密性。本系統(tǒng)采用了orcl作為后臺數(shù)據(jù)庫,共分為九個表,分別是:用戶表usermanage用戶實體有10個字段,分別是:卡號,持卡人,證件號,級別,折扣率,類型,期限,積分,開發(fā)日期,備注。實體如圖4.1所示。CardDateUserGradePasswordCardDateUserGradePasswordIDcardtermIDcardtermUserNameintegralUserNameintegralCardIDagioCardIDagioremark用戶表usermanageremark用戶表usermanage圖4.1用戶實體圖2.進退貨表backsale本系統(tǒng)的進退貨實體分為九個字段,分別為:退貨品編號,產(chǎn)品編號,產(chǎn)品名稱,序號,價格,進貨日期,超市名稱,理由。實體如圖4.2所示。PriceBNumberPriceBNumberJtDateJtDateProductNameSuperMarketProductNameSuperMarketProduct_IDNextBackProduct_IDNextBackBackSale_IDreasonBackSale_IDreason進退貨表backsale進退貨表backsale圖4.2進退貨實體圖3.商品表merchandise本系統(tǒng)的商品實體分為九個字段,分別為:卡號,持卡人,證件號,級別,折扣率,類型,期限,積分,開發(fā)日期,備注。實體如圖4.3所示。RetailPriceRetailPriceMerchandiseNameMerchandiseNameMerchandiseSpecUnitsSortNumberMerchandiseSpecUnitsSortNumberPurchasePriceTreatyCodePurchasePriceTreatyCodeMerchandiseNumberCheckTermMerchandiseNumberCheckTermRemarkRemark商品表merchandiseSequenceNumber商品表merchandiseSequenceNumber圖4.3商品實體圖4.付款表paymentlist本系統(tǒng)的付款實體分為八個字段,分別為:商品編號,商品名稱,規(guī)格,單位,數(shù)量,售價,折扣,金額。實體如圖4.4所示。PriceBNumberPriceBNumberJtDateJtDateSuperMarketSuperMarketProductNameProductNameNextBackNextBackreasonBackSale_IDreasonBackSale_ID付款表paymentlist付款表paymentlist圖4.4付款實體圖5.銷售表sale本系統(tǒng)的銷售實體分為八個字段,分別為:商品編碼,商品名稱,銷售數(shù)量,銷售金額,收效日期,金額小計。實體如圖4.5所示。SNumberSaleDateSNumberSaleDatePricePriceDiscountDiscountProductIDProductIDVIP_IDVIP_IDProductNameSale_IDProductNameSale_ID銷售表sale銷售表sale圖4.5銷售實體圖6.商品類別表sort本系統(tǒng)的商品類別實體分為三個字段,分別為:類別序號,類別編號,類別名稱。實體如圖4.6所示。SortNumberSortNumberSortIDSortIDSortNameSortName商品類別表sort商品類別表sort圖4.6商品類別實體圖7.采購表stock本系統(tǒng)的采購實體分為九個字段,分別為:編號,商品編號,商品名稱,商品部門,商品序號,進貨價,實價,進貨日期,備注。實體如圖4.7所示。overallmoneydataSnumberoverallmoneydataSnumberMerchandiseNumberMerchandiseNumberMerchandiseNameMerchandiseNamedepartmentdepartmentunitpriceIdunitpriceIdremark采購表stockremark采購表stockpaymentdatepaymentdate圖4.7采購實體圖8.入出庫表enterstock本系統(tǒng)的入出庫實體分為八個字段,分別為:編號,數(shù)量,進貨價,總金額,日期,倉庫號,經(jīng)手人,填單人。實體如圖4.8所示。dealWithHumanPutDatadealWithHumanPutDataENumberENumberinoutinoutPurchasePricePurchasePricedownNamedownNameStoreHouse_IDMerNumberStoreHouse_IDMerNumber入出庫表enterstock入出庫表enterstockEnterStock_IDEnterStock_ID圖4.8入出庫實體圖9.庫存表stockpile本系統(tǒng)的庫存實體分為八個字段,分別為:序號,商品名稱,編號。實體如圖4.9所示。MerchandiseNumberMerchandiseNumberIDIDSSnumberSSnumber庫存表stockpile庫存表stockpile圖4.9庫存實體圖4.3數(shù)據(jù)庫物理結(jié)構(gòu)設計在概念結(jié)構(gòu)之后,物理結(jié)構(gòu)也是同等重要,數(shù)據(jù)庫邏輯設計需要經(jīng)過周密的思考,考慮到方面詳情,兼顧到各個方面,肯定不是件簡單的事情,在這里我分為了九個表,分別根據(jù)了五大模塊而設計的,也考慮到了各個方面,像用戶表我就列出了十個字段,是否空值和什么數(shù)據(jù)類型,接下來介紹每個表的詳細情況。用戶表用來保存用戶的基本信息,如表4.10所示。表4.10用戶基本信息表屬性名稱含義數(shù)據(jù)類型主要屬性說明CardId卡號int主鍵用于儲存用戶卡號UserName持卡人varchar2(20)notnull用于儲存用戶名字IDcard證件號varchar2(20)notnull用于儲存用戶證件號Password級別varchar2(20)notnull用于儲存用戶級別CardDate折扣率varchar2(30)notnull用于儲存用戶折扣率UserGrade類型varchar2(16)notnull用于儲存用戶類型term期限Char(10)notnull用于儲存用戶期限integral積分Char(10)notnull用于儲存用戶積分agio開發(fā)日期Char(10)notnull用于儲存用戶開發(fā)日期remark備注varchar2(200)notnull用于儲存用戶備注2.進退貨表用來保存進退貨的基本信息,如表4.11所示。表4.11進退貨基本信息表屬性名稱含義數(shù)據(jù)類型主要屬性說明BackSale_ID退貨品編號number主鍵用于儲存進退貨編號Product_ID產(chǎn)品編號varchar(50)notnull用于儲存編號ProductName產(chǎn)品名稱varchar2(20)notnull用于儲存名稱BNumber序號numbernotnull用于儲存序號Price價格numbernotnull用于儲存價格JtDate進貨日期varchar2(30)notnull用于儲存進貨日期SuperMarket超市名稱varchar2(16)notnull用于儲存超市名稱NextBack理由varchar2(250)notnull用于儲存理由商品表用來保存商品的基本信息,如表4.12所示。表4.12商品基本信息表屬性名稱含義數(shù)據(jù)類型主要屬性說明SequenceNumber商品編碼int主鍵用于儲存商品編碼MerchandiseNumber條形碼varchar2(20)notnull用于儲存商品條形碼TreatyCode類別編號varchar2(20)notnull用于儲存商品類別編碼SortNumber簡碼varchar2(20)notnull用于儲存商品簡碼MerchandiseName商品名稱varchar2(50)notnull用于儲存商品名稱RetailPrice零售價numbernotnull用于儲存商品零售價MerchandiseSpec商品規(guī)格varchar2(50)notnull用于儲存商品規(guī)格Units計量單位varchar2(20)notnull用于儲存商品計量單位PurchasePrice進貨價numbernotnull用于儲存商品進貨價CheckTerm保質(zhì)期numbernotnull用于儲存商品保質(zhì)期Remark備注varchar2(50)notnull用于儲存商品備注4.付款表用來保存付款的基本信息,如表4.13所示。表4.13付款基本信息表屬性名稱含義數(shù)據(jù)類型主要屬性說明OddNumber商品編號int主鍵用于儲存商品編號Victualer商品名稱varchar2(10)notnull用于儲存商品名稱Coin規(guī)格varchar2(10)notnull用于儲存商品規(guī)格PaymentFashion單位varchar2(20)notnull用于儲存商品單位ChequeNumber數(shù)量varchar2(20)notnull用于儲存商品數(shù)量Dates售價varchar2(26)notnull用于儲存商品售價DealWithMan折扣varchar2(10)notnull用于儲存商品折扣MakeLiseMan金額varchar2(10)notnull用于儲存商品金額5.銷售表用來保存銷售的基本信息,如表4.14所示。表4.14銷售基本信息表屬性名稱含義數(shù)據(jù)類型主要屬性說明Sale_ID商品編碼number主鍵用于儲存商品編碼ProductID產(chǎn)品編號varchar2(10)notnull用于儲存產(chǎn)品編號SaleDate銷售日期varchar2(50)notnull用于儲存銷售日期SNumber銷售數(shù)量numbernotnull用于儲存銷售數(shù)量Price銷售金額varchar2(10)notnull用于儲存銷售金額Discount折扣率varchar2(10)notnull用于儲存折扣率VIP_ID會員卡號varchar2(10)notnull用于儲存會員卡號ProductName商品名稱varchar2(50)notnull用于儲存商品名稱商品類別表用來保存商品類別的基本信息,如表4.15所示。表4.15商品類別基本信息表屬性名稱含義數(shù)據(jù)類型主要屬性說明SortID類別序號Int(4)主鍵用于儲存類別序號SortNumber銷售日期varchar2(20)notnull用于儲存類別編號SortName類別名稱varchar2(20)notnull用于儲存類別名稱采購表用來保存采購的基本信息,如表4.16所示。表4.16采購基本信息表屬性名稱含義數(shù)據(jù)類型主要屬性說明id編號Int(4)主鍵用于儲存編號MerchandiseNumber商品編號varchar2(50)notnull用于儲存商品編號MerchandiseName商品名稱varchar2(50)notnull用于儲存商品名稱department商品部門numbernotnull用于儲存商品部門Snumber商品序號varchar2(20)notnull用于儲存商品序號unitprice進貨價varchar2(20)notnull用于儲存進貨價overallmoney實價varchar2(20)notnull用于儲存實價data商品名稱varchar2(26)notnull用于儲存商品名稱paymentdate進貨日期varchar2(10)notnull用于儲存進貨日期remark備注varchar2(50)notnull用于儲存?zhèn)渥?.入出庫表用來保存入出庫的基本信息,如表4.17所示。表4.17入出庫基本信息表屬性名稱含義數(shù)據(jù)類型主要屬性說明EnterStock_ID編號int主鍵用于儲存編號MerNumber數(shù)量varchar(30)notnull用于儲存數(shù)量ENumber進貨價numbernotnull用于儲存進貨價PurchasePrice總金額numbernotnull用于儲存總金額PutData日期varchar2(30)notnull用于儲存日期StoreHouse_ID倉庫號varchar2(20)notnull用于儲存?zhèn)}庫號dealWithHuman倉庫號varchar2(20)notnull用于儲存?zhèn)}庫號downName填單人varchar2(20)notnull用于儲存填單人9.庫存庫表用來保存庫存的基本信息,如表4.18所示。表4.18庫存基本信息表屬性名稱含義數(shù)據(jù)類型主要屬性說明ID序號number主鍵用于儲存序號MerchandiseNumber商品名稱varchar2(20)notnull用于儲存商品名稱SSnumber編號numbernotnull用于儲存編號5.系統(tǒng)實現(xiàn)5.1主銷售界面設計1、系統(tǒng)主界面截圖如下。運行軟件進入主界面,進入銷售模塊,在主界面用戶可以進行銷售作業(yè),通過輸入商品編號可以拿到折扣率以及價格,還可以獲得當前時間,并且回車能夠得到結(jié)算頁面自動算出實收以及找零即系統(tǒng)自動列出所購商品的詳細信息,并自動計算當前購物車所有商品的總價,即應收,輸入實收金額自動計算找零,點擊回車完成交易。如圖5.1所示:圖5.1系統(tǒng)主頁面主要代碼如下:publicvoidjTextField5_keyReleased(KeyEvente){intt=(int)e.getKeyChar();if(t==10){//如果輸入的是回車鍵try{Doublegather=newDouble(jTextField5.getText());System.out.println(gather);doublegathering=((int)(gather*100))/100.0;Doubleaccount=newDouble(jTextField3.getText());System.out.println(account);doublegivechange=((int)((gathering.account)*100))100.0;if(givechange<0){JOptionPane.showMessageDialog(this,"輸入的金額不足");}Doublegivechange1=newDouble(givechange);jLabel8.setText(givechange1.toString());}catch(Exceptionex){JOptionPane.showMessageDialog(this,"輸入的金額有誤");}Settle_Dialogsett=newSettle_Dialog();sett.setSize(400,300);sett.setLocation(300,250);sett.setVisible(true);//顯示結(jié)賬界面sett.jTextField1.setText(jTextField3.getText().toString());sett.jTextField2.setText(jTextField5.getText());sett.jTextField3.setText(jLabel8.getText());jTextField6.setEditable(true);//會員卡號可編輯jTextField6.setText("");//商品編號銷售日期商品數(shù)量商品單價折扣會員卡號商品名稱intnum1=0;while(num1<colnames4.size()){//更新數(shù)據(jù)庫Vectorls=newVector();ls=(Vector)colnames4.get(num1);//ls.get(0).toString();//商品編號//jLabel11.getText();//時間Integernumber=newInteger(ls.get(4).toString());//數(shù)量DoublePrice=newDouble(ls.get(5).toString());//單價//ls.get(6).toString();//折扣//jTextField6.getText();//會員卡號//ls.get(1).toString();//商品名稱UpdateData.out_StockPile(number,ls.get(0).toString());Insert_stock.Insert_Sale(ls.get(0).toString(),jLabel11.getText(),number,Price,ls.get(6).toString(),jTextField6.getText(),ls.get(1).toString());num1++;}jTextField1.setText("");jTextField2.setText("1");colnames4.removeAllElements();jTable1=Mytable.maketable(colnames4,colnames);//顯示內(nèi)容jScrollPane1.getViewport().add(jTable1);//把表裝入容器}}付款頁面:如圖5.2所示:圖5.2付款頁面截圖代碼如下:privatevoidjbInit()throwsException{panel1.setLayout(null);jTextField1.setFont(newjava.awt.Font("宋體",Font.PLAIN,30));jTextField1.setBounds(newRectangle(213,44,130,42));jTextField2.setFont(newjava.awt.Font("宋體",Font.PLAIN,30));jTextField2.setBounds(newRectangle(213,108,130,42));jTextField3.setFont(newjava.awt.Font("宋體",Font.PLAIN,30));jTextField3.setBounds(newRectangle(213,171,130,42));jLabel1.setFont(newjava.awt.Font("宋體",Font.PLAIN,30));jLabel1.setText("金額累計");jLabel1.setBounds(newRectangle(41,45,130,42));jLabel2.setFont(newjava.awt.Font("宋體",Font.PLAIN,30));jLabel2.setText("實收金額");jLabel2.setBounds(newRectangle(41,108,130,42));jLabel3.setFont(newjava.awt.Font("宋體",Font.PLAIN,30));jLabel3.setText("找零金額");jLabel3.setBounds(newRectangle(41,171,130,42));panel1.setBackground(Color.green);getContentPane().add(panel1);panel1.add(jLabel1);panel1.add(jLabel2);panel1.add(jLabel3);panel1.add(jTextField2);panel1.add(jTextField3);panel1.add(jTextField1);}點擊后臺管理轉(zhuǎn)入后臺彈出用戶驗證窗口。驗證成功進入后臺。后臺管理截圖:如圖5.3所示。圖5.3管理員登錄圖主要代碼如下:publicvoidjButton1_actionPerformed(ActionEvente){Vectoruser=newVector();Stringname=jTextField1.getText();Stringpassword=jPasswordField1.getText();user=Select_Means.Select_User(name,password);if(user.size()!=0){this.setVisible(false);MainFramemainFrame=newMainFrame();mainFrame.setVisible(true);mainFrame.setLocation(50,50);form.setVisible(false);}else{ JOptionPane.showMessageDialog(this,"用戶名或密碼不正確,請重新輸入");}}驗證成功后進入后臺管理,后臺管理包括銷售管理,庫存查詢,用戶管理,信息查詢,商品管理。點擊相應標簽進入子系統(tǒng)。登錄成功后進入此頁面:如圖5.4所示。圖5.4后臺管理主界面主要代碼如下:privatevoidjbInit()throwsException{contentPane=(JPanel)getContentPane();contentPane.setLayout(null);setSize(newDimension(930,600));setTitle("趙娟的超市收銀系統(tǒng)");statusBar.setText("");statusBar.setBounds(newRectangle(0,585,800,15));//設置樹DefaultMutableTreeNoderoot=newDefaultMutableTreeNode("系統(tǒng)管理");DefaultMutableTreeNodeMan2=newDefaultMutableTreeNode("銷售管理");DefaultMutableTreeNodeMan3=newDefaultMutableTreeNode("庫存查詢");DefaultMutableTreeNodeMan4=newDefaultMutableTreeNode("用戶管理");DefaultMutableTreeNodeMan5=newDefaultMutableTreeNode("信息查詢");DefaultMutableTreeNodeMan6=newDefaultMutableTreeNode("商品管理");...//初始化樹jTree1=newJTree(root);jTree1.addTreeSelectionListener(newMainFrame_jTree1_treeSelectionAdapter(this));jMenuFile.setText("文件");jToolBar.setBounds(newRectangle(0,0,800,29));jScrollPane1.setBounds(newRectangle(13,93,152,435));jMenuBar1.add(jMenuFile);jMenuFile.add(jMenuItem1);jMenuBar1.add(jMenu1);jMenuBar1.add(jMenu2);jMenuBar1.add(jMenu3);jMenuBar1.add(jMenu5);jMenuBar1.add(jMenu4);setJMenuBar(jMenuBar1);jToolBar.add(jButton1);jToolBar.add(jButton2);jToolBar.add(jButton3);contentPane.add(jToolBar,null);contentPane.add(statusBar,null);contentPane.add(jScrollPane1);contentPane.add(jScrollPane2);jScrollPane2.getViewport().add(jTable1);jScrollPane1.getViewport().add(jTree1);jMenu3.add(jMenuItem2);jMenu3.add(jMenuItem3);jMenu3.add(jMenuItem15);jMenu4.add(jMenuItem5);jMenu2.add(jMenuItem7);jMenu2.add(jMenuItem9);jMenu2.add(jMenuItem16);jMenu1.add(jMenuItem10);jMenu1.add(jMenuItem11);jMenu5.add(jMenuItem17);jMenu5.add(jMenu7);jMenu7.add(jMenuItem18);jMenu7.add(jMenuItem25);jMenu7.add(jMenuItem19);jMenu7.add(jMenu9);jMenu9.add(jMenuItem8);jMenu9.add(jMenuItem20);jMenu9.add(jMenuItem21);jMenu9.add(jMenuItem22);jMenu9.add(jMenuItem23);jMenu9.add(jMenuItem24);}5.2銷售管理模塊銷售管理有一個子模塊..銷售統(tǒng)計,銷售統(tǒng)計可以根據(jù)時間段或者商品編號查詢銷售記錄。商品銷售統(tǒng)計截圖:如圖5.5。圖5.5商品銷售統(tǒng)計主要代碼如下:publicvoidjButton1_actionPerformed(ActionEvente){Stringstr1=jComboBox1.getSelectedItem().toString()+"."+jComboBox2.getSelectedItem().toString()+"."+jComboBox3.getSelectedItem().toString();Stringstr2=jComboBox4.getSelectedItem().toString()+"."+jComboBox5.getSelectedItem().toString()+"."+jComboBox6.getSelectedItem().toString();Vectorvector=newVector();//用來接收查詢結(jié)果Vectorvector2=newVector();vector=SelectEarning.findAll(jTextField1.getText());//接收返回的結(jié)果if(vector.size()==0){JOptionPane.showMessageDialog(this,"沒有商品的銷售信息");}doubleallMoney=0;//用于計算總金額inti=0;while(i<vector.size()){Vectorvector1=newVector();vector1=(Vector)vector.get(i);System.out.println(vector1.get(4).toString().substring(0,10));System.out.println(str1);System.out.println(SelectEarning.charbj(vector1.get(4).toString().substring(0,10),str1));System.out.println(SelectEarning.charbj(str2,vector1.get(4).toString().substring(0,10)));if(SelectEarning.charbj(vector1.get(4).toString().substring(0,10),str1)&&SelectEarning.charbj(str2,vector1.get(4).toString())){Vectorvector3=newVector();intj=0;while(j<6){vector3.add(vector1.get(j).toString());j++;}Doublemoney=newDouble(vector1.get(5).toString());allMoney+=money;vector2.add(vector3);}i++;}if(vector2.size()==0){JOptionPane.showMessageDialog(this,"沒有商品的銷售信息");}5.3庫存查詢模塊可存信息查詢可以查詢當前商品的庫存信息,庫存查詢分兩個子模塊,庫存信息瀏覽和按商品編號查詢。庫存信息瀏覽:該模塊可以查詢所有商品庫存記錄。并將庫存信息列表輸出。如圖5.6。圖5.6庫存查詢圖主要代碼如下:publicvoidjTextField1_focusLost(FocusEvente){Vectorselect_merchandise=newVector();Stringnumber=jTextField1.getText();//得到商品編號if(number.length()==0){return;}select_merchandise=Select_Means.Select_sort2(number);//根據(jù)商品編號查找相應的信息if(select_merchandise.size()==0){JOptionPane.showMessageDialog(this,"無此商品");}inti=0;while(i<select_merchandise.size()){Vectorselect=newVector();select=(Vector)select_merchandise.get(i);jTextField2.setText(select.get(3).toString());jTextField5.setText(select.get(4).toString());i++;try{Integernumber1=newInteger(jTextField4.getText());Doublenumber2=newDouble(jTextField5.getText());number2=number2*number1;Doublenumber3=newDouble(number2);jTextField6.setText(number3.toString());}catch(Exceptionex){JOptionPane.showMessageDialog(this,"數(shù)量框中輸入的不是數(shù)字","錯誤",JOptionPane.ERROR_MESSAGE);}}}2、按商品編號查詢:通過輸入商品編號指定查詢目標,對單個商品信息進行查詢,并輸出該商品信息。如圖5.7。圖5.7商品編號查詢圖主要代碼如下:publicstaticVectorSelect_sort2(Stringnumber){//按商品編號查詢Connectionconn=null;PreparedStatementpmst=null;ResultSetrs=null;Vectorvector2=newVector();conn=DBAccess.getConnection();try{pmst=conn.prepareStatement(select2);pmst.setString(1,number);rs=pmst.executeQuery();while(rs.next()){Vectorvector1=newVector();vector1.add(rs.getString(1));vector1.add(rs.getString(2));vector1.add(rs.getString(3));vector1.add(rs.getString(4));vector1.add(rs.getString(5));vector1.add(rs.getString(6));vector1.add(rs.getString(7));vector1.add(rs.getString(8));vector1.add(rs.getString(9));vector1.add(rs.getString(10));vector2.add(vector1);}}catch(Exceptione){e.printStackTrace();}returnvector2;}5.4用戶管理模塊1、添加修改用戶:點擊添加修改用戶彈出用戶驗證,若驗證為管理員則可以進行用戶添加。此功能需要管理員登錄:如圖5.8。圖5.8添加用戶模塊主要代碼如下:publicvoidjButton5_actionPerformed(ActionEvente){StringcardId=jTextField1.getText();//卡號VectorSelect_vector=newVector();Select_vector=Select_Means.Select_UserManager(cardId);//查詢此卡是否存在if(Select_vector.size()==0){JOptionPane.showMessageDialog(this,"卡號不存在","提示",JOptionPane.INFORMATION_MESSAGE);return;}jTextField1.setText(Select_vector.get(0).toString());//卡號jTextField2.setText(Select_vector.get(1).toString());//持卡人jTextField3.setText(Select_vector.get(2).toString());//身份證jTextField4.setText(Select_vector.get(3).toString());//密碼jTextField9.setText(Select_vector.get(4).toString());//開卡日期if(Select_vector.get(5).toString().equals("普通會員")){jComboBox1.removeAllItems();jComboBox1.addItem("普通會員");jComboBox1.addItem("收銀員");}if(Select_vector.get(5).toString().equals("收銀員")){jComboBox1.removeAllItems();jComboBox1.addItem("收銀員");jComboBox1.addItem("普通會員");}jTextField7.setText(Select_vector.get(6).toString());//期限jTextField8.setText(Select_vector.get(7).toString());//積分jTextField5.setText(Select_vector.get(8).toString());//折扣jTextArea1.setText(Select_vector.get(9).toString());//備注}個人賬號查詢:輸入卡號查詢個人賬號信息。輸入卡號就能查詢到:如圖5.9。圖5.9個人賬戶查詢圖5.5信息查詢模塊按商品名稱查詢:輸入商品名稱查詢該商品詳細信息。如圖5.10。圖5.10商品名稱查詢商品主要代碼如下:publicstaticVectorSelect_sort3(Stringnumber){//按商品名稱查詢Connectionconn=null;PreparedStatementpmst=null;ResultSetrs=null;Vectorvector2=newVector();conn=DBAccess.getConnection();try{pmst=conn.prepareStatement(select3);pmst.setString(1,number);rs=pmst.executeQuery();while(rs.next()){Vectorvector1=newVector();vector1.add(rs.getString(1));vector1.add(rs.getString(2));vector1.add(rs.getString(3));vector1.add(rs.getString(4));vector1.add(rs.getString(5));vector1.add(rs.getString(6));vector1.add(rs.getString(7));vector1.add(rs.getString(8));vector1.add(rs.getString(9));vector1.add(rs.getString(10));vector2.add(vector1);}}catch(Exceptionex){ex.printStackTrace();}returnvector2;}可查詢到數(shù)據(jù):如圖5.11。圖5.11商品數(shù)據(jù)查詢結(jié)果2、按商品編號查詢:輸入商品編號查詢該商品詳細信息。如圖5.12。圖5.12商品編號查詢商品主要代碼入下:publicstaticVectorSelect_sort2(Stringnumber){//按商品編號查詢Connectionconn=null;PreparedStatementpmst=null;ResultSetrs=null;Vectorvector2=newVector();conn=DBAccess.getConnection();try{pmst=conn.prepareStatement(select2);pmst.setString(1,number);rs=pmst.executeQuery();while(rs.next()){Vectorvector1=newVector();vector1.add(rs.getString(1));vector1.add(rs.getString(2));vector1.add(rs.getString(3));vector1.add(rs.getString(4));vector

溫馨提示

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

評論

0/150

提交評論