欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

购物车实现

程序员文章站 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);
相关标签: session 购物车