购物车

1.       购物车程序

Item.java:商品类,包括商品编号itemID、商品名字itemName、商品简述itemDescription、商品单价itemPrice

package edu.cn;
public class Item {
	private String itemID;
	private String itemName;
	private String itemDescription;
	private double itemPrice;
	
	
	
	public Item(String itemID, String itemName, String itemDescription,
			double itemPrice) {
		super();
		this.itemID = itemID;
		this.itemName = itemName;
		this.itemDescription = itemDescription;
		this.itemPrice = itemPrice;
	}
	
	public String getItemID() {
		return itemID;
	}
	public void setItemID(String itemID) {
		this.itemID = itemID;
	}
	public String getItemName() {
		return itemName;
	}
	public void setItemName(String itemName) {
		this.itemName = itemName;
	}
	public String getItemDescription() {
		return itemDescription;
	}
	public void setItemDescription(String itemDescription) {
		this.itemDescription = itemDescription;
	}
	public double getItemPrice() {
		return itemPrice;
	}
	public void setItemPrice(double itemPrice) {
		this.itemPrice = itemPrice;
	}
	
	
}

2.orderItem.java已订购商品的类:包括商品Item对象item,商品数量numItems.

方法包括构造方法(默认商品数量为1)、getter、setter方法、获取设置item对象相关属性的方法

package edu.cn;

public class OrderItem {
	private Item item;
	private int numItems;
	
	public OrderItem(Item item){
		this.item=item;
		numItems=1;
	}

	public Item getItem() {
		return item;
	}

	public void setItem(Item item) {
		this.item = item;
	}

	public int getNumItems() {
		return numItems;
	}

	public void setNumItems(int numItems) {
		this.numItems = numItems;
	}

	public String getItemID(){
		return getItem().getItemID();
	}
	
	public String getItemName(){
		return getItem().getItemName();
	}
	
	public String getItemDescription(){
		return getItem().getItemDescription();
	}
	
	public double getItemPrice(){
		return getItem().getItemPrice();
	}
	
	public void cancelOrder(){
		setNumItems(0);
	}
	
	public double getTotalCost(){
		return getItemPrice()*getNumItems();
	}
	
	public void numIncremental(){
		setNumItems(getNumItems()+1);
	}
	
}

3.ShoppingCart购物车类:包括已订购商品的集合itemsOrdered.

方法包括构造方法,getter方法,当没有确定的购买数量时,默认购买商品数量为1,使用addItem,如果有购买商品数量,则调用setNumOrdered方法

package edu.cn;

import java.util.ArrayList;

public class ShoppingCart {

	private ArrayList<OrderItem> itemsOrdered;

	public ShoppingCart() {
		super();
		itemsOrdered=new ArrayList<OrderItem>();
	}

	public ArrayList<OrderItem> getItemsOrdered() {
		return itemsOrdered;
	}
	
	public void addItem(String itemID){
		OrderItem order;
		for(int i=0;i<itemsOrdered.size();i++){
			order=itemsOrdered.get(i);
			if(order.getItemID().equals(itemID)){
				order.numIncremental();
				return;
			}
		}
		OrderItem newOrder=new OrderItem(Catalog.getItem(itemID));
		itemsOrdered.add(newOrder);
	}
	
	public void setNumOrdered(String itemID,int num){
		OrderItem order;
		for(int i=0;i<itemsOrdered.size();i++){
			order=itemsOrdered.get(i);
			if(order.getItemID().equals(itemID)){
				order.setNumItems(num);
				return;
			}
		}
		OrderItem newOrder=new OrderItem(Catalog.getItem(itemID));
		itemsOrdered.add(newOrder);
	}
	
	
	
}

4.Catalog类:可购买商品的数据初始化类。Items商品数组。

方法getItem,根据商品编号获取商品对象。

package edu.cn;

public class Catalog {

	public static Item[] items={
		new Item("book001","JSP & Servlet","a book describes JSP & Servlet",30.00),
		new Item("book002","Android","a book describes how to learn Android programming",60.30),
		new Item("book003","XML","a book describes extensible markup language",20.40)
	};
	
