一 购物车类(Cart)的设计


 
二 代码
1、Cart类
package entity;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
//购物车类
public class Cart {
    //购买商品的集合
    private HashMap<Items,Integer> goods;
    
    //购物车的总金额
    private double totalPrice;
    //构造方法
    public Cart()
    {
        goods = new HashMap<Items,Integer>();
        totalPrice = 0.0;
    }
    
    
    public HashMap<Items, Integer> getGoods() {
        return goods;
    }
    public void setGoods(HashMap<Items, Integer> goods) {
        this.goods = goods;
    }
    public double getTotalPrice() {
        return totalPrice;
    }
    public void setTotalPrice(double totalPrice) {
        this.totalPrice = totalPrice;
    }
    
    //添加商品进购物车的方法
    public boolean addGoodsInCart(Items item ,int number)
    {
        if(goods.containsKey(item))
        {
            goods.put(item, goods.get(item)+number);
        }
        else
        {
            goods.put(item, number);    
        }
        calTotalPrice(); //重新计算购物车的总金额
        return true;
    }
    
    //删除商品的方法
    public boolean removeGoodsFromCart(Items item)
    {
        goods.remove(item);
        calTotalPrice(); //重新计算购物车的总金额
        return true;
    }
    
    //统计购物车的总金额
    public double calTotalPrice()
    {
        double sum = 0.0;
        Set<Items> keys = goods.keySet(); //获得键的集合
        Iterator<Items> it = keys.iterator(); //获得迭代器对象
        while(it.hasNext())
        {
            Items i = it.next();
            sum += i.getPrice()* goods.get(i);
        }
        this.setTotalPrice(sum); //设置购物车的总金额
        return this.getTotalPrice();
    }
    
    public static void main(String[] args) {
        
        //先创建两个商品对象
        Items i1 = new Items(1,"沃特篮球鞋","温州",200,500,"001.jpg");
        Items i2 = new Items(2,"李宁运动鞋","广州",300,500,"002.jpg");
        Items i3 = new Items(1,"沃特篮球鞋","温州",200,500,"001.jpg");
        
        Cart c = new Cart();
        c.addGoodsInCart(i1, 1);
        c.addGoodsInCart(i2, 2);
        //再次购买沃特篮球鞋,购买3双
        c.addGoodsInCart(i3, 3);
        
        
        //变量购物商品的集合
        Set<Map.Entry<Items, Integer>> items= c.getGoods().entrySet();
        for(Map.Entry<Items, Integer> obj:items)
        {
            System.out.println(obj);
        }
        
        
        System.out.println("购物车的总金额:"+c.getTotalPrice());
        
    }
    
}
2、Items类
package  entity;
//商品类
public  class  Items {
         private  int  id ;  // 商品编号
         private  String  name ;  // 商品名称
         private  String  city ;  // 产地
         private  int  price ;  // 价格
         private  int  number ;  // 库存
         private  String  picture ;  // 商品图片
         //保留此不带参数的构造方法
         public  Items()
        {
                
        }
        
         public  Items( int  id,String name,String city, int  price, int  number,String picture)
        {
                 this . id  = id;
                 this . name  = name;
                 this . city  = city;
                 this . picture  = picture;
                 this . price  = price;
                 this . number  = number;
                
        }
         public  int  getId() {
                 return  id ;
        }
         public  void  setId( int  id) {
                 this . id  = id;
        }
         public  String getName() {
                 return  name ;
        }
         public  void  setName(String name) {
                 this . name  = name;
        }
         public  String getCity() {
                 return  city ;
        }
         public  void  setCity(String city) {
                 this . city  = city;
        }
         public  int  getPrice() {
                 return  price ;
        }
         public  void  setPrice( int  price) {
                 this . price  = price;
        }
         public  int  getNumber() {
                 return  number ;
        }
         public  void  setNumber( int  number) {
                 this . number  = number;
        }
         public  String getPicture() {
                 return  picture ;
        }
         public  void  setPicture(String picture) {
                 this . picture  = picture;
        }
        
        
        
         @Override
         public  int  hashCode() {
                 //  TODO  Auto-generated method stub
                 return  this .getId()+ this .getName().hashCode();
        }
         @Override
         public  boolean  equals(Object obj) {
                 //  TODO  Auto-generated method stub
                 if ( this ==obj)
                {
                         return  true ;
                }
                 if (obj  instanceof  Items)
                {
                        Items i = (Items)obj;
                         if ( this .getId()==i.getId()&& this .getName().equals(i.getName()))
                        {
                                 return  true ;
                        }
                         else
                        {
                                 return  false ;
                        }
                }
                 else
                {
                         return  false ;
                }
        }
         public  String toString()
        {
                 return  "商品编号:" + this .getId()+ ",商品名称:" + this .getName();
        }
}
三 测试结果
商品编号:1,商品名称:沃特篮球鞋=4
商品编号:2,商品名称:李宁运动鞋=2
购物车的总金额:1400.0
  • 大小: 108.4 KB
  • 查看图片附件

