Java+Swing+Mysql实现超市管理系统

一、系统介绍

1.开发环境

操作系统:Win10

开发工具 :IDEA2018

JDK版本:jdk1.8

数据库:Mysql8.0

2.技术选型

Java+Swing+Mysql

3.功能模块

4.系统功能

1.系统登录登出

管理员可以登录、退出系统

2.商品信息管理

管理员可以对商品信息进行查询、添加、修改、删除等操作。

3.出库信息管理

管理员可以对出库信息进行查询、添加、修改、删除等操作。

4.入库信息管理

管理员可以对入库信息进行查询、添加、修改、删除等操作。

5.客户信息管理

管理员可以对客户信息进行查询、添加、修改、删除等操作。

6.供应商信息管理

管理员可以对供应商信息进行查询、添加、修改、删除等操作。

5.工程结构

二、系统展示

1.登录页面

2.主页面

3.商品展示

4.商品新增

5.出库展示

6.出库新增

7.入库展示

8.入库新增

9.客户展示

10.客户新增

11.供应商展示

12.供应商新增

13.关于我们

三、部分代码

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 blocke1.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+Swing实现斗地主游戏

Java+Swing实现图书管理系统

Java+Swing实现医院管理系统

Java+Swing实现考试管理系统

Java+Swing实现酒店管理系统

Java+Swing实现超市管理系统

Java+Swing实现电影购票系统

Java+Swing实现仓库管理系统-1

Java+Swing实现仓库管理系统-2

Java+Swing实现进销存管理系统

Java+Swing实现自助取款机系统

Java+Swing实现通讯录管理系统

Java+Swing实现停车场管理系统

Java+Swing实现学生信息管理系统-1

Java+Swing实现学生信息管理系统-2

Java+Swing实现学生宿舍管理系统

Java+Swing实现学生选课管理系统

Java+Swing实现学生成绩管理系统

Java+Swing实现学校教材管理系统

Java+Swing实现学校教务管理系统

Java+Swing实现企业人事管理系统

Java+Swing实现电子相册管理系统

Java+Swing实现超市管理系统-TXT存储数据

Java+Swing实现自助取款机系统-TXT存储数据

Java+Swing实现宠物商店管理系统-TXT存储数据

Java+JSP系统系列实现

Java+JSP实现学生图书管理系统

Java+JSP实现学生信息管理系统

Java+JSP实现用户信息管理系统

Java+JSP实现教师信息管理系统

Java+JSP实现学生宿舍管理系统

Java+JSP实现商品信息管理系统

Java+JSP实现宠物信息管理系统

Java+JSP实现学生成绩管理系统

Java+Servlet系统系列实现

Java+Servlet+JSP实现航空订票系统

Java+Servlet+JSP实现新闻发布系统

Java+Servlet+JSP学生宿舍管理系统

Java+Servlet+JSP实现图书管理系统

Java+Servlet+JSP实现停车场管理系统

Java+Servlet+JSP实现房屋租赁管理系统

Java+Servlet+JSP实现学生信息管理系统

Java+Servlet+JSP实现学生选课管理系统

Java+Servlet+JSPl实现学生选课签到系统

Java+Servlet+JSP实现宠物诊所管理系统

Java+Servlet+JSP实现学生成绩管理系统-1

Java+Servlet+JSP实现学生成绩管理系统-2

Java+SSM系统系列实现

Java+SSM+JSP实现网上考试系统

Java+SSM+JSP实现宠物商城系统

Java+SSM+JSP实现超市管理系统

Java+SSM+JSP实现学生成绩管理系统

Java+SSM+JSP实现学生信息管理系统

Java+SSM+JSP实现药品信息管理系统

Java+SSM+JSP实现汽车信息管理系统

Java+SSM+Jspl实现商品信息管理系统

Java+SSM+JSP+Maven实现网上书城系统

Java+SSM+JSP+Maven实现学校教务管理系统

Java+SSH系统系列实现

Java+SSH+JSP实现在线考试系统

Java+SSH+JSP实现医院在线挂号系统

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

下载地址:Java+Swing+Mysql实现超市管理系统

3.运行项目

关注B站:水坚石青

后期有更多干货视频推出!!!

