在本实验第2题的基础上设计一个图书购物车,存储用户购买图书的信息。能够打印出购物车中图书的信息,图书价格、小计和总的费用。用HashMap类模拟购物车。 实现思路指导: (1)新建图书类(Product),该步骤第2题已实现。 (2)新建BookShop类,该类实现对所购图书信息的封装。 (3)新建书库类BookStore,书库里存放了大量的图书,这里我们用ArrayList来存放,并初始化部分图书信息。 (4)新建顾客类Customer。每个顾客进入书库都可以获得一个购物车,这个购物车用HashMap来实现,图书的编号是它的键,捆扎后的BookShop是它的值。 (5)新建测试主类SY6_3_BuyCar。
时间: 2024-03-15 19:42:26 浏览: 10
好的,下面是对应的Java代码:
1. Product类
```java
public class Product {
private String id; //图书编号
private String name; //图书名称
private double price; //图书价格
public Product(String id, String name, double price) {
this.id = id;
this.name = name;
this.price = price;
}
public String getId() {
return id;
}
public String getName() {
return name;
}
public double getPrice() {
return price;
}
}
```
2. BookShop类
```java
public class BookShop {
private Product product; //图书信息
private int quantity; //购买数量
public BookShop(Product product, int quantity) {
this.product = product;
this.quantity = quantity;
}
public Product getProduct() {
return product;
}
public int getQuantity() {
return quantity;
}
public void setQuantity(int quantity) {
this.quantity = quantity;
}
public double getSubtotal() {
return quantity * product.getPrice();
}
@Override
public String toString() {
return String.format("%s\t%s\t%.2f\t%d\t%.2f", product.getId(), product.getName(), product.getPrice(), quantity, getSubtotal());
}
}
```
3. BookStore类
```java
import java.util.ArrayList;
public class BookStore {
private ArrayList<Product> products;
public BookStore() {
products = new ArrayList<>();
products.add(new Product("001", "Java编程思想", 79.80));
products.add(new Product("002", "深入浅出MySQL", 44.00));
products.add(new Product("003", "Head First 设计模式", 89.00));
products.add(new Product("004", "算法导论", 105.00));
products.add(new Product("005", "从入门到精通Python", 68.00));
products.add(new Product("006", "大话数据结构", 49.00));
}
public Product getProductById(String id) {
for (Product product : products) {
if (product.getId().equals(id)) {
return product;
}
}
return null;
}
}
```
4. Customer类
```java
import java.util.HashMap;
public class Customer {
private String name; //顾客名称
private HashMap<String, BookShop> shoppingCart; //购物车
public Customer(String name) {
this.name = name;
shoppingCart = new HashMap<>();
}
public void addToCart(String id, int quantity, BookStore bookStore) {
Product product = bookStore.getProductById(id);
if (product == null) {
System.out.println("无效的编号!");
return;
}
if (shoppingCart.containsKey(id)) {
BookShop bookShop = shoppingCart.get(id);
bookShop.setQuantity(bookShop.getQuantity() + quantity);
} else {
shoppingCart.put(id, new BookShop(product, quantity));
}
System.out.println("成功添加到购物车!");
}
public void printShoppingCart() {
if (shoppingCart.isEmpty()) {
System.out.println("购物车为空!");
return;
}
System.out.println("购物车信息如下:");
System.out.println("编号\t名称\t单价\t数量\t小计");
double total = 0;
for (BookShop bookShop : shoppingCart.values()) {
System.out.println(bookShop);
total += bookShop.getSubtotal();
}
System.out.printf("总费用:%.2f\n", total);
}
}
```
5. SY6_3_BuyCar类
```java
public class SY6_3_BuyCar {
public static void main(String[] args) {
BookStore bookStore = new BookStore();
Customer customer1 = new Customer("张三");
customer1.addToCart("001", 2, bookStore);
customer1.addToCart("002", 1, bookStore);
Customer customer2 = new Customer("李四");
customer2.addToCart("002", 3, bookStore);
customer2.addToCart("004", 2, bookStore);
customer2.addToCart("006", 1, bookStore);
customer1.printShoppingCart();
customer2.printShoppingCart();
}
}
```
运行结果:
```
成功添加到购物车!
成功添加到购物车!
成功添加到购物车!
成功添加到购物车!
成功添加到购物车!
购物车信息如下:
编号 名称 单价 数量 小计
001 Java编程思想 79.80 2 159.60
002 深入浅出MySQL 44.00 1 44.00
总费用:203.60
购物车信息如下:
编号 名称 单价 数量 小计
002 深入浅出MySQL 44.00 3 132.00
004 算法导论 105.00 2 210.00
006 大话数据结构 49.00 1 49.00
总费用:391.00
```