본문 바로가기

카테고리 없음

231020_TIL

오늘한일

  • 키오스크 과제 완성시키기
  • 자바 복습

 

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

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

            switch (choice) {
                case 1:
                    menu.showBurger();
                    break;
                case 2:
                    menu.showFrozenCustard();
                    break;
                case 3:
                    menu.showDrink();
                    break;
                case 4:
                    menu.showBeer();
                    break;
                case 5:
                    menu.orderComplete();
                    break;
                case 6:
                    menu.Cancel();
                    break;
                default:
                    System.out.println("잘못된 입력 입니다.");
                    break;
            }
        }
    }
}

메뉴판을 출력하고 선택하는 부분

 

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

public class Menu {

    ArrayList<Products> burger = new ArrayList<>();
    ArrayList<Products> frozenCustard = new ArrayList<>();
    ArrayList<Products> drink = new ArrayList<>();
    ArrayList<Products> beer = new ArrayList<>();

    Order order = new Order();
    Scanner sc = new Scanner(System.in);
    public Menu() { // 각각의 리스트에 이름, 가격, 설명 추가
        burger.add(new Products("ShackBurger", 6.9, "토마토, 양상추, 쉑소스가 토핑된 치즈버거"));
        burger.add(new Products("SmokeShack", 8.9, "베이컨, 체리 페퍼에 쉑소스가 토핑된 치즈버거"));
        burger.add(new Products("Shroom Burger", 9.4, "몬스터 치즈와 체다 치즈로 속을 채운 베지테리안 버거"));
        burger.add(new Products("Cheeseburger  ", 6.9, "포테이토 번과 비프패티, 치즈가 토핑된 치즈버거"));
        burger.add(new Products("Hamburger", 5.4, "비프패티를 기반으로 야채가 들어간 기본버거"));

        frozenCustard.add(new Products("Shake", 5.9, "바닐라, 초콜릿, 솔티드, 카라멜, 블랙&화이트, 스트로베리, 피넛버터, 커피"));
        frozenCustard.add(new Products("Shake of the Week", 6.5, "특별한 커스터드 플레이버"));
        frozenCustard.add(new Products("Red Bean Shake", 6.5, "신선한 커스터드와 함께 우유와 레드빈이 플레이된 시즈널 쉐이크"));
        frozenCustard.add(new Products("Floats", 5.9, "루트 비어, 퍼플 카우, 크림시클"));

        drink.add(new Products("Shake-mode Lemonade", 3.9, "매장에서 직접 만드는 상큼한 레몬에이드"));
        drink.add(new Products("Fresh Brewed Iced Tea", 3.4, "직접 유기농 홍차를 우려낸 아이스티"));
        drink.add(new Products("Fifty/Fifty", 3.5, "레몬에이드와 아이스티의 만남"));
        drink.add(new Products("Fountain Soda", 2.7, "코카콜라, 코카콜라 제로, 스프라이트, 환타 오렌지, 환타 그레이프"));

        beer.add(new Products("ShackMeister Ale", 9.8, "쉐이크쉑 버거를 위해 뉴욕 브루클린 브루어리에서 특별히 양조한 에일 맥주"));
        beer.add(new Products("Magpie Brewing Co.", 6.8, "Pale Ale, Draft"));

    }


    public void showBurger() {
        System.out.println();
        System.out.println("[ Burgers Menu ]");
        for (int i = 0; i < burger.size(); i++) {
            Products menu = burger.get(i);
            System.out.println((i + 1) + ". " + menu.getName() + "   | " + menu.getPrice() + " | " + menu.getDescription());
        }

        System.out.print("상품선택 : ");
        int burgerChoice = sc.nextInt();
        if(burgerChoice<=burger.size()) {


            Products select = burger.get(burgerChoice-1);
            System.out.println("\n" + "\"" + select.getName() + "      | W" + select.getPrice()
                    + " | " + select.getDescription() + "\""+"\n");
            addOrder(select);
        }
        else{
            System.out.println("잘못된 입력 입니다.");
        }


    }


