Java Day15-超市進銷存專案開發流程
阿新 • • 發佈:2020-12-07
超市進銷存專案開發流程
1.建立DateBase類
/** * 模擬資料庫,資料要唯一 * 儲存資料的地方 * 商品名稱 = String[] names * 商品數量 = int[] numbers * 商品價格 = double[] moneys */ public class DateBase { //模擬資料庫 儲存 商品名 商品數量 商品價格 static String [] names = new String[5]; static int [] numbers = new int[5]; static double [] moneys = new double[5]; }
2.建立GoodsService類
package com.soft863; import java.util.Scanner; public class GoodsService { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num = 0;//下標記錄添加了多少個商品 while (true) { System.out.println("歡迎使用超市進銷存系統1.0 "); System.out.print("1.增加商品 "); System.out.print("2.刪除商品 "); System.out.print("3.修改商品 "); System.out.print("4.根據商品名稱查詢商品 "); System.out.print("5.查詢所有商品 "); System.out.println("0.退出系統"); System.out.print("請選擇:"); int choose = sc.nextInt(); switch (choose) { //實現新增商品功能 case 1: if (num >= 5) { //判斷商品數量是否超過模擬資料庫給的最大數量 System.out.println("商品已滿無法繼續新增"); } System.out.println("請輸入商品名稱:"); DateBase.names[num] = sc.next(); System.out.println("請輸入商品數量:"); DateBase.numbers[num] = sc.nextInt(); System.out.println("請輸入商品價格:"); DateBase.moneys[num] = sc.nextDouble(); num++; //每輸入一次商品數量+1 break; case 2: System.out.println("請輸入需要刪除的商品名稱:"); String deleteName = sc.next(); boolean deleteFlag = false; // 找到商品 for (int i = 0; i < DateBase.names.length; i++) { if (deleteName.equals(DateBase.names[i])) { deleteFlag = true; //巢狀for迴圈 從外層找到對應下標第i位的商品 使j=i 迴圈使j後的資料往前覆蓋 j需要小於陣列長度減一 如果不減一推到最後一位就會下標越界 for (int j = i; j < DateBase.names.length - 1; j++) { DateBase.names[j] = DateBase.names[j + 1]; DateBase.numbers[j] = DateBase.numbers[j + 1]; DateBase.moneys[j] = DateBase.moneys[j + 1]; } //使陣列最後一位的資訊賦值為空 DateBase.names[DateBase.names.length - 1] = null; DateBase.numbers[DateBase.numbers.length - 1] = 0; DateBase.moneys[DateBase.moneys.length - 1] = 0.0; System.out.println("刪除成功"); num--;//每刪除一次商品數量-1 break; } } if (!deleteFlag) { System.out.println("查無此商品"); } break; case 3: System.out.println("請輸入需要修改的商品名稱:"); String updateName = sc.next(); boolean updateFlag = false; int updateNum = 0; //重新定義修改商品的模擬資料庫陣列下標 從而覆蓋原商品資訊 //根據商品名稱修改 首先通過查詢功能查是否存在此商品 for (int i = 0; i < DateBase.names.length; i++) { if (updateName.equals(DateBase.names[i])) { updateFlag = true; updateNum = i; System.out.println("商品名稱\t\t商品數量\t\t商品價格"); System.out.println(DateBase.names[i] + "\t" + DateBase.numbers[i] + "\t" + DateBase.moneys[i]); break; } } if (!updateFlag) { System.out.println("查無此商品"); } // 根據重新定義的修改商品的模擬資料庫陣列下標 輸入覆蓋原模擬資料庫商品資訊 System.out.println("請輸入商品名稱:"); DateBase.names[updateNum] = sc.next(); System.out.println("請輸入商品數量:"); DateBase.numbers[updateNum] = sc.nextInt(); System.out.println("請輸入商品價格:"); DateBase.moneys[updateNum] = sc.nextDouble(); break; case 4: System.out.println("請輸入需要查詢的商品名稱:"); String findName = sc.next(); boolean findFlag = false; //根據下標迴圈對比商品名和輸入的商品名 for (int i = 0; i < DateBase.names.length; i++) { if (findName.equals(DateBase.names[i])) { findFlag = true; // 如果相等把布林值等於真 System.out.println("商品名稱\t\t商品數量\t\t商品價格"); System.out.println(DateBase.names[i] + "\t" + DateBase.numbers[i] + "\t" + DateBase.moneys[i]); break; } } if (!findFlag) { //如果不相等布林值等於假 判斷不相等 System.out.println("查無此商品"); } break; case 5: //實現查詢/顯示全部商品 System.out.println("商品名稱\t\t商品數量\t\t商品價格"); //根據下標迴圈輸出模擬資料庫中所有商品資訊 for (int i = 0; i < DateBase.names.length && i < DateBase.numbers.length && i < DateBase.moneys.length; i++) { if (DateBase.names[i] != null) //判斷 只輸出商品名稱不為空的商品資訊 System.out.println(DateBase.names[i] + "\t" + DateBase.numbers[i] + "\t" + DateBase.moneys[i]); } break; case 0: return; } } } }