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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: Eclipse+Java+Swing+Mysql实现超市管理系统

一、系统介绍


1.开发环境


开发工具:Eclipse2021


JDK版本:jdk1.8


Mysql版本:8.0.13


2.技术选型


Java+Swing+Mysql


3.系统功能


1.登录系统


2.查询商品


3.添加商品


4.修改商品


5.删除商品


二、系统展示


1.登录系统


5907c44d95ba48acba1c3f795324f7a9.jpg


2.系统主页


220eb5dd948e4455a9cbe8815094abce.jpg


3.查询商品


7a89d1f1045b4af3ae6389f3d05aad72.jpg


4.修改商品


352e085a965d4f049e4348896d24c3a6.jpg


5.添加商品


9992cb83dcc54321b16b6563e76d1288.jpg


三、部分代码


GoodsXG.java


package com.ynavc.Vive;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import com.ynavc.Bean.Goods;
import com.ynavc.Controller.Updata;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
public class GoodsXG extends JFrame {
  private JTextField id, name, num, price;
  private JButton button;
  private JButton button_1;
  int goodsid;
  public GoodsXG(Goods goods) {
    super("商品管理系统");
    this.setBounds(0, 0, 400, 450);
    this.setLocationRelativeTo(null);// 让窗口在屏幕中间显示
    this.setResizable(false);// 让窗口大小不可改变
    getContentPane().setLayout(null);
    JLabel label = new JLabel("商品编号:");
    label.setBounds(85, 89, 87, 22);
    getContentPane().add(label);
    id = new JTextField();
    id.setBounds(147, 90, 142, 21);
    getContentPane().add(id);
    id.setColumns(10);
    JLabel label_1 = new JLabel("商品名称");
    label_1.setBounds(85, 139, 87, 22);
    getContentPane().add(label_1);
    name = new JTextField();
    name.setColumns(10);
    name.setBounds(147, 140, 142, 21);
    getContentPane().add(name);
    JLabel label_2 = new JLabel("数量:");
    label_2.setBounds(85, 193, 87, 22);
    getContentPane().add(label_2);
    num = new JTextField();
    num.setColumns(10);
    num.setBounds(147, 194, 142, 21);
    getContentPane().add(num);
    JLabel label_3 = new JLabel("单价:");
    label_3.setBounds(85, 241, 87, 22);
    getContentPane().add(label_3);
    price = new JTextField();
    price.setColumns(10);
    price.setBounds(147, 242, 142, 21);
    getContentPane().add(price);
    goodsid = goods.getGoodsID();
    id.setText(Integer.toString(goods.getGoodsID()));
    name.setText(goods.getGoodsName());
    num.setText(Integer.toString(goods.getNum()));
    price.setText(goods.getPrice());
    button = new JButton("确定");
    button.setBounds(78, 317, 93, 23);
    getContentPane().add(button);
    button.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent arg0) {
        String addId = id.getText();
        String addName = name.getText();
        String addNum = num.getText();
        String addPrice = price.getText();
        if (addName.equals("") || addName.equals("") || addNum.equals("") || addPrice.equals("")) {
          JOptionPane.showMessageDialog(null, "请完整输入要修改的数据");
        } else {
          String sql = "UPDATE goods SET " + "Goodsid='" + addId + "',Goodsname='" + addName + "',num='"
              + addNum + "',price='" + addPrice + "'where goodsid=" + goodsid;
          int result = Updata.addData(sql);
          if (result > 0) {
            JOptionPane.showMessageDialog(null, "修改成功!");
            JOptionPane.showMessageDialog(null, "记得刷新一下哦!");
            dispose();
            // GoodsManage i = new GoodsManage();
            // i.setVisible(true);
          } else {
            JOptionPane.showMessageDialog(null, "修改失败!");
          }
        }
      }
    });
    button_1 = new JButton("取消");
    button_1.setBounds(208, 317, 93, 23);
    getContentPane().add(button_1);
    button_1.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent arg0) {
        dispose();
      }
    });
  }
  public static void main(String[] args) {
    GoodsXG g = new GoodsXG(null);
    g.setVisible(true);
  }
}

