本文共 9062 字,大约阅读时间需要 30 分钟。
个人企业库存管理系统
设计一个库存管理系统,以菜单方式工作。能够对物品的库存信息进行管理。
(1) 设计一个物品类Goods,包括产品编号、产品名称、产地、数量、价格、总价值。
(2) 添加、删除物品功能。 (3) 编辑功能,根据条件定位商品,并进行修改。 (4) 进货功能:按要求添加相应商品的信息到库存中。添加进货日期、生产厂家、进货价、数量等信息。 (5) 出货功能:出货时,先输入商品类别,然后输入商品名称,并在库存中查找该商品的相关信息。如果有库存量,输入出货的数量、出货日期,计算销售额和利润。如果库存量不够,给出提示信息,结束出货。 (6) 查询功能:查询进、出货详细记录。 (7) 使用外部文件或数据库存储相关数据。设计两个类:一个用户登录类(DengLu),一个是连接数据库,一个入库类(RuKu)一个是综合类。
主类则为运行程序的入口,调用成绩类,完成程序功能Eclipse
管理员登录:public class DengLu extends JFrame implements ActionListener,MouseListener{ JPanel pnlMain; JLabel lbltupian,lblyonghu,lblmima,lblbiaoti; JTextField txtUserName;//文本框 JPasswordField pwdPassWord;//密码框 JButton DengLu,TuiChu;//主键 Dimension deSize; Toolkit toolkit=Toolkit.getDefaultToolkit(); public DengLu (){ super("仓库管理系统"); pnlMain=new JPanel();//主面板 pnlMain.setLayout(null); this.setUndecorated(true); lbltupian=new JLabel(new ImageIcon("images/tupian.jpg")); lbltupian.setBounds(0, 0, 708,366); lblyonghu=new JLabel("用户名:"); lblyonghu.setBounds(450,50,90, 20); lblmima=new JLabel("密 码:"); lblmima.setBounds(450,100,90, 20); txtUserName=new JTextField(100); txtUserName.setBounds(500,50,150, 20); pwdPassWord=new JPasswordField(100); pwdPassWord.setBounds(500,100,150, 20); DengLu=new JButton("登录"); DengLu.setBounds(450,140,90, 30); DengLu.addActionListener(this); TuiChu=new JButton("退出"); TuiChu.setBounds(560,140,90, 30); TuiChu.setMnemonic('d');//设置快捷按钮 TuiChu.addActionListener(this); //字体 Font font=new Font("宋体", Font.PLAIN, 13); lblyonghu.setFont(font); lblmima.setFont(font); DengLu.setFont(font); TuiChu.setFont(font); //颜色 DengLu.setBackground(Color.CYAN); TuiChu.setBackground(Color.CYAN); pnlMain.add(lblyonghu); pnlMain.add(txtUserName); pnlMain.add(lblmima); pnlMain.add(pwdPassWord); pnlMain.add(DengLu); pnlMain.add(TuiChu); pnlMain.add(lbltupian); this.setContentPane(pnlMain); this.setVisible(true); deSize=toolkit.getScreenSize(); //获取屏幕的大小 this.setSize(708,366); this.setLocation(deSize.width/2-this.getWidth()/2, deSize.height/2-this.getHeight()/2); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String[] args) { new DengLu(); } @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if(e.getSource()==DengLu) { if((txtUserName.getText().equals("20150200121"))&&(pwdPassWord.getText().equals("960914"))) { //JOptionPane.showMessageDialog(null, "用户名和密码正确,欢迎登陆") new ZhuJieMian(); this.dispose();} else JOptionPane.showMessageDialog(null, "用户名或密码错误,请重新输入"); } if(e.getSource()==TuiChu)System.exit(0); } @Override public void mouseClicked(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseEntered(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseExited(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mousePressed(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseReleased(MouseEvent e) { // TODO Auto-generated method stub }}连接数据库并进行修改添加:package lsg;import javax.swing.JFrame;import javax.swing.JOptionPane;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.*;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import javax.swing.*;public class RuKu extends JFrame implements ActionListener{ JPanel pnlMain,pnlxin,pnltian; JButton xinzeng,tianjia,guanbi,queding,tuichu,queding2; JLabel biaoti1,chanpinming,bianhao,xinghao,dengji,shuliang,danjia; JLabel biaoti2,chanpinming2,bianhao2,xinghao2,dengji2,shuliang2,danjia2; JTextField chan,bian,xing,deng,shu,dan; JTextField chan2,bian2,xing2,deng2,shu2,dan2; ResultSet rs; Dimension deSize; Toolkit toolkit=Toolkit.getDefaultToolkit(); public RuKu() { super("入库"); deSize=toolkit.getScreenSize(); pnlMain=new JPanel(); pnlMain.setLayout(null);//空布局 pnltian=new JPanel(); pnltian.setLayout(null); pnlxin=new JPanel(); pnlxin.setLayout(null); xinzeng=new JButton("新入"); xinzeng.setBounds(0,0, 200, 50); xinzeng.addActionListener(this); tianjia=new JButton("增减"); tianjia.setBounds(210, 0, 200, 50); tianjia.addActionListener(this); guanbi=new JButton("关闭"); guanbi.setBounds(420, 0, 200, 50); guanbi.addActionListener(this); queding=new JButton("确定"); queding.setBounds(350, 300, 200, 50); queding.addActionListener(this); tuichu=new JButton("清空"); tuichu.setBounds(570, 300, 200, 50); tuichu.addActionListener(this); queding2=new JButton("确定"); queding2.setBounds(350, 350, 200, 50); queding2.setBackground(Color.GREEN); queding2.addActionListener(this); biaoti1=new JLabel("请输入新增产品的信息"); biaoti1.setBounds(450, 10, 200, 30); chanpinming=new JLabel("产品名"); chanpinming.setBounds(350, 50, 50, 30); chan=new JTextField(17); chan.setBounds(450, 50, 300, 30); bianhao=new JLabel("编码"); bianhao.setBounds(350,90, 50, 30); bian=new JTextField(17); bian.setBounds(450,90, 300, 30); xinghao=new JLabel("型 号"); xinghao.setBounds(350,130, 50, 30); xing=new JTextField(17); xing.setBounds(450,130, 300, 30); dengji=new JLabel("等 级"); dengji.setBounds(350,170, 50, 30); deng=new JTextField(17); deng.setBounds(450,170, 300, 30); shuliang=new JLabel("数 量"); shuliang.setBounds(350,210, 50, 30); shu=new JTextField(17); shu.setBounds(450,210, 300, 30); danjia=new JLabel("单 价"); danjia.setBounds(350,250, 50, 30); dan=new JTextField(17); dan.setBounds(450,250, 300, 30); bianhao2=new JLabel("编码"); bianhao2.setBounds(350, 50, 50, 30); bian2=new JTextField(17); bian2.setBounds(450, 50, 300, 30); shuliang2=new JLabel("数 量"); shuliang2.setBounds(350,210, 50, 30); shu2=new JTextField(17); shu2.setBounds(450,210, 300, 30); pnlxin.add(biaoti1); pnlxin.add(chanpinming); pnlxin.add(bianhao); pnlxin.add(xinghao); pnlxin.add(dengji); pnlxin.add(shuliang); pnlxin.add(danjia); pnlxin.add(chan); pnlxin.add(bian); pnlxin.add(xing); pnlxin.add(deng); pnlxin.add(shu); pnlxin.add(dan); pnlxin.add(queding); pnlxin.add(tuichu); pnltian.add(bianhao2); pnltian.add(shuliang2); pnltian.add(bian2); pnltian.add(shu2); pnltian.add(queding2); pnlMain.add(xinzeng); pnlMain.add(tianjia); pnlMain.add(guanbi); pnlMain.add(pnlxin); pnlMain.add(pnltian); this.setContentPane(pnlMain); this.setSize(deSize.width-320,deSize.height-275); this.setLocation(310, 232); this.setUndecorated(true);//无边化:必须在setVisible之前使用 this.setVisible(true);//可视 } public static void main(String[] args) { RuKu mu=new RuKu(); mu.getUser(); } @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if(e.getSource()==xinzeng) { pnlxin.setBounds(10, 70, 1030, 400); pnltian.setSize(0, 0); } if(e.getSource()==tianjia) { pnltian.setBounds(10, 70, 1030, 400); pnlxin.setSize(0, 0); } if(e.getSource()==guanbi)this.dispose(); if(e.getSource()==queding){ insertUser();} if(e.getSource()==queding2){ updateUser();} } public Connection openDB(){ try { Class.forName("com.mysql.jdbc.Driver"); Connection cn=DriverManager.getConnection("jdbc:mysql://localhost:3306/student","root" , "960914"); return cn; } catch (ClassNotFoundException e) { System.out.println("驱动加载异常!"); return null; } catch (SQLException e) { System.out.println("数据库连接异常!"); return null; } } public void getUser(){ try { Statement stmt=openDB().createStatement(); rs=stmt.executeQuery("select bianhao,shuliang from kucun"); } catch (SQLException e) { JOptionPane.showMessageDialog(null,"用户信息获取失败"); } } private void insertUser() { // TODO Auto-generated method stu try { PreparedStatement psm=openDB().prepareStatement("insert into kucun(bianhao,chanpinname,xinghao,dengji,shuliang,danjia) values(?,?,?,?,?,?)"); psm.setString(1,bian.getText()); psm.setString(2,chan.getText()); psm.setString(3,xing.getText()); psm.setString(4,deng.getText()); psm.setString(5,shu.getText()); psm.setString(6,dan.getText()); psm.executeUpdate(); JOptionPane.showMessageDialog(null, "用户添加成功"); psm.close(); } catch (SQLException e) { // TODO Auto-generated catch block JOptionPane.showMessageDialog(null, "用户添加失败"); } } private void updateUser() { // TODO Auto-generated method stub System.out.println("aaaa"); try { Statement sm=openDB().createStatement(); String strupdate="update kucun set shuliang='"+shu2.getText()+"' where bianhao='"+bian2.getText()+"'"; sm.execute(strupdate); JOptionPane.showMessageDialog(null, "用户修改成功"); sm.close(); } catch (SQLException e) { // TODO Auto-generated catch block JOptionPane.showMessageDialog(null, "用户更新失败"); }
数据库中总体有一张表,是管理产品信息的,具体结构如下图所示:
数据库的设计表
转载地址:http://ofjsz.baihongyu.com/