博客
关于我
Java入门编程之个人企业库存管理系统
阅读量:553 次
发布时间:2019-03-09

本文共 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/

你可能感兴趣的文章
mysql 用户管理和权限设置
查看>>
MySQL 的 varchar 水真的太深了!
查看>>
mysql 的GROUP_CONCAT函数的使用(group_by 如何显示分组之前的数据)
查看>>
MySQL 的instr函数
查看>>
MySQL 的mysql_secure_installation安全脚本执行过程介绍
查看>>
MySQL 的Rename Table语句
查看>>
MySQL 的全局锁、表锁和行锁
查看>>
mysql 的存储引擎介绍
查看>>
MySQL 的存储引擎有哪些?为什么常用InnoDB?
查看>>
Mysql 知识回顾总结-索引
查看>>
Mysql 笔记
查看>>
MySQL 精选 60 道面试题(含答案)
查看>>
mysql 索引
查看>>
MySQL 索引失效的 15 种场景!
查看>>
MySQL 索引深入解析及优化策略
查看>>
MySQL 索引的面试题总结
查看>>
mysql 索引类型以及创建
查看>>
MySQL 索引连环问题,你能答对几个?
查看>>
Mysql 索引问题集锦
查看>>
Mysql 纵表转换为横表
查看>>