demo商城小案例

package com.bjsxt.entry;

/**
 * @Auther: ldp
 * @Date: 2019/8/7 22:06
 * @Description: 购物车实体类
 */
public class Cart implements Comparable<Cart>{
    private int id;   //id
    private String name;//名称
    private double price;//价格
    private int num;    //数量
    private double sum;//总计

    public Cart() {
    }

    public Cart(int id, String name, double price, int num, double sum) {
        this.id = id;
        this.name = name;
        this.price = price;
        this.num = num;
        this.sum = sum;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        Cart cart = (Cart) o;

        if (id != cart.id) return false;
        if (Double.compare(cart.price, price) != 0) return false;
        if (num != cart.num) return false;
        if (Double.compare(cart.sum, sum) != 0) return false;
        return name.equals(cart.name);
    }

    @Override
    public int hashCode() {
        int result;
        long temp;
        result = id;
        result = 31 * result + name.hashCode();
        temp = Double.doubleToLongBits(price);
        result = 31 * result + (int) (temp ^ (temp >>> 32));
        result = 31 * result + num;
        temp = Double.doubleToLongBits(sum);
        result = 31 * result + (int) (temp ^ (temp >>> 32));
        return result;
    }

    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 getNum() {
        return num;
    }

    public void setNum(int num) {
        this.num = num;
    }

    public double getSum() {
        return sum;
    }

    public void setSum(double sum) {
        this.sum = sum;
    }

    @Override
    public int compareTo(Cart o) {
        return this.getId()-o.getId();
    }
}

package com.bjsxt.entry;

/**
 * @Auther: ldp
 * @Date: 2019/8/7 21:01
 * @Description:
 */
public class Product implements Comparable<Product>  {
    private int id;//编号
    private String name;//名称
    private double price;//价格
    private String color;//颜色
    private int size;//尺寸
    private int stock;//库存

    public Product() {
    }

    public Product(int id, String name, double price, String color, int size, int stock) {
        this.id = id;
        this.name = name;
        this.price = price;
        this.color = color;
        this.size = size;
        this.stock = stock;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        Product product = (Product) o;

        if (id != product.id) return false;
        if (Double.compare(product.price, price) != 0) return false;
        if (size != product.size) return false;
        if (stock != product.stock) return false;
        if (!name.equals(product.name)) return false;
        return color.equals(product.color);
    }

    @Override
    public int hashCode() {
        int result;
        long temp;
        result = id;
        result = 31 * result + name.hashCode();
        temp = Double.doubleToLongBits(price);
        result = 31 * result + (int) (temp ^ (temp >>> 32));
        result = 31 * result + color.hashCode();
        result = 31 * result + size;
        result = 31 * result + stock;
        return result;
    }

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

    @Override
    public String toString() {
        return "Product{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", price=" + price +
                ", color='" + color + '\'' +
                ", size=" + size +
                ", stock=" + stock +
                '}';
    }

    @Override
    public int compareTo(Product o) {
        return this.id -o.getId();
    }
}

package com.bjsxt.dao;

import com.bjsxt.entry.Cart;
import com.bjsxt.entry.Product;

import java.util.List;
import java.util.Map;

/**
 * @Auther: ldp
 * @Date: 2019/8/7 21:12
 * @Description:
 */
public interface ProductDao {

        //添加商品
        public void  add(Product product);
        //获取全部的商品
        public List<Product> findAll();
        //根据id查询商品
        public Product findById(int id);
        //删除商品
        public void delProduct(int id);
        //修改商品库存
        public void updateStock(Product product);
}

package com.bjsxt.dao;

import com.bjsxt.entry.Cart;
import com.bjsxt.entry.Product;

import java.util.Map;

/**
 * @Auther: ldp
 * @Date: 2019/8/8 10:43
 * @Description:
 */
public interface CartDao {
    //添加到购物车
    boolean addCart(Cart cart);
    //展示购物车商品
    Map<Integer, Cart> showCart();
    //修改库存的容量
    boolean updateStock(Cart cart);
    //删除购物车中的商品
    void delCartProduct(int id);
    //查询购物车中的商品
    Cart findById(int id);
}

package com.bjsxt.dao.impl;

import com.bjsxt.entry.Cart;
import com.bjsxt.entry.Product;
import com.bjsxt.dao.ProductDao;

import java.util.*;

/**
 * @Auther: ldp
 * @Date: 2019/8/7 21:14
 * @Description:
 */
public class ProductDaoImpl implements ProductDao {

     static  List<Product> products = new ArrayList<>();

    static {
        products.add(new Product(1,"23",23,"23",23,23));
        products.add(new Product(2,"23",23,"23",23,23));
        products.add(new Product(3,"23",23,"23",23,23));
        products.add(new Product(4,"23",23,"23",23,23));
    }
    @Override
    public void add(Product product) {
            products.add(product);
    }

