基于JavaSwing+Mysql的仓库管理系统设计和实现前言:主


theme: condensed-night-purple
highlight: a11y-dark

这是我参与11月更文挑战的第18天,活动详情查看:2021最后一次更文挑战

前言:

本项目是使用Java swing开发,可实现仓库管理系统登陆/注册/重置、登录后可以进行系统管理、原料管理、成品管理、管理记录以及注销退出等几大模块。界面设计比较简介、适合作为Java初学者课设设计以及学习技术使用。

摘要:

      现如今,许多企业存在的问题:信息化不足,计算机使用率不高,大量的日常工 作皆是手工处理,因此工作效率低,企业内部沟通不良等等问题很难克服。要提升企 业竞争力,企业内部信息化是不可缺少的一个步骤。所以要实施先进的自动化系统, 实现企业内部信息管理、共享及交流,才能让企业在竞争激烈的 21世纪取得先机。仓 库管理系统就是对货物和信息以及金钱进行规划和实行流控制。它将入库、出库、库 存形成一个统一的整体,使企业处于全面受控状态,压缩投资规模,加快资金周转。 在实时反映的基础上,修正企业在日常生产经营过程中各个环节上的偏差,降低成品 成本和货物的积压。 本设计为一个基本的仓库管理系统 ,程序功能比较简单,贴近实际。系统对企业中 常见的出库、入库、库存管理等商业活动以及相关的供应商等基本信息都进行了有效 的管理。因而具有普遍的适用性 ,能够满足一般企业仓库的需要。 本系统是采用 My SQL 数据库管理软件和 MySQL 作为系统的开发平台,使用 JavaSwing图形化编程语言进行程序开发。

 

主要模块:

用户登录、注册、重置

原料管理:《原料进入、原料退料、原料库存、生产开单、生产退料、生产废料》

成品管理:《成品进入、成品库存、成品退货、成品返修、成品退货》

记录管理:《操作记录、废料记录、出货记录、原料记录、成品记录》

帮助中心:《帮助、关于、退出系统》

功能截图:

登录 

系统主页功能

系统管理:

进入系统管理页面、可以注册新用户、删除用户、以及数据整理查看

原料管理:

原料管理:包括原料进入、原料退料、原料库存、生产开单、生产退料、生产废料等数据录入和查看等

成品管理:

成品管理:包括成品进入、成品库存、成品退货、成品返修、成品退货的数据录入和查看操作等

 记录管理:

记录管理:包括 操作记录、废料记录、出货记录、原料记录、成品记录的数据查看操作

其他:

 

部分关键代码:

用户登录注册:

