首页 > 其他分享 >010——面向对象基础案例——简单实现简易购物车代码演示

010——面向对象基础案例——简单实现简易购物车代码演示

时间:2022-09-21 21:57:30浏览次数:69  
标签:goods 商品 showCar System 购物车 010 面向对象 println out

熟悉面向对象思维

创建类

package com.google.demo;

/**
 * @author North
 * @date 2022/9/20 13:27
 */
public class Goods {
    int id; // 编号
    String name; // 名称
    double price; // 价格
    int buyNumber; // 购买数量


}

创建测试类

package com.google.demo;

import javax.xml.ws.soap.Addressing;
import java.util.Scanner;


/**
 * @author North
 * @date 2022/9/20 13:28
 */

public class ShopCarTest {
    public static void main(String[] args) {
        /**
         *  目标 : 面向对象编程训练 , 购物车模拟
         *
         *  1. 定义商品类 , 用于后期创建商品对象
         *  2. 定义购物车对象 , 使用一个数组对象表示
         */

        // 定义一个动态数组
        Goods[] showCar = new Goods[100];


        while (true) {
            // 搭建操作架构
            System.out.println("请你选择一下命令进行操作");

            System.out.println("添加商品到购物车:add");
            System.out.println("查询购物车商品展示:query");
            System.out.println("修改商品购买数量:update");
            System.out.println("结算购买商品的金额:pay");
            System.out.println("退出界面:quit");

            Scanner scanner = new Scanner(System.in);
            System.out.println("请您输入命令:");
            String command = scanner.next();


            switch (command) {
                case "add":
                    // 添加商品到购物车 , 传入扫描器对象
                    addGoos(showCar, scanner);
                    break;
                case "query":
                    // 查询购物车商品展示
                    queryGoos(showCar);
                    break;
                case "update":
                    // 让用户输入商品id,找出对象的商品修改其购买数量
                    // 修改商品购买数量
                    updateGoos(showCar, scanner);
                    break;
                case "pay":
                    // 结算购买商品的金额
                    payGoos(showCar);
                    break;
                case "quit":
                    // 退出界面
                    quit();
                    break;
                default:
                    System.out.println("您输入的命令有误 , 请重新输入");
            }
        }
    }


    /**
     * 添加商品到购物车
     *
     * @param showCar
     * @param scanner
     */
    // 添加商品到购物车
    private static void addGoos(Goods[] showCar, Scanner scanner) {
        // 1. 录入用户输入的购买的商品的信息
        System.out.println("请您输入购买商品的编号(不重复)");
        int id = scanner.nextInt();

        System.out.println("请你输入购买商品的名称");
        String name = scanner.next();

        System.out.println("请你输入购买商品的数量");
        int buyNumber = scanner.nextInt();

        System.out.println("请你输入购买商品的价格");
        double price = scanner.nextDouble();

        // 2. 把这个购买商品的信息封装成一个商品对象
        Goods goods = new Goods();
        goods.id = id;
        goods.name = name;
        goods.buyNumber = buyNumber;
        goods.price = price;

        // 3. 把这个商品添加到购物车这个数组中去
        for (int number = 0; number < showCar.length; number++) {

            if (showCar[number] == null) {
                // 说明此位置没有元素存入 ,把我们新买的商品添加到此处即可
                showCar[number] = goods;    // 存入商品对象
                // 商品添加成功
                break;
            }
        }
        System.out.println("你的商品" + goods.name + "添加购物车成功");
        System.out.println("-------------------------------------------------------------");
        System.out.println();
        System.out.println();


    }

    // 查询购物车商品展示

    /**
     * 查询购物车中的商品对象信息 , 并展示出来
     *
     * @param showCar
     */
    private static void queryGoos(Goods[] showCar) {
        System.out.println("======================查询购物车信息如下================================");
        System.out.println("编号\t\t名称\t\t\t价格\t\t\t购买数量");
        // 遍历数组
        for (int number = 0; number < showCar.length; number++) {
            // 定义一个变量用来接受 showCar[number] 存放的地址
            Goods goods = showCar[number];
            if (goods != null) {
                // 展示商品信息
                System.out.println(goods.id + "\t\t\t" + goods.name + "\t\t\t" + goods.price + "\t\t\t" + goods.buyNumber);
            } else {
                // 遍历结束
                break;
            }
        }
        System.out.println("-------------------------------------------------------------");
        System.out.println();
        System.out.println();

    }

    // 修改商品购买数量

