当前位置 博文首页 > java李阳勇的博客:基于JavaSwing+Mysql的仓库管理系统设计和实

    java李阳勇的博客:基于JavaSwing+Mysql的仓库管理系统设计和实

    作者:[db:作者] 时间:2021-08-20 15:47

    前言:

    ? ? ? ? ? 本项目是使用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 个软件联合起来,完成系统的设计与开发。也充分考虑了用户的需求,。操作者可以在任何时间在所有的信息查询,和每个模块提供了信息浏览功能。 本系统实现了在用户登录后可以进行系统管理、原料管理、成品管理、管理记录等操作、?因为本人在知识,经验不足,在发展过程中的时间较短,所以系统 会有一些缺陷和不足。在未来将更加努力完善这个系统、但是作为学生学习参考以及课程设计还是不错的选择。

    完整源码下载地址

    JavaSwing系列项目推荐:

    JavaSwing ATM取款机系统的设计和实现

    JavaSwing的经典坦克大战游戏设计实现

    JavaSwing+mysql的图书管理系统设计和实现

    JavaSwing+Mysql的酒店管理系统设计和实现

    JavaSwing+Mysql的餐厅点餐系统设计和实现

    JavaSwing+Mysql的超市商品管理系统设计和实现

    javaSwing+文本存储的学生信息管理系统设计实现

    JavaSwing+mysql的学生社团管理系统设计和实现

    打卡JavaSwing项目更新?9?/ 100篇

    大家可以点赞收藏关注评论我啦?

    cs