    @Override
    public List<Product> findAll() {

        return products;
    }

    @Override
    public void updateStock(Product product) {
            if (findById(product.getId())==null){
                System.out.println(product.getId()+" id不存在!!!!");
                return;
            }else{
                for (Product pc:products) {
                    if (pc.getId()==product.getId()){
                        pc.setStock(product.getStock());
                        System.out.println("库存修改成功!!!");
                        return;
                    }
                }
            }

    }

    @Override
    public Product findById(int id) {
        Product   product =null;
        for (Product pc:products){
            if (pc.getId() == id){
                product = pc;
                break;
            }
        }
        return product;
    }

    @Override
    public void delProduct(int id) {
            if (findById(id)==null){
                System.out.println("删除商品的id不存在!!!!!!");
            }else{
                for (int i= 0;i<products.size();i++) {
                    if (products.get(i).getId()==id){
                        products.remove(i);
                        System.out.println("删除成功!!!!");
                    }
                }
            }
    }
}

package com.bjsxt.dao.impl;

import com.bjsxt.dao.CartDao;
import com.bjsxt.entry.Cart;
import com.bjsxt.entry.Product;

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

import static com.bjsxt.dao.impl.ProductDaoImpl.products;

/**
 * @Auther: ldp
 * @Date: 2019/8/8 10:44
 * @Description:
 */
public class CartDaoImpl implements CartDao {
    private  Map<Integer, Cart>  cartMap = new LinkedHashMap<>();

    @Override
    public void delCartProduct(int id) {
        cartMap.remove(id);
        System.out.println("删除成功!!!!");
    }

    @Override
    public Cart findById(int id) {

        return  cartMap.get(id);

    }

    public boolean addCart(Cart cart) {
        boolean flag = false;
        //判断商品id是否存在
        if (!updateStock(cart)){
            return flag;
        }else {
            //判断库存是否够
            if (cartMap.get(cart.getId())==null){
                cartMap.put(cart.getId(),cart);
                flag = true;
            }else{

                double sum = cartMap.get(cart.getId()).getSum();
                cart.setSum(sum+cart.getSum());
                int num = cartMap.get(cart.getId()).getNum();
                cart.setNum(num+cart.getNum());
                cartMap.put(cart.getId(),cart);
                cartMap.put(cart.getId(),cart);
                flag = updateStock(cart);
            }
        }

        return flag;
    }

    public Map<Integer, Cart> showCart() {
        return cartMap;
    }

    public boolean updateStock(Cart cart) {
        int num = 0;
        boolean flag=false;
        for (Product pc: products) {
            if (pc.getId()==cart.getId()){
                num = pc.getStock()-cart.getNum();
                if (num<0){
                    System.out.println("商品库存不足:!!!!");
                    flag = false;
                }else{
                    pc.setStock(num);
                    flag = true;
                }
            }
        }
        return flag;
    }

}

package com.bjsxt;

import com.bjsxt.dao.CartDao;
import com.bjsxt.dao.ProductDao;
import com.bjsxt.dao.impl.CartDaoImpl;
import com.bjsxt.dao.impl.ProductDaoImpl;
import com.bjsxt.entry.Cart;
import com.bjsxt.entry.Product;

import java.util.*;

/**
 * @Auther: ldp
 * @Date: 2019/8/7 20:33
 * @Description:商城小案例
 */
public class TestShop {

    private static  Scanner sc = new Scanner(System.in);
    private static ProductDao productIm = new ProductDaoImpl();
    private static CartDao cartDao = new CartDaoImpl();
    public static void main(String[] args) {
        init();
    }

    private static void init() {
        boolean flag = true;
        do {
            System.out.println("");
            System.out.println("*****欢迎进入京东商城*****");
            System.out.println("\t1.添加商品");
            System.out.println("\t2.查看所有商品");
            System.out.println("\t3.查看指定商品编号");
            System.out.println("\t4.添加到购物车");
            System.out.println("\t5.显示购物车");
            System.out.println("\t6退出");
            System.out.println("\t7删除商品");
            System.out.println("\t8修改商品的库存");
            System.out.println("\t9删除购物车中的商品");
            System.out.println("************************");
            System.out.println("请选择菜单:");
            int choice = sc.nextInt();
            switch (choice){
                case 1:
                    System.out.println("添加商品");
                    add();
                    break;
                case 2:
                    System.out.println("查看所有商品");
                    findAll();
                    break;
                case 3:
                    System.out.println("查看指定商品编号的商品信息");
                    findById();
                    break;
                case 4:
                    System.out.println("添加到购物车");
                    addCart();
                    break;
                case 5:
                    System.out.println("显示购物车");
                    showCart();
                    break;
                case 6:
                    flag = false;
                    System.out.println("谢谢使用");
                    break;
                case 7:
                    System.out.println("删除商品");
                    delProduct();
                    break;
                case 8:
                    System.out.println("修改商品的库存");
                    updateStock();
                    break;
                case 9:
                    System.out.println("删除购物车中的商品");
                    delCartProduct();
                    break;
                    default:
                        System.out.println("输入错误");
                    break;

            };
        }while (flag);
    }

