[개발 실습] 주문 키오스크 만들기

nyoung·2023년 3월 31일
3

개발실습

목록 보기
1/4
post-thumbnail

코린이 2주차!
과제로 직접 코드를 짜보았다. 장장 10시간이 걸린.. 짜고 수정하고 짜고 뒤엎고 짜고..
강사님이 직접 내주신 과제였는데, 아직 부족한 점이 내눈에도 보이지만 차근차근 수정해보려고한다.


김밥천국 키오스크 만들기

  • 김밥천국 🍙 문제
  • 김밥천국 결제기 키오스크 메뉴판
    1. 김밥 - 2500
    2. 라면 - 3000
    3. 떡볶이 - 4000
    4. 돈까스 - 5000
    5. 종료
  • 조건 ✨
    • 키오스크는 현금만 사용이 가능하고 5번 종료를 누르기 전까지 계속 메뉴 선택 가능
    • 만약 키오스크 메뉴 1~5번이 아닌 다른 메뉴를 선택했을 경우 메뉴 선택 오류 출력
    • 고객의 주머니 사정 💴을 사용자에게 입력받음
    • 고객의 주머니 사정이 김밥천국의 메뉴 중 최솟값 메뉴보다 작으면 김밥천국 입장불가 출력
    • 본인이 가진 잔금보다 더 비싼 메뉴를 선택할 경우에 돈이 부족합니다 출력
    • 현재 고객의 남은 금액이 0이거나 메뉴 중 5번을 누르면 프로그램 종료

<메인 클래스>

public class Main {
    public static void main(String[] args) {
        Menu menu;
        boolean isEnd = true;

        System.out.println("현금을 얼마 가지고 있니?");
        Scanner scanner = new Scanner(System.in);
        int cash = scanner.nextInt();
        
        if (cash < 2500) {
            System.out.println("돈이 부족하여 김밥천국 입장 불가능합니다.");
            return;
        } else {
            Menu.menuBoard();
        }

        while (isEnd) {
            int menuPrice = 0;
            int Num = scanner.nextInt();
            switch (Num) {
                case 1:
                    menu = new Menu("김밥", 2500);
                    menuPrice = menu.menuPrice;
                    menu.menuInfo(1);

                    break;
                case 2:
                    menu = new Menu("라면", 3000);
                    menuPrice = menu.menuPrice;
                    menu.menuInfo(2);

                    break;
                case 3:
                    menu = new Menu("떡볶이", 4000);
                    menuPrice = menu.menuPrice;
                    menu.menuInfo(3);

                    break;
                case 4:
                    menu = new Menu("돈까스",5000);
                    menuPrice = menu.menuPrice;
                    menu.menuInfo(4);

                    break;
                case 5:
                    menu = new Menu("종료",0);
                    menuPrice = menu.menuPrice;
                    menu.menuInfo(5);
                    menu.end();
                    return;
                default:
                    System.out.println("메뉴 선택 오류. 1~5번 사이의 메뉴를 선택해주세요.");
                    break;
            }

            int change = cash - menuPrice;
            if(change < 0){
                System.out.println("돈이 부족하여 메뉴를 선택할 수 없습니다.");
                isEnd = true;
            } else if (change == 0) {
                System.out.println("잔돈은" + change + "원 입니다.");
                System.out.println("더 이상 선택할 수 없습니다.");
                cash = change;
                isEnd = false;
            } else {
                cash = change;
                System.out.println("잔돈은" + change + "원 입니다.");
            }
            isEnd = Menu.isVaild(cash);
        }
    }
}

<메뉴 클래스>

class Menu {
    String menuName;
    int menuPrice;
    int menuNum;

    public Menu(){}

    public Menu(String menuName, int menuPrice) {
        this.menuName = menuName;
        this.menuPrice = menuPrice;
    }

    public void menuInfo(int menuNum) {
        System.out.println("메뉴 주문 번호 : " + menuNum + "\n" + menuName + " 선택하셧습니다.");
    }

    public static void menuBoard() {
        System.out.println("메뉴를 선택해주세요.");
        System.out.println("====================");
        System.out.println("1. 김밥" + "\t" + (2500));
        System.out.println("2. 라면" + "\t" + (3000));
        System.out.println("3. 떡볶이" + "\t" + (4000));
        System.out.println("4. 돈까스" + "\t" + (5000));
        System.out.println("5. 종료");
        System.out.println("====================");
    }

    public void end() {
        System.out.println( "프로그램 종료." + "\n지금까지 선택하신 식사 주문이 완료되었습니다.");
    }
    
    public static boolean isVaild(int cash) {
        if (cash < 2500) {
            System.out.println("더이상 선택할 수 없습니다. 프로그램 종료.");
            return false;
        } else return true;
    }
}

아직 메소드로 정리하는 습관이 안들어서 코드가 많이 지저분하다..
강사님께 코드 리뷰도 받고 차근차근 수정해봐야겠다!

profile
새싹 개발자

0개의 댓글