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日

相关文章

  • java编程之单元测试(Junit)实例分析(附实例源码)

    这里是关于“java编程之单元测试(Junit)实例分析(附实例源码)”的完整攻略。 1. 什么是单元测试? 单元测试指的是对程序中的最小代码单元进行测试,主要用来确保每一个单元都能够正常的工作。通过单元测试,我们可以确保程序的模块和功能是可靠的,同时也能够减少程序的bug数量。 2. Junit是什么? Junit是Java编程中最流行的单元测试框架之一。…

    Java 2023年5月23日
    00
  • Java各种比较对象的方式的对比总结

    Java是一门优秀的编程语言,它有多种比较对象的方式。在Java中,将两个对象进行比较是很常见的操作,常见的比较对象的方式包括了以下几种: 比较对象的方式 1. 使用“==”比较 在Java中,使用“==”比较两个对象时,比较的是两个对象的引用是否相同,即两个对象是否是同一个对象,如果引用不相同,则比较结果为false,反之则为true。 示例: Objec…

    Java 2023年5月26日
    00
  • Elasticsearch搜索功能的实现(五)– 实战

    实战环境 elastic search 8.5.0 + kibna 8.5.0 + springboot 3.0.2 + spring data elasticsearch 5.0.2 + jdk 17 一、集成 spring data elasticsearch 1 添加依赖 <dependency> <groupId>org.sp…

    Java 2023年4月19日
    00
  • java批量解析微信dat文件

    下面是“java批量解析微信dat文件”的完整攻略。 背景 如果你用过微信,你就会知道微信的消息保存在.dat文件中。这些文件包含了聊天记录、联系人、群组等等信息。为了方便地查看这些数据,我们可以使用Java编写程序,批量解析这些.dat文件。 准备工作 在编写程序之前,我们需要一些准备工作。首先,我们需要下载微信的.apk文件,并将其解压。然后进入解压后的…

    Java 2023年5月20日
    00
  • MyBatis-Plus 之selectMaps、selectObjs、selectCount、selectOne的使用

    一、MyBatis-Plus之selectMaps、selectObjs、selectCount、selectOne的使用 selectMaps MyBatis-Plus提供的selectMaps方法可以返回一个List\<Map\<String, Object>>对象,其中包含查询的结果集中的每一行记录,每一行记录都会转成一个Map…

    Java 2023年5月20日
    00
  • GC 日志的作用是什么?

    以下是关于 GC 日志的作用的完整使用攻略: GC 日志的作用是什么? GC 日志是 Java 虚拟机在进行垃圾回收时所产生的日志信息,它记录了垃圾回收的详细过程,包括垃圾回收的类型、回收的时间、回收的对象数量、回收所占用的时间等。GC 日志可以帮助开发人员了解垃圾回收的情况,优化程序的性能和效率。 GC 日志的作用 GC 日志的作用主要有以下几点: 监控垃…

    Java 2023年5月12日
    00
  • java安全编码指南之:对象构建操作

    Java安全编码指南之对象构建操作 在Java编程中,对象构建操作是非常常见的操作,但如果不正确处理这些操作,就容易出现安全风险。这里我们将介绍一些关于对象构建操作的安全编码指南。 避免使用反射 API 的 newInstance 方法 反射 API 的 newInstance 方法可以通过 Class 对象动态实例化对象,但是存在一些安全风险。例如,如果创…

    Java 2023年5月20日
    00
  • JAVA面试题之Forward与Redirect的区别详解

    JAVA面试题之Forward与Redirect的区别详解 在Java Web开发中,经常会使用到Forward和Redirect这两种方式进行请求转发。它们的实现方式不同,在使用时也需要根据需求选择合适的方式。本文将详细讲解Forward和Redirect的区别以及使用场景。 Forward Forward是什么 Forward是一种请求转发方式,可以将请…

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