java基础 面向对象 购物车模块模拟

本文介绍了如何使用Java实现一个简单的购物车模块,包括添加商品、修改商品数量、查看购物车内容和结算价格等功能。通过控制台交互,利用面向对象编程实现商品对象的管理,并给出了完整的代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习视频:

Java入门基础视频教程,Java零基础自学首选黑马程序员Java入门教程(含Java项目和Java真题)_哔哩哔哩_bilibili

目录

 *一. 需求分析:模拟购物车模块的功能

目录

 *一. 需求分析:模拟购物车模块的功能

  1.控制台

        while(true){

            switch (command) {

2.添加商品:

//1.商品的对象:商品id,商品名称,商品价格,商品购买数量

//2.将商品添加到购物车 --> 把商品对象加入到数组中去

//3.查询购物车信息 --> 遍历购物车数组中的每个商品对象

3.修改

//1.定义一个方法:可以通过用户ID找到购物车中的商品

//2.商品存在放回商品对象的地址,不存在返回null

//3.判断返回的地址存不存在,存在修改其购买数量,不存在就继续

    //方法

4.查看

//遍历购物车数组

5.结算价格

//遍历购物车数组中全部商品,累加金额(单价*购买数量)

 二.全部代码

改进方法:


  1.控制台

        while(true){

            switch (command) {

2.添加商品:

//1.商品的对象:商品id,商品名称,商品价格,商品购买数量

//2.将商品添加到购物车 --> 把商品对象加入到数组中去

//3.查询购物车信息 --> 遍历购物车数组中的每个商品对象

3.修改

//1.定义一个方法:可以通过用户ID找到购物车中的商品

//2.商品存在放回商品对象的地址,不存在返回null

//3.判断返回的地址存不存在,存在修改其购买数量,不存在就继续

    //方法

4.查看

//遍历购物车数组

5.结算价格

//遍历购物车数组中全部商品,累加金额(单价*购买数量)

 二.全部代码


/**

 * 购物车模块模拟-架构搭建

 * 1.购物车中的每个商品都可以看成对象,

//1.定义商品类
public class Goods {
    int  id;
    String name;
    double price;
    int buyNumber;
}

 * 2.购物车用商品类型的数组表示,用于存放对象

Goods[] shopCar=new Goods[100];

 *一. 需求分析:模拟购物车模块的功能

添加商品,修改,查看数量,结算价格

架构:

  1.控制台

        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);

            String command=sc.next();

            //实现控制台

            switch (command) {

                case "add":

                    //添加 

                    System.out.println("==========添加商品进购物车==========");

                    addGoods(shopCar,sc);   

                    break;

                

                case "query":

                    //查看

                    System.out.println("==========查看商品信息==========");

                    queryGoods(shopCar);

                break;

                case "update":

                    //修改

                    System.out.println("==========修改购物车商品==========");

                    updateGoods(shopCar,sc);

                break;

                case "pay":

                    //结算

                    System.out.println("==========结算商品价格==========");

                    pay(shopCar);

                break;

                default:

                System.out.println("没有该功能");

                

            }

        }

    }

2.添加商品:

//添加商品到购物车,让用户输入商品信息,并加入到购物车中取,且可立即查看购物车信息。

//1.商品的对象:商品id,商品名称,商品价格,商品购买数量

//2.将商品添加到购物车 --> 把商品对象加入到数组中去

//3.查询购物车信息 --> 遍历购物车数组中的每个商品对象

    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();

        //ID对象=ID

        g.id=id;

        g.buyNumber=buyNumber;

        g.name=name;

        g.price=price;

        //3.把商品对象加入数组中去

        for (int i = 0; i < shopCar.length; i++) {

            if(shopCar[i]==null){

                //说明这个位置没有元素存入,把新买的商品添加到此处即可

                shopCar[i]=g;

                break;//添加商品完成

            }

        System.out.println("您的商品"+g.name+"成功添加到购物车");

        }

    }

3.修改

//让用户输入商品id,找出对应的商品修改其数量

//1.定义一个方法:可以通过用户ID找到购物车中的商品

//2.商品存在放回商品对象的地址,不存在返回null

//3.判断返回的地址存不存在,存在修改其购买数量,不存在就继续

    public 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("您没有购买该商品,id错误");

                //不结束,继续输入id

            }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;//判断商品id是否正确

                }else{

                    return null;//目前还没有找到商品

                }

            }

        }

        return null; //找完了所有商品都没有

    }

4.查看

//查询商品购物车中的信息并展示出来

//遍历购物车数组

    public static void queryGoods(Goods[] shopCar) {

        System.out.println("编号\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"+g.name+"\t\t\t"+g.price+"\t\t\t"+g.buyNumber);                

            }else{

                break;

                //展示结束,结束遍历

            }

        }

    }

5.结算价格

//当用户输入Pay命令后,展示全部购买商品信息和总金额

//遍历购物车数组中全部商品,累加金额(单价*购买数量)

public static void pay(Goods[] shopCar) {

        double money=0;

        for (int i = 0; i < shopCar.length; i++) {

            Goods g=shopCar[i];

            if(g!=null){

                money += (g.price*g.buyNumber);

            }else{

                break;

            }

        }

        queryGoods(shopCar);//展示所有商品

        System.out.println("订单总金额为"+money);

    }

 二.全部代码

//1.定义商品类
public class Goods {
    int  id;
    String name;
    double price;
    int buyNumber;
}
import java.util.Scanner;

public class Shoppingcae {
    public static void main(String[] args) {
    
        //2.定义购物车对象,长度为100
        Goods[] shopCar=new Goods[100];
        //控制台
        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);
            String command=sc.next();
            //实现控制台
            switch (command) {
                case "add":
                    //添加 
                    System.out.println("==========添加商品进购物车==========");
                    addGoods(shopCar,sc);   
                    break;
                
                case "query":
                    //查看
                    System.out.println("==========查看商品信息==========");
                    queryGoods(shopCar);
                break;

                case "update":
                    //修改
                    System.out.println("==========修改购物车商品==========");
                    updateGoods(shopCar,sc);
                break;

                case "pay":
                    //结算
                    System.out.println("==========结算商品价格==========");
                    pay(shopCar);
                break;

                default:
                System.out.println("没有该功能");
                
            }
        }
    }

//当用户输入Pay命令后,展示全部购买商品信息和总金额
//遍历购物车数组中全部商品,累加金额(单价*购买数量)
    public static void pay(Goods[] shopCar) {
        double money=0;
        for (int i = 0; i < shopCar.length; i++) {
            Goods g=shopCar[i];
            if(g!=null){
                money += (g.price*g.buyNumber);
            }else{
                break;
            }
        }
        queryGoods(shopCar);//展示所有商品
        System.out.println("订单总金额为"+money);
    }


//让用户输入商品id,找出对应的商品修改其数量
//1.定义一个方法:可以通过用户ID找到购物车中的商品
//2.商品存在放回商品对象的地址,不存在返回null
//3.判断返回的地址存不存在,存在修改其购买数量,不存在就继续
    public 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("您没有购买该商品,id错误");
                //不结束,继续输入id
            }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;//判断商品id是否正确
                }else{
                    return null;//目前还没有找到商品
                }
            }
        }
        return null; //找完了所有商品都没有
    }


//查询商品购物车中的信息并展示出来
    public static void queryGoods(Goods[] shopCar) {
        System.out.println("编号\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"+g.name+"\t\t\t"+g.price+"\t\t\t"+g.buyNumber);                
            }else{
                break;
                //展示结束,结束遍历
            }
        }
    }
//添加商品到购物车,让用户输入商品信息,并加入到购物车中取,且可立即查看购物车信息。
//1.商品的对象:商品id,商品名称,商品价格,商品购买数量
//2.将商品添加到购物车 --> 把商品对象加入到数组中去
//3.查询购物车信息 --> 遍历购物车数组中的每个商品对象
    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();
        //ID对象=ID
        g.id=id;
        g.buyNumber=buyNumber;
        g.name=name;
        g.price=price;

        //3.把商品对象加入数组中去
        for (int i = 0; i < shopCar.length; i++) {
            if(shopCar[i]==null){
                //说明这个位置没有元素存入,把新买的商品添加到此处即可
                shopCar[i]=g;
                break;//添加商品完成
            }
        System.out.println("您的商品"+g.name+"成功添加到购物车");
        }
    }
}

改进方法:

  • 将Goods类的成员变量封装
  • 将Shoppingcar中的所有赋值改为赋值方法set..();所有取值改为取值方法get...();

详见:java基础 面向对象(3)封装 Javabean_cbdA_ZAI的博客-优快云博客

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿崽meitoufa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值