๐Ÿ’ป BackEnd/๐ŸŸจ Java

๐ŸŸจ [Java] ๋ฌผํ’ˆ ์žฌ๊ณ  ๊ด€๋ฆฌ ํ”„๋กœ๊ทธ๋žจ ๋งŒ๋“ค๊ธฐ

Dbswnstjd 2023. 4. 9. 19:50

์ž๋ฐ”

๋ฌผํ’ˆ ์žฌ๊ณ  ๊ด€๋ฆฌ ํ”„๋กœ๊ทธ๋žจ ๋งŒ๋“ค๊ธฐ

์•„์ง ํด๋ž˜์Šค์™€ ์ƒ์†์„ ๋ฐฐ์šฐ์ง€ ์•Š์€ ์ƒํƒœ์—์„œ ์žฌ๊ณ  ๊ด€๋ฆฌ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค์–ด ๋ณด๋„๋ก ํ•˜์ž.

์›๋ž˜ DB๋ฅผ ์—ฐ๊ฒฐํ•ด์•ผ ํ•˜์ง€๋งŒ ์ง€๊ธˆ๊นŒ์ง€ ๋ฐฐ์šด ๊ณผ์ •์œผ๋กœ๋Š” ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ ๊ณผ์ •์€ ์กฐ๊ธˆ ๋” ๋ฐฐ์šฐ๊ณ  ๋‚˜๋ฉด ๊ด€๋ฆฌ์ž์™€ ๊ตฌ๋งค์ž๋ฅผ ๋‚˜๋ˆ„๊ณ  DB๋ฅผ ์—ฐ๊ฒฐํ•ด์„œ ์ œ๋Œ€๋กœ๋œ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค์–ด ๋‹ค์‹œ ๋‹ค๋ฃจ๋„๋ก ํ•˜๊ฒ ๋‹ค.

 

์ฝ”๋“œ๋ฅผ ํ•˜๋‚˜์”ฉ ์‚ดํŽด๋ณด์ž.

static final int MAX = 100; // ๋ฐฐ์—ด ์ตœ๋Œ€ ํฌ๊ธฐ

   static int[] productNumber = new int[MAX]; // ๋ฌผํ’ˆ ๋ฒˆํ˜ธ
   static String[] productName = new String[MAX]; // ๋ฌผํ’ˆ ์ด๋ฆ„
   static int[] productPrice = new int[MAX]; // ๋ฌผํ’ˆ ๊ฐ€๊ฒฉ
   static int[] productStock = new int[MAX]; // ๋ฌผํ’ˆ ์žฌ๊ณ 

   static int productCount = 0; // ์ด ๋ฌผํ’ˆ ๊ฐœ์ˆ˜

   static int count = 0; // ์ฒ˜์Œ ๊ฐœ์ˆ˜

   static Scanner sc = new Scanner(System.in);

๋จผ์ € static ๋ณ€์ˆ˜๋กœ ๋ฌผํ’ˆ ๋ฒˆํ˜ธ / ๋ฌผํ’ˆ ์ด๋ฆ„ / ๋ฌผํ’ˆ ๊ฐ€๊ฒฉ / ์žฌ๊ณ ๋ฅผ ์„ ์–ธํ•ด์ค€๋‹ค. 

์—ฌ๊ธฐ์„œ count ๋Š” ๋ฌผํ’ˆ ์ข…๋ฅ˜์˜ ๊ฐœ์ˆ˜๋ผ๊ณ  ๋ณด๋ฉด ๋œ๋‹ค. ์ธ๋ฑ์Šค๋ฅผ ์ฐพ์„ ๋•Œ ์‚ฌ์šฉํ•  ๋ณ€์ˆ˜์ด๋‹ค.

๋ฌผํ’ˆ ๋“ฑ๋ก ๋ฉ”์„œ๋“œ

// ๋ฌผํ’ˆ ๋“ฑ๋ก
   private static void createProduct() {
      int idx = checkProductByProductNumber();
      if (idx == -1) {
         return;
      }

      System.out.print("๋ฌผํ’ˆ ์ด๋ฆ„: ");
      productName[count] = sc.next();
      sc.nextLine();

      System.out.print("๋ฌผํ’ˆ ๊ฐ€๊ฒฉ: ");
      productPrice[count] = sc.nextInt();

      System.out.print("๋ฌผํ’ˆ ์žฌ๊ณ : ");
      productStock[count] = sc.nextInt();

      System.out.println("๋“ฑ๋ก์ด ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.");
      System.out.println();
      count++;
      productCount++;
   }