public class Logo implements ActionListener{
	public static final String logoon = "登录";
	public static final String helpt = "帮助";
	public static final String logooff ="退出";
	public static final String user = "用    户:";
	public static final String password = "密    码:";
	private javax.swing.JTextField userText;
	private javax.swing.JPasswordField userpwd;
	private javax.swing.JPanel jp = new javax.swing.JPanel(){
		public void paintComponent(Graphics g){
			super.paintComponent(g);
			if(!isOpaque()){return;}
			Graphics2D g2d = (Graphics2D) g;
			//int rule = AlphaComposite.SRC_OVER;
			AlphaComposite opaque = AlphaComposite.SrcOver;
			//AlphaComposite blend = AlphaComposite.getInstance(rule, 0.6f);
			//AlphaComposite set = AlphaComposite.Src;
			int width = getWidth();
			int height = getHeight();
			GradientPaint gradientPaint = new GradientPaint(0,0,java.awt.Color.green,width/2,height/2,java.awt.Color.yellow,false);
			g2d.setComposite(opaque);
			g2d.setPaint(gradientPaint);
			g2d.fillRect(0, 0, width,height);
			g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_OFF);
		}
	};
	private javax.swing.JButton logoin = null;
	private JFrame logo_Frame = new JFrame(logoon);
	/*public Logo() {
		// TODO 自动生成构造函数存根
	}
	*/
	public Logo(){
		try{
			UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
		}catch(Exception exe){System.err.print(exe.getMessage());}
		JFrame.setDefaultLookAndFeelDecorated(true);
		Toolkit tools = logo_Frame.getToolkit();
		Image logo = tools.getImage("res/logo.jpg");
		logo_Frame = new JFrame(logoon);
		logo_Frame.setIconImage(logo);
		
		
		jp.setLayout(new GridBagLayout());
		jp.setBackground(java.awt.Color.pink);
		javax.swing.ImageIcon pic = new javax.swing.ImageIcon("res/logo1.jpg");
		javax.swing.JLabel picture = new javax.swing.JLabel(pic);
		setupComponent(picture,0,0,GridBagConstraints.ABOVE_BASELINE_LEADING,1,true);
		javax.swing.JLabel users = new javax.swing.JLabel(user);
		setupComponent(users,0,1,1,1,false);
		javax.swing.JLabel pas = new javax.swing.JLabel(password);
		setupComponent(pas,0,2,1,1,false);
		userText = new javax.swing.JTextField(12);
		userText.requestFocus();
		userText.addKeyListener(new KeyListener(){
			public void keyTyped(KeyEvent e){}
			public void keyReleased(KeyEvent e){}
			public void keyPressed(KeyEvent e){
				if((e.getKeyChar() == KeyEvent.VK_ENTER )&&(userText.getText().trim() != "")){
					userpwd.requestFocus();
				}
			}
		});
		setupComponent(userText,1,1,1,1,false);
		userpwd = new javax.swing.JPasswordField(12);
		userpwd.addKeyListener(new KeyListener(){
			public void keyTyped(KeyEvent e){}
			public void keyPressed(KeyEvent e){
				if((e.getKeyChar() == KeyEvent.VK_ENTER) && (userpwd.getText().trim() != "")){
					logoin.requestFocus();
				}
				else{
					userpwd.requestFocus();
				}
			}
			public void keyReleased(KeyEvent e){
				
			}
		});
		setupComponent(userpwd,1,2,1,1,false);
		
		logoin = new javax.swing.JButton(logoon);
		logoin.addKeyListener(new KeyListener(){
			public void keyTyped(KeyEvent e){}
			public void keyReleased(KeyEvent e){}
			public void keyPressed(KeyEvent e){
				if((e.getKeyChar()==KeyEvent.VK_ENTER )){
					if(("".equals(userText.getText().trim())) ){
						javax.swing.JOptionPane.showMessageDialog(logo_Frame, "必须输入用户名!","输入用户名",JOptionPane.ERROR_MESSAGE);
						userText.requestFocus();
						return;
					}
					if(("".equals(userpwd.getText().trim()))){
						javax.swing.JOptionPane.showMessageDialog(logo_Frame, "必须输入密码!","输入密码",JOptionPane.ERROR_MESSAGE);
						userpwd.requestFocus();
						return;
					}
					boolean b = USeDB.logoon(userText.getText().trim(), userpwd.getText().trim());
					SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
					Date date = new Date(System.currentTimeMillis());
					String day = sdf.format(date);
					String s ="'"+day+"','"+userText.getText().trim()+"','"+"登录"+"'";
					String sql = "insert into handle_record values("+s+")";
					USeDB.UpdateDB(sql);
					if(b){
						logo_Frame.dispose();
						new My_MainFrame(userText.getText().trim());
					}
					userText.setText("");
					userpwd.setText("");
					userText.requestFocus();
				}
			}
		});
		logoin.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				System.out.println(userText.getText());
				if(("".equals(userText.getText().trim()))){
					javax.swing.JOptionPane.showMessageDialog(logo_Frame, "必须输入用户名!","输入用户名",JOptionPane.ERROR_MESSAGE);
					userText.requestFocus();
					return;
				}
				if(("".equals(userpwd.getText().trim()))){
					javax.swing.JOptionPane.showMessageDialog(logo_Frame, "必须输入密码!","输入密码",JOptionPane.ERROR_MESSAGE);
					userpwd.requestFocus();
					return;
				}
				if(userText.getText().trim()!=""&& userpwd.getText().trim()!=""){
				boolean b = USeDB.logoon(userText.getText().trim(), userpwd.getText().trim());
				SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
				Date date = new Date(System.currentTimeMillis());
				String day = sdf.format(date);
				String s ="'"+day+"','"+userText.getText().trim()+"','"+"登录"+"'";
				String sql = "insert into handle_record values("+s+")";
				USeDB.UpdateDB(sql);
				if(b==true){
					logo_Frame.dispose();
					new My_MainFrame(userText.getText().trim());
				}else{
					userText.setText("");
					userpwd.setText("");
					userText.requestFocus();
					javax.swing.JOptionPane.showMessageDialog(logo_Frame, "用户名或密码错误","错误提示",JOptionPane.ERROR_MESSAGE);
				}
			}
			}
		});
		setupComponent(logoin,0,3,1,1,true);
		
		javax.swing.JButton help = new javax.swing.JButton(helpt);
		
