第4章 库存管理案例(加入集合容器ArrayList)

第4章 库存管理案例
4.1 案例介绍
现在,我们将原有的库存管理案例,采用更好的集合方式实现。
在这里插入图片描述
将对下列功能进行方法封装:
 打印库存清单功能
 库存商品数量修改功能
 退出程序功能
4.2 案例需求分析
管理员能够进行的操作有3项(查看、修改、退出),我们可以采用(switch)菜单的方式来完成。
-------------库存管理------------
1.查看库存清单
2.修改商品库存数量
3.退出
请输入要执行的操作序号:
每一项功能操作,我们采用方法进行封装,这样,可使程序的可读性增强。
选择“1.查看库存清单”功能,则控制台打印库存清单
选择“2.修改商品库存数量”功能,则对每种商品库存数进行更新
选择“3.退出”功能,则退出库存管理,程序结束

/*
	Scanner类使用步骤:
		S1.导包:import java.util.Scanner
		S2.创建对象实例:Scanner sc = new Scanner(System.in);
		S3.调用方法:
			int i = sc.nextInt();//用来接收控制台录入的数字
			String s = sc.next();//用来接收控制台录入的字符串

	创建出集合,集合应该是方法参数传递的--一直是一个集合
	
	三个功能,共享的数据,集合容器
	定义三个方法,必须参数传递集合
	
	实现库存管理案例:
		1.存储商品信息
		 存储商品类型变量
		 将商品类型的变量,存储到集合中
		 
		2.查看库存清单
			将集合进行遍历,获取出集合中存储的Goods类型变量
			输出每个Goods类型的属性
			计算求和:总库存,总金额
			
		3.修改商品的库存
			集合遍历,获取出集合中存储的Goods类型变量
			变量调用Goods类的属性count值,进行修改(键盘输入)
	
	类的名字:首字母大写,第二个单词首字母大写 例如:BeiJngShiHaiDiangQuYiYuan
	public class HelloWorld{   
			
	方法的名字:首字母小写,每个单词首字母大写 例如:addSchool
	
	public static void main(String[] args){		//2.定义主方法
*/
//import java.util.*;===>把util里所有类导进来

//S1.导包:import java.util.Scanner
import java.util.Scanner;
//创建集合的常用格式在此说明一下:
//导包:import java.util.ArrayList;
import java.util.ArrayList;

public class Shopp_Goods_1{
	public static void main(String[] args){
		//创建ArrayList集合,存储Goods类型
		//共享的数据-集合容器
		ArrayList<Goods> array = new ArrayList<Goods>();
		//1.调用添加商品信息的方法
		addGoods(array);
		//进入死循环(原因:只允许按到数字3退出系统,才结束整个系统,否则一直循环,由于不知道循环次数,一般采用while循环)
		while(true){
			//2.调用选择功能的方法,获取到用输入的功能序号
			int chooseNumber = chooseFunction();
			
			//3.对序号判断:1-进入查看库存功能 2-进入修改库存功能 3-结束
			switch(chooseNumber){
				case 1:
						 //3.1-进入查看库存,调用查看库存的方法,传递存储商品信息的集合
						 printStore(array);
				break;
				
				case 2:
					    //3.2-进入修改库存功能,调用查看库存的方法
						updateStore(array);
				break;
				
				case 3:
					   //3-3-结束系统
						return;
				default:
					  //3-4-没有其他功能
					System.out.println("功能还在完善中...");
				break;
			}
		}
	}
	/*
		3.2-进入修改库存功能,调用查看库存的方法
		方法定义:键盘输入,将遍历集合获取到的Goods类型变量中的属性值count,进行修改
		返回值?没有
		参数?传递共享集合容器
	*/
	public static void updateStore(ArrayList<Goods> array){
		//接受键盘输入
		//S2:创建对象实例:Scanner sc = new Scanner(System.in);
		Scanner sc = new Scanner(System.in);
		//遍历集合中每个元素,获取出集合中存储的Goods类型变量
		for(int i = 0; i < array.size(); i++){
			//集合方法get()获取的是集合中的元素,元素类型Goods
			Goods g = array.get(i);
			System.out.println("请输入 " + g.brand + " 的库存数:");
			//Goods属性,count进行修改
			//S3.调用方法:int i = sc.nextInt();//用来接收控制台录入的数字
			g.count = sc.nextInt();
		}
	}
	/*
		3.1-进入查看库存,调用查看库存的方法,传递存储商品信息的集合
		定义方法,查看库存清单,遍历集合中每个元素(Goods类型变量),在利用拿到的每个元素获取相应的属性或者方法
		返回值?没有
		参数?传递共享集合容器
	*/
	public static void printStore(ArrayList<Goods> array){
		//1.实现表头固定数据,打印输出语句
		System.out.println("--------------------商城库存清单--------------------");
		System.out.println("品牌型号         尺寸         价格         库存数");
		//2.表尾部,一部分固定数据,一部分需要科学计算
		//定义变量,保存总库存数和总金额
		int totalCount = 0;
		double totalPrice = 0;
		//3.遍历集合
		for(int i = 0;i < array.size();i++){
			//get(索引)获取集合中的元素,存储的是Goods类,获取的也是Goods类型
			//使用Gooos类型变量,接受get()获取出集合中存储的Goods类型变量
			Goods g = array.get(i);
			//利用获取到的Goods类型,去取到商品类的属性
			System.out.println(g.brand + "       " + g.size + "         " + g.price + "       " + g.count);
			totalCount += g.count;
			totalPrice += g.count * g.price;
		}		
		//4.打印尾部数据
		System.out.println("总库存数:" + totalCount + " 台");
		System.out.println("库存商品总金额:" + totalPrice + " 元");
		System.out.println("----------------------------------------------------");			
	}
	/*
		2.调用选择功能的方法,获取到用输入的功能序号 
		定义方法,键盘输入的数字-功能选择菜单 实现选择菜单,
		返回值?键盘输入的数字(想要的功能对应数字)
		参数?没有
	*/
	public static int chooseFunction(){
		System.out.println("--------------------库存管理----------------------");
		System.out.println("1.查看库存清单");
		System.out.println("2.修改商品库存管理");
		System.out.println("3.退出系统");
		System.out.println("请输入要执行的操作序号:");
		//接受键盘输入
		//S2:创建对象实例:Scanner sc = new Scanner(System.in);
		Scanner sc = new Scanner(System.in);
		//S3.调用方法:int i = sc.nextInt();//用来接收控制台录入的数字
		return sc.nextInt();
	}
	/*
		1.调用添加商品信息的方法
		定义方法,将商品的初始化信息存储到集合中--集合是所有方法的共享数据,必须参数传递集合
		返回值?没有
		参数? 传递共享集合容器
	*/
	public static void addGoods(ArrayList<Goods> array){
		//创建商品类型变量 Goods类型变量
		Goods g1 = new Goods();
		Goods g2 = new Goods();
		
		g1.brand = "MacBook";
		g1.size = 13.3;
		g1.price = 9999.99;
		g1.count = 3;
		
		g2.brand = "Thinkpad";
		g2.size = 15.6;
		g2.price = 7999.99;
		g2.count = 1;
		
		//Goods类型的变量,存储到集合中
		array.add(g1);
		array.add(g2);
		
	}
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_40807247/article/details/83109185