Java面向对象案例——购物车

需求:

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

分析:

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();
		
		//将商品信息封装成一个商品对象goods
		goods 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面向对象案例——购物车_第2张图片

查询商品操作

Java面向对象案例——购物车_第3张图片

更改商品数量操作

Java面向对象案例——购物车_第4张图片

结算购买商品的金额

Java面向对象案例——购物车_第5张图片

你可能感兴趣的:(java,开发语言,jvm)