代码下载地方:“


具体看注释:

本案例涉及两个原文件内容,分别是“”“Goods.java”,作为封装的商品类信息

第二个就是主程序"shopCap.java"的内容;

这个是Goods.java内容信息

package gouwuche;



// 封装的商品类
public class Goods {

    int id;   //编号
    String name;  //名称
    double price;   //价格
    int buyNumber;  //购买数量

}

这个是shopCap.java文件内容;

package gouwuche;

import java.sql.SQLOutput;
import java.util.Scanner;


/**
 * 购物车模块模拟
 * 需求:模拟购物车模块的功能,需要实现添加商品到购物车中,
 * 同时需要提供修改商品的购买数量,结算商品价格功能
 *
 * 分析:
 * 购物车中的每个商品都是一个对象,需要定义一个商品类
 * 购物车本身也是一个对象,可以使用数组对象代表他
 * 完成界面架构,让用户选择操作的功能
 */


public class ShopCar {

    public static void main(String[] args) {

        //添加商品add
        /**查看商品 query
         * 修改数量update
         * 结算价格pay
         * 需求:让用户输入商品信息,并加入到购物车,并且可以立即查看购物车信息
         * 需要让用户录入商品信息,创建商品对象封装商品信息
         * 并把商品对象加入到购物车数组中去
         * 查询购物车信息,就是遍历购物车数组中的每个商品对象。
         *
         * */
        // 2.定义购物车对象,使用一个数组对象表示

        Goods[] shopCar=new Goods[100];  //[null,null,null,...]

        Scanner sc=new Scanner(System.in);
        //3.搭建操作框架

        while (true){

            System.out.println("请您选择如下命令进行操作:");
            System.out.println("添加商品到购物车:add");
            System.out.println("查询商品到购物车:query");
            System.out.println("修改商品购买数量:update");
            System.out.println("结算购买商品的金额:pay");

            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":
                    //结算金额
                    pay(shopCar);

                    break;

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

            }

        }










    }

    public static void pay(Goods[] shopCar) {
        /**
         *当用户输入pay命令后,需要展示全部购买的商品信息和总金额
         * 分析:
         * 定义求和变量,遍历购物车数组中的全部商品,累加其单价*购买数量。
         */

        //1.定义一个求和变量累加金额
        double money=0;
        //2.遍历购物车数组中的全部商品对象,累加单价*数量


        //[g1,g2,null,null...]

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


    }

    public static void updateGoods(Goods[] shopCar,Scanner sc) {
        /**
         * 让用户输入商品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("请输入:"++"商品最新购买数量:");
                int buyNumber=sc.nextInt();
                g.buyNumber=buyNumber;
                System.out.println("修改完成!");
                queryGoods(shopCar);  //修改完成后,在查询下商品信息
                break;

            }
        }




    }

    public static Goods getGoodsById(Goods[] shopCar,int id){
        //shopCar=g1,g2,null,null,....]
        for (int i = 0; i <shopCar.length ; i++) {
            Goods g=shopCar[i];
            if(g!=null){
                //判断这个商品对象的id是否是我们查找的
                if(==id){
                    return g;
                }
            }else {
                return null;  // 找完了全面存在的商品,都没有找到!
            }

        }
        return null;   //代表找完了购物车中100个商品都是没有找到id一样的商品。

    }

    public static void queryGoods(Goods[] shopCar) {
        /**
         *查询购物车信息就是遍历购物车数组中的每个商品对象
         */

        System.out.println("========查询购物车信息如下=========");
        System.out.println("编号\t\t名称\t\t价格\t\t购买数量");
        //shopCar=[g1,g2,g3,g4,g5,null,null,...]
        for (int i = 0; i <shopCar.length ; i++) {
            Goods g=shopCar[i];  //定义一个商品实例,用于接收循环出的实例。
            if(g!=null){
                //展示这个商品
                System.out.println(+"\t\t"++"\t\t"+g.price+"\t\t"+g.buyNumber);
            }else{
                //遍历结束
                break;
            }


        }

    }


    /**
     * 添加商品到购物车
     * @param shopCar
     * @param sc
     *
     * 分析:需要让用户录入商品信息,创建商品对象封装商品信息
     * 并把商品对象加入到购物车的数组中去。
     * 查询购物车信息,就是遍历购物车数组中的每个商品对象
     */
    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;
        =name;
        g.buyNumber=buyNumber;
        g.price=price;


        //3.把这个商品对象添加到购物车数组中去
        //shopCar=a1,a2,null,null,....]

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

            if(shopCar[i]==null){
                //说明此位置没有元素存入,把我们新买的商品添加到此处即可
                shopCar[i]=g;
                break;  //结束,商品已经成功录入,不需要继续找位置了

            }

        }
        System.out.println("您的商品"++"添加到购物车完成!");




    }
}