需求:

模拟购物车的功能,需要实现添加物品到购物车中去,同时需要提供修改商品的购买数量,结算商品价格功能。

分析:

1.购物车中每个商品都是一个对象,需要定义一个商品类

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

2.购物车本身也是一个对象,可以用数组代表它。

我们先假设购物车的容量是100;
则定义数组 goods[] shopCar = new goods[100]

3.完成界面架构,让用户选择操作的功能

添加商品到购物车addGoods(shopCar,sc);
查询购物车中的商品queryGoods(shopCar);
修改商品的购买数量updateGoods(shopCar,sc);
结算购买商品的金额payGoods(shopCar);

实战代码

package oop;import java.util.Scanner;public class ShopCarTest {public static void main(String[] args){//1.定义商品类,用于后期创建商品对象//2.定义购物车对象,使用一组数组对象表示。goods[] shopCar = new goods[100];//3.搭建操作建构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("没有该项操作");break;            }}
}//完成商品添加到购物车的功能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("请输入商品价格");double price = sc.nextDouble();System.out.println("请输入购买的商品数量");int buyNumber = sc.nextInt();//将商品信息封装成一个商品对象goodsgoods s = new goods();s.id = id;s.name = name;s.price = price;s.buyNumber = buyNumber;//将商品对象添加至购物车for(int i = 0; i < shopCar.length; i++){if(shopCar[i]==null) {//此位置无元素存入shopCar[i] = s;break;}}System.out.println("您的商品" + s.name +"添加至购物车完成了! ");}//查询购物车中的商品public static void queryGoods(goods[] shopCar){System.out.println("===============查询购物车信息如下============");System.out.println("编号\t名称\t\t价格\t\t数量");for(int i = 0 ; i < shopCar.length; i++){goods s = shopCar[i];if(shopCar[i]!=null) {//展示这个商品类型System.out.println(s.id + "\t" + s.name +"\t\t" + s.price +"\t\t"+s.buyNumber);}else break;}}public static void updateGoods(goods[] shopCar, Scanner sc){while(true) {System.out.println("请输入您要更改的商品id");int id = sc.nextInt();goods s = getGoodsById(shopCar,id);//根据id查询出要修改的商品对象if(s == null){//没有商品System.out.println("对不起,没有购买商品!");}else {//说明存在对象可以进行修改System.out.println("请您输入"+s.name+"商品最新购买数量");int buyNumber = sc.nextInt();s.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 s = shopCar[i];if(s != null){//判断这个商品是否是我们要找的if(s.id == id)return s;}else return null;//找完了所有的商品都没有找到}return null;//访问完了100个商品都未找到}//结算商品的购买金额public static void payGoods(goods[] shopCar){queryGoods(shopCar);double money = 0;for(int i = 0; i <shopCar.length; i++){goods s = shopCar[i];if(s != null) {money += s.price *s.buyNumber ;}else break;}System.out.println("所购买的商品总金额是:" + money);}
}

添加商品操作

查询商品操作

更改商品数量操作

结算购买商品的金额