    /**
     * 让用户输入要修改商品的id,根据id查出要修改的商品对象
     *
     * @param showCar
     * @param scanner
     */
    private static void updateGoos(Goods[] showCar, Scanner scanner) {
        while (true) {
            // 让用户输入要修改商品的id , 根据id查询出要修改的商品对象
            System.out.println("请你输入要修改商品的id");
            int id = scanner.nextInt();
            Goods goods = getGoodsById(showCar, id);

            if (goods == null) {
                // 没有该商品
                System.out.println("对不起 , 您没有购买此商品 , 请重新输入");
            } else {
                // 说明该商品存在 , 可以修改它了
                System.out.println("请您输入:" + goods.name + "商品最新购买的数量:");
                int buyNumber = scanner.nextInt();
                // 传入数组对象中
                goods.buyNumber = buyNumber;
                System.out.println("修改完成");
                queryGoos(showCar);
                // 退出该循环语句
                break;
            }
        }
    }

    /**
     * 通过商品的id进行修改
     *
     * @param shopCar
     * @param id
     * @return
     */
    private static Goods getGoodsById(Goods[] shopCar, int id) {

        // 遍历购物车商品
        for (int number = 0; number < shopCar.length; number++) {
            // 通过创建对象来接受商品地址
            Goods goods = shopCar[number];

            if (goods != null) {
                // 判断这个商品的id是否是我们想要的id
                if (goods.id == id) {
                    // 如果是就返回所购买的商品
                    return goods;
                } else {
                    // 找完了全面 存在的商品 , 都没有找到
                    return null;
                }
            }
        }
        // 代表找完了100个商品都没有找到id一样的商品
        return null;
    }

    // 结算购买商品的金额
    private static void payGoos(Goods[] showCar) {
        // 1. 定义一个求和变量累加金额
        double money = 0;

        // 遍历商品
        for (int number = 0; number < showCar.length; number++) {
            Goods goods = showCar[number];
            if (goods != null) {
                money += (goods.price * goods.buyNumber);
                // money = money + (goods.price * goods.buyNumber);
            } else {
                break;
            }
        }
        System.out.println("订单总金额:" + money);
    }

    // 退出界面
    private static void quit() {
        System.out.println("欢迎下次光临");
        System.exit(0);

    }
}

总结 :

熟悉了面向对象的调用和内存图机制 , 也逐渐的理解了面向对象的使用和概念 , 同时 ,通过本次案例也对面向对象有了自己的了解 , 最后 , 希望自己每次的学习都是一个开心的过程 , 加油!!!!!!

标签:goods,商品,showCar,System,购物车,010,面向对象,println,out
From: https://www.cnblogs.com/NorthFot/p/16717254.html

相关文章

  • 面向对象八大原则
    首先得区分出,哪些部分是相对稳定的,哪些部分是相对变化的。单一职责原则(SingleResponsibilityPrinciple)每一个类应该专注于做一件事情。里氏替换原则(LiskovSubstituti......
  • Java面向对象初探
    Java面向对象1.类和对象1.1类和对象的概念:类是抽象的集合,对象是具体的实例。类可以想象为制作蛋糕的模具,对象就是做出来的蛋糕。类中包含属性(字段)和方法(操作)1.2类......
  • 面向对象的7种设计原则(4)-合成聚合复用原则
    合成复用原则在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分;新的对象通过向这些对象的委派达到复用这些对象的目的。如果两个类是“Has-a”关系应使用合成......
  • 面向对象的7种设计原则(3)-依赖倒置原则
    依赖倒置原则Highlevelmodulesshouldnotdependuponlowlevelmodules.Bothshoulddependuponabstractions.高层模块不应该依赖低层模块,两者都应该依赖其抽象(......
  • 面向对象的7种设计原则(1)-单一职责原则
    永远不要让一个类存在多个改变的理由。单一原则表明,如果你有多个原因去改变一个类,那么应该把这些引起变化的原因分离开,把这个类分成多个类,每个类只负责处理一种改变。当......
  • 面向对象的7种设计原则(2)-接口隔离原则
    定义InterfaceSegregationPrinciple客户端不应依赖它不需要的接口类间的依赖关系应该建立在最小的接口上其实通俗来理解就是,不要在一个接口里面放很多的方法,这......
  • 面向对象的7种设计原则(7)-开闭原则
    开闭原则开闭原则是面向对象世界里最基础的设计原则,它指导我们如何建立一个稳定,灵活,可扩展的系统。开闭原则定义如下:Softwareentitieslikeclasses,modulesandfunct......
  • 面向对象的7种设计原则(6)-迪米特原则
    迪米特原则迪米特原则(LawofDemeter)又叫最少知道原则(LeastKnowledgePrinciple),可以简单说成:talkonlytoyourimmediatefriends,只与你直接的朋友们通信,不要跟“陌生......
  • 面向对象的7种设计原则(5)-里氏代换原则
    定义里氏代换原则(LiskovSubstitutionPrincipleLSP)面向对象设计的基本原则之一。里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。LSP是继承复用的基石,只......
  • 做题记录整理dp1 P1541. [NOIP2010 提高组] 乌龟棋(2022/9/20)
    P1541.[NOIP2010提高组]乌龟棋把每个牌选多少个塞进dp的四个维度里,就可以做到无后效性了#include<bits/stdc++.h>usingnamespacestd;#definefor1(i,a,b)for(ll......