(完整版)销售管理系统的设计与实现_第1页
(完整版)销售管理系统的设计与实现_第2页
(完整版)销售管理系统的设计与实现_第3页
(完整版)销售管理系统的设计与实现_第4页
(完整版)销售管理系统的设计与实现_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

(完整版)销售管理系统的设计与实现(完整版)销售管理系统的设计与实现(完整版)销售管理系统的设计与实现目录TOC\o”1-3”\h\z\uHYPERLINK\l”_Toc393205700"1问题描述 1_Toc393205702"1。2问题理解和分析 1HYPERLINK\l”_Toc393205703”2需求分析 2HYPERLINK\l”_Toc393205704"2.1需求描述 2HYPERLINK\l”_Toc393205705”2。2系统运行环境 23总体设计 33。1功能模块图 3HYPERLINK\l”_Toc393205708"3。2结构设计 34 数据库设计 5HYPERLINK\l”_Toc393205710”4。1数据库概念结构设计 5HYPERLINK\l”_Toc393205711"4.2数据库逻辑结构设计 5HYPERLINK\l”_Toc393205712"5 系统的详细设计与实现 75。1用户登录模块设计 75.2销售系统主界面设计 8HYPERLINK\l”_Toc393205715"5。3商品销售录入模块设计 95。5库存管理模块设计 146测试 16_Toc393205720"6。2修改密码测试用例 16HYPERLINK\l”_Toc393205721”6。3添加商品信息测试用例 16HYPERLINK\l”_Toc393205722"6。4查询商品信息测试用例 17HYPERLINK\l”_Toc393205723"6。5修改商品信息测试用例 186.6删除商品信息测试用例 18_Toc393205726”8参考文献 20共20页第20页1问题描述1.1开发环境(1)运用已学过的知识进行应用系统的开发,掌握软件设计流程。(2)通过课程设计,使用SSH技术、Java高级语言、SQL语言等开发应系统,掌握基本的编程方法。(3)通过课程设计掌握数据库的连接方法,及对数据的查询、修改、插入、删除等操作。1。2问题理解和分析系统主要完成以下功能(1)向使用者提供商品基本的录入,删除,编辑等基本功能。(2)向使用者提供商品销售环节中的基本管理功能。(3)向使用者提供基本的查询功能。(4)提供打印功能.需求分析2。1需求描述由于销售管理系统是一个用来帮助使用者管理商品销售流程的软件。使用者通过对销售过程中所涉及到的商品,订单,销售商等资料的录入,便可以轻松实现商品销售流程的管理。所以,此系统必须向使用者提供一下一些具体功能:(1)软件必须向使用者提供商品基本的录入,删除,编辑等基本功能(2)鉴于商品的不同销售方式(分为订单销售和代理商销售两种形式),软件必须向使用者提供商品销售环节中的基本管理功能,因此必须有订单分销模块和代理商分销模块。(3)软件必须向使用者提供基本的查询功。(4)由于是销售管理软件,所以系统安全性必须是要考虑的问题。因此,必须实现以下两点:A:系统操作员机制。对系统的使用者,按等级开放管理权限,这样可以在一定程度上保证数据库系统的安全性,避免数据被泄漏,非法更改等。B:销售数据直接反映了一个销售单位的盈亏状况,鉴于销售数据的重要性,所以必须对这些数据加以保护,在系统崩溃时或者误操作等情况下,可以对数据进行恢复。这就需要系统提供备份功能。(5)对于销售数据不能只存储在计算机中,而是需要导出步骤,最后以印刷品的形式出现在使用者面前,该软件设计的最终目的才能得以具体的实现。所以,打印功能是必不可少的系统功能之一.2。2系统运行环境(1)硬件环境.本系统适用于那种Inter386以上计算机,内存容量为128M,应配备键盘、鼠标、显示器等外部设备。(2)软件环境。本系统的设计采用MyEclipse8。5编写.在Windows7环境下测试通过。总体设计3.1功能模块图功能模块图如图3-1所示.商品销售管理系统系统管理模块销售管理模块修改密码用户管理商品销售管理系统系统管理模块销售管理模块修改密码用户管理销售录入进货录入退货管理库存管理供应商管理销售查询数据库3.2结构设计系统总流程图如图3-2所示.登陆登陆判断是否合法系统信息查询信息修改增加修改删除更新错误提示信息更新到数据库查询条件错误提示信息从数据库读取数据图3—2系统流程图数据库设计4。1数据库概念结构设计E-R模型图如图4-1所示。用户用户代理商商品管理管理用户名进退代号单价数量名称性别密码权限代号名称地址联系人订单管理编号日期型号名称数量日期电话图4-1E—R模型图4。2数据库逻辑结构设计表名:liyi(用户表)如表4—1所示。表4—1用户表字段名数据类型长度是否允许空值约束usernameVarchar16NotnullPrimarykeyPasswordVarchar16NotnullSafetyChar8Notnull表名:Supplier(供应商表)如表4—2所示.表4—2供应商表字段名数据类型长度是否允许空值约束Sup_idChar5NotnullPrimarykeySup_nameVarchar16NotnullSup_contactvarChar16NotnullSup_phonevarChar15NotNullsup_addressVarchar40NotNull表名:Purchase(进货表)如表4-3所示。表4-3进货表字段名数据类型长度是否允许空值约束P_idChar5NotnullPrimarykeyP_nameVarchar20NotnullpriceFloatNotnullnumberintNotnullP_dateVarchar16NotnullPrimarykeysup_idChar5NotnullForeignerkey表名:sale(销售表)如表4—4所示。表4—4销售表字段名数据类型长度是否允许空值约束p_idChar5NotnullPrimarykeypricefloatNotnullnumberintNotnulltotalfloatNotnullS_dateVarchar16NotnullPrimarykey表名:Return(退货表)如表4—5所示。表4—5退货表字段名数据类型长度是否允许空值约束p_idChar5NotnullPrimarykeynumberintNotnullr_datevarchar16NotnullPrimarykeyreasonvarchar50yes系统的详细设计与实现5。1用户登录模块设计用户登录模块如图5—1所示.图5—1用户登录窗口效果图本窗体的任务是通过用户输入密码判断用户是否是合法的用户.它用于管理员按照用户名和密码进行登录。以免不相关得人进入系统进行不良的操作,而对系统进行破坏,导致整个系统进行瘫痪。主要代码: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销售系统主界面设计销售系统主界面如图5—2所示。图5—2销售系统主界面窗口效果图该窗体是本系统的统筹界面。它是系统的结构匡架,便于对整个系统的观摩、管理.主要使用Label和panl以及manu等控件实现的。Image控件使得界面得以美化.由于每次操作不一定会用到所有的数据库,所以没有必要在每次运行时生成所有的数据库别名。Session控件提供了动态生成数据库别名的方法,使通过操作选择窗体进行优选择的别名生成成为可能.主要代码: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("当前没有选定窗体”); } returnstateLabel; } publicMainFrame(){ super(); initialize(); }}//@jve:decl-index=0:visual—constraint="6,-5"5.3商品销售录入模块设计商品销售录入模块如图5—3所示。图5—3销售录入窗口效果图该窗体以图形化的界面,简单直观的向使用者提供商品销售的录入功能,使用者可以快速的将销售记录录入系统,并进行保存。主要代码: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,"填写验收结论”); 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商品进货录入模块设计商品进货录入模块如图5-4图5-4商品进货录入窗口效果图该窗体以图形化的界面,简单直观的向使用者提供商品的查询功能,使用者可以通过已知商品信息迅速查询到与此种商品相关的代理商信息,同时,也可用过代理商的信息反查处其代理的商品状况。主要代码: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库存管理模块设计库存管理模块如图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测试为了使开发出来的系统能够满足销售管理工作的需要,本人也对系统进行了测试,测试结果良好,该系统界面友好,数据的录入,删除,保存功能均可实现,并能够完成比较复杂的多条件查询、统计功能,是部分测试用例.6.1登录测试用例登录测试用例如表6-1所示。表6-1登录测试用例测试项输入输出结果账号密码登录root123登录成功ROOT123登陆成功root3435用户名或密码错误!rOot123登录成功空空请输入用户名!空123请输入用户名!6.2修改密码测试用例修改密码测试用例如表6-2所示。表6—2修改密码测试用例原密码新密码确认新密码结果结果分析123(不正确)原密码输入不正确合格12312341234原密码输入不正确合格12341234原密码输入不正确合格121新密码不能为空合格121123两次密码不一致合格1211231234两次密码不一致合格121125125修改成功合格125567567原密码输入不正确此处存在缺陷6.3添加商品信息测试用例添加商品信息测试用例如表6-3所示.表6—3添加商品信息测试用例测试用例商品名称编码入库数量商品单价商品成本商品利润入库日期供应商名联系方式备注预计输出实际输出用例1面包00110010552011/6/4北京4562342香成功成功用例2eq\o\ac(○,○)00110010552011/6/4北京4562342香失败失败用例3面包eq\o\ac(○,○)10010552011/6/4北京4562342香失败

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论