本文目录
- 编程 java 关于购物车
- 用java模拟购物车
- 达内 java的购物车商品 不能重复添加 的代码
- Java使用字符串生成器来保存购物车中的商品信息,并能实现商品信息的添加、删除以及修改等功能
- JAVA语言编写的网上订餐系统购物车功能如何实现
- Java 如何实现类似购物车功能
编程 java 关于购物车
点击数量进入购物车页面,这个应该好做吧,跳动一个Action转发到购物车页面下面是我的图书购物车(自己写的)package com.jc.ts.services;import java.math.BigDecimal;import java.util.Collection;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import com.jc.ts.entity.BookCar;import com.jc.ts.entity.BookInfo;/** * 该类提供购物车的操作 * */public class CartItemsService { private Map《String,BookCar》 itemMap=null;//购物车Map集合 private Collection《BookCar》 items;//购物车项 public CartItemsService() { itemMap=new HashMap《String ,BookCar》(); } public Collection《BookCar》 getItems() { return items; } public void setItems(Collection《BookCar》 items) { this.items = items; } public Map《String, BookCar》 getItemMap() { return itemMap; } public void setItemMap(Map《String, BookCar》 itemMap) { this.itemMap = itemMap; } public int getBookCarSize() { return itemMap.size(); } public boolean containById(String bookid) { return itemMap.containsKey(bookid); } public void addBookCarItems(BookInfo bookInfo) { if(bookInfo!=null) { BookCar bookCar=(BookCar)itemMap.get(bookInfo.getBid()); if(bookCar==null) { bookCar=new BookCar(); bookCar.setBookinfo(bookInfo); bookCar.increaseQuantity(); itemMap.put(bookInfo.getBid(),bookCar); items=itemMap.values(); }else { bookCar.increaseQuantity(); } } } public BookInfo removeCarItem(String bookid) { BookCar bookCar=itemMap.remove(bookid); if(bookCar==null) { return null; } items=itemMap.values(); return bookCar.getBookinfo(); } public BigDecimal getBookCarTotal()//获得总金额 { BigDecimal carTotal=new BigDecimal(“0.00“); Iterator《BookCar》 iterator=this.getAllCartItems(); while(iterator.hasNext()) { BookCar bookCar=iterator.next(); BigDecimal carPrice=bookCar.getBookinfo().getBprice(); BigDecimal quantity=new BigDecimal(String.valueOf(bookCar.getQuantity())); carTotal=carTotal.add(carPrice.multiply(quantity)); } return carTotal; } public Iterator《BookCar》 getAllCartItems(){ return itemMap.values().iterator(); } public void increaseQuantityById(String bookid) { BookCar bookCar=itemMap.get(bookid); if(bookCar!=null) { bookCar.increaseQuantity(); } } public void setQuantityById(String bookid,int quantity)//根据图书ID增加数量 { BookCar bookCar=itemMap.get(bookid); if(bookCar!=null) { bookCar.setQuantity(quantity); } } public void clear(){ itemMap.clear(); }} 修改后传入这个方法就可以了setQuantityById() ★★★ 注意购物车一定要用Map 不能用List或ArrayList 因为购物车是顾客频繁操作的功能 Map在取值或删除值的效率比List或ArrayList要高的多 它基本不需要时间,而List或ArrayList还要遍历。。。。。。希望对你有帮助!!
用java模拟购物车
package com.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的购物车商品 不能重复添加 的代码
在购物车中写:购物车一般放到session域中。其中有商品小计,有商品总计的一些求和计算。我记得用Map来弄的。 在购物车中添加map集合。根据放到购物车中的key来判断在map中是否存在,如果存在那就在原有商品上+1,如果不存在,那么就可以添加商品到购物车。
Java使用字符串生成器来保存购物车中的商品信息,并能实现商品信息的添加、删除以及修改等功能
public class Cart { public StringBuilder data; public float total; public Cart(){ data=new StringBuilder(); } public void buy(Goods g){ g.gtotal=g.gnum*g.gprice; total=total+g.gtotal; data.append(“[“); data.append(g.gname+“|“); data.append(g.gprice+“|“); data.append(g.gnum+“|“); //还是竖线看着方便 data.append(g.gtotal); data.append(“]“); } public void delete(Goods g){ int s=data.indexOf(g.gname); int e=data.indexOf(“]“, s); data.delete(s-1, e+1); total=total-g.gtotal; //删除商品 ,需要修改总额 } public void update(Goods g){ data.replace(3, 10, “[“+g.gname+“|“+g.gprice+“|“+g.gnum+“|“+g.gtotal); } public void show(){ System.out.print(“总计金额:“ + total + “ “) ; System.out.println(data); }}//Excute类里有点小错误,//总觉得update方法 不对头,你想怎么做?
JAVA语言编写的网上订餐系统购物车功能如何实现
用Vector 或者是HashMap去装《下面有部分代码你去看吧》
package com.aptech.restrant.DAO;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Set;import java.sql.Connection;import com.aptech.restrant.bean.CartItemBean;import com.aptech.restrant.bean.FoodBean;public class CartModel {private Connection conn;public CartModel(Connection conn) {this.conn=conn;}/*** 得到订餐列表* * @return*/public List changeToList(Map carts) {// 将Set中元素转换成数组,以便使用循环进行遍历Object foodItems = carts.keySet().toArray();// 定义double变量total,用于存放购物车内餐品总价格double total = 0;List list = new ArrayList();// 循环遍历购物车内餐品,并显示各个餐品的餐品名称,价格,数量for (int i = 0; i 《 foodItems.length; i++) {// 从Map对象cart中取出第i个餐品,放入cartItem中CartItemBean cartItem = (CartItemBean) carts.get((String) foodItems[i]);// 从cartItem中取出FoodBean对象FoodBean food1 = cartItem.getFoodBean();// 定义int类型变量quantity,用于表示购物车中单个餐品的数量int quantity = cartItem.getQuantity();// 定义double变量price,表示餐品单价double price = food1.getFoodPrice();// 定义double变量,subtotal表示单个餐品总价double subtotal = quantity * price;// // 计算购物车内餐品总价格total += subtotal;cartItem.setSubtotal(subtotal);cartItem.setTotal(total);list.add(cartItem);}return list;}/*** 增加订餐*/public Map add(Map cart, String foodID) {// 购物车为空if (cart == null) {cart = new HashMap();}FoodModel fd = new FoodModel(conn);FoodBean food = fd.findFoodById(foodID);// 判断购物车是否放东西(第一次点餐)if (cart.isEmpty()) {CartItemBean cartBean = new CartItemBean(food, 1);cart.put(foodID, cartBean);} else {// 判断当前菜是否在购物车中,false表示当前菜没有被点过。。boolean flag = false;// 得到键的集合Set set = cart.keySet();// 遍历集合Object obj = set.toArray();for (int i = 0; i 《 obj.length; i++) {Object object = obj[i];// 如果购物车已经存在当前菜,数量+1if (object.equals(foodID)) {int quantity = ((CartItemBean) cart.get(object)).getQuantity();quantity += 1;System.out.println(quantity);((CartItemBean) cart.get(object)).setQuantity(quantity);flag = true;break;}}if (flag == false) {// 把当前菜放到购物车里面CartItemBean cartBean = new CartItemBean(food, 1);cart.put(foodID, cartBean);}}return cart;}/*** 取消订餐*/public Map remove(Map cart, String foodID) {cart.remove(foodID);return cart;}/*** 更新购物车信息* * @param cart* @param foodID* @return*/public Map《String, CartItemBean》 update(Map cart, String foodID,boolean isAddorRemove) {Map map;if (isAddorRemove) {map = add(cart, foodID);} else {map = remove(cart, foodID);}return map;}}
Java 如何实现类似购物车功能
给你介绍三种可以实现购物车功能的方法:
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中,而是直接持久化到数据库中。