Java+swing+Mysql实现商品销售管理系统

让我来讲解“Java+swing+Mysql实现商品销售管理系统”的完整攻略。这个系统主要涉及到 Java 编程语言、swing GUI 工具包以及 Mysql 数据库的应用。下面是具体的步骤:

步骤一:环境搭建与项目创建

在搭建环境之前需要安装 Java JDK、Eclipse/IDEA 编辑器、Mysql 数据库工具等软件。具体过程可以参考网上教程进行安装。

创建项目时,我们需要使用窗口构建器(Window Builder)插件来构建 GUI 界面,并使用 Mysql 数据库来存储和管理数据。可以参考下面的示例:

  • 创建 GUI 界面

可以使用 swing 工具包来构建 GUI 界面。通过在 Eclipse/IDEA 编辑器中创建一个新的 Java 项目,并添加窗口构建器插件,然后在窗口构建器中进行界面设计。下面是代码实现示例:

public class MainFrame extends JFrame {

    private static final long serialVersionUID = 1L;

    private static final String DEFAULT_TITLE = "商品销售管理系统";
    private static final int DEFAULT_WIDTH = 800;
    private static final int DEFAULT_HEIGHT = 600;

    public MainFrame() {
        setTitle(DEFAULT_TITLE);
        setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel mainPanel = new JPanel();
        getContentPane().add(mainPanel);

        // 添加组件
        JTextField nameField = new JTextField(20);
        mainPanel.add(nameField);

        JTextField priceField = new JTextField(20);
        mainPanel.add(priceField);

        JButton addButton = new JButton("添加");
        mainPanel.add(addButton);

        setVisible(true);
    }

    public static void main(String[] args) {
        new MainFrame();
    }
}
  • 使用 Mysql 数据库

在项目中需要使用 Mysql 数据库来存储和管理数据。可以使用 Mysql 工具,创建一个名为“goods”的数据库,并添加一个名为“goods_list”的数据表来存储商品数据。下面是创建数据表的 SQL 语句示例:

CREATE TABLE goods_list (
    id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(20) NOT NULL,
    price DOUBLE(7,2) NOT NULL,
    time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);

在 Java 代码中可以使用 JDBC 连接 Mysql 数据库,并实现数据的增删改查等操作。下面是示例代码:

public class GoodsDao {
    private static final String DB_URL = "jdbc:mysql://localhost:3306/goods";
    private static final String DB_USER = "root";
    private static final String DB_PASS = "123456";

    private Connection conn = null;

    public GoodsDao() throws SQLException {
        conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASS);
    }

    public boolean addGoods(Goods goods) throws SQLException {
        String sql = "INSERT INTO goods_list (name, price) VALUES (?, ?)";
        PreparedStatement stmt = conn.prepareStatement(sql);
        stmt.setString(1, goods.getName());
        stmt.setDouble(2, goods.getPrice());
        return stmt.executeUpdate() > 0;
    }

    // 其他操作方法
}

步骤二:实现功能与界面交互

在上述步骤中已经完成了 GUI 界面和 Mysql 数据库的设计,接下来就是将它们整合起来实现具体的功能。主要分为以下几个模块:

  • 添加商品模块

在添加商品模块中,可以通过界面上的文本框输入商品的名字和价格,并通过“添加”按钮来将商品信息添加到 Mysql 数据库中。当用户点击“添加”按钮时,程序会通过连接数据库的方式将商品信息添加到 Mysql 数据库中,具体实现参考下面的代码:

public class AddDialog extends JDialog {

    private static final long serialVersionUID = 1L;

    private JTextField nameField;
    private JTextField priceField;

    public AddDialog(JFrame frame, String title, boolean modal) {
        super(frame, title, modal);

        JPanel contentPane = new JPanel();
        setContentPane(contentPane);

        JLabel nameLabel = new JLabel("商品名称:");
        contentPane.add(nameLabel);

        nameField = new JTextField(20);
        contentPane.add(nameField);

        JLabel priceLabel = new JLabel("商品价格:");
        contentPane.add(priceLabel);

        priceField = new JTextField(20);
        contentPane.add(priceField);

        JButton addButton = new JButton("添加");
        addButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String name = nameField.getText();
                double price = Double.parseDouble(priceField.getText());
                Goods goods = new Goods(name, price);

                try {
                    GoodsDao goodsDao = new GoodsDao();
                    if (goodsDao.addGoods(goods)) {
                        JOptionPane.showMessageDialog(null, "添加成功!", "提示", JOptionPane.INFORMATION_MESSAGE);
                        dispose();
                    } else {
                        JOptionPane.showMessageDialog(null, "添加失败!", "提示", JOptionPane.ERROR_MESSAGE);
                    }
                } catch (SQLException e1) {
                    e1.printStackTrace();
                    JOptionPane.showMessageDialog(null, "添加失败!", "提示", JOptionPane.ERROR_MESSAGE);
                }
            }
        });
        contentPane.add(addButton);
    }
}
  • 删除商品模块