Eclipse如何导入JavaSwing项目超详细教程

4.备注

如有侵权请联系我删除。

5.支持博主

如果您觉得此文对您有帮助,请点赞加关注加收藏。祝您生活愉快!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/210959.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

超完整的mysql安装配置方法(包含idea和navicat连接mysql,并实现建表)

mysql安装配置方法 1、下载mysql2、解压到指定的安装目录3、配置初始化文件my.ini4、配置用户变量和系统变量5、初始化mysql6、安装mysql服务并启动修改密码7、使用idea连接mysql8、使用Navicat可视化工具连接mysql&#xff0c;并实现新建数据库&#xff0c;新建表 1、下载mysq…

C语言-详解指针

目录 一.内存 1.内存的定义 2.内存的结构图 二.地址 1.什么是地址 2.什么是变量的地址 三.什么是指针 1.指针的定义 四.如何获取数据存储空间的地址 1.&运算符 五.指针变量 1.什么是指针变量&#xff08;一级指针变量&#xff09; 2.指针变量的定义 3…

<JavaEE> 什么是线程安全?产生线程不安全的原因和处理方式

目录 一、线程安全的概念 二、线程不安全经典示例 三、线程不安全的原因和处理方式 3.1 线程的随机调度和抢占式执行 3.2 修改共享数据 3.3 关键代码或指令不是“原子”的 3.4 内存可见性和指令重排序 四、Java标准库自带的线程安全类 一、线程安全的概念 线程安全是指…

Electron+Ts+Vue+Vite桌面应用系列:sqlite增删改查操作篇

文章目录 1️⃣ sqlite应用1.1 sqlite数据结构1.2 初始化数据库1.3 初始化实体类1.4 操作数据类1.5 页面调用 优质资源分享 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/134692751 ElectronTsVueVite桌面应用系列 &am…

nacos启动报错 java.lang.RuntimeException: [db-load-error]load jdbc.properties error

以standalone mode sh startup.sh -m standalone 为例子 启动nacos 报错&#xff1a; Caused by: org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcatat org.springframework.boot.web.embedded.tomcat.TomcatWebServer.initialize(To…

Linux中shell的运行原理

在Linux中&#xff0c;每次输入命令时&#xff0c;前面都会出现一串字母&#xff0c;我们称之为命令行提示符 实际上&#xff0c;命令行提示符是一种外壳程序 外壳程序的概念&#xff1a; 前面我们提到过&#xff0c;在Linux中&#xff0c;一切皆文件&#xff0c;所谓的命令就…

C语言 - 字符函数和字符串函数

系列文章目录 文章目录 系列文章目录前言1. 字符分类函数islower 是能够判断参数部分的 c 是否是⼩写字⺟的。 通过返回值来说明是否是⼩写字⺟&#xff0c;如果是⼩写字⺟就返回⾮0的整数&#xff0c;如果不是⼩写字⺟&#xff0c;则返回0。 2. 字符转换函数3. strlen的使⽤和…

批量AI创作文案的工具,批量AI创作文章的软件

人工智能&#xff08;AI&#xff09;的应用不断拓展&#xff0c;其中批量AI创作逐渐成为许多文本创作者和企业编辑的热门选择。面对海量的文章需求&#xff0c;批量AI创作工具能够高效、快速地生成大量文本内容&#xff0c;从而减轻创作者的工作负担。本文将专心分享批量AI创作…

【C语言:自定义类型(结构体、位段、共用体、枚举)】

文章目录 1.结构体1.1什么是结构体1.2结构体类型声明1.3结构体变量的定义和初始化1.4结构体的访问 2.结构体对齐2.1如何对齐2.2为什么存在内存对齐&#xff1f; 3.结构体实现位段3.1什么是位段3.2位段的内存分配3.3位段的跨平台问题3.4位段的应用3.5位段使用注意事项 4.联合体4…

Hadoop学习笔记(HDP)-Part.09 安装OpenLDAP

目录 Part.01 关于HDP Part.02 核心组件原理 Part.03 资源规划 Part.04 基础环境配置 Part.05 Yum源配置 Part.06 安装OracleJDK Part.07 安装MySQL Part.08 部署Ambari集群 Part.09 安装OpenLDAP Part.10 创建集群 Part.11 安装Kerberos Part.12 安装HDFS Part.13 安装Ranger …

