使用Java实现超市收银系统源代码
时间: 2024-03-10 15:46:51 浏览: 77
很抱歉,我不能提供完整的超市收银系统源代码。但是,我可以为您提供一些实现超市收银系统的示例代码和思路,供您参考。
首先,我们需要创建一个商品类,用于存储商品的信息,包括商品编号、商品名称、商品单价、商品数量等。示例代码如下:
```java
public class Goods {
private int id; // 商品编号
private String name; // 商品名称
private double price; // 商品单价
private int num; // 商品数量
public Goods(int id, String name, double price, int num) {
this.id = id;
this.name = name;
this.price = price;
this.num = num;
}
// getter and setter methods
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
// 计算商品总价
public double getTotalPrice() {
return price * num;
}
}
```
然后,我们需要创建一个购物车类,用于存储购物车中的商品信息,包括商品编号、商品名称、商品单价、商品数量等。示例代码如下:
```java
public class ShoppingCart {
private Map<Integer, Goods> goodsMap; // 存储购物车中的商品信息
public ShoppingCart() {
goodsMap = new HashMap<>();
}
// 添加商品到购物车
public void addGoods(Goods goods) {
if (goodsMap.containsKey(goods.getId())) {
Goods oldGoods = goodsMap.get(goods.getId());
oldGoods.setNum(oldGoods.getNum() + goods.getNum());
} else {
goodsMap.put(goods.getId(), goods);
}
}
// 从购物车中删除商品
public void removeGoods(int id) {
goodsMap.remove(id);
}
// 计算购物车中商品的总价
public double getTotalPrice() {
double totalPrice = 0;
for (Goods goods : goodsMap.values()) {
totalPrice += goods.getTotalPrice();
}
return totalPrice;
}
// 获取购物车中的所有商品
public List<Goods> getAllGoods() {
return new ArrayList<>(goodsMap.values());
}
}
```
接下来,我们需要创建一个收银台界面,用于实现商品的录入、结算等操作。示例代码如下:
```java
public class CheckoutFrame extends JFrame {
private JLabel nameLabel; // 商品名称标签
private JLabel priceLabel; // 商品单价标签
private JLabel numLabel; // 商品数量标签
private JTextField nameField; // 商品名称输入框
private JTextField priceField; // 商品单价输入框
private JTextField numField; // 商品数量输入框
private JButton addButton; // 添加商品按钮
private JButton removeButton; // 删除商品按钮
private JButton clearButton; // 清空购物车按钮
private JButton checkoutButton; // 结算按钮
private JTable goodsTable; // 商品列表表格
private ShoppingCart shoppingCart; // 购物车
public CheckoutFrame() {
super("超市收银系统");
initUI();
initListener();
shoppingCart = new ShoppingCart();
}
// 初始化界面
private void initUI() {
// 创建商品名称标签和输入框
nameLabel = new JLabel("商品名称");
nameField = new JTextField(20);
// 创建商品单价标签和输入框
priceLabel = new JLabel("商品单价");
priceField = new JTextField(10);
// 创建商品数量标签和输入框
numLabel = new JLabel("商品数量");
numField = new JTextField(5);
// 创建添加商品按钮、删除商品按钮、清空购物车按钮和结算按钮
addButton = new JButton("添加商品");
removeButton = new JButton("删除商品");
clearButton = new JButton("清空购物车");
checkoutButton = new JButton("结算");
// 创建商品列表表格
goodsTable = new JTable(new DefaultTableModel(new Object[][]{}, new String[]{"编号", "名称", "单价", "数量"}));
// 创建界面布局
JPanel panel1 = new JPanel(new FlowLayout(FlowLayout.LEFT));
panel1.add(nameLabel);
panel1.add(nameField);
panel1.add(priceLabel);
panel1.add(priceField);
panel1.add(numLabel);
panel1.add(numField);
JPanel panel2 = new JPanel(new FlowLayout(FlowLayout.LEFT));
panel2.add(addButton);
panel2.add(removeButton);
panel2.add(clearButton);
panel2.add(checkoutButton);
JPanel panel3 = new JPanel(new BorderLayout());
panel3.add(new JScrollPane(goodsTable), BorderLayout.CENTER);
panel3.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
JPanel panel = new JPanel(new BorderLayout());
panel.add(panel1, BorderLayout.NORTH);
panel.add(panel2, BorderLayout.CENTER);
panel.add(panel3, BorderLayout.SOUTH);
// 设置界面属性
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setContentPane(panel);
pack();
setLocationRelativeTo(null);
setVisible(true);
}
// 初始化事件监听器
private void initListener() {
// 添加商品按钮事件监听器
addButton.addActionListener(e -> {
String name = nameField.getText();
double price = Double.parseDouble(priceField.getText());
int num = Integer.parseInt(numField.getText());
Goods goods = new Goods(shoppingCart.getAllGoods().size() + 1, name, price, num);
shoppingCart.addGoods(goods);
refreshTable();
});
// 删除商品按钮事件监听器
removeButton.addActionListener(e -> {
int rowIndex = goodsTable.getSelectedRow();
if (rowIndex >= 0) {
int id = (int) goodsTable.getValueAt(rowIndex, 0);
shoppingCart.removeGoods(id);
refreshTable();
}
});
// 清空购物车按钮事件监听器
clearButton.addActionListener(e -> {
shoppingCart = new ShoppingCart();
refreshTable();
});
// 结算按钮事件监听器
checkoutButton.addActionListener(e -> {
double totalPrice = shoppingCart.getTotalPrice();
JOptionPane.showMessageDialog(this, "总价:" + totalPrice);
});
}
// 刷新商品列表表格
private void refreshTable() {
DefaultTableModel model = (DefaultTableModel) goodsTable.getModel();
model.setRowCount(0);
for (Goods goods : shoppingCart.getAllGoods()) {
model.addRow(new Object[]{goods.getId(), goods.getName(), goods.getPrice(), goods.getNum()});
}
}
}
```
最后,我们需要创建一个主函数,用于启动程序。示例代码如下:
```java
public class Main {
public static void main(String[] args) {
new CheckoutFrame();
}
}
```
这样,我们就完成了超市收银系统的实现。当用户输入商品的名称、单价和数量后,程序会将该商品添加到购物车中,并在商品列表表格中显示。用户可以通过删除商品按钮、清空购物车按钮和结算按钮来操作购物车。当用户单击结算按钮后,程序会计算购物车中商品的总价,并弹出提示框显示总价。
阅读全文