์ฒ˜์Œ count ๊ฐ€ 0๋ถ€ํ„ฐ ์‹œ์ž‘์ด๋ฏ€๋กœ ์ฒ˜์Œ ๋ฌผํ’ˆ์„ ๋“ฑ๋กํ•˜๊ฒŒ ๋˜๋ฉด product_[0]์— ์ œํ’ˆ์ด ๋“ฑ๋ก๋œ๋‹ค. 

์—ฌ๊ธฐ์„œ checkProductByProductNumber() ๋Š” ๋ฌผํ’ˆ์˜ ์ด๋ฆ„์œผ๋กœ ๋ฌผํ’ˆ์ด ์กด์žฌํ•˜๋Š”์ง€ ๊ตฌํ•˜๋Š” ๋ฉ”์„œ๋“œ์ด๋‹ค. 

๋”ฐ๋กœ ๊ตฌํ˜„์„ ์•ˆํ•ด์ฃผ์–ด๋„ ๋˜์ง€๋งŒ ํ•จ์ˆ˜๋กœ ๊ตฌํ˜„์„ ํ•ด์ฃผ์—ˆ๋‹ค. 

   // ๋ฌผํ’ˆ ๋ฒˆํ˜ธ๋กœ ๋ฌผํ’ˆ์ด ์ด๋ฏธ ์กด์žฌํ•˜๋Š”์ง€ ์ฐพ๋Š” ๋ฉ”์„œ๋“œ
   private static int checkProductByProductNumber() {
      System.out.print("๋ฌผํ’ˆ ๋ฒˆํ˜ธ: ");
      productNumber[count] = sc.nextInt();
      // ์ด๋ฏธ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธ
      for (int i = 0; i < count; i++) {
         if (productNumber[i] == productNumber[count]) {
            System.out.println("์ด๋ฏธ ์กด์žฌํ•˜๋Š” ๋ฌผํ’ˆ์ž…๋‹ˆ๋‹ค.");
            System.out.println();
            return -1;
         }
      }
      return 0;
   }

๋ฌผํ’ˆ ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ๊ทธ ์ œํ’ˆ ๋ฒˆํ˜ธ๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด -1์„ ๋ฆฌํ„ดํ•˜๊ณ  ๊ทธ ์™ธ์˜ ๊ฒฝ์šฐ๋Š” 0์„ ๋ฆฌํ„ดํ•œ๋‹ค. 

 

๋ฌผํ’ˆ์˜ ์ด๋ฆ„์œผ๋กœ ๋ฌผํ’ˆ์˜ ์ธ๋ฑ์Šค๋ฅผ ๊ตฌํ•˜๋Š” ๋ฉ”์„œ๋“œ

   // ๋ฌผํ’ˆ์˜ ์ด๋ฆ„์œผ๋กœ ๋ฌผํ’ˆ์˜ ์ธ๋ฑ์Šค๋ฅผ ๊ตฌํ•˜๋Š” ๋ฉ”์„œ๋“œ
   private static int getProductIndexByProductName() {
      System.out.print("๋ฌผํ’ˆ์˜ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์„ธ์š”: ");
      String name = sc.next();
      int idx = -1;
      for (int i = 0; i < count; i++) {
         if (productName[i].equals(name)) {
            idx = i;
         }
      }
      return idx;
   }

๋งŒ์•ฝ ๋ฌผํ’ˆ์ด ์—†๋‹ค๋ฉด idx๋ฅผ ์ œ๋Œ€๋กœ ๋œ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด idx = -1 ์„ ๊ทธ๋Œ€๋กœ ๋ฐ˜ํ™˜ํ•ด์ค€๋‹ค. 

์•„๋ž˜์—์„œ๋„ ์ด ํ•จ์ˆ˜๊ฐ€ ๋˜ ์“ฐ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‘ ๋ฒˆ ๊ตฌํ˜„ํ•  ํ•„์š”์—†์ด ์ด ํ•จ์ˆ˜๋ฅผ ๊ฐ€์ ธ๋‹ค ์“ฐ๋ฉด ๋œ๋‹ค. 

ํšจ์œจ์„ฑ์„ ๋”ฐ์ ธ๋ณด๋ฉด ์ข‹์€์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ์•„์ง๊นŒ์ง€ ํšจ์œจ์„ฑ๊นŒ์ง€๋Š” ๋น„๊ตํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ด์„œ ์ด๋ ‡๊ฒŒ ๊ตฌํ˜„์„ ํ•˜์˜€๋‹ค. 

