[멘토씨리즈] 16강 - 카페 주문 프로그램 제작

    SMALL

    1. 동작원리

    <카페 프로그램 기능>

    (1) 주문하기: 주문 가능 메뉴 출력 > 메뉴 입력 > 가격 총 금액 누적 > 전체 메뉴 리스트에 저장 > 주문 갯수 한 개 증가

    (2) 취소하기: 주문 메뉴 리스트 출력 > 취소 메뉴 입력 > 입력 메뉴를 리스트에서 제거 > 금액 감소 > 주문 갯수 한 개 감소

    (3) 결제하기: 결제 총 금액 출력 > 지불 금액 입력 > 금액 확인 > 주문리스트 0원으로 초기화 > 전체 갯수 0개로 초기화

    (4) 끝내기: 원할 때 끝내기

     

    2. 코드

    import java.io.*;
    import java.util.*; // scanner, random
    
    // 카페 주문 프로그램 알고리즘
    
    public class Main {
      public static void main(String[] args) {
    
        Scanner sc = new Scanner(System.in);
    
        int total_num = 0; // 전체 개수 저장
        String[] menu_arr = new String[5];
        // 주문 메뉴 저장 배열 (메뉴 주문은 5개까지 가능)
        int total_money = 0; // 총 금액 저장
    
        // 무한 반복
        while (true) {
          System.out.println(" ♥ CAFE ♥ ");
          System.out.println("1. 주문하기");
          System.out.println("2. 취소하기");
          System.out.println("3. 결제하기");
          System.out.println("4. 끝내기");
          System.out.print("입력: ");
          int num = sc.nextInt();
    
          // 입력 값에 따라 실행 다르게!
          if (num == 1) { // 주문하기
            String menuName = ""; // 메뉴 이름
            int menuPrice = 0; // 메뉴 금액
            System.out.println("1. 아메리카노 \t3800원");
            System.out.println("2. 에스프레소 \t2400원");
            System.out.println("3. 카페라떼 \t4200원");
            System.out.println("4. 밀크티 \t\t5100원");
            System.out.print("주문 할 메뉴 번호: ");
    
            int menuNum = sc.nextInt();
            if (menuNum == 1) {
              menuName = "아메리카노";
              menuPrice = 3800;
            } else if (menuNum == 2) {
              menuName = "에스프레소";
              menuPrice = 2400;
            } else if (menuNum == 3) {
              menuName = "카페라떼";
              menuPrice = 4200;
            } else if (menuNum == 4) {
              menuName = "밀크티";
              menuPrice = 5100;
            } else {
              System.out.println("메뉴 번호 잘못 입력!");
              continue; // 처음으로 돌아가라!
            }
            total_money += menuPrice;
            menu_arr[total_num] = menuName;
            // total_num : 내가 현재 menuName을 넣어야 할 문자열의 위치!
            total_num++;
            System.out.println("주문한 메뉴는 " + menuName + "입니다.");
            System.out.println("가격은 " + menuPrice + "원 입니다.");
    
          } else if (num == 2) { // 취소하기
            System.out.println("---주문한 메뉴 리스트---");
            for (int i = 0; i < total_num; i++) {
              System.out.println(menu_arr[i]);
            }
    
            System.out.print("취소 할 메뉴 번호: ");
    
            int delNum = sc.nextInt();
            if (delNum >= 1 && delNum <= total_num) {
              String delMenu = menu_arr[delNum - 1];
              // 인덱스 값은 "번호 - 1"
              System.out.println(delMenu + "메뉴 삭제!");
              for (int i = delNum - 1; i < total_num; i++) {
                menu_arr[i] = menu_arr[i + 1];
                // 삭제 된 부분으로 인해 뒷 값을 앞으로 위치 변경
              }
              if (delMenu.equals("아메리카노")) {
                // equals (같은지 판단)
                total_money -= 3800;
              } else if (delMenu.equals("에스프레소")) {
                total_money -= 2400;
              } else if (delMenu.equals("카페라떼")) {
                total_money -= 4200;
              } else if (delMenu.equals("밀크티")) {
                total_money -= 5100;
              }
              total_num--;
            }
    
          } else if (num == 3) { // 결제하기
            System.out.println("결제 금액: " + total_money + "원");
            System.out.println("지불 금액: ");
            int money = sc.nextInt();
            if (money < total_money) {
              System.out.println("지불 금액이 부족합니다.");
              continue;
            } else {
              System.out.println("잔돈은 " + (money - total_money) + "원 입니다.");
              for (int i = 0; i < 5; i++) {
                menu_arr[i] = ""; // 초기화
              }
              total_num = 0;// 초기화
            }
          } else if (num == 4) { // 끝내기
            System.out.println("반복 종료");
            break;
          } else {
            System.out.println("주문 번호 잘못 입력!");
          }
    
        }
      }
    }

     

    3. 개념 짚기

    - 무한 반복 (종료 조건과 함께 사용!) -> while(true) 

    - 조건문 종료 시 break, 계속 진행 시 continue

    - 문자열 배열 String[]

    728x90

    댓글