网购商城 普通购物车功能的实现

本文详细介绍了购物车的设计思想及其实现方式,包括利用CartItem类封装商品信息、数量及总价,以及通过CartBizImpl类提供的方法如添加、更新、删除商品等。整个购物车功能在业务逻辑层实现,并未涉及数据库操作。

购物车的设计思想如下:

  1. 购物车中放入的信息是用户在完成生成订单前添加的商品信息,一般 购物商城中 对于购物车中的信息 大多数是存放在会话session中 并未牵扯到数据库 
  2. 购物车中显示的是一条或多条商品条目,而商品条目中一般包括 :商品的基本信息 (商品名称 商品的单价),购买数量 ,每个商品条目的价钱小计,最后 往往有购物车中所有商品的价格总计。
  3.  经过上面的分析 我们可以定义一个购物车条目类 即CartItem 在该类即对购物车中每个商品条目的封装 实现了商品信息,购买数量,价格总计的定义。其中totalPrice为只读属性 因为该属性值可以通过内部计算获取
public class CartItem {
	private FoodInfo finfo;
	private int iCount;
	private float totalPrice;
	public FoodInfo getFinfo() {
		return finfo;
	}
	public void setFinfo(FoodInfo finfo) {
		this.finfo = finfo;
	}
	public int getiCount() {
		return iCount;
	}
	public void setiCount(int iCount) {
		this.iCount = iCount;
	}
	public float getTotalPrice() {
		this.totalPrice=this.iCount*this.finfo.getFood_price();
		return totalPrice;
	}
	public CartItem(FoodInfo finfo, int iCount) {
		super();
		this.finfo = finfo;
		this.iCount = iCount;
	}
	
}
因为 本次购物车 并未牵扯到数据库 所以 在购物车的实现我们直接在业务逻辑层中来完成。cartAdd方法用来实现商品条目添加,首先判断购物车中是否存在该商品 如果有更新即可否则加入cartMap中;getCartMap()方法用来读取购物车中信息;cartUpd()方法用来更新修改购物车中的信息;cartDel用来删除购物车中的某一个商品;cartClear()用来实现 清空购物车

public class CartBizImpl implements CartBiz {
//声明定义Map对象 cartMap用来存放 商品条目cartItem。其中key为商品编号 value为cartItem
	private HashMap<Integer, CartItem> cartMap=new HashMap<Integer, CartItem>();
	public boolean cartAdd(CartItem ci) {
		if(cartMap.containsKey(ci.getFinfo().getFood_id())){
			CartItem cOld=cartMap.get(ci.getFinfo().getFood_id());
			cOld.setiCount(ci.getiCount()+cOld.getiCount());
		}
		else{
			cartMap.put(ci.getFinfo().getFood_id(), ci);
		}
		return true;
	}

	public HashMap<Integer, CartItem> getCartMap() {
		return this.cartMap;
	}

	public boolean cartUpd(CartItem ci) {
		cartMap.put(ci.getFinfo().getFood_id(), ci);
		return true;
	}

	public boolean cartDel(int foodid) {
		cartMap.remove(foodid);
		return true;
	}

	public boolean cartClear() {
		cartMap.clear();
		return true;
	}
	public CartItem get(int foodId){
		return cartMap.get(foodId);
	}

}
 在购物车的servlet中 来具体实现购物车的功能,因为购物车业务类在每次声明创建之后 完成了本次servlet它的生命周期 即结束 所以 我们将其放入session中 已达到 该业务类 能够在 整个会话期间使用

CartItem ci=new CartItem(fi,iCount);
		boolean flag=false;
		if(session.getAttribute("shopCart")==null){
			CartBiz cb=new CartBizImpl();
			flag=cb.cartAdd(ci);
			session.setAttribute("shopCart", cb);
		}
		else{
			CartBiz cb=(CartBiz)session.getAttribute("shopCart");
			flag=cb.cartAdd(ci);
			session.setAttribute("shopCart", cb);
		}

以上只是简单的给出了 购物车商品信息的添加 其更新功能此处就不加 说明了

转载于:https://my.oschina.net/hxlzpnyist/blog/60020

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值