๋ฌผํ’ˆ ์ „์ฒด ๋ฆฌ์ŠคํŠธ ์กฐํšŒ

   // ๋ฌผํ’ˆ ์ „์ฒด ๋ฆฌ์ŠคํŠธ ์กฐํšŒ
   private static void readAllProduct() {
      for (int i = 0; i < count; i++) {
         System.out.println(productNumber[i] + "๋ฒˆ ๋ฌผํ’ˆ " + productName[i] + "์˜ ์กฐํšŒ ๊ฒฐ๊ณผ");
         System.out.println("๋ฌผํ’ˆ ๋ฒˆํ˜ธ: " + productNumber[i]);
         System.out.println("๋ฌผํ’ˆ ์ด๋ฆ„: " + productName[i]);
         System.out.println("๋ฌผํ’ˆ ๊ฐ€๊ฒฉ: " + productPrice[i]);
         System.out.println("๋ฌผํ’ˆ ์žฌ๊ณ : " + productStock[i]);
         System.out.println();
      }
   }

์ „์ฒด ๋ฌผํ’ˆ์„ ํƒ์ƒ‰ํ•˜๋ฉด์„œ print ํ•ด์ค€๋‹ค. ๋ฒ”์œ„๋Š” i=0 ๋ถ€ํ„ฐ count-1 ๊นŒ์ง€์ด๋‹ค. (์ด๋Š” ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค๊ฐ€ ๋งˆ์ง€๋ง‰-1 ๊นŒ์ง€ ์ด๋ฏ€๋กœ)

ํŠน์ • ๋ฌผํ’ˆ ์žฌ๊ณ  ์กฐํšŒ

   // ํŠน์ • ๋ฌผํ’ˆ ์žฌ๊ณ  ์กฐํšŒ
   private static void readProductStock() {
      System.out.print("์žฌ๊ณ  ์กฐํšŒ ์ž…๋‹ˆ๋‹ค. ๋ฌผํ’ˆ ์ด๋ฆ„์„ ์ž…๋ ฅํ•ด ์ฃผ์„ธ์š”: ");
      String item = sc.next();
      int t = 0;
      for (int i = 0; i < count; i++) {
         if (productName[i].equals(item)) {
            System.out.println(item + "์˜ ์žฌ๊ณ ๋Š” " + productStock[i] + "์ž…๋‹ˆ๋‹ค.");
            System.out.println();
            t += 1;
         }
      }
      if (t == 0) {
         System.out.println("๋ฌผํ’ˆ ์ด๋ฆ„์„ ์ž˜ ๋ชป ์ž…๋ ฅํ•˜์˜€์Šต๋‹ˆ๋‹ค.");
         System.out.println();
      }
   }

๋ฌผํ’ˆ์˜ ์ด๋ฆ„์œผ๋กœ ์žฌ๊ณ ๋ฅผ ์กฐํšŒํ•˜๋Š” ๋ฉ”์„œ๋“œ์ด๋‹ค. ๋ชจ๋‘ ํƒ์ƒ‰์„ ํ•ด์„œ ์žฌ๊ณ ๋ฅผ ์•Œ๋ ค์ค€๋‹ค. ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ O(n)์œผ๋กœ ๋” ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ•์ด ์žˆ๊ฒ ์ง€๋งŒ ์•„์ง๊นŒ์ง€๋Š” ๋”ฐ์ง€์ง€ ์•Š๊ณ  ๊ตฌํ˜„์„ ํ•  ๊ฒƒ์ด๋‹ค. ๋‚˜์ค‘์— API๋ฅผ ๋งŒ๋“ค๊ฒŒ ๋˜๋ฉด ์ด๋Ÿฌํ•œ ๋ถ€๋ถ„๋“ค์„ ์‹ ๊ฒฝ์จ์•ผ ํ•  ๊ฒƒ์ด๋‹ค.

์—ฌ๊ธฐ์„œ t์˜ ์—ญํ• ์€ ๋ฌผํ’ˆ์„ ์ œ๋Œ€๋กœ ์ž…๋ ฅํ–ˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ์—ญํ• ์ด๋‹ค. ๋ฌผํ’ˆ์„ ๋ชจ๋‘ ์กฐํšŒ ํ–ˆ๋Š”๋ฐ ์ž…๋ ฅํ•œ ๋ฌผํ’ˆ ์ด๋ฆ„์ด ํƒ์ƒ‰๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด ์ด๋ฆ„์„ ์ž˜๋ชป์ž…๋ ฅํ•œ ๊ฒƒ์ด๋ฏ€๋กœ t๋กœ ํ™•์ธ์„ ํ•ด์ฃผ๋„๋ก ํ•œ๋‹ค. 

 