	public static Item getItem(String itemID){
		Item item;
		if(itemID==null){
			return null;
		}
		for(int i=0;i<items.length;i++){
			item=items[i];
			if(item.getItemID().equals(itemID)){
				return item;
			}
		}
		return null;
	}
	
}

5.CatalogPage.jsp页面:商品列表页面,设置了一个hidden控件,名字叫"id",用于传递购买的商品编号。获取Catalog类中商品信息数据。

<%@ page language="java" import="java.util.*,edu.cn.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'CatalogPage.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
  <%int i=0;
  while(i<Catalog.items.length){ %>
    <form action="order.jsp" method="post">
    	<%=Catalog.items[i].getItemName() %><br> 
    	<%=Catalog.items[i].getItemDescription() %><br> 
    	<%=Catalog.items[i].getItemPrice() %><br>    	
    	<input type="hidden" name="id" value=<%=Catalog.items[i].getItemID()%>></input>
    	<input type="submit" value="buy"></input>
    </form>
    <%
    i++;} %>
  </body>
</html>

6.Order.jsp购物车处理页面:设置session对象的属性“cart”的值为ShoppingCart类型,代表整个购物车。通过hidden控件,获取form表单传递来的所购买的商品的编号:    orderID=request.getParameter("id");

在当前jsp页面中设置了一个form表单,也由order.jsp进行处理,在form表单中有一个控件,代表购买商品数量,是由购物车中的数量文本框提供,如果点击更新后,就会提交该参数,此时的商品数量不是默认的1,应调用ShoppingCart类的setNumOrdered方法,否则购买的商品数量为默认的1,调用addItem方法

<%@ page language="java" import="java.util.*,edu.cn.*,java.text.*" pageEncoding="utf-8" contentType="text/html; charset=utf-8" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'order.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
  	<%

  	String orderID;
  	double sum=0;
  	ShoppingCart cart=(ShoppingCart)session.getAttribute("cart");
  	if(cart==null){
  		cart=new ShoppingCart();
  	}
  	orderID=request.getParameter("id");
  		
  		if (orderID != null) {
        	String numItemsString = request.getParameter("numItems");
        	if (numItemsString == null) {
          
         		 cart.addItem(orderID);
        	}
        	else { 
          		int numItems;
          		try {
            			numItems = Integer.parseInt(numItemsString);
          			} catch(NumberFormatException nfe) {
            			numItems = 1;
          			}
          		cart.setNumOrdered(orderID, numItems);
        		}  		
  		}
  	
  	session.setAttribute("cart", cart); 
  	out.println("<table border=\"1\">");
	DecimalFormat df=new DecimalFormat("#.00");
	out.println("<tr><td>书名 </td><td>作者</td><td>单价</td><td>数量</td></tr>");
  	for(int i=0;i<cart.getItemsOrdered().size();i++){

  		OrderItem item=cart.getItemsOrdered().get(i);
  		out.println("<tr><td>"+item.getItemName()+"</td><td>"+item.getItemDescription()+"</td><td>"+item.getItemPrice()+"</td><td>");
  		out.println("<FORM>\n" +  "<INPUT TYPE=\"HIDDEN\" NAME=\"id\"\n" +
             "       VALUE=\"" + item.getItemID() + "\">\n" +
             "<INPUT TYPE=\"TEXT\" NAME=\"numItems\"\n" +
             "       SIZE=3 VALUE=\"" + 
             item.getNumItems() + "\">\n" +
             "<SMALL>\n" +
             "<INPUT TYPE=\"SUBMIT\"\n "+"       VALUE=\"Update Order\">\n" +
             "</SMALL>\n" +
             "</FORM>\n" +
             "</TD></tr>"); 
  		sum+=item.getItemPrice()*item.getNumItems();	
  	}
  	out.println("</table>");
  	out.println("总价 为 :"+df.format(sum));
  	%>
  	<br>
    <a href="CatalogPage.jsp">继续购物</a>
    
  </body>
</html>






  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值