复制代码

DB连接 :

public class DBUtil{
private static String dbUrl="jdbc:mysql://localhost:3307/stock_manager2?characterEncoding=utf8"; // 数据库连接地址
	private static String dbUserName="root"; // 用户名,这里是你的mysql用户名,一般是root
	private static String dbPassword="crit@2019"; // 密码,mysql密码,密码为空的话不要写,我的是空,所以没写
	private static String jdbcName="com.mysql.jdbc.Driver"; // 驱动名称
	//private static String driver="sun.jdbc.odbc.JdbcOdbcDriver";//声明驱动类字符串
	//声明数据库连接字符串
	//private static String url="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=db/mydb.mdb";
	private static Connection con=null;//声明数据库连接对象引用
	private static Statement stat=null;//声明语句对象引用
	private static PreparedStatement psInsert=null;//声明预编译语句对象引用
	private static ResultSet rs=null;//声明结果集对象引用
	public DBUtil() {
		// TODO 自动生成构造函数存根}
	public static Connection getConnection(){//得到数据库连接的方法
		try{
			Class.forName(jdbcName);//加载驱动类
			con=DriverManager.getConnection(dbUrl,dbUserName,dbPassword);//得到连接
		}
		catch(Exception e){e.printStackTrace();}
		return con;//返回连接
	}
	public static void closeCon(){//关闭数据库连接的方法
		try{
			if(rs!=null){rs.close(); rs=null;}//如果结果集不为空关闭结果集并赋值null
			if(stat!=null){stat.close(); stat=null;}//如果语句对象不为空关闭语句对象并赋值null
			if(con!=null){con.close(); con=null;}//如果连接不为空关闭连接并赋值null				
		}
		catch(Exception e){e.printStackTrace();}
	}
	
}
复制代码

数据库设计:

用户表:

CREATE TABLE `NewTable` (
`user_id`  int(11) NOT NULL AUTO_INCREMENT ,
`user_name`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`password`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`u_text`  longtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL ,
PRIMARY KEY (`user_id`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
AUTO_INCREMENT=5
ROW_FORMAT=DYNAMIC
;
复制代码

原料录入表:

CREATE TABLE `NewTable` (
`product_ID`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
`product_client`  varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`product_name`  varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`product_spec`  varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`product_unit`  varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`product_value`  float NULL DEFAULT NULL ,
`product_make`  varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`stock_date`  datetime NULL DEFAULT NULL ,
`product_text`  longtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL ,
PRIMARY KEY (`product_ID`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
ROW_FORMAT=DYNAMIC
;
复制代码

出货记录表:

CREATE TABLE `NewTable` (
`scrap_id`  int(11) NOT NULL AUTO_INCREMENT ,
`user_name`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`handle_date`  datetime NULL DEFAULT NULL ,
`scrap_text`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
PRIMARY KEY (`scrap_id`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
AUTO_INCREMENT=3
ROW_FORMAT=DYNAMIC
;
复制代码

废料信息表:

CREATE TABLE `NewTable` (
`stuff_ID`  varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
`stuff_name`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`stuff_company`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`stuff_people`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`check_people`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`stuff_unit`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`stuff_value`  int(11) NULL DEFAULT NULL ,
`stuff_spec`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`stuff_color`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`stuff_place`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`stock_date`  datetime NULL DEFAULT NULL ,
`stuff_text`  longtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL ,
PRIMARY KEY (`stuff_ID`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
ROW_FORMAT=DYNAMIC
;
复制代码

总结: 

         通过这次课程设计。我学到了许多令我受益匪浅的知识。感觉java的界面设计和 mfc差不多。只是java没有可视化的界面做起来太累了。其他主要是类和对象的问题。实现起来还是挺简单的。使用一个拥有很高稳定性与安全性的数据库 mysql ,把 2 个软件联合起来,完成系统的设计与开发。也充分考虑了用户的需求,。操作者可以在任何时间在所有的信息查询,和每个模块提供了信息浏览功能。 本系统实现了在用户登录后可以进行系统管理、原料管理、成品管理、管理记录等操作、 因为本人在知识,经验不足,在发展过程中的时间较短,所以系统 会有一些缺陷和不足。在未来将更加努力完善这个系统、但是作为学生学习参考以及课程设计还是不错的选择。

 大家点赞、收藏、关注、评论啦 、