๋ฌผํ’ˆ ์ˆ˜์ •

  // ๋ฌผํ’ˆ ์ˆ˜์ •
   private static void updateProduct() {
      int idx = getProductIndexByProductName();

      if (idx == -1) {
         System.out.println("๋ฌผํ’ˆ ์ด๋ฆ„์„ ์ž˜ ๋ชป ์ž…๋ ฅํ•˜์˜€์Šต๋‹ˆ๋‹ค.");
         return; // ํ•จ์ˆ˜ ์ข…๋ฃŒ
      }

      System.out.println();
      System.out.println("---------UPDATE   PRODUCT INFO----------");
      System.out.print("ํ˜„์žฌ ๋ฌผํ’ˆ ๋ฒˆํ˜ธ(" + productNumber[idx] + ") :");
      productNumber[idx] = sc.nextInt();

      System.out.print("ํ˜„์žฌ ๋ฌผํ’ˆ ์ด๋ฆ„(" + productName[idx] + ") :");
      productName[idx] = sc.next();
      sc.nextLine();
      System.out.print("ํ˜„์žฌ ๋ฌผํ’ˆ ๊ฐ€๊ฒฉ(" + productPrice[idx] + ") :");
      productPrice[idx] = sc.nextInt();

      System.out.print("ํ˜„์žฌ ๋ฌผํ’ˆ ์žฌ๊ณ (" + productStock[idx] + ") :");
      productStock[idx] = sc.nextInt();
      System.out.println();
   }

์—ฌ๊ธฐ์„œ ๋‹ค์‹œํ•œ๋ฒˆ ์ธ๋ฑ์Šค๊ฐ€ ์‚ฌ์šฉ๋œ๋‹ค. getProductIndexByProductName์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ์ธ๋ฑ์Šค๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค. 

๋ฐ˜ํ™˜ ๊ฐ’์ด -1์ด๋ฉด ๋ฌผํ’ˆ ์ด๋ฆ„์„ ์ž˜๋ชป์ž…๋ ฅํ•œ ๊ฒƒ์ด๊ณ  ๊ทธ ์™ธ์˜ ๊ฒฝ์šฐ๋Š” ๋ฌผํ’ˆ์„ ์—…๋ฐ์ดํŠธ ํ•ด์ค€๋‹ค. 

์—ฌ๊ธฐ์„œ ๋˜ํ•œ ์—…๋ฐ์ดํŠธ ๋ฐฉ๋ฒ•์ด ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ๊ฒ ์ง€๋งŒ ๋‚˜๋Š” ํ•œ๋ฒˆ์— ๋ชจ๋‘ ๋ฌผํ’ˆ์„ ์ˆ˜์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํƒํ–ˆ๋‹ค. 

์˜ˆ๋ฅผ ๋“ค์–ด ํšŒ์›์ •๋ณด ์ˆ˜์ •์—์„œ ํ•ธ๋“œํฐ๋ฒˆํ˜ธ๋งŒ ๋ฐ”๊พธ๋Š” ๊ฒฝ์šฐ, ์ด๋ฉ”์ผ๋งŒ ๋ฐ”๊พธ๋Š” ๊ฒฝ์šฐ ,, ์ด๋Ÿฐ ์‹์œผ๋กœ ํ•˜๋‚˜์”ฉ API๋ฅผ ๊ตฌ์„ฑํ•ด๋„ ๋˜์ง€๋งŒ ํ•œ ๋ฒˆ์— ์ •๋ณด๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ๋„˜๊ฒจ์ฃผ๋Š” ๋กœ์ง์œผ๋กœ ๋งŒ๋“  ๊ฒƒ์ด๋‹ค. 

 

๋ฌผํ’ˆ ์‚ญ์ œ 

   // ๋ฌผํ’ˆ ์‚ญ์ œ
   private static void deleteProduct() {
      int idx = getProductIndexByProductName();

      if (idx == -1) {
         System.out.println("๋ฌผํ’ˆ ์ด๋ฆ„์„ ์ž˜ ๋ชป ์ž…๋ ฅํ•˜์˜€์Šต๋‹ˆ๋‹ค.");
         return; // ํ•จ์ˆ˜ ์ข…๋ฃŒ
      }

      for (int i = idx; i < count - 1; i++) {
         productNumber[i] = productNumber[i + 1];
         productName[i] = productName[i + 1];
         productPrice[i] = productPrice[i + 1];
         productStock[i] = productStock[i + 1];
      }
      count--;
      productCount--;
      System.out.println("๋ฌผํ’ˆ ์‚ญ์ œ๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.");
   }

