购物车实现
程序员文章站
2024-03-20 13:43:22
...
cart实现
public class Cart {
private Map<String,CartItem> map = new LinkedHashMap<String,CartItem>();
/**
* 计算合计
* @return
*/
public double getTotal() {
// 合计=所有条目的小计之和
BigDecimal total = new BigDecimal("0");
for(CartItem cartItem : map.values()) {
BigDecimal subtotal = new BigDecimal("" + cartItem.getSubtotal());
total = total.add(subtotal);
}
return total.doubleValue();
}
/**
* 添加条目到车中
* @param cartItem
*/
public void add(CartItem cartItem) {
if(map.containsKey(cartItem.getBook().getBid())) {//判断原来车中是否存在该条目
CartItem _cartItem = map.get(cartItem.getBook().getBid());//返回原条目
_cartItem.setCount(_cartItem.getCount() + cartItem.getCount());//设置老条目的数量为,其自己数量+新条目的数量
map.put(cartItem.getBook().getBid(), _cartItem);
} else {
map.put(cartItem.getBook().getBid(), cartItem);
}
}
/**
* 清空所有条目
*/
public void clear() {
map.clear();
}
/**
* 删除指定条目
* @param bid
*/
public void delete(String bid) {
map.remove(bid);
}
/**
* 获取所有条目
* @return
*/
public Collection<CartItem> getCartItems() {
return map.values();
}
}
CartItem实现
public class CartItem {
private Prodict product;// 产品
private int count;// 数量
public Book getBook() {
return book;
}
public void setBook(Book book) {
this.book = book;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
/**
* 小计方法
* @return
* 处理了二进制运算误差问题
*/
public double getSubtotal() {//小计方法,但它没有对应的成员!
BigDecimal d1 = new BigDecimal(book.getPrice() + "");
BigDecimal d2 = new BigDecimal(count + "");
return d1.multiply(d2).doubleValue();
}
}
添加购物车实现
/*
* 1. 得到车
* 2. 得到条目(得到图书和数量)
* 3. 把条目添加到车中
*/
/*
* 1. 得到车
*/
Cart cart = (Cart)request.getSession().getAttribute("cart");
/*
* 表单传递的只有bid和数量
* 2. 得到条目
* > 得到图书和数量
* > 先得到图书的bid,然后我们需要通过bid查询数据库得到Book
* > 数量表单中有
*/
String bid = request.getParameter("bid");
Book book = new BookService().load(bid);
int count = Integer.parseInt(request.getParameter("count"));
CartItem cartItem = new CartItem();
cartItem.setBook(book);
cartItem.setCount(count);
/*
* 3. 把条目添加到车中
*/
cart.add(cartItem);
上一篇: COOKIE
下一篇: 顺序表——插入不重复元素