目录
目录
› 需求分析、架构搭建
模拟购物车模块的功能,需要实现添加商品到购物车中去,同时需要提供修改商品的购买数量,结算商品价格功能
◆ 购物车中的每个商品都是一个对象,需要定义一个商品类
◆ 购物车本身也是一个对象,可以使用数组对象代表它
◆ 完成界面架构,让用户选择操作的功能。
基本工作创建Goods和ShoppingCarTest
/*
可以自行发挥,创建更多属性来实现多功能
*/
public class Goods {
//属性(成员变量)
int id; //用于商品编号
String name; //用于商品名
double price; //用于商品价格
int buyNumber; //用于储存购买商品数量
}
import java.util.Scanner;
/*
目标:
面向对象编程训练: 购物车模块模拟
*/
public class ShoppingCarTest {
public static void main(String[] args) {
//1.定义商品类,用于后期创建商品对象
//2.定义购物车对象:使用一个对象数组表示
Goods[] shopCar=new Goods[100];
//3.搭建操作框架
System.out.println("---欢迎━(*`∀´*)使用购物车---");
do {
System.out.println("1. 添加商品到购物车");
System.out.println("2. 查询商品到购物车");
System.out.println("3. 修改商品购买数量");
System.out.println("4. 结束购买商品的金额");
System.out.println("5. 退出购物车");
Scanner input=new Scanner(System.in);
System.out.print("请选择> ");
String num = input.next();
switch (num) {
case "1":
addGoods(shopCar, input);
System.out.println();
continue;
case "2":
queryGoods(shopCar);
System.out.println();
continue;
case "3":
updateGoods(shopCar, input);
System.out.println();
continue;
case "4":
payGoods(shopCar);
System.out.println();
continue;
case "5":
System.out.println("欢迎━(๑╹◡╹)ノ\"\"\"!下次使用~~\n");
break;
default:
System.out.println("\n没有该功能,请重新选择~~\n");
continue;
}
break;
}while (true);
}
public static void addGoods(Goods[] shopCar, Scanner input) {}
public static void queryGoods(Goods[] shopCar) {}
public static void updateGoods(Goods[] shopCar, Scanner input) {}
public static void payGoods(Goods[] shopCar) {}
›如何完成添加商品功能?
● 创建Goods类的对象表达商品对象,封装用户输入的商品信息
● 把商品对象存入到购物车的数组中去
//实现用户将商品添加到购物车
public static void addGoods(Goods[] shopCar, Scanner input) {
//1.录入用户购买商品信息
System.out.print("请输入购买商品的编号(不能重复):\t");
int id=input.nextInt();
System.out.print("请输入购买商品的名称:\t");
String name=input.next();
System.out.print("请输入购买商品的价格:\t");
double price=input.nextInt();
System.out.print("请输入购买商品数量:\t");
int buyNumber=input.nextInt();
//2.将购买商品的信息封装成一个商品对象
Goods G=new Goods();
G.id=id;
G.name=name;
G.price=price;
G.buyNumber=buyNumber;
//3.把商品对象添加到购物车中
for(int i=0; i<shopCar.length; i++){
if (shopCar[i]==null){
//说明此位置没有元素存入,把新买的元素添加到此处
shopCar[i]=G;
break; //结束,因为商品已存入成功,不需要继续
}
}
System.out.println("\n"+G.name+"已加入购物车~~");
}
›如何查看购物车里的信息?
● 遍历表示购物车的数组,每遍历到一个商品对象输出其信息展示
//查询购物车里的商品
public static void queryGoods(Goods[] shopCar) {
System.out.println("------------查询购物车信息如下------------");
System.out.println("编号\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"+G.name+"\t\t"+G.price+"\t\t"+G.buyNumber);
}else {
break;
}
}
}
› 怎样通过输入商品Id,找出对应的商品修改并购买数量?
● 定义方法能够根据用户输入的Id去购物车数组中查看是否存在该商品对象
● 存在返回该商品对象的地址,不存在返回null
● 判断返回的对象地址是否存在,存在修改其购买数量,不存在就继续
//修改购买商品数量
public static void updateGoods(Goods[] shopCar, Scanner input) {
while (true) {
System.out.print("请输入购买商品的Id: ");
int id = input.nextInt();
Goods G = getGoodsById(shopCar, id);
if (G != null) {
//执行修改商品数量
System.out.print("请你输入" + G.buyNumber + "最新的数量: ");
int buyNumber = input.nextInt();
G.buyNumber = buyNumber;
System.out.println("修改成功 _φ_(..)\n");
queryGoods(shopCar);
break;
} else {
//用户输入的商品Id不存在
System.out.println("(。・_・。)ノI’m sorry~,你所查询商品Id不在购物车中---\n");
}
}
}
//用于比对商品id,查看是否存在该商品
public static Goods getGoodsById(Goods[] shopCar, int id){
for(int i=0; i<shopCar.length; i++){
Goods G=shopCar[i];
//比对100个商品中的空值
if (G != null) {
//判断商品id与用户输入的id是否相同
if(G.id == id){
return G;
}
}else {
return null;
}
}
return null;
}
›如何进行商品的订单总额计算?
● 定义求和变量,遍历购物车数组中的全部商品,累加其单价*购买数量
//结算购买商品的金额
public static void payGoods(Goods[] shopCar) {
queryGoods(shopCar);
//定义一个求和变量累加金额
double money = 0;
//2.遍历购物车数组全部商品对象,累加单价*数量
for(int i=0; i< shopCar.length; i++){
Goods G=shopCar[i];
if (G !=null){
money += (G.price*G.buyNumber);
}else {
break;
}
}
System.out.println("订单总金额:"+money);
}
完整代码展示
定义类(Goods)
public class Goods {
//属性(成员变量)
int id; //用于商品编号
String name; //用于商品名
double price; //用于商品价格
int buyNumber; //用于储存购买商品数量
}
测试(ShoppingCarTest)
import java.util.Scanner;
/*
目标:
面向对象编程训练: 购物车模块模拟
*/
public class ShoppingCarTest {
public static void main(String[] args) {
//1.定义商品类,用于后期创建商品对象
//2.定义购物车对象:使用一个对象数组表示
Goods[] shopCar=new Goods[100];
//3.搭建操作框架
System.out.println("---欢迎━(*`∀´*)使用购物车---");
do {
System.out.println("1. 添加商品到购物车");
System.out.println("2. 查询商品到购物车");
System.out.println("3. 修改商品购买数量");
System.out.println("4. 结束购买商品的金额");
System.out.println("5. 退出购物车");
Scanner input=new Scanner(System.in);
System.out.print("请选择> ");
String num = input.next();
switch (num) {
case "1":
addGoods(shopCar, input);
System.out.println();
continue;
case "2":
queryGoods(shopCar);
System.out.println();
continue;
case "3":
updateGoods(shopCar, input);
System.out.println();
continue;
case "4":
payGoods(shopCar);
System.out.println();
continue;
case "5":
System.out.println("欢迎━(๑╹◡╹)ノ\"\"\"!下次使用~~\n");
break;
default:
System.out.println("\n没有该功能,请重新选择~~\n");
continue;
}
break;
}while (true);
}
//实现用户将商品添加到购物车
public static void addGoods(Goods[] shopCar, Scanner input) {
//1.录入用户购买商品信息
System.out.print("请输入购买商品的编号(不能重复):\t");
int id=input.nextInt();
System.out.print("请输入购买商品的名称:\t");
String name=input.next();
System.out.print("请输入购买商品的价格:\t");
double price=input.nextInt();
System.out.print("请输入购买商品数量:\t");
int buyNumber=input.nextInt();
//2.将购买商品的信息封装成一个商品对象
Goods G=new Goods();
G.id=id;
G.name=name;
G.price=price;
G.buyNumber=buyNumber;
//3.把商品对象添加到购物车中
for(int i=0; i<shopCar.length; i++){
if (shopCar[i]==null){
//说明此位置没有元素存入,把新买的元素添加到此处
shopCar[i]=G;
break; //结束,因为商品已存入成功,不需要继续
}
}
System.out.println("\n"+G.name+"已加入购物车~~");
}
//查询购物车里的商品
public static void queryGoods(Goods[] shopCar) {
System.out.println("------------查询购物车信息如下------------");
System.out.println("编号\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"+G.name+"\t\t"+G.price+"\t\t"+G.buyNumber);
}else {
break;
}
}
}
//修改购买商品数量
public static void updateGoods(Goods[] shopCar, Scanner input) {
while (true) {
System.out.print("请输入购买商品的Id: ");
int id = input.nextInt();
Goods G = getGoodsById(shopCar, id);
if (G != null) {
//执行修改商品数量
System.out.print("请你输入" + G.buyNumber + "最新的数量: ");
int buyNumber = input.nextInt();
G.buyNumber = buyNumber;
System.out.println("修改成功 _φ_(..)\n");
queryGoods(shopCar);
break;
} else {
//用户输入的商品Id不存在
System.out.println("(。・_・。)ノI’m sorry~,你所查询商品Id不在购物车中---\n");
}
}
}
//用于比对商品id,查看是否存在该商品
public static Goods getGoodsById(Goods[] shopCar, int id){
for(int i=0; i<shopCar.length; i++){
Goods G=shopCar[i];
//比对100个商品中的空值
if (G != null) {
//判断商品id与用户输入的id是否相同
if(G.id == id){
return G;
}
}else {
return null;
}
}
return null;
}
//结算购买商品的金额
public static void payGoods(Goods[] shopCar) {
queryGoods(shopCar);
//定义一个求和变量累加金额
double money = 0;
//2.遍历购物车数组全部商品对象,累加单价*数量
for(int i=0; i< shopCar.length; i++){
Goods G=shopCar[i];
if (G !=null){
money += (G.price*G.buyNumber);
}else {
break;
}
}
System.out.println("订单总金额:"+money);
}
}
运行结果展示
初次_φ_(..)编写有不足的地方欢迎评论留言 (o゚▽゚)o