购物车案例【简单版】(一)

简介: 为了巩固MVC的开发模式,下面就写一个购物车的小案例..

①构建开发环境


导入需要用到的开发包

1.jpg

建立程序开发包

2.jpg


②设计实体

书籍实体

publicclassBook{

   

       privateStringid;

       privateStringname;

       privateStringauthor;

       privateStringdescription;

       privatedoubleprice;

   

       publicBook(){

       }

   

       publicBook(Stringid,Stringname,Stringauthor,Stringdescription,doubleprice){

           this.id=id;

           this.name=name;

           this.author=author;

           this.description=description;

           this.price=price;

       }

   

       //...各种setter和getter

   }

购物车与购物项实体

可能我们会这样设计购物车

/*该类代表的是购物车*/

   publicclassCart{

   

       //关键字是书籍的id,值是书

       privateMap<String,Book>bookMap=newLinkedHashMap<>();

   

   

   }

上面的做法是不合适的,试想一下:如果我要购买两本相同的书,购物车的页面上就出现了两本书,而不是书*2。买三本相同的书就在购物页面上出现三本书,而不是书*3.

因此,Map集合的值不能是Book对象,那我们怎么才能解决上面所说的问题呢?我们最常用的就是,再写一个实体CartItem(代表购物项)

  • 好的,我们先来写购物项实体吧,等会再写购物车!

/*购物项代表的是当前书,并表示该书出现了几次*/

   publicclassCartItem{

   

       privateBookbook;

       privateintquantity;

   

       //该购物项(书--不一定只有一本)的价钱应该等于书的数量*价格

       privatedoubleprice;

   

       

       //书的价钱*数量

       publicdoublegetPrice(){

           returnbook.getPrice()*this.quantity;

       }

   

       publicBookgetBook(){

           returnbook;

       }

   

       publicvoidsetBook(Bookbook){

           this.book=book;

       }

   

       publicintgetQuantity(){

           returnquantity;

       }

   

       publicvoidsetQuantity(intquantity){

           this.quantity=quantity;

       }

       

       publicvoidsetPrice(doubleprice){

           this.price=price;

       }

   }

  • 购物车实体

/*该类代表的是购物车*/

   publicclassCart{

   

       //关键字是书籍的id,值是书

       privateMap<String,CartItem>bookMap=newLinkedHashMap<>();

   

       //代表着购物车的总价

       privatedoubleprice;

   

   

       //把购物项(用户传递进来的书籍)加入到购物车里边去,也应该是购物车的功能

       publicvoidaddBook(Bookbook){

   

           //获取得到购物项

           CartItemcartItem=bookMap.get(book.getId());

   

           //判断购物车是否存在该购物项,如果不存在

           if(cartItem==null){

   

               //创建这个购物项对象

               cartItem=newCartItem();

   

               //将用户传递过来的书籍作为购物项

               cartItem.setBook(book);

   

               //把该购物项的数量设置为1

               cartItem.setQuantity(1);

   

               //把购物项加入到购物车去

               bookMap.put(book.getId(),cartItem);

           }else{

   

               //如果存在该购物项,将购物项的数量+1

               cartItem.setQuantity(cartItem.getQuantity()+1);

           }

       }

   

       //购物车的总价就是所有购物项的价格加起来

       publicdoublegetPrice(){

   

           doubletotalPrice=0;

   

           for(Map.Entry<String,CartItem>me:bookMap.entrySet()){

   

               //得到每个购物项

               CartItemcartItem=me.getValue();

   

               //将每个购物项的钱加起来,就是购物车的总价了!

               totalPrice+=cartItem.getPrice();

           }

   

           returntotalPrice;

       }

   

   

       publicMap<String,CartItem>getBookMap(){

           returnbookMap;

       }

   

       publicvoidsetBookMap(Map<String,CartItem>bookMap){

           this.bookMap=bookMap;

       }

   

   

       publicvoidsetPrice(doubleprice){

           this.price=price;

       }

   }


目录
相关文章
|
8月前
|
JavaScript 前端开发 Java
55dwr - 购物车案例(实现购物车)
55dwr - 购物车案例(实现购物车)
28 0
|
1月前
|
JavaScript
基础购物车
基础购物车
20 1
|
1月前
|
JavaScript
基础购物车功能
基础购物车功能
uniapp——添加购物车数据以及删除购物车数据
添加购物车数据以及删除购物车数据
173 0
|
前端开发 JavaScript
【畅购商城】购物车模块之修改购物车以及结算
【畅购商城】购物车模块之修改购物车以及结算
149 0
【畅购商城】购物车模块之修改购物车以及结算
|
NoSQL 前端开发 Redis
【畅购商城】购物车模块之添加购物车
【畅购商城】购物车模块之添加购物车
109 0
【畅购商城】购物车模块之添加购物车
|
存储 前端开发 NoSQL
【畅购商城】购物车模块之查看购物车
【畅购商城】购物车模块之查看购物车
124 0
【畅购商城】购物车模块之查看购物车
|
前端开发
购物车项目(前端)
购物车项目(前端)
购物车项目(前端)
html+css实战183-购物车
html+css实战183-购物车
121 0
html+css实战183-购物车