Files
SuManagement/src/main/java/com/example/InventoryProductManagement.java
2025-09-24 13:18:41 +08:00

186 lines
8.2 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.example;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.ResultSet;
import java.sql.SQLException;
public class InventoryProductManagement extends JFrame implements ActionListener {
JMenuBar menuBar;//创建主菜单栏容器
JMenu menu;//创建顶级菜单项“菜单”
JMenuItem menuItem1,menuItem2,menuItem3;//创建菜单子项(添加/删除商品)
private JTable table;//表格组件,用于展示商品数据
private DefaultTableModel tableModel;//表格数据模型
InventoryProductManagement() {
super("进货信息管理");//设置窗口标题
menuBar = new JMenuBar();//实例化菜单栏
setJMenuBar(menuBar);//将菜单栏添加到窗体顶部
menu = new JMenu("菜单");//创建顶级菜单“菜单”
menuBar.add(menu);//将菜单添加到菜单栏
//创建菜单项
menuItem1 = new JMenuItem("进货");
menuItem2 = new JMenuItem("删除");
menuItem3 = new JMenuItem("帮助");
//添加菜单项到菜单
menu.add(menuItem1);
menu.add(menuItem2);
menu.add(menuItem3);
// menu.add(menuItem3);
//注册菜单项点击监听器this表示当前类处理事件
menuItem1.addActionListener(this);
menuItem2.addActionListener(this);
menuItem3.addActionListener(this);
// menuItem3.addActionListener(this);
setSize(500,500);//设置窗口大小
setLocationRelativeTo(null);//窗口居中显示
// 表格初始化
String[] columnNames = {"商品名称(种类)", "商品数量(件)", "进货单价(元)"};//定义表头,此处更改表头文字展示
tableModel = new DefaultTableModel(columnNames, 0);//创建空表格模型
table = new JTable(tableModel);//基于模型创建表格
// 添加带滚动条的表格面板到窗口中央
JScrollPane scrollPane = new JScrollPane(table);
add(scrollPane, BorderLayout.CENTER);
// 初始化加载数据库数据
loadData();//加载数据库数据到表格
setVisible(true);//显示窗口
}
private void loadData() {
Jdbc jdbc = new Jdbc();//创建数据库连接对象
try {
//执行SQL查询获取商品名称/库存/进阶/售价/利润/销量)
ResultSet rs = jdbc.query("SELECT name,count,purchase_price,selling_price,profit,quantity_sold FROM commodity");
// 清空旧数据
tableModel.setRowCount(0);//清空表格现有数据
// 填充新数据(遍历查询结果)
while (rs.next()) {
//构建表格行数据(只显示名称/库存/进阶)
Object[] row = {
rs.getString("name"),
rs.getInt("count"),
rs.getDouble("purchase_price"),
};
tableModel.addRow(row);//添加数据行到表格
}
rs.close();//关闭结果集
jdbc.close();//关闭数据库连接
} catch (SQLException e) {
e.printStackTrace();
JOptionPane.showMessageDialog(this, "加载数据失败: " + e.getMessage());//弹出错误提示
}
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == menuItem1) {
JFrame frame = new JFrame();//创建添加窗口
frame.setTitle("添加商品");
frame.setLayout(new GridLayout(4, 2));//四行两列网格布局
//创建输入组件
JLabel nameLabel = new JLabel("商品名称:");
JTextField nameField = new JTextField();
JLabel countLabel = new JLabel("商品数量:");
JTextField countField = new JTextField();
JLabel purchasePriceLabel = new JLabel("进货单价:");
JTextField purchasePriceField = new JTextField();
//添加按钮和取消按钮
JButton addButton = new JButton("添加");
JButton cancelButton = new JButton("取消");
//将组件添加到窗口
frame.add(nameLabel);
frame.add(nameField);
frame.add(countLabel);
frame.add(countField);
frame.add(purchasePriceLabel);
frame.add(purchasePriceField);
frame.add(addButton);
frame.add(cancelButton);
//添加按钮事件
addButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//获取输入值
String name = nameField.getText();
int count = Integer.parseInt(countField.getText());
double purchasePrice = Double.parseDouble(purchasePriceField.getText());
// 调用数据库添加方法 执行SQL插入初始化销量为0
Jdbc jdbc = new Jdbc();
try {
jdbc.update("INSERT INTO commodity (name, count, purchase_price, quantity_sold) VALUES ('" + name + "', " + count + ", " + purchasePrice + ", " + 0 + ");");
jdbc.close();
// 刷新数据
loadData();//刷新表格数据
// 关闭弹窗
frame.dispose();//关闭添加窗口
} catch (SQLException ex) {
ex.printStackTrace();
JOptionPane.showMessageDialog(frame, "添加商品失败: " + ex.getMessage());
}
}
});
cancelButton.addActionListener(new ActionListener() {//取消按钮事件
@Override
public void actionPerformed(ActionEvent e) {
frame.dispose();
}
});
frame.setSize(300, 200);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.setVisible(true);
}
else if (e.getSource() == menuItem2) {
JFrame frame = new JFrame();//创建删除窗口
frame.setTitle("删除商品");
frame.setLayout(new GridLayout(2, 2));
JLabel nameLabel = new JLabel("商品名称:");
JTextField nameField = new JTextField();
JButton deleteButton = new JButton("删除");
JButton cancelButton = new JButton("取消");
frame.add(nameLabel);
frame.add(nameField);
frame.add(deleteButton);
frame.add(cancelButton);
//删除按钮事件
deleteButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String name = nameField.getText();//获取要删除的商品名
// 调用数据库删除方法
Jdbc jdbc = new Jdbc();
try {
//执行SQL删除
jdbc.update("DELETE FROM commodity WHERE name='" + name + "'");
jdbc.close();
// 刷新表格
loadData();
// 关闭弹窗
frame.dispose();
} catch (SQLException ex) {
ex.printStackTrace();
JOptionPane.showMessageDialog(frame, "删除商品失败: " + ex.getMessage());
}
}
});
cancelButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
frame.dispose();
}
});
frame.setSize(300, 200);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.setVisible(true);
}
}
public static void main(String[] args) {
new InventoryProductManagement();//启动应用程序
}
}