设计并实现购物车的逻辑存 储,购买的若干商品和数量。包括商品的添加,删除,遍历输出及购物车的清空等方法。添加商品完成数量的累加;删除商品,如果商品在购物车中,按数量删除,如果剩余数量小干等干零,则删除这个商品。设计所需的构造函数和成员函数。编写主函数测试所写的功能。
时间: 2024-09-17 19:07:51 浏览: 39
vue实现购物车功能(商品分类)
设计一个简单的购物车类(ShoppingCart),可以包含以下构造函数和成员函数:
1. **构造函数**:用于初始化购物车,可以初始为空
```java
public class ShoppingCart {
private Map<Product, Integer> items; // 商品和数量的关联
public ShoppingCart() {
this.items = new HashMap<>(); // 使用HashMap存储商品及其数量
}
}
```
2. **成员函数**:
- **添加商品(addProduct)**:向购物车添加商品,如果商品存在则增加数量,不存在则添加新的商品-数量对
```java
public void addProduct(Product product, int quantity) {
if (items.containsKey(product)) {
items.put(product, items.get(product) + quantity);
} else {
items.put(product, quantity);
}
}
```
- **删除商品(removeProduct)**:减少指定商品的数量,如果数量减为0,则从购物车中移除
```java
public void removeProduct(Product product, int quantity) {
if (items.containsKey(product)) {
int currentQuantity = items.get(product);
if (currentQuantity >= quantity) {
items.put(product, currentQuantity - quantity);
} else {
items.remove(product);
}
}
}
```
- **遍历输出(listProducts)**:显示购物车中的商品和数量
```java
public void listProducts() {
for (Map.Entry<Product, Integer> entry : items.entrySet()) {
System.out.println("商品:" + entry.getKey() + " 数量:" + entry.getValue());
}
}
```
- **清空购物车(clear)**:删除购物车中的所有商品
```java
public void clear() {
items.clear();
}
}
```
3. **主函数(main function)**:
```java
public static void main(String[] args) {
ShoppingCart cart = new ShoppingCart();
Product apple = new Product("Apple", 100);
Product banana = new Product("Banana", 50);
// 添加商品
cart.addProduct(apple, 5);
cart.addProduct(banana, 3);
// 遍历输出
cart.listProducts();
// 删除商品
cart.removeProduct(apple, 2);
cart.removeProduct(banana, 1);
// 输出删除后的状态
cart.listProducts();
// 清空购物车
cart.clear();
// 判断是否已清空
if (cart.items.isEmpty()) {
System.out.println("购物车已清空");
}
}
```
在这个例子中,我们假设Product类已经定义好,包含商品名和默认数量(这里仅作示例,实际项目中可能需要更复杂的设计)。
阅读全文