Eclipse+Java+Swing+Mysql实现仓库管理系统
Posted 水坚石青
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Eclipse+Java+Swing+Mysql实现仓库管理系统相关的知识,希望对你有一定的参考价值。
目录
一、系统介绍
1.软件环境
开发工具:Eclipse2018.3
JDK版本:jdk1.8
mysql版本:8.0.13
2.系统功能
1.用户
1.登录系统
2.用户管理
查看个人信息,修改密码。
3.商品管理
查看商品信息
4.仓库管理
查看仓库信息
2.管理员
1.登录系统
2.用户管理
查看个人信息,用户信息的增删查,修改密码。
3.商品管理
商品信息的增删改查
4.仓库管理
仓库信息的增删改查
3.数据库
/*
Navicat Premium Data Transfer
Source Server : MySQL
Source Server Type : MySQL
Source Server Version : 80013
Source Host : localhost:3306
Source Schema : swing_warehouse
Target Server Type : MySQL
Target Server Version : 80013
File Encoding : 65001
Date: 26/06/2021 16:42:23
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for goods
-- ----------------------------
DROP TABLE IF EXISTS `goods`;
CREATE TABLE `goods` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`goodsname` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`goodsstyle` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`goodsnumber` int(11) NOT NULL,
`storageID` int(11) NOT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of goods
-- ----------------------------
INSERT INTO `goods` VALUES (1, '农夫山泉', '矿泉水', 10, 1);
INSERT INTO `goods` VALUES (4, '冰峰', '饮料', 50, 1);
INSERT INTO `goods` VALUES (6, '百事可乐', '饮料', 20, 2);
-- ----------------------------
-- Table structure for storage
-- ----------------------------
DROP TABLE IF EXISTS `storage`;
CREATE TABLE `storage` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`storagename` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`storagestyle` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`storageID` int(11) NOT NULL,
PRIMARY KEY (`id`, `storageID`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of storage
-- ----------------------------
INSERT INTO `storage` VALUES (1, '日常用品', '存货', 1);
INSERT INTO `storage` VALUES (2, '饮品副食', '存货', 3);
INSERT INTO `storage` VALUES (3, '电子电器', '出货', 2);
-- ----------------------------
-- Table structure for users
-- ----------------------------
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`userpwd` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`flag` int(11) NOT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of users
-- ----------------------------
INSERT INTO `users` VALUES (1, 'admin', 'admin', 2);
INSERT INTO `users` VALUES (2, 'user', '123456', 1);
SET FOREIGN_KEY_CHECKS = 1;
4.工程截图
二、系统展示
1.用户-登录页
2.用户-登录成功
3.用户-主页面
4.用户-用户管理-个人信息
5.用户-用户管理-修改密码
6.用户-商品管理-商品信息
7.用户-仓库管理-仓库信息
8.管理员-登录页
9.管理员-主页面
10.管理员-用户管理-添加用户
11.管理员-用户管理-用户信息
12.管理员-用户管理-用户删除
13.管理员-用户管理-修改密码
14.管理员-商品管理-商品添加
15.管理员-商品管理-商品删除
16.管理员-商品管理-商品更新
17.管理员-仓库管理-仓库添加
18.管理员-仓库管理-仓库删除
19.管理员-仓库管理-仓库更新
三、部分代码
LoginFrame.java
package net.wms.view;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JFrame;
import java.awt.Image;
import java.awt.Toolkit;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import net.wms.dao.LoginUseImp;
import net.wms.model.User;
/**
* 登陆界面 1、创建登陆界面,初始化上面的对象 2、美化登陆界面,设置各个对象的大小、位置、字体以及界面的背景 3、给按钮设置监听事件
*
*/
public class LoginFrame {
// 初始化字体
Font d = new Font("楷体", Font.BOLD, 36);
Font f = new Font("楷体", Font.BOLD, 18);
// 初始化对象
JFrame logingui = new JFrame("仓库管理系统");
JLabel userlogin = new JLabel("用户登录");
JLabel username = new JLabel("用户名:");
JLabel password = new JLabel("密 码:");
JLabel usertyle = new JLabel("用户类型:");
JTextField name = new JTextField();
JTextField pwd = new JPasswordField();
JComboBox box = new JComboBox(new String[] { "管理员", "普通用户" });
JButton login = new JButton("登陆");
// Image icon = Toolkit.getDefaultToolkit().getImage("F:\\\\仓库管理系统\\\\后台.jpg");
// 给User类初始化对象user
User user = new User();
public void LoginGui() {
// 后台运行时图标
// logingui.setIconImage(icon);
// 设置对象
logingui.setBounds(600, 300, 600, 420);
// 设置退出
logingui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 取消框架格式
logingui.setLayout(null);
// 设置位置、大小和字体
userlogin.setBounds(220, 30, 200, 50);
userlogin.setFont(d);
username.setBounds(180, 100, 100, 30);
username.setFont(f);
password.setBounds(180, 140, 100, 30);
password.setFont(f);
usertyle.setBounds(180, 180, 100, 30);
usertyle.setFont(f);
name.setBounds(280, 100, 180, 30);
name.setFont(f);
pwd.setBounds(280, 140, 180, 30);
box.setBounds(280, 180, 125, 30);
box.setFont(f);
login.setBounds(235, 260, 80, 30);
login.setFont(f);
// 添加对象
logingui.add(userlogin);
logingui.add(username);
logingui.add(password);
logingui.add(usertyle);
logingui.add(name);
logingui.add(pwd);
logingui.add(box);
logingui.add(login);
// 窗体可视化
logingui.setVisible(true);
// 居中显示
logingui.setLocationRelativeTo(null);
// 设置登录图形界面的背景图片
((JComponent) logingui.getContentPane()).setOpaque(false); // 将框架强转为容器
// ImageIcon img = new ImageIcon("Images//登录背景.jpg"); // 传入背景图片路径
// JLabel background = new JLabel(img);// 将图片放进标签里
// logingui.getLayeredPane().add(background, new Integer(Integer.MIN_VALUE));//
// 将标签放进容器里
// background.setBounds(0, 0, img.getIconWidth(), img.getIconHeight());//
// 设置标签的大小
// 给下拉框设置选择监听事件
box.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 判断选择选项是否和下拉框数据一致
if (box.getSelectedItem().equals("管理员")) {
// 设置标志量的值
user.setFlag("2");
} else {
user.setFlag("1");
}
}
});
// 给登录按钮设置监听事件
login.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 提取文本框里的用户名和密码
String name_text = name.getText();
String pwd_text = pwd.getText();
// 将得到的值存入user对象里面
user.setusername(name_text);
user.setuserpwd(pwd_text);
// 给登陆接口实现类初始化对象
LoginUseImp l = new LoginUseImp();
// 获取标志量
String state = user.getFlag();
// 判断标志量,设置文本框的默认值为管理员
if (state != "1" && state != "2") {
state = "2";
}
// 判断文本框值是不是管理员
if (state == "2") {
try {
// 执行sql语句,进行数据库添加
boolean flag = l.Query(user,
"select * from users where username=? and userpwd=? and flag=" + state);
if (flag) {
// 文本提示框
JOptionPane.showMessageDialog(null, "登陆成功");
// 界面转换,隐藏原来界面
logingui.setVisible(false);
// 构造新的界面
new IndexAdminFrame(name_text);
} else {
// 文本提示框
JOptionPane.showMessageDialog(null, "登陆失败,请检查用户名和密码");
// 设置用户名框和密码框的值为空
name.setText("");
pwd.setText("");
}
} catch (SQLException e1) {
e1.printStackTrace();
}
// 判断是不是普通用户
} else if (state == "1") {
try {
// 执行sql语句
boolean flag = l.Query(user,
"select * from users where username=? and userpwd=? and flag=" + state);
if (flag) {
JOptionPane.showMessageDialog(null, "登陆成功");
logingui.setVisible(false);
new IndexUserFrame(name_text);
} else {
JOptionPane.showMessageDialog(null, "登陆失败,请检查用户名和密码");
name.setText("");
pwd.setText("");
}
} catch (SQLException e1) {
e1.printStackTrace();
}
}
}
});
}
// 整个程序执行的入口
public static void main(String[] args) {
LoginFrame l = new LoginFrame();
l.LoginGui();
}
}
IndexAdminFrame.java
package net.wms.view;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
import javax.swing.ImageIcon;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
public class IndexAdminFrame {
// 声明对象
public JFrame index;
private JMenuBar management;
private JMenu user;
private JMenu goods;
private JMenu storage;
private JMenuItem exit;
private JMenuItem useradd;
private JMenuItem userdelete;
private JMenuItem userupdate;
private JMenuItem userselect;
private JMenuItem goodsadd;
private JMenuItem goodsdelete;
private JMenuItem goodsupdate;
private JMenuItem storageadd;
private JMenuItem storagedelete;
private JMenuItem storageupdate;
Font f = new Font("楷体", Font.BOLD, 15);
// 构造函数
public IndexAdminFrame(String name) {
indexadmin();
// 菜单的添加
// 给用户菜单添加条目
user.add(useradd);
user.add(userselect);
user.add(userdelete);
user.add(userupdate);
user.add(exit);
// 给商品菜单添加条目
goods.add(goodsadd);
goods.add(goodsdelete);
goods.add(goodsupdate);
// 给仓库菜单添加条目
storage.add(storageadd);
storage.add(storagedelete);
storage.add(storageupdate);
// 将菜单添加到菜单栏里
management.add(user);
management.add(goods);
management.add(storage);
init(name);
action(name);
}
private void init(String name) {
// 初始化框架
index = new JFrame("欢迎管理员 " + name + " 使用本系统");
// 设置框架大小及位置
index.setBounds(500, 100, 600, 500);
index.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 将菜单栏设置进框架
index.setJMenuBar(management);
// 清空框架格式
index.setLayout(null);
// 将框架转换为容器
((JComponent) index.getContentPane()).setOpaque(false);
// // 声明图片对象
// ImageIcon img = null;
// // 产生随机数
// Random r = new Random();
// int i = r.nextInt(5);
// 用随机数的值获取不同的图片
// switch (i) {
// case 0:
// img = new ImageIcon("Images//主背景.jpg");
// break;
// case 1:
// img = new ImageIcon("Images//主背景1.jpg");
// break;
// case 2:
// img = new ImageIcon("Images//主背景2.jpg");
// break;
// case 3:
// img = new ImageIcon("Images//主背景3.jpg");
// break;
// case 4:
// img = new ImageIcon("Images//主背景4.jpg");
// break;
// default:
// break;
// }
// 初始化标签
// JLabel background = new JLabel(img);
// // 将标签添加进框架index(添加进容器中)
// index.getLayeredPane().add(background, new Integer(Integer.MIN_VALUE));
// // 设置标签大小
// background.setBounds(0, 20, img.getIconWidth(), img.getIconHeight());
// // 设置可视化
index.setVisible(true);
// 居中显示
index.setLocationRelativeTo(null);
}
public void indexadmin() {
// 对象初始化以及设置字体
management = new JMenuBar();
// 菜单初始化
user = new JMenu(" 用户管理");
user.setFont(f);
goods = new JMenu(" 商品管理");
goods.setFont(f);
storage = new JMenu(" 仓库管理");
storage.setFont(f);
// 菜单条目初始化
exit = new JMenuItem("更换用户");
exit.setFont(f);
useradd = new JMenuItem("添加用户");
useradd.setFont(f);
userdelete = new JMenuItem("删除用户");
userdelete.setFont(f);
userupdate = new JMenuItem("密码修改");
userupdate.setFont(f);
userselect = new JMenuItem("查询用户");
userselect.setFont(f);
goodsadd = new JMenuItem("商品添加");
goodsadd.setFont(f);
goodsdelete = new JMenuItem("商品删除");
goodsdelete.setFont(f);
goodsupdate = new JMenuItem("商品更新");
goodsupdate.setFont(f);
storageadd = new JMenuItem("仓库添加");
storageadd.setFont(f);
storagedelete = new JMenuItem("仓库删除");
storagedelete.setFont(f);
storageupdate = new JMenuItem("仓库更新");
storageupdate.setFont(f);
}
// 给所有的菜单条目设置监听事件
private void action(final String name) {
exit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 界面转换
// 将原来页面设置为不可见
index.setVisible(false);
// 调用函数转到登陆页面
LoginFrame.main(null);
}
});
useradd.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 界面转换
// 将原来页面设置为不可见
index.setVisible(false);
// 用构造函数获取新页面
new UserAddFrame(name);
}
});
userselect.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 界面转换
index.setVisible(false);
new UserSelectFrame(name);
}
});
userdelete.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 界面转换
index.setVisible(false);
new UserDeleteFrame(name);
}
});
userupdate.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 界面转换
index.setVisible(false);
new AdminUpdateFrame(name);
}
});
goodsadd.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 界面转换
index.setVisible(false);
new GoodsAddFrame(name);
}
});
goodsdelete.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 界面转换
index.setVisible(false);
new GoodsDeleteFrame(name);
}
});
goodsupdate.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 界面转换
index.setVisible(false);
new GoodsUpdateFrame(name);
}
});
storageadd.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 界面转换
index.setVisible(false);
new StorageAddFrame(name);
}
});
storagedelete.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 界面转换
index.setVisible(false);
new StorageDeleteFrame(name);
}
});
storageupdate.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 界面转换
index.setVisible(false);
new StorageUpdateFrame(name);
}
});
}
}
IndexUserFrame.java
package net.wms.view;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
import javax.swing.ImageIcon;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
public class IndexUserFrame {
// 声明对象
public JFrame index;
private JMenuBar management;
private JMenu user;
private JMenu goods;
private JMenu storage;
private JMenuItem exit;
private JMenuItem usernews;
private JMenuItem userupdate;
private JMenuItem goodsselect;
private JMenuItem storageselect;
// 创建构造函数
public IndexUserFrame(String name) {
indexadmin();
// 添加对象
user.add(usernews);
user.add(userupdate);
user.add(exit);
goods.add(goodsselect);
storage.add(storageselect);
management.add(user);
management.add(goods);
management.add(storage);
init(name);
action(name);
}
private void init(String name) {
// 初始化矿建index
index = new JFrame("欢迎用户 " + name + " 使用本系统");
// 设置框架大小和位置
index.setBounds(500, 100, 600, 500);
index.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 将菜单栏设置进框架
index.setJMenuBar(management);
index.setLayout(null);
// 设置随机背景
((JComponent) index.getContentPane()).setOpaque(false);
// ImageIcon img = null;
// Random r = new Random();
// int i = r.nextInt(5);
// switch (i) {
// case 0:
// img = new ImageIcon("Images//主背景.jpg");
// break;
// case 1:
// img = new ImageIcon("Images//主背景1.jpg");
// break;
// case 2:
// img = new ImageIcon("Images//主背景2.jpg");
// break;
// case 3:
// img = new ImageIcon("Images//主背景3.jpg");
// break;
// case 4:
// img = new ImageIcon("Images//主背景4.jpg");
// break;
// default:
// break;
// }
// JLabel background = new JLabel(img);
// index.getLayeredPane().add(background, new Integer(Integer.MIN_VALUE));
// background.setBounds(0, 20, img.getIconWidth(), img.getIconHeight());
index.setVisible(true);
// 居中显示
index.setLocationRelativeTo(null);
}
public void indexadmin() {
// 初始化对象
Font f = new Font("楷体", Font.BOLD, 15);
management = new JMenuBar();
user = new JMenu(" 用户管理");
user.setFont(f);
goods = new JMenu(" 商品管理");
goods.setFont(f);
storage = new JMenu(" 仓库管理");
storage.setFont(f);
exit = new JMenuItem("更换用户");
exit.setFont(f);
usernews = new JMenuItem("个人信息");
usernews.setFont(f);
userupdate = new JMenuItem("密码修改");
userupdate.setFont(f);
goodsselect = new JMenuItem("商品浏览");
goodsselect.setFont(f);
storageselect = new JMenuItem("仓库浏览");
storageselect.setFont(f);
}
// 为所有的菜单条目设置监听事件
private void action(final String name) {
exit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 界面转换
index.setVisible(false);
LoginFrame.main(null);
}
});
usernews.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 界面转换
index.setVisible(false);
new UserNewsFrame(name);
}
});
userupdate.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 界面转换
index.setVisible(false);
new UserUpdateFrame(name);
}
});
goodsselect.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 界面转换
index.setVisible(false);
new GoodsSelectFrame(name);
}
});
storageselect.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 界面转换
index.setVisible(false);
new StorageSelectFrame(name);
}
});
}
}
Goodsmanagement.java
package net.wms.dao;
import java.sql.SQLException;
import net.wms.model.Goods;
public interface Goodsmanagement {
// 查询
public void Query(String sql) throws SQLException;
// 增加
public void Add(Goods goods, String sql) throws SQLException;
// 删除
public void Delete(String sql) throws SQLException;
// 修改
public void Update(Goods goods, String sql) throws SQLException;
}
GoodsmanagementImp.java
package net.wms.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;
import net.wms.model.Goods;
import net.wms.util.DBUtil;
public class GoodsmanagementImp implements Goodsmanagement {
public static Vector vec = new Vector();
// 获取数据库连接
Connection conn = DBUtil.getConnection();
// 查询方法
public void Query(String sql) throws SQLException {
// TODO Auto-generated method stub
// 加载SQL语句
PreparedStatement pra = conn.prepareStatement(sql);
// 放入结果集
ResultSet rs = pra.executeQuery();
vec.removeAllElements();
while (rs.next()) {
Vector v = new Vector();
v.add(rs.getInt("id"));
v.add(rs.getString("goodsname"));
v.add(rs.getString("goodsstyle"));
v.add(rs.getInt("goodsnumber"));
v.add(rs.getInt("storageID"));
vec.add(v);
}
}
public boolean Query1(Goods goods, String sql) throws SQLException {
// TODO Auto-generated method stub
// 加载SQL语句
PreparedStatement pra = conn.prepareStatement(sql);
// 放入结果集
ResultSet rs = pra.executeQuery();
// 遍历结果集
return false;
}
public void Add(Goods goods, String sql) throws SQLException {
// TODO Auto-generated method stub
PreparedStatement pra = conn.prepareStatement(sql);
pra.setString(1, goods.getGoodsname());
pra.setString(2, goods.getGoodsstyle());
pra.setInt(3, goods.getGoodsnumber());
pra.setString(4, goods.getStorageID());
pra.executeUpdate();
pra.close();
}
public void Delete(String sql) throws SQLException {
// TODO Auto-generated method stub
PreparedStatement pra = conn.prepareStatement(sql);
pra.executeUpdate();
pra.close();
}
public void Update(Goods goods, String sql) throws SQLException {
// TODO Auto-generated method stub
PreparedStatement pra = conn.prepareStatement(sql);
pra.setString(1, goods.getGoodsname());
pra.setString(2, goods.getGoodsstyle());
pra.setInt(3, goods.getGoodsnumber());
pra.setString(4, goods.getStorageID());
pra.executeUpdate();
pra.close();
}
}
四、其他
1.其他系统实现
1.JavaWeb系统系列实现
Java+Springboot+Mybatis+Bootstrap+Maven实现网上商城系统
2.JavaSwing系统系列实现
2.获取源码
点击以下链接获取源码,数据库文件在sql文件下面。
3.运行项目
请点击以下链接,部署你的项目。
4.备注
如有侵权请联系我删除。
5.支持博主
如果您觉得此文对您有帮助,请点赞加关注,祝您生活愉快!
以上是关于Eclipse+Java+Swing+Mysql实现仓库管理系统的主要内容,如果未能解决你的问题,请参考以下文章
Eclipse+Java+Swing+Mysql实现超市管理系统
Eclipse+Java+Swing+Mysql实现酒店管理系统
Eclipse+Java+Swing+Mysql实现学生信息管理系统
Eclipse+Java+Swing+Mysql实现进销存管理系统建议收藏