์œ„์—์„œ ๊ตฌํ˜„ํ•œ getProductIndexByProductName ๋ฉ”์„œ๋“œ๋ฅผ ๋‹ค์‹œ ํ•œ ๋ฒˆ ์‚ฌ์šฉํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•จ์ˆ˜๋ฅผ ํ•œ ๋ฒˆ ๊ตฌํ˜„ํ•˜๊ณ  ๋‘ ๋ฒˆ์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ๊ฐ€๋…์„ฑ๋„ ๊ทธ๋ ‡๊ณ  ๊ฐœ๋ฐœ์‹œ์— ํŽธ๋ฆฌํ•จ์ด ์žˆ๋‹ค. ๋‚˜๋Š” ํ•จ์ˆ˜๋กœ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ด๋†“๊ณ  ๊ณ„์† ์“ฐ๋Š” ๋ฐฉ์‹์ด ํŽธํ•œ ๊ฒƒ ๊ฐ™์•„์„œ ์‚ฌ์šฉํ•˜์˜€๋‹ค. 

๋ฌผํ’ˆ์˜ ์‚ญ์ œ๋Š” ์ธ๋ฑ์Šค๋ฅผ ์ฐพ๊ณ  ๊ทธ ์ธ๋ฑ์Šค์˜ ๊ฐ’์— ๋‹ค์Œ ์ธ๋ฑ์Šค์˜ ๊ฐ’์„ ๋„ฃ์–ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๋‹ค์Œ ์ธ๋ฑ์Šค๊ฐ€ ์•ž์œผ๋กœ ๋„˜์–ด์˜ค๋ฉด์„œ ๊ฐ’์ด ๋ฎ์–ด ์“ฐ์ด๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฌผํ’ˆ์˜ ๊ฐœ์ˆ˜๋ฅผ 1๊ฐœ ์ค„์—ฌ์ฃผ๋ฉด(count--) ๋’ค์˜ ๊ฐ’์ด ๊ทธ๋Œ€๋กœ ์žˆ๋”๋ผ๋„ ๋ฐฐ์—ด์˜ ๋์ด ์ค„์–ด๋“ค๊ธฐ ๋•Œ๋ฌธ์— ํƒ์ƒ‰์„ ํ•  ๋•Œ ๋งจ ๋’ค๊นŒ์ง€ ํ•˜์ง€ ์•Š๊ฒŒ๋œ๋‹ค. 

1 ,2, 3, 4, 5๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•˜์ž. 3๋ฒˆ ๋ฌผํ’ˆ์„ ์‚ญ์ œํ•˜๋ ค๊ณ  ํ•˜๋ฉด 1, 2, 4, 5๊ฐ€ ๋˜์–ด์•ผ ํ•œ๋‹ค. 

์ด๋Š” 1, 2๋ฒˆ์€ ๊ทธ๋Œ€๋กœ ๋†”๋‘๊ณ  3, 4, 5๋ฒˆ๋งŒ ๋ฐ”๊ฟ”์ฃผ๋ฉด ๋˜๋Š”๋ฐ 3, 4, 5์—์„œ ํ•œ์นธ์”ฉ ์•ž์œผ๋กœ ๊ฐ€์ ธ์˜ค๋ฉด ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด 4, 5, 5 ๊ฐ€ ๋  ๊ฒƒ์ด๋‹ค. ๋งˆ์ง€๋ง‰ 5๋Š” ์–ด์ฐจํ”ผ count--๊ฐ€ ๋˜๋ฏ€๋กœ ์–ด๋– ํ•œ ๊ฐ’์ด ์žˆ๋”๋ผ๋„ ํƒ์ƒ‰์„ ํ•˜์ง€ ์•Š๊ฒŒ ๋˜๋Š”๊ฒƒ์ด๋‹ค. ๊ทธ๋ฆผ์œผ๋กœ ๊ทธ๋ ค์„œ ์ดํ•ดํ•˜๋ฉด ๋” ์‰ฌ์šธ ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ ๊ท€์ฐฎ์•„์„œ

 

