使用Java面向对象开发一个简单的购物车系统

这里使用面向对象方法构建出一个比较简易的购物车系统,系统功能拥有简单的添加商品,查看购物车,修改商品数量,和结算金额。

总体需求

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

        首先这里先声明一个商品类,构造出成员属性

package shopDemo;

public class Goods {
    String name;//名称·
    double price;//价格
    int buynumber;//购买数量
    int id;//编号
}

然后定义购物车对象,购物车使用一个数组表示

Goods[] shopCar = new Goods[100];

搭建首页框架,如需要进行那些操作使用输出语句实现,其中使用while大循环来保证可以循环操作,用户可以根据提示输入指令操作

while (true) {
            System.out.println("请您选择如下命令进行操作:");
            System.out.println("添加商品到购物车:add");
            System.out.println("查询商品到购物车:query");
            System.out.println("修改商品购买数量:update");
            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 "update":
                    //修改商品购买数量
                    updategoods(shopCar, sc);
                    break;
                case "pay":
                    //结算金额
                    paygoods(shopCar);
                    break;
                default:
                    System.out.println("没有该功能!");
            }
        }

构造添加购物车方法

创建Goods类的对象代表商品对象,封装用户输入的商品信息。把商品对象存入到表示购物车的数组中去

public 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();//键盘接收价格

        //2. 把这个购买信息封装成一个商品对象
        Goods g = new Goods();
        //第一  si对象里面的成员变量(属性)第二个是用户输入的信息
        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("您的商品:" + g.name + "添加到购物车成功!");
    }
}

构造方法查询购物车方法

遍历表示购物车的数组,每遍历到一个商品对象输出其信息展示。

 public static void querygoods(Goods[] shopCar) {
        System.out.println("----------------------------查询购物车信息如下--------------------------------------");
        System.out.println("编号\t\t名称\t\t\t价格\t\t\t购买数量");
        //shopCar=[g1.g2.g3.null,null,null,...]
        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\t" + g.price + "\t\t\t" + g.buynumber);
            } else {
                //遍历结束
                break;
            }
        }

    }

构造修改数量方法

  • 定义方法能够根据用户输入的id去购物车数组中查看是否存在该商品对象。存在返回该商品对象的地址,不存在返回null。
  • 判断返回的对象地址是否存在,存在修改其购买数量,不存在就继续。
 public static void updategoods(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.name + "新的购买数量");
                int buynumber = sc.nextInt();
                //将新的buynumber赋给buynumber
                g.buynumber = buynumber;
                System.out.println("恭喜您,修改完成");
                querygoods(shopCar);
                break;

            }
        }
    }

其中判断商品id是否存在于购物车中需要另一个判断方法

该方法通过遍历购物车数组,当遍历到非空的商品信息时,判断该商品id是否等于用户输入的id

是返回该商品 g,否返回null

//判断输入商品id是否存在于购物车的  方法
    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.id == id) {
                    return g;
                } else {
                    return null;
                }
            }
        }
        return null;//代表遍历完数组没有找到id一样的数组
    }

结算方法

public static void paygoods(Goods[] shopCar) {
        querygoods(shopCar);
        //1. 定义一个求和变量
        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);
    }

测试

添加商品

修该商品购买数量

 

查询购物车并结算金额

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值