基于JSP网上书店系统 第6页
2)证明是合法用户后,就必须给这个用户一个购物车,用户每次选中一本书,点击“放入购物车”,就必须添加一个订购单。这就相当于把用户要买的书放入购物车里,insertOrder()就是用来实现这些的,其主要代码如下:
public void insertOrder()//insert intoDataBase
{
try
{
if(orderPrice==0)
return;
OrderEntity oe=new OrderEntity("null",userName,"null",Integer.toString(orderPrice));
//insert order
orderId=oe.insertOrder();
//创建一个购物车,并且获得它的id号
//insert order items
for(int i=0;i<orderItem.size();i++)
{
OrderItemEntity oi=(OrderItemEntity)orderItem.elementAt(i);
oi.setOrderId(orderId);
oi.insertOrderItem();
}
}
catch(SQLException ex)
{
System.err.println("InsertOrder executeQuery: " + ex.getMessage());
}
//clear order variable
orderItem.removeAllElements();
orderPrice=0;
}
当orderPrice==0,说明用户还没有开始买书,在这个时候创建购物车,并且获得它的id号,保存在orderId这个变量里。一个客户可以有很多张订购单,但是购物车id号是一样的,所以在插入订购单的时候,必须把其购物车的id号设置为orderId。
3)addOrderItem(String productId,String productPrice)实现的是购买一种商品多次:
public void addOrderItem(String productId,String productPrice)
{
for(int i=0;i<orderItem.size();i++)
{
OrderItemEntity oi=(OrderItemEntity)orderItem.elementAt(i);
String pId=oi.getProductId();
if(pId.compareTo(productId)==0)
{
int num=Integer.parseInt(oi.getProductNum());
++num;
oi.setProductNum(Integer.toString(num));
//修改购买productId的书的数量
this.orderPrice+=Integer.parseInt(productPrice);
//总价格要加上新买的书的价格
return;
}
}
OrderItemEntity oiNew=new OrderItemEntity("null","null",productId,"1",Integer.parseInt(productPrice));
orderItem.add(oiNew);
this.orderPrice+=Integer.parseInt(productPrice);
}
因为每点击一次“放入购物车”,只能购买相应的商品一次,并且数量之能为1。但是购买的是同一个商品,其productId是一致的,要重新写入一张订购单,就必须把原来productId的订购单修改一下就可以了。比较用户确实是买的一样id的书:pId.compareTo(productId),如果是,则修改订购单的数量,num++,把总价格加上本书的价格:
this.orderPrice+=Integer.parseInt(productPrice); 通过以上的操作,把修改后的结果作为新的属性重新插入成新的订购单。
4)用户可以购买一种书多次,那么当它放入购物车后,发现拿多了,也应该可以把多余的退出来,其实现原理和addOrderItem是一样的,其具体代码陈列如下:
public void deleteOrderItem(String productId)
{
for(int i=0;i<orderItem.size();i++)
{
OrderItemEntity oi=(OrderItemEntity)orderItem.elementAt(i);
String pId=oi.getProductId();
if(pId.compareTo(productId)==0)
{
int num=Integer.parseInt(oi.getProductNum());
--num;
oi.setProductNum(Integer.toString(num));
if(num==0)
orderItem.removeElementAt(i);
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] 下一页