상세 컨텐츠

본문 제목

키오스크 다시한번

Java TIL

by 개발일지작성 2023. 10. 29. 19:46

본문

728x90

기존에 만들었던 키오스크가 우려했던대로 전혀 객체지향적이지 않았다는(클래스가 무엇인지, 객체가 무엇인지 등) 답변을 받았다 내가 생각해도 그러했기에 기본기를 다질 겸 다시한번 개인 프로젝트를 해봤다.
튜터님들이 우연히라도 보고 더 나아졌다는 답변을 받길 바라며....

package TIL.ReKiosk;


import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
class Menu {
    // 생성자
    private String name;
    private double price;
    private String explanation;

    // 생성자 객체를 초기화 시켜주는 매서드
    public Menu(String name, String explanation) {
        this.name = name;
        this.price = 0.0;
        this.explanation = explanation;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public String getName() {return name;}
    public double getPrice() {return price;}
    public String getExplanation() {return explanation;}
}

public class Main {
    public static void main(String[] args) throws InterruptedException {
        List<Menu> inPutMenu = new ArrayList<>();
        int WaitingNumber = 0;
        while (true) {
            System.out.println("\"SHAKESHACK BURGER 에 오신걸 환영합니다.\"\n" +
                    "아래 메뉴판을 보시고 메뉴를 골라 입력해주세요.\n" +
                    "\n" +
                    "[ SHAKESHACK MENU ]\n" +
                    "1. Burgers         | 앵거스 비프 통살을 다져만든 버거\n" +
                    "2. Forzen Custard  | 매장에서 신선하게 만드는 아이스크림\n" +
                    "3. Drinks          | 매장에서 직접 만드는 음료\n" +
                    "4. Beer            | 뉴욕 브루클린 브루어리에서 양조한 맥주\n" +
                    "\n" +
                    "[ ORDER MENU ]\n" +
                    "5. Order       | 장바구니를 확인 후 주문합니다.\n" +
                    "6. Cancel      | 진행중인 주문을 취소합니다.");

            Scanner sc = new Scanner(System.in);
            int choice = sc.nextInt();

            if (choice == 1) {
                // 버거 객체 생성
                List<Menu> burgerList = new ArrayList<>();
                String[] burgerNames = {"ShackBurger", "SmokeBurger", "Shroom Burger"};
                String[] burgerDescriptions = {"뭐시깽이 버거", "저시깽이 버거", "요시깽이 버거"};
                double[] burgerPrices = {6.9, 8.9, 9.4};

                // 배열을 리스트 안에 넣기
                for (int i = 0; i < burgerNames.length; i++) {
                    Menu burger = new Menu(burgerNames[i], burgerDescriptions[i]);
                    burger.setPrice(burgerPrices[i]);
                    burgerList.add(burger);
                }
                // 버거 리스트 출력
                System.out.println("[ Burgers MENU ]");
                for (int i = 0; i < burgerList.size(); i++) {
                    Menu burger = burgerList.get(i);
                    System.out.println((i + 1) + ". " + burger.getName() + "   | W " + burger.getPrice() + " | " + burger.getExplanation());
                }
                int payView = sc.nextInt();
                if (payView >= 1 && payView <= burgerList.size()) {
                    inPutMenu.add(burgerList.get(payView - 1));
                    System.out.println(burgerList.get(payView - 1).getName() + "가 장바구니에 추가되었습니다.");
                }
            } else if (choice == 2) {
                // 아이스크림 객체 생성
                List<Menu> icecreamList = new ArrayList<>();
                String[] icecreamNames = {"Shack Of The Week", "Red Bean Shake", "Floats"};
                String[] icecreamDescriptions = {"뭐시깽이 아이스크림", "저시깽이 아이스크림", "요시깽이 아이스크림"};
                double[] icecreamPrices = {6.5, 6.5, 5.9};

                // 배열을 리스트 안에 넣기
                for (int i = 0; i < icecreamNames.length; i++) {
                    Menu iceCream = new Menu(icecreamNames[i], icecreamDescriptions[i]);
                    iceCream.setPrice(icecreamPrices[i]);
                    icecreamList.add(iceCream);
                }

                System.out.println("[ IceCream MENU ]");

                for (int i = 0; i < icecreamList.size(); i++) {
                    Menu iceCream = icecreamList.get(i);
                    System.out.println((i + 1) + ". " + iceCream.getName() + "   | W " + iceCream.getPrice() + " | " + iceCream.getExplanation());
                }

                int payView = sc.nextInt();
                if (payView >= 1 && payView <= icecreamList.size()) {
                    inPutMenu.add(icecreamList.get(payView - 1));
                    System.out.println(icecreamList.get(payView - 1).getName() + "가 장바구니에 추가되었습니다.");
                }
            } else if (choice == 3) {
                // 음료 객체 생성
                List<Menu> drinkList = new ArrayList<>();
                String[] drinkNames = {"Shack-made Lemonade", "Fresh Brewed Iced Tea", "Fountain Soda"};
                String[] drinkDescriptions = {"뭐시깽이 음료", "저시깽이 음료", "요시깽이 음료"};
                double[] drinkPrices = {3.9, 3.4, 2.7};

                // 배열을 리스트 안에 넣기
                for (int i = 0; i < drinkNames.length; i++) {
                    Menu drink = new Menu(drinkNames[i], drinkDescriptions[i]);
                    drink.setPrice(drinkPrices[i]);
                    drinkList.add(drink);
                }

                System.out.println("[ Drink MENU ]");
                for (int i = 0; i < drinkList.size(); i++) {
                    Menu drink = drinkList.get(i);
                    System.out.println((i + 1) + ". " + drink.getName() + "   | W " + drink.getPrice() + " | " + drink.getExplanation());
                }

                int payView = sc.nextInt();
                if (payView >= 1 && payView <= drinkList.size()) {
                    inPutMenu.add(drinkList.get(payView - 1));
                    System.out.println(drinkList.get(payView - 1).getName() + "가 장바구니에 추가되었습니다.");
                }
            } else if (choice == 4) {
                // 맥주 객체 생성
                List<Menu> beerList = new ArrayList<>();
                String[] beerNames = {"ShackMeister Ale", "Magpie Brewing Co."};
                String[] beerDescriptions = {"뭐시깽이 맥주", "저시깽이 맥주"};
                double[] beerPrices = {3.9, 3.4};

                // 배열을 리스트 안에 넣기
                for (int i = 0; i < beerNames.length; i++) {
                    Menu beer = new Menu(beerNames[i], beerDescriptions[i]);
                    beer.setPrice(beerPrices[i]);
                    beerList.add(beer);
                }

                System.out.println("[ Beer MENU ]");

                for (int i = 0; i < beerList.size(); i++) {
                    Menu beer = beerList.get(i);
                    System.out.println((i + 1) + ". " + beer.getName() + "   | W " + beer.getPrice() + " | " + beer.getExplanation());
                }

                int payView = sc.nextInt();
                if (payView >= 1 && payView <= beerList.size()) {
                    inPutMenu.add(beerList.get(payView - 1));
                    System.out.println(beerList.get(payView - 1).getName() + "가 장바구니에 추가되었습니다.");
                }
            } else if (choice == 5) {
                System.out.println("장바구니에 담긴 메뉴 목록:");
                double totalAmount = 0.0;
                for (int i = 0; i < inPutMenu.size(); i++) {
                    Menu menu = inPutMenu.get(i);
                    totalAmount += menu.getPrice();
                    System.out.println((i + 1) + ". " + menu.getName() + "   | W " + menu.getPrice() + " | " + menu.getExplanation());
                }
                System.out.println("[ Total ]");
                System.out.println("W " + totalAmount);
                System.out.println("1. 주문    2. 메뉴판");
                int yesOrNo = sc.nextInt();
                if (yesOrNo == 1) {
                    System.out.println("주문이 완료되었습니다.");
                    WaitingNumber++;
                    System.out.println("대기번호는 [ " + WaitingNumber + " ] 번 입니다.");
                    System.out.println("3초 후 메뉴판으로 돌아갑니다.");
                    Thread.sleep(3000);
                } else if (yesOrNo == 2) {
                    System.out.println("진행 중인 주문을 취소합니다.");
                }
            } else if (choice == 6) {
                System.out.println("진행하던 주문을 취소하시겠습니까?");
                System.out.println("1. 확인   2. 취소");
                int empty = sc.nextInt();
                if (empty == 1) {
                    inPutMenu = new ArrayList<>();
                    System.out.println("진행하던 주문이 취소되었습니다.");
                } else if (empty == 2) {
                    System.out.println("주문을 지속합니다.");
                }
            }
        }
    }
}

'Java TIL' 카테고리의 다른 글

다형성이란?  (0) 2023.11.08
필드, 메소드, 매개변수  (0) 2023.11.07
2023-10-23 간단한 게시판 만들기  (1) 2023.10.23
2023-10-20 TIJava 인터페이스  (0) 2023.10.20
2023-10-19 TIL  (1) 2023.10.20

관련글 더보기