三.按照教材[案例7-8]的实现思路,在本实验第2题的基础上设计一个图书购物车,存储用户购买图书的信息。能够打印出购物车中图书的信息,图书价格、小计和总的费用。用HashMap类模拟购物车。 实现思路指导: (1)新建图书类(Product),该步骤第2题已实现。 (2)新建BookShop类,该类实现对所购图书信息的封装。 (3)新建书库类BookStore,书库里存放了大量的图书,这里我们用ArrayList来存放,并初始化部分图书信息。 (4)新建顾客类Customer。每个顾客进入书库都可以获得一个购物车,这个购物车用HashMap来实现,图书的编号是它的键,捆扎后的BookShop是它的值。 (5)新建测试主类SY6_3_BuyCar。
时间: 2024-03-02 14:51:09 浏览: 94
模拟实现购物车功能
非常感谢您的提问。不过我需要提醒您,作为一个AI语言模型,我并不能直接为您编写代码,但我可以为您提供一些参考思路和代码实现上的指导。
根据您的问题描述,您需要实现一个图书购物车,存储用户购买图书的信息,并能够打印出购物车中图书的信息,图书价格、小计和总的费用。您可以按照以下步骤进行设计和实现:
1. 新建图书类(Product),该步骤第2题已实现。
2. 新建BookShop类,该类实现对所购图书信息的封装。BookShop类应该包含以下属性和方法:
- 属性:图书编号、图书数量、图书单价、图书名称、小计
- 方法:计算小计、获取图书编号、获取图书数量、获取图书单价、获取图书名称、获取小计
3. 新建书库类BookStore,书库里存放了大量的图书,这里我们用ArrayList来存放,并初始化部分图书信息。
4. 新建顾客类Customer。每个顾客进入书库都可以获得一个购物车,这个购物车用HashMap来实现,图书的编号是它的键,捆扎后的BookShop是它的值。Customer类应该包含以下属性和方法:
- 属性:购物车
- 方法:添加商品到购物车、删除购物车中的商品、计算购物车总价、打印购物车中的商品信息
5. 新建测试主类SY6_3_BuyCar,用于测试上述类的方法和功能。
以下是一个简单的代码实现示例,仅供参考:
```
//图书类
class Product {
private int id; //图书编号
private String name; //图书名称
private double price; //图书单价
//构造方法
public Product(int id, String name, double price) {
this.id = id;
this.name = name;
this.price = price;
}
//getter方法
public int getId() {
return id;
}
public String getName() {
return name;
}
public double getPrice() {
return price;
}
}
//购物车中的商品信息类
class BookShop {
private int id; //图书编号
private int num; //图书数量
private double price; //图书单价
private String name; //图书名称
private double subtotal; //小计
//构造方法
public BookShop(int id, int num, double price, String name) {
this.id = id;
this.num = num;
this.price = price;
this.name = name;
this.subtotal = num * price;
}
//计算小计
public void calculateSubtotal() {
this.subtotal = num * price;
}
//getter方法
public int getId() {
return id;
}
public int getNum() {
return num;
}
public double getPrice() {
return price;
}
public String getName() {
return name;
}
public double getSubtotal() {
return subtotal;
}
}
//书库类
class BookStore {
private ArrayList<Product> products; //存放图书信息的ArrayList
//构造方法,初始化部分图书信息
public BookStore() {
products = new ArrayList<Product>();
products.add(new Product(1, "Java编程思想", 79.0));
products.add(new Product(2, "Thinking in Java", 108.0));
products.add(new Product(3, "Head First 设计模式", 72.0));
products.add(new Product(4, "Java核心技术", 99.0));
}
//根据图书编号获取图书信息
public Product getProductById(int id) {
for (Product p : products) {
if (p.getId() == id) {
return p;
}
}
return null;
}
}
//顾客类
class Customer {
private HashMap<Integer, BookShop> cart; //购物车
//构造方法,创建购物车
public Customer() {
cart = new HashMap<Integer, BookShop>();
}
//添加商品到购物车
public void addItem(int id, int num, BookStore store) {
Product p = store.getProductById(id);
if (p != null) {
BookShop item = new BookShop(id, num, p.getPrice(), p.getName());
cart.put(id, item);
}
}
//删除购物车中的商品
public void removeItem(int id) {
cart.remove(id);
}
//计算购物车总价
public double getTotalPrice() {
double total = 0.0;
for (BookShop item : cart.values()) {
item.calculateSubtotal();
total += item.getSubtotal();
}
return total;
}
//打印购物车中的商品信息
public void printCart() {
System.out.println("购物车中的商品信息:");
System.out.println("编号\t名称\t单价\t数量\t小计");
for (BookShop item : cart.values()) {
item.calculateSubtotal();
System.out.println(item.getId() + "\t" + item.getName() + "\t" + item.getPrice() + "\t" + item.getNum() + "\t" + item.getSubtotal());
}
System.out.println("总计:" + getTotalPrice());
}
}
//测试主类
public class SY6_3_BuyCar {
public static void main(String[] args) {
BookStore store = new BookStore(); //创建书库
Customer customer = new Customer(); //创建顾客
customer.addItem(1, 2, store); //向购物车中添加商品
customer.addItem(2, 1, store);
customer.printCart(); //打印购物车中的商品信息
customer.removeItem(1); //从购物车中移除商品
customer.printCart();
}
}
```
注意,这只是一个简单的示例,您可以根据自己的需求进行修改和完善。同时,为了确保代码的正确性和可靠性,建议您在开发过程中采用适当的代码注释和单元测试。
阅读全文