编写一个java GUI 订单系统,一个订单中有多个商品,商品包含商品名、商品价格等。编写程序实现订单的增加和查询,并能够按照订单的销售金额进行排序。
时间: 2024-03-08 12:51:18 浏览: 69
好的,我会为您提供一个简单的Java GUI订单系统的实现思路,实现商品的增加、查询和按照销售金额进行排序。
首先,我们需要定义订单和商品的相关信息。可以创建两个类,一个是Order类,一个是Product类。Order类包含订单号、订单创建日期、订单总金额等信息,而Product类包含商品名称、商品价格等信息。
其次,我们需要创建一个GUI界面,用于实现订单的增加和查询功能。可以使用Swing或JavaFX等GUI库进行开发,创建相应的按钮和文本框等控件,用于输入和显示相关信息。
在订单增加功能中,用户可以输入订单号、订单创建日期、商品名称、商品价格等信息,将这些信息保存到Order对象和Product对象中,然后将这些对象保存到一个List<Order>中。在查询功能中,用户可以输入订单号或商品名称等信息进行查询,程序会遍历List<Order>中的所有订单,找到匹配的订单或商品,将其显示在GUI界面上。
最后,我们需要实现按照订单销售金额进行排序的功能。可以在Order类中添加一个salesAmount属性,表示订单的销售金额,然后实现Comparator接口,根据salesAmount属性对订单进行排序。
下面是一个简单的Java GUI订单系统的实现示例代码:
```java
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
public class OrderSystem extends JFrame {
private JPanel panel;
private JTextField orderNumberField;
private JTextField createDateField;
private JTextField productNameField;
private JTextField productPriceField;
private JButton addButton;
private JTextField searchField;
private JButton searchButton;
private JTable table;
private DefaultTableModel model;
private List<Order> orderList;
public OrderSystem() {
orderList = new ArrayList<>();
panel = new JPanel();
panel.setLayout(null);
JLabel orderNumberLabel = new JLabel("订单号:");
orderNumberLabel.setBounds(20, 20, 60, 30);
panel.add(orderNumberLabel);
orderNumberField = new JTextField();
orderNumberField.setBounds(80, 20, 120, 30);
panel.add(orderNumberField);
JLabel createDateLabel = new JLabel("创建日期:");
createDateLabel.setBounds(220, 20, 60, 30);
panel.add(createDateLabel);
createDateField = new JTextField();
createDateField.setBounds(280, 20, 120, 30);
panel.add(createDateField);
JLabel productNameLabel = new JLabel("商品名称:");
productNameLabel.setBounds(20, 60, 60, 30);
panel.add(productNameLabel);
productNameField = new JTextField();
productNameField.setBounds(80, 60, 120, 30);
panel.add(productNameField);
JLabel productPriceLabel = new JLabel("商品价格:");
productPriceLabel.setBounds(220, 60, 60, 30);
panel.add(productPriceLabel);
productPriceField = new JTextField();
productPriceField.setBounds(280, 60, 120, 30);
panel.add(productPriceField);
addButton = new JButton("添加订单");
addButton.setBounds(420, 60, 100, 30);
addButton.addActionListener(e -> addOrder());
panel.add(addButton);
JLabel searchLabel = new JLabel("查询订单:");
searchLabel.setBounds(20, 100, 60, 30);
panel.add(searchLabel);
searchField = new JTextField();
searchField.setBounds(80, 100, 120, 30);
panel.add(searchField);
searchButton = new JButton("查询");
searchButton.setBounds(220, 100, 80, 30);
searchButton.addActionListener(e -> searchOrder());
panel.add(searchButton);
model = new DefaultTableModel();
model.addColumn("订单号");
model.addColumn("创建日期");
model.addColumn("商品名称");
model.addColumn("商品价格");
model.addColumn("销售金额");
table = new JTable(model);
JScrollPane scrollPane = new JScrollPane(table);
scrollPane.setBounds(20, 140, 500, 200);
panel.add(scrollPane);
this.setContentPane(panel);
this.setTitle("订单系统");
this.setSize(550, 400);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
private void addOrder() {
String orderNumber = orderNumberField.getText();
String createDate = createDateField.getText();
String productName = productNameField.getText();
double productPrice = Double.parseDouble(productPriceField.getText());
Order order = new Order(orderNumber, createDate);
Product product = new Product(productName, productPrice);
order.addProduct(product);
orderList.add(order);
updateTable();
}
private void searchOrder() {
String keyword = searchField.getText();
model.setRowCount(0);
for (Order order : orderList) {
if (order.getOrderNumber().equals(keyword)) {
for (Product product : order.getProductList()) {
Object[] row = { order.getOrderNumber(), order.getCreateDate(), product.getName(),
product.getPrice(), order.getSalesAmount() };
model.addRow(row);
}
} else {
for (Product product : order.getProductList()) {
if (product.getName().equals(keyword)) {
Object[] row = { order.getOrderNumber(), order.getCreateDate(), product.getName(),
product.getPrice(), order.getSalesAmount() };
model.addRow(row);
}
}
}
}
}
private void updateTable() {
model.setRowCount(0);
for (Order order : orderList) {
for (Product product : order.getProductList()) {
Object[] row = { order.getOrderNumber(), order.getCreateDate(), product.getName(), product.getPrice(),
order.getSalesAmount() };
model.addRow(row);
}
}
Collections.sort(orderList, new Comparator<Order>() {
@Override
public int compare(Order o1, Order o2) {
return Double.compare(o1.getSalesAmount(), o2.getSalesAmount());
}
});
}
public static void main(String[] args) {
new OrderSystem();
}
}
class Order {
private String orderNumber;
private String createDate;
private List<Product> productList;
public Order(String orderNumber, String createDate) {
this.orderNumber = orderNumber;
this.createDate = createDate;
productList = new ArrayList<>();
}
public void addProduct(Product product) {
productList.add(product);
}
public String getOrderNumber() {
return orderNumber;
}
public String getCreateDate() {
return createDate;
}
public List<Product> getProductList() {
return productList;
}
public double getSalesAmount() {
double salesAmount = 0;
for (Product product : productList) {
salesAmount += product.getPrice();
}
return salesAmount;
}
}
class Product {
private String name;
private double price;
public Product(String name, double price) {
this.name = name;
this.price = price;
}
public String getName() {
return name;
}
public double getPrice() {
return price;
}
}
```
这个示例实现了订单的增加和查询功能,并且可以按照销售金额进行排序。当用户点击“添加订单”按钮时,程序会将用户输入的订单信息保存到Order对象和Product对象中,并将这些对象保存到一个List<Order>中。当用户点击“查询”按钮时,程序会遍历List<Order>中的所有订单,找到匹配的订单或商品,并将其显示在GUI界面上。当用户添加或查询订单时,程序会更新JTable中的数据,并按照销售金额进行排序。
阅读全文