一、系统介绍
1.开发环境
操作系统:Win10
开发工具 :IDEA2018
JDK版本:jdk1.8
数据库:Mysql8.0
2.技术选型
Java+Swing+Mysql
3.功能模块
![](https://file.jishuzhan.net/article/1732202034406363138/6dee348a4b30e3c2808e0e3a83669117.webp)
4.系统功能
1.系统登录登出
管理员可以登录、退出系统
2.商品信息管理
管理员可以对商品信息进行查询、添加、修改、删除等操作。
3.出库信息管理
管理员可以对出库信息进行查询、添加、修改、删除等操作。
4.入库信息管理
管理员可以对入库信息进行查询、添加、修改、删除等操作。
5.客户信息管理
管理员可以对客户信息进行查询、添加、修改、删除等操作。
6.供应商信息管理
管理员可以对供应商信息进行查询、添加、修改、删除等操作。
5.工程结构
![](https://file.jishuzhan.net/article/1732202034406363138/11402e5575db6867cc81e2d6c25d91d0.webp)
二、系统展示
1.登录页面
![](https://file.jishuzhan.net/article/1732202034406363138/45bef6f0d28ba84a2f3bacf3ef613206.webp)
2.主页面
![](https://file.jishuzhan.net/article/1732202034406363138/d3a0b29f0b734893a8d34c232deb9ee4.webp)
3.商品展示
![](https://file.jishuzhan.net/article/1732202034406363138/a191df1bbb13cdc708375709c8ec1c25.webp)
4.商品新增
![](https://file.jishuzhan.net/article/1732202034406363138/f9fa6db43de4bab48a0385f4e1a4c13d.webp)
5.出库展示
![](https://file.jishuzhan.net/article/1732202034406363138/911e3c0d8322b1d154edc898534c3066.webp)
6.出库新增
![](https://file.jishuzhan.net/article/1732202034406363138/e1b3f4b0ac25f2ccedc514f5cc943e57.webp)
7.入库展示
![](https://file.jishuzhan.net/article/1732202034406363138/6701ce7d7d8990f24dc33cb156555a57.webp)
8.入库新增
![](https://file.jishuzhan.net/article/1732202034406363138/b8c07cb950a42a15b195d230effc62ed.webp)
9.客户展示
![](https://file.jishuzhan.net/article/1732202034406363138/92e1f5b406ecb3e2254f3dd3fa118088.webp)
10.客户新增
![](https://file.jishuzhan.net/article/1732202034406363138/5c7f1e3664969868c2d30f2583cdf2a9.webp)
11.供应商展示
![](https://file.jishuzhan.net/article/1732202034406363138/4578c94f2e6eb0d4f212b53f0b7af116.webp)
12.供应商新增
![](https://file.jishuzhan.net/article/1732202034406363138/263d1cd50916aebfc1eb4728cd698d68.webp)
13.关于我们
![](https://file.jishuzhan.net/article/1732202034406363138/5a6530a14729028c6283c51b4d73a354.webp)
三、部分代码
AdminDao
java
`package com.sjsq.dao;
import java.util.ArrayList;
import java.util.List;
import com.sjsq.model.Admin;
import com.sjsq.utils.DBUtil;
/**
* 管理员登录
*/
public class AdminDao {
/**
* 登录
*
* @param username
* @param password
* @return
* @throws Exception
*/
public boolean login(String username, String password) throws Exception {
List<Object> paramList = new ArrayList<>();
paramList.add(username);
paramList.add(password);
Admin admin = DBUtil.getObject("select * from t_admin where username=? and password=?", paramList, Admin.class);
if (admin != null) {
return true;
}
return false;
}
}`
CustomerDao
java
`package com.sjsq.dao;
import java.util.ArrayList;
import java.util.List;
import com.sjsq.model.Customer;
import com.sjsq.utils.DBUtil;
import com.sjsq.utils.StringUtil;
/**
* 客户信息操作
*/
public class CustomerDao {
/**
* 查询所有客户
*
* @return
* @throws Exception
*/
public List<Customer> getAll() throws Exception {
return DBUtil.getQueryList("select * from t_customer order by id asc", Customer.class);
}
/**
* 条件查询
*
* @param name
* @return
* @throws Exception
*/
public List<Customer> search(String name) throws Exception {
List<Object> paramList = new ArrayList<>();
StringBuffer sb = new StringBuffer("select * from t_customer where 1=1");
if (!StringUtil.isEmpty(name)) {
sb.append(" and name like ?");
paramList.add("%" + name + "%");
}
sb.append(" order by id asc");
return DBUtil.getQueryList(sb.toString(), paramList, Customer.class);
}
/**
* 保存客户信息
*
* @param customer
* @return
* @throws Exception
*/
public int save(Customer customer) throws Exception {
List<Object> paramList = new ArrayList<>();
paramList.add(customer.getName());
paramList.add(customer.getPhone());
paramList.add(customer.getAddress());
return DBUtil.execute("insert into t_customer(name,phone,address) values(?,?,?)", paramList);
}
/**
* 更新客户信息
*
* @param customer
* @return
* @throws Exception
*/
public int update(Customer customer) throws Exception {
List<Object> paramList = new ArrayList<>();
paramList.add(customer.getName());
paramList.add(customer.getPhone());
paramList.add(customer.getAddress());
paramList.add(customer.getId());
return DBUtil.execute("update t_customer set name=?,phone=?,address=? where id=?", paramList);
}
/**
* 根据id查询客户信息
*
* @param id
* @return
* @throws Exception
*/
public Customer getById(int id) throws Exception {
List<Object> paramList = new ArrayList<>();
paramList.add(id);
return DBUtil.getObject("select * from t_customer where id=?", paramList, Customer.class);
}
/**
* 删除
*
* @param id
* @return
* @throws Exception
*/
public int delete(int id) throws Exception {
List<Object> paramList = new ArrayList<>();
paramList.add(id);
return DBUtil.execute("delete from t_customer where id=?", paramList);
}
}`
StringUtil
java
`package com.sjsq.utils;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 字符串转化类
*/
public class StringUtil {
//数据库字段驼峰命名转换
private static Pattern linePattern = Pattern.compile("_(\\w)");
private static Pattern humpPattern = Pattern.compile("[A-Z]");
// 判断字符串为空
public static boolean isEmpty(String str) {
if ("".equals(str) || str == null) {
return true;
} else {
return false;
}
}
// 判断字符串不为空
public static boolean isNotEmpty(String str) {
if (!"".equals(str) && str != null) {
return true;
} else {
return false;
}
}
/**
* 下划线转驼峰
*/
public static String lineToHump(String str) {
str = str.toLowerCase();
Matcher matcher = linePattern.matcher(str);
StringBuffer sb = new StringBuffer();
while (matcher.find()) {
matcher.appendReplacement(sb, matcher.group(1).toUpperCase());
}
matcher.appendTail(sb);
return sb.toString();
}
/**
* 驼峰转下划线(单写法,效率低于{@link #humpToLine2(String)})
*/
public static String humpToLine(String str) {
return str.replaceAll("[A-Z]", "_$0").toLowerCase();
}
/**
* 驼峰转下划线,效率比上面高
*/
public static String humpToLine2(String str) {
Matcher matcher = humpPattern.matcher(str);
StringBuffer sb = new StringBuffer();
while (matcher.find()) {
matcher.appendReplacement(sb, "_" + matcher.group(0).toLowerCase());
}
matcher.appendTail(sb);
return sb.toString();
}
}`
LoginFrame
java
`package com.sjsq.view;
import com.sjsq.dao.AdminDao;
import com.sjsq.utils.StringUtil;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
* 登录系统
*/
public class LoginFrame extends JFrame {
private JPanel contentPane;
private JTextField unameText;
private JPasswordField pwdText;
private AdminDao userDao = new AdminDao();
/**
* 主函数
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
LoginFrame frame = new LoginFrame();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* 创建窗体
*/
public LoginFrame() {
setTitle("超市商品信息管理系统");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
setLocationRelativeTo(null);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JLabel lblNewLabel = new JLabel("系统登录");
lblNewLabel.setFont(new Font("宋体", Font.PLAIN, 25));
lblNewLabel.setBounds(177, 32, 108, 25);
contentPane.add(lblNewLabel);
JLabel lblNewLabel_1 = new JLabel("账号:");
lblNewLabel_1.setBounds(98, 89, 54, 15);
contentPane.add(lblNewLabel_1);
JLabel lblNewLabel_2 = new JLabel("密码:");
lblNewLabel_2.setBounds(98, 152, 54, 15);
contentPane.add(lblNewLabel_2);
unameText = new JTextField();
unameText.setBounds(148, 86, 166, 21);
contentPane.add(unameText);
unameText.setColumns(10);
pwdText = new JPasswordField();
pwdText.setBounds(148, 149, 166, 21);
contentPane.add(pwdText);
JButton btnNewButton = new JButton("登录");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String username = unameText.getText();
String password = pwdText.getText();
if (StringUtil.isEmpty(username)) {
JOptionPane.showMessageDialog(contentPane, "请输入账号", "系统提示", JOptionPane.WARNING_MESSAGE);
return;
}
if (StringUtil.isEmpty(password)) {
JOptionPane.showMessageDialog(contentPane, "请输入密码", "系统提示", JOptionPane.WARNING_MESSAGE);
return;
}
try {
// 登录账号验证
boolean flag = userDao.login(username, password);
if (flag) {
//跳转主界面
JOptionPane.showMessageDialog(contentPane, "登录成功!");
MainFrame main = new MainFrame();
main.setVisible(true);
// 释放所有本机屏幕资源
dispose();
} else {
JOptionPane.showMessageDialog(contentPane, "用户名密码错误!", "系统提示", JOptionPane.WARNING_MESSAGE);
return;
}
} catch (Exception e1) {
e1.printStackTrace();
JOptionPane.showMessageDialog(contentPane, "登录异常:" + e1.getMessage(), "系统提示", JOptionPane.WARNING_MESSAGE);
return;
}
}
});
btnNewButton.setBounds(146, 202, 76, 23);
contentPane.add(btnNewButton);
JButton btnNewButton_1 = new JButton("退出");
btnNewButton_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
dispose();
}
});
btnNewButton_1.setBounds(237, 202, 76, 23);
contentPane.add(btnNewButton_1);
}
}`
CustomerAddFrame
java
`package com.sjsq.view;
import com.sjsq.dao.CustomerDao;
import com.sjsq.model.Customer;
import com.sjsq.utils.StringUtil;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
* 新增客户信息类
*/
public class CustomerAddFrame extends JFrame {
// 定义内容面板
private JPanel contentPane;
// 定义姓名文本
private JTextField nameText;
private JTextField phoneText;
private JTextField addressText;
private CustomerDao customerDao = new CustomerDao();
/**
* Create the frame.
*/
public CustomerAddFrame() {
setTitle("新增客户信息");
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setBounds(100, 100, 353, 351);
setLocationRelativeTo(null);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JLabel lblNewLabel = new JLabel("客户名称:");
lblNewLabel.setBounds(29, 34, 92, 15);
contentPane.add(lblNewLabel);
// 创建空白文本
nameText = new JTextField();
// 设置位置大小
nameText.setBounds(113, 31, 182, 21);
// 添加到面板
contentPane.add(nameText);
// 设置内容宽度
nameText.setColumns(15);
JLabel lblNewLabel_1 = new JLabel("联系电话:");
lblNewLabel_1.setBounds(29, 84, 92, 15);
contentPane.add(lblNewLabel_1);
phoneText = new JTextField();
phoneText.setBounds(113, 81, 182, 21);
contentPane.add(phoneText);
phoneText.setColumns(10);
JLabel lblNewLabel_5 = new JLabel("客户地址:");
lblNewLabel_5.setBounds(29, 148, 91, 15);
contentPane.add(lblNewLabel_5);
addressText = new JTextField();
addressText.setBounds(113, 145, 182, 21);
contentPane.add(addressText);
addressText.setColumns(10);
JButton btnNewButton = new JButton("保存");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 获取输入的信息
String name = nameText.getText();
String phone = phoneText.getText();
String address = addressText.getText();
// 判断输入为空,弹出相应提示
if (StringUtil.isEmpty(name)) {
JOptionPane.showMessageDialog(contentPane, "请输入客户名称", "系统提示", JOptionPane.WARNING_MESSAGE);
return;
}
if (StringUtil.isEmpty(phone)) {
JOptionPane.showMessageDialog(contentPane, "请输入联系电话", "系统提示", JOptionPane.WARNING_MESSAGE);
return;
}
if (StringUtil.isEmpty(address)) {
JOptionPane.showMessageDialog(contentPane, "请输入客户地址", "系统提示", JOptionPane.WARNING_MESSAGE);
return;
}
// 创建对象
Customer customer = new Customer();
// 保存信息到对象中
customer.setName(name);
customer.setPhone(phone);
customer.setAddress(address);
try {
// 新增信息
customerDao.save(customer);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
JOptionPane.showMessageDialog(contentPane, "保存异常:" + e1.getMessage(), "系统提示", JOptionPane.WARNING_MESSAGE);
return;
}
JOptionPane.showMessageDialog(contentPane, "保存成功!");
dispose();
}
});
btnNewButton.setBounds(113, 215, 74, 23);
contentPane.add(btnNewButton);
JButton btnNewButton_1 = new JButton("取消");
btnNewButton_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
dispose();
}
});
btnNewButton_1.setBounds(220, 215, 74, 23);
contentPane.add(btnNewButton_1);
}
}`
四、其他
1.更多系统
Java+Swing系统系列实现
Java+JSP系统系列实现
Java+Servlet系统系列实现
Java+SSM系统系列实现
Java+SSH系统系列实现
Java+Springboot系统系列实现
Java+Springboot+H-ui+Maven实现营销管理系统
Java+Springboot+Bootstrap+Maven实现网上商城系统
Java+Springboot+Bootstrap+Maven实现景区旅游管理系统
1.更多JavaWeb系统请关注专栏。
https://blog.csdn.net/helongqiang/category_10020130.html
2.更多JavaSwing系统请关注专栏。
https://blog.csdn.net/helongqiang/category_6229101.html
2.源码下载
sql在sql文件夹下面
系统账号信息如下,此处是管理员权限
账号:admin 密码:admin
3.运行项目
关注B站:水坚石青
后期有更多干货视频推出!!!
4.备注
如有侵权请联系我删除。
5.支持博主
如果您觉得此文对您有帮助,请点赞加关注加收藏。祝您生活愉快!