简易购物车实体类的设计相关推荐

  1. java实体类设计_java实验1 实体类的设计-答案

    实验一实体类设计 一.实验时间:姓名:学号: 二.实验目的 1.掌握Java的类结构: 2.掌握实体类的作用: 3.能够对相似对象的共同属性进行抽象: 4.掌握对成员变量的赋值和取值函数编写: 5.理 ...

  2. 实战SSM_O2O商铺_02数据模型设计及实体类的创建

    文章目录 模块介绍 建立o2o数据库(MySql) 数据模型及对象设计 总览 区域 分析 实体类 数据库表 用户信息 分析 实体类 数据库表 微信账号与本地账号 分析 微信账号-实体类 微信账号-数据 ...

  3. C#之三十七 实体类

    视频课:  C#程序设计与宿舍管理系统实战 3.1      使用实体类构建三层结构概述 在上一章中的三层架构中,我们使用DataSet来进行数据的传递,但在OOP的开发中,有很大的局限性: 1.   ...

  4. ElementUI中显示是否以及SpringBoot中怎样存储实体类属性和数据库怎样设计字段

    场景 Vue+ElementUI+SpringBoot+Mysql 需要设计一些属性为是否,即只有两个选择的属性字段. 注: 博客: https://blog.csdn.net/badao_liuma ...

  5. Java课程设计---项目数据库设计(含实体类)

    1.数据库分析设计 将数据库命名为:db_student 分析系统中各角色之间的关系 2.表设计 (1)新建表tb_student(学生表) (2)新建表tb_admin(管理员表) (3)新建表tb ...

  6. iOS简易蓝牙对战五子棋游戏设计思路之一——核心蓝牙通讯类的设计

    iOS简易蓝牙对战五子棋游戏设计思路之一--核心蓝牙通讯类的设计 一.引言 本系列博客将系统的介绍一款蓝牙对战五子棋的开发思路与过程,其中的核心部分有两个,一部分是蓝牙通讯中对战双方信息交互框架的设计 ...

  7. 从零开发校园商铺平台(SSM到SpringBoot)一.开发准备,实体类设计与表创建

    依山傍水房树间,行也安然,住也安然: 一条耕牛半顷田,收也凭天,荒也凭天: 雨过天晴驾小船,鱼在一边,酒在一边: 夜晚妻子话灯前,今也谈谈,古也谈谈: 日上三竿犹在眠,不是神仙,胜似神仙! 一.开发准 ...

  8. 校园O2O商铺平台-实体类设计与表创建

    实体类解析 区域类设计 package com.hbut.o2o.entity;import java.util.Date;/*** 区域信息* @author HenryLei**/ public ...

  9. 发一个正在使用的购物车类的设计

    购物车类是商城程序一个非常重要的类.写类,就要继承其可以重复利用的思想,高效,扩展性好的特点. 首先,我们要明白要实现怎么样的功能.然后根据功能的需求用代码实现.商城程序的购物车的基本功能有: 1.添 ...

最新文章

  1. HDOJ 1060 Leftmost Digit
  2. 深入浅出Spring Security(二):FilterChainProxy的创建过程
  3. 利用watch在小程序中实现全局状态共享
  4. Java数据结构和算法:线性表
  5. keras从入门到放弃(五)独热编码和顺序编码
  6. 自定义菜单url不能带_微服务架构【SpringBoot+SpringCloud+VUE】五 || 实战项目微信公众号自定义开发...
  7. python入门练习题3(函数)
  8. 两位小数乘两位小数竖式_冀教版五年级数学上册2.4小数乘小数微课视频 | 练习...
  9. 消息队列与rabbitMQ的各种问题
  10. PB级(大数据)的来源
  11. 记录微信wxParse的相关代码
  12. stm32最小系统原理图
  13. python调用oracle
  14. Microsoft Excel 单元格行高和列宽
  15. 2020 GDUT Rating Contest I (Div. 2) A.Cow Gymnastics
  16. 计算机教学反思杂文,学无止境_教学反思_教学随笔
  17. 在线图片格式转换为 psd png
  18. 研究和文献参考丨艾美捷游离脂肪酸荧光法测定试剂盒
  19. 大学生交友平台——结构化需求分析与建模
  20. Elasticsearch实践(二)在Springboot微服务中集成搜索服务

热门文章

  1. JQury实现ajax异步请求
  2. 绿盟于旸:让阿里安娜火箭爆炸的缓冲区溢出 linkboy语录:tk出品必是精品呵呵...
  3. Networkx如何画点图并显示边权
  4. 明解C语言(入门篇)第二章
  5. 使用opencv-python快速读取视频——进阶版
  6. miui11升级鸿蒙,这就是MIUI 11的升级机型名单?还挺给力!
  7. web开发浏览器缓存问题之Google浏览器缓存清理
  8. 上海工商业分时电价机制调整对储能行业项目的影响分析
  9. 4G套餐用户挺住了,运营商比你们急,会给优惠的低价流量
  10. 【UI学习】Android github开源项目,酷炫自定义控件(View)汇总