1. 과제가 어려웠던 분들을 위해 최소한의 개념만 사용했습니다.
  2. 주말동안 아래 부분을 복습하시면 다음 과제인 메모장은 쉽게 작성하실 수 있을 것이라 생각됩니다.
  3. 자바의 정석 페이지
    1. 객체 p160~168
      1. 생성자 : p195 ~ 199
    2. 배열
      1. 배열 : p 169
      2. ArrayList : p. 395
        1. 추가 : add
        2. 배열의 크기 : size
        3. 배열 삭제 : clear
    3. for : 배열 출력 p. 110
    4. if : 조건식 p. 98~105
    5. while : 계속 실행되면 메뉴가 출력되기 위해 사용 p. 115
  4. 주의 사항
    1. 아래 과정을 차근차근히 꼭 여러번 반복 해보시고,
    2. 그 후에 다양한 기능이나, 기술을 추가해보시기를 권장 드립니다.
    3. 메서드를 이용한 리팩토링, 제네릭, 향상된 for, asList, 등

<aside> 💡 필수 요구사항

</aside>

  1. 메인 메뉴판 작성 & 상품 메뉴판 작성(간단 설명을 위해 상속은 사용하지 않음)
    1. 이름
    2. 설명
    3. 가격
"SHAKESHACK BURGER 에 오신걸 환영합니다."
아래 메뉴판을 보시고 메뉴를 골라 입력해주세요.

[ SHAKESHACK MENU ]
1. Burgers         | 앵거스 비프 통살을 다져만든 버거
2. Forzen Custard  | 매장에서 신선하게 만드는 아이스크림
3. Drinks          | 매장에서 직접 만드는 음료
4. Beer            | 뉴욕 브루클린 브루어리에서 양조한 맥주

[ ORDER MENU ]
5. Order       | 장바구니를 확인 후 주문합니다.
6. Cancel      | 진행중인 주문을 취소합니다.

  1. 상품 메뉴판 화면
"SHAKESHACK BURGER 에 오신걸 환영합니다."
아래 메뉴판을 보시고 메뉴를 골라 입력해주세요.

[ SHAKESHACK MENU ]
1. Burgers         | 앵거스 비프 통살을 다져만든 버거
2. Forzen Custard  | 매장에서 신선하게 만드는 아이스크림
3. Drinks          | 매장에서 직접 만드는 음료
4. Beer            | 뉴욕 브루클린 브루어리에서 양조한 맥주

[ ORDER MENU ]
5. Order       | 장바구니를 확인 후 주문합니다.
6. Cancel      | 진행중인 주문을 취소합니다.

"Hamburger     | W 5.4 | 비프패티를 기반으로 야채가 들어간 기본버거"
위 메뉴를 장바구니에 추가하시겠습니까?
1. 확인        2. 취소

  1. 구매 화면
"Hamburger     | W 5.4 | 비프패티를 기반으로 야채가 들어간 기본버거"
위 메뉴를 장바구니에 추가하시겠습니까?
1. 확인        2. 취소

  1. 주문 화면
아래와 같이 주문 하시겠습니까?

[ Orders ]
ShackBurger   | W 6.9 | 토마토, 양상추, 쉑소스가 토핑된 치즈버거
SmokeShack    | W 8.9 | 베이컨, 체리 페퍼에 쉑소스가 토핑된 치즈버거

[ Total ]
W 15.8

1. 주문      2. 메뉴판
  1. 주문 완료 화면
주문이 완료되었습니다!

대기번호는 [ 1 ] 번 입니다.
(3초후 메뉴판으로 돌아갑니다.)

  1. 주문 취소 화면
진행하던 주문을 취소하시겠습니까?
1. 확인        2. 취소

<aside> 💡 자바의 정석 정리

</aside>

1. 메인 메뉴판

  1. 객체

    1. 이름, 설명, 가격을 갖는 클래스를 생성합니다.
      1. p160 ~ 168
    2. 매개변수가 있는 생성자를 설정합니다.
      1. p195 ~ 199
  2. 객체 배열 생성 : p 169

    1. 배열에 객체를 입력하면서, 생성자를 통해 초기값을 넣어줍니다.
    2. 생성한 객체 배열 출력해서 확인합니다.
      1. for : p. 110
      2. i에 1을 더해서 글 앞에서 숫자도 추가합니다.

