랩터
[Java] [레스토랑 키오스크 프로그램] 본문
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 |