华联超市进销存管理系统_Java期末课程设计(80页).doc

上传人:1595****071 文档编号:36829571 上传时间:2022-08-29 格式:DOC 页数:80 大小:400KB
返回 下载 相关 举报
华联超市进销存管理系统_Java期末课程设计(80页).doc_第1页
第1页 / 共80页
华联超市进销存管理系统_Java期末课程设计(80页).doc_第2页
第2页 / 共80页
点击查看更多>>
资源描述

《华联超市进销存管理系统_Java期末课程设计(80页).doc》由会员分享,可在线阅读,更多相关《华联超市进销存管理系统_Java期末课程设计(80页).doc(80页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、-华联超市进销存管理系统_Java期末课程设计-第 80 页甘肃政法学院Java课程设计报告题 目 兰州华联超市进销管理系统一.需求分析企业进销存管理系统的主要工作,是对企业的进货、销售和库存以信息化的方式进行管理,最大限度的减少各个环境中可能出现的错误,有效减少盲目采购,降低采购成本、合理控制库存、减少资金占用并提高市场灵敏度,使企业能够合理安排进、销、存的每个关键步骤,替身企业市场竞争力。针对经营管理中存在的问题,兰州华联超市对产品的进销存合理化提出了更高的要求。 通过实际调查,要求企业进销存管理系统具有以下功能。 界面设计美观大方,方便、快捷、操作灵活。实现强大的进销存管理,包括基本信息

2、、进货、销售和库存管理。能够在不同的操作系统下运行,不局限于特定的平台。提供数据库备份与恢复功能。提供库存盘点功能。提供技术支持的联系方式,可以使用邮件进行沟通,或者直接连接到技术网站。二.分析与设计:(1)功能模块划分:本进销存管理系统划分为六个模块,分别为系统登陆模块,系统主窗体设计模块,进货单模块,销售单模块,库存盘点模块和数据库备份与恢复模块,(2)数据库结构描述:企业进销存管理系统需要使用数据库存储和管理进销存过程中的所有信息,本企业进销存管理系统使用SQL Server 2000数据库系统作为后台数据库,数据库名称为db_database28。其中包含了14张数据表两个视图。以下是

3、系统主要涉及的六个数据库表:1供应商信息表:主要用于存储供应商详细信息,其结构如下表所示:tb_gysinfo供应商信息表字段名称数据类型字段大小是否主键说明idvarchar32主键供应商编号namevarchar50供应商名称jcvarchar20供应商简称addressvarchar100供应商地址bianmavarchar10邮政编码telvarchar15电 话faxvarchar15传 真lianvarchar8联 系 人ltelvarchar15联系电话yhvarchar50开户银行mailvarchar50电子信箱2.商品信息表:主要用于存储商品详细信息,其结构如下表所示;tb

4、_spinfo商品信息表字段名称数据类型字段大小是否主键说明idvarchar32主键商品编号spnamevarchar50商品名称jcvarchar30商品简称cdvarchar50产 地dwvarchar10计量单位ggvarchar10商品规格bzvarchar20包 装phvarchar32批 号pzwhvarchar50批准文号memovarchar100备 注gysnamevarchar50供应商名称3.入库主表:主要用于存出入库单据信息,其结构如下表所示: Tb_ru_ku_main入库主表字段名称数据类型字段大小是否主键说明rkIDvachar32主键入库编号pzsfloat8

5、品种数量jemoney8总计金额ysjlvachar50验收结论gysnamevachar100供应商名称rkatedatetime8入库时间czyvachar30操 作 员jsrvachar30经 手 人jsfsvachar10结算方式4.入库明细:主要用于存出入库详细信息,其结构如下表所示: tb_ruku_detail入库明细表字段名称数据类型字段大小是否主键说明idvachar50主键流 水 号rkIDvachar30入库编号spidvachar50商品编号djmoney8单 价slfloat8数 量5.销售主表:主要用于存储销售单据信息,其结构如下表所示: tb_sell_main销

6、售主表字段名称数据类型字段大小是否主键说明sellIDvachar30主键销售编号pzsfloat8销售品种数jemoney8总计金额ysjlvachar50验收结论khnamevachar100客户名称xsdatedatetime8销售日期czyvachar30操作员jsrvachar30经手人jsfsvachar10结算方式6.销售明细表:主要用于存储销售详细信息,其结构如下表所示: tb_sell_detail销售明细表字段名称数据类型字段大小是否主键说明idvachar50主键流水号sellIDvachar50销售编号spidvachar50商品编号djMoney8销售单价slfloa

7、t8销售数量三.系统详细设计文档:1.系统流程图: (1)系统功能结构图: (2)系统业务流程图:(3)系统中的主要类及功能: 1.Item公共类:Item公共类是对数据表最常用的ID和name属性的封装,属于swing列表,表格,下拉列表框等组件的赋值。该类重写了toString()方法,在该方法中只输出name属性。但是在获取组件的内容时,获取的是Item类的对象,从该对象中可以获取ID的属性,然后通过该属性到数据库中获取唯一的数据。 2.数据模型公共类: 数据模型公共类对应着数据库中不同的数据表,这些模型将被访问数据库的Dao类和程序中各个模块甚至各个组件使用,数据模型是对数据表所有字段

8、的封装,它是纯粹的模型类,他也要重写toString()方法,另外还要重写hashCode()方法和equal()方法。它主要用于存贮数据,并通过相应的getXXX()方法和setXXX()实现不同属性的访问原则。 3.Dao公共类: Dao类实现了数据库的驱动,连接,关闭和多个操作数据库的方法,Dao类不需要创建对象,可以直接调用类中的所有数据库操作方法。Dao类自定义的主要方法有getKhlnfo(Item item)方法,主要是获取客户信息,方法的返回值是tKhlnfo的对象,及客户信息的数据模型。getGyslnfo(Item item)方法,主要是获取供应商信息,返回值是Gyslnf

9、o类的对象,及供应商数据表的模型对象。getSplnfo(Item item)方法,主要用于获取商品信息,返回值是Splnfo类的对象,及商品数据表的数据模型。getLogin(String name,String password)方法主要适用于判断登录用户的用户名与密码是否正确,返回值是boolean类型。insertSelllnfo(TbSellMain sellMain)方法,主要是添加销售信息到数据库中。restoreOrBackup(String sql)方法,此方法是设置数据库的模式为单用户连接模式,这样可以避免数据库恢复或备份时失败。checkLogin(String user

10、Str,String passStr)方法,用于判断登录用户与密码是否正确。(2)各个模块实现方法描述: 1.系统登录模块 实现该模块的主要代码如下 package com.lzw.login;import java.awt.*;import java.awt.event.*;import java.sql.SQLException;import javax.swing.*;import com.lzw.MainFrame;import com.lzw.dao.Dao;public class LoginDialog extends JFrame private static final lo

11、ng serialVersionUID = 1L;private LoginPanel loginPanel = null;private JLabel jLabel = null;private JTextField userField = null;private JLabel jLabel1 = null;private JPasswordField passwordField = null;private JButton loginButton = null;private JButton exitButton = null;private static String userStr;

12、private MainFrame mainFrame;* param ownerpublic LoginDialog() try UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName(); mainFrame = new MainFrame(); initialize();catch (Exception e) e.printStackTrace(); * 初始化loginPanel登录面板的方法 * return com.lzw.login.LoginPanelprivate LoginPanel getLogin

13、Panel() if (loginPanel = null) jLabel1 = new JLabel();jLabel1.setBounds(new Rectangle(86, 71, 55, 18);jLabel1.setText(密码:);jLabel = new JLabel();jLabel.setText(用户名:);jLabel.setBounds(new Rectangle(85, 41, 56, 18);loginPanel = new LoginPanel();loginPanel.setLayout(null);loginPanel.setBackground(new C

14、olor(0xD8DDC7);loginPanel.add(jLabel, null);loginPanel.add(getUserField(), null);loginPanel.add(jLabel1, null);loginPanel.add(getPasswordField(), null);loginPanel.add(getLoginButton(), null);loginPanel.add(getExitButton(), null);return loginPanel; * This method initializes userField * return javax.s

15、wing.JTextFieldprivate JTextField getUserField() if (userField = null) userField = new JTextField();userField.setBounds(new Rectangle(142, 39, 127, 22);return userField; * This method initializes passwordField * return javax.swing.JPasswordFieldprivate JPasswordField getPasswordField() if (passwordF

16、ield = null) passwordField = new JPasswordField();passwordField.setBounds(new Rectangle(143, 69, 125, 22);passwordField.addKeyListener(new java.awt.event.KeyAdapter() public void keyTyped(java.awt.event.KeyEvent e) if(e.getKeyChar()=n)loginButton.doClick();return passwordField; * This method initial

17、izes loginButton * return javax.swing.JButtonprivate JButton getLoginButton() if (loginButton = null) loginButton = new JButton();loginButton.setBounds(new Rectangle(109, 114, 48, 20);loginButton.setIcon(new ImageIcon(getClass().getResource(/res/loginButton.jpg);loginButton.addActionListener(new Act

18、ionListener() public void actionPerformed(ActionEvent e) try userStr = userField.getText();StringpassStr=new String(passwordField.getPassword();if (!Dao.checkLogin(userStr, passStr) JOptionPane.showMessageDialog(LoginDialog.this,用户名与密码无法登录, 登录失败,JOptionPane.ERROR_MESSAGE);return; catch (Exception e1

19、) e1.printStackTrace();MainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);mainFrame.setVisible(true);mainFrame.getCzyStateLabel().setText(userStr);setVisible(false);return loginButton; * This method initializes exitButton * return javax.swing.JButtonprivate JButton getExitButton() if (exitButt

20、on = null) exitButton = new JButton();exitButton.setBounds(new Rectangle(181, 114, 48, 20);exitButton.setIcon(new ImageIcon(getClass().getResource(/res/exitButton.jpg);exitButton.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent e) System.ex

21、it(0);return exitButton; * 界面初始化方法 * return voidprivate void initialize() Dimension size = getToolkit().getScreenSize();setLocation(size.width - 296) / 2, (size.height - 188) / 2);setSize(296, 188);this.setTitle(系统登录);setContentPane(getLoginPanel();public String getUserStr() return userStr; / jve:de

22、cl-index=0:visual-constraint=10,10运行结果如下: 2.主窗体模块主要实现代码如下:package com.lzw;import java.awt.*;import java.util.Date;import javax.swing.*;import javax.swing.border.BevelBorder;import com.lzw.login.LoginDialog;public class MainFrame extends JFrame private static final long serialVersionUID = 1L;private

23、JPanel frameContentPane = null;private MenuBar frameMenuBar = null;private ToolBar toolBar = null;private DesktopPanel desktopPane = null;private JPanel statePanel = null;private JLabel stateLabel = null;private JLabel nameLabel = null;private JLabel nowDateLabel = null;private JSeparator jSeparator

24、1 = null;private static JLabel czyStateLabel = null;private JSeparator jSeparator2 = null; * This method initializes jJToolBarBar * return javax.swing.JToolBarprivate ToolBar getJJToolBarBar() if (toolBar = null) toolBar = new ToolBar(getFrameMenuBar();toolBar.setCursor(new Cursor(Cursor.HAND_CURSOR

25、);return toolBar; * 初始化窗体菜单栏的方法 * return javax.swing.JMenuBarprotected MenuBar getFrameMenuBar() if (frameMenuBar = null) frameMenuBar = new MenuBar(getDesktopPane(), getStateLabel();return frameMenuBar; * This method initializes desktopPane * return javax.swing.JDesktopPaneprivate DesktopPanel getD

26、esktopPane() if (desktopPane = null) desktopPane = new DesktopPanel();return desktopPane; * This method initializes statePanel * return javax.swing.JPanelprivate JPanel getStatePanel() if (statePanel = null) GridBagConstraints gridBagConstraints6 = new GridBagConstraints();gridBagConstraints6.gridx

27、= 2;gridBagConstraints6.fill = GridBagConstraints.VERTICAL;gridBagConstraints6.insets = new Insets(0, 5, 0, 5);gridBagConstraints6.gridy = 0;GridBagConstraints gridBagConstraints4 = new GridBagConstraints();gridBagConstraints4.gridx = 3;gridBagConstraints4.gridy = 0;GridBagConstraints gridBagConstra

28、ints3 = new GridBagConstraints();gridBagConstraints3.gridx = 6;gridBagConstraints3.fill = GridBagConstraints.VERTICAL;gridBagConstraints3.insets = new Insets(0, 5, 0, 5);gridBagConstraints3.gridy = 0;GridBagConstraints gridBagConstraints11 = new GridBagConstraints();gridBagConstraints11.gridx = 5;gr

29、idBagConstraints11.insets = new Insets(0, 5, 0, 5);gridBagConstraints11.gridy = 0;nowDateLabel = new JLabel();Date now = new Date();nowDateLabel.setText(String.format(%tF, now);GridBagConstraints gridBagConstraints2 = new GridBagConstraints();gridBagConstraints2.gridx = 7;gridBagConstraints2.weightx

30、 = 0.0;gridBagConstraints2.fill = GridBagConstraints.NONE;gridBagConstraints2.gridy = 0;nameLabel = new JLabel(吉林省铭泰有限公司 );GridBagConstraints gridBagConstraints1 = new GridBagConstraints();gridBagConstraints1.gridx = 4;gridBagConstraints1.fill = GridBagConstraints.VERTICAL;gridBagConstraints1.weight

31、y = 1.0;gridBagConstraints1.insets = new Insets(0, 5, 0, 5);gridBagConstraints1.gridy = 0;GridBagConstraints gridBagConstraints = new GridBagConstraints();gridBagConstraints.gridx = 0;gridBagConstraints.fill = GridBagConstraints.HORIZONTAL;gridBagConstraints.weightx = 1.0;gridBagConstraints.gridy =

32、0;statePanel = new JPanel();statePanel.setLayout(new GridBagLayout();statePanel.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED);statePanel.add(getStateLabel(), gridBagConstraints);statePanel.add(getJSeparator(),gridBagConstraints1);statePanel.add(nameLabel, gridBagConstraints2);statePa

33、nel.add(getJSeparator1(),gridBagConstraints3);statePanel.add(nowDateLabel, gridBagConstraints11);statePanel.add(getCzyStateLabel(), gridBagConstraints4);statePanel.add(getJSeparator2(),gridBagConstraints6)return statePanel;public static JLabel getCzyStateLabel() if (czyStateLabel = null) czyStateLab

34、el = new JLabel(操作员:);return czyStateLabel;public JLabel getStateLabel() if (stateLabel = null) stateLabel = new JLabel();stateLabel.setText(当前没有选定窗体);return stateLabel; * This method initializes jSeparator * return javax.swing.JSeparator private JSeparator getJSeparator() JSeparator jSeparator = ne

35、w JSeparator();jSeparator.setOrientation(JSeparator.VERTICAL);return jSeparator; * This method initializes jSeparator1 * return javax.swing.JSeparatorprivate JSeparator getJSeparator1() if (jSeparator1 = null) jSeparator1 = new JSeparator();jSeparator1.setOrientation(SwingConstants.VERTICAL);return

36、jSeparator1; * This method initializes jSeparator2 * return javax.swing.JSeparatorprivate JSeparator getJSeparator2() if (jSeparator2 = null) jSeparator2 = new JSeparator();jSeparator2.setOrientation(SwingConstants.VERTICAL)return jSeparator2; * param argspublic static void main(String args) SplashS

37、creen splashScreen = SplashScreen.getSplashScreen();if(splashScreen!=null)try JFrame login = new LoginDialog();login.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);Thread.sleep(3000);login.setVisible(true); catch (InterruptedException e) * This is the default constructorpublic MainFrame() super();in

38、itialize(); * This method initializes this * return voidprivate void initialize() this.setSize(800, 600);this.setJMenuBar(getFrameMenuBar();this.setContentPane(getFrameContentPane();this.setTitle(华联超市进销存管理系统); * This method initializes frameContentPane * return javax.swing.JPanelprivate JPanel getFr

39、ameContentPane() if (frameContentPane = null) frameContentPane = new JPanel();frameContentPane.setLayout(new BorderLayout();frameContentPane.add(getStatePanel(), BorderLayout.SOUTH);frameContentPane.add(getJJToolBarBar(), BorderLayout.NORTH);frameContentPane.add(getDesktopPane(), BorderLayout.CENTER

40、);return frameContentPane; / jve:decl-index=0:visual-constraint=6,-5运行界面如下: 3.进货单模块 实现代码如下: package com.lzw.iframe;import java.awt.*;import java.awt.event.*;import java.beans.PropertyChangeListener;import java.sql.*;import java.util.*;import java.util.Date;import java.util.List;import javax.swing.*;

41、import javax.swing.border.BevelBorder;import javax.swing.table.*;import com.lzw.*;import com.lzw.dao.Dao;import com.lzw.dao.model.*;public class JinHuoDan_IFrame extends JInternalFrame private JPanel jContentPane = null;private JPanel topPanel = null;private JLabel idLabel = null;private JTextField

42、idField = null;private JLabel gysLabel = null;private JLabel lxrLabel = null;private JTextField lxrField = null;private JLabel jsfsLabel = null;private JComboBox jsfsComboBox = null;private JLabel thsjLabel = null;private JTextField jhsjField = null;private JLabel jsrLabel = null;private JTextField

43、czyField = null;private JPanel bottomPanel = null;private JLabel pzslLabel = null;private JTextField pzslField = null;private JLabel hpzsLabel = null;private JTextField hpzsField = null;private JLabel hjjeLabel = null;private JTextField hjjeField = null;private JLabel ysjlLabel = null;private JTextField ysjl

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