题目
模拟实现用户购买商品的功能,使用数组模拟商品列表,当购买的商品不存在或者商品库存为0时,抛出自定义异常。用户购买某一个商品时,对异常进行处理,并对库存进行改变。
并实现添加商品到购物车,购物车列表,从购物车删除商品,清空购物车
Product商品类
/**
* 商品类
*/
public class Product {
private int id;
private String name;
private double price;
private int countProduct;
//有参构造
public Product(int id,String name, double price,int countProduct) {
this.id = id;
this.name = name;
this.price = price;
this.countProduct = countProduct;
}
//Getter&Setter
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 getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getCountProduct() {
return countProduct;
}
public void setCountProduct(int countProduct) {
this.countProduct = countProduct;
}
}
CartItem类 购物项类
/**
* 购物项类
*/
public class CartItem {
/*
产品 数量 小计
*/
private Product product;
private int count;
private double subTotal;
//有参构造
public CartItem(Product product, int count) {
this.product = product;
this.count = count;
}
//Getter & Setter
public Product getProduct() {
return product;
}
public void setProduct(Product product) {
this.product = product;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
public double getSubTotal() {
return product.getPrice()*count;
}
public void setSubTotal(double subTotal) {
this.subTotal = subTotal;
}
}
Shop超市类
public class Shop {
//商品数组
private Product[] products;
private int length = 5;
//构造器
public Shop() {
products = new Product[length];
//产品对象
products[0] = new Product(1001,"巧克力", 10, 1000);
products[1]= new Product(1002,"方便面", 2, 1000);
products[2]= new Product(1003,"矿泉水", 1, 5000);
products[3] = new Product(1004,"冰红茶", 5, 1000);
products[4] = new Product(1005,"冰激凌", 1, 1000);
}
public Product[] getProducts() {
return products;
}
public void print(){
for (int i = 0; i < products.length; i++) {
System.out.print("编号:"+products[i].getId());
System.out.print(" 名称:"+products[i].getName());
System.out.print(" 数量:"+products[i].getCountProduct());
System.out.println(" 单价:"+products[i].getPrice());
}
}
}
Cart购物车类
import java.util.HashMap;
import java.util.Map;
/**
* 购物车类
*/
public class Cart {
//存储商品的集合
private Map<Integer,CartItem> map;
//总价格
private double total;
private Shop shop;
//构造器
public Cart(Shop shop) {
map = new HashMap<>();
this.shop = shop;
}
//Getter & Setter
public Map<Integer, CartItem> getMap() {
return map;
}
public void setMap(Map<Integer, CartItem> map) {
this.map = map;
}
public double getTotal() {
return total;
}
//向购物车中添加商品的方法
public void add(Integer id,int count) {
CartItem cartItem = map.get(id);
//判断商品编号有没有找到
boolean flag = false;
for (int i = 0; i < shop.getProducts().length; i++) {
if (id == shop.getProducts()[i].getId()) {
flag = true;
if(cartItem == null){
map.put(id, new CartItem(shop.getProducts()[i], count));
shop.getProducts()[i].setCountProduct(shop.getProducts()[i].getCountProduct() - count);
}else {
cartItem.setCount(cartItem.getCount() + count);
shop.getProducts()[i].setCountProduct(shop.getProducts()[i].getCountProduct() - count);
}
}
}
if(!flag){
System.out.println("没有该商品编号");
}
}
//购物车删除商品(连同数量一起删除)
public void remove(Integer id){
CartItem cartItem = map.get(id);
if(map.get(id) == null){
System.out.println("没有该商品");
}else {
cartItem.getProduct().setCountProduct(cartItem.getProduct().getCountProduct() + cartItem.getCount());
map.remove(id);
}
}
//购物车减少某件商品的数量
public void remove(Integer id,int count){
CartItem cartItem = map.get(id);
if(cartItem ==null){
System.out.println("没有该商品");
}else {
cartItem.getProduct().setCountProduct(cartItem.getProduct().getCountProduct() + count);
cartItem.setCount(cartItem.getCount() -count);
}
}
//清空购物车
public void remove(){
for (Integer integer : map.keySet()) {
map.get(integer).getProduct().setCountProduct(map.get(integer).getCount() + map.get(integer).getProduct().getCountProduct());
}
map.clear();
total = 0;
}
//打印所有商品的方法
public void print(){
if(map.size() == 0){
System.out.println("你的购物车是空的");
}
for (Integer integer : map.keySet()) {
System.out.print("编号:"+map.get(integer).getProduct().getId());
System.out.print(" 名称:"+map.get(integer).getProduct().getName());
System.out.print(" 数量:"+map.get(integer).getCount());
System.out.println(" 小计:"+map.get(integer).getSubTotal());
}
}
}
Test测试类
import java.util.Scanner;
/**
* 测试类
*/
public class Test {
public static void main(String[] args) {
//Scanner类对象
Scanner sc = new Scanner(System.in);
//创建超市类对象
Shop shop = new Shop();
//创建购物车对象
Cart cart = new Cart(shop);
while (true) {
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("0.退出程序");
int select = sc.nextInt();
switch (select) {
case 1:
shop.print();break;
case 2:
//商品列表
shop.print();
System.out.println("请输入你要添加的商品编号:");
int id = sc.nextInt();
System.out.println("请输入你要添加的商品数量");
int count = sc.nextInt();
cart.add(id, count);
break;
case 3:
System.out.println("请输入要删除的商品的编号:");
int idRemove1 = sc.nextInt();
cart.remove(idRemove1);
break;
case 4:
System.out.println("请输入要减少数量的商品的编号:");
int idRemove2 = sc.nextInt();
System.out.println("请输入要减少的数量:");
int countRemove = sc.nextInt();
cart.remove(idRemove2,countRemove);
break;
case 5:
cart.print();break;
case 6:
cart.remove();break;
case 0 :
System.out.println("欢迎您的下次光临");
System.exit(0);
break;
default:
System.out.println("你输入的数字不对,请重试");break;
}
}
}
}