JavaWeb后台购物车类实现代码详解
相信大家肯定都在电商网站买过东西,当我们看中一件喜欢又想买的东西时,这时候你又不想这么快结账,这时候你就可以放入购物车;
就像我们平时去超市买东西一样,会推着购物车去买东西;
那么我们接下来看看java怎么实现购物车的功能,其实原理很简单,java的特点就是面向对象,并且有着封装继承多态三大特性;
java实现这个购物车功能是通过内存来实现的而不是将数据添加到数据库中
首先是Item类,一个Item就代表购物车里面的一行数据
packagecom.wxd.shopping;
publicclassItem{
privateintid;//商品id
privateStringname;//商品名称
privateStringcity;//商品产地
privatedoubleprice;//商品价格
privateintnumber;//商品数量
privateStringpicture;//商品图片地址
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
this.id=id;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicStringgetCity(){
returncity;
}
publicvoidsetCity(Stringcity){
this.city=city;
}
publicdoublegetPrice(){
returnprice;
}
publicvoidsetPrice(doubleprice){
this.price=price;
}
publicintgetNumber(){
returnnumber;
}
publicvoidsetNumber(intnumber){
this.number=number;
}
publicStringgetPicture(){
returnpicture;
}
publicvoidsetPicture(Stringpicture){
this.picture=picture;
}
/**
*重写hashCode方法,使得在购物车添加商品的时候,如果id和名称相同就判定为同一件商品
*@return
*/
@Override
publicinthashCode(){
return(this.getId()+this.getName()).hashCode();
}
/**
*重写equals方法,判断是否为同一个对象
*@paramobj
*@return
*/
@Override
publicbooleanequals(Objectobj){
if(this==obj){
returntrue;
}
if(objinstanceofItem){
Itemi=(Item)obj;
if(this.getId()==i.getId()&&this.getName().equals(i.getName())){
returntrue;
}else{
returnfalse;
}
}else{
returnfalse;
}
}
@Override
publicStringtoString(){
return"Item{"+
"id="+id+
",name='"+name+'\''+
",city='"+city+'\''+
",price="+price+
",number="+number+
",picture='"+picture+'\''+
'}';
}
//有参构造
publicItem(intid,Stringname,Stringcity,doubleprice,intnumber,Stringpicture){
this.id=id;
this.name=name;
this.city=city;
this.price=price;
this.number=number;
this.picture=picture;
}
//无参构造
publicItem(){
}
}
购物车类分装了Item和数量的一个集合,还有商品的总金额
下面是购物车类的详细代码以及测试方法:
packagecom.wxd.shopping;
importjava.util.HashMap;
importjava.util.Iterator;
importjava.util.Map;
importjava.util.Set;
//购物车
publicclassCart{
//购买商品的集合
privateHashMap- goods;
//购物车的总金额
privatedoubletotalPrice;
//构造方法初始化数据
publicCart(){
goods=newHashMap
- ();
totalPrice=0.0;
}
publicHashMap
- getGoods(){
returngoods;
}
publicvoidsetGoods(HashMap
- goods){
this.goods=goods;
}
publicdoublegetTotalPrice(){
returntotalPrice;
}
publicvoidsetTotalPrice(doubletotalPrice){
this.totalPrice=totalPrice;
}
//添加商品进购物车的方法
publicbooleanaddGoodsInCart(Itemitem,intnumber){
if(goods.containsKey(item)){
goods.put(item,goods.get(item)+number);
}else{
goods.put(item,number);
}
calTotalPrice();//重新计算购物车的总金额
returntrue;
}
//删除商品的方法
publicbooleanremoveGoodsFromCart(Itemitem){
goods.remove(item);
calTotalPrice();//重新计算购物车的总金额
returntrue;
}
//统计购物车的总金额
publicdoublecalTotalPrice(){
doublesum=0.0;
Set
- keys=goods.keySet();
Iterator
- iterator=keys.iterator();
while(iterator.hasNext()){
Itemi=iterator.next();
sum+=i.getPrice()*goods.get(i);
}
this.setTotalPrice(sum);//设置购物车的总金额
returnthis.getTotalPrice();
}
//测试的main方法
publicstaticvoidmain(String[]args){
//先创建两个商品对象
Itemi1=newItem(1,"耐克","温州",300.0,500,"001.jpg");
Itemi2=newItem(2,"阿迪","广州",500.0,500,"001.jpg");
Itemi3=newItem(1,"耐克","温州",300.0,500,"001.jpg");
Cartc=newCart();
c.addGoodsInCart(i1,1);
c.addGoodsInCart(i2,2);
//再次购买耐克鞋
c.addGoodsInCart(i3,3);
//遍历购买商品的集合
HashMap
- goods=c.getGoods();
Set
>entries=goods.entrySet();
for(Map.Entry- itemEntry:entries){
System.out.println(itemEntry.toString());
}
System.out.println("购物车总金额:"+c.getTotalPrice());
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。