๋ฉ”์ธ ํ•จ์ˆ˜

   public static void main(String[] args) {
      while (true) {
         System.out.printf("์ด ๋ฌผํ’ˆ ๊ฐœ์ˆ˜ : %d\n", productCount);
         System.out.print("๋ฉ”๋‰ด๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”.");
         System.out.println(
               "(I)nsert, (A)llProductRead, (S)tockCheck, (U)pdateProduct, (D)eleteProduct, (Q)uit");
         System.out.print("๋ฉ”๋‰ด ์ž…๋ ฅ: ");
         String menu = sc.next();
         menu = menu.toLowerCase();
         switch (menu.charAt(0)) {
         case 'i':
            System.out.println("๋ฌผํ’ˆ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•ด ์ฃผ์„ธ์š”.");
            if (count > MAX) {
               System.out.println("๋ฌผํ’ˆ ๋“ฑ๋ก ๊ฐœ์ˆ˜๋ฅผ ์ดˆ๊ณผํ•˜์˜€์Šต๋‹ˆ๋‹ค.");
            } else {
               createProduct();
            }
            break;
         case 'a':
            // ์ „์ฒด ๋ฌผํ’ˆ ์กฐํšŒ
            System.out.println("์ „์ฒด ๋ฌผํ’ˆ ์กฐํšŒ์ž…๋‹ˆ๋‹ค.");
            readAllProduct();
            break;
         case 's':
            // ๋ฌผํ’ˆ ์žฌ๊ณ  ์กฐํšŒ
            readProductStock();
            break;
         case 'u':
            // ๋ฌผํ’ˆ ์ด๋ฆ„์„ ๊ธฐ์ค€์œผ๋กœ ์—…๋ฐ์ดํŠธ
            System.out.println("๋ฌผํ’ˆ์„ ์—…๋ฐ์ดํŠธ ํ•ฉ๋‹ˆ๋‹ค.");
            updateProduct();
            break;
         case 'd':
            System.out.println("๋ฌผํ’ˆ์„ ์‚ญ์ œ ํ•ฉ๋‹ˆ๋‹ค.");
            deleteProduct();
            break;
         case 'q':
            System.out.println("ํ”„๋กœ๊ทธ๋žจ์„ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.");
            sc.close(); // Scanner ๊ฐ์ฒด๋ฅผ ๋‹ซ์•„์ค๋‹ˆ๋‹ค.
            System.exit(0); // ํ”„๋กœ๊ทธ๋žจ์„ ์ข…๋ฃŒ์‹œํ‚ต๋‹ˆ๋‹ค.
            break;
         default:
            System.out.println("๋ฉ”๋‰ด๋ฅผ ์ž˜๋ชป ์ž…๋ ฅํ•˜์˜€์Šต๋‹ˆ๋‹ค.");

         }
      }
   }

while ๋ฌธ์—์„œ ๋ฌดํ•œ๋ฃจํ”„๋ฅผ ๋Œ๊ฒŒ ๋œ๋‹ค. q๊ฐ€ ์ž…๋ ฅ๋˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์„ ์ข…๋ฃŒํ•˜๊ณ  ์–ด๋– ํ•œ ์ž…๋ ฅ๊ฐ’์ด ๋“ค์–ด์˜ค๋ƒ์— ๋”ฐ๋ผ ๋‚˜๋ˆ„์–ด ์ง„๋‹ค. 

๋ฌธ์ž์—ด์„ ์ž…๋ ฅ๋ฐ›์•„ ์ฒซ๋ฒˆ์งธ ๊ธ€์ž๊ฐ€ ์–ด๋–ค ๊ธ€์ž๋ƒ์— ๋”ฐ๋ผ case๋ฌธ์— ๋“ค์–ด๊ฐ€ ์‹คํ–‰ ํ›„ ์ข…๋ฃŒ๋œ๋‹ค. 

 

์ „์ฒด ์ฝ”๋“œ

package Assignment2;

import java.util.Scanner;

public class ProducStockManagementSystem {
   static final int MAX = 100; // ๋ฐฐ์—ด ์ตœ๋Œ€ ํฌ๊ธฐ

   static int[] productNumber = new int[MAX]; // ๋ฌผํ’ˆ ๋ฒˆํ˜ธ
   static String[] productName = new String[MAX]; // ๋ฌผํ’ˆ ์ด๋ฆ„
   static int[] productPrice = new int[MAX]; // ๋ฌผํ’ˆ ๊ฐ€๊ฒฉ
   static int[] productStock = new int[MAX]; // ๋ฌผํ’ˆ ์žฌ๊ณ 

   static int productCount = 0; // ์ด ๋ฌผํ’ˆ ๊ฐœ์ˆ˜

   static int count = 0; // ์ฒ˜์Œ ๊ฐœ์ˆ˜

   static Scanner sc = new Scanner(System.in);

   // ๋ฌผํ’ˆ์˜ ์ด๋ฆ„์œผ๋กœ ๋ฌผํ’ˆ์˜ ์ธ๋ฑ์Šค๋ฅผ ๊ตฌํ•˜๋Š” ๋ฉ”์„œ๋“œ
   private static int getProductIndexByProductName() {
      System.out.print("๋ฌผํ’ˆ์˜ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์„ธ์š”: ");
      String name = sc.next();
      int idx = -1;
      for (int i = 0; i < count; i++) {
         if (productName[i].equals(name)) {
            idx = i;
         }
      }
      return idx;
   }

