既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
查看个人信息,修改密码。
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 + " 使用本系统");
![img](https://img-blog.csdnimg.cn/img_convert/4cee1a2ff77d77b55e31a7292716aec5.png)
![img](https://img-blog.csdnimg.cn/img_convert/bb3b1a3ec4dc429555d677b652d2134c.png)
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化的资料的朋友,可以添加戳这里获取](https://bbs.csdn.net/topics/618668825)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
em 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 + " 使用本系统");
[外链图片转存中...(img-zSdPoQy6-1715744714994)]
[外链图片转存中...(img-Rkg8TaOa-1715744714995)]
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化的资料的朋友,可以添加戳这里获取](https://bbs.csdn.net/topics/618668825)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**