1、_榆林学院超市库存管理系统专业:计算机科学与技术班级: 13级计本1班 学生姓名: 李 治 生 学 号:1312210142精品资料一、 需求分析3二、 概要设计3三、 详细设计41、 数据库设计4 用户登录界面:6 进入主界面:9四、 软件测试39五、 总结40六、 附录:41 一、 需求分析本系统主要是用来帮助小型超市进行库存管理系统,能够有效的帮助小型超市进行库存管理!其中包括增删改查等基本的应用。极大的提高了超市的库存管理效率,节省了大量的时间。*二、 概要设计1、 本系统的每一个功能模块都包含了多个功能。整个系统主要完成对超市商品的日常管理,包括进货管理,库存管理和供应商管理等方面。
2、在功能上系统可以完成对相关信息的浏览、查询、添加、删除、修改等功能。本课题的核心之一是销售管理、库存管理和进货管理三者之间的联系,同时系统有完整的用户管理功能。本系统采用java语言和SQLServer2008作为开发工具。这种系统优势在于系统比较简单,但功能强大,扩展性能也比较好,完全能够处理一般超市的日常任务2、 整体分为3个模块(货物,供应商,记录)每个模块之间相互关联,都有自己的增删改查!3、 程序流程图如下:三、 详细设计1、 数据库设计Goods表:Lzs(用户登录名,密码):Recond表():记录表Supplier(供应商表):用户登录界面:设计代码如下:package sou
3、rce;import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.sql.*;SuppressWarnings(serial)public class loginframe extends JFrame implements ActionListener JTextField 用户名; JPasswordField 密码;JButton 登录,重置;Box baseBox,box1,box2,box3;/盒式布局ImagePanel p;/用于插入图片的面板JSplitPane split;/拆分窗格F
4、ont f;/设置字体JLabel userName,psw;Function wMain;Connection con;Statement sql;ResultSet rs;String dbdriver = com.microsoft.sqlserver.jdbc.SQLServerDriver; String dburl = jdbc:sqlserver:/localhost:1433;DatabaseName=LZS; String user = sa; String pass = 123;public loginframe()setLayout(new FlowLayout();in
5、it();setBounds(130,80,960,600);setVisible(true);setResizable(false);tryClass.forName(dbdriver);catch(ClassNotFoundException classnotfound)System.out.println(未能找到SQLServerDriver,请检查是否已加载SQLServer驱动);void init()f = new Font(幼圆,Font.BOLD,18);p = new ImagePanel(new ImageIcon(E:/Java文件/SuperMarket/pictur
6、e/1.jpg).getImage();登录 = new JButton(登录);登录.addActionListener(this);重置 = new JButton(重置);重置.addActionListener(this);用户名 = new JTextField(16);用户名.setFont(f);密码 = new JPasswordField(16);userName = new JLabel(用户名:);userName.setFont(f);psw = new JLabel(密码:);psw.setFont(f); box1 = Box.createVerticalBox()
7、; box1.add(userName); box1.add(Box.createVerticalStrut(20); box1.add(psw); box2 = Box.createVerticalBox(); box2.add(Box.createVerticalStrut(240); box2.add(用户名); box2.add(Box.createVerticalStrut(20); box2.add(密码); box2.add(Box.createVerticalStrut(20); box3 = Box.createHorizontalBox(); box3.add(登录); b
8、ox3.add(Box.createHorizontalStrut(20); box3.add(重置); box2.add(box3); box2.add(Box.createVerticalStrut(200); baseBox = Box.createHorizontalBox(); baseBox.add(box1); baseBox.add(Box.createHorizontalStrut(15); baseBox.add(box2); /baseBox.add(登录); split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,false
9、,p,baseBox); split.setDividerLocation(0.5); add(split,BorderLayout.PAGE_START); public void actionPerformed(ActionEvent e)if(e.getSource() = 登录)String Uname = 用户名.getText().trim();charpsw = 密码.getPassword();String passWord = new String(psw);trycon = DriverManager.getConnection(jdbc:sqlserver:/localh
10、ost:1433;DatabaseName=LZS,sa,123);System.out.println(数据库连接成功!);sql=con.createStatement();String string = SELECT * FROM lzs WHERE Uname= +Uname+ AND mima = +passWord+;rs = sql.executeQuery(string);if(rs.next()wMain = new Function(); wMain.setTitle(超市库存管理系统); wMain.setVisible(true); this.dispose(); /
11、wMain.pack();elseJOptionPane.showMessageDialog(this, 您输入的用密码不正确,警告对话框,JOptionPane.WARNING_MESSAGE);密码.setText(null);密码.requestFocus();con.close();catch(SQLException ee)ee.printStackTrace();else if(e.getSource() = 重置)用户名.setText();密码.setText();进入主界面:第一菜单(货物):第二菜单(供应商):第三菜单(记录):设计代码如下:package source;i
12、mport java.awt.*;import java.awt.event.*;import javax.swing.*;SuppressWarnings(serial)public class Function extends JFrame implements ActionListenerFont f;/菜单栏JMenuBar menubar;/菜单条JMenu 货物,供应商,记录; /菜单JMenuItem 货物管理,退出,供应商管理,查询记录,进货计划;/菜单项/Box box;JLabel label;ImagePanel p;/用于插入图片的面板/构造函数 Function()s
13、etLayout(new FlowLayout();init();setTitle(超市库存管理系统);setLocation(20,30);setSize(1200,800);setBounds(130,80,960,600);setVisible(true);setResizable(false);void init()menubar = new JMenuBar();f = new Font(华文行楷,Font.BOLD,50);Font f2 = new Font(宋体,0,12);p = new ImagePanel(new ImageIcon(E:Java文件/SuperMarke
14、t/picture/2.jpg).getImage();/库房货物管理菜单货物 = new JMenu(货物);货物.setFont(f2);货物管理 = new JMenuItem(货物管理);货物管理.setFont(f2);货物管理.addActionListener(this);退出 = new JMenuItem(退出);退出.setFont(f2);退出.addActionListener(this);货物.add(货物管理);货物.add(退出); menubar.add(货物); /货物供应商菜单 供应商 = new JMenu(供应商); 供应商.setFont(f2); 供
15、应商管理 = new JMenuItem(供应商管理); 供应商管理.setFont(f2); 供应商管理.addActionListener(this); 供应商.add(供应商管理); menubar.add(供应商); /货物进货、入库和出库记录查询菜单 记录 = new JMenu(记录); 记录.setFont(f2); 查询记录 = new JMenuItem(查询记录); 查询记录.setFont(f2); 查询记录.addActionListener(this); 进货计划 = new JMenuItem(进货计划); 进货计划.setFont(f2); 进货计划.addAct
16、ionListener(this); 记录.add(查询记录); 记录.add(进货计划); menubar.add(记录); label = new JLabel(欢迎进入超市库存管理系统); label.setFont(f); p.add(label); label.setBounds(300,400,800,200); add(p,BorderLayout.CENTER); setJMenuBar(menubar);public void actionPerformed(ActionEvent e)if(e.getSource()=供应商管理)SupplierManage smTable
17、 = new SupplierManage();smTable.setVisible(true);smTable.pack();else if(e.getSource()=货物管理)goods goTable = new goods();goTable.setVisible(true);goTable.pack();else if(e.getSource()=查询记录)record reTable = new record();reTable.setVisible(true);reTable.pack();else if(e.getSource() =进货计划)plan plTable = n
18、ew plan();plTable.setVisible(true);plTable.pack();else if(e.getSource()=退出)this.dispose();进入第一菜单(货物管理):在此菜单下,可进行货物的增删改查操作,设计代码如下:package source;import java.awt.*;import java.awt.event.*;import java.sql.*;import javax.swing.*;import javax.swing.table.DefaultTableModel;SuppressWarnings(serial)public c
19、lass goods extends JFrame implements ActionListenerJTable table;JLabel label;JTextField inputText;String name = 货物号,货物名,进货价,售价,折扣价,余量,余量预警值,供应商;String strings = new String8;JButton 添加,修改,删除,退出,确认修改;JPanel p;JLabel labels = new JLabel8;JTextField fields = new JTextField8;Box baseBox,box1,box2;ImagePa
20、nel pp;/用于插入图片的面板JSplitPane split;/拆分窗格DefaultTableModel deModel = null;Connection con;Statement sql;ResultSet rs;String dbdriver = com.microsoft.sqlserver.jdbc.SQLServerDriver; String dburl = jdbc:sqlserver:/localhost:1433;DatabaseName=LZS; String user = sa; String pass = 123;goods()setLayout(new B
21、orderLayout();init();/Toolkit tk = Toolkit.getDefaultToolkit();/Image img = tk.getImage(E:Java文件/SuperMarket/picture/2.jpg);/setIconImage(img);setTitle(货物管理);setBounds(130,80,960,600);/setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setResizable(false);tryClass.forName(dbdriver);catch(ClassNotFoundEx
22、ception classnotfound)classnotfound.printStackTrace();void init()pp = new ImagePanel(new ImageIcon(E:/Java文件/SuperMarket/picture/2.jpg).getImage();添加= new JButton(添加);修改= new JButton(修改);删除 = new JButton(删除);退出 = new JButton(退出);确认修改 = new JButton(确认修改);label = new JLabel(请输入想要删除或修改的货物名:);inputText
23、= new JTextField(8);添加.addActionListener(this);修改.addActionListener(this);删除.addActionListener(this);退出.addActionListener(this);确认修改.addActionListener(this);p = new JPanel();p.add(label);p.add(inputText);p.add(添加);p.add(修改);p.add(删除);p.add(退出);p.add(确认修改);add(p,BorderLayout.SOUTH);labels0 = new JLab
24、el(货物号);labels1 = new JLabel(货物名);labels2 = new JLabel(进货价);labels3 = new JLabel(售价);labels4 = new JLabel(折扣价);labels5 = new JLabel(余量);labels6 = new JLabel(余量预警值);labels7 = new JLabel(供应商);for(int i = 0;i8;i+)fieldsi = new JTextField(20);/用盒式容器装要录入的数据和标签box1 = Box.createVerticalBox();box1.add(Box.c
25、reateVerticalStrut(15);for(int i = 0;i8;i+)box1.add(labelsi); box1.add(Box.createVerticalStrut(35);box2 = Box.createVerticalBox();box2.add(Box.createVerticalStrut(10);for(int i = 0;i8;i+)box2.add(fieldsi); box2.add(Box.createVerticalStrut(14); baseBox = Box.createHorizontalBox(); baseBox.add(box1);
26、baseBox.add(Box.createHorizontalStrut(15); baseBox.add(box2); /添加表格 add(baseBox,BorderLayout.EAST); deModel = new DefaultTableModel(name,0);table = new JTable(deModel);table.setCellSelectionEnabled(false);table.setEnabled(false);table.setShowHorizontalLines(true);table.setShowVerticalLines(true);/ad
27、d(new JScrollPane(table),BorderLayout.CENTER);split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,false,new JScrollPane(table),baseBox); split.setDividerLocation(0.5); add(split,BorderLayout.CENTER);String sqlString = select * from goods;try/连接数据库con = DriverManager.getConnection(dburl, user, pass);s
28、ql = con.createStatement();JOptionPane.showMessageDialog(this, 数据库连接成功!,消息对话框,JOptionPane.INFORMATION_MESSAGE);rs = sql.executeQuery(sqlString);while(rs.next()for(int i = 0;i=0;i-)deModel.removeRow(i);deModel.fireTableStructureChanged();rs = sql.executeQuery(select * from goods);while(rs.next() for(
29、int j = 0;j8;j+) stringsj=rs.getString(j+1); deModel.addRow(strings); deModel.fireTableStructureChanged();/更新中的数据catch(SQLException ee)ee.printStackTrace();for(int i = 0;i8;i+) fieldsi.setText();fields0.requestFocus();/设置光标的位置,在第一个文本框上面else if(e.getSource() = 修改)tryrs = sql.executeQuery(select * fro
30、m goods);while(rs.next()for(int i = 0;i8;i+)stringsi=rs.getString(i+1);if(strings1.trim().compareTo(inputText.getText().trim()=0)for(int i = 0;i=0;i-)deModel.removeRow(i);deModel.fireTableStructureChanged();rs = sql.executeQuery(select * from goods);while(rs.next() for(int j = 0;j8;j+) stringsj=rs.g
31、etString(j+1); deModel.addRow(strings); deModel.fireTableStructureChanged();/更新中的数据catch(SQLException ee)ee.printStackTrace();for(int i = 0;i=0;i-)deModel.removeRow(i);deModel.fireTableStructureChanged();rs = sql.executeQuery(select * from goods);while(rs.next()for(int i = 0;i8;i+)stringsi=rs.getStr
32、ing(i+1);/把查询的结果填入表格中deModel.addRow(strings);deModel.fireTableStructureChanged();/更新中的数据JOptionPane.showMessageDialog(this, 操作成功!,消息对话框,JOptionPane.INFORMATION_MESSAGE);inputText.setText();catch(SQLException ee)ee.printStackTrace();else if(e.getSource()=退出)this.dispose();进入第二菜单(供应商管理界面):在此界面下可进行供应商的
33、增删改查操作:设计代码如下:package source;import java.awt.*;import java.awt.event.*;import java.sql.*;import javax.swing.*;import javax.swing.table.DefaultTableModel;import java.util.Date;SuppressWarnings(serial)public class SupplierManage extends JFrame implements ActionListenerJTable table;JLabel label;JTextField inputText;String name = 添加时间,供应商,联系电话,地址,邮箱,备注;String strings = new String6;JButton 修改,删除,添加,退出,确认修改;JPanel p;JLabel labels = new JLabel5;JTextField fields = new JTextField5;Box baseBox,box1,box2;JSplitPane split;/拆分窗格DefaultTableModel deMod