   // ๋ฌผํ’ˆ ๋ฒˆํ˜ธ๋กœ ๋ฌผํ’ˆ์ด ์ด๋ฏธ ์กด์žฌํ•˜๋Š”์ง€ ์ฐพ๋Š” ๋ฉ”์„œ๋“œ
   private static int checkProductByProductNumber() {
      System.out.print("๋ฌผํ’ˆ ๋ฒˆํ˜ธ: ");
      productNumber[count] = sc.nextInt();
      // ์ด๋ฏธ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธ
      for (int i = 0; i < count; i++) {
         if (productNumber[i] == productNumber[count]) {
            System.out.println("์ด๋ฏธ ์กด์žฌํ•˜๋Š” ๋ฌผํ’ˆ์ž…๋‹ˆ๋‹ค.");
            System.out.println();
            return -1;
         }
      }
      return 0;
   }

   // ๋ฌผํ’ˆ ๋“ฑ๋ก
   private static void createProduct() {
      int idx = checkProductByProductNumber();
      if (idx == -1) {
         return;
      }

      System.out.print("๋ฌผํ’ˆ ์ด๋ฆ„: ");
      productName[count] = sc.next();
      sc.nextLine();

      System.out.print("๋ฌผํ’ˆ ๊ฐ€๊ฒฉ: ");
      productPrice[count] = sc.nextInt();

      System.out.print("๋ฌผํ’ˆ ์žฌ๊ณ : ");
      productStock[count] = sc.nextInt();

      System.out.println("๋“ฑ๋ก์ด ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.");
      System.out.println();
      count++;
      productCount++;
   }

   // ๋ฌผํ’ˆ ์ „์ฒด ๋ฆฌ์ŠคํŠธ ์กฐํšŒ
   private static void readAllProduct() {
      for (int i = 0; i < count; i++) {
         System.out.println(productNumber[i] + "๋ฒˆ ๋ฌผํ’ˆ " + productName[i] + "์˜ ์กฐํšŒ ๊ฒฐ๊ณผ");
         System.out.println("๋ฌผํ’ˆ ๋ฒˆํ˜ธ: " + productNumber[i]);
         System.out.println("๋ฌผํ’ˆ ์ด๋ฆ„: " + productName[i]);
         System.out.println("๋ฌผํ’ˆ ๊ฐ€๊ฒฉ: " + productPrice[i]);
         System.out.println("๋ฌผํ’ˆ ์žฌ๊ณ : " + productStock[i]);
         System.out.println();
      }
   }

   // ํŠน์ • ๋ฌผํ’ˆ ์žฌ๊ณ  ์กฐํšŒ
   private static void readProductStock() {
      System.out.print("์žฌ๊ณ  ์กฐํšŒ ์ž…๋‹ˆ๋‹ค. ๋ฌผํ’ˆ ์ด๋ฆ„์„ ์ž…๋ ฅํ•ด ์ฃผ์„ธ์š”: ");
      String item = sc.next();
      int t = 0;
      for (int i = 0; i < count; i++) {
         if (productName[i].equals(item)) {
            System.out.println(item + "์˜ ์žฌ๊ณ ๋Š” " + productStock[i] + "์ž…๋‹ˆ๋‹ค.");
            System.out.println();
            t += 1;
         }
      }
      if (t == 0) {
         System.out.println("๋ฌผํ’ˆ ์ด๋ฆ„์„ ์ž˜ ๋ชป ์ž…๋ ฅํ•˜์˜€์Šต๋‹ˆ๋‹ค.");
         System.out.println();
      }
   }

   // ๋ฌผํ’ˆ ์ˆ˜์ •
   private static void updateProduct() {
      int idx = getProductIndexByProductName();

      if (idx == -1) {
         System.out.println("๋ฌผํ’ˆ ์ด๋ฆ„์„ ์ž˜ ๋ชป ์ž…๋ ฅํ•˜์˜€์Šต๋‹ˆ๋‹ค.");
         return; // ํ•จ์ˆ˜ ์ข…๋ฃŒ
      }

      System.out.println();
      System.out.println("---------UPDATE   PRODUCT INFO----------");
      System.out.print("ํ˜„์žฌ ๋ฌผํ’ˆ ๋ฒˆํ˜ธ(" + productNumber[idx] + ") :");
      productNumber[idx] = sc.nextInt();

      System.out.print("ํ˜„์žฌ ๋ฌผํ’ˆ ์ด๋ฆ„(" + productName[idx] + ") :");
      productName[idx] = sc.next();
      sc.nextLine();
      System.out.print("ํ˜„์žฌ ๋ฌผํ’ˆ ๊ฐ€๊ฒฉ(" + productPrice[idx] + ") :");
      productPrice[idx] = sc.nextInt();

      System.out.print("ํ˜„์žฌ ๋ฌผํ’ˆ ์žฌ๊ณ (" + productStock[idx] + ") :");
      productStock[idx] = sc.nextInt();
      System.out.println();
   }

