熟悉面向对象思维
创建类
package com.google.demo;
/**
* @author North
* @date 2022/9/20 13:27
*/
public class Goods {
int id; // 编号
String name; // 名称
double price; // 价格
int buyNumber; // 购买数量
}
创建测试类
package com.google.demo;
import javax.xml.ws.soap.Addressing;
import java.util.Scanner;
/**
* @author North
* @date 2022/9/20 13:28
*/
public class ShopCarTest {
public static void main(String[] args) {
/**
* 目标 : 面向对象编程训练 , 购物车模拟
*
* 1. 定义商品类 , 用于后期创建商品对象
* 2. 定义购物车对象 , 使用一个数组对象表示
*/
// 定义一个动态数组
Goods[] showCar = new Goods[100];
while (true) {
// 搭建操作架构
System.out.println("请你选择一下命令进行操作");
System.out.println("添加商品到购物车:add");
System.out.println("查询购物车商品展示:query");
System.out.println("修改商品购买数量:update");
System.out.println("结算购买商品的金额:pay");
System.out.println("退出界面:quit");
Scanner scanner = new Scanner(System.in);
System.out.println("请您输入命令:");
String command = scanner.next();
switch (command) {
case "add":
// 添加商品到购物车 , 传入扫描器对象
addGoos(showCar, scanner);
break;
case "query":
// 查询购物车商品展示
queryGoos(showCar);
break;
case "update":
// 让用户输入商品id,找出对象的商品修改其购买数量
// 修改商品购买数量
updateGoos(showCar, scanner);
break;
case "pay":
// 结算购买商品的金额
payGoos(showCar);
break;
case "quit":
// 退出界面
quit();
break;
default:
System.out.println("您输入的命令有误 , 请重新输入");
}
}
}
/**
* 添加商品到购物车
*
* @param showCar
* @param scanner
*/
// 添加商品到购物车
private static void addGoos(Goods[] showCar, Scanner scanner) {
// 1. 录入用户输入的购买的商品的信息
System.out.println("请您输入购买商品的编号(不重复)");
int id = scanner.nextInt();
System.out.println("请你输入购买商品的名称");
String name = scanner.next();
System.out.println("请你输入购买商品的数量");
int buyNumber = scanner.nextInt();
System.out.println("请你输入购买商品的价格");
double price = scanner.nextDouble();
// 2. 把这个购买商品的信息封装成一个商品对象
Goods goods = new Goods();
goods.id = id;
goods.name = name;
goods.buyNumber = buyNumber;
goods.price = price;
// 3. 把这个商品添加到购物车这个数组中去
for (int number = 0; number < showCar.length; number++) {
if (showCar[number] == null) {
// 说明此位置没有元素存入 ,把我们新买的商品添加到此处即可
showCar[number] = goods; // 存入商品对象
// 商品添加成功
break;
}
}
System.out.println("你的商品" + goods.name + "添加购物车成功");
System.out.println("-------------------------------------------------------------");
System.out.println();
System.out.println();
}
// 查询购物车商品展示
/**
* 查询购物车中的商品对象信息 , 并展示出来
*
* @param showCar
*/
private static void queryGoos(Goods[] showCar) {
System.out.println("======================查询购物车信息如下================================");
System.out.println("编号\t\t名称\t\t\t价格\t\t\t购买数量");
// 遍历数组
for (int number = 0; number < showCar.length; number++) {
// 定义一个变量用来接受 showCar[number] 存放的地址
Goods goods = showCar[number];
if (goods != null) {
// 展示商品信息
System.out.println(goods.id + "\t\t\t" + goods.name + "\t\t\t" + goods.price + "\t\t\t" + goods.buyNumber);
} else {
// 遍历结束
break;
}
}
System.out.println("-------------------------------------------------------------");
System.out.println();
System.out.println();
}
// 修改商品购买数量
/**
* 让用户输入要修改商品的id,根据id查出要修改的商品对象
*
* @param showCar
* @param scanner
*/
private static void updateGoos(Goods[] showCar, Scanner scanner) {
while (true) {
// 让用户输入要修改商品的id , 根据id查询出要修改的商品对象
System.out.println("请你输入要修改商品的id");
int id = scanner.nextInt();
Goods goods = getGoodsById(showCar, id);
if (goods == null) {
// 没有该商品
System.out.println("对不起 , 您没有购买此商品 , 请重新输入");
} else {
// 说明该商品存在 , 可以修改它了
System.out.println("请您输入:" + goods.name + "商品最新购买的数量:");
int buyNumber = scanner.nextInt();
// 传入数组对象中
goods.buyNumber = buyNumber;
System.out.println("修改完成");
queryGoos(showCar);
// 退出该循环语句
break;
}
}
}
/**
* 通过商品的id进行修改
*
* @param shopCar
* @param id
* @return
*/
private static Goods getGoodsById(Goods[] shopCar, int id) {
// 遍历购物车商品
for (int number = 0; number < shopCar.length; number++) {
// 通过创建对象来接受商品地址
Goods goods = shopCar[number];
if (goods != null) {
// 判断这个商品的id是否是我们想要的id
if (goods.id == id) {
// 如果是就返回所购买的商品
return goods;
} else {
// 找完了全面 存在的商品 , 都没有找到
return null;
}
}
}
// 代表找完了100个商品都没有找到id一样的商品
return null;
}
// 结算购买商品的金额
private static void payGoos(Goods[] showCar) {
// 1. 定义一个求和变量累加金额
double money = 0;
// 遍历商品
for (int number = 0; number < showCar.length; number++) {
Goods goods = showCar[number];
if (goods != null) {
money += (goods.price * goods.buyNumber);
// money = money + (goods.price * goods.buyNumber);
} else {
break;
}
}
System.out.println("订单总金额:" + money);
}
// 退出界面
private static void quit() {
System.out.println("欢迎下次光临");
System.exit(0);
}
}