【ArcGIS Pro】探索性插值无法覆盖所需shp范围

做个小记录自用&#xff0c;实际不准。 1 看看就行 pro插值 看看过程就行。有详细过程&#xff0c;类似tutorial https://learn.arcgis.com/zh-cn/projects/interpolate-temperatures-using-the-geostatistical-wizard/ 2 注意用投影坐标系 wgs84转投影坐标系 https://blog…

Java常见CodeReview及编码规范

鉴于自己的开发经验,以及常见容易产生bug及性能问题的点做个记录. 1.数据库 如果开发人员的经验不足,Java通过ORM(Mybatis)对数据库的操作的性能问题比较隐蔽.因为不压测或者异常case没发生的时候一般发现不了问题.特别是异常case发生的时候. 除配置表以外的sql都要经过expl…

Mongodb 开启oplog,java监听oplog并写入关系型数据库

开启Oplog windows mongodb bin目录下找到配置文件/bin/mongod.cfg,配置如下&#xff1a; replication:replSetName: localoplogSizeMB: 1024双击mongo.exe 执行 rs.initiate({_id: "local", members: [{_id: 0, host: "localhost:27017"}]})若出现如…

Android : 篮球记分器app _简单应用

示例图&#xff1a; 1.导包 在build.gradle 中 加入 // 使用androidx版本库implementation androidx.lifecycle:lifecycle-extensions:2.1.0-alpha03 2. 开启dataBinding android{...// 步骤1.开启data bindingdataBinding {enabled true}...} 3.写个类继承 ViewModel pac…

消息中间件之间的区别

一.单机吞吐量 ActiveMQ&#xff1a;万级&#xff0c;吞吐量比RocketMQ和Kafka要低了一个数量级 RabbitMQ&#xff1a;万级&#xff0c;吞吐量比RocketMQ和Kafka要低了一个数量级 RocketMQ&#xff1a;10万级&#xff0c;RocketMQ也是可以支撑高吞吐的一种MQ Kafka&#xff…

Linux服务器部署XXL-JOB

参考文档及下载地址&#xff1a;分布式任务调度平台XXL-JOB 1 从git拉取XXL-JOB代码 我们的大部分变动&#xff0c;是发生在xxl-job-admin&#xff0c;最终将这个模块打包成jar包部署在linux服务器上。 2 执行数据库脚本 doc\db\tables_xxl_job.sql 3 修改pom文件&#xff0c…

Siemens-NXUG二次开发-打开与关闭prt文件[Python UF][20231206]

Siemens-NXUG二次开发-打开与关闭prt文件[Python UF][20231206] 1.python uf函数1.1 NXOpen.UF.Part.Open1.2 NXOpen.UF.Part.LoadStatus1.3 NXOpen.UF.Part.Close1.4 NXOpen.UF.Part.AskUnits 2.示例代码3.运行结果3.1 内部模式3.2 外部模式 1.python uf函数 1.1 NXOpen.UF.P…

CUDA简介——Grid和Block内Thread索引

1. 引言 前序博客&#xff1a; CUDA简介——基本概念CUDA简介——编程模式CUDA简介——For循环并行化 Thread Index&#xff1a; 每个Thread都有其thread index。 在Kernel中&#xff0c;可通过内置的threadIdx变量来获取其thread index。threadIdx为三维的&#xff0c;有相…

一. 初识数据结构和算法

数据结构与算法是一个达到高级程序员的敲门砖。当你脱离了语言的应用层面&#xff0c;去思考他的设计层面时&#xff0c;你就依旧已经开始初识数据结构与算法了 数据结构 什么是数据结构 对于数据结构的定义官方并没有统一的解释&#xff0c;在各个百科以及算法的书中&#xf…

MicroPython标准库

MicroPython标准库 arraybinascii(二进制/ASCII转换)builtins – 内置函数和异常cmath – 复数的数学函数collections – 集合和容器类型errno – 系统错误代码gc – 控制垃圾收集器hashlib – 散列算法heapq – 堆队列算法io – 输入/输出流json – JSON 编码和解码math – 数…