zoukankan      html  css  js  c++  java
  • 购物车

    cn.oop.shopping.dao:数据访问接口
    cn.oop.shopping.dao.impl:数据访问接口实现类
    cn.oop.shopping.entity:实体类
    cn.oop.shopping.test:测试类

    /**

    *实体类:封装对象,一个Product对象可以描述一个商品

    *属性多了可以考虑用类来存

    *对象多了可以考虑用集合或数组来存

    */

    1.创建菜单

    cn.oop.shopping.entity:实体类

    public class Product{

    private int id;//编号

    private String name;//名称

    private double price;//价格

    private String color;//颜色

    private int size;//尺寸

    private int stock;//库存

    public Product(){//无参构造

    super()

    }

    public Product(int id ,String name,double price, String color,int size,int stock){

    this.id =id;//有参构造   this关键字 区分类变量和局部变量

    this.name=name;

    this.price=price;

    this.color= color;

    this.size=size;

    this.stock;

    }

    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 double getProce(){

    return proce;

    }

    public void setProce(double proce){

    this.proce=proce;

    }

    public String getColor(){

    return color;

    }

    public void setColor(String color){

    this.color=color;

    }

    public int getSize(){

    return size;

    }

    public void setSize(int size){

    this.size=size;

    }

    public int getStock(){

    return stock;

    }

    public void setStock(int stock){

    this.stock=stock;

    }
     public String toString() {
      return "Product [id=" + id + ", name=" + name + ", price=" + price + ", color=" + color + ", size=" + size
        + ", stock=" + stock + "]";
     }

    }

    package cn.oop.shopping.dao;

    public interface ProductDao{//创建接口

    //查看所有商品

    public List findAll();//放进一个可扩展的List集合中展示

    //根据编号查询商品信息

    public Product finById(int id);//Product商品类

    //添加商品

    public boolean addProduct(Product product);//product 封装了要添加的商品信息

    }

    package cn.oop.shopping.dao.impl;//包名

    import java.util.ArrayList;//使用的工具类
    import java.util.List;

    import cn.zzsxt.shopping.dao.ProductDao;//引入的包
    import cn.zzsxt.shopping.entity.Product;

    public class ProductDaoImpl implements ProdusDao{

    List<Product> list =new ArrayList<Product>();//成员变量

    public ProductDaoImpl(){//构造函数

    Product p1=new Product (001,"华为手机",1899,"土豪金",5,500);

    Product p2=new Product (002,"小米手机",2499,"白色",6,200);

    Product p3=new Product (003,"vivo手机",2100,"黑色",6,300);

    list.add(p1);//添加到集合中

    list.add(p2);

    list.add(p3);

    }

    public List findAll(){

    return list;//输出集合内容

    }

    public Product findById(int id){

    for(Product f:list){//遍历

    if(f.getId()==id){

     return f;

    }

    }

    return null;

    }

    public boolean addProduct(Product product){

    //判断商品是否存在

    for(Product p:list){

    if(product.getId()==p.getId()){

    return false;

    }

    }

    list.add(product);

    return true;

    }

    }

    package cn.oop.shopping.entity;

     // CartItem封装购买的一个商品信息及对应的数量

    public class CartItem {
     private int id;//商品编号
     private String name;//商品名称
     private double price;//商品价格
     private int amount;//购买数量
     public CartItem() {
      super();
      // TODO Auto-generated constructor stub
     }
     public CartItem(int id, String name, double price, int amount) {
      super();
      this.id = id;
      this.name = name;
      this.price = price;
      this.amount = amount;
     }
     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 double getPrice() {
      return price;
     }
     public void setPrice(double price) {
      this.price = price;
     }
     public int getAmount() {
      return amount;
     }
     public void setAmount(int amount) {
      this.amount = amount;
     }
     
     public String toString() {
      return "CartItem [id=" + id + ", name=" + name + ", price=" + price + ", amount=" + amount + "]";
     }

     public int hashCode() {
      final int prime = 31;
      int result = 1;
      result = prime * result + amount;
      result = prime * result + id;
      result = prime * result + ((name == null) ? 0 : name.hashCode());
      long temp;
      temp = Double.doubleToLongBits(price);
      result = prime * result + (int) (temp ^ (temp >>> 32));
      return result;
     }

     public boolean equals(Object obj) {
      if (this == obj)
       return true;
      if (obj == null)
       return false;
      if (getClass() != obj.getClass())
       return false;
      CartItem other = (CartItem) obj;
      if (amount != other.amount)
       return false;
      if (id != other.id)
       return false;
      if (name == null) {
       if (other.name != null)
        return false;
      } else if (!name.equals(other.name))
       return false;
      if (Double.doubleToLongBits(price) != Double.doubleToLongBits(other.price))
       return false;
      return true;
     }

     
    }

     package cn.oop.shopping.dao;

    import java.util.Map;

    import cn.oop.shopping.entity.CartItem;

    public interface CartItemDao{

    //购买记录

    public boolean addCartItem(CarItem cartItem);

    //查询购物车中商品信息

    public Map<Integer,CartItem> showCart();

    }

    package cn.oop.shopping.dao.impl;

    import java.util.LinkedHashMap;
    import java.util.Map;

    import cn.oop.shopping.dao.CartItemDao;
    import cn.oop.shopping.entity.CartItem;

    public class CartItemDaoImpl implements CartItemDao{

    //购物车:用商品编号做key,利用购物车项(编号,名称,价格,数量)

    Map<Integer,CartItem> cart=new LinkedHashMap<Integer,CartItem>();

    /**
      * 添加购物车
      *   a.购物车中不存在要添加的商品信息(直接添加)
         b.购物车中存在要添加的商品信息(更改数量)
      */

    public boolean addCartItem(CartItem cartItem){

    //判断该购物车中是否存在要添加的商品信息

    if(cart.containsKey(cartItem.getId())){

     //购物车中已经存在要添加的商品

    //获取新添加到购物车中的商品数量

    int newAmount=cartItem.getAmount());

    CartItem oldCartItem = cart.get(cartItem.getId());//获取原有购物车中商品的信息

    int oldAmount=oldCartItem.getAmount();

    int amount =oldAmount+newAmount;

    oldCartItem.setAmount(amount);//更改购物车中的商品数量

    }else{

    //购物车中不存在要购买的商品

    cart.put(cartItem.getId(),cartItem);//将商品添加到购物车中

    }

    return true;

    }

    //查看购物车

    public Map<Integer,CartItem> showCart(){

    return cart;

    }

    }

    package cn.oop.shopping.test;

    import java.util.Collection;
    import java.util.List;
    import java.util.Map;
    import java.util.Scanner;

    import cn.oop.shopping.dao.CartItemDao;
    import cn.oop.shopping.dao.ProductDao;
    import cn.oop.shopping.dao.impl.CartItemDaoImpl;
    import cn.oop.shopping.dao.impl.ProductDaoImpl;
    import cn.oop.shopping.entity.CartItem;
    import cn.oop.shopping.entity.Product;

    public class Test{

    ProductDao productDao =new ProductDaoImpl();//向上转型

    CartItemDao cartItemDao=new CartItemDaoImpl();

    //打印菜单

    public void startMenu(){

    Scanner input =new Scanner(System.in);

    public void startMenu(){
      Scanner input = new Scanner(System.in);
      do{
       System.out.println();
       System.out.println("*****欢迎进入京东商城*****");
       System.out.println("1.添加商品");
       System.out.println("2.查看所有商品");
       System.out.println("3.查看指定编号商品");
       System.out.println("4.添加到购物车");
       System.out.println("5.显示购物车");
       System.out.println("6.退出");
       System.out.println("***************************");
       System.out.println("请选择菜单:");
       int choice = input.nextInt();
       switch (choice) {
       case 1:
    //     System.out.println("添加商品功能");
        addProduct();
        break;
       case 2:
    //    System.out.println("查看所有商品功能");
        showAll();
        break;
       case 3:
    //     System.out.println("查看指定编号商品功能");
         showById();
        break;
       case 4:
    //     System.out.println("添加到购物车功能");
        addCart();//添加购物车
        break;
       case 5:
    //     System.out.println("显示购物车功能");
        showCart();
        break;
       case 6:
         System.out.println("谢谢使用!");
         System.exit(1);//终止菜单
        break;
       default:
         System.out.println("您输入的有误,请输入1~6的数字!");
        break;
       }
      }while(true);
     }

    }

    //获取所有商品信息

    public void showAll(){

    List<Product>list =productDao.findAll();

    System.out.println("编号 商品名称 价格 颜色 尺寸 库存");

     for (Product product : list) {
       int id = product.getId();
       String name=product.getName();
       double price = product.getPrice();
       String color = product.getColor();
       int size = product.getSize();
       int stock = product.getStock();
       System.out.println(id+" "+name+" "+price+" "+color+" "+size+" "+stock);
      }
     }

    //根据用户输入的编号查询信息.

    public void showById(){

    Scanner input =new Scanner(System.in);

    System,out,println("请输入商品编号");

    int id=input.newxInt();

    Product product=productDao.findById(id);

    if(product!=null){

    System.out.println("编号 商品名称 价格 颜色 尺寸 库存");

    String name=product.getName();
       double price = product.getPrice();
       String color = product.getColor();
       int size = product.getSize();
       int stock = product.getStock();
       System.out.println(id+" "+name+" "+price+" "+color+" "+size+" "+stock);

    }else{

    System.out.println("商品不存在");

    }

    }

     //添加商品的方法

    public void addProduct(){

     Scanner input = new Scanner(System.in);
      System.out.println("请输入商品编号:");
      int id = input.nextInt();
      System.out.println("请输入商品名称:");
      String name = input.next();
      System.out.println("请输入商品价格:");
      double price = input.nextDouble();
      System.out.println("请输入商品颜色:");
      String color = input.next();
      System.out.println("请输入商品尺寸:");
      int size = input.nextInt();
      System.out.println("请输入商品库存:");
      int stock = input.nextInt();

    Product product =new Product(id,name,price,color,size,stock);

    boolean isSucc=productDao.addProduct(product);

    if(isSucc){

      System.out.println("添加成功!");
     }else{
       System.out.println("商品无法重复添加!");

    }

    }

    //将要购买的商品添加到购物车中

    public void addCart(){

    Scanner input =new Scanner(System.in);

    System.out.println("请输入商品编号");

    int id=input.nextInt();

    System.out.println("请输入数量");

    int amount=input.nextInt;

     //根据商品编号获取商品信息 CartItem(编号,名称,价格,数量)

    Product product=productDao.findById(id);

    if(product!=null){

    String name=product.getName();

    double price =product.getProduct();

     //将商品编号,商品名称,价格,数量封装成CartItem

    CartItem carItem=new CartItem(id,name.price,amount);

     //将cartItem添加到购物车中

    cartItemDao.addCartItem(cartItem);

    }else{

    System.out.println("你输入商品编号有误!");

    }

    }

    //显示购物车

    public void showCart(){

    double total=0;

    //获取商品信息

    Map<Integer,CartItem> cartItem=cartItemDao.showCart();

    Collection<CartItem> cartValue=cart.value();//获取购物车中的值

     System.out.println("编号 商品名称 商品价格 数量 小计");

    for (CartItem cartItem : cartValues) {
       int id = cartItem.getId();
       String name = cartItem.getName();
       double price = cartItem.getPrice();
       int amount = cartItem.getAmount();
       double oneTotal = price*amount;//计算小计金额
       total+=oneTotal;//计算总金额
       System.out.println(id+" "+name+" "+price+" "+amount+" "+oneTotal);
      }
      System.out.println("总计:"+total);
     }
     public static void main(String[] args) {
      Test test = new Test();
      test.startMenu();
     }

    }

  • 相关阅读:
    QOMO Linux 4.0 正式版发布
    LinkChecker 8.1 发布,网页链接检查
    pgBadger 2.1 发布,PG 日志分析
    Aletheia 0.1.1 发布,HTTP 调试工具
    Teiid 8.2 Beta1 发布,数据虚拟化系统
    zLogFabric 2.2 发布,集中式日志存储系统
    开源电子工作套件 Arduino Start Kit 登场
    Piwik 1.9 发布,网站访问统计系统
    Ruby 1.9.3p286 发布,安全修复版本
    toBraille 1.1.2 发布,Java 盲文库
  • 原文地址:https://www.cnblogs.com/javatask/p/6754386.html
Copyright © 2011-2022 走看看