版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
/書目1問題描述 11.1開發(fā)環(huán)境 11.2問題理解和分析 12需求分析 22.1需求描述 22.2系統(tǒng)運行環(huán)境 23總體設(shè)計 33.1功能模塊圖 33.2結(jié)構(gòu)設(shè)計 34 數(shù)據(jù)庫設(shè)計 54.1數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計 54.2數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計 55 系統(tǒng)的詳細(xì)設(shè)計和實現(xiàn) 75.1用戶登錄模塊設(shè)計 75.2銷售系統(tǒng)主界面設(shè)計 85.3商品銷售錄入模塊設(shè)計 95.4商品進貨錄入模塊設(shè)計 125.5庫存管理模塊設(shè)計 146測試 166.1登錄測試用例 166.2修改密碼測試用例 166.3添加商品信息測試用例 166.4查詢商品信息測試用例 176.5修改商品信息測試用例 186.6刪除商品信息測試用例 187結(jié)論 198參考文獻 201問題描述1.1開發(fā)環(huán)境(1)運用已學(xué)過的學(xué)問進行應(yīng)用系統(tǒng)的開發(fā),駕馭軟件設(shè)計流程。(2)通過課程設(shè)計,運用SSH技術(shù)、Java高級語言、SQL語言等開發(fā)應(yīng)系統(tǒng),駕馭基本的編程方法。(3)通過課程設(shè)計駕馭數(shù)據(jù)庫的連接方法,及對數(shù)據(jù)的查詢、修改、插入、刪除等操作。1.2問題理解和分析系統(tǒng)主要完成以下功能(1)向運用者供應(yīng)商品基本的錄入,刪除,編輯等基本功能。(2)向運用者供應(yīng)商品銷售環(huán)節(jié)中的基本管理功能。(3)向運用者供應(yīng)基本的查詢功能。(4)供應(yīng)打印功能。需求分析2.1需求描述由于銷售管理系統(tǒng)是一個用來幫助運用者管理商品銷售流程的軟件。運用者通過對銷售過程中所涉及到的商品,訂單,銷售商等資料的錄入,便可以輕松實現(xiàn)商品銷售流程的管理。所以,此系統(tǒng)必需向運用者供應(yīng)一下一些詳細(xì)功能:(1)軟件必需向運用者供應(yīng)商品基本的錄入,刪除,編輯等基本功能(2)鑒于商品的不同銷售方式(分為訂單銷售和代理商銷售兩種形式),軟件必需向運用者供應(yīng)商品銷售環(huán)節(jié)中的基本管理功能,因此必需有訂單分銷模塊和代理商分銷模塊。(3)軟件必需向運用者供應(yīng)基本的查詢功。(4)由于是銷售管理軟件,所以系統(tǒng)平安性必需是要考慮的問題。因此,必需實現(xiàn)以下兩點:A:系統(tǒng)操作員機制。對系統(tǒng)的運用者,按等級開放管理權(quán)限,這樣可以在確定程度上保證數(shù)據(jù)庫系統(tǒng)的平安性,避開數(shù)據(jù)被泄漏,非法更改等。B:銷售數(shù)據(jù)干脆反映了一個銷售單位的盈虧狀況,鑒于銷售數(shù)據(jù)的重要性,所以必需對這些數(shù)據(jù)加以愛惜,在系統(tǒng)崩潰時或者誤操作等狀況下,可以對數(shù)據(jù)進行復(fù)原。這就須要系統(tǒng)供應(yīng)備份功能。(5)對于銷售數(shù)據(jù)不能只存儲在計算機中,而是須要導(dǎo)出步驟,最終以印刷品的形式出現(xiàn)在運用者面前,該軟件設(shè)計的最終目的才能得以詳細(xì)的實現(xiàn)。所以,打印功能是必不行少的系統(tǒng)功能之一。2.2系統(tǒng)運行環(huán)境(1)硬件環(huán)境。本系統(tǒng)適用于那種Inter386以上計算機,內(nèi)存容量為128M,應(yīng)配備鍵盤、鼠標(biāo)、顯示器等外部設(shè)備。(2)軟件環(huán)境。本系統(tǒng)的設(shè)計接受MyEclipse8.5編寫。在Windows7環(huán)境下測試通過??傮w設(shè)計3.1功能模塊圖功能模塊圖如圖3-1所示。商品銷售管理系統(tǒng)系統(tǒng)管理模塊銷售管理模塊商品銷售管理系統(tǒng)系統(tǒng)管理模塊銷售管理模塊修改密碼用戶管理銷售錄入進貨錄入退貨管理庫存管理供應(yīng)商管理銷售查詢數(shù)據(jù)庫3.2結(jié)構(gòu)設(shè)計系統(tǒng)總流程圖如圖3-2所示。登陸登陸推斷是否合法系統(tǒng)信息查詢信息修改增加修改刪除更新錯誤提示信息更新到數(shù)據(jù)庫查詢條件錯誤提示信息從數(shù)據(jù)庫讀取數(shù)據(jù)圖3-2系統(tǒng)流程圖數(shù)據(jù)庫設(shè)計4.1數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計E-R模型圖如圖4-1所示。用戶用戶代理商商品管理管理用戶名進退代號單價數(shù)量名稱性別密碼權(quán)限代號名稱地址聯(lián)系人訂單管理編號日期型號名稱數(shù)量日期電話圖4-1E-R模型圖4.2數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計表名:liyi(用戶表)如表4-1所示。表4-1用戶表字段名數(shù)據(jù)類型長度是否允許空值約束usernameVarchar16NotnullPrimarykeyPasswordVarchar16NotnullSafetyChar8Notnull表名:Supplier(供應(yīng)商表)如表4-2所示。表4-2供應(yīng)商表字段名數(shù)據(jù)類型長度是否允許空值約束Sup_idChar5NotnullPrimarykeySup_nameVarchar16NotnullSup_contactvarChar16NotnullSup_phonevarChar15NotNullsup_addressVarchar40NotNull表名:Purchase(進貨表)如表4-3所示。表4-3進貨表字段名數(shù)據(jù)類型長度是否允許空值約束P_idChar5NotnullPrimarykeyP_nameVarchar20NotnullpriceFloatNotnullnumberintNotnullP_dateVarchar16NotnullPrimarykeysup_idChar5NotnullForeignerkey表名:sale(銷售表)如表4-4所示。表4-4銷售表字段名數(shù)據(jù)類型長度是否允許空值約束p_idChar5NotnullPrimarykeypricefloatNotnullnumberintNotnulltotalfloatNotnullS_dateVarchar16NotnullPrimarykey表名:Return(退貨表)如表4-5所示。表4-5退貨表字段名數(shù)據(jù)類型長度是否允許空值約束p_idChar5NotnullPrimarykeynumberintNotnullr_datevarchar16NotnullPrimarykeyreasonvarchar50yes系統(tǒng)的詳細(xì)設(shè)計和實現(xiàn)5.1用戶登錄模塊設(shè)計用戶登錄模塊如圖5-1所示。圖5-1用戶登錄窗口效果圖本窗體的任務(wù)是通過用戶輸入密碼推斷用戶是否是合法的用戶.它用于管理員依據(jù)用戶名和密碼進行登錄。以免不相關(guān)得人進入系統(tǒng)進行不良的操作,而對系統(tǒng)進行破壞,導(dǎo)致整個系統(tǒng)進行癱瘓。主要代碼:publicclassLoginDialogextendsJFrame{privatestaticfinallongserialVersionUID=1L;privateLoginPanelloginPanel=null;privateJButtonexitButton=null;privatestaticStringuserStr;privateMainFramemainFrame;publicLoginDialog(){ try{ UIManager.setLookAndFeel(UIManager .getSystemLookAndFeelClassName()); mainFrame=newMainFrame(); initialize(); }catch(Exceptione){e.printStackTrace(); } }privateJButtongetLoginButton(){ if(loginButton==null){ loginButton=newJButton(); loginButton.setBounds(newRectangle(109,114,48,20)); loginButton.setIcon(newImageIcon(getClass().getResource( "/res/loginButton.jpg"))); loginButton.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){ try{ userStr=userField.getText(); String passStr = newString(passwordField.getPassword()); if(!Dao.checkLogin(userStr,passStr)){ JOptionPane.showMessageDialog(LoginDialog.this, "用戶名和密碼無法登錄","登錄失敗", JOptionPane.ERROR_MESSAGE); return; } }catch(Exceptione1){ e1.printStackTrace(); } MainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); mainFrame.setVisible(true); mainFrame.getCzyStateLabel().setText(userStr); setVisible(false); } }); } returnloginButton; }5.2銷售系統(tǒng)主界面設(shè)計銷售系統(tǒng)主界面如圖5-2所示。圖5-2銷售系統(tǒng)主界面窗口效果圖該窗體是本系統(tǒng)的統(tǒng)籌界面。它是系統(tǒng)的結(jié)構(gòu)匡架,便于對整個系統(tǒng)的觀摩、管理.主要運用Label和panl以及manu等控件實現(xiàn)的。Image控件使得界面得以美化。由于每次操作不愿定會用到全部的數(shù)據(jù)庫,所以沒有必要在每次運行時生成全部的數(shù)據(jù)庫別名。Session控件供應(yīng)了動態(tài)生成數(shù)據(jù)庫別名的方法,使通過操作選擇窗體進行優(yōu)選擇的別名生成成為可能。主要代碼:packagecom.lzw;importjava.awt.*;importjavax.swing.border.BevelBorder;importcom.lzw.login.LoginDialog;publicclassMainFrameextendsJFrame{privatestaticfinallongserialVersionUID=1L;privateJPanelframeContentPane=null; privateToolBargetJJToolBarBar(){ if(toolBar==null){ toolBar=newToolBar(getFrameMenuBar()); toolBar.setCursor(newCursor(Cursor.HAND_CURSOR)); } returntoolBar; } protectedMenuBargetFrameMenuBar(){ if(frameMenuBar==null){ frameMenuBar=newMenuBar(getDesktopPane(),getStateLabel()); } returnframeMenuBar; } privateDesktopPanelgetDesktopPane(){ if(desktopPane==null){ desktopPane=newDesktopPanel(); } returndesktopPane; }publicJLabelgetStateLabel(){ if(stateLabel==null){ stateLabel=newJLabel(); stateLabel.setText("當(dāng)前沒有選定窗體"); } returnstateLabel; } publicMainFrame(){ super(); initialize(); }}//@jve:decl-index=0:visual-constraint="6,-5"5.3商品銷售錄入模塊設(shè)計商品銷售錄入模塊如圖5-3所示。圖5-3銷售錄入窗口效果圖該窗體以圖形化的界面,簡潔直觀的向運用者供應(yīng)商品銷售的錄入功能,運用者可以快速的將銷售記錄錄入系統(tǒng),并進行保存。主要代碼:packagecom.lzw.iframe;importjava.awt.*;importjava.awt.event.*;importcom.lzw.*;publicclassXiaoShouDanextendsJInternalFrame{privatefinalJTabletable;publicXiaoShouDan(){ super(); setMaximizable(true); setIconifiable(true); setClosable(true); getContentPane().setLayout(newGridBagLayout()); piaoHao.setFocusable(false); setupComponet(piaoHao,1,0,1,140,true); setupComponet(newJLabel("客戶:"),2,0,1,0,false); kehu.setPreferredSize(newDimension(160,21)); kehu.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){ doKhSelectAction(); } }); setupComponet(kehu,3,0,1,1,true); sp=newJComboBox(); sp.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){ TbSpinfoinfo=(TbSpinfo)sp.getSelectedItem();if(info!=null&&info.getId()!=null){ updateTable(); } } }); table=newJTable(); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); initTable(); tjButton.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){ initPiaoHao(); stopTableCellEditing(); for(inti=0;i<table.getRowCount();i++){ TbSpinfoinfo=(TbSpinfo)table.getValueAt(i,0); if(table.getValueAt(i,0)==null) return; } DefaultTableModelmodel=(DefaultTableModel)table.getModel(); model.addRow(newVector()); } }); setupComponet(tjButton,4,4,1,1,false); JButtonsellButton=newJButton("銷售"); sellButton.addActionListener(newActionListener(){ if(ysjlStr==null||ysjlStr.isEmpty()){JOptionPane.showMessageDialog(XiaoShouDan.this,"填寫驗收結(jié)論"); return; } if(table.getRowCount()<=0){ JOptionPane.showMessageDialog(XiaoShouDan.this,"填加銷售商品"); return; } TbSellMainsellMain=newTbSellMain(id,pzsStr,jeStr, ysjlStr,kehuName,rkDate,czyStr,jsrStr,jsfsStr); Set<TbSellDetail>set=sellMain.getTbSellDetails(); introws=table.getRowCount(); for(inti=0;i<rows;i++){ TbSpinfospinfo=(TbSpinfo)table.getValueAt(i,0); StringdjStr=(String)table.getValueAt(i,6); StringslStr=(String)table.getValueAt(i,7); Doubledj=Double.valueOf(djStr); Integersl=Integer.valueOf(slStr); TbSellDetaildetail=newTbSellDetail(); detail.setSpid(spinfo.getId()); detail.setTbSellMain(sellMain.getSellId()); set.add(detail); } booleanrs=Dao.insertSellInfo(sellMain); if(rs){ JOptionPane.showMessageDialog(XiaoShouDan.this,"銷售完成"); DefaultTableModeldftm=newDefaultTableModel(); table.setModel(dftm); initTable(); pzs.setText("0"); hpzs.setText("0"); hjje.setText("0"); } } }); setupComponet(sellButton,5,4,1,1,false); addInternalFrameListener(newinitTasks()); } privatevoidstopTableCellEditing(){ TableCellEditorcellEditor=table.getCellEditor(); if(cellEditor!=null) cellEditor.stopCellEditing(); }}5.4商品進貨錄入模塊設(shè)計商品進貨錄入模塊如圖5-4圖5-4商品進貨錄入窗口效果圖該窗體以圖形化的界面,簡潔直觀的向運用者供應(yīng)商品的查詢功能,運用者可以通過已知商品信息快速查詢到和此種商品相關(guān)的代理商信息,同時,也可用過代理商的信息反查處其代理的商品狀況。主要代碼:packagecom.lzw.iframe;importjava.awt.*;importjava.awt.event.*;importjava.beans.PropertyChangeListener;importjava.sql.*;importjava.util.*; privateJComboBoxgysComboBox=null; privateJComboBoxjsrComboBox=null; privateDatejhsjDate=newDate(); privateJTextFieldgetCzyField(){ if(czyField==null){ czyField=newJTextField(); czyField.setEditable(false); czyField.setText(MainFrame.getCzyStateLabel().getText()); } returnczyField; } privateJButtongetRukuButton(){ if(rukuButton==null){ rukuButton=newJButton(); rukuButton.setText("入庫"); rukuButton.addActionListener(newjava.awt.event.ActionListener(){ publicvoidactionPerformed(java.awt.event.ActionEvente){ } TbRukuMainruMain=newTbRukuMain(id,pzsStr,jeStr, ysjlStr,gysName,rkDate,czyStr,jsrStr,jsfsStr); Set<TbRukuDetail>set=ruMain.getTabRukuDetails(); introws=table.getRowCount(); for(inti=0;i<rows;i++){ TbSpinfospinfo=(TbSpinfo)table.getValueAt(i,0); if(spinfo==null||spinfo.getId()==null ||spinfo.getId().isEmpty())continue; StringdjStr=(String)table.getValueAt(i,6); StringslStr=(String)table.getValueAt(i,7); Doubledj=Double.valueOf(djStr); Integersl=Integer.valueOf(slStr); TbRukuDetaildetail=newTbRukuDetail(); detail.setTabSpinfo(spinfo.getId()); detail.setTabRukuMain(ruMain.getRkId()); detail.setDj(dj); detail.setSl(sl); set.add(detail); } booleanrs=Dao.insertRukuInfo(ruMain); if(rs){ JOptionPane.showMessageDialog(JinHuoDan_IFrame.this, "入庫完成"); DefaultTableModeldftm=newDefaultTableModel(); table.setModel(dftm); pzslField.setText("0"); hpzsField.setText("0"); hjjeField.setText("0"); } } }); } returnrukuButton; } privateJScrollPanegetTablePane(){ if(tablePane==null){ tablePane.setViewportView(getTable()); } returntablePane; } privatesynchronizedvoidupdateTable(){ TbSpinfospinfo=(TbSpinfo)spComboBox.getSelectedItem(); introw=table.getSelectedRow(); if(row>=0&&spinfo!=null){ table.setValueAt(spinfo.getId(),row,1); table.setValueAt(spinfo.getPzwh(),row,9); table.editCellAt(row,6); } }5.5庫存管理模塊設(shè)計庫存管理模塊如圖5-5所示。圖5-5庫存管理窗口效果圖通過該窗口,可以干脆明白地查看全部商品的庫存狀況,防止商品庫存不足。主要代碼:packagecom.lzw.iframe;importjava.awt.*;importcom.lzw.dao.Dao;importcom.lzw.dao.model.TbSpinfo;publicclassKuCunPanDianextendsJInternalFrame{privatefinalJTabletable;privateDatepdDate=newDate(); privatevoidinitTable(){ DefaultCellEditorreadOnlyEditor=newDefaultCellEditor(readOnlyField); for(inti=0;i<columnNames.length;i++){ TableColumncolumn=table.getColumnModel().getColumn(i); column.setCellEditor(readOnlyEditor); } TableColumnpdColumn=table.getColumnModel().getColumn(9); TableColumnsyColumn=table.getColumnModel().getColumn(10); pdColumn.setCellEditor(pdEditor); syColumn.setCellEditor(readOnlyEditor); ListkcInfos=Dao.getKucunInfos(); for(inti=0;i<kcInfos.size();i++){ item.setId((String)info.get(0)); item.setName((String)info.get(1)); TbSpinfospinfo=Dao.getSpInfo(item); Object[]row=newObject[columnNames.length]; if(spinfo.getId()!=null&&!spinfo.getId().isEmpty()){ row[0]=spinfo.getSpname(); row[1]=spinfo.getId(); row[9]=0; row[10]=0; tableModel.addRow(row); StringpzsStr=pzs.getText(); intpzsInt=Integer.parseInt(pzsStr); pzsInt++; pzs.setText(pzsInt+""); } } } privateclassPanDianKeyAdapterextendsKeyAdapter{ privatefinalJTextFieldfield; privatePanDianKeyAdapter(JTextFieldfield){ this.field=field; } publicvoidkeyTyped(KeyEvente){if(("0123456789"+(char)8).indexOf(e.getKeyChar()+"")<0){ e.consume(); } field.setEditable(true); }6測試為了使開發(fā)出來的系統(tǒng)能夠滿足銷售管理工作的須要,本人也對系統(tǒng)進行了測試,測試結(jié)果良好,該系統(tǒng)界面友好,數(shù)據(jù)的錄入,刪除,保存功能均可實現(xiàn),并能夠完成比較困難的多條件查詢、統(tǒng)計功能,是部分測試用例。6.1登錄測試用例登錄測試用例如表6-1所示。表6-1登錄測試用例測試項輸入輸出結(jié)果賬號密碼登錄root123登錄成功ROOT123登陸成功root3435用戶名或密碼錯誤!rOot123登錄成功空空請輸入用戶名!空123請輸入用戶名!6.2修改密碼測試用例修改密碼測試用例如表6-2所示。表6-2修改密碼測試用例原密碼新密碼確認(rèn)新密碼結(jié)果結(jié)果分析123(不正確)原密碼輸入不正確合格12312341234原密碼輸入不正確合格12341234原密碼輸入不正確合格121新密碼不能為空合格121123兩次密碼不一樣合格1211231234兩次密碼不一樣合格121125125修改成功合格125567567原密碼輸入不正確此處存在缺陷6.3添加商品信息測試用例添加商品信息測試用例如表6-3所示。表6-3添加商品信息測試用例測試用例商品名稱編碼入庫數(shù)量商品單價商品成本商品利潤入庫日期供應(yīng)商名聯(lián)系方式備注預(yù)料輸出實際輸出用例1面包00110010552011/6/4北京4562
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二四年度圓管涵涵道材料購銷與施工監(jiān)理服務(wù)合同3篇
- 2025年綠色環(huán)保型棉花采摘機銷售與保養(yǎng)合同3篇
- 二零二五年度智能充電樁安裝服務(wù)合同樣本4篇
- 2025年度汽車銷售代理合同證明書1(汽車版)4篇
- 二零二五年度洗浴場所節(jié)能減排承包管理合同4篇
- 銀行貸款借款合同書
- 工程材料采購合同范文
- 小規(guī)模私人醫(yī)院用工合同書
- 2025版天然氣供應(yīng)合同價格調(diào)整范本模板3篇
- 二零二五年度化妝品直銷合同三方協(xié)議書規(guī)范文本4篇
- 高考語文復(fù)習(xí)【知識精研】《千里江山圖》高考真題說題課件
- 河北省承德市2023-2024學(xué)年高一上學(xué)期期末物理試卷(含答案)
- 高中物理斜面模型大全(80個)
- 012主要研究者(PI)職責(zé)藥物臨床試驗機構(gòu)GCP SOP
- 農(nóng)耕研學(xué)活動方案種小麥
- 2024年佛山市勞動合同條例
- 污水管網(wǎng)規(guī)劃建設(shè)方案
- 城鎮(zhèn)智慧排水系統(tǒng)技術(shù)標(biāo)準(zhǔn)
- 采購管理制度及流程采購管理制度及流程
- 五年級美術(shù)下冊第9課《寫意蔬果》-優(yōu)秀課件4人教版
- 節(jié)能降耗課件
評論
0/150
提交評論