需求
- 模拟购物车模块的功能,需要实现添加商品到购物车中去,同时需要提供修改商品的购买数量,结算商品价格功能(请使用面向对象编程来解决)。
分析
- 购物车中的每个商品都是一个对象,需要定义一个商品类。
- 购物车本身也是一个对象:可以使用数组对象代表它。
- 完成界面架构,让用户选择操作的功能。
视频链接:https://www.bilibili.com/video/BV1Cv411372m?p=73
个人完善了一下代码,感觉良好
package com.c0rdXy.shopcar;
import java.util.Scanner;
public class ShopCarTest {
public static void main(String[] args) {
Goods[] shopCar = new Goods[100];
System.out.println("===============淘宝===============");
boolean flag = true;
while (flag) {
System.out.println("请您选择以下命令进行操作:\n");
System.out.println("添加商品到购物车:add" );
System.out.println("查询购物车::query" );
System.out.println("修改商品购买数量::update");
System.out.println("结算购买商品的金额:pay");
System.out.println("退出:quit\n");
Scanner sc = new Scanner(System.in);
System.out.println("请您输入命令:");
String command = sc.next();
switch (command) {
case "add":
addGoods(shopCar, sc);
break;
case "query":
queryGoods(shopCar);
break;
case "update":
updateGoods(shopCar, sc);
break;
case "pay":
payGoods(shopCar);
break;
case "quit":
flag = false;
break;
default:
System.out.println("没有该功能!");
}
}
}
private static void addGoods(Goods[] shopCar, Scanner sc) {
System.out.println("请您输入购买商品的编号(不重复):");
int id = sc.nextInt();
System.out.println("请您输入购买商品的名称:");
String name = sc.next();
System.out.println("请您输入购买商品的数量:");
int buyNumber = sc.nextInt();
System.out.println("请您输入购买商品的价格:");
double price = sc.nextDouble();
Goods g = new Goods();
g.id = id;
g.name = name;
g.buyNumber = buyNumber;
g.price = price;
for (int i = 0; i < shopCar.length; i++) {
if (shopCar[i] == null) {
shopCar[i] = g;
break;
}
}
System.out.println("您的商品" + g.name + "以添加到购物车成功!");
}
private static void queryGoods(Goods[] shopCar) {
System.out.println("===============查询购物车信息如下===============");
System.out.println("编号\t\t\t名称\t\t\t价格\t\t\t购买数量");
for (int i = 0; i < shopCar.length; i++) {
Goods g = shopCar[i];
if (g != null) {
System.out.println(g.id + "\t\t\t" + g.name + "\t\t\t" + g.price + "\t\t\t" + g.buyNumber);
} else {
break;
}
}
}
private static void updateGoods(Goods[] shopCar, Scanner sc) {
while (true) {
System.out.println("请您输入要修改的商品id:");
int id = sc.nextInt();
Goods g = getGoodsById(shopCar, id);
if (g == null) {
System.out.println("对不起,没有购买该商品!");
} else {
System.out.println("请输入" + g.name + "最新购买数量:");
int buyNumber = sc.nextInt();
g.buyNumber = buyNumber;
System.out.println("修改完成!");
queryGoods(shopCar);
break;
}
}
}
public static Goods getGoodsById(Goods[] shopCar, int id) {
for (int i = 0; i < shopCar.length; i++) {
Goods g = shopCar[i];
if (g != null) {
if (g.id == id) {
return g;
}
} else {
return null;
}
}
return null;
}
private static void payGoods(Goods[] shopCar) {
queryGoods(shopCar);
double money = 0;
for (int i = 0; i < shopCar.length; i++) {
Goods g = shopCar[i];
if (g != null) {
money += (g.buyNumber * g.price);
} else {
break;
}
}
System.out.println("订单总金额:" + money);
}
}
package com.c0rdXy.shopcar;
public class Goods {
int id;
String name;
double price;
int buyNumber;
}