1. 程式人生 > >第4章 庫存管理案例(加入集合容器ArrayList)

第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);
		
	}
}

在這裡插入圖片描述 在這裡插入圖片描述 在這裡插入圖片描述