在删除商品模块中,用户可以通过选择商品列表中的某一项后点击“删除”按钮来删除已选商品。具体实现参考下面的代码:

public class MainFrame extends JFrame {

    // 窗口中的界面组件
    private JList<Goods> goodsList;
    private JButton addButton;
    private JButton deleteButton;

    public MainFrame() {
        // 窗口初始化代码

        // 商品列表
        try {
            GoodsDao goodsDao = new GoodsDao();
            List<Goods> goods = goodsDao.getAllGoods();
            goodsList = new JList<>(goods.toArray(new Goods[goods.size()]));
            getContentPane().add(goodsList);
        } catch (SQLException e) {
            e.printStackTrace();
        }

        // 添加按钮
        addButton = new JButton("添加");
        addButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                AddDialog addDialog = new AddDialog(MainFrame.this, "添加商品", true);
                addDialog.setVisible(true);
            }
        });
        getContentPane().add(addButton);

        // 删除按钮
        deleteButton = new JButton("删除");
        deleteButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                int index = goodsList.getSelectedIndex();
                if (index < 0) {
                    JOptionPane.showMessageDialog(MainFrame.this, "请选择要删除的商品!", "错误", JOptionPane.ERROR_MESSAGE);
                } else {
                    Goods goods = goodsList.getSelectedValue();
                    try {
                        GoodsDao goodsDao = new GoodsDao();
                        if (goodsDao.deleteGoods(goods.getId())) {
                            JOptionPane.showMessageDialog(MainFrame.this, "删除成功!", "提示", JOptionPane.INFORMATION_MESSAGE);
                            updateGoodsList();
                        } else {
                            JOptionPane.showMessageDialog(MainFrame.this, "删除失败!", "提示", JOptionPane.ERROR_MESSAGE);
                        }
                    } catch (SQLException e1) {
                        e1.printStackTrace();
                        JOptionPane.showMessageDialog(MainFrame.this, "删除失败!", "提示", JOptionPane.ERROR_MESSAGE);
                    }
                }
            }
        });
        getContentPane().add(deleteButton);
    }

    // 刷新商品列表
    private void updateGoodsList() {
        DefaultListModel<Goods> listModel = new DefaultListModel<>();
        try {
            GoodsDao goodsDao = new GoodsDao();
            List<Goods> goods = goodsDao.getAllGoods();
            for (Goods item : goods) {
                listModel.addElement(item);
            }
            goodsList.setModel(listModel);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
  • 查询商品模块

在查询商品模块中,用户可以通过输入关键字来搜索商品列表中名称或属性与该关键字相关的商品,并将搜索结果显示在界面上。具体实现参考下面的代码:

public class MainFrame extends JFrame {

    // 窗口中的界面组件
    private JTextField searchField;
    private JList<Goods> goodsList;
    private JButton searchButton;

    public MainFrame() {
        // 窗口初始化代码

        // 搜索框
        searchField = new JTextField(20);
        getContentPane().add(searchField);

        // 商品列表
        try {
            GoodsDao goodsDao = new GoodsDao();
            List<Goods> goods = goodsDao.getAllGoods();
            goodsList = new JList<>(goods.toArray(new Goods[goods.size()]));
            getContentPane().add(goodsList);
        } catch (SQLException e) {
            e.printStackTrace();
        }

        // 搜索按钮
        searchButton = new JButton("搜索");
        searchButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String keyword = searchField.getText();
                try {
                    GoodsDao goodsDao = new GoodsDao();
                    List<Goods> goods = goodsDao.searchGoods(keyword);
                    DefaultListModel<Goods> listModel = new DefaultListModel<>();
                    for (Goods item : goods) {
                        listModel.addElement(item);
                    }
                    goodsList.setModel(listModel);
                } catch (SQLException e1) {
                    e1.printStackTrace();
                }
            }
        });
        getContentPane().add(searchButton);
    }
}

