Session ArrayList 实现购物车程序

本文介绍了一个简单的购物车系统实现方案,包括商品类的设计、购物车的添加与删除操作等核心功能。通过Java语言实现了商品对象的创建、存储及管理。
 

一、构建的商品类

//写一个Goods类,并定义商品的各个属性,返回商品属性的方法,以及商品对象进行比较的方法
//Goods.java

复制内容到剪贴板
代码:
package sobook.shopcar;
public class Goods implements Comparable{
//初始化各成员变量
     private String Id = null;
     private String name = null;
     private float price = 0.00F;
     private int number = 0;
     private String percent = null;
    
     public Goods(String Id,String name,float price,int number,String percent){
         this.Id = Id;
         this.name = name;
         this.price = price;
         this.number = number;
         this.percent = percent;
     }
     public String getId()       //返回订购商品的编号Id
     {
         return this.Id;
     }
     public String getName()    //返回订购商品的名称name
     {
         return this.name;
     }
     public float getPrice()       //返回订购商品的价格price
     {
         return this.price;    
     }
     public int getNumber()        //返回订购商品的数量number
     {
         return this.number;    
     }
     public String getPercent()    //返回订购商品的优惠百分比
     {
         return this.percent;
     }
     public int compareTo(Object m) //返回订购商品比较的结果
     {
         Goods n = (Goods)m;
         int comRs = Id.compareTo(n.Id);
         return comRs;
     }    
}

二、购物车

//首先建立Goods(商品)对象goods,并建立建立ArrayList对象ay
//通过ArrayList对象的方法add()将商品对象添加到ArrayList对象ay中
//由于ArrayList对象是具有添加和删除成员的方法,从而实现多个商品存储管理于ArrayList对象
//将ArrayList对象ay存储于session对象当中,实现购物车功能
//shopcar.jsp

复制内容到剪贴板
代码:
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*,sobook.shopcar.*,java.util.*" %>
//this code by hongseheike
<%
//设置编码格式
request.setCharacterEncoding("gb2313");
//获取参数信息
String id = request.getParameter("id");
String name = request.getParameter("name");
int number = java.lang.Integer.parseInt(request.getParameter("number"));
float price= java.lang.Float.parseFloat(request.getParameter("price"));
String percent = request.getParameter("percent");
//建立商品对象和ArrayList对象
Goods goods = new Goods(id,name,price,number,percent);
ArrayList ay = null;
//如果session中从未写入过,则将建立的商品对象添加到ArrayList对象当中,并写入 session
if((ArrayList)session.getAttribute("car")==null)
{
ay = new ArrayList();
     ay.add(goods);
     session.setAttribute("car",ay);
     response.sendRedirect("order_index.jsp");
}
//如果写如过,则将商品对象添加到ArrayList对象当中,并写入 session
else
{
ay=(ArrayList)session.getAttribute("car");
     //如果ArrayList 对象为空,则直接添加到ArrayList对象当中
if(ay.isEmpty())
{
         ay.add(goods);
         session.setAttribute("car",ay);
         response.sendRedirect("order_index.jsp");
     }
     //如果ArrayList 对象不为空,则判断购入商品是否已经存在于车中
     else
{
         Iterator it = ay.iterator();
         for(int i = 0;i<ay.size();i++) //下面还有另一种遍历方法
         {
             Goods shop = (Goods)it.next();
//如果购入商品已经存在,则打印输入提示信息
             if(shop.compareTo(goods)==0)
{
             out.println("<script>alert('你已经订购了此图书!');window.close();</script>");
             }
//如果购入商品不存在,则直接将商品添加到ArrayList对象当中,并写入 session
             else
             {
             ay.add(goods);
             session.setAttribute("car",ay);
             response.sendRedirect("order_index.jsp");
             }
         }
     }
}                
%>

三、删除商品

//对购物车中的商品进行删除操作
//removeGoods.jsp

复制内容到剪贴板
代码:
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*,sobook.shopcar.*,java.util.*" %>
<%
//设置编码格式
request.setCharacterEncoding("gb2313");
//获取参数信息
String id = request.getParameter("id");
String name = request.getParameter("name");
float price = java.lang.Float.parseFloat(request.getParameter("price"));
int number = java.lang.Integer.parseInt(request.getParameter("number"));
String percent = request.getParameter("percent");
//创建符合条件参数要删除的商品对象
Goods goods = new Goods(id,name,price,number,percent);
//获取session 中存储的ArrayList对象
ArrayList ay = (ArrayList)session.getAttribute("car");
Iterator it = ay.iterator();
//遍历ArrayList对象,并将ArrayList对象中的元素和创建的符合参数条件要删除的商品进行比较
for(int i = ay.size();it.hasNext();i--)
{
     Goods shop = (Goods)it.next();
    
//查询是否有ArrayList对象中的元素与要删除的商品相同
     if(shop.compareTo(goods)==0)
{
         int index = ay.indexOf(shop);    
        
//如果ArrayList对象已经为空,则跳转
         if(ay.isEmpty())
{
             response.sendRedirect("order_index.jsp");
         }
        
//如果ArrayList对象不为空,则从其中移去要与要删除的商品条件相符的元素,并重新写session
         else
{
             ay.remove(index);
             session.setAttribute("car",ay);
             response.sendRedirect("order_index.jsp");
         }
     }
     else
{
         out.print("程序异常");
     }
}
%>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值