Java程序设计期末课程设计报告题目超市进销存管理系统班级:13级信息安全班学号:姓名:成绩:完成时间:2014年12月目录一、需求分析.............................错误!未定义书签。二、系统简介.............................错误!未定义书签。三.数据准备.............................错误!未定义书签。四、数据库结构...........................错误!未定义书签。五、系统实现与核心代码...................错误!未定义书签。六、系统的运行结果.......................错误!未定义书签。七、心得与体会...........................错误!未定义书签。八、参考书目.............................错误!未定义书签。一.需求分析企业进销存管理系统的主要工作,是对企业的进货、销售和库存以信息化的方式进行管理,最大限度的减少各个环境中可能出现的错误,有效减少盲目采购,降低采购成本、合理控制库存、减少资金占用并提高市场灵敏度,使企业能够合理安排进、销、存的每个关键步骤,替身企业市场竞争力。针对经营管理中存在的问题,兰州华联超市对产品的进销存合理化提出了更高的要求。通过实际调查,要求企业进销存管理系统具有以下功能。◆界面设计美观大方,方便、快捷、操作灵活。◆实现强大的进销存管理,包括基本信息、进货、销售和库存管理。◆能够在不同的操作系统下运行,不局限于特定的平台。◆提供数据库备份与恢复功能。◆提供库存盘点功能。◆提供技术支持的联系方式,可以使用邮件进行沟通,或者直接连接到技术网站。二.分析与设计:(1)功能模块划分:本进销存管理系统划分为六个模块,分别为系统登陆模块,系统主窗体设计模块,进货单模块,销售单模块,库存盘点模块和数据库备份与恢复模块,(2)数据库结构描述:企业进销存管理系统需要使用数据库存储和管理进销存过程中的所有信息,本企业进销存管理系统使用Access数据库系统作为后台数据库,数据库名称为db_database28。其中包含了14张数据表﹑两个视图。以下是系统主要涉及的六个数据库表:1.供应商信息表:主要用于存储供应商详细信息,其结构如下表所示:User表:Handle表:Product表:Stuff表:Yield表:空表等待插入数据。三.系统详细设计文档:1.系统流程图:(1)系统功能结构图:(2)系统业务流程图:(3)系统中的主要类及功能:1.Item公共类:Item公共类是对数据表最常用的ID和name属性的封装,属于swing列表,表格,下拉列表框等组件的赋值。该类重写了toString()方法,在该方法中只输出name属性。但是在获取组件的内容时,获取的是Item类的对象,从该对象中可以获取ID的属性,然后通过该属性到数据库中获取唯一的数据。2.数据模型公共类:数据模型公共类对应着数据库中不同的数据表,这些模型将被访问数据库的Dao类和程序中各个模块甚至各个组件使用,数据模型是对数据表所有字段的封装,它是纯粹的模型类,他也要重写toString()方法,另外还要重写hashCode()方法和equal()方法。它主要用于存贮数据,并通过相应的getXXX()方法和setXXX()实现不同属性的访问原则。3.Dao公共类:Dao类实现了数据库的驱动,连接,关闭和多个操作数据库的方法,Dao类不需要创建对象,可以直接调用类中的所有数据库操作方法。Dao类自定义的主要方法有getKhlnfo(Itemitem)方法,主要是获取客户信息,方法的返回值是tKhlnfo的对象,及客户信息的数据模型。getGyslnfo(Itemitem)方法,主要是获取供应商信息,返回值是Gyslnfo类的对象,及供应商数据表的模型对象。getSplnfo(Itemitem)方法,主要用于获取商品信息,返回值是Splnfo类的对象,及商品数据表的数据模型。getLogin(Stringname,Stringpassword)方法《主要适用于判断登录用户的用户名与密码是否正确,返回值是boolean类型。insertSelllnfo(TbSellMainsellMain)方法,主要是添加销售信息到数据库中。restoreOrBackup(Stringsql)方法,此方法是设置数据库的模式为单用户连接模式,这样可以避免数据库恢复或备份时失败。checkLogin(StringuserStr,StringpassStr)方法,用于判断登录用户与密码是否正确。(2)各个模块实现方法描述:1.系统登录模块实现该模块的主要代码如下packagesrc;importjava.awt.AlphaComposite;importjava.awt.GradientPaint;importjava.awt.Graphics;importjava.awt.Graphics2D;importjava.awt.GridBagConstraints;importjava.awt.GridBagLayout;importjava.awt.Image;importjava.awt.RenderingHints;importjava.awt.Toolkit;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.event.KeyEvent;importjava.awt.event.KeyListener;importjavax.swing.JComponent;importjavax.swing.JFrame;importjavax.swing.JOptionPane;importjavax.swing.UIManager;publicclassAddUser{privatestaticfinalStringlogoon=添加用户;privatestaticfinalStringhelpt=添加;privatestaticfinalStringlogooff=退出;privatestaticfinalStringuser=用户:;privatestaticfinalStringpassword=密码:;privatestaticfinalStringenterpwd=再次输入密码:;privatejavax.swing.JTextFielduserText=null;privatejavax.swing.JPasswordFielduserpwd=null;privatejavax.swing.JPasswordFieldenterpassword=null;privatejavax.swing.JPaneljp=newjavax.swing.JPanel(){finalstaticlongserialVersionUID=2309585L;publicvoidpaintComponent(Graphicsg){super.paintComponent(g);if(!isOpaque()){return;}Graphics2Dg2d=(Graphics2D)g;//intrule=AlphaComposite.SRC_OVER;AlphaCompositeopaque=AlphaComposite.SrcOver;//AlphaCompositeblend=AlphaComposite.getInstance(rule,0.6f);//AlphaCompositeset=AlphaComposite.Src;intwidth=getWidth();intheight=getHeight();GradientPaintgradientPaint=newGradientPaint(0,0,java.awt.Color.green,width/2,height/2,java.awt.Color.yellow,false);g2d.setComposite(opaque);g2d.setPaint(gradientPaint);g2d.fillRect(0,0,width,height);g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_OFF);}};privatejavax.swing.JButtonadd=newjavax.swing.JButton(helpt);privatejavax.swing.JButtoncancle=newjavax.swing.JButton(logooff);privateJFramelogo_Frame=newJFrame(logoon);publicAddUser(){//TODO自动生成构造函数存根try{UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());}catch(Exceptionexe){System.err.print(exe.getMessage());}JFrame.setDefaultLookAndFeelDecorated(true);Toolkittools=logo_Frame.getToolkit();Imagelogo=tools.getImage(res/logo.jpg);logo_Frame=newJFrame(logoon);logo_Frame.setIconImage(logo);jp.setLayout(newGridBagLayout());javax.swing.ImageIconpic=newjavax.swing.ImageIcon(res/logo1.jpg);javax.swing.JLabelpicture=newjavax.swing.JLabel(pic);setupComponent(picture,0,0,GridBagConstraints.ABOVE_BASELINE_LEADING,1,true);javax.swing.JLabelusers=newjavax.swing.JLabel(user);setupComponent(users,0,1,1,1,false);javax.swing.JLabelpas=newjavax.swing.JLabel(password);setupComponent(pas,0,2,1,1,false);javax.swing.JLabelenpas=newjavax.swing.JLabel(enterpwd);setupComponent(enpas,0,3,1,1,false);userText=newjavax.swing.JTextField(12);userText.requestFocus();userText.addKeyListener(newKeyListener(){publicvoidkeyTyped(KeyEvente){}publicvoidkeyReleased(KeyEvente){}publicvoidkeyPressed(KeyEvente){if((e.getKeyChar()==KeyEvent.VK_ENTER)&&(userText.getText().trim()!=)){userpwd.requestFocus();}}});setupComponent(userText,1,1,1,1,false);userpwd=newjavax.swing.JPasswordField(12);userpwd.addKeyListener(newKeyListener