模拟购物车模块的功能,实现添加商品到购物车中去,同时实现修改购物车商品购买数量,结算商品价格功能。
分析购物车中每一个商品都是一个对象,需要定义一个商品类。
购物车本身也是一个对象,可以用数组对象代表他
1、首先,我们需要创建一个Goods类
package com.xxf1.demo;
public class Goods {
private int id;
private String name;
private double price;
private int buyNumber;
public Goods() {
}
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 getBuyNumber() {
return buyNumber;
}
public void setBuyNumber(int buyNumber) {
this.buyNumber = buyNumber;
}
}
2、在创建个ShopCarTest测试类
package com.xxf1.demo;
import java.util.Scanner;
public class ShopCarTest {
public static void main(String[] args) {
//1、定义商品类,用于后期创建商品对象
//2、定义购物车对象,使用一个数组对象表示
Goods[] shopcar = new Goods[100];
//3、搭建操作架构
while (true) {
System.out.println("请您输入如下命令进行操作");
System.out.println("添加商品到购物车:add");
System.out.println("查询商品到购物车:query");
System.out.println("修改商品购买数量:updata");
System.out.println("结算购买商品的金额:pay");
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 "updata":
//修改商品购买数量
updataGoods(shopcar, sc);
break;
case "pay":
//结算购买商品的金额
pay(shopcar, sc);
break;
default:
System.out.println("没有该功能");
}
}
}
public static void pay(Goods[] shopcar, Scanner sc) {
queryGoods(shopcar);
//1、定义一个求和变量累加金额
double money = 0;
//2、遍历购物车数组中的全部商品对象,累加单价*数量
for (int i = 0; i < shopcar.length; i++) {
Goods g = shopcar[i];
if (g != null) {
money += (g.getPrice() * g.getBuyNumber());
} else {
break;
}
}
System.out.println("订单总金额:" + money);
}
public static void updataGoods(Goods[] shopcar, Scanner sc) {
//让用户输入要修改的id,根据id查询出要修改的商品对象
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.getName() + "商品最新购买数量:");
int buyNumber = sc.nextInt();
g.setBuyNumber(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) {
//判断这个商品对象的id是否是我们要找的
if (g.getId() == id) {
return g;
}
} else {
return null;//找完全部存在的商品都没有找到!
}
}
return null;//代表找完了100个商品都没有找到id一样的商品
}
public static void queryGoods(Goods[] shopcar) {
System.out.println("============查询购物车信息如下============");
System.out.println("编号tt名称ttt价格ttt购买数量");
for (int i = 0; i < shopcar.length; i++) {
Goods g = shopcar[i];
if (g != null) {
//展示这个商品
System.out.println(g.getId() + "tt" + g.getName() + "ttt" + g.getPrice() + "ttt" + g.getBuyNumber());
} else {
break;
}
}
}
public static void addGoods(Goods[] shopcar, Scanner sc) {
//1、录入用户输入的购买商品信息
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();
//2、把购买的商品封装成对象
Goods g = new Goods();
g.setId(id);
g.setName(name);
g.setBuyNumber(buyNumber);
g.setPrice(price);
//3、把商品的对象添加到数组当中
for (int i = 0; i < shopcar.length; i++) {
if (shopcar[i] == null) {
//说明此位置没有元素存入,我们把新买的商品添加到此处即可
shopcar[i] = g;
break;
}
}
System.out.println("您的商品:" + g.getName() + "添加购物车完成!");
}
}
测试