    private static void delCartProduct() {
        System.out.println("删除商品前的购物车:");
        showCart();
        System.out.println("请输入删除购物车中的商品的id:");
        Cart cart= null;
        int id = 0;
        do {
            id = sc.nextInt();
            cart= cartDao.findById(id);
            if (cartDao.showCart().size()==0){
                System.out.println("购物车为空:!!!!!! ");
                return;
            }
            if (cart==null){
                System.out.println("该商品id不存在,请重新进行输入:");
            }
        }while (cart==null);
        cartDao.delCartProduct(id);
        System.out.println("删除商品后的购物车:");
        showCart();
    }

    private static void updateStock() {
        System.out.println("请输入修改商品库存的id:");
        Product product = null;
        int id = 0;
        do {
             id = sc.nextInt();
            product= productIm.findById(id);
            if (product==null){
                System.out.println("该商品id不存在,请重新进行输入:");
            }
        }while (product==null);
        System.out.println("请输入要修改的数量:");
        int num = sc.nextInt();
        //int id, String name, double price, String color, int size, int stock
        productIm.updateStock(new Product(id,null,0,null,0,num));
    }

    private static void delProduct() {
        System.out.println("请输入删除商品的id:");
        int id = sc.nextInt();
        productIm.delProduct(id);
    }

    private static void showCart() {
        Map<Integer, Cart> cartMap =   cartDao.showCart();
        Collection<Cart> values = cartMap.values();
        System.out.println("编号\t商品名称\t商品价格\t数量\t小计");
        double total = 0;
        for (Cart cart:values) {
            System.out.println(cart.getId()+"\t"+cart.getName()+"\t"+cart.getPrice()+"\t"+cart.getNum()+"\t"+cart.getSum());
            total+=cart.getSum();
        }
        System.out.println("小计:"+total);
    }

    private static void addCart() {
        System.out.println("请输入添加商品的编号");
        Product product = null;
        do {
            int id = sc.nextInt();
             product= productIm.findById(id);
             if (product==null){
                 System.out.println("该商品id不存在,请重新进行输入:");
             }
        }while (product==null);
        System.out.println("请输入购买的数量:");
        int num = sc.nextInt();
        double sum = num*product.getPrice();
        if (product==null){
            System.out.println("该商品ID不存在");
        }else {
            boolean addCart = cartDao.addCart(new Cart(product.getId(), product.getName(), product.getPrice(), num, sum));
            if (!addCart){
//                System.out.println("商品添加购物车失败!库存不足");
            }else{
                System.out.println("商品添加购物车成功!");
            }
        }
    }

    private static void findById() {
        System.out.println("请输入商品的编号");
        int id = sc.nextInt();
        Product product = productIm.findById(id);
        if (product==null){
            System.out.println("该商品ID不存在");
        }else {
            System.out.println("编号\t商品名称  \t价格\t颜色\t尺寸\t库存");
            System.out.println(product.getId()+"\t"+product.getName()+" \t"+product.getPrice()+"\t"+product.getColor()+"\t"+product.getSize()+"\t"+product.getStock());

        }
    }

    private static void add() {
        Product product = new Product();
        System.out.println("请输入商品的编号");

        Product product1 = null;
        int id ;
        do {
            id = sc.nextInt();
             product1 = productIm.findById(id);
             if (product1!=null){
                 System.out.println("商品的编号:"+id+" 已存在,请重新输入");
             }
        }while (product1!=null);
            product.setId(id);


        System.out.println("请输入商品的名称");
        String name = sc.next();
        product.setName(name);
        System.out.println("请输入商品的价格");
        double price = sc.nextDouble();
        product.setPrice(price);
        System.out.println("请输入商品的颜色");
        String color = sc.next();
        product.setColor(color);
        System.out.println("请输入商品的尺寸");
        int size = sc.nextInt();
        product.setSize(size);
        System.out.println("请输入商品的库存");
        int stock=sc.nextInt();
        product.setStock(stock);
        productIm.add(product);
    }

    private static void findAll() {
        List<Product> productList = productIm.findAll();
        System.out.println("编号\t商品名称  \t价格\t颜色\t尺寸\t库存");
        if (productList.isEmpty()){
            System.out.println("商品为空.请添加商品");
        }else {
            for (Product project: productList) {
                System.out.println(project.getId()+"\t"+project.getName()+" \t"+project.getPrice()+"\t"+project.getColor()+"\t"+project.getSize()+"\t"+project.getStock());
            }
        }

    }


}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值