Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

랩터

[Java] [레스토랑 키오스크 프로그램] 본문

공부/JAVA

[Java] [레스토랑 키오스크 프로그램]

raptorhs 2024. 7. 2. 12:05

https://github.com/Lifesheep1/java-restaurant_kiosk.git

 

[김밥천국]에서 보내온 프로그래밍 요청서

 

✏️ [김밥천국을 위한 프로그램 기능]본 프로그램은 아래와 같이 세 가지 기능을 추가해 주세요. 1. 메뉴 선택2. 수량 입력3. 결제 금액 출력 ( 메뉴 선택수량 입력 단계에서 보기와 다른 값 혹은 과한 수량이 입력되더라도 프로그램이 종료되지 않도록 합니다)

 

[레스토랑 키오스크 프로그램] 출력 예시

 

[안내]안녕하세요. 김밥천국에 오신 것을 환영합니다.
------------------------------
[안내]원하시는 메뉴의 번호를 입력하여 주세요.
1) 김밥(1000원) 2) 계란 김밥(1500원) 3) 충무 김밥(1000원) 4) 떡볶이(2000원)
0
[안내]메뉴에 포함된 번호를 입력하여 주세요.

[안내]원하시는 메뉴의 번호를 입력하여 주세요.
1) 김밥(1000원) 2) 계란 김밥(1500원) 3) 충무 김밥(1000원) 4) 떡볶이(2000원)
1
------------------------------
[안내]선택하신 메뉴의 수량을 입력하여 주세요.
(※ 최대 주문 가능 수량 : 99)
100
[경고]100개는 입력하실 수 없습니다.
[경고]수량 선택 화면으로 돌아갑니다.
------------------------------
[안내]선택하신 메뉴의 수량을 입력하여 주세요.
(※ 최대 주문 가능 수량 : 99)
10
[안내]주문하신 메뉴의 총 금액은10000원 입니다.
[안내]이용해 주셔서 감사합니다.

 

package com.jungmin;

import java.util.Scanner;


public class Kiosk {

    private final MenuItem menuItem1 = new MenuItem("김밥", 1000);
    private final static MenuItem menuItem2 = new MenuItem("계란 김밥", 1500);
    private final static MenuItem menuItem3 = new MenuItem("충무 김밥", 1000);
    private final static MenuItem menuItem4 = new MenuItem("떡볶이", 2000);

    private MenuItem youChoiceMenuItem;
    private int menuCount;

    // 주문 안내 메시지를 출력하는 메서드를 정의할 수 있습니다.
    public void message(){
        System.out.println("[안내]안녕하세요. 김밥천국에 오신 것을 환영합니다.");
        System.out.println("------------------------------");
    }
    // 주문할 음식을 선택하는 메서드를 정의 할 수 있습니다.

    public void menuItem(){
        boolean a;
        Scanner sc = new Scanner(System.in);
        do {
            System.out.println("[안내]원하시는 메뉴의 번호를 입력하여 주세요.");
            System.out.println("1) " + menuItem1.getName() + "(" + menuItem1.getPrice()+")" +
                    "  2) " + menuItem2.getName() + "(" + menuItem2.getPrice()+")" +
                    "  3) " + menuItem3.getName() + "(" + menuItem3.getPrice()+")" +
                    "  4) " + menuItem4.getName() + "(" + menuItem4.getPrice()+")");
            int num = Integer.parseInt(sc.nextLine());
            switch(num){
                case 1:
                    youChoiceMenuItem = menuItem1;
                    return;
                case 2:
                    youChoiceMenuItem = menuItem2;
                    return;
                case 3:
                    youChoiceMenuItem = menuItem3;
                    return;
                case 4:
                    youChoiceMenuItem = menuItem4;
                    return;
                default:
                    System.out.println("[안내]메뉴에 포함된 번호를 입력하여 주세요.");
                    a = false;
            }
        }while (!a);
    }
    // 주문할 음식의 수량을 입력하는 메서드를 정의할 수 있습니다.
    public void count(){
        Scanner sc1 = new Scanner(System.in);
        int i ;
        while (true){
            System.out.println("[안내]선택하신 메뉴의 수량을 입력하여 주세요.");
            System.out.println("(※ 최대 주문 가능 수량 : 99)");
            i = Integer.parseInt(sc1.nextLine());
            menuCount = i;
            if(i>=1 && i <= 99){
                break;
            }else {
                System.out.println("[경고]" +i +"개는 입력하실 수 없습니다.");
                System.out.println("[경고]수량 선택 화면으로 돌아갑니다.");
                System.out.println("------------------------------");
            }
        }
    }
    // 음식 주문을 위한 메서드를 정의할 수 있습니다.
    // 주문 결과를 출력하는 메서드를 정의할 수 있습니다.
    public void result(){
        int sum =youChoiceMenuItem.getPrice() * menuCount;
        System.out.println("[안내]주문하신 메뉴의 총 금액은" + sum +"원 입니다.");
        System.out.println("[안내]이용해 주셔서 감사합니다.");
    }
}

 

 

