java 购物车功能的实现

1.新建Cart、CartItem类

import java.util.HashMap;
public class Cart {
	private HashMap<String,CartItem> cartItems=new HashMap<String,CartItem>();
	  
	private double total;//总计
	public HashMap<String, CartItem> getCartItems() {
		return cartItems;
	}
	public void setCartItems(HashMap<String, CartItem> cartItems) {
		this.cartItems = cartItems;
	}

	public double getTotal() {
		return total;
	}

	public void setTotal(double total) {
		this.total = total;
	}
}

public class CartItem {

	  private Product product;//商品
	  
	  private int buyNum;//个数
	  
	  private double subTotal;//小计

	public Product getProduct() {
		return product;
	}

	public void setProduct(Product product) {
		this.product = product;
	}

	public int getBuyNum() {
		return buyNum;
	}

	public void setBuyNum(int buyNum) {
		this.buyNum = buyNum;
	}

	public double getSubTotal() {
		return subTotal;
	}

	public void setSubTotal(double subTotal) {
		this.subTotal = subTotal;
	}
	     
}

2.ProductServlet类,处理购物车功能

public void addProductToCard(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		   //获取商品编号
		   String pid= request.getParameter("pid");
		   //购买数量
		   int buyNum=Integer.parseInt(request.getParameter("buyNum"));
		   Product product= productService.findProductByPid(pid);
		   HttpSession session=request.getSession();
		   Cart cart= (Cart) session.getAttribute("cart");
		   if(cart==null){
			   cart=new Cart();
		   }
		   CartItem cartItem=new CartItem();
		   cartItem.setBuyNum(buyNum);
		   cartItem.setProduct(product);
		   //计算小计
		   double subTotal=product.getShop_price()*buyNum;
		   cartItem.setSubTotal(subTotal);
		   
		   HashMap<String,CartItem> cartItems= cart.getCartItems();
		   double newSubTotal=0;
		   if(cartItems.containsKey(pid)){
			   CartItem item= cartItems.get(pid);
			   //修改数量
			   int oldBuyNum= item.getBuyNum();
			   oldBuyNum=oldBuyNum+buyNum;
			   item.setBuyNum(oldBuyNum);
			   //修改小计
			   double oldSubTotal= item.getSubTotal();
			   newSubTotal=buyNum*product.getShop_price();
			   oldSubTotal=oldSubTotal+newSubTotal;
			   item.setSubTotal(oldSubTotal);
		   }else{
			   cartItems.put(pid, cartItem); 
			   newSubTotal=buyNum*product.getShop_price();
		   }
		   
		   //计算 总计
		   double total=cart.getTotal()+newSubTotal;
		   cart.setTotal(total);
		   cart.setCartItems(cartItems);
		   session.setAttribute("cart", cart);
		   request.getRequestDispatcher("cart.jsp").forward(request, response);
}


3.ProductServlet类,删除购物车商品 

//删除指定的商品
	public void deleteCartByPid(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException{
		  //获取商品编号
		   String pid= request.getParameter("pid");
		   HttpSession session= request.getSession();
		   Cart cart= (Cart) session.getAttribute("cart");
		   if(cart !=null){
			  HashMap<String,CartItem> cartItems= cart.getCartItems();
			  //修改总价
			  CartItem cartItem=cartItems.get(pid);
			  cart.setTotal(cart.getTotal()-cartItem.getSubTotal());
			  cartItems.remove(pid);
			  cart.setCartItems(cartItems);
		   }
		   
		   session.setAttribute("cart",cart);
		   request.getRequestDispatcher("cart.jsp").forward(request, response);
}

4.ProductServlet类,清空购物车商品

public void clearCart(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException{
		HttpSession session= request.getSession();
		if(session.getAttribute("cart")!=null){
			session.removeAttribute("cart");
		}
		request.getRequestDispatcher("cart.jsp").forward(request, response);
	}


  • 5
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Java购物车的简单实现可以通过以下步骤来完成: 1. 创建商品类(Product):定义商品的属性,如商品名称、价格等,并提供相应的构造方法和获取属性值的方法。 2. 创建购物车类(ShoppingCart):购物车类用于管理用户选择的商品。可以使用一个列表或者数组来存储用户选择的商品。购物车类应该提供以下功能: - 添加商品到购物车 - 从购物车中移除商品 - 获取购物车中的所有商品 - 计算购物车中商品的总价 3. 创建主程序类(Main):在主程序类中,可以创建商品对象和购物车对象,并通过调用购物车类的方法来实现购物车的功能。 下面是一个简单的Java购物车实现的示例代码: ```java // 商品类 class Product { private String name; private double price; public Product(String name, double price) { this.name = name; this.price = price; } public String getName() { return name; } public double getPrice() { return price; } } // 购物车类 class ShoppingCart { private List<Product> products; public ShoppingCart() { products = new ArrayList<>(); } public void addProduct(Product product) { products.add(product); } public void removeProduct(Product product) { products.remove(product); } public List<Product> getProducts() { return products; } public double getTotalPrice() { double totalPrice = 0; for (Product product : products) { totalPrice += product.getPrice(); } return totalPrice; } } // 主程序类 public class Main { public static void main(String[] args) { // 创建商品对象 Product product1 = new Product("商品1", 10.0); Product product2 = new Product("商品2", 20.0); // 创建购物车对象 ShoppingCart shoppingCart = new ShoppingCart(); // 添加商品到购物车 shoppingCart.addProduct(product1); shoppingCart.addProduct(product2); // 获取购物车中的所有商品 List<Product> products = shoppingCart.getProducts(); for (Product product : products) { System.out.println("商品名称:" + product.getName() + ",价格:" + product.getPrice()); } // 计算购物车中商品的总价 double totalPrice = shoppingCart.getTotalPrice(); System.out.println("购物车中商品的总价:" + totalPrice); } } ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值