版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
目錄1問(wèn)題的提出……………………21.1可行性分析………………22需求分析………………………22.1商店管理的業(yè)務(wù)流程……………………22.2系統(tǒng)的功能分析………32.3用例分析………………32.3.1用例圖…………32.3.2用例描述………42.3.3找尋分析類……………………72.4系統(tǒng)模塊設(shè)計(jì)…………112.4.1系統(tǒng)模塊設(shè)計(jì)…………………112.4.2子模塊設(shè)計(jì)……………………122.5數(shù)據(jù)庫(kù)設(shè)計(jì)……………132.5.1數(shù)據(jù)流圖………132.5.2數(shù)據(jù)庫(kù)E-R模型………………162.5.3數(shù)據(jù)庫(kù)的物理模型……………162.6模塊設(shè)計(jì)與代碼實(shí)現(xiàn)…………………25參考文獻(xiàn)…………問(wèn)題的提出隨著商店商品的大量增加其管理難度越來(lái)越大,在計(jì)算機(jī)技術(shù)飛速發(fā)展的今日,將計(jì)算機(jī)這一信息處理利器應(yīng)用于商店的日常管理已是勢(shì)所必定。于是,商店進(jìn)銷存管理系統(tǒng)便應(yīng)運(yùn)而生。這為商店管理帶來(lái)前所未有的變更,同時(shí)為企業(yè)帶來(lái)意想不到的經(jīng)濟(jì)效益和社會(huì)效益。這主要體現(xiàn)在以下幾個(gè)方面:1極大的提高了商店工作人員的工作效率,避開(kāi)了以往入、出、存流程繁瑣雜亂,周期長(zhǎng)的弊端。2商店管理實(shí)現(xiàn)了操作自動(dòng)化和信息電子化,全面提高了超市的管理水平。3基于超市管理的全面自動(dòng)化可以大大削減入庫(kù)管理,出庫(kù)管理及庫(kù)存管理中的漏洞,可以節(jié)約大量管理開(kāi)支增加企業(yè)的收入??尚行苑治鲇捎谏痰暌?guī)模的日益增大,進(jìn)出貨物數(shù)量繁多,且工作量大。原有的手工操作耗時(shí)費(fèi)勁,又不能保證數(shù)據(jù)的正確性,迫切須要實(shí)現(xiàn)計(jì)算機(jī)信息化管理,用信息化管理實(shí)現(xiàn)對(duì)數(shù)據(jù)的錄入、查詢、打印等的處理。比起傳統(tǒng)的方法這樣可以節(jié)約大量的人力物力資源,又可以縮短業(yè)務(wù)處理的時(shí)間,加強(qiáng)對(duì)物資平安的管理,具有很強(qiáng)的好用性和經(jīng)濟(jì)性。2需求分析2.1商店管理的業(yè)務(wù)流程商店的日常業(yè)務(wù)經(jīng)營(yíng)活動(dòng)主要包括選購(gòu) 、銷售、庫(kù)存盤點(diǎn)、賬目管理等四個(gè)方面。因此如何處理好這幾者之間的關(guān)系是設(shè)計(jì)商店進(jìn)銷存管理系統(tǒng)最為關(guān)鍵的部分。商店運(yùn)營(yíng)的基本業(yè)務(wù)流程如圖1所示。圖1業(yè)務(wù)流程圖2.2系統(tǒng)的功能分析本系統(tǒng)開(kāi)發(fā)的總體目標(biāo)是建立一個(gè)能夠?qū)ι痰陜?nèi)商品流淌進(jìn)行監(jiān)控,即在商品選購(gòu) 、銷售、庫(kù)存、賬目管理等過(guò)程中進(jìn)行監(jiān)督與限制。經(jīng)過(guò)小組探討,該系統(tǒng)應(yīng)具備以下功能:選購(gòu) 員選購(gòu) 商品后剛好錄入商品信息在數(shù)據(jù)庫(kù)中進(jìn)行數(shù)據(jù)更新。在收銀處隨時(shí)錄入賣出商品信息,如名稱數(shù)量單價(jià)等剛好更新數(shù)據(jù)庫(kù)數(shù)據(jù)。貨架上商品賣到肯定數(shù)量時(shí)剛好生成提貨報(bào)告并供應(yīng)商品的庫(kù)存剩余信息。在須要時(shí)可每日或每周統(tǒng)計(jì)一次,生成商品銷售狀況報(bào)告。并可以導(dǎo)出統(tǒng)計(jì)結(jié)果且可以生成excel表格。倉(cāng)庫(kù)管理員可以用多種方式查詢各種商品信息,也可以采納多種查詢條件的組合查詢。并可以導(dǎo)出查詢結(jié)果且可以生成excel表格。2.3用例分析2.3.1用例圖用例圖如圖(2)所示:圖(二)用例圖2.3.2用例描述表格1用例描述系統(tǒng)登錄用例編號(hào)UC01用例名稱系統(tǒng)登錄用例概述系統(tǒng)登錄界面主參加者收銀員、倉(cāng)庫(kù)管理員、admin基本領(lǐng)件流選擇角色輸入用戶名和登錄密碼。點(diǎn)擊確定登錄按鈕。擴(kuò)展事務(wù)流假如用戶驗(yàn)證不勝利則彈出對(duì)話框告知錯(cuò)誤信息。假如用戶驗(yàn)證勝利,則顯示對(duì)于角色系統(tǒng)界面。表格2用例描述商品入庫(kù)用例編號(hào)UC02用例名稱商品入庫(kù)用例概述倉(cāng)庫(kù)管理員將商品的各種信息錄入到數(shù)據(jù)庫(kù)中,并更新數(shù)據(jù)庫(kù)主參加者倉(cāng)庫(kù)管理員基本領(lǐng)件流倉(cāng)庫(kù)管理員向系統(tǒng)發(fā)出新增商品的懇求系統(tǒng)顯示相應(yīng)界面,讓倉(cāng)庫(kù)管理員輸入信息,并自動(dòng)依據(jù)商品號(hào)生成規(guī)則生成商品號(hào)倉(cāng)庫(kù)管理員輸入商品的相關(guān)信息,包括商品名、定價(jià)、生產(chǎn)日期、保質(zhì)期等系統(tǒng)確認(rèn)輸入的信息中,商品名沒(méi)有重名系統(tǒng)將所輸入的信息存儲(chǔ)建檔擴(kuò)展事務(wù)流4a.假如輸入的商品名有重名現(xiàn)象,則顯示出重名的商品的相關(guān)信息,并要求倉(cāng)庫(kù)管理員選擇修改商品名或取消輸入4b.倉(cāng)庫(kù)管理員選擇取消輸入,則結(jié)束用例,不做存儲(chǔ)建檔工作4c.倉(cāng)庫(kù)管理員選擇修改商品名后,轉(zhuǎn)到4表格3用例描述銷售商品用例編號(hào)UC03用例名稱銷售商品用例概述收銀員收費(fèi)流程主參加者收銀員基本領(lǐng)件流登錄系統(tǒng)。推斷顧客是否為會(huì)員。錄入銷售商品信息。統(tǒng)計(jì)銷售總金額。選擇付款方式。付款。打印收據(jù)擴(kuò)展事務(wù)流假如付款勝利,則彈出消息框告知收銀員付款勝利!!假如付款失敗,則彈出消息框告知收銀員付款失敗,并提升失敗緣由。表格4用例描述商品信息查詢用例編號(hào)UC04用例名稱查詢商品信息用例概述依據(jù)選定的查詢方式查詢商品信息。主參加者倉(cāng)庫(kù)管理員基本領(lǐng)件流登錄系統(tǒng)。選擇查詢方式。依據(jù)查詢條件獲得查詢結(jié)果。管理員選擇是否打印報(bào)表擴(kuò)展事務(wù)流1、打印查詢結(jié)果(excel表格)表格5用例描述打印報(bào)表用例編號(hào)UC05用例名稱打印報(bào)表用例概述打印指定類型的報(bào)表主參加者倉(cāng)庫(kù)管理員、系統(tǒng)基本領(lǐng)件流確定打印報(bào)表類型。依據(jù)報(bào)表類型生成相應(yīng)報(bào)表。打印相應(yīng)類型的excel表格擴(kuò)展事務(wù)流表格6用例描述銷售預(yù)警用例編號(hào)UC06用例名稱銷售預(yù)警用例概述系統(tǒng)依據(jù)貨架信息推斷是否須要生成預(yù)警報(bào)表。主參加者系統(tǒng)基本領(lǐng)件流統(tǒng)計(jì)各個(gè)貨架上各商品數(shù)量信息。推斷是否達(dá)到管理員所設(shè)置的預(yù)警線。假如達(dá)到預(yù)警線,則打印報(bào)表擴(kuò)展事務(wù)流1、打印報(bào)表表格6用例描述銷售狀況統(tǒng)計(jì)用例編號(hào)UC06用例名稱統(tǒng)計(jì)銷售狀況用例概述依據(jù)系統(tǒng)設(shè)置(每日或每周),統(tǒng)計(jì)銷售狀況。主參加者系統(tǒng)\admin基本領(lǐng)件流統(tǒng)計(jì)銷售報(bào)表。生成銷售統(tǒng)計(jì)結(jié)果表。打印報(bào)表。擴(kuò)展事務(wù)流表格7用例描述賬目管理用例編號(hào)UC07用例名稱賬目管理用例概述Admin可以隨時(shí)查看歷史賬目,也可以統(tǒng)計(jì)給定事務(wù)段的賬目信息。主參加者Admin基本領(lǐng)件流登錄系統(tǒng)。確定統(tǒng)計(jì)時(shí)間范圍。統(tǒng)計(jì)進(jìn)貨單。統(tǒng)計(jì)銷售報(bào)表。生成賬目表。擴(kuò)展事務(wù)流1、打印報(bào)表2.3.3找尋分析類用例1登錄系統(tǒng)------分析類:1)類:1、登錄窗體類2、三個(gè)參加者:收銀員、倉(cāng)庫(kù)管理員、admin2)類的屬性和方法:登錄窗體------屬性:1、登錄、取消兩個(gè)按鈕2、角色類型單選按鈕組(三個(gè)單選按鈕)3、登錄名、登錄密碼文本框。4、窗口標(biāo)題登錄窗體----方法:1、獲得角色類型2、獲得登錄名和登錄密碼3、連接數(shù)據(jù)庫(kù),驗(yàn)證登陸信息參加者------屬性:1、登錄名、登錄密碼2、角色類型標(biāo)識(shí)參加者------方法:1、獲得、設(shè)置登錄名和登錄密碼用例2商品入庫(kù)-----分析類:1)類:1、兩個(gè)參加者:倉(cāng)庫(kù)管理員2、商品入庫(kù)窗體類、商品2)類的屬性和方法:倉(cāng)庫(kù)管理員------屬性:1、登錄名、登錄密碼2、角色類型標(biāo)識(shí)倉(cāng)庫(kù)管理員-----方法:1、發(fā)送商品入庫(kù)懇求2、錄入商品信息3、修改商品名4、取消輸入商品入庫(kù)窗體類------屬性:接收商品信息的各種控件各類限制按鈕商品入庫(kù)窗體類------方法:1、接收商品個(gè)信息2、確認(rèn)商品名是否重名3、顯示出重名的商品的相關(guān)信息4、存儲(chǔ)商品信息用例3銷售商品---分析類1)類:1、收銀員2、商品3、顧客4、銀行(POS)5、登錄系統(tǒng)窗體類6、銷售商品窗體類,銷售報(bào)表7、收據(jù)2)類中的屬性和方法:收銀員---屬性:1、工卡號(hào)、姓名、密碼、角色名稱收銀員----方法:顧客----屬性:1、顧客姓名,性別,年齡,是否VIP,VIP編號(hào)2、銀行卡顧客---方法:1、選擇付款方法2、付款商品---屬性:1、商品編號(hào)、商品名稱、商品價(jià)格、生產(chǎn)商、商品購(gòu)買數(shù)量2、是否參加活動(dòng)商品----方法:1、設(shè)置與獲得屬性的方法POS機(jī)---屬性:1、編號(hào)、運(yùn)用商、銀行POS機(jī)---方法:1、獲得顧客銀行卡信息2、與銀行進(jìn)行交易的方法3、打印回單收據(jù)---屬性:1、商品信息列表、收據(jù)編號(hào)(流水號(hào))、應(yīng)收金額、實(shí)收金額、找零。2、VIP信息。購(gòu)物日期。登錄系統(tǒng)窗體類---屬性:1、登錄、取消兩個(gè)按鈕
2、角色類型單選按鈕組(三個(gè)單選按鈕)3、登錄名、登錄密碼文本框。4、窗口標(biāo)題登錄窗體類----方法:1、獲得角色類型2、獲得登錄名和登錄密碼
3、連接數(shù)據(jù)庫(kù),驗(yàn)證登陸信息銷售商品窗體類----屬性:1、商品信息列表2、VIP顧客信息3、收據(jù)單銷售商品窗體類--方法:1、依據(jù)商品編號(hào)從數(shù)據(jù)庫(kù)中獲得商品信息,并添加到商品信息列表。2、獲得VIP客戶信息。3、結(jié)算交易金額。并創(chuàng)建收據(jù)單。4、打印收據(jù)單
銷售報(bào)表----屬性:1、報(bào)表編號(hào)、銷售日期,成本金額,銷售金額,利潤(rùn)。用例4商品信息查詢---分析類:類:1.倉(cāng)庫(kù)管理員2.商品3.商品查詢報(bào)表4、商品信息查詢窗口類的屬性和方法:商品——屬性:1.商品的編號(hào)2.商品的名稱3.商品的價(jià)格商品——方法:1.獲得各屬性的get方法商品報(bào)表——屬性:1.報(bào)表編號(hào)2.商品信息列表商品報(bào)表——方法1.生成報(bào)表編號(hào)2.獲得商品信息列表用例5銷售預(yù)警-----分析類:類::1、貨架2、倉(cāng)庫(kù)管理員3、預(yù)警報(bào)表類的屬性和方法:貨架-----屬性:1、貨架編號(hào)2、商品列表3、各商品放置數(shù)量4、各商品預(yù)警線貨架----方法:1、對(duì)各商品的上架、下架2、獲得各商品當(dāng)前在架數(shù)量3、獲得各商品信息4、獲得和設(shè)置各商品預(yù)警線商品----屬性:1、商品編號(hào)2、商品名稱。。。。商品----方法:1、獲得各屬性的get方法預(yù)警報(bào)表----屬性:1、貨架編號(hào)、報(bào)表編號(hào)2、發(fā)生預(yù)警的商品列表3、發(fā)生預(yù)警的商品在倉(cāng)庫(kù)中的信息列表4、預(yù)警發(fā)生時(shí)間預(yù)警報(bào)表----方法:1、生成報(bào)表編號(hào)2、設(shè)置貨架編號(hào)3、生成預(yù)警商品列表4、獲得預(yù)警商品在庫(kù)信息列表5、獲得預(yù)警發(fā)生時(shí)間6、打印報(bào)表,生成excel表格用例6銷售狀況統(tǒng)計(jì)類:1、銷售狀況統(tǒng)計(jì)窗口類2、銷售報(bào)表3、銷售統(tǒng)計(jì)表類的屬性和方法:銷售報(bào)表----屬性1、報(bào)表編號(hào)(流水號(hào))2、銷售日期,成本金額,銷售金額,利潤(rùn)。銷售統(tǒng)計(jì)表----屬性:1、統(tǒng)計(jì)表編號(hào),統(tǒng)計(jì)日期,承辦總金額,銷售總金額總利潤(rùn)。用例7賬目管理類:1、登錄系統(tǒng)窗體2、賬目管理窗體3、admin4、賬目類5、進(jìn)貨表6、銷售統(tǒng)計(jì)表類的屬性和方法:系統(tǒng)登錄窗體賬目管理窗體銷售統(tǒng)計(jì)表----屬性:1、統(tǒng)計(jì)表編號(hào),統(tǒng)計(jì)日期,某商品的詳細(xì)銷售狀況賬目類----屬性:1、賬目編號(hào),生成賬目日期,2、成本總金額,銷售總金額,總利潤(rùn)。3、每種商品的編號(hào),進(jìn)貨總量、進(jìn)貨成本、銷售成本,利潤(rùn)。2.4系統(tǒng)模塊設(shè)計(jì) 2.4.1系統(tǒng)模塊設(shè)計(jì)圖三系統(tǒng)模塊設(shè)計(jì)2.4.2子模塊分析1.倉(cāng)庫(kù)管理員模塊類圖分析,如圖四圖四倉(cāng)庫(kù)管理員主界面類圖分析2.賬目管理模塊類圖分析,如圖五圖五賬目管理模塊類圖分析2.5數(shù)據(jù)庫(kù)設(shè)計(jì) 該系統(tǒng)采納的是SQL2008,數(shù)據(jù)庫(kù)采納powerdesigner1.25設(shè)計(jì)。2.5.1數(shù)據(jù)流圖 通過(guò)對(duì)商店?duì)I業(yè)的業(yè)務(wù)流程分析得知,該系統(tǒng)的數(shù)據(jù)流圖: 1.頂層數(shù)據(jù)流圖,如圖六圖六頂層數(shù)據(jù)流圖 2.二級(jí)數(shù)據(jù)流圖如下 3.數(shù)據(jù)字典 表八數(shù)據(jù)項(xiàng)列表名稱代碼數(shù)據(jù)類型長(zhǎng)度VIP編號(hào)VIPnumberVariablecharacters(20)20會(huì)員積分VIPpointsInteger供應(yīng)商名稱OEMSnameVariablecharacters(20)20供應(yīng)商地址OEMSaddressVariablecharacters(30)30供應(yīng)商電話OEMSphoneVariablecharacters(20)20供應(yīng)商編號(hào)OEMSnumberVariablecharacters(20)20供應(yīng)商聯(lián)系人OEMSlinkmanVariablecharacters(20)20入會(huì)日期entranceTimeVariablecharacters(20)20利潤(rùn)profitMoney(8)8利潤(rùn)profitsMoney(8)8商品名稱goodsNameVariablecharacters(20)20商品數(shù)量goodsAcountInteger商品數(shù)量goodsCountInteger商品類型goodsTypeVariablecharacters(20)20商品編號(hào)goodsNumberVariablecharacters(20)20商品編號(hào)goodsIDVariablecharacters(20)20商品銷售價(jià)格salePriceMoney(8)8姓名nameVariablecharacters(20)20工卡號(hào)securityNumbeVariablecharacters(20)20工卡號(hào)securityNumberVariablecharacters(20)20年齡ageInteger性別sexCharacters(2)2總利潤(rùn)sumProfitsMoney(8)8總成本sumPrimeCostMoney(8)8總銷售金額sumSalesAmountMoney(8)8成本costMoney(8)8折扣discountsFloat(2)2折扣規(guī)則編號(hào)discountNumberVariablecharacters(20)20收據(jù)編號(hào)receiptNumberVariablecharacters(20)20數(shù)量saleAmountInteger電話phoneVariablecharacters(20)20登錄密碼passwordVariablecharacters(20)20結(jié)束日期endTimeVariablecharacters(20)20結(jié)束日期dateEndVariablecharacters(20)20統(tǒng)計(jì)日期statsTimeVariablecharacters(20)20賬目管理日期manageTimeVariablecharacters(20)20賬目編號(hào)accountNumberVariablecharacters(20)20貨架編號(hào)shelfNumberVariablecharacters(20)20起始日期startTimeVariablecharacters(20)20起始日期dateStartVariablecharacters(20)20進(jìn)貨價(jià)格inPriceMoney(8)8進(jìn)貨單編號(hào)orderNumberVariablecharacters(20)20進(jìn)貨日期PurchaseDateVariablecharacters(20)20金額saleMoneyVariablecharacters(20)20銷售數(shù)量saleCountInteger銷售日期salesDateVariablecharacters(20)20銷售統(tǒng)計(jì)編號(hào)statsNumberVariablecharacters(20)20銷售記錄編號(hào)saleRecorderNumberVariablecharacters(20)20銷售金額saleTotalMoneyMoney(8)8銷售金額salesAmountMoney(8)8預(yù)警線preFlightLineInteger表九數(shù)據(jù)結(jié)構(gòu)名稱代碼AdminAdminInfoVIP顧客VIPcustomer倉(cāng)庫(kù)管理員StorekeeperInfo供應(yīng)商OEMsTable商品Goods折扣表DiscountTable收據(jù)Receipt收銀員CashierInfo賬目Account貨架GoodsShelf進(jìn)貨單PurchaseOrder銷售統(tǒng)計(jì)表SaleStats銷售記錄SalesRecorder表十?dāng)?shù)據(jù)流名稱代碼實(shí)體2實(shí)體1付款pay貨架收據(jù)供應(yīng)supply進(jìn)貨單供應(yīng)商入庫(kù)Stocking進(jìn)貨單商品商品上架goodsShelve商品貨架成本統(tǒng)計(jì)costAccount進(jìn)貨單銷售統(tǒng)計(jì)表折扣discount貨架折扣表生產(chǎn)product商品供應(yīng)商賬目管理accountManage銷售統(tǒng)計(jì)表賬目銷售sale銷售記錄貨架銷售統(tǒng)計(jì)stats銷售記錄銷售統(tǒng)計(jì)表2.5.2數(shù)據(jù)庫(kù)E-R模型對(duì)系統(tǒng)的數(shù)據(jù)流進(jìn)行詳細(xì)分析后,得出數(shù)據(jù)庫(kù)的概念模型,E-R模型,如圖七。圖七概念模型E-R圖2.5.3數(shù)據(jù)庫(kù)的物理模型 1.該系統(tǒng)采納SQL2008數(shù)據(jù)庫(kù),用poerdesigner12.5進(jìn)行分析與設(shè)計(jì)。進(jìn)過(guò)分析,綜合考慮系統(tǒng)的信息有效、平安性,該數(shù)據(jù)庫(kù)的物理模型如圖八所示。圖八物理模型2.6模塊設(shè)計(jì)與代碼實(shí)現(xiàn) 1.商品入庫(kù)模塊設(shè)計(jì)如圖九:圖九商品入庫(kù)界面設(shè)計(jì)關(guān)鍵代碼如下:///////////按鈕事務(wù)處理publicvoidactionPerformed(ActionEvente){ if(e.getSource()==this.m_btnBack){ this.setVisible(false); this.homeFrame.setVisible(true); }elseif(e.getSource()==this.m_btnFlush){ this.m_txGoodsCount.setText(""); this.m_txGoodsInPrice.setText(""); this.m_txGoodsName.setText(""); this.m_txGoodsNumber.setText(""); this.m_txGoodsSalePrice.setText(""); this.m_txGoodsType.setText(""); this.m_txOEMSnumber.setText(""); }elseif(e.getSource()==this.m_btnOK){ this.sqlGoodsManage.createAddGoodsInfoConnection(); intindex=-1; index=this.sqlGoodsManage.insertGoodsInfo(this.createNewGoods()); if(index==0){ JOptionPane.showMessageDialog(this,"商品勝利入庫(kù)!!"); }elseif(index==1){ JOptionPane.showMessageDialog(this,"該商品已經(jīng)在倉(cāng)庫(kù)中!!"); }elseif(index==2){ JOptionPane.showMessageDialog(this,"沒(méi)有改供應(yīng)商哦!!"); }elseif(index==3){ JOptionPane.showMessageDialog(this,"商品入庫(kù)失敗!!"); } } }////////創(chuàng)建商品對(duì)象privateGoodscreateNewGoods(){ Goodsgoods=newGoods(); goods.setM_goodsNumber(this.m_txGoodsNumber.getText()); goods.setM_goodsName(this.m_txGoodsName.getText()); goods.setM_goodsType(this.m_txGoodsType.getText()); goods.setM_inPrice(Double.parseDouble(this.m_txGoodsInPrice.getText())); goods.setM_goodsCount(Integer.parseInt(this.m_txGoodsCount.getText())); goods.setM_OEMSnumber(this.m_txOEMSnumber.getText()); returngoods;}2.商品銷售模塊設(shè)計(jì)如圖十: 圖十商品銷售界面關(guān)鍵代碼如下://////銷售商品 privatevoidsaleGoods(){ StringgoodsNumber=this.m_txGoodsNumber.getText(); intgoodsCount=Integer.parseInt(this.m_txGoodsCount.getText()); ResultSetrest=null; this.goodsManage.createSaleGoodsConnection(); rest=this.goodsManage.saleGoods(goodsNumber); try{ if(rest.next()){ this.tableData[index][0].setValue(goodsNumber); this.tableData[index][1].setValue(rest.getString(2)); this.tableData[index][2].setValue(goodsCount+""); doubleprice=rest.getDouble(3); doubletotal=price*goodsCount; this.tableData[index][3].setValue(total+""); index++; this.m_tbGoodsList.updateUI(); }else{ JOptionPane.showMessageDialog(this,"輕輸入正確的商品編號(hào)!!"); } this.goodsManage.updateGoodsShelf(goodsCount); }catch(SQLExceptione){ e.printStackTrace(); }finally{ this.goodsManage.closeSaleConnection(); } } //////計(jì)算消費(fèi)金額 privatevoidcaculate(){ doubletotal=0; doubletemp=0; for(inti=0;i<this.tableData.length;i++){ if(this.tableData[i][3].toString()!=null){ temp=Double.parseDouble(this.tableData[i][3].toString()); total+=temp; } } JOptionPane.showMessageDialog(this,"消費(fèi)總金額為:"+total+"元??!"); }3.商品信息查詢模塊設(shè)計(jì)如圖十一:圖十一商品信息查詢關(guān)鍵代碼如下:///////商品信息查詢功能實(shí)現(xiàn) privatevoidsearchGoodsInfo(){ StringsqlGoodsNum="",sqlGoodsName="",sqlGoodsType="",sqlGoodsPrice="",sqlOEMSname="",sqlOEMSnumber=""; StringsqlSearchGoodsInfo="selectgoodsInfo.goodsNumber,goodsName,inPrice,goodsType,goodsCount,PurchaseOrder.OEMSnumber,OEMSname"+ "fromgoodsInfo,PurchaseOrder,OEMsInfowhereOEMsInfo.OEMSnumber=PurchaseOrder.OEMSnumberand"+ "goodsInfo.goodsNumber=PurchaseOrder.goodsNumberand("; if(this.cbGoodsName.isSelected()){ sqlGoodsName="orgoodsName='"+this.m_txGoodsName.getText()+"'"; } if(this.cbGoodsNum.isSelected()){ sqlGoodsNum="orgoodsInfo.goodsNumber='"+this.m_txGoodsNumber.getText()+"'"; } if(this.cbGoodsPrice.isSelected()){ sqlGoodsPrice="orinPrice="+Double.parseDouble(this.m_txGoodsPrice.getText()); } if(this.cbGoodsType.isSelected()){ sqlGoodsType="orgoodsType='"+this.m_txGoodsType.getText()+"'"; } if(this.cbOEMSname.isSelected()){ sqlOEMSname="orOEMSname='"+this.m_txOEMSname.getText()+"'"; } if(this.cbOEMSnumber.isSelected()){ sqlOEMSnumber="orPurchaseOrder.OEMSnumber='"+this.m_txOEMSnumber.getText()+"'"; } sqlSearchGoodsInfo+=sqlGoodsName+sqlGoodsNum+sqlGoodsPrice+sqlGoodsType+sqlOEMSname+sqlOEMSnumber+")"; sqlSearchGoodsInfo=sqlSearchGoodsInfo.replaceFirst("or",""); ResultSetrest=null; this.sqlGoodsManage.createSearchGoodsInfoConnection(); rest=this.sqlGoodsManage.selectGoodsInfo(sqlSearchGoodsInfo); try{ while(rest.next()){ Goodsgoods=newGoods(); goods.setM_goodsNumber(rest.getString(1)); goods.setM_goodsName(rest.getString(2)); goods.setM_inPrice(rest.getDouble(3)); goods.setM_goodsType(rest.getString(4)); goods.setM_goodsCount(rest.getInt(5)); goods.setM_OEMSnumber(rest.getString(6)); goods.setM_OEMSname(rest.getString(7)); this.goodsList.add(goods); } }catch(SQLExceptione){ e.printStackTrace(); }finally{ this.sqlGoodsManage.closeSelectCon(); } } //////顯示商品信息 privatevoidshowNextGoodsInfo(){ for(inti=0;i<this.tableData.length;i++){ Goodsgoods=null; if(this.index<this.goodsList.size()){ goods=this.goodsList.get(index); index++; for(intj=0;j<this.tableData[0].length;j++){ this.tableData[i][j].setValue(goods.getProperTy(j+1)); } }else{ for(intj=0;j<this.tableData[0].length;j++){ this.tableData[i][j].setValue(""); } this.m_btnNext.setEnabled(false); } } this.tableSearchInfo.updateUI(); }4.商品銷售統(tǒng)計(jì)模塊界面設(shè)計(jì)如圖十二:圖十二商品銷售統(tǒng)計(jì)關(guān)鍵代碼如下:publicGoodsSaleStatsFrame(AdminHomeFrameadminHome){ this.adminHome=adminHome; setTitle("商品銷售統(tǒng)計(jì)界面"); setBounds(newRectangle(100,100,800,700)); getContentPane().setLayout(null); this.setBounds(100,100,800,700); /////////// this.inItPane(); ////按鈕注冊(cè)事務(wù) this.m_btnDetermineSet.addActionListener(this); this.m_btnPrintStatisticsTable.addActionListener(this); this.m_btnReturnMainMenu.addActionListener(this); this.m_btnStatisticsSales.addActionListener(this); this.addWindowListener(newWindowAdapter(){ publicvoidwindowClosing(WindowEvente){ GoodsSaleStatsFramecount=(GoodsSaleStatsFrame)e.getComponent(); count.setVisible(false); count.adminHome.setVisible(true); } }); //////}5.系統(tǒng)登錄模塊設(shè)計(jì)如圖十三圖十三系統(tǒng)登錄界面關(guān)鍵代碼如下:////////////按鈕事務(wù)處理 publicvoidactionPerformed(ActionEvente){ if(e.getSource()==btnOK){ Stringsql=""; StringemployeeName=""; if(this.m_raAdmin.isSelected()){ sql="select*fromAdminInfowheresecurityNumber=?andpassword=?"; }elseif(this.m_raCashier.isSelected()){ sql="select*fromcashierInfowheresecurityNumbe=?andpassword=?"; }elseif(this.m_raStorekeeper.isSelected()){ sql="select*fromstorekeeperInfowheresecurityNumber=?andpassword=?"; } try{ this.con=DriverManager.getConnection(this.DBURL,this.DBUSER,this.DBPSW); this.sqlIn=this.con.prepareStatement(sql); ResultSetret=null; this.sqlIn.setString(1,this.m_txEmployeeID.getText()); this.sqlIn.setString(2,this.m_txPassword.getText()); ret=this.sqlIn.executeQuery(); if(!ret.next()){ JOptionPane.showMessageDialog(this,"請(qǐng)輸入正確的密碼或在ID號(hào)!!"); return; } employeeName=ret.getString(2); }catch(SQLExceptione1){ e1.printStackTrace(); }finally{ try{ this.sqlIn.close(); this.con.close(); }catch(SQLExceptione1){ e1.printStackTrace(); } } if(this.m_raAdmin.isSelected()){ this.setVisible(false); this.frame_AdminHome.setVisible(true); }elseif(this.m_raCashier.isSelected()){ this.setVisible(false); this.frame_SaleGoods.setVisible(true); this.frame_SaleGoods.setCashierName(employeeName); }elseif(this.m_raStorekeeper.isSelected()){ this.setVisible(false); this.frame_WarehouseManagemnet.setVisible(true); this.frame_WarehouseManagemnet.setSoreKeeperName(employeeName); } }elseif(e.getSource()==btnCancel){ System.exit(0); } }添加商品數(shù)據(jù)庫(kù)連接packagesql;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;importjava.util.Date;importdateitem.Goods;publicclassGoodsManageSQL{ ////////數(shù)據(jù)庫(kù)連接 privatefinalStringDBDRIVER="com.microsoft.sqlserver.jdbc.SQLServerDriver"; privatefinalStringDBURL="jdbc:sqlserver://localhost:1433;database=db_SPMposManageSystem"; privatefinalStringDBUSER="sa"; privatefinalStringDBPSW="a5119550"; privateConnectioncon; privatePreparedStatementsqlAddGoodsInfo, sqlDeleteGoodsInfo, sqlModifyGoodsInfo; privateStatementsqlSearchGoodsInfo,sqlModify; privateStatementsqlAddPurcahseOrder; privateStatementsqlSaleGoods; ///////////////// publicGoodsManageSQL(){ try{ Class.forName(this.DBDRIVER); }catch(ClassNotFoundExceptione){ e.printStackTrace(); } } ///////////////////////////////////////////////////////// ////////////////////////////////////////////////////////// /** *創(chuàng)建添加商品的數(shù)據(jù)庫(kù)連接 */ publicvoidcreateAddGoodsInfoConnection(){ try{ this.con=DriverManager.getConnection(this.DBURL,this.DBUSER,this.DBPSW); Stringsql="insertintogoodsInfovalues(?,?,?,?,?)"; this.sqlAddGoodsInfo=con.prepareStatement(sql); this.sqlSearchGoodsInfo=con.createStatement(); this.sqlModify=con.createStatement(); this.sqlAddPurcahseOrder=con.createStatement(); }catch(SQLExceptione){ e.printStackTrace(); } } /** *添加商品 *@paramgoods *@return */ publicintinsertGoodsInfo(Goodsgoods){ intflage=3; ResultSetrest=null; StringOEMSnumber=goods.getM_OEMSnumber(); try{ Stringsql=""; sql="select*fromOEMsInfowhereOEMSnumber='"+OEMSnumber+"'"; rest=this.sqlSearchGoodsInfo.executeQuery(sql); if(!rest.next()){////假如數(shù)據(jù)庫(kù)中沒(méi)有改供應(yīng)商編號(hào),則返回2 return2; } /////獲得商品信息 sql="selectgoodsCountfromgoodsInfowheregoodsNumber='"+goods.getM_goodsNumber()+"'"; rest=this.sqlSearchGoodsInfo.executeQuery(sql); if(rest.next()){////假如數(shù)據(jù)庫(kù)中已經(jīng)存在該編號(hào)的商品,則更新 sql="updategoodsInfosetgoodsCount="+rest.getInt(1)+goods.getM_goodsCount()+"wheregoodsNumber='"+goods.getM_goodsNumber()+"'"; this.sqlModify.executeUpdate(sql); }else{ this.sqlAddGoodsInfo.setString(1,goods.getM_goodsNumber()); this.sqlAddGoodsInfo.setString(2,goods.getM_goodsName()); this.sqlAddGoodsInfo.setDouble(3,goods.getM_inPrice()); this.sqlAddGoodsInfo.setInt(4,goods.getM_goodsCount()); this.sqlAddGoodsInfo.setString(5,goods.getM_goodsType()); if(this.sqlAddGoodsInfo.executeUpdate()>0){ flage=0;////勝利插入商品信息,返回0 } } ////////新建商品訂單 doubleprimeMoeny=goods.getM_inPrice()*goods.getM_goodsCount(); Datedate=newDate(); Stringtime=(date.getYear()+1900)+"/"+date.getMonth()+"/"+date.getDay(); sql="insertintoPurchaseOrdervalues('"+OEMSnumber+goods.getM_goodsNumber()+time+"','"+goods.getM_goodsNumber()+"','"+ OEMSnumber+"','"+time+"',"+primeMoeny+")"; this.sqlAddPurcahseOrder.execute(sql); }catch(SQLExceptione){ e.printStackTrace(); }finally{ try{ this.con.close(); }catch(SQLExceptione){ e.printStackTrace(); } } returnflage; } /** *創(chuàng)建查詢商品信息數(shù)據(jù)庫(kù)連接 */ publicvoidcreateSearchGoodsInfoConnection(){ try{ con=DriverManager.getConnection(this.DBURL,this.DBUSER,this.DBPSW); this.sqlSearchGoodsInfo=con.createStatement(); }catch(SQLExceptione){ e.printStackTrace(); } } publicResultSetselectGoodsInfo(Stringsql){ ResultSetrest=null; try{ rest=this.sqlSearchGoodsInfo.executeQuery(sql); }catch(SQLExceptione){ e.printStackTrace(); } returnrest; } publicvoidcloseSelectCon(){ try{ this.con.close(); }catch(SQLExceptione){ e.printStackTrace(); } } /** *創(chuàng)建商品信息修改數(shù)據(jù)庫(kù)連接(只需修改商品名稱,庫(kù)存量,類型) */ publicvoidcreateModifyGoodsInfoConnection(){ try{ con=DriverManager.getConnection(this.DBURL,this.DBUSER,this.DBPSW); Stringsql="updategoodsInfosetgoodsName=?,goodsCount=?,goodsType=?wheregoodsNumber=?"; this.sqlModifyGoodsInfo=con.prepareStatement(sql); }catch(SQLExceptione){ e.printStackTrace(); } } publicbooleanupdateGoodsInfo(Goodsgoods){ booleanflage=false; try{ this.sqlModifyGoodsInfo.setString(1,goods.getM_goodsName()); this.sqlModifyGoodsInfo.setInt(2,goods.getM_goodsCount()); this.sqlModifyGoodsInfo.setString(3,goods.getM_goodsType()); this.sqlModifyGoodsInfo.setString(4,goods.getM_goodsNumber()); intn=this.sqlModifyGoodsInfo.executeUpdate(); if(n>0){ returntrue; } }catch(SQLExceptione){ e.printStackTrace(); }finally{ try{ this.con.close(); }catch(SQLExceptione){ e.printStackTrace(); } } returnflage; } publicvoidcreateSaleGoodsConnection(){ try{ con=DriverManager.getConnection(this.DBURL,this.DBUSER,this.DBPSW); this.sqlSaleGoods=con.createStatement(); }catch(SQLExceptione){ e.printStackTrace(); } } publicResultSetsaleGoods(StringgoodsNumber){ ResultSetrst=null; Stringsql="selectgoodsShelf.goodsNumber,goodsName,goodsShelf.salePrice"+ "fromgoodsInfo,goodsShelf"+ "wheregoodsInfo.goodsNumber=goodsShelf.goodsNumberandgoodsShelf.goodsNumber='"+goodsNumber+"'"; try{ rst=this.sqlSaleGoods.executeQuery(sql); }catch(SQLExceptione){ e.printStackTrace(); } returnrst; } publicvoidupdateGoodsShelf(intcount){ Stringsql=""; sql="updategoodsShelfsetgoodsCount=goodsCount-"+count+""; try
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 綠城育華學(xué)校九年級(jí)上學(xué)期語(yǔ)文12月檢測(cè)試卷
- 廣水市九年級(jí)上學(xué)期語(yǔ)文期中考試試卷
- 八年級(jí)上學(xué)期語(yǔ)文9月月考試卷
- 高支模驗(yàn)收申請(qǐng)1
- 窗花剪紙課件教學(xué)課件
- 置業(yè)類合同(2篇)
- 《數(shù)學(xué)物理方法》 測(cè)試題及答案匯 黃志祥 第1-8章
- 辯論英文課件教學(xué)課件
- 濟(jì)南的冬天說(shuō)課稿14篇
- 南京航空航天大學(xué)《博弈與社會(huì)》2022-2023學(xué)年第一學(xué)期期末試卷
- 2.2.1 有理數(shù)的乘法(第一課時(shí))-教案
- 中煤電力有限公司招聘筆試題庫(kù)2024
- 輕量化材料在航空航天領(lǐng)域的應(yīng)用
- 《計(jì)算機(jī)視覺(jué)-基于OpenCV的圖像處理》全套教學(xué)課件
- 2024美團(tuán)商家入駐合作協(xié)議
- 2023年10月廣東深圳市光明區(qū)馬田街道辦事處招聘一般專干21人筆試歷年典型考題及考點(diǎn)剖析附答案帶詳解
- 《中國(guó)噬血細(xì)胞綜合征診斷與治療指南(2022年版)》解讀
- 2024年社區(qū)工作者考試必背1000題題庫(kù)附完整答案(全優(yōu))
- 2024-2030年中國(guó)口腔CBCT行業(yè)競(jìng)爭(zhēng)格局分析及市場(chǎng)需求前景報(bào)告
- 湖南省建筑工程定額
- 人教版六年級(jí)數(shù)學(xué)上冊(cè)《全冊(cè)完整》課件
評(píng)論
0/150
提交評(píng)論