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();
     }

    }

  • 相关阅读:
    codeforces 686A A. Free Ice Cream(水题)
    bzoj-1192 [HNOI2006]鬼谷子的钱袋(水题)
    poj-3254 Corn Fields(状压dp)
    poj-1185 炮兵阵地(状压dp)
    Notepad++ 小技巧
    使用 notepad++ 编辑器在行首、行尾添加字符
    查看数据库中有大写的表
    Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT) for operation '='
    expect
    shell数组
  • 原文地址:https://www.cnblogs.com/javatask/p/6754386.html
Copyright © 2011-2022 走看看