学习视频:
Java入门基础视频教程,Java零基础自学首选黑马程序员Java入门教程(含Java项目和Java真题)_哔哩哔哩_bilibili
目录
目录
//1.商品的对象:商品id,商品名称,商品价格,商品购买数量
//2.将商品添加到购物车 --> 把商品对象加入到数组中去
//3.查询购物车信息 --> 遍历购物车数组中的每个商品对象
//3.判断返回的地址存不存在,存在修改其购买数量,不存在就继续
//1.商品的对象:商品id,商品名称,商品价格,商品购买数量
//2.将商品添加到购物车 --> 把商品对象加入到数组中去
//3.查询购物车信息 --> 遍历购物车数组中的每个商品对象
//3.判断返回的地址存不存在,存在修改其购买数量,不存在就继续
/**
* 购物车模块模拟-架构搭建
* 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...();