面向对象编程训练:模拟购物车模块(:3[▓▓]快醒醒开学了
目录
目录
› 需求分析、架构搭建
基本工作创建Goods和ShoppingCarTest
›如何完成添加商品功能?
›如何查看购物车里的信息?
› 怎样通过输入商品Id,找出对应的商品修改并购买数量?
›如何进行商品的订单总额计算?
完整代码展示
定义类(Goods)
测试(ShoppingCarTest)
运行结果展示
› 需求分析、架构搭建
模拟购物车模块的功能,需要实现添加商品到购物车中去,同时需要提供修改商品的购买数量,结算商品价格功能
◆ 购物车中的每个商品都是一个对象,需要定义一个商品类
◆ 购物车本身也是一个对象,可以使用数组对象代表它
◆ 完成界面架构,让用户选择操作的功能。
基本工作创建Goods和ShoppingCarTest
/*可以自行发挥,创建更多属性来实现多功能
*/
public class Goods {//属性(成员变量)int id; //用于商品编号String name; //用于商品名double price; //用于商品价格int buyNumber; //用于储存购买商品数量
}
import java.util.Scanner;/*目标:面向对象编程训练: 购物车模块模拟*/
public class ShoppingCarTest {public static void main(String[] args) {//1.定义商品类,用于后期创建商品对象//2.定义购物车对象:使用一个对象数组表示Goods[] shopCar=new Goods[100];//3.搭建操作框架System.out.println("---欢迎━(*`∀´*)使用购物车---");do {System.out.println("1. 添加商品到购物车");System.out.println("2. 查询商品到购物车");System.out.println("3. 修改商品购买数量");System.out.println("4. 结束购买商品的金额");System.out.println("5. 退出购物车");Scanner input=new Scanner(System.in);System.out.print("请选择> ");String num = input.next();switch (num) {case "1":addGoods(shopCar, input);System.out.println();continue;case "2":queryGoods(shopCar);System.out.println();continue;case "3":updateGoods(shopCar, input);System.out.println();continue;case "4":payGoods(shopCar);System.out.println();continue;case "5":System.out.println("欢迎━(๑╹◡╹)ノ\"\"\"!下次使用~~\n");break;default:System.out.println("\n没有该功能,请重新选择~~\n");continue;}break;}while (true);}public static void addGoods(Goods[] shopCar, Scanner input) {}public static void queryGoods(Goods[] shopCar) {}public static void updateGoods(Goods[] shopCar, Scanner input) {}public static void payGoods(Goods[] shopCar) {}
›如何完成添加商品功能?
● 创建Goods类的对象表达商品对象,封装用户输入的商品信息
● 把商品对象存入到购物车的数组中去
//实现用户将商品添加到购物车public static void addGoods(Goods[] shopCar, Scanner input) {//1.录入用户购买商品信息System.out.print("请输入购买商品的编号(不能重复):\t");int id=input.nextInt();System.out.print("请输入购买商品的名称:\t");String name=input.next();System.out.print("请输入购买商品的价格:\t");double price=input.nextInt();System.out.print("请输入购买商品数量:\t");int buyNumber=input.nextInt();//2.将购买商品的信息封装成一个商品对象Goods G=new Goods();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("\n"+G.name+"已加入购物车~~");}
›如何查看购物车里的信息?
● 遍历表示购物车的数组,每遍历到一个商品对象输出其信息展示
//查询购物车里的商品public static void queryGoods(Goods[] shopCar) {System.out.println("------------查询购物车信息如下------------");System.out.println("编号\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"+G.price+"\t\t"+G.buyNumber);}else {break;}}}
› 怎样通过输入商品Id,找出对应的商品修改并购买数量?
● 定义方法能够根据用户输入的Id去购物车数组中查看是否存在该商品对象
● 存在返回该商品对象的地址,不存在返回null
● 判断返回的对象地址是否存在,存在修改其购买数量,不存在就继续
//修改购买商品数量public static void updateGoods(Goods[] shopCar, Scanner input) {while (true) {System.out.print("请输入购买商品的Id: ");int id = input.nextInt();Goods G = getGoodsById(shopCar, id);if (G != null) {//执行修改商品数量System.out.print("请你输入" + G.buyNumber + "最新的数量: ");int buyNumber = input.nextInt();G.buyNumber = buyNumber;System.out.println("修改成功 _φ_(..)\n");queryGoods(shopCar);break;} else {//用户输入的商品Id不存在System.out.println("(。・_・。)ノI’m sorry~,你所查询商品Id不在购物车中---\n");}}}//用于比对商品id,查看是否存在该商品public static Goods getGoodsById(Goods[] shopCar, int id){for(int i=0; i<shopCar.length; i++){Goods G=shopCar[i];//比对100个商品中的空值if (G != null) {//判断商品id与用户输入的id是否相同if(G.id == id){return G;}}else {return null;}}return null;}
›如何进行商品的订单总额计算?
● 定义求和变量,遍历购物车数组中的全部商品,累加其单价*购买数量
//结算购买商品的金额public static void payGoods(Goods[] shopCar) {queryGoods(shopCar);//定义一个求和变量累加金额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);}
完整代码展示
定义类(Goods)
public class Goods {//属性(成员变量)int id; //用于商品编号String name; //用于商品名double price; //用于商品价格int buyNumber; //用于储存购买商品数量
}
测试(ShoppingCarTest)
import java.util.Scanner;/*目标:面向对象编程训练: 购物车模块模拟*/
public class ShoppingCarTest {public static void main(String[] args) {//1.定义商品类,用于后期创建商品对象//2.定义购物车对象:使用一个对象数组表示Goods[] shopCar=new Goods[100];//3.搭建操作框架System.out.println("---欢迎━(*`∀´*)使用购物车---");do {System.out.println("1. 添加商品到购物车");System.out.println("2. 查询商品到购物车");System.out.println("3. 修改商品购买数量");System.out.println("4. 结束购买商品的金额");System.out.println("5. 退出购物车");Scanner input=new Scanner(System.in);System.out.print("请选择> ");String num = input.next();switch (num) {case "1":addGoods(shopCar, input);System.out.println();continue;case "2":queryGoods(shopCar);System.out.println();continue;case "3":updateGoods(shopCar, input);System.out.println();continue;case "4":payGoods(shopCar);System.out.println();continue;case "5":System.out.println("欢迎━(๑╹◡╹)ノ\"\"\"!下次使用~~\n");break;default:System.out.println("\n没有该功能,请重新选择~~\n");continue;}break;}while (true);}//实现用户将商品添加到购物车public static void addGoods(Goods[] shopCar, Scanner input) {//1.录入用户购买商品信息System.out.print("请输入购买商品的编号(不能重复):\t");int id=input.nextInt();System.out.print("请输入购买商品的名称:\t");String name=input.next();System.out.print("请输入购买商品的价格:\t");double price=input.nextInt();System.out.print("请输入购买商品数量:\t");int buyNumber=input.nextInt();//2.将购买商品的信息封装成一个商品对象Goods G=new Goods();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("\n"+G.name+"已加入购物车~~");}//查询购物车里的商品public static void queryGoods(Goods[] shopCar) {System.out.println("------------查询购物车信息如下------------");System.out.println("编号\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"+G.price+"\t\t"+G.buyNumber);}else {break;}}}//修改购买商品数量public static void updateGoods(Goods[] shopCar, Scanner input) {while (true) {System.out.print("请输入购买商品的Id: ");int id = input.nextInt();Goods G = getGoodsById(shopCar, id);if (G != null) {//执行修改商品数量System.out.print("请你输入" + G.buyNumber + "最新的数量: ");int buyNumber = input.nextInt();G.buyNumber = buyNumber;System.out.println("修改成功 _φ_(..)\n");queryGoods(shopCar);break;} else {//用户输入的商品Id不存在System.out.println("(。・_・。)ノI’m sorry~,你所查询商品Id不在购物车中---\n");}}}//用于比对商品id,查看是否存在该商品public static Goods getGoodsById(Goods[] shopCar, int id){for(int i=0; i<shopCar.length; i++){Goods G=shopCar[i];//比对100个商品中的空值if (G != null) {//判断商品id与用户输入的id是否相同if(G.id == id){return G;}}else {return null;}}return null;}//结算购买商品的金额public static void payGoods(Goods[] shopCar) {queryGoods(shopCar);//定义一个求和变量累加金额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);}}
运行结果展示
初次_φ_(..)编写有不足的地方欢迎评论留言 (o゚▽゚)o
面向对象编程训练:模拟购物车模块(:3[▓▓]快醒醒开学了相关推荐
- Java面向对象编程-模拟购物车模块
总体架构 需求: 模拟购物车模块功能,需要实现添加商品到购物车中去,同是需要提供修改商品的购买数量,结算商品价格等功能 分析: ① 购物车中的每个商品都是一个对象,需要定义一个商品类 ② 购物车本身也 ...
- C++ 面向对象编程训练魔兽世界备战
总时间限制: 1000ms 内存限制: 65536kB 描述 魔兽世界的西面是红魔军的司令部,东面是蓝魔军的司令部.两个司令部之间是依次排列的若干城市. 红司令部,City 1,City 2,--, ...
- java编程——案例1:模拟购物车
Goods类 package demo6;public class Goods {private int id; //编号private String name; //名称private double ...
- 【java学习】 面向对象编程+java购物车系统
文章目录 一.设计对象 二.内存机制 三.购物车系统 四.构造器 构造器 this关键字的作用 一.设计对象 类和对象是什么? 类:是共同特征的描述(设计图); 对象:是真实存在的具体实例; 如何设计 ...
- day23 xml模块、面向对象编程介绍
今日内容: 1.xml模块 2.面向对象编程 一.xml模块 什么是xml? xml是一种可扩展的标记语言 xml语言的语法: <person name="jack"> ...
- 面向对象编程的灾难:是时候考虑更新换代了!
全文共13316字,预计学习时长26分钟 图片来源:Unsplash/Jungwoo Hong 许多人认为面向对象编程是计算机科学的珍宝,代码组织的最终解决方案,所有问题的终极回答,编写程序的唯一真正 ...
- Day07:常用模块,面向对象编程(对象类)及内置函数
今日内容: 1.常用模块 2.面向对象编程(*****) 介绍面向对象编程 类 对象 3.内置函数 ------------------------------ 1.面向过程编 ...
- 《JavaScript面向对象编程指南》——1.7 训练环境设置
本节书摘来自异步社区<JavaScript面向对象编程指南>一书中的第1章,第1.7节,作者: [加]Stoyan Stefanov 译者: 凌杰 更多章节内容可以访问云栖社区" ...
- python学习笔记Day4 面向对象编程,文件操作,os模块,代码调试
一.traceback模块 错误日志可能用到 import tracebackwhile 1: # 捕获异常的顺序按照先父类后子类try:n1 = int(input('请输入一个被除数'))n2 = ...
- python编程时常用的模块
python之所以能在编程语言排行榜中占据榜首,处理语言自身的特点之外还在于其丰富的应用库,涵盖了计算机应用领域的方方面面. 一.算法设计 Python的数据结构,算法和设计模式的实现.另请参阅真棒算 ...
最新文章
- EfficientNetV2:更小,更快,更好的EfficientNet
- 导出txt文件宏_XLM宏反混淆工具:提取和反混淆XLM宏
- Croc Champ 2013 - Round 2 (Div. 2 Edition) 贪心+ 搜索+剪枝 + 数学
- 每秒处理请求数和并发的关系
- C# .Net中的类型转换
- c++ 传入动态参数_一文了解Mybatis中动态SQL的实现
- 【学习笔记】慕课网—Java设计模式精讲 第3章 软件设计七大原则-3-6 迪米特原则(最少知道原则)...
- Java EE业务处理流程与XML的引入
- Python守护进程
- eclipse的java插件,25个最好的免费Eclipse插件
- 数值计算方法”上机实验指导书——实验一 误差分析
- 怎么卸载apowerrec_如何卸载win10自带的游戏中心
- SEO和SEM的区别是什么?
- 头脑王者 物理化学生物
- 百度地图、高德地图的数据从哪里得到的?
- NEO智能合约开发(二)再续不可能的任务
- 第二章节 MongoDB的基本命令
- allegro使用汇总
- 【JavaScript系列】JS基础语法_从变量到数组一网打尽_有教程有实战
- OpenWRT 学习笔记 -- 用户自定义添加app的开机自启动
热门文章
- 【深入理解计算机系统】CSAPP-实验四:ArchLab全网最详细
- 阿里云oss使用cdn,节省oss下行流量
- 公众号接收用户消息—《微信公众平台开发实战与应用案例》—陈小龙
- 【渝粤教育】电大中专跨境电子商务理论与实务 (17)作业 题库
- 仿百度糯米TP5项目笔记
- 随机生成20以内加减法,5次答题并统计正确和错误题数
- 有没有开以修改服务器游戏数据,剑网3指尖江湖第二批服务器数据互通啦 来看看有没有你所在的大区...
- 解决谷歌浏览器打不开
- python数据爬取并可视化代码,python爬取摩拜单车API数据并做可视化分析(源码)...
- 其他人的爱情 VS 程序员的爱情