第4章 庫存管理案例(加入集合容器ArrayList)
阿新 • • 發佈:2018-12-15
第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); } }