Java+Swing+Mysql实现超市管理系统
Posted 水坚石青
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java+Swing+Mysql实现超市管理系统相关的知识,希望对你有一定的参考价值。
一、系统介绍
1.开发环境
操作系统:Win10
开发工具 :IDEA2018
JDK版本:jdk1.8
数据库:mysql8.0
2.技术选型
Java+Swing+Mysql
3.功能模块
![](https://image.cha138.com/20230307/a1f763eec5694024be5cfef37601eb86.jpg)
4.系统功能
1.系统登录登出
管理员可以登录、退出系统
2.商品信息管理
管理员可以对商品信息进行查询、添加、修改、删除等操作。
3.出库信息管理
管理员可以对出库信息进行查询、添加、修改、删除等操作。
4.入库信息管理
管理员可以对入库信息进行查询、添加、修改、删除等操作。
5.客户信息管理
管理员可以对客户信息进行查询、添加、修改、删除等操作。
6.供应商信息管理
管理员可以对供应商信息进行查询、添加、修改、删除等操作。
5.工程结构
![](https://image.cha138.com/20230307/8a76c3b03ad34693824300649e21bcb8.jpg)
二、系统展示
1.登录页面
![](https://image.cha138.com/20230307/080c196269c0430890e31f1a66a31eed.jpg)
2.主页面
![](https://image.cha138.com/20230307/e6b746b68b374eea91b593b2d9e6da7d.jpg)
3.商品展示
![](https://image.cha138.com/20230307/c2ca9eee74034a14a6e4d340df050f8b.jpg)
4.商品新增
![](https://image.cha138.com/20230307/81d37f01d09c44a88527fa4e7b2c1f3f.jpg)
5.出库展示
![](https://image.cha138.com/20230307/74f372578a884a4a92729068e53d1d80.jpg)
6.出库新增
![](https://image.cha138.com/20230307/9126d23dba9547e4af1aee3bc8a99c68.jpg)
7.入库展示
![](https://image.cha138.com/20230307/271267aa3a864e5cab05c0e876a71965.jpg)
8.入库新增
![](https://image.cha138.com/20230307/44458d20c18e45d5abefe76895c0e7e6.jpg)
9.客户展示
![](https://image.cha138.com/20230307/fe56e64168ca4b91836352628aa8c2a4.jpg)
10.客户新增
![](https://image.cha138.com/20230307/6d9349ef0be94b23873ff46eb7345431.jpg)
11.供应商展示
![](https://image.cha138.com/20230307/89086c8bccef4e34b10b2f583e1d1d87.jpg)
12.供应商新增
![](https://image.cha138.com/20230307/d1930ef1679a4dc9b2b48a89c7f0245b.jpg)
13.关于我们
![](https://image.cha138.com/20230307/a57728707900412b826156d5b271b274.jpg)
三、部分代码
AdminDao
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
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
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
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
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.支持博主
如果您觉得此文对您有帮助,请点赞加关注加收藏。祝您生活愉快!
以上是关于Java+Swing+Mysql实现超市管理系统的主要内容,如果未能解决你的问题,请参考以下文章
IDEA+Java+SSM+JSP+Mysql实现超市订单系统
Java项目:超市进销存系统设计和实现(java+Springboot+ssm+mysql+jsp+maven)
Java项目:超市进销存系统设计和实现(java+Springboot+ssm+mysql+jsp+maven)