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