面向对象实战:购物车案例

需求

  • 模拟购物车模块的功能,需要实现添加商品到购物车中去,同时需要提供修改商品的购买数量,结算商品价格功能(请使用面向对象编程来解决)。

分析

  • 购物车中的每个商品都是一个对象,需要定义一个商品类。
  • 购物车本身也是一个对象:可以使用数组对象代表它。
  • 完成界面架构,让用户选择操作的功能。

视频链接: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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue.js前端开发实战6.4购物案例是一个实际应用Vue.js框架来开发一个购物功能的案例购物功能是电商网站中非常常见的功能,通过此案例能够学习到如何使用Vue.js进行页面渲染、数据绑定和事件处理等前端开发技术。 在这个案例中,我们会通过Vue.js实现以下功能: 1. 商品列表展示:通过Vue.js的模板语法,我们可以根据后端返回的数据动态渲染商品列表,展示商品的名称、价格、图片等信息。 2. 商品添加和删除:通过点击“添加到购物”按钮,我们可以将商品添加到购物中。同时,我们也可以通过点击购物中的“删除”按钮,将已选择的商品从购物中移除。 3. 数量和价格计算:根据购物中的商品数量,我们可以实时计算出选中商品的总数量和总价格,并展示在页面上。 4. 购物状态同步:通过Vue.js的双向数据绑定,我们可以实现购物中商品数量的实时变化,无需刷新页面即可同步。 5. 商品勾选与取消:我们可以通过点击商品前面的勾选框来选择/取消选择商品。选择的商品会被计入总数量和总价格的计算,取消选择的商品会不计入计算。 通过这个案例,我们可以运用Vue.js框架中的数据绑定、计算属性、事件处理等特性,快速开发一个实际的购物功能。这个案例对于学习Vue.js的前端开发人员来说,是一个很好的实践项目,可以提升对Vue.js的理解和熟练度。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值