java中servlet的购物车程序是怎么样的流程?
购买过程就是选择好物品放入购物车然后结账
import java.util.Vector;
public class gouwuche {
/**
* @param args
*/
private static Vector vec = new Vector();
public static void gw(String name,int price,int sum)
{
gouwuchebean bean;
if(vec.size()>0)
{
//说明购物车内有物品 进来比对 看是否有一样的东西 有的话让数量+sum
bean = new gouwuchebean();
int j=0;//用来计数
for(int i=0;i<vec.size();i++)
{
gouwuchebean bean1 = (gouwuchebean)vec.get(i);
if(bean1.getName().equals(name))
{
j++;
bean.setName(name);
bean.setPrice(price);
bean.setSum(sum+bean1.getSum());
vec.remove(i);//去掉原来的数据
vec.add(bean);//放入新的数据
}
}
if(j==0)
{
bean.setName(name);
bean.setPrice(price);
bean.setSum(sum);
vec.add(bean);
}
}
else
{
//如果集合是空的说明购物车内没有重复的 直接放入即可
bean = new gouwuchebean();
bean.setName(name);
bean.setPrice(price);
bean.setSum(sum);
vec.add(bean);
}
}
public static void show()
{
System.out.println("=============购物车当前物品==============");
int sum = 0;//用来计一共有几件物品
int pric = 0;//用来计共消费金额
for(int i=0;i<vec.size();i++)
{
gouwuchebean bean = (gouwuchebean)vec.get(i);
sum = sum+bean.getSum();
pric = pric+(bean.getPrice()*bean.getSum());
System.out.println("*第"+(i+1)+"种物品-----名称:"+bean.getName()+"---数量是:"+bean.getSum()+"---单价是:"+bean.getPrice()+"元----共计"+(bean.getSum()*bean.getPrice()+"元"));
}
System.out.println("物品共计"+sum+"件 共计金额是:"+pric+"元");
System.out.println("=============欢迎使用购物车==============");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
gw("电视机",100,1);//选择购买物品 价格和数量还有名字
gw("可口可乐",100,9);
gw("电视机",100,9);
gw("西瓜",10,5);
gw("电动车",3000,2);
gw("奥迪A6",4000000,2);
show();
}
}
测试结果
Java 如何实现类似购物车功能
给你介绍三种可以实现购物车636f707962616964757a686964616f31333365653331功能的方法:
1.用cookie实现购物车;
2.用session实现购物车;
3.用cookie和数据库(购物车信息持久化)实现购物车;
=======================================================
分析一下这三种方法的优缺点:
1.单纯有cookie实现购物车,这样的购物车不是很理想,设想一下,如果客户端的浏览器把cookie给禁用了,这种方法就会在这里流产...
2.session中保存购物车的信息,这个只是在一个会话中可用,如果用户没有登录,或者说登录了以后,添加购物车,在关闭浏览器或者登出后,之前所添加的购物车通通都流产啦...
3.用cookie和数据库(购物车信息持久化)实现购物车;
主要的流程:
A.用户登录前的数据流:用户在没有登录系统的时候,对喜欢的商品进行添加购物车,那么这个时候,我们可以把购物车信息保存
到cookie中,这里会涉及到cookie的添加,修改操作;也即如果之前在cookie中不存对应的cookie,则就对cookie进行添加操作。
如果在cookie中存在对应的cookie,那么,这时候,就要对cookie进行修改操作了(这里涉及到用户对同一个商品进行多次添加购物车的情况)。
B.用户登录后的数据流:用户在登录后,系统首先做的第一件事就是去获取对应的cookies,如果存在相关的购物车cookies,那么就对该购物车
信息进行相应用户User的持久化操作,要么添加,要么修改。
(添加操作:该用户所对应的购物车如果没有相应的信息进行添加操作;修改操作:类似的,
如果存在对应用户的购物车信息,就进行修改操作)。
用户登录后,也可以进行购物车的添加操作,不过,这里不是添加到cookie中,而是直接持久化到数据库中。
高手,求用java编程实现网上超市购物结算功能代码
例如你的购物车类叫ShoppingCar,类里有一个价格属性叫price,你选择了好多东西到购物车里,那就有了一个ShoppingCar的集合。
然后遍历你的集合:
ShoppingCarDao shoppingCarDao=new ShoppingCarDaoImpl();
List<ShoppingCar> list=shoppingCarDao.getShoppingList();//调用从数据库中的购物车表中获取数据的方法。
double totalPrice=0;//为总价钱赋初始值
for(ShoppingCar car :list ){
totalPrice=totalPrice+car.getPrice();//遍历每一个购物车对象并获取每一个对象的价格,加入到总价
}
大概就是这么个思路,希望能对你有所提示。
用java模拟购物车
.shopping;
import?java.util.HashMap;
import?java.util.Map;
public?class?ShoppingTrolley?{
????public?ShoppingTrolley()?{
????????super();
????}
????private?Map<String,?Integer>?amountOfItem?=?new?HashMap<String,?Integer>();
????/**
?????*?Add?item?to?shopping?trolley.
?????*
?????*?@param?itemID
?????*?@param?amount
?????*?@return?Indicate?it?is?added?sucessfully.
?????*/
????public?void?addItem(String?itemID,?int?amount)?{
????????if?(amountOfItem.containsKey(itemID))?{
????????????amountOfItem.put(itemID,?amountOfItem.get(itemID)?+?amount);
????????}?else?{
????????????amountOfItem.put(itemID,?amount);
????????}
????}
????/**
?????*?Remove?item?from?shopping?trolley.
?????*
?????*?@param?itemID
?????*?@param?amount
?????*?@return?Indicate?it?is?added?sucessfully.
?????*/
????public?void?removeItem(String?itemID,?int?amount)?{
????????if?(amountOfItem.containsKey(itemID))?{
????????????if?(amount?>=?amountOfItem.get(itemID))?{
????????????????amountOfItem.remove(itemID);
????????????}?else?{
????????????????amountOfItem.put(itemID,?amountOfItem.get(itemID)?-?amount);
????????????}
????????}
????}
}上面代码是问题1
问题2 下图是类图 代码都在附件里
求java购物车例子。要用框架struts+hibernate+spring
java教程购物车Struts Hibernate实现shopcart
全部代码在
/article.asp?id=1038
原理:利用session会话保持用户一次购物操作的购买记录,当用户点击“结帐”后将保存在session中的hashmap容器中的信息insert到DB中,完成一次购物操作。
模块所需要配置文件:hibernate.cfg.xml ,TableGoods.hbm.xml ,struts-config.xml
模块对应的jsp有:index.jsp(商品信息一览页面),buy.jsp(购买操作后的商品清单页面)
模块对应的action有:IndexAction (实现对DB中的商品表信息结果集的遍历,并转向对应的index.jsp)
ListAction (将JSP上的商品信息存入hashmap容器,并转向对应的buy.jsp)
UpdateAction (对buy.jsp页面上的商品数量修改的业务逻辑处理)
DeleteAction (对buy.jsp页面上的商品列表信息的业务逻辑处理)
模块所需的相关Java容器选择:存储商品id,sum,price,name,allprices信息用hashmap,主要是考虑到其key重复后可以覆盖上次的value记录。
存储点击商品后的商品id用list容器,主要考虑到list是有序并可以重复的特点,用其可以跟踪用户多次点击相同商品的操作,并对商品的数量进行相应的增加。
模块主要Action类如下:
IndexAction:
public class IndexAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
//查找商品表中的所有商品信息
GoodsDAO dao = new GoodsDAO();
List list = dao.find();
request.setAttribute("lister",list);
return mapping.findForward("a");
}
}
ListAction:
public class ListAction extends Action {
// 将hashmap中value转到list中
public static List getList(HashMap hs) {
List list = new ArrayList();
Iterator itr = hs.keySet().iterator();
while (itr.hasNext()) {
list.add(hs.get(itr.next()));
}
return list;
}
//优化后的getList方法
public static List getList(HashMap hs) {
return new ArrayList(hs.values());
}
全部代码在
/article.asp?id=1038