GoodsManagement.java

package com.ynavc.Vive;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.ScrollPaneConstants;
import javax.swing.table.DefaultTableModel;
import com.ynavc.Bean.Goods;
import com.ynavc.Controller.Select;
import com.ynavc.Controller.Updata;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.ActionEvent;
public class GoodsManage extends JFrame {
  private JTextField textField;
  Select select = new Select();
  Updata updata = new Updata();
  Object[] header = { "商品编号", "商品名称", "数量", "单价" };
  String sql = "SELECT goodsID,goodsname,num,price FROM goods";
  Object[][] data = select.getGoods(sql);
  DefaultTableModel df = new DefaultTableModel(data, header);
  int v = ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED;
  int h = ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED;
  public GoodsManage() {
    super("商品管理系统");
    this.setBounds(0, 0, 700, 450);
    this.setLocationRelativeTo(null);// 让窗口在屏幕中间显示
    this.setResizable(false);// 让窗口大小不可改变
    getContentPane().setLayout(null);
    JTable jTable = new JTable(df);
    JScrollPane jsp = new JScrollPane(jTable, v, h);
    jsp.setBounds(10, 10, 515, 320);
    getContentPane().add(jsp);
    JButton button_1 = new JButton("显示所有商品");
    button_1.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent e) {
        String sql = "SELECT goodsID,goodsname,num,price FROM goods";
        Object[][] data = Select.getGoods(sql);
        df.setDataVector(data, header);
      }
    });
    button_1.setBounds(535, 80, 127, 30);
    getContentPane().add(button_1);
    JButton button_2 = new JButton("修改商品");
    button_2.setBounds(535, 140, 127, 30);
    getContentPane().add(button_2);
    button_2.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent e) {
        if (jTable.getSelectedColumn() < 0) {
          JOptionPane.showMessageDialog(null, "请选择要修改的数据!");
        } else {
          int goodsID = Integer.parseInt(jTable.getValueAt(jTable.getSelectedRow(), 0).toString());
          String name = jTable.getValueAt(jTable.getSelectedRow(), 1).toString();
          int num = Integer.parseInt(jTable.getValueAt(jTable.getSelectedRow(), 2).toString());
          String price = jTable.getValueAt(jTable.getSelectedRow(), 3).toString();
          Goods goods = new Goods(goodsID, name, num, price);
          GoodsXG goodsXG = new GoodsXG(goods);
          goodsXG.setVisible(true);
        }
      }
    });
    JButton button_3 = new JButton("删除商品");
    button_3.setBounds(535, 200, 127, 30);
    getContentPane().add(button_3);
    button_3.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent e) {
        if (jTable.getSelectedColumn() < 0) {
          JOptionPane.showMessageDialog(null, "请选中要删除的数据!");
        } else {
          int goodsID = Integer.parseInt(jTable.getValueAt(jTable.getSelectedRow(), 0).toString());
          String sql = "delete from goods where goodsid=" + goodsID;
          int result = updata.addData(sql);
          if (result > 0) {
            JOptionPane.showMessageDialog(null, "删除成功!");
            JOptionPane.showMessageDialog(null, "记得刷新一下哦!");
          } else {
            JOptionPane.showMessageDialog(null, "删除失败!");
          }
        }
      }
    });
    JButton button_4 = new JButton("添加商品");
    button_4.setBounds(535, 258, 127, 30);
    getContentPane().add(button_4);
    button_4.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent arg0) {
        GoodsADD goodsAdd = new GoodsADD();
        goodsAdd.setVisible(true);
      }
    });
    JLabel label = new JLabel("商品编号:");
    label.setBounds(40, 354, 112, 32);
    getContentPane().add(label);
    textField = new JTextField();
    textField.setBounds(154, 358, 127, 26);
    getContentPane().add(textField);
    textField.setColumns(10);
    JButton button = new JButton("按编号查询");
    button.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent arg0) {
        String sql = "SELECT goodsID,goodsname,num,price FROM goods WHERE goodsid LIKE '%" + textField.getText()
            + "%'";
        Object[][] data = Select.getGoods(sql);
        df.setDataVector(data, header);
      }
    });
    button.setBounds(305, 355, 112, 30);
    getContentPane().add(button);
    this.addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent e) {
        super.windowClosing(e);
        // 加入动作
        GoodsManagement m = new GoodsManagement();
        m.setVisible(true);
      }
    });
  }
  public static void main(String[] args) {
    GoodsManage t = new GoodsManage();
    t.setVisible(true);
  }
}

