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 easyexcel使用教程之导出篇

    Java easyexcel使用教程之导出篇攻略 背景介绍 在实际开发中,经常会涉及到将数据导出为Excel文件的需求。而 EasyExcel 是一款由阿里巴巴开源的Java Excel解析/生成工具包,使用简单,支持大量数据导出,广受开发者喜欢。 本篇攻略主要针对EasyExcel的导出功能进行详细讲解,包括使用方法、参数配置和示例说明等内容。 使用方法 …

    Java 2023年6月2日
    00
  • Java实现全排列的三种算法详解

    Java实现全排列的三种算法详解 什么是全排列 全排列是指从一组数中任意取出几个数(不重复,不遗漏)进行排列,把所有可能的排列情况列出来。 问题的解决方案 Java中有三种常见的方法来实现全排列: 递归实现 字典序排序法 基于交换的回溯法 接下来我们将详细地介绍这三种算法的实现过程。 递归实现 递归实现的思路是:将数组分成首元素和剩余元素两部分,分别对剩余元…

    Java 2023年5月18日
    00
  • JAVA不可变类(immutable)机制与String的不可变性(推荐)

    JAVA不可变类机制与String的不可变性 什么是不可变类 不可变类是指一旦创建了对象之后,这个对象的状态不能再改变,所有的属性都是不可变的,比如String类就是一个典型的不可变类型。在Java中,不可变类通常具有以下特征: 所有的属性被申明为final,因此它们的值在对象的生命周期内不能改变。 对象本身被申明为final,确保了它的引用不能改变。 类中…

    Java 2023年5月26日
    00
  • JavaWeb项目部署到服务器详细步骤详解

    以下是JavaWeb项目部署到服务器的详细步骤: 1. 准备工作 在进行JavaWeb项目部署之前,需要先进行一些准备工作。首先是服务器环境的准备。服务器需要安装Tomcat、JDK以及MySQL等相关软件,并且需要配置好环境变量等一些基本设置。 其次,需要将JavaWeb项目进行打包处理。一般来说,我们可以通过eclipse或者IntelliJ IDEA等…

    Java 2023年5月24日
    00
  • JSP常见的文件操作小结

    JSP常见的文件操作小结 在JSP开发中,文件的操作是比较常见的一个任务,下面整理了关于JSP常见文件操作的攻略。 1. 文件的读取 1.1 读取文本文件 读取文本文件的方法非常简单,只需要使用Java IO库中的BufferedReader来读取文件即可。示例如下: <% String fileName = "example.txt&quo…

    Java 2023年6月15日
    00
  • jsp+Servlet编程实现验证码的方法

    下面我来详细讲解“jsp+Servlet编程实现验证码的方法”的完整攻略。 什么是验证码? 验证码(CAPTCHA)是指计算机应用程序为区分用户是真实用户还是计算机程序而推出的一种测试。常见的验证码类型包括数字、字母、滑块等形式,用户需要正确地填写系统生成的图形码信息才能进行下一步操作。 实现验证码的原理 验证码的实现原理是利用了Web开发中的Session…

    Java 2023年6月15日
    00
  • Java图形化编程之JFrame疫苗接种系统详解

    当编写GUI程序时,JFrame框架是至关重要的组件之一。JFrame框架为GUI应用程序提供了主要的用户界面,并包含其他组件和部件,如按钮、文本框、菜单、对话框和面板等。本文将提供如何使用Java编写GUI程序的细节,其重点是JFrame疫苗接种系统的详细解释。 创建JFrame窗体 要创建一个JFrame窗体,需要从JFrame类继承一个子类,并使用ja…

    Java 2023年5月31日
    00
  • python中print()函数的“,”与java中System.out.print()函数中的“+”功能详解

    Python中的print()函数和Java中的System.out.print()都是输出函数,它们都可以向控制台输出内容。下面详细讲解两者的区别以及两者在输出时“+”的功能。 Python中print()函数 语法 print(value1, value2, …, sep=’ ‘, end=’\n’, file=sys.stdout, flush=F…

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