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日

相关文章

  • vue之proxyTable代理超全面配置流程

    Vue之proxyTable代理超全面配置流程 概述 Vue.js 是一个构建数据驱动的 web 界面的渐进式框架,使用 Vue 开发前端项目时,经常遇到需要向后端接口发起 HTTP 请求的情况。由于前端和后端常常处于不同的服务器上,因此需要解决跨域的问题。本文将介绍在 Vue 项目中使用 proxyTable 进行接口代理的配置流程。 步骤 步骤一:在we…

    Java 2023年6月15日
    00
  • java基础之Collection与Collections和Array与Arrays的区别

    Java基础之Collection与Collections和Array与Arrays的区别 在Java中,有些名字相似的类是不同的,有些则是同名类的一个是接口、一个是静态工具类。Collection与Collections以及Array与Arrays就是这样的一个示例。 Collection和Collections Collection是Java的一个接口,…

    Java 2023年5月26日
    00
  • Java通过工厂、Map容器创建对象的方法

    Java通过工厂、Map容器创建对象的方法可以极大地提高代码的可读性和复用性,下面是详细的攻略。 1. 工厂模式创建对象 工厂模式是一种创建对象的设计模式,它定义一个接口,让子类决定实例化哪一个类。工厂模式使一个类的实例化延迟到其子类中进行。 使用工厂模式的好处是,我们可以使用相同的方法来创建不同的对象,而不需要暴露实例化逻辑给客户端。这种方式可以将客户端代…

    Java 2023年5月26日
    00
  • Java Development Kit (JDK) 安装及环境配置方法

    下面给出完整的Java Development Kit (JDK)安装及环境配置方法攻略,包含以下具体内容: JDK的安装方法 访问Oracle官网下载JDK安装文件,下载地址为:https://www.oracle.com/java/technologies/javase-downloads.html 根据自己操作系统版本选择相应的JDK安装文件并下载,建…

    Java 2023年5月26日
    00
  • JAVA如何获取jvm和操作系统相关信息

    Java程序可以通过System类中提供的一些方法获取JVM和操作系统相关信息。具体步骤如下: 获取JVM相关信息: (1)获取JVM版本信息 Java程序可以通过System类的getProperty方法获取Java运行时环境JRE的版本信息,使用的是java.version这个参数。 示例代码: String javaVersion = System.g…

    Java 2023年5月24日
    00
  • java 汉诺塔详解及实现代码

    Java 汉诺塔详解及实现代码攻略 汉诺塔是经典的递归算法题目,其背后的递归思想能够很好地帮助我们理解递归算法。本攻略将详细讲解Java实现汉诺塔的思路及代码实现,以及两个示例演示。 思路及示例演示 思路 该问题的本质是将$n$个圆盘从初始塔$A$借助辅助塔$B$移动到目标塔$C$。根据思考,我们可以发现它是递归结构,且满足以下三个条件: 如果只有一个圆盘,…

    Java 2023年5月23日
    00
  • Kafka Producer中的消息缓存模型图解详解

    以下是关于“Kafka Producer中的消息缓存模型图解详解”的完整攻略: Kafka Producer中的消息缓存模型图解详解 什么是Kafka Producer? Kafka是目前人气逐渐上升的一个分布式流媒体平台,其中包括Kafka Producer、Kafka Consumer、Kafka Connect、Kafka Streams和Kafka …

    Java 2023年5月20日
    00
  • 如何使用SpringSecurity保护程序安全

    当我们开发应用程序的时候,应该极力确保应用程序的安全性,因为数据安全至关重要。 SpringSecurity是一种开源安全框架,可以保护我们的应用程序,并确保具有良好的身份验证和授权,本文将详细讲解如何使用SpringSecurity保护程序安全。 SpringSecurity的基本概念 SpringSecurity是一种基于Servlet过滤器的安全框架,…

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