   // ๋ฌผํ’ˆ ์‚ญ์ œ
   private static void deleteProduct() {
      int idx = getProductIndexByProductName();

      if (idx == -1) {
         System.out.println("๋ฌผํ’ˆ ์ด๋ฆ„์„ ์ž˜ ๋ชป ์ž…๋ ฅํ•˜์˜€์Šต๋‹ˆ๋‹ค.");
         return; // ํ•จ์ˆ˜ ์ข…๋ฃŒ
      }

      for (int i = idx; i < count - 1; i++) {
         productNumber[i] = productNumber[i + 1];
         productName[i] = productName[i + 1];
         productPrice[i] = productPrice[i + 1];
         productStock[i] = productStock[i + 1];
      }
      count--;
      productCount--;
      System.out.println("๋ฌผํ’ˆ ์‚ญ์ œ๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.");
   }


   public static void main(String[] args) {
      while (true) {
         System.out.printf("์ด ๋ฌผํ’ˆ ๊ฐœ์ˆ˜ : %d\n", productCount);
         System.out.print("๋ฉ”๋‰ด๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”.");
         System.out.println(
               "(I)nsert, (A)llProductRead, (S)tockCheck, (U)pdateProduct, (D)eleteProduct, (Q)uit");
         System.out.print("๋ฉ”๋‰ด ์ž…๋ ฅ: ");
         String menu = sc.next();
         menu = menu.toLowerCase();
         switch (menu.charAt(0)) {
         case 'i':
            System.out.println("๋ฌผํ’ˆ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•ด ์ฃผ์„ธ์š”.");
            if (count > MAX) {
               System.out.println("๋ฌผํ’ˆ ๋“ฑ๋ก ๊ฐœ์ˆ˜๋ฅผ ์ดˆ๊ณผํ•˜์˜€์Šต๋‹ˆ๋‹ค.");
            } else {
               createProduct();
            }
            break;
         case 'a':
            // ์ „์ฒด ๋ฌผํ’ˆ ์กฐํšŒ
            System.out.println("์ „์ฒด ๋ฌผํ’ˆ ์กฐํšŒ์ž…๋‹ˆ๋‹ค.");
            readAllProduct();
            break;
         case 's':
            // ๋ฌผํ’ˆ ์žฌ๊ณ  ์กฐํšŒ
            readProductStock();
            break;
         case 'u':
            // ๋ฌผํ’ˆ ์ด๋ฆ„์„ ๊ธฐ์ค€์œผ๋กœ ์—…๋ฐ์ดํŠธ
            System.out.println("๋ฌผํ’ˆ์„ ์—…๋ฐ์ดํŠธ ํ•ฉ๋‹ˆ๋‹ค.");
            updateProduct();
            break;
         case 'd':
            System.out.println("๋ฌผํ’ˆ์„ ์‚ญ์ œ ํ•ฉ๋‹ˆ๋‹ค.");
            deleteProduct();
            break;
         case 'q':
            System.out.println("ํ”„๋กœ๊ทธ๋žจ์„ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.");
            sc.close(); // Scanner ๊ฐ์ฒด๋ฅผ ๋‹ซ์•„์ค๋‹ˆ๋‹ค.
            System.exit(0); // ํ”„๋กœ๊ทธ๋žจ์„ ์ข…๋ฃŒ์‹œํ‚ต๋‹ˆ๋‹ค.
            break;
         default:
            System.out.println("๋ฉ”๋‰ด๋ฅผ ์ž˜๋ชป ์ž…๋ ฅํ•˜์˜€์Šต๋‹ˆ๋‹ค.");

         }
      }
   }

}

์งง์€ ์‹œ๊ฐ„์•ˆ์— ๊ฐ„๋‹จํ•˜๊ฒŒ ์งœ๋‹ค๋ณด๋‹ˆ ์˜ค๋ฅ˜๊ฐ€ ์žˆ์„์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ์  ๋˜๋Š” ๊ฐœ์„ ๋ฐฉ์•ˆ์ด ์žˆ๋‹ค๋ฉด ๋Œ“๊ธ€๋กœ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.