Java面向对象案例——购物车相关推荐

  1. java基础案例-购物车模拟

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一.需求 二.分析 三.代码 四.效果图 五.总结 一.需求 1.模拟购物车模块的功能,需要实现添加商品到购物车中去,同时需 ...

  2. 通过两个案例,从C语言过渡到Java面向对象编程

    ⭐欢迎来到JAVA语法专栏,一起学习,一起进步⭐ 金九银十秋招季,也是开学的时候,不少同学开了JAVA这门课.一起来看看这两个案例来熟悉熟悉吧. 一.案例来源 案例源自Java基础案例教程一书,现为学 ...

  3. Java面向对象之多态(来源于身边的案例)

    2019年1月3日 星期四 Java面向对象之多态(来源于身边的案例) 1. 为什么要用多态? 1.1 多态是面向对象的三大特性之一 1.2 多态是基于接口设计的模型 1.3 多态具有横向扩展特性 1 ...

  4. 《Java面向对象编程(阿里云大学)》笔记(文档+思维导图)

    课程链接:https://edu.aliyun.com/course/1011 (还是建议去看课程,笔记仅供参考. 由于文中的所有内容均为手敲,并且有些代码并未验证,因此如有错误,烦请指出~ 谢谢~~ ...

  5. 代码检查规则:Java语言案例详解

    本节课程为<代码检查规则:Java语言案例详解>, 通常情况下Java的代码检查规则可以分为以下十类: 接下来,让我们具体来看看每个分类的内容. 一.源文件规范 该类规范主要从文件名.文件 ...

  6. java进阶案例下载_java进阶案例

    java进阶案例: 数据类型,字符,数值,范围,布尔 :byte -128~127. 面向对象:protect :重载与构造 (一). this封装:static:继承:多态: 1.方法覆盖:supe ...

  7. Java面向对象基础学习笔记(构造、重载、继承、多态、抽象类、接口、模块)

    Java面向对象编程包含哪些内容? 怎么理解面向对象编程? 现实生活中,我们定义了"人"的抽象概念,这就是类class,生活中的每一个具体的人就是实例instance. class ...

  8. JAVA面向对象的基础知识快速通过---自学笔记(一)

    网上的教学很多,看视频非常浪费时间,看文字快点,快速捡起知识点,我只根据我学到的,集各种教学学习,把精华提取出来,把主要概念通俗的展示出来,基本常识就不介绍了,其他的资料谁看了都能看懂,只是java特 ...

  9. 三篇文章彻底搞懂Java面向对象之一

    写在前面,Java基础系列文章都是作者基于b站尚硅谷的Java基础视频所做的笔记,没有时间的同学可以认真看看,如果有时间的同学,还是建议看看视频,毕竟笔记说到底还是自己的东西,每个人的习惯也是不一样的 ...

最新文章

  1. rocketmq python 一个进程订阅多个topic_玩转不同业务场景,这些RabbitMQ特性会是得力助攻...
  2. mysql 多表查询练习题_mysql多表查询练习
  3. c++使用netsh命令_渗透常用命令IPC$内网(一)
  4. 构建和运行Java 8支持
  5. rman copy相关
  6. linux配置部署nginx
  7. C#6中的新增功能 【Unity3D亲测】
  8. jQuery静态方法(each、map、isFunction, isWindow, isArray, .trim(), .holdReady())
  9. 计算机桌面黑屏有鼠标,win7系统启动黑屏只有显示鼠标指针怎么办(图文)
  10. 十进制转换为三进制数_python3实现
  11. B - The Suspects(并查集)详解
  12. 对话 UNIX: 使用 Screen 创建并管理多个 shell
  13. 【系】微信小程序云开发实战坚果商城-扩展篇
  14. 解决chrt: failed to set pid 0‘s policy: Operation not permitted
  15. Jquery监听radio的变化以及获取radio选中值
  16. 云原生可观测性平台deepflow部署
  17. matlab 测量矩阵,压缩感知中的常见测量矩阵及其MATLAB实现代码
  18. 起源鸿蒙虚无等级,《刺客信条:起源》或为开放世界游戏 最高等级只有40
  19. chrome 窗体高度_控制Chrome浏览器窗口最小宽度和高度
  20. zabbix监控EMC VNX5500等系列存储

热门文章

  1. Ubuntu上软件安装
  2. Unity实战之牧师与魔鬼(动作分离版)
  3. UTC时间与Beijing时间转换工具
  4. 广州穗雅医院健康汇:为什么口腔溃疡会反反复复?
  5. 语音识别 公司_语音识别公司_语音识别公司排名 - 云+社区 - 腾讯云
  6. 直播弹幕系统(五)- 整合Stomp替换原生WebSocket方案探究
  7. 使用HttpClient下载网页
  8. 计算机server无法启动服务,win7不能启动server服务提示错误1068的解决方法
  9. MIC(最大信息系数)
  10. python按时间截取视频,python使用opencv按一定间隔截取视频帧