2. 상품메뉴판

  1. 위 과정을 반복해서 상품 메뉴판도 만들어줍니다.

  1. while은 조건이 끝난 후에도 처음 메뉴로 돌아가기 위해 사용합니다. p 115
  2. 각각의 상품 메뉴로 들어가기 위해
    1. scanner p.61
    2. if : p. 98~105
    3. 숫자를 누르면 해당 메뉴가 출력되는 형식 입니다.

3. 구매 화면 (위와 반복)

  1. 화면으로부터 입력받기 : p61
  2. 숫자 입력시 특정한 메뉴만 출력니다.

장바구니 추가하기

  1. 확인 입력시

  2. 위에 출력된 배열을 다른 배열로 옮겨서 저장합니다.

  3. 취소 입력시


4. 주문 화면

// 깃허브 사용이 아직 어려운 신 분을 위해서 전체코드를 아래에 게시 합니다. 
// Main.java 클래스

import java.util.ArrayList;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Menu[] menuList = new Menu[5];
        menuList[0] = new Menu("hamburger", "good1");
        menuList[1] = new Menu("side", "good1");
        menuList[2] = new Menu("beverage", "good1");
        menuList[3] = new Menu("확인", "장바구니를 확인 후 주문합니다.");
        menuList[4] = new Menu("취소", "진행중인 주문을 취소합니다.");

        Menu[] hamburgerList = new Menu[3];
        hamburgerList[0] = new Menu("hamburger1", "delicious1",1000);
        hamburgerList[1] = new Menu("hamburger2", "delicious1", 2000);
        hamburgerList[2] = new Menu("hamburger3", "delicious1", 3000);

        ArrayList orderList = new ArrayList();
        Scanner sc = new Scanner(System.in);
        int count = 0;
        int total = 0;
        while (true) {
            for (int i = 0; i < menuList.length; i++) {
                System.out.println(i+1 + "." + menuList[i].name + " | " + menuList[i].desc);
            }
            int choice1 = sc.nextInt();
            if (choice1 == 1) {
                // 햄버거
                System.out.println("햄버거");
                for (int i = 0; i < hamburgerList.length; i++) {
                    System.out.println(i + 1 + "." + hamburgerList[i].name + " | " + hamburgerList[i].price + " | " + hamburgerList[i].desc);
                }

                System.out.println("아래 메뉴를 장바구니에 추가하시겠습니까?");
                Scanner sc2 = new Scanner(System.in);
                int choice2 = sc2.nextInt() - 1;
                System.out.println(hamburgerList[choice2].name + " | " + hamburgerList[choice2].price + " | " + hamburgerList[choice2].desc);

                System.out.println("1.확인  2.취소");
                Scanner sc3 = new Scanner(System.in);
                int choice3 = sc3.nextInt();
                if (choice3 == 1) {

                    orderList.add(hamburgerList[choice2]);
                } else {

                }

            } else if (choice1 == 2) {
                // 사이드
            } else if (choice1 == 3) {
                // 음료
            } else if (choice1 == 4) {
                // 주문
                System.out.println("주문");
                System.out.println("아래와 같이 주문 하시겠습니까?");
                for (int i = 0; i < orderList.size(); i++) {
                    Menu orderOne = (Menu) orderList.get(i);
                    System.out.println(orderOne.name + " | " + orderOne.price + " | " + orderOne.desc);
                    total += orderOne.price;
                }
                System.out.println("[ Total ]\\n" + "W" + total);

                System.out.println("1. 주문      2. 메뉴판");
                Scanner sc2 = new Scanner(System.in);
                int choice2 = sc2.nextInt();
                if (choice2 == 1) {
                    orderList.clear();
                    count += 1;
                    System.out.println("주문이 완료되었습니다!\\n" +
                            "대기번호는 [" + count + "] 번 입니다.\\n" +
                            "(3초후 메뉴판으로 돌아갑니다.)");
                } else {

                }
            } else if (choice1 == 5) {
                System.out.println("진행하던 주문을 취소하시겠습니까?");
                System.out.println("1. 확인        2. 취소");
                System.out.println();
                Scanner sc2 = new Scanner(System.in);
                int choice2 = sc2.nextInt();

                if (choice2 == 1) {
                    orderList.clear();
                    System.out.println("주문이 취소되었습니다!");

                } else {
                    System.out.println("메인으로 돌아갑니다. ");
                }
            }

        }
    }
}
// Menu.java 클래스

public class Menu {
    String name;
    String desc;
    int price;

    public Menu(String name, String desc) {
        this.name = name;
        this.desc = desc;
    }

    public Menu(String name, String desc, int price) {
        this.name = name;
        this.desc = desc;
        this.price = price;
    }
}