面向对象编程训练:模拟购物车模块(:3[▓▓]快醒醒开学了

目录

目录

› 需求分析、架构搭建

基本工作创建Goods和ShoppingCarTest

›如何完成添加商品功能?

›如何查看购物车里的信息?

› 怎样通过输入商品Id,找出对应的商品修改并购买数量?

›如何进行商品的订单总额计算?

完整代码展示

定义类(Goods)

测试(ShoppingCarTest)

运行结果展示


› 需求分析、架构搭建

模拟购物车模块的功能,需要实现添加商品到购物车中去,同时需要提供修改商品的购买数量,结算商品价格功能

        ◆ 购物车中的每个商品都是一个对象,需要定义一个商品类

        ◆ 购物车本身也是一个对象,可以使用数组对象代表它

        ◆ 完成界面架构,让用户选择操作的功能。

基本工作创建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  

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值