1、摘要本文针对超市销售管理信息系统,以超市销售信息系统为背景,通过对超市的日常业务进行详细调研与研究,对其工作流程进行研究,建立销售信息处理模型,并在此基础上设计销售信息管理软件的方案,并加以实施。本文主要对该超市的现状进行了需求分析,达到了相应的用户需求,功能需求以及相应的业务流程,重点阐述了系统的分析、设计的思路和方法,以及系统数据库设计的方法。建立超市销售管理系统使超市销售管理工作规范化,系统化,程序化,避免管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效地进行信息查询和修改。提高了直接或间接的经济效益,提升超市销售管理和行政管理水平,改善顾客和超市成员关系,增强超市服务竞争
2、力,实现优质服务。关键词:超市销售信息管理系统 数据库前言随着经济发展人们生活水平的提高,人们消费需求提高物品需求种类多样化,超市销售管理的数据结构及处理也日益复杂。超市服务系统不仅要求准确无误地保留有关经济数据,而且要求迅速可靠地采用各种数据信息进行综合分析和决策。计算机所具有的数字化技术和交互式的处理能力,使其对数据庞大、程序复杂的各类信息进行综合处理,从而为超市经济管理的运行提供决策依据。 本文阐述了超市管理系统的设计与实现,以顾客为中心,以时间为轴线,围绕顾客消费过程,详细地、完整地收集所有数据。借助于信息系统的杠杆作用,平衡顾客与超市的需要,将管理信息和顾客信息做集成,使得相关人员在
3、任何时间、任何地点都能得到相关信息。其主要目标是协助完成超市对日常的计算机服务统计和销售管理等业务,减轻超市人员处理业务的劳动强度。 一、系统需求分析1、 系统概述系统分析是系统开发的重要阶段,其目的是要回答系统将要“做什么“,即需求分析。完成需求分析之后,对系统的涉及到的部门进行组织结构分析和业务流程分析。在此基础之上还要做数据流程分析,并利用数据字典对数据流程进行详细的说明。本系统由六个表组成。分别是:供应商表、商品信息表、交易表、会员表、销售表以及入库表。每个表实现不同的功能。主要是为了超市人员的添、删、改、查。提高超市人员的工作效率和工作质量,全面提高了超市的综合管理水平和服务质量,提
4、高顾客满意度,同时为超市带来一定的经济效益产生积极作用。2、 实现功能超市销售管理系统主要实现为了超市人员方便添、删、改、查,提高工作效率,对销售情况一目了然。供应商表主要实现:快速了解供应商的基本信息,比如:编号、姓名、地址、电话。通过查询供应商的编号,就可以对他们的信息有所了解。商品信息表主要实现:快速了解商品的基本信息。比如:商品编号、商品名、商品供应商、商品价格、商品销售日期、商品进货日期、商品库存数量。通过查找商品编号,就可以知道此商品的一系列信息。交易表主要实现:交易的记录。比如:交易编号、交易日期、交易价格、会员卡号。通过查找交易编号,可以知道交易的一切信息。会员表主要实现:会员
5、的基本信息。比如:会员编号、会员卡号、会员姓名、会员性别、会员联系方式以及会员地址。通过查找会员编号,可以一目了然的知道此会员的信息。销售表主要实现:销售的记录。比如:交易编号、商品编号、销售数量、销售价格。通过查找交易编号和商品编号可以快速查找到销售的所有记录。入库表主要实现:入库商品的信息。比如:入库编号、入库商品编号、单额、总额、入库日期、入库数量以及入库状态。通过查找入库编号,就可以了解入库商品的所有信息。3、 划分功能模块供应商供应商地址供应商电话供应商姓名供应商编号 商品信息表商品供应商商品价格商品销售日期商品进货日期商品名商品库存数量商品编号会员编号会员卡号会员性别会员地址会员联
6、系方式会员姓名会员表交易表交易卡号交易日期交易编号交易价格销售表销售数量销售价格商品编号交易编号单额入库状态入库商品编号入库表入库日期入库编号总额入库数量二、数据库的设计1、数据库表的设计数据库共7个表,分别是:商品信息表,会员表,供应商表,交易表,销售表,入库表以及Admin表。以下分别是每个表的内容: 销售表商品信息表入库表会员表交易表Admin表以上为商品信息表,会员表,供应商表,交易表,销售表,入库表以及Admin表的内容。数据流图:2、数据库链接程序package chapter00jdbc.exammanager;import java.awt.*;import java.awt.
7、event.*;import javax.swing.*;import javax.swing.event.*;import chapter00jdbc.exammanager.db.DBAdmin;import chapter00jdbc.exammanager.mygui.*;public class TestFrame extends JFrame private static JDesktopPane theDesktop;JMenuItem loginItem,exitItem,helpItem;/登录、退出和帮助内容菜单项 final String itemString=管理员,会
8、员;final JPanel itemPanel=new PanelAdmin(超市销售信息管理系统,Admin),new PanelhuiyuanBiao(超市销售信息管理系统,会员表);JMenuItem item=new JMenuItemitemPanel.length;/题库管理菜单的4个菜单项:3个表和生成试卷public TestFrame() super(超市销售信息管理系统);/1.登录菜单:有两个菜单项-登录和退出JMenu loginMenu = new JMenu(登录);JMenuItem loginItem = new JMenuItem(登录);loginMenu
9、.add(loginItem);loginItem.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e) String name=JOptionPane.showInputDialog(null, 请输入登陆名字:);String password=JOptionPane.showInputDialog(null, 请输入登陆密码:);if(DBAdmin.isAdmin(name, password)JOptionPane.showMessageDialog(null, 登录成功!);
10、for(int i=0;iitem.length;i+) itemi.setEnabled(true);elseJOptionPane.showMessageDialog(null, 密码不对,登录失败!););JMenuItem exitItem = new JMenuItem(退出);loginMenu.add(exitItem);exitItem.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e) System.exit(0););/2.题库管理菜单:库中的每个表对应一个菜单项,
11、实现添、删、改、查;导出试卷菜单项JMenu adminMenu = new JMenu(超市销售信息管理系统);for(int i=0;iitem.length;i+) itemi=builedAdminMenuItem(adminMenu,itemStringi,itemPaneli);/3.帮助菜单JMenu helpMenu = new JMenu(帮助);JMenuItem helpItem = new JMenuItem(帮助内容);helpMenu.add(helpItem);helpItem.addActionListener(new ActionListener()publi
12、c void actionPerformed(ActionEvent e) JOptionPane.showMessageDialog(TestFrame.this, 运行程序后,看相应的代码););/4.创建菜单条,添加菜单JMenuBar bar = new JMenuBar();setJMenuBar(bar);bar.add(loginMenu);bar.add(adminMenu);bar.add(helpMenu);/5.窗口中间放置桌面面板,用来显示内部窗口theDesktop = new JDesktopPane();getContentPane().add(theDeskto
13、p,BorderLayout.CENTER);setSize(800, 600);setVisible(true);/创建菜单项的通用方法:参数menu是菜单项所添加在其上的菜单;/参数itemName是菜单项的名字,因其在匿名内部类对象中引用,必须声明为final;/参数panel是点击菜单项后所生成的内部窗口中的面板对象,必须声明为final。private JMenuItem builedAdminMenuItem(JMenu menu,final String itemName,final JPanel panel)final JMenuItem menuItem = new JMen
14、uItem(itemName);menu.add(menuItem);menuItem.setEnabled(false);menuItem.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e) buildInternalFrame(panel,itemName,menuItem);/生成内部窗口);return menuItem;/生成内部窗口:窗口中间放置面板对象。参数item是与内部窗口相关的菜单项。private void buildInternalFrame(JPanel pa
15、nel,String title,final JMenuItem item) JInternalFrame frame = new JInternalFrame(title,true,true,true,true);/内部窗口frame.addInternalFrameListener(new InternalFrameAdapter()/内部窗口监听:关闭后执行public void internalFrameClosed(InternalFrameEvent e) item.setEnabled(true);/关闭内部窗口时,菜单项item可用。);Container container
16、= frame.getContentPane();/内部窗口容器面板container.add(panel, BorderLayout.CENTER);/参数面板panel放在容器中间frame.setSize(600,480);theDesktop.add(frame);/内部窗口添加到桌面面板才能显示frame.setVisible(true);item.setEnabled(false);/生成内部窗口后,与之相关的菜单项item不可用。/测试TestFrame类public static void main(String args) JFrame frame = new TestFra
17、me();frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);*3、数据库表的添、删、改、查/ 添加记录protected void dealAddbtn() huiyuan a1 = new huiyuan(); / 改成你的beana1.setBianhao(fields0.getText().trim(); / 顺序要对,fields里的序号要和表的字段的顺序一样a1.setKahao(fields1.getText().trim();a1.setXingming(fields2.getText().trim();a1.setXing
18、bie(fields3.getText().trim();a1.setLianxifangshi(fields4.getText().trim();a1.setDizhi(fields5.getText().trim();DBhuiyuan.addHuiyuan(a1); / 改成你的DBbeanJOptionPane.showMessageDialog(null, 添加成功);tableModel.setQuery(会员表);/ 改成你的表名/修改记录protected void dealUpdatebtn() huiyuan a1 = new huiyuan(); / 改成你的beana1
19、.setBianhao(fields0.getText().trim(); / 顺序要对,fields里的序号要和表的字段的顺序一样a1.setKahao(fields1.getText().trim();a1.setXingming(fields2.getText().trim();a1.setXingbie(fields3.getText().trim();a1.setLianxifangshi(fields4.getText().trim();a1.setDizhi(fields5.getText().trim();DBhuiyuan.updatehuiyuanbiao(a1); / 改
20、成你的DBbeanJOptionPane.showMessageDialog(null, 修改成功);tableModel.setQuery(会员表);/ 改成你的表名/删除记录protected void dealDelbtn () DBhuiyuan.deletehuiyuanbiao(fields0.getText().trim(); / 改成你的DBbeanJOptionPane.showMessageDialog(null, 删除成功);tableModel.setQuery(会员表);/ 改成你的表名/查询记录protected void dealQuerybtn()huiyuan
21、 hy=DBhuiyuan.gethuiyuan(fields0.getText();fields1.setText(hy.getKahao();fields2.setText(hy.getXingming();fields3.setText(hy.getXingbie();fields4.setText(hy.getLianxifangshi();fields5.setText(hy.getDizhi();JOptionPane.showMessageDialog(null, 查询成功);tableModel.setQuery(会员表);/ 改成你的表名三、图形界面设计与实现登陆界面登陆成功
22、表的操作界面登陆界面程序:package chapter00jdbc.exammanager;import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;import chapter00jdbc.exammanager.db.DBAdmin;import chapter00jdbc.exammanager.mygui.*;public class TestFrame extends JFrame private static JDesktopPane theDesktop;J
23、MenuItem loginItem,exitItem,helpItem;/登录、退出和帮助内容菜单项 final String itemString=管理员,会员;final JPanel itemPanel=new PanelAdmin(超市销售信息管理系统,Admin),new PanelhuiyuanBiao(超市销售信息管理系统,会员表);JMenuItem item=new JMenuItemitemPanel.length;/题库管理菜单的4个菜单项:3个表和生成试卷public TestFrame() super(超市销售信息管理系统);/1.登录菜单:有两个菜单项-登录和退出
24、JMenu loginMenu = new JMenu(登录);JMenuItem loginItem = new JMenuItem(登录);loginMenu.add(loginItem);loginItem.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e) String name=JOptionPane.showInputDialog(null, 请输入登陆名字:);String password=JOptionPane.showInputDialog(null, 请输入登陆密
25、码:);if(DBAdmin.isAdmin(name, password)JOptionPane.showMessageDialog(null, 登录成功!);for(int i=0;iitem.length;i+) itemi.setEnabled(true);elseJOptionPane.showMessageDialog(null, 密码不对,登录失败!););JMenuItem exitItem = new JMenuItem(退出);loginMenu.add(exitItem);exitItem.addActionListener(new ActionListener()pub
26、lic void actionPerformed(ActionEvent e) System.exit(0););/2.题库管理菜单:库中的每个表对应一个菜单项,实现添、删、改、查;导出试卷菜单项JMenu adminMenu = new JMenu(超市销售信息管理系统);for(int i=0;iitem.length;i+) itemi=builedAdminMenuItem(adminMenu,itemStringi,itemPaneli);/3.帮助菜单JMenu helpMenu = new JMenu(帮助);JMenuItem helpItem = new JMenuItem(
27、帮助内容);helpMenu.add(helpItem);helpItem.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e) JOptionPane.showMessageDialog(TestFrame.this, 运行程序后,看相应的代码););/4.创建菜单条,添加菜单JMenuBar bar = new JMenuBar();setJMenuBar(bar);bar.add(loginMenu);bar.add(adminMenu);bar.add(helpMenu);/5.
28、窗口中间放置桌面面板,用来显示内部窗口theDesktop = new JDesktopPane();getContentPane().add(theDesktop,BorderLayout.CENTER);setSize(800, 600);setVisible(true);/创建菜单项的通用方法:参数menu是菜单项所添加在其上的菜单;/参数itemName是菜单项的名字,因其在匿名内部类对象中引用,必须声明为final;/参数panel是点击菜单项后所生成的内部窗口中的面板对象,必须声明为final。private JMenuItem builedAdminMenuItem(JMenu
29、menu,final String itemName,final JPanel panel)final JMenuItem menuItem = new JMenuItem(itemName);menu.add(menuItem);menuItem.setEnabled(false);menuItem.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e) buildInternalFrame(panel,itemName,menuItem);/生成内部窗口);return menuIte
30、m;/生成内部窗口:窗口中间放置面板对象。参数item是与内部窗口相关的菜单项。private void buildInternalFrame(JPanel panel,String title,final JMenuItem item) JInternalFrame frame = new JInternalFrame(title,true,true,true,true);/内部窗口frame.addInternalFrameListener(new InternalFrameAdapter()/内部窗口监听:关闭后执行public void internalFrameClosed(Inte
31、rnalFrameEvent e) item.setEnabled(true);/关闭内部窗口时,菜单项item可用。);Container container = frame.getContentPane();/内部窗口容器面板container.add(panel, BorderLayout.CENTER);/参数面板panel放在容器中间frame.setSize(600,480);theDesktop.add(frame);/内部窗口添加到桌面面板才能显示frame.setVisible(true);item.setEnabled(false);/生成内部窗口后,与之相关的菜单项ite
32、m不可用。/测试TestFrame类public static void main(String args) JFrame frame = new TestFrame();frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);四、程序测试package chapter00jdbc.exammanager;import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;import chapter00jdbc.exammanage
33、r.db.DBAdmin;import chapter00jdbc.exammanager.mygui.*;public class TestFrame extends JFrame private static JDesktopPane theDesktop;JMenuItem loginItem,exitItem,helpItem;/登录、退出和帮助内容菜单项 final String itemString=管理员,会员;final JPanel itemPanel=new PanelAdmin(超市销售信息管理系统,Admin),new PanelhuiyuanBiao(超市销售信息管理
34、系统,会员表);JMenuItem item=new JMenuItemitemPanel.length;/题库管理菜单的4个菜单项:3个表和生成试卷public TestFrame() super(超市销售信息管理系统);/1.登录菜单:有两个菜单项-登录和退出JMenu loginMenu = new JMenu(登录);JMenuItem loginItem = new JMenuItem(登录);loginMenu.add(loginItem);loginItem.addActionListener(new ActionListener()public void actionPerfo
35、rmed(ActionEvent e) String name=JOptionPane.showInputDialog(null, 请输入登陆名字:);String password=JOptionPane.showInputDialog(null, 请输入登陆密码:);if(DBAdmin.isAdmin(name, password)JOptionPane.showMessageDialog(null, 登录成功!);for(int i=0;iitem.length;i+) itemi.setEnabled(true);elseJOptionPane.showMessageDialog(n
36、ull, 密码不对,登录失败!););JMenuItem exitItem = new JMenuItem(退出);loginMenu.add(exitItem);exitItem.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e) System.exit(0););/2.题库管理菜单:库中的每个表对应一个菜单项,实现添、删、改、查;导出试卷菜单项JMenu adminMenu = new JMenu(超市销售信息管理系统);for(int i=0;iitem.length;i+) i
37、temi=builedAdminMenuItem(adminMenu,itemStringi,itemPaneli);/3.帮助菜单JMenu helpMenu = new JMenu(帮助);JMenuItem helpItem = new JMenuItem(帮助内容);helpMenu.add(helpItem);helpItem.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e) JOptionPane.showMessageDialog(TestFrame.this, 运行程
38、序后,看相应的代码););/4.创建菜单条,添加菜单JMenuBar bar = new JMenuBar();setJMenuBar(bar);bar.add(loginMenu);bar.add(adminMenu);bar.add(helpMenu);/5.窗口中间放置桌面面板,用来显示内部窗口theDesktop = new JDesktopPane();getContentPane().add(theDesktop,BorderLayout.CENTER);setSize(800, 600);setVisible(true);/创建菜单项的通用方法:参数menu是菜单项所添加在其上的
39、菜单;/参数itemName是菜单项的名字,因其在匿名内部类对象中引用,必须声明为final;/参数panel是点击菜单项后所生成的内部窗口中的面板对象,必须声明为final。private JMenuItem builedAdminMenuItem(JMenu menu,final String itemName,final JPanel panel)final JMenuItem menuItem = new JMenuItem(itemName);menu.add(menuItem);menuItem.setEnabled(false);menuItem.addActionListene
40、r(new ActionListener()public void actionPerformed(ActionEvent e) buildInternalFrame(panel,itemName,menuItem);/生成内部窗口);return menuItem;/生成内部窗口:窗口中间放置面板对象。参数item是与内部窗口相关的菜单项。private void buildInternalFrame(JPanel panel,String title,final JMenuItem item) JInternalFrame frame = new JInternalFrame(title,
41、true,true,true,true);/内部窗口frame.addInternalFrameListener(new InternalFrameAdapter()/内部窗口监听:关闭后执行public void internalFrameClosed(InternalFrameEvent e) item.setEnabled(true);/关闭内部窗口时,菜单项item可用。);Container container = frame.getContentPane();/内部窗口容器面板container.add(panel, BorderLayout.CENTER);/参数面板panel放在容器中间frame.setSize(600,480);theDesktop.add(frame);/内部窗口添加到桌面面板才能显示frame.setVisible(true);item.setEnabled(false);/生成内部窗口后,与之相关的菜单项item不可用。/测试TestFrame类public static void main(String args) JFrame frame = new TestFrame();frame.setDef