LoginFrame.java

package com.ynavc.Vive;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.HeadlessException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import com.ynavc.Dao.UserDao;
/**
 * 登录框架 2019年6月6日18:04:57
 * 
 * @author Administrator
 *
 */
public class LoginFrame extends Frame {
    private static final long serialVersionUID = 1L;
    private JFrame jFrame = new JFrame("登录");
    private Container c = jFrame.getContentPane();
    private JLabel a1 = new JLabel("用户名");
    private JTextField username = new JTextField("admin");
    private JLabel a2 = new JLabel("密   码");
    private JPasswordField password = new JPasswordField("admin");
    private JButton okbtn = new JButton("登录");
    private JButton cancelbtn = new JButton("重置");
    public LoginFrame() {
        // 设置窗体的位置及大小
        jFrame.setBounds(600, 200, 300, 220);
        // 设置一层相当于桌布的东西
        c.setLayout(new BorderLayout());// 布局管理器
        // 设置按下右上角X号后关闭
        jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        // 初始化--往窗体里放其他控件
        jFrame.setLocationRelativeTo(null);// 窗
        // 标题部分
        JPanel titlePanel = new JPanel();
        titlePanel.setLayout(new FlowLayout());
        titlePanel.add(new JLabel("超市管理系统"));
        c.add(titlePanel, "North");
        // 输入部分-
        JPanel fieldPanel = new JPanel();
        fieldPanel.setLayout(null);
        a1.setBounds(50, 20, 50, 20);
        a2.setBounds(50, 60, 50, 20);
        fieldPanel.add(a1);
        fieldPanel.add(a2);
        username.setBounds(110, 20, 120, 20);
        password.setBounds(110, 60, 120, 20);
        fieldPanel.add(username);
        fieldPanel.add(password);
        c.add(fieldPanel, "Center");
        // 按钮部分
        JPanel buttonPanel = new JPanel();
        buttonPanel.setLayout(new FlowLayout());
        buttonPanel.add(okbtn);
        buttonPanel.add(cancelbtn);
        c.add(buttonPanel, "South");
        // 设置窗体可见
        jFrame.setVisible(true);
        // 确认按下去获取
        okbtn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                try {
                    String uname = username.getText();
                    String pwd = String.valueOf(password.getPassword());
                    boolean flag = false;
          try {
            flag = UserDao.login(uname, pwd);
          } catch (Exception e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
          }
                    if (flag) {
                        jFrame.setVisible(false);
                        JOptionPane.showMessageDialog(null, "恭喜您,登录成功!");
                        GoodsManage g = new GoodsManage();
                        g.setVisible(true);
                        // 窗口居中
                        g.setLocationRelativeTo(null);
                    } else {
                        JOptionPane.showMessageDialog(null, "登录失败,账号或密码错误");
                    }
                } catch (HeadlessException e1) {
                    username.setText("");
                    password.setText("");
                    JOptionPane.showMessageDialog(null, "登录失败");
                }
            }
        });
        // 取消按下去清空
        cancelbtn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                username.setText("");
                password.setText("");
            }
        });
    }
}


四、其他


1.更多系统


更多JavaSwing系统请关注专栏。


https://blog.csdn.net/helongqiang/category_6229101.html

https://blog.csdn.net/helongqiang/category_6229101.html


2.源码下载


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


3.运行项目


请点击以下链接,部署你的项目。


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


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


4.备注


如有侵权请联系我删除。


5.支持博主


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