这样我们就完成了“Java+swing+Mysql实现商品销售管理系统”的完整攻略。其中,涉及到的具体实现过程略微复杂,需要对 Java 语言、swing 工具包以及 Mysql 数据库进行深入的学习和理解。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java+swing+Mysql实现商品销售管理系统 - Python技术站

(1)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • springboot整合 beatlsql的实例代码

    下面我将为您详细讲解如何将Spring Boot与BeetlSQL整合。 一、Spring Boot集成BeetlSQL的前置条件 在开始整合前,请确保您拥有以下环境和工具: JDK1.8及以上版本 Maven3.0及以上版本 Spring Boot 2.0.0及以上版本 BeetlSQL 2.x版本(本示例使用的是2.8.2版本) 二、创建Spring B…

    Java 2023年5月20日
    00
  • SpringCloud Alibaba框架介绍

    SpringCloud Alibaba框架介绍 什么是SpringCloud Alibaba SpringCloud Alibaba 是一套基于 SpringCloud 体系的微服务工具集,包含了 SpringCloud 的服务治理体系、服务网关、SpringCloud Config 等组件,还包含了阿里巴巴公司自主开发的多项服务治理产品,例如 Nacos …

    Java 2023年6月2日
    00
  • 手写Java LockSupport的示例代码

    下面就手写Java LockSupport的示例代码进行详细讲解。 1. LockSupport简介 在Java中,当一个线程对某个对象的synchronized锁进行等待时,只有主动释放锁的线程或抢占了锁的线程才能解除等待;而LockSupport则是提供了一种更加灵活的线程等待/唤醒机制。LockSupport不需要使用锁和条件变量来实现线程的同步和通信…

    Java 2023年5月30日
    00
  • 详解Jenkins 实现Gitlab事件自动触发Jenkins构建及钉钉消息推送

    下面是详解Jenkins 实现Gitlab事件自动触发Jenkins构建及钉钉消息推送的完整攻略: 1. 安装Jenkins和Gitlab的插件 首先,我们需要在Jenkins中安装Gitlab插件和DingTalk插件。 进入Jenkins管理界面,选择“插件管理”,在可选插件中找到Gitlab插件,点击安装即可。同样的,找到DingTalk插件也进行安装…

    Java 2023年5月26日
    00
  • java 学习笔记(入门篇)_java程序helloWorld

    Java 学习笔记(入门篇)_Java程序HelloWorld 完整攻略 什么是Java Java 是一种高级编程语言,具有面向对象、跨平台、安全性强等特点,被广泛应用于互联网和企业应用等领域。 学习Java的前置知识 学习Java需要具备以下基础知识: 编程语言基础概念 面向对象编程思想 常见数据结构和算法 Java 学习的步骤 1. 下载安装Java环境…

    Java 2023年5月19日
    00
  • java的Hibernate框架报错“StaleStateException”的原因和解决方法

    当使用Spring Boot框架时,可能会遇到“OptimisticLockingFailureException”错误。这个错误通常是由于以下原因之一引起的: 数据库并发问题:如果多个用户同时访问同一条记录并尝试更新,则可能会出现此错误。在这种情况下,需要使用乐观锁或悲观锁来解决并发问题。 版本号不匹:如果您的实体类中的版本号与数据库中的版本号不匹配,则可…

    Java 2023年5月4日
    00
  • Spring Boot 多数据源处理事务的思路详解

    Spring Boot 多数据源处理事务的思路详解 为什么需要多数据源 在实际应用中,我们可能需要连接多个数据库来完成不同的业务需求,例如:用户数据存在 MySQL 数据库中,订单数据存在 MongoDB 数据库中,而且不同的数据源可能有不同的事务管理机制,为了更好地处理多数据源事务,我们需要进行多数据源处理。 Spring Boot 多数据源处理事务方案 …

    Java 2023年6月3日
    00
  • Java核心教程之常见时间日期的处理方法

    Java核心教程之常见时间日期的处理方法 介绍 在Java编程中,处理时间与日期是常见的任务。Java提供了多种处理时间与日期的方式,本文将介绍常见的时间与日期的处理方法及其实现。 Date类 Java中最基础的日期类型是Date类。Date类表示的是从Java纪元以来的毫秒数,可以用来描述一个时间点。Date类提供了很多方法,如getYear()、getM…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部