    public void showFrozenCustard() {
        System.out.println();
        System.out.println("[ FrozenCustards Menu ]");
        for (int i = 0; i < frozenCustard.size(); i++) {
            Products menu = frozenCustard.get(i);
            System.out.println((i + 1) + ". " + menu.getName() + "   | " + menu.getPrice() + " | " + menu.getDescription());
        }

        System.out.print("상품선택 : ");
        int frozenCustardChoice = sc.nextInt();
        if(frozenCustardChoice<=frozenCustard.size()) {


            Products select = frozenCustard.get(frozenCustardChoice-1);
            System.out.println();
            System.out.println("\"" + select.getName() + "      | W" + select.getPrice()
                    + " | " + select.getDescription() + "\"");
            System.out.println();
            addOrder(select);
        }
        else{
            System.out.println("잘못된 입력 입니다.");
        }

    }
    public void showDrink() {
        System.out.println();
        System.out.println("[ Drinks Menu ]");
        for (int i = 0; i < drink.size(); i++) {
            Products menu = drink.get(i);
            System.out.println((i + 1) + ". " + menu.getName() + "   | " + menu.getPrice() + " | " + menu.getDescription());
        }

        System.out.print("상품선택 : ");
        int drinkChoice = sc.nextInt();
        if(drinkChoice<=drink.size()) {


            Products select = drink.get(drinkChoice-1);
            System.out.println("\n" + "\"" + select.getName() + "      | W" + select.getPrice()
                    + " | " + select.getDescription() + "\""+"\n");
            addOrder(select);
        }
        else{
            System.out.println("잘못된 입력 입니다.");
        }


    }
    public void showBeer() {
        System.out.println();
        System.out.println("[ Beers Menu ]");
        for (int i = 0; i < beer.size(); i++) {
            Products menu = beer.get(i);
            System.out.println((i + 1) + ". " + menu.getName() + "   | " + menu.getPrice() + " | " + menu.getDescription());
        }


        System.out.print("상품선택 : ");

        int beerChoice = sc.nextInt();
        if(beerChoice<=beer.size()) {

            Products select = beer.get(beerChoice - 1);
            System.out.println("\n" + "\"" + select.getName() + "      | W" + select.getPrice()
                    + " | " + select.getDescription() + "\""+"\n");
            addOrder(select);
        }
        else{
            System.out.println("잘못된 입력 입니다.");
        }

    }

    public void addOrder(Products add){
        System.out.println("위 메뉴를 장바구니에 추가하시겠습니까?");
        System.out.println("1. 확인       2. 취소");

        int check = sc.nextInt();
        sc.nextLine();

        if (check == 1) {
            order.addBasket(add);
            System.out.println(add.getName() + " 가 장바구니에 추가되었습니다.");
            System.out.println();
        } else if (check == 2) {
            System.out.println("장바구니 추가가 취소되었습니다.");
            System.out.println();
        } else System.out.println("숫자를 잘못 입력하였습니다.");
    }

    public void orderComplete(){

        System.out.println("아래와 같이 주문 하시겠습니까?");
        System.out.println();
        System.out.println("[ Orders ]");
        for (int i = 0; i < order.getbasket().size(); i++) {
            Products menu = order.getbasket().get(i);
            System.out.println((i + 1) + ". " + menu.getName() + "   | " + menu.getPrice() + " | " + menu.getDescription());
        }
        System.out.println();
        System.out.println("[ Total ]");
        System.out.println("W "+order.totalPrice());
        System.out.println();
        System.out.println("1. 주문     2. 메뉴판");
        int orderCheck = sc.nextInt();

        if(orderCheck==1){
            int orderNumber = order.getOrderNumber();

            System.out.println("주문이 완료되었습니다!");
            System.out.println();
            System.out.println("대기번호는 [ " + orderNumber + " ] 번 입니다."); // 대기번호 출력
            System.out.println("(3초 후 메뉴판으로 돌아갑니다.)");
            System.out.println();

            order.ClearBasket();
            order.PlusOrderNumber(orderNumber);
            try {
                Thread.sleep(3000);
            } catch (InterruptedException e) {
                System.out.println(e);
            }
        }
        else {
            System.out.println("메뉴판으로 돌아갑니다");
        }


    }

    public void Cancel(){
        System.out.println();
        System.out.println("진행하던 주문을 취소하시겠습니까?");
        System.out.println("1. 확인       2. 취소       ");

        int cancelNum = sc.nextInt();
        sc.nextLine();


        if (cancelNum == 1) {
            order.ClearBasket();
            System.out.println("진행하던 주문이 취소되었습니다.");
            System.out.println();
        } else if (cancelNum == 2) {
            System.out.println("메뉴판으로 돌아갑니다.");

        }
    }

}

 

각 리스트에 메뉴를 저장하고 여러동작을 수행하는 부분

import java.lang.reflect.Array;
import java.util.ArrayList;

public class Order {
    private ArrayList<Products> basket;
    private int orderNumber;

    public Order() {
        basket = new ArrayList<>();
        orderNumber = 1;
    }


    public ArrayList<Products> getbasket() {
        return basket;
    }

    public int getOrderNumber() {
        return orderNumber;
    }

    public void PlusOrderNumber(int orderNumber) {
        this.orderNumber = orderNumber+1;
    }

    public void addBasket(Products menu) {
        basket.add(menu);
    }


    public void ClearBasket() {
        basket.clear();
    }


    public double totalPrice() {
        double total = 0.0;
        for (Products menu : basket) {
            total += menu.getPrice();

        }
        return total;
    }
}

주문한 메뉴 가격들을 basket 리스트에 저장하고 삭제하고 총합하는 부분

public class Products{
    private String name;
    private double price;
    private String description;

    public Products(String name, double price, String description) {
        this.name = name;
        this.price = price;
        this.description = description;
    }

    public String getName() {
        return name;
    }

    public double getPrice() {
        return price;
    }

    public String getDescription() {
        return description;
    }
}

매개변수에 값을 전달하기 위해서는 순서와 타입을 맞춰 값을 넣어줘야한다.

 

 

 

 

느낀점 

자바에대해 좀더 알게 되었고 좀 더 코드를 보완해야겠다.그리고 주석을 한줄씩 써봐야겠다.