1、建立购物车实体类
Cart 类 //实体类
package com.shore.entity;
import java.util.HashMap;
import java.util.Map;
public class Cart {
//Map集合中,可能有很多本书
private Map<String, CartItem> items = new HashMap<String, CartItem>();//key:购物项对应的书的id value:购物项
private int num;//购物车中,书籍的数量
private float price;//总价,付款时的金额
public Map<String, CartItem> getItems() {
return items;
}
public int getNum() {
num = 0;
for(Map.Entry<String, CartItem> me:items.entrySet()){
num += me.getValue().getNum();
}
return num;
}
/*public void setNum(int num) {//不能设置书籍的数量
this.num = num;
}*/
public float getPrice() {
price = 0;
for(Map.Entry<String, CartItem> me:items.entrySet()){
price += me.getValue().getPrice();
}
return price;
}
/*public void setPrice(float price) {//不能设置价格
this.price = price;
}*/
//把商品加入购物车
public void addCart(Book book) {//同一本书,可购买了多本
if(items.containsKey(book.getId())){
//有这本书的id(当同一本书,我购买两本或更多本时,保持其他字段的属性不变,只增加数量)
CartItem item = items.get(book.getId());
item.setNum(item.getNum() + 1);//其他不改变,只增加数量
}else{
//没有这本书的id
CartItem item = new CartItem();
item.setBook(book);
item.setNum(1);
items.put(book.getId(), item);
}
}
//删除购物车中的商品(同一种商品,有多个时,则是减少该商品的数量)
public void deleteCartByBook(String bookId) {
CartItem item = items.get(bookId);
if (item.getNum() > 1) {//购物车中,同一商品,购买了多件,则每删除一次,该商品的数量就减一次(价格自动减少)
item.setNum(item.getNum() - 1);//其他不改变,只减少数量
}else {
items.remove(bookId);
}
}
}
CartItem 类 //购物项类
package com.shore.entity;
public class CartItem {//购物项
private Book book;
private int num;
private float price;
public Book getBook() {
return book;
}
public void setBook(Book book) {
this.book = book;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public float getPrice() {
return num*book.getPrice();//计算出同一本书的总价(或同一类书)
}
/*public void setPrice(float price) {//不能设置价格
this.price = price;
}*/
}