diff --git a/src/com/yj/bean/Cart.java b/src/com/yj/bean/Cart.java index 3ba99bf..782eac6 100644 --- a/src/com/yj/bean/Cart.java +++ b/src/com/yj/bean/Cart.java @@ -13,93 +13,128 @@ import java.util.Map; * 购物车对象 */ public class Cart { + // 注释掉的代码表示之前可能考虑过直接存储总数和总价,但在此实现中,选择动态计算这些值 //private Integer totalCount; //private BigDecimal totalPrice; + /** + * 获取购物车中所有商品的总数量 + */ public Integer getTotalCount() { Integer totalCount = 0; + // 初始化总数量为0 for (Map.Entryentry : items.entrySet()) { + // 遍历购物车中的每一项 totalCount += entry.getValue().getCount(); + // 累加每一项的数量 } return totalCount; + // 返回总数量 } - + /** + * 获取购物车中所有商品的总价格 + */ public BigDecimal getTotalPrice() { BigDecimal totalPrice = new BigDecimal(0); + // 初始化总价格为0 for (Map.Entryentry : items.entrySet()) { + // 遍历购物车中的每一项 totalPrice = totalPrice.add(entry.getValue().getTotalPrice()); + // 累加每一项的总价格 } return totalPrice; + // 返回总价格 } - + /** + * 获取购物车中的所有商品项 + */ public Map getItems() { return items; + // 返回购物车中的商品项 } + /** + * 设置购物车中的所有商品项 + */ public void setItems(Map items) { this.items = items; + // 设置购物车中的商品项 } /** - * key是商品编号,value是商品信息 + * 商品项存储的Map,key是商品编号,value是商品信息,使用LinkedHashMap保持插入顺序 */ private Map items = new LinkedHashMap(); + /** + * 重写toString方法,用于打印购物车信息 + */ @Override public String toString() { return "Cart{" + "totalCount=" + getTotalCount() + + // 总数量 ", totalPrice=" + getTotalPrice() + + // 总价格 ", items=" + items + + // 商品项 '}'; } /** - * 添加商品项 - * @param cartItem + * 添加商品项到购物车 + * @param cartItem 要添加的商品项 */ public void addItem(CartItem cartItem) { - //先查看购物车中是否包含次商品,如果有的话,数量更新,总金额更新;如果没有,直接放到集合中即可 + // 先查看购物车中是否包含此商品 CartItem item = items.get(cartItem.getId()); if(item == null) { - //之前没有添加过此商品 + // 之前没有添加过此商品,直接添加到购物车中 items.put(cartItem.getId(),cartItem); } else { - item.setCount(item.getCount() + 1);//数量累计 - item.setTotalPrice(item.getPrice().multiply(new BigDecimal(item.getCount())));//更新总金额 + // 购物车中已有此商品,数量加1,并更新总金额 + item.setCount(item.getCount() + 1); + // 数量累计 + item.setTotalPrice(item.getPrice().multiply(new BigDecimal(item.getCount()))); + // 更新总金额 } } /** - * 删除商品项 - * @param id + * 从购物车中删除指定编号的商品项 + * @param id 要删除的商品项的编号 */ public void deleteItem(Integer id) { items.remove(id); + // 从购物车中删除指定编号的商品项 } /** - * 清空购物车 + * 清空购物车中的所有商品项 */ public void clear() { items.clear(); + // 清空购物车 } /** - * 修改商品数量 - * @param id - * @param count + * 修改购物车中指定编号的商品项的数量 + * @param id 商品项的编号 + * @param count 新的数量 */ public void updateCount(Integer id,Integer count) { - //先查看购物车中是否包含次商品,如果有的话,数量更新,总金额更新; + // 先查看购物车中是否包含此商品项 CartItem cartItem = items.get(id); - if(cartItem != null) { - cartItem.setCount(count); - cartItem.setTotalPrice(cartItem.getPrice().multiply(new BigDecimal(cartItem.getCount()))); + if(cartItem != null) { + // 购物车中已有此商品项,修改数量并更新总金额 + cartItem.setCount(count); + // 修改数量 + cartItem.setTotalPrice(cartItem.getPrice().multiply(new BigDecimal(cartItem.getCount()))); + // 更新总金额 } } -} +} \ No newline at end of file