相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6月前
|
JavaScript Java 测试技术
基于Java的人事管理系统设计和实现(源码+LW+部署讲解)
基于Java的人事管理系统设计和实现(源码+LW+部署讲解)
129 7
|
6月前
|
JavaScript Java 测试技术
基于Java的儿童福利院管理系统设计和实现(源码+LW+部署讲解)
基于Java的儿童福利院管理系统设计和实现(源码+LW+部署讲解)
118 7
|
6月前
|
Java 关系型数据库 MySQL
班级通讯录管理系统(Java+MySQL)
构建了一个Java Swing应用,搭配MySQL,实现班级通讯录管理。系统具备管理员登录、班级与学生信息的增删改查功能,每个班级窗口独立且自适应布局。利用GBK编码处理中文,JDBC连接数据库,优化窗口复用和代码结构,数据变更实时同步。示例截图展示详细界面。
班级通讯录管理系统(Java+MySQL)
|
6月前
|
JavaScript 前端开发 Java
Java数字化产科管理系统源码,多家医院应用案例,可直接上项目
Java开发的数字化产科管理系统,已在多家医院实施,支持直接部署。系统涵盖孕产全程,包括门诊、住院、统计和移动服务,整合高危管理、智能提醒、档案追踪等功能,与HIS等系统对接。采用前后端分离架构,Java语言,Vue前端,若依框架,MySQL数据库。优势在于提升就诊效率,降低漏检率,自动报表生成,减少重复工作,支持数据研究,并实现医院与卫计委平台的数据互通,打造全生育周期健康服务。
81 4
时间轮-Java实现篇
在前面的文章《[时间轮-理论篇](https://developer.aliyun.com/article/910513)》讲了时间轮的一些理论知识,然后根据理论知识。我们自己来实现一个简单的时间轮。
|
14天前
|
监控 Java
java异步判断线程池所有任务是否执行完
通过上述步骤,您可以在Java中实现异步判断线程池所有任务是否执行完毕。这种方法使用了 `CompletionService`来监控任务的完成情况,并通过一个独立线程异步检查所有任务的执行状态。这种设计不仅简洁高效,还能确保在大量任务处理时程序的稳定性和可维护性。希望本文能为您的开发工作提供实用的指导和帮助。
69 17
|
25天前
|
Java
Java—多线程实现生产消费者
本文介绍了多线程实现生产消费者模式的三个版本。Version1包含四个类:`Producer`(生产者)、`Consumer`(消费者)、`Resource`(公共资源)和`TestMain`(测试类)。通过`synchronized`和`wait/notify`机制控制线程同步,但存在多个生产者或消费者时可能出现多次生产和消费的问题。 Version2将`if`改为`while`,解决了多次生产和消费的问题,但仍可能因`notify()`随机唤醒线程而导致死锁。因此,引入了`notifyAll()`来唤醒所有等待线程,但这会带来性能问题。
Java—多线程实现生产消费者
|
10天前
|
缓存 安全 算法
Java 多线程 面试题
Java 多线程 相关基础面试题
|
27天前
|
安全 Java Kotlin
Java多线程——synchronized、volatile 保障可见性
Java多线程中,`synchronized` 和 `volatile` 关键字用于保障可见性。`synchronized` 保证原子性、可见性和有序性,通过锁机制确保线程安全;`volatile` 仅保证可见性和有序性,不保证原子性。代码示例展示了如何使用 `synchronized` 和 `volatile` 解决主线程无法感知子线程修改共享变量的问题。总结:`volatile` 确保不同线程对共享变量操作的可见性,使一个线程修改后,其他线程能立即看到最新值。
|
27天前
|
消息中间件 缓存 安全
Java多线程是什么
Java多线程简介:本文介绍了Java中常见的线程池类型,包括`newCachedThreadPool`(适用于短期异步任务)、`newFixedThreadPool`(适用于固定数量的长期任务)、`newScheduledThreadPool`(支持定时和周期性任务)以及`newSingleThreadExecutor`(保证任务顺序执行)。同时,文章还讲解了Java中的锁机制,如`synchronized`关键字、CAS操作及其实现方式,并详细描述了可重入锁`ReentrantLock`和读写锁`ReadWriteLock`的工作原理与应用场景。

热门文章

最新文章

推荐镜像

更多