package com.jungmin;

public class KioskApplication {
    public static void main(String[] args) {
        // Kiosk 클래스의 기능을 구현 및 활용해서 프로그래밍 요구 사항에 맞는 키오스크 프로그램을 구현하세요.
        // MenuItem 클래스는 음식 정보를 표현하고 있으며 MenuItem 클래스를 이용해 주문할 음식 정보를 출력할 수 있습니다.
        // 이 외의 필요한 클래스가 있다면 자유롭게 추가해서 여러분들만의 키오스크 프로그램을 만들면 됩니다.
        Kiosk kiosk = new Kiosk();
        kiosk.message();
        kiosk.menuItem();
        kiosk.count();
        kiosk.result();
    }
}

 

 

package com.jungmin;

public class MenuItem {
    private String name;
    private int price;

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

    public String getName() {
        return name;
    }

    public int getPrice() {
        return price;
    }
}

 

 

 

 

아래도 동일한 결과가 나오지만 위에 코딩방식이 더 직관적이고 타인이 볼때 오류가 났을때 고치기 좋습니다.

위 코드는 전역변수를 선언해주고 좀더 객체지향적입니다.

 

package com.jungmin;

import java.util.Scanner;

public class Kiosk {
    private final MenuItem menuItem1 = new MenuItem("김밥", 1000);
    private final static MenuItem menuItem2 = new MenuItem("계란 김밥", 1500);
    private final static MenuItem menuItem3 = new MenuItem("충무 김밥", 1000);
    private final static MenuItem menuItem4 = new MenuItem("떡볶이", 2000);

    // 주문 안내 메시지를 출력하는 메서드를 정의할 수 있습니다.
    public void message(){
        System.out.println("[안내] 안녕하세요. 김밥천국에 오신 것을 환영합니다.");
        System.out.println("----------------------------");
    }
    // 주문할 음식을 선택하는 메서드를 정의 할 수 있습니다.
    public MenuItem menuNum(){
        boolean a = true;
        Scanner sc = new Scanner(System.in);
        do {
            System.out.println("[안내] 원하시는 메뉴의 번호를 입력하여 주세요.");
            System.out.println("1)" + menuItem1.getName() + "(" + menuItem1.getPrice()+"원)" +
                    " 2) " + menuItem2.getName() + "(" + menuItem2.getPrice()+"원)" +
                    " 3) " + menuItem3.getName() + "(" + menuItem3.getPrice()+"원)" +
                    " 4) " + menuItem4.getName() + "(" + menuItem4.getPrice()+"원)");
            int num = sc.nextInt();
            switch (num) {
                case 1:
                    return menuItem1;
                case 2:
                    return menuItem2;
                case 3:
                    return menuItem3;
                case 4:
                    return menuItem4;
                default:
                    System.out.println("[안내] 메뉴에 포함된 번호를 입력하여 주세요.");
                    a = false;
            }
        } while (!a);
        return null;
    }

    // 주문할 음식의 수량을 입력하는 메서드를 정의할 수 있습니다.
    public int count(){
        Scanner sc1 = new Scanner(System.in);
        int i = 0;
        while(true){
            System.out.println("[안내]선택하신 메뉴의 수량을 입력하여 주세요.");
            System.out.println("(※ 최대 주문 가능 수량 : 99)");
            i = sc1.nextInt();
            if (i >= 1 && i <= 99){
                break;
            } else {
                System.out.println(i + "개는 입력하실 수 없습니다.");
                System.out.println("수량 선택 화면으로 돌아갑니다.");
            }
        }
        return i;
    }
    // 음식 주문을 위한 메서드를 정의할 수 있습니다.
    // 주문 결과를 출력하는 메서드를 정의할 수 있습니다.
    public void result(){
        int sum = menuNum().getPrice() * count();
        System.out.println("[안내] 주문하신 메뉴의 총 금액은" + sum + "원 입니다.");
        System.out.println("[안내] 이용해 주셔서 감사합니다.");
    }
}

 

 

package com.jungmin;

public class KioskApplication {
    public static void main(String[] args) {
        // Kiosk 클래스의 기능을 구현 및 활용해서 프로그래밍 요구 사항에 맞는 키오스크 프로그램을 구현하세요.
        // MenuItem 클래스는 음식 정보를 표현하고 있으며 MenuItem 클래스를 이용해 주문할 음식 정보를 출력할 수 있습니다.
        // 이 외의 필요한 클래스가 있다면 자유롭게 추가해서 여러분들만의 키오스크 프로그램을 만들면 됩니다.

        Kiosk kiosk = new Kiosk(); //인스턴스화
        kiosk.message();
        kiosk.result();
    }
}

'공부 > JAVA' 카테고리의 다른 글

[Java] 제네릭  (0) 2024.07.03
[Java] 열거형  (0) 2024.07.03
[Java] 다형성  (0) 2024.07.02
[Java] 추상화  (0) 2024.06.29
[Java] 캡슐화,패키지,접근제어자,getter와 setter  (0) 2024.06.29