進銷存管理系統(tǒng)需求分析_第1頁
進銷存管理系統(tǒng)需求分析_第2頁
進銷存管理系統(tǒng)需求分析_第3頁
進銷存管理系統(tǒng)需求分析_第4頁
進銷存管理系統(tǒng)需求分析_第5頁
已閱讀5頁,還剩62頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

11目錄第1章系統(tǒng)需求分析11.1需求概述11.2需求描述11.2.1數(shù)據(jù)流圖11.2.2數(shù)據(jù)字典4第2章系統(tǒng)初步設計252.1基于PowerDesigner的數(shù)據(jù)庫設計25總E-R圖設計25銷售管理子系統(tǒng)E-R圖設計26倉庫管理子系統(tǒng)E-R圖設計31采購管理子系統(tǒng)E-R圖設計362.2數(shù)據(jù)庫不標準化設計舉例412.2.1不滿足第一范式舉例412.2.2不滿足第二范式舉例412.2.3不滿足第三范式舉例442.3系統(tǒng)功能界面設計462.3.1系統(tǒng)功能圖462.3.2銷售管理界面設計462.3.3倉庫管理界面設計472.3.4采購管理界面設計48第3章基于J2EE+MySQL實現(xiàn)493.1J2EE實現(xiàn)代碼493.2數(shù)據(jù)庫的實現(xiàn)代碼643.3成員名單823.4參考資料8211第1章系統(tǒng)需求分析1.1需求概述在目前超市中,商品的管理至關重要。這里對商品的管理包括進、銷、存3個方面??梢越⒁粋€超市進銷存管理系統(tǒng),對超市的管理者、營業(yè)員、庫存管理員等減輕其工作量,便于經(jīng)營管理。功能需求:①采購管理功能模塊:采購方案、采購訂單、采購入庫、采購退貨、應付款、采購付款。②銷售管理功能模塊:、報價單、銷售訂單、銷售出庫、銷售退貨、應收款、銷售收款。③庫存管理功能模塊:其它入庫、其它出庫、庫存警報、庫存報表、根本資料設計。超市需要處理大量的庫存信息,還要時刻更新產(chǎn)品的銷售信息,不斷添加商品信息。面對不同種類的信息,需要合理的數(shù)據(jù)庫結(jié)構(gòu)來保存數(shù)據(jù)信息,需要有效的程序結(jié)構(gòu)支持各種數(shù)據(jù)操作的執(zhí)行。它最主要的特點是能夠?qū)崟r的和準確的控制店內(nèi)的銷售情況。如果可以能夠?qū)崟r掌握銷售流程及銷售情況,那么可以有效地加速商品的周轉(zhuǎn)率并提高效勞質(zhì)量,而且可以減少產(chǎn)品售價不符等所產(chǎn)生的問題。顧客的消費要求的是希望在超市購物中能根本上都能購得所需的商品,并且還要既保證商品質(zhì)量還要享受優(yōu)質(zhì),方便的效勞。1.2需求描述數(shù)據(jù)流圖●圖1.1第0層數(shù)據(jù)流圖●進銷存管理系統(tǒng)數(shù)據(jù)流圖〔第一層〕說明:每一個處理也均可由外部實體直接輸入數(shù)據(jù)●銷售管理數(shù)據(jù)流程圖〔第二層〕●倉庫管理數(shù)據(jù)流程圖〔第二層〕●采購管理數(shù)據(jù)流程圖〔第二層〕數(shù)據(jù)字典.1數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)存儲:報價單包含以下兩個表。表1.1報價單編號數(shù)據(jù)項數(shù)據(jù)項別名數(shù)據(jù)類型數(shù)據(jù)項含義1報價單單號bjdNumber唯一標識2報價日期bjrqDate3客戶khNumber外碼4報價人bjrNumber外碼5貨幣hbText6操作員czyNumber外碼7備注bzText表1.2報價單明細編號數(shù)據(jù)項數(shù)據(jù)項別名數(shù)據(jù)類型數(shù)據(jù)項含義1報價明細單號bjdmxNumber唯一標識2商品spNumber外碼3單價djMoney4報價單號bjdNumber外碼5數(shù)量slNumber數(shù)據(jù)存儲:訂單包含以下兩個表。表1.3訂單編號數(shù)據(jù)項數(shù)據(jù)項別名數(shù)據(jù)類型數(shù)據(jù)項含義1訂單單號ddNumber唯一標識2訂單日期ddrqDate3客戶khNumber外碼4貨幣hbText5銷售人xsrNumber外碼6銷售日期jhrqDate外碼7付款方式fkfsText8交貨地點jhddText9備注bzText10完成狀態(tài)wcztNumber11操作員czyNumber外碼12審核人shrNumber外碼13審核狀態(tài)shztNumber表1.4訂單明細編號數(shù)據(jù)項數(shù)據(jù)項別名數(shù)據(jù)類型數(shù)據(jù)項含義1訂單明細單號ddmxNumber唯一標識2商品spNumber外碼3單價djMoney4訂單單號ddNumber外碼5數(shù)量slNumber數(shù)據(jù)存儲:退貨單包含以下兩個表。表1.5退貨單編號數(shù)據(jù)項數(shù)據(jù)項別名數(shù)據(jù)類型數(shù)據(jù)項含義1單號ckdNumber唯一標識2退貨日期thrqDate3客戶khNumber外碼4貨幣hbText5銷售人xsrNumber外碼6驗收人ysrNumber外碼7備注bzText8操作員czyNumber外碼9審核人shhrNumber外碼10審核狀態(tài)shhztNumber11錄入日期lrrqDate12審核日期shrqDate表1.6退貨單明細編號數(shù)據(jù)項數(shù)據(jù)項別名數(shù)據(jù)類型數(shù)據(jù)項含義1退貨明細單號ckmxNumber唯一標識2商品spNumber外碼3單價djMoney4退貨單單號ckdNumber外碼5數(shù)量slNumber數(shù)據(jù)存儲:出庫單包含以下兩個表。表1.7出庫單編號數(shù)據(jù)項數(shù)據(jù)項別名數(shù)據(jù)類型數(shù)據(jù)項含義1單號ckdNumber唯一標識2銷售日期xsrqDate3客戶khNumber外碼4貨幣hbText5付款方式fkfsText6銷售人xsrNumber外碼7發(fā)貨人fhrNumber8送貨地址shdzText9備注bzText10操作員czyNumber外碼11審核人shhrNumber外碼12審核狀態(tài)shhztNumber13訂單號ddhNumber外碼14錄入日期lrrqDate15審核日期shrqDate表1.8出庫單明細編號數(shù)據(jù)項數(shù)據(jù)項別名數(shù)據(jù)類型數(shù)據(jù)項含義1出庫明細單號ckmxNumber唯一標識2商品spNumber外碼3單價djMoney4出庫單單號ckdNumber外碼5數(shù)量slNumber數(shù)據(jù)存儲:應收款單包含以下單個表。表1.9應收款單編號數(shù)據(jù)項數(shù)據(jù)項別名數(shù)據(jù)類型數(shù)據(jù)項含義1單號yskNumber唯一標識2收款期限skqxDate3發(fā)生日期fsrqDate4客戶khNumber外碼5貨幣hbText6應收金額ysjeMoney7已收金額yisjeMoney8余額yeMoney9銷售/退貨lyNumber10操作員czyNumber外碼11審核人shhrNumber外碼12備注bzText13審核狀態(tài)shhztNumber數(shù)據(jù)存儲:收款單包含以下兩個表。表1.10收款單編號數(shù)據(jù)項數(shù)據(jù)項別名數(shù)據(jù)類型數(shù)據(jù)項含義1單號skdNumber唯一標識2收款日期skrqDate3金額jeNumber4客戶khNumber外碼5貨幣hbText6經(jīng)手人jsrNumber外碼7收款方式skfsText8收款去向skqxText9操作員czyNumber外碼10審核人shhrNumber外碼11備注bzText12審核狀態(tài)shhztNumber表1.11收款單明細編號數(shù)據(jù)項數(shù)據(jù)項別名數(shù)據(jù)類型數(shù)據(jù)項含義1收款明細單號skmxNumber唯一標識2原始單號ysdhNumber外碼3本次收款bcskMoney數(shù)據(jù)存儲:商品庫存信息單包含以下兩個表。表1.12商品信息表〔goodinfo〕編號數(shù)據(jù)項數(shù)據(jù)項別名數(shù)據(jù)類型數(shù)據(jù)項含義1商品編碼GcodeVarchar〔5〕唯一標識2商品名稱midvarchar(10)外碼3類別kindsvarchar(8)4型號modelvarchar(4)5單位unitvarchar(2)6倉庫編碼scodevarchar(5)外碼7存放倉庫storevarchar(12)8入庫方案單價invalueMoney9出庫方案單價outvalueMoney10原始庫存orstockFloat11警戒最小庫存MinspaceFloat12警戒最大庫存maxspaceFloat3庫存文件編號數(shù)據(jù)項數(shù)據(jù)項別名數(shù)據(jù)類型數(shù)據(jù)項含義1商品spNumber外碼2倉庫ckNumber外碼3庫存數(shù)量kcNumber數(shù)據(jù)存儲:出庫單包含以下兩個表編號數(shù)據(jù)項數(shù)據(jù)項別名數(shù)據(jù)類型數(shù)據(jù)項含義1單號ckdNumber唯一標識2銷售日期xsrqDate3客戶khNumber外碼4貨幣hbText5付款方式fkfsText6銷售人xsrNumber外碼7發(fā)貨人fhrNumber8送貨地址shdzText9備注bzText10操作員czyNumber外碼11審核人shhrNumber外碼12審核狀態(tài)shhztNumber13訂單號ddhNumber外碼14錄入日期lrrqDate15審核日期shrqDate編號數(shù)據(jù)項數(shù)據(jù)項別名數(shù)據(jù)類型數(shù)據(jù)項含義1出庫明細單號ckmxNumber唯一標識2商品spNumber外碼3單價djMoney4出庫單單號ckdNumber外碼5數(shù)量slNumber數(shù)據(jù)存儲:商品明細和倉庫包含以下兩個表編號數(shù)據(jù)項數(shù)據(jù)項別名數(shù)據(jù)類型數(shù)據(jù)項含義1商品spNumber外碼2倉庫ckNumber外碼3庫存數(shù)量kcNumber表1.17倉庫信息表(cinfo)編號數(shù)據(jù)項數(shù)據(jù)項別名數(shù)據(jù)類型數(shù)據(jù)項含義1倉庫編號Codevarchar(5)唯一標識2倉庫名稱NameVarchar(25)3存貨種類Kindsvarchar(20)4存貨價值ValueInternet商品信息表〔goodinfo〕編號數(shù)據(jù)項數(shù)據(jù)項別名數(shù)據(jù)類型數(shù)據(jù)項含義1商品編碼GcodeVarchar〔5〕唯一標識2商品名稱midvarchar(10)外碼3類別kindsvarchar(8)4型號modelvarchar(4)5單位unitvarchar(2)6倉庫編碼scodevarchar(5)外碼7存放倉庫storevarchar(12)8入庫方案單價invalueMoney9出庫方案單價outvalueMoney10原始庫存orstockFloat11警戒最小庫存MinspaceFloat12警戒最大庫存maxspaceFloat數(shù)據(jù)存儲:入庫單包含以下兩個表表1.19入庫單(inrd)編號數(shù)據(jù)項數(shù)據(jù)項別名數(shù)據(jù)類型數(shù)據(jù)項含義1入貨單號idvarchar(10)唯一標識2商品編碼Codevarchar(15外碼3單價PriceMoney4數(shù)量NumFloat5總額TotalvMoney表1.20入庫登記表〔inregister〕編號數(shù)據(jù)項數(shù)據(jù)項別名數(shù)據(jù)類型數(shù)據(jù)項含義1入庫日期DateTime2入庫單號Idvarchar(10)唯一標識3商品編碼Codevarchar(5)外碼4商品名稱Namevarchar(10)5已付款AvalueMoney6供單位編碼Ucodevarchar(5)外碼7供貨單位Unamevarchar(20)8經(jīng)辦人編碼Opcodevarchar(5)外碼9經(jīng)辦人Operatorvarchar(8)10備注Remarksvarchar(255)數(shù)據(jù)存儲:報警單包含以下兩個表表1.21報警表〔alarm〕編號數(shù)據(jù)項數(shù)據(jù)項別名數(shù)據(jù)類型數(shù)據(jù)項含義1IDIDChar(10)唯一標識2經(jīng)辦人Operatorvarchar(8)3報警時間AlarmtTime4備注Remarksvarchar(255)表1.22報警明細表〔alarminfo〕編號數(shù)據(jù)項數(shù)據(jù)項別名數(shù)據(jù)類型數(shù)據(jù)項含義1IDIDChar(10)唯一標識2貨品編碼GcodeVchar〔5〕3單位unitVchar(2)4庫存StockFloat5此報警信息是否已解決CheckChar(2)未解決已解決數(shù)據(jù)存儲:供貨商資料包含以下一個表3供貨商資料文件〔supplier〕編號數(shù)據(jù)項數(shù)據(jù)項別名數(shù)據(jù)類型數(shù)據(jù)項含義1供貨商編碼supplierIDchar(10)唯一標識2供貨商名稱supplierNamevarchar(20)3聯(lián)系人contactmanchar(20)4職務positionchar(20)5地址addresstext(50)6城市cityvarchar(20)7postcodechar(6)8國家coutrychar(20)9Telchar(20)10開戶銀行depositBanktext(50)11銀行賬號bankAccountchar(20)12稅號taxNumchar(20)13網(wǎng)址websitetext(50)14郵箱e-mailtext(50)15備注otherstext(100)16使用狀態(tài)useStateenum數(shù)據(jù)存儲:采購方案單包含以下兩個表4采購方案單主文件〔caigouPlan〕編號數(shù)據(jù)項數(shù)據(jù)項別名數(shù)據(jù)類型數(shù)據(jù)項含義1采購方案單號planIDchar(10)唯一標識2部門departvarchar(20)3方案日期planDatedate4方案人plannerIDchar(10)外碼5備注otherstext(100)6操作人operatorIDchar(10)外碼7錄入日期inDatedate8審核人examinerIDchar(10)外碼9審核狀態(tài)examineStateenum10是否處理dealenum5采購方案單明細文件〔planDetail〕編號數(shù)據(jù)項數(shù)據(jù)項別名數(shù)據(jù)類型數(shù)據(jù)項含義1采購方案明細單號planDetailIDchar(10)唯一標識2采購方案單號planIDchar(10)外碼3商品編碼goodsIDchar(10)外碼4數(shù)量quantityint(5)5備注otherstext(100)數(shù)據(jù)存儲:采購訂單包含以下兩個表6采購訂單主文件〔caigouOrder〕編號數(shù)據(jù)項數(shù)據(jù)項別名數(shù)據(jù)類型數(shù)據(jù)項含義1采購訂單單號orderIDchar(10)唯一標識2供給商supplierIDchar(10)外碼3訂單日期orderDatedate4交貨日期deliverDatedate5貨幣monetarychar(10)6采購人buyerIDchar(10)7交貨地點PODtext(50)8備注otherstext(1009操作員operatorIDchar(10)外碼10審核人examinerIDchar(10外碼11審核狀態(tài)examineStateenum12是否完成dealenum7采購訂單明細文件〔orderDetail〕編號數(shù)據(jù)項數(shù)據(jù)項別名數(shù)據(jù)類型數(shù)據(jù)項含義1采購訂單明細單號orderDetailIDchar(10)唯一標識2采購訂單單號orderIDchar(10)外碼3商品編碼goodsIDchar(10)外碼4數(shù)量quantityint(5)5單價uintpricedecimal(5)6備注otherstext(100)數(shù)據(jù)存儲:采購退貨單包含以下兩個表8采購退貨單主文件〔caigouReturned〕編號數(shù)據(jù)項數(shù)據(jù)項別名數(shù)據(jù)類型數(shù)據(jù)項含義1采購退貨單單號returnedIDchar(10)唯一標識2供貨商supplierIDchar(10)外碼3貨幣monetarychar(10)外碼4發(fā)票號billIDchar(10)外碼5退貨日期returnedDatedate6發(fā)貨人shipperIDchar(10)外碼7操作員operatorIDchar(10)外碼8錄入日期enterDatedate9修改人opmanIDchar(10)外碼10修改日期opDatedate11審核人examinerIDchar(10)外碼12審核日期examineDatedate13備注otherstext(100)14審核狀態(tài)examineStateenum9采購退貨單明細文件〔returnedDetail〕編號數(shù)據(jù)項數(shù)據(jù)項別名數(shù)據(jù)類型數(shù)據(jù)項含義1采購退貨單明細單號returnDetailIDchar(10)唯一標識2采購退貨單單號returnedIDchar(10)外碼3商品編碼goodsIDchar(10)外碼4數(shù)量quantityint(5)5單價uintpricedecimal(5)6備注otherstext(100)數(shù)據(jù)存儲:采購入庫單包含以下兩個表表1.30采購入庫單主文件〔caigouEnter〕編號數(shù)據(jù)項數(shù)據(jù)項別名數(shù)據(jù)類型數(shù)據(jù)項含義1采購入庫單單號enterIDchar(10)唯一標識2供給商名稱supplierNamevarchar(20)3貨幣monetarychar(10)4發(fā)票號billIDchar(10)外碼5采購日期buyDatedate6采購人buyerIDchar(10)外碼7采購訂單單號orderIDchar(10)外碼8操作員operatorIDchar(10)外碼9錄入日期enterDatedate外碼10修改人opmanIIDchar(10)外碼11修改日期opDatedate12審核人examinerIDchar(10)外碼13審核日期examineDatedate14備注otherstext(100)15審核狀態(tài)examineStateenum表1.31采購入庫單明細文件〔returnedDetail〕編號數(shù)據(jù)項數(shù)據(jù)項別名數(shù)據(jù)類型數(shù)據(jù)項含義1采購入庫單明細單號enterDetailIDchar(10)唯一標識2采購入庫單單號enterIDchar(10)外碼3商品編碼goodsIDchar(10)外碼4數(shù)量quantityint(5)5單價uintpricedecimal(5)6備注otherstext(100)數(shù)據(jù)存儲:采購應付款包含以下一個表2采購應付款文件〔caigouDuepay〕編號數(shù)據(jù)項數(shù)據(jù)項別名數(shù)據(jù)類型數(shù)據(jù)項含義1應付款單號duepayIDchar(10)唯一標識2付款期限payTimevarchar(20)3發(fā)生日期happenDatechar(10)4供給商supplierIDchar(10)外碼5貨幣monetarychar(5)6應付金額dueMoneydecimal(5)7已付金額paidMoneydecimal(5)8余額remainMoneydecimal(5)9采購/退貨buyORreturnenum10操作員operatorIDchar(10)外碼11審核人examinerIIDchar(10)外碼12備注otherstext(100)13核銷狀態(tài)chargeoffenum數(shù)據(jù)存儲:采購付款包含以下兩個表3采購付款主文件〔caigouPaid〕編號數(shù)據(jù)項數(shù)據(jù)項別名數(shù)據(jù)類型數(shù)據(jù)項含義1付款單號paidIDchar(10)唯一標識2付款日期payTimedate3金額moneydecimal(5)4發(fā)票號billIDchar(10)外碼5供給商supplierIDchar(10)外碼6貨幣monetarychar(5)7付款方式payStyletext(20)8付款來源payFromtext(20)9操作員operatorIDchar(10)外碼10審核人examinerIIDchar(10)外碼11備注otherstext(100)12審核狀態(tài)examineStateenum表1.34采購付款明細文件〔paidDetail〕編號數(shù)據(jù)項數(shù)據(jù)項別名數(shù)據(jù)類型數(shù)據(jù)項含義1付款明細單號paidDetailIDchar(10)唯一標識2付款單號paidIDchar(10)外碼3原始訂單號orderIDchar(10)外碼4本次付款curPaydecimal(5).2數(shù)據(jù)處理1.與報價單有關的數(shù)據(jù)處理●商品銷售報價單①處理過程“提交報價單〞可描述如下:·處理過程:提交報價單·輸入:報價單數(shù)據(jù)·輸出:報價單·說明:外部實體輸入報價單數(shù)據(jù),包括商品名稱、數(shù)量等信息,由商品列表中提供商品的單位、規(guī)格型號、顏色、單價等信息,分配報價單號,生成報價單。2.與銷售訂單有關的數(shù)據(jù)處理●商品銷售訂單①處理過程“提交訂單〞可描述如下:·處理過程:提交定單·輸入:訂單數(shù)據(jù)或報價單數(shù)據(jù)·輸出:審核成功的訂單·說明:外部實體輸入訂單數(shù)據(jù)或從報價單中導入數(shù)據(jù),包括商品名稱、數(shù)量等信息,由商品列表中提供商品的單位、規(guī)格型號、顏色、單價等信息,分配訂單號,生成訂單和應收款單,并由管理員進行審核,輸出審核批準的訂單。3.與銷售出庫單有關的數(shù)據(jù)處理●圖1.8銷售出庫單①處理過程“提交出庫單〞可描述如下:·處理過程:提交出庫單單·輸入:已批準的訂單·輸出:出庫單·說明:在該操作中,外部實體輸入出庫單數(shù)據(jù)或流入已批準訂單的信息,分配訂單號等,生成出庫單。②處理過程“審核訂單〞可描述如下:·處理過程:審核訂單·輸入:出庫單·輸出:出庫單審核結(jié)果·說明:在該操作中,流入出庫單的信息,有管理員進行審核,審核通過后即可修改庫存文件,也可對由該出庫單產(chǎn)生的應收款單進行收款,并完成該出庫單的訂單。4.與退貨單有關的數(shù)據(jù)處理●圖1.9銷售退貨單①處理過程“提交退貨單〞描述如下:·處理過程:提交退貨單·輸入:退貨單信息·輸出:退貨單·說明:外部實體輸入退貨單信息,包括商品名稱、數(shù)量等信息,由商品列表中提供商品的單位、規(guī)格型號、顏色、單價等信息,分配訂單號,生成退貨單和應收款單。②處理過程“審核退貨單〞可描述如下:·處理過程:審核退貨單·輸入:退貨單·輸出:已審核的退貨單·說明:在該操作中,流入退貨單的信息,由管理員進行審核,審核通過后即可修改商品庫存文件,也可對由該退貨單產(chǎn)生的應收款單進行收款。5.與應收款有關的數(shù)據(jù)處理●圖1.10應收款單①處理過程“產(chǎn)生應收款〞描述如下:·處理過程:產(chǎn)生應收款·輸入:應收款信息·輸出:應收款·說明:可由銷售出庫單和退貨單生成應收款單,也可有外部實體輸入應收款信息,如發(fā)生日期,收款日期,客戶,貨幣,應收款金額和備注等信息。只有手工輸入的應收款單據(jù)才可以修改或刪除,由銷售出庫或銷售退貨生成的單據(jù)只能瀏覽,如有誤請修改相應的銷售出庫或退貨單據(jù),系統(tǒng)會重新生成正確的應收款單據(jù)。應收款單據(jù)不需要處理,銷售收款管理處理相應的應收款單據(jù),當該應收款單據(jù)收款完成,相應的銷售收款單據(jù)審核,應收款單據(jù)系統(tǒng)自動核銷。6.與收款單有關的數(shù)據(jù)處理●圖1.11收款單①處理過程“提交收款單〞描述如下:·處理過程:提交收款單·輸入:收款信息·輸出:收款單·說明:當外部實體選擇“客戶〞后,系統(tǒng)自動調(diào)出該客戶所有尚未收清的應收款單據(jù),假設其原始單據(jù)沒有審核,那么該單據(jù)便不能進行收款處理,其它可以收款款。由外部實體輸入本次收款合計金額,點擊“分配〞鍵,系統(tǒng)自動分配“本次收款〞金額,;當然也可在“本次收款〞處也可以手工輸入收款金額,。為了保證收款的正確性,本次收款合計金額必須等于本次收款之和,否那么不能存盤。②處理過程“審核收款單〞可描述如下:·處理過程:審核收款單·輸入:收款單信息·輸出:應收款信息·說明:在該操作中,由外部實體對收款單信息進行審核,審核完成后會自動核銷相應的應收款的收款信息。7.與入庫單有關的數(shù)據(jù)處理●圖1.12入庫單①處理過程“提交入庫單〞描述如下:·處理過程:提交入庫單·輸入:入庫信息·輸出:入庫單·說明:外部實體輸入入庫單數(shù)據(jù),包括入庫日期、經(jīng)手人、備注等信息,由商品列表中提供商品的單位、規(guī)格型號、顏色、單價等信息,分配方案單號,生成采購方案單。②處理過程“審核入庫單〞可描述如下:·處理過程:審核入庫單·輸入:入庫單信息·輸出:入庫單·說明:在該操作中,由外部實體對入庫單信息進行審核,審核完成后會自動核銷相應的入庫單的信息。8.與出庫單有關的數(shù)據(jù)處理●單①處理過程“提交出庫單〞描述如下:·處理過程:提交出庫單·輸入:出庫信息·輸出:出庫單·說明:外部實體輸入出庫單數(shù)據(jù),包括出庫日期、經(jīng)手人、備注等信息,由商品列表中提供商品的單位、規(guī)格型號、顏色、單價等信息,分配方案單號,生成采購方案單。②處理過程“審核出庫單〞可描述如下:·處理過程:審核出庫單·輸入:出庫單信息·輸出:出庫單·說明:在該操作中,由外部實體對出庫單信息進行審核,審核完成后會自動核銷相應的出庫單的信息。9.與倉庫調(diào)撥單有關的數(shù)據(jù)處理●圖1.14倉庫調(diào)撥單①處理過程“提交倉庫調(diào)撥單“描述如下:·處理過程:提交倉庫調(diào)撥單·輸入:調(diào)撥單數(shù)據(jù)·輸出:倉庫調(diào)撥單·說明:外部實體輸入倉庫調(diào)撥單數(shù)據(jù),包括調(diào)撥日期、經(jīng)手人、發(fā)貨人、備注、調(diào)入倉庫等信息,由商品列表中提供商品的單位、規(guī)格型號、顏色、單價等信息,分配方案單號,生成倉庫調(diào)撥單。②處理過程“審核調(diào)撥單〞可描述如下:·處理過程:審核調(diào)撥單·輸入:倉庫調(diào)撥單·輸出:調(diào)撥單審核結(jié)果·說明:在該操作中,流入倉庫調(diào)撥單的信息,由管理員進行審核,審核通過后即可匯總。10.與設置庫存有關的數(shù)據(jù)處理●圖1.15庫存設置①處理過程“庫存設置“描述如下:·處理過程:設置庫存·輸入:最小庫存,最大庫存·輸出:庫存信息·說明:外部實體輸入最大〔小〕庫存數(shù)據(jù),由商品列表中提供商品的單位、規(guī)格型號、顏色等信息。11.與庫存報警表有關的數(shù)據(jù)處理●圖1.16庫存報警表①處理過程“庫存報警〞可描述如下:·處理過程:庫存報警·輸入:倉庫〔分類〕信息·輸出:報警單·說明:在該操作中,外部實體輸入倉庫〔分類〕數(shù)據(jù),生成報警單。12.與采購方案單有關的數(shù)據(jù)處理●圖1.17采購方案單①處理過程“提交采購方案單“描述如下:·處理過程:提交采購方案單·輸入:方案單數(shù)據(jù)·輸出:采購方案單·說明:外部實體輸入采購方案單數(shù)據(jù),包括方案日期、方案人、備注等信息,由商品列表中提供商品的單位、規(guī)格型號、顏色、單價等信息,分配方案單號,生成采購方案單。②處理過程“審核方案單〞可描述如下:·處理過程:審核方案單·輸入:采購方案單·輸出:方案單審核結(jié)果·說明:在該操作中,流入采購方案單的信息,由管理員進行審核,審核通過后即可匯總,采購訂單錄入時可以直接引用匯總結(jié)果。13.與提交采購訂單有關的數(shù)據(jù)處理●圖1.18采購訂單①處理過程“提交采購訂單“描述如下:·處理過程:提交采購訂單·輸入:訂單數(shù)據(jù)·輸出:采購訂單·說明:外部實體輸入采購訂單數(shù)據(jù)或從導入?yún)R總采購方案單數(shù)據(jù),包括單據(jù)的日期、供給商、貨幣、采購人、交貨地點、備注等資料信息,由商品列表中提供商品的單位、規(guī)格型號、顏色、單價等信息,分配訂單單號,生成采購訂單,并由管理員進行審核,輸出審核通過的訂單。②處理過程“審核訂單〞可描述如下:·處理過程:審核訂單·輸入:采購訂單·輸出:方案單審核結(jié)果·說明:在該操作中,流入采購訂單的信息,由管理員進行審核,輸出審核通過的訂單。14.與采購入庫單有關的數(shù)據(jù)處理●圖1.19采購入庫單①處理過程“提交入庫單〞可描述如下:·處理過程:提交入庫單單·輸入:已審核通過的采購訂單·輸出:入庫單·說明:在該操作中,外部實體輸入入庫單數(shù)據(jù)或流入已已審核通過采購訂單的信息,分配入庫單號等,生成入庫單。②處理過程“審核入庫單〞可描述如下:·處理過程:審核入庫單·輸入:入庫單·輸出:入庫單審核結(jié)果·說明:在該操作中,流入入庫單的信息,由管理員進行審核,審核通過后即可修改庫存文件,也可對由該入庫單產(chǎn)生的應收款單進行收款,并完成該入庫單的訂單。15.與采購退貨單有關的數(shù)據(jù)處理●圖1.20采購退貨單①處理過程“提交采購退貨單〞描述如下:·處理過程:提交采購退貨單·輸入:采購退貨單信息·輸出:采購退貨單·說明:外部實體輸入采購退貨單信息,包括退貨日期、供給商、貨幣、采購人、發(fā)貨人、發(fā)票號、備注等信息,由商品列表中提供商品的單位、規(guī)格型號、顏色、單價等信息,分配退貨單號,生成采購退貨單和應付款單。②處理過程“審核采購退貨單〞可描述如下:·處理過程:審核采購退貨單·輸入:采購退貨單·輸出:已審核的采購退貨單·說明:在該操作中,流入采購退貨單的信息,由管理員進行審核,審核通過后即可修改商品庫存文件,也可對由該采購退貨單產(chǎn)生的應付款單進行收款。16.與應付款有關的數(shù)據(jù)處理●圖1.21應付款單①處理過程“產(chǎn)生應付款〞描述如下:·處理過程:產(chǎn)生應付款·輸入:應付款信息·輸出:應付款·說明:可由采購入庫單和采購退貨單生成應付款單,也可有外部實體輸入應付款信息,如發(fā)生日期,付款日期,供貨商,貨幣,應收款金額和備注等信息。只有手工輸入的應付款單據(jù)才可以修改或刪除,由采購入庫或采購退貨單生成的單據(jù)只能瀏覽,如有誤請修改相應的采購入庫或采購退貨單據(jù),系統(tǒng)會重新生成正確的應付款單據(jù)。應付款單據(jù)不需要處理,采購付款管理處理相應的應付款單據(jù),當該應付款單據(jù)付款完成,相應的采購付款單據(jù)審核,應付款單據(jù)系統(tǒng)自動核銷。17.與付款單有關的數(shù)據(jù)處理●圖1.22收款單①處理過程“提交付款單〞描述如下:·處理過程:提交付款單·輸入:付款信息·輸出:付款單·說明:當外部實體選擇“供貨商〞后,系統(tǒng)自動調(diào)出該供貨商所有尚未付清的應付款單據(jù),假設其原始單據(jù)沒有審核,那么該單據(jù)便不能進行付款處理,其它可以付款。由外部實體輸入本次付款合計金額,點擊“分配〞鍵,系統(tǒng)自動分配“本次付款〞金額,;當然也可在“本次付款〞處也可以手工輸入付款金額。為了保證付款的正確性,本次付款合計金額必須等于本次付款之和,否那么不能存盤。②處理過程“審核付款單〞可描述如下:·處理過程:審核付款單·輸入:付款單信息·輸出:應付款信息·說明:在該操作中,由外部實體對付款單信息進行審核,審核完成后會自動核銷相應的應付款的付款信息。第2章系統(tǒng)初步設計2.1基于PowerDesigner的數(shù)據(jù)庫設計總E-R圖設計說明:局部信息省略,詳細信息見子e-r圖●系統(tǒng)總e-r圖銷售管理子系統(tǒng)E-R圖設計說明:由于篇幅問題該圖中去除了實體員工。該實體與各個單據(jù)都有參考關系,詳見以下各個子e-r圖。●銷售子系統(tǒng)e-r圖.1銷售報價單e-r圖 銷售報價單界面如圖1.6所示。其e-r圖如以下圖所示。一張銷售報價單可有多個商品,一個商品可出現(xiàn)在多個報價單中,所以商品與報價單之間的聯(lián)系為多對多聯(lián)系;一張報價單只有一個客戶,一個客戶可有多張銷售報價單,所以客戶與報價單之間的聯(lián)系為一對多聯(lián)系;一張銷售報價單只有一個員工,一個員工可開出多張報價單,所以員工與報價單之間的聯(lián)系為一對多聯(lián)系?!皲N售報價單e-r圖.2銷售訂單e-r圖銷售訂單界面如圖1.7所示。其e-r圖如以下圖所示。一張銷售訂單可有多個商品,一個商品可出現(xiàn)在多個訂單中,所以商品與訂單之間的聯(lián)系為多對多聯(lián)系;一張訂單只有一個客戶,一個客戶可有多張銷售訂單,所以客戶與訂單之間的聯(lián)系為一對多聯(lián)系;一張銷售訂單只有一個員工,一個員工可開出多張訂單,所以員工與訂單之間的聯(lián)系為一對多聯(lián)系?!皲N售訂單e-r圖.3銷售出庫單e-r圖銷售出庫單界面如圖1.8所示。其e-r圖如以下圖所示。一張銷售出庫單可對應一張訂單,一張訂單對應一張個出庫單中,所以訂單與出庫單之間的聯(lián)系為多對多聯(lián)系;一張銷售出庫單可有多個商品,一個商品可出現(xiàn)在多個出庫單中,所以商品與出庫單之間的聯(lián)系為多對多聯(lián)系;一張出庫單只有一個客戶,一個客戶可有多張銷售出庫單,所以客戶與出庫單之間的聯(lián)系為一對多聯(lián)系;一張銷售出庫單只有一個員工,一個員工可開出多張出庫單,所以員工與出庫單之間的聯(lián)系為一對多聯(lián)系。●銷售出庫單e-r圖.4銷售退貨單e-r圖銷售退貨單界面如圖1.9所示。其e-r圖如以下圖所示。一張銷售退貨單可有多個商品,一個商品可出現(xiàn)在多個退貨單中,所以商品與退貨單之間的聯(lián)系為多對多聯(lián)系;一張退貨單只有一個客戶,一個客戶可有多張銷售退貨單,所以客戶與退貨單之間的聯(lián)系為一對多聯(lián)系;一張銷售退貨單只有一個員工,一個員工可開出多張退貨單,所以員工與退貨單之間的聯(lián)系為一對多聯(lián)系。●銷售退貨單e-r圖.5銷售應收款單e-r圖應收款0所示。其e-r圖如以下圖所示。一張應收款單對應一張銷售訂單或一張退貨單,一張銷售訂單或一張退貨單產(chǎn)生一張應收款單,所以銷售訂單和退貨單與應收款之間的聯(lián)系為一對一聯(lián)系;一張應收款單只有一個客戶,一個客戶可有多張應收款單,所以客戶與應收款單之間的聯(lián)系為一對多聯(lián)系;一張應收款單只有一個員工,一個員工可開出多張應收款單,所以員工與應收款單之間的聯(lián)系為一對多聯(lián)系?!皲N售應收款單e-r圖.6銷售收款單e-r圖銷售收款單界面如圖1.11所示。其e-r圖如以下圖所示。一張收款單對應多張應收款單,一張應收款單可由多張收款單支付完成,所以應收款單與收款單之間的聯(lián)系為一對一聯(lián)系;一張收款單只有一個客戶,一個客戶可有多張收款單,所以客戶與收款單之間的聯(lián)系為一對多聯(lián)系;一張收款單只有一個員工,一個員工可開出多張收款單,所以員工與收款單之間的聯(lián)系為一對多聯(lián)系?!皲N售收款單e-r圖倉庫管理子系統(tǒng)E-R圖設計●倉庫管理子系統(tǒng)e-r圖.1倉庫入庫單e-r圖 入庫單界面如圖1.12所示。其e-r圖如以下圖所示。一張入庫單可有多個商品,一個商品可出現(xiàn)在多個入庫單中,所以商品與入庫單之間的聯(lián)系為多對多聯(lián)系;一個倉庫可以有多個商品,一個顏色可對應多個商品單,所以倉庫與商品明細單之間的聯(lián)系為一對多聯(lián)系,顏色和單位都與商品明細之間的關系為一對多聯(lián)系;一張入庫單只有一個員工,一個員工可開出多張入庫單,所以員工與入庫單之間的聯(lián)系為一對多聯(lián)系?!駡D2.10倉庫入庫單e-r圖.2倉庫出庫單e-r圖出庫單界面如圖1.13所示。其e-r圖如以下圖所示。一張出庫單可有多個商品,一個商品可出現(xiàn)在多個出庫單中,所以商品與出庫單之間的聯(lián)系為多對多聯(lián)系;一個倉庫可以有多個商品,一個顏色可對應多個商品單,所以倉庫與商品明細單之間的聯(lián)系為一對多聯(lián)系,顏色和單位都與商品明細之間的關系為一對多聯(lián)系;一張出庫單只有一個員工,一個員工可開出多張出庫單,所以員工與出庫單之間的聯(lián)系為一對多聯(lián)系。●圖2.11倉庫出庫單e-r圖.3倉庫調(diào)撥單e-r圖調(diào)撥單界面如圖1.14所示。其e-r圖如以下圖所示。一張調(diào)撥單可有多個商品,一個商品可出現(xiàn)在多個調(diào)撥單中,所以商品與調(diào)撥單之間的聯(lián)系為多對多聯(lián)系;一個倉庫可以有多個商品,一個顏色可對應多個商品單,所以倉庫與商品明細單之間的聯(lián)系為一對多聯(lián)系,顏色和單位都與商品明細之間的關系為一對多聯(lián)系;一張調(diào)撥單只有一個員工,一個員工可開出多張調(diào)撥單,所以員工與調(diào)撥單之間的聯(lián)系為一對多聯(lián)系?!駡D2.12倉庫調(diào)撥單e-r圖.4倉庫報警單e-r圖報警單界面如圖1.16所示。其e-r圖如以下圖所示。一張報警單可有多個商品,一個商品可出現(xiàn)在多個報警單中,所以商品與報警單之間的聯(lián)系為多對多聯(lián)系;一個倉庫可以有多個商品,一個顏色可對應多個商品單,所以倉庫與商品明細單之間的聯(lián)系為一對多聯(lián)系,顏色和單位都與商品明細之間的關系為一對多聯(lián)系;一張報警單只有一個員工,一個員工可開出多張報警單,所以員工與報警單之間的聯(lián)系為一對多聯(lián)系?!駡D2.13倉庫報警單e-r圖采購管理子系統(tǒng)E-R圖設計●4采購管理子系統(tǒng)e-r圖.1采購方案單e-r圖 采購方案單界面如圖1.17所示。其e-r圖如以下圖所示。一張采購方案單可有多個商品,一個商品可出現(xiàn)在多個方案單中,所以商品與方案單之間的聯(lián)系為多對多聯(lián)系;一張報價單只有一個供貨商,一個供貨商可有多張采購方案單,所以供貨商與方案單之間的聯(lián)系為一對多聯(lián)系;一張采購方案單只有一個員工,一個員工可開出多張方案單,所以員工與方案單之間的聯(lián)系為一對多聯(lián)系?!駡D2.15采購方案單e-r圖.2采購訂單e-r圖采購訂單界面如圖1.18所示。其e-r圖如以下圖所示。一張采購訂單可有多個商品,一個商品可出現(xiàn)在多個訂單中,所以商品與訂單之間的聯(lián)系為多對多聯(lián)系;一張訂單只有一個供貨商,一個供貨商可有多張銷售訂單,所以供貨商與訂單之間的聯(lián)系為一對多聯(lián)系;一張采購訂單只有一個員工,一個員工可開出多張訂單,所以員工與訂單之間的聯(lián)系為一對多聯(lián)系?!駡D2.16采購訂單e-r圖.3采購入庫單e-r圖 采購入庫單界面如圖1.19所示。其e-r圖如以下圖所示。一張采購入庫單可有多個商品,一個商品可出現(xiàn)在多個入庫單中,所以商品與入庫單之間的聯(lián)系為多對多聯(lián)系;一張入庫單只有一個供貨商,一個供貨商可有多張采購入庫單,所以供貨商與入庫單之間的聯(lián)系為一對多聯(lián)系;一張采購入庫單只有一個員工,一個員工可開出多張入庫單,所以員工與入庫單之間的聯(lián)系為一對多聯(lián)系。一張采購入庫單對應一張采購訂單,一張訂單只有一張入庫單,所以采購訂單與入庫單之間的聯(lián)系為一對一聯(lián)系?!駡D2.17采購入庫單e-r圖.4采購退貨單e-r圖采購退貨單界面如圖1.20所示。其e-r圖如以下圖所示。一張采購退貨單可有多個商品,一個商品可出現(xiàn)在多個退貨單中,所以商品與退貨單之間的聯(lián)系為多對多聯(lián)系;一張退貨單只有一個供貨商,一個供貨商可有多張銷售退貨單,所以供貨商與退貨單之間的聯(lián)系為一對多聯(lián)系;一張采購退貨單只有一個員工,一個員工可開出多張退貨單,所以員工與退貨單之間的聯(lián)系為一對多聯(lián)系?!駡D2.18采購退貨單e-r圖.5采購應付款單e-r圖應付款界面如圖1.21所示。其e-r圖如以下圖所示。一張應付款單對應一張采購訂單,一張采購訂單產(chǎn)生一張應付款單,所以采購訂單與應付款之間的聯(lián)系為一對一聯(lián)系;一張應付款單只有一個供貨商,一個供貨商可有多張應付款單,所以供貨商與應付款單之間的聯(lián)系為一對多聯(lián)系;一張應付款單只有一個員工,一個員工可開出多張應付款單,所以員工與應付款單之間的聯(lián)系為一對多聯(lián)系。●圖2.19采購應付款單e-r圖.6采購付款單e-r圖 采購付款單界面如圖1.22所示。其e-r圖如以下圖所示。一張采購付款單對應多張應付款單,一張應付款單可由多張收款單支付完成,所以應付款單與付款單之間的聯(lián)系為一對一聯(lián)系;一張付款單只有一個供貨商,一個供貨商可有多張付款單,所以供貨商與付款單之間的聯(lián)系為一對多聯(lián)系;一張付款單只有一個員工,一個員工可開出多張付款單,所以員工與付款單之間的聯(lián)系為一對多聯(lián)系。●圖2.20采購付款單e-r圖2.2數(shù)據(jù)庫不標準化設計舉例關系數(shù)據(jù)庫中的關系是要滿足一定要求的,滿足不同程度要求的為不同范式。滿足最低要求的叫做第一范式,簡稱1NF。在第一范式中滿足進一步要求的為第二范式,其余以此類推。一個低一級范式的關系模式,通過模式分解可以轉(zhuǎn)換為假設干個高一級范式的關系模式的集合,這種過程就叫標準化。不滿足第一范式舉例一個關系模式定義為一個五元組:R(U,D,DOM,F(xiàn)),假設R的每一個分量都是一個不可分的數(shù)據(jù)項,那么R∈1NF。根據(jù)該定義,結(jié)合概念數(shù)據(jù)模型中設計的E-R圖,舉一個不是1NF的例子如下:[例1]關系模式為訂單〔訂單單號,訂單日期,客戶,貨幣,銷售人,銷售日期,付款方式,交貨地點,備注,完成狀態(tài),操作員,審核人,審核狀態(tài),商品(商品1,商品2,商品3,商品4,…),單價,數(shù)量,備注)。 其中一張訂單中可有多個商品,那么商品分量取了多個值,所以該關系模式不滿足第一范式。解決方法為:將訂單表分成兩張表:訂單〔訂單單號,訂單日期,客戶,貨幣,銷售人,銷售日期,付款方式,交貨地點,備注,完成狀態(tài),操作員,審核人,審核狀態(tài));訂單明細〔訂單單號,商品編號,單價,數(shù)量,備注〕。[例2]關系模式為入庫單〔單號,日期,客戶,付款方式,備注,完成狀態(tài),操作員,審核人,審核狀態(tài),商品(商品1,商品2,商品3,商品4,…))。 其中一張入庫中可有多個商品,那么商品分量取了多個值,所以該關系模式不滿足第一范式。解決方法為:將入庫單表分成兩張表:入庫單〔單號,日期,客戶,備注,完成狀態(tài),操作員,審核人,審核狀態(tài));入庫單明細〔入庫單明細號,商品〕。[例3]關系模式為采購訂單〔采購訂單單號,訂單交貨日期,供給商,貨幣,采購人,交貨地點,備注,完成狀態(tài),操作員,審核人,審核狀態(tài))。 其中一張采購訂單中有訂單日期和交貨日期,訂單交貨日期是一個可再分的數(shù)據(jù)項,所以該關系模式不滿足第一范式。解決方法為:將訂單交貨日期分為不可再分的數(shù)據(jù)項:采購訂單〔采購訂單單號,訂單日期,交貨日期,供給商,貨幣,采購人,交貨日期,交貨地點,備注,完成狀態(tài),操作員,審核人,審核狀態(tài))。2.2.2不滿足第二范式舉例一個關系模式定義為一個五元組:R(U,D,DOM,F(xiàn)),假設R∈1NF,且每一個非主屬性完全函數(shù)依賴于碼,那么R∈2NF。根據(jù)該定義,結(jié)合概念數(shù)據(jù)模型中設計的E-R圖,舉一個不是2NF的例子如下:[例1]關系模式為訂單明細文件〔訂單單號,商品編號,單價,數(shù)量,備注,商品名稱,顏色,規(guī)格,…)。其中“訂單明細文件〞的碼為〔訂單單號,商品編號〕。函數(shù)依賴例如如以下圖:商品編號商品編號訂單單號商品名稱顏色…數(shù)量單價●例1中的函數(shù)依賴圖圖中用虛線表示局部函數(shù)依賴。一個關系函數(shù)R不屬性2NF,就會產(chǎn)生以下幾個問題:1.插入異常。假假設要插入一個訂單細節(jié)中的商品信息,但該貨物還沒有對應的訂單生成,即缺少訂單單號,這樣的元組就插不進“訂單明細文件〞中。因為插入元組時必須給定碼,而這時碼值的一局部為空,因而訂單細節(jié)的固有信息無法插入。2.刪除異常。假假設訂單上記載著某種商品,現(xiàn)在這樣商品不需要了,那么該商品對應的數(shù)據(jù)項需要刪除。而商品編號是主屬性,刪除了商品編號,整個元組就必須跟著刪除,使得訂單上的其他信息也被刪除了,從而造成刪除異常,即不應刪除的信息也刪除了。3.修改復雜。如果某個商品出現(xiàn)在k條明細中,那么商品的信息,如商品名稱、顏色、規(guī)格等屬性重復存儲了k次,不僅存儲冗余度大,而且必須無遺漏地修改k個元組中全部商品名稱,顏色等信息,造成修改的復雜化。分析上面的例子,解決的方法是用投影分解把關系模式“訂單明細文件〞分解為兩個關系模式:商品信息〔商品編號,商品名稱,顏色,規(guī)格,…);訂單明細〔訂單單號,商品編號,單價,數(shù)量,備注〕。[例2]關系模式為貨物庫存-出庫-出庫單〔貨物編號,貨物名稱,數(shù)量,規(guī)格,單位,出庫單號,業(yè)務人,出庫日期,操作人)其中“貨物庫存-出庫-出庫單〞的碼為〔貨物編號,出庫單號〕。函數(shù)依賴例如如以下圖:貨物貨物編號出庫單號貨物名稱貨物數(shù)量備注出庫單號操作人業(yè)務人●圖2.22例2中的函數(shù)依賴圖圖中用虛線表示局部函數(shù)依賴。一個關系函數(shù)R不屬性2NF,就會產(chǎn)生以下幾個問題:1.插入異常。假假設要插入一個貨物信息,但該貨物還沒有對應的出庫單生成,即缺少出庫單號,這樣的元組就插不進“貨物庫存-出庫-出庫單〞中。因為插入元組時必須給定碼,而這時碼值的一局部為空,因而物料的固有信息無法插入。2.刪除異常。假假設出庫單上記載要送出某種貨物,現(xiàn)在這樣貨物不出庫了,那么該貨物對應的數(shù)據(jù)項需要刪除。而貨物編號是主屬性,刪除了貨物編號,整個元組就必須跟著刪除,使得出庫單上的其他信息也被刪除了,從而造成刪除異常,即不應刪除的信息也刪除了。3.修改復雜。如果某張出庫單里記錄需出庫k種貨物,那么出庫單本身的屬性操作人,出庫單號和業(yè)務人重復存儲了k次,不僅存儲冗余度大,而且必須無遺漏地修改k個元組中全部操作人,出庫單號和業(yè)務人信息,造成修改的復雜化。分析上面的例子,可以發(fā)現(xiàn)問題在于有兩種非主屬性。解決的方法是用投影分解把關系模式“貨物庫存-出庫-出庫單〞分解為三個關系模式:貨物庫存〔貨物編號,貨物名稱,貨物數(shù)量,備注)出庫單〔出庫單號,操作人,業(yè)務人)出庫〔貨物編號,出庫單號〕[例3]關系模式為采購訂單明細表〔采購訂單單號,商品編碼,單價,數(shù)量,備注,商品名稱,顏色,規(guī)格,…)。其中“采購訂單明細表〞的碼為〔采購訂單單號,商品編號〕。函數(shù)依賴例如如以下圖:商品名稱商品名稱顏色。。。商品編號采購訂單單號數(shù)量單價備注●圖2.23違反第二范式例中的函數(shù)依賴圖圖中用虛線表示局部函數(shù)依賴。一個關系函數(shù)R不屬性2NF,就會產(chǎn)生以下幾個問題:1.插入異常。假假設要插入一個訂單明細中的商品信息,但該貨物還沒有對應的訂單生成,即缺少采購訂單單號,這樣的元組就插不進“采購訂單明細表〞中。因為插入元組時必須給定碼,而這時碼值的一局部為空,因而訂單明細的固有信息無法插入。2.刪除異常。假假設訂單明細上記載著某種商品,現(xiàn)在這樣商品不需要了,那么該商品對應的數(shù)據(jù)項需要刪除。而商品編號是主屬性,刪除了商品編號,整個元組就必須跟著刪除,使得訂單明細單上的其他信息也被刪除了,從而造成刪除異常,即不應刪除的信息也刪除了。3.修改復雜。如果某張訂單明細里記錄要k種商品,那么訂單明細本身的屬性操作人,采購訂單單號重復存儲了k次,不僅存儲冗余度大,而且必須無遺漏地修改k個元組中全部采購訂單單號信息,造成修改的復雜化。分析上面的例子,可以發(fā)現(xiàn)問題在于有兩種非主屬性。解決的方法是用投影分解把關系模式“采購訂單明細表〞分解為2個關系模式:商品信息〔商品編號,商品名稱,顏色,規(guī)格,備注…);采購訂單明細表〔采購訂單單號,商品編號,單價,數(shù)量,備注);2.2.3不滿足第三范式舉例關系模式R<U,F(xiàn)>中假設不存在這樣的碼X,屬性組Y及非主屬性Z(Z¢Y)使得X→Y,Y→Z成立,Y推不出X,那么稱<U,F(xiàn)>∈3NF。即假設R∈3NF,那么每一個非主屬性既不局部依賴于碼也不傳遞依賴于碼。根據(jù)該定義,結(jié)合概念數(shù)據(jù)模型中設計的E-R圖,舉一個不是3NF的例子如下:[例1]在訂單明細表中,假設還存在一個屬性:商品總價,即關系模式訂單明細表〔商品編號,訂單單號,單價,數(shù)量,備注,商品總價),這時就存在傳遞依賴,因為商品總價=單價*數(shù)量,即貨物總價可由入庫單價和數(shù)量兩個屬性推出,而貨物總價又可由貨物編號得到,所以不滿足第三范式。函數(shù)依賴如以下圖:商品編號商品編號數(shù)量單價商品總價●圖2.24例1中的函數(shù)依賴圖一個關系模式R假設不是3NF,就會產(chǎn)生與不是2NF相類似的問題。解決的方法同樣是將“訂單細節(jié)表〞分解為:訂單明細表〔商品編號,訂單單號,數(shù)量,單價,備注〕;商品總價〔商品編號,訂單單號,商品總價〕。兩個關系模式的函數(shù)以來圖可以用以下圖表示:數(shù)量數(shù)量單價商品編號數(shù)量單價商品總價●圖2.25例1中的函數(shù)依賴圖[例2]在貨物信息表中,假設還存在兩個屬性:貨物單價、貨物總價,即關系模式貨物信息(貨物編號,貨物名稱,貨物數(shù)量,貨物單價,貨物總價,備注),這時就存在傳遞依賴,因為貨物總價=貨物單價*貨物數(shù)量,即貨物總價可由貨物單價和存量兩個屬性推出,而貨物總價又可由貨物編號得到,所以不滿足第三范式。函數(shù)依賴事例如以下圖:貨物編號貨物編號貨物數(shù)量貨物單價貨物總價●圖2.26例2中的函數(shù)依賴圖一個關系模式R假設不是3NF,就會產(chǎn)生與不是2NF相類似的問題。解決的方法同樣是將“貨物信息表〞分解為:貨物庫存〔貨物編號,貨物名稱,貨物數(shù)量,貨物單價,備述〕價格〔貨物數(shù)量,貨物單價,貨物總價〕兩個關系模式可以用以下圖表示:貨物數(shù)量貨物數(shù)量貨物單價貨物編號貨物數(shù)量貨物單價貨物總價●圖2.27例2中的關系模式[例3]在采購訂單中,假設還存在一個屬性:商品總價,即關系模式訂單明細表〔采購訂單明細號,商品編號,單價,采購訂單單號,數(shù)量,商品總價,備注),這時就存在傳遞依賴,因為商品總價=單價*數(shù)量,即商品總價可由單價和數(shù)量兩個屬性推出,而商品總價又可由商品編號得到,所以不滿足第三范式。函數(shù)依賴事例如以下圖:數(shù)量數(shù)量單價商品總價商品編號●圖2.28違反第三范式例中的函數(shù)依賴圖一個關系模式R假設不是3NF,就會產(chǎn)生與不是2NF相類似的問題。解決的方法同樣是將“訂單細節(jié)表〞分解為:訂單明細表〔訂單明細號,商品編號,單價,訂單單號,數(shù)量,備注〕;商品總價〔訂單明細號,商品總價〕。兩個關系模式可以用以下圖表示:數(shù)量數(shù)量單價商品總價商品編號數(shù)量單價●圖2.29例3中的關系模式2.3系統(tǒng)功能界面設計2.3.1系統(tǒng)功能圖進進銷存管理系統(tǒng)銷售管理倉庫管理采購管理倉庫報警其它入庫其它出庫倉庫調(diào)撥根本資料采購方案采購訂單采購入庫應付賬款采購付款采購退貨銷售報價銷售訂單銷售出庫應收賬款銷售收款銷售退貨●圖2.30系統(tǒng)功能圖銷售管理界面設計點擊銷售管理的“商品報價〞按鈕翻開商品報價窗口如以下圖所示。●圖2.31商品銷售窗口在窗口中填寫日期、客戶、報價人、貨幣、備注等信息,點擊“增加商品〞按鈕,翻開增加商品窗口,具體操作參見“采購訂單〞操作,增加商品完成后,點擊“保存訂單〞按鈕保存本次銷售。倉庫管理界面設計●圖2.32倉庫設置窗口在根本設置模塊中點擊“倉庫設置〞按鈕翻開倉庫詳細信息插卡窗口如上圖。在該窗口即可對倉庫信息進行查看。采購管理界面設計在進貨管理中點擊“采購進貨〞按鈕翻開進貨窗口如以下圖所示?!駡D2.33采購進貨窗口在窗口中選擇供貨商、采購員號、貨幣、交貨地點、備注等信息,點擊“增加商品〞按鈕,翻開增加商品窗口如下面的窗口所示,增加商品完成后,點擊“保存訂單〞按鈕保存本次銷售?!駡D2.34增加商品窗口在該窗口即可查看所有商品信息,在選項框內(nèi)對商品進行選擇,完成后點擊“確定〞按鈕,即可對商品進行添加。第3章基于J2EE+MySQL實現(xiàn)3.1J2EE實現(xiàn)代碼packagedb;//includerequiredclassesimportjava.sql.*;//==========================================//DefineClassDBConn//==========================================publicclassDBConn{ //mySQL數(shù)據(jù)庫連接 publicStringsql_driver="com.mysql.jdbc.Driver"; publicStringsql_url="jdbc:mysql://localhost:3306/jxc?useUnicode=true&characterEncoding=gbk"; publicStringsql_DBName="jxc"; publicStringuser="root"; publicStringpwd="root"; Connectionconn=null; Statementstmt=null; ResultSetrs=null; publicDBConn(){ try{ Class.forName(sql_driver); this.conn=DriverManager.getConnection(sql_url,user,pwd); }catch(SQLExceptione){ thrownewRuntimeException("連接數(shù)據(jù)庫失敗",e); }catch(ClassNotFoundExceptione){ thrownewRuntimeException("找不到驅(qū)動類",e); }catch(Exceptione){ e.printStackTrace(); } try{ this.stmt=this.conn.createStatement(); }catch(SQLExceptione){ thrownewRuntimeException("連接數(shù)據(jù)庫失敗",e); } } //執(zhí)行查詢操作 publicResultSetexecuteQuery(StringstrSql){ try{ this.conn=DriverManager.getConnection(sql_url,user,pwd); this.stmt=this.conn.createStatement(); this.rs=this.stmt.executeQuery(strSql); returnthis.rs; }catch(SQLExceptione){ thrownewRuntimeException("查詢操作出錯",e); } } //執(zhí)行數(shù)據(jù)的插入、刪除、修改操作 publicbooleanexecuteUpdate(StringstrSql){ try{ this.conn=DriverManager.getConnection(sql_url,user,pwd); this.stmt=this.conn.createStatement(); if(this.stmt.executeUpdate(strSql)==0) returnfalse; else returntrue; }catch(SQLExceptione){ thrownewRuntimeException("數(shù)據(jù)的插入、刪除、修改操作出錯",e); } } publicvoidclose(){ try{ this.stmt.close(); this.conn.close(); }catch(SQLExceptione){ thrownewRuntimeException("關閉數(shù)據(jù)庫出錯",e); } }}<%@pagelanguage="java"contentType="text/html;charset=gbk" pageEncoding="gbk"import="java.sql.*,db.DBConn"%><jsp:useBeanid="Conn"class="db.DBConn"scope="session"/><html><head><meta-equiv="Content-Type"content="text/html;charset=gb2312"/><title>增加商品列表</title><styletype="text/css">.BUTTON{ border-width:1px; border-color:#8BB9E3; border-style:solid; color:white; padding-top:3px; height:25px; filter:Alpha(Opacity=75); background-image:url("images/button_back.gif");}</style><script> functionshowselect(){ varthetable=dialogArguments.sptable; varj=0,i; varobjChk=document.getElementsByName("goodID"); if(objChk!=null){ if(objChk.length!=null){ for(i=0;i<objChk.length;){ vargoodID=objChk[i].value; i++; varnewrow=thetable.insertRow(); for(j=0;i<thetable.rows[0].cells.length;i++){ thecell=newrow.insertCell(j); thecell.innerText=addgood(goodID,j); } } } returntrue; } window.dialogArguments.window.location.reload();//刷新父窗口以顯示修改后的數(shù)據(jù) returntrue; }</script></head><%!publicStringaddline(Stringline){DBConn ResultSetrs=null; rs=Conn.executeQuery("select*fromgoodinfowheregoodId='"+line +"'"); Stringss=null; try{ if(rs.next()){ StringgoodID=line; ss="<tralign=center>"; ss+="<td><inputtype='checkbox'name='goodID'value='" +goodID+"'id=goodID/></td>"; ss+="<td>"+goodID+"</td>"; ss+="<td>"+rs.getString("goodname")+"</td>"; ss+="<td>"+rs.getString("kinds")+"</td>"; ss+="<td>"+rs.getString("model")+"</td>"; ss+="<td>"+rs.getString("ckname")+"</td>"; ss+="<td>"+rs.getString("inprice")+"</td>"; ss+="<td>"+rs.getString("outprice")+"</td>"; ss+="<td>"+rs.getString("stock")+"</td></tr>"; } }catch(Exceptione){ } returnss; } publicStringaddgood(Stringgood,inti){DBConn ResultSetrs=null; rs=Conn.executeQuery("select*fromgoodinfowheregoodId='"+good +"'"); Stringss=null; try{ if(rs.next()){ StringgoodID=good; switch(i){ case0:{ ss="<td><inputtype=checkboxname=goodid="+goodID +"/></td>"; } case1:{ ss="<td>"+i+1+"</td>"; } case2:{ ss="<td>"+rs.getString("goodId")+"</td>"; break; } case3:{ ss="<td>"+rs.getString("goodname")+"</td>"; break; } case4:{ ss="<td>"+rs.getString("unit")+"</td>"; break; } case5:{ ss="<td>"+rs.getString("kinds")+"</td>"; break; } case6:{ ss="<td>"+rs.getString("ckname")+"</td>"; break; } case7:{ ss="<td>"+rs.getString("stock")+"</td>"; break; } case8:{ ss="<td><inputtype=textname=numvalue=1/></td>"; break; } case9:{ ss="<td>"+rs.getString("outprice")+"</td>"; break; } case10:{ ss="<td>"+rs.getString("outprice")+"</td></tr>"; break; } default: break; } } }catch(Exceptione){ } returnss; }%><bodybgcolor="#8EC7FF"><center><tableborder="1"bordercolor="#000000"> <tr> <td> <divstyle="height:330px;width:590px;overflow:auto" align="center"> <tableid=table1style="border:1pxsolidblack" style="overflow:scroll"border="1"style="border-collapse:collapse;" width="100%"align="center"> <tr> <td></td> <td>編碼</td> <td>名稱</td> <td>類型</td> <td>單位</td> <td>倉庫</td> <td>入庫單價</td> <td>出庫單價</td> <td>庫存量</td> </tr> <% request.setCharacterEncoding("gbk"); ResultSetrs=null

溫馨提示

  • 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

提交評論