자바 키오스크 코드 - jaba kioseukeu kodeu

프로젝트 주제

: 객체 이용한 “ 피자가게 키오스크 주문 프로그램 ” 만들기.

< 메인 클래스 >

package **main;**

import employee.Emp;
import kiosk.Kiosk;
import order.Order;

public class Main {
	
	public static Emp emp = new Emp("아이유 : ");
 ** // ✨클래스 변수 :** 

	public static void main(String[] args) {

		System.out.println("===== 피자가게 =====");
		
		//직원이 인사
		emp.saywelcome();
		
		//키오스크 사용하여, 주문 내용 얻기
		Kiosk kiosk = new Kiosk();
		Order order = kiosk.useKiosk();//타입이 Order 타입
		kiosk.calc(order); // **어려웠던 부분3️⃣ : total 가격 시간 나오게 함!**
		System.out.println(order);
		
	}

}

출력결과===================================================

===== 피자가게 =====
아이유 : 환영합니다~^^ 주문은 키오스크에서 진행해주세요
포장하시겠습니까?
y
====== 도우 ======
1. 일반 도우
2. 치즈 크러스트
3. 골드
4. 바이트
5. 리치골드
2
====== 토핑 ======
1. 콤비네이션
2. 페페로니
3. 치즈
4. 포테이토
5. 불고기
6. 고구마
7. 쉬림프
1
====== 사이드 ======
1. 스파게티
2. 감자튀김
3.3. 사이드 없음
2
====== 음료 ======
1. 사이다
2. 콜라
3. 환타
4. 음료 없음
2
Order [isTakeOut=true, dough=2, topping=1, side=2, drink=2, price=12000, time=11]

< employee 클래스 >

package employee;

import main.Main;

public class Emp {
	
	
	public Emp(String nick) {
		this.nick = nick;
	}

	private String nick;
	
	public void saywelcome() {
		System.out.println( nick +"환영합니다~^^ 주문은 키오스크에서 진행해주세요");
	}
	
	

}

< 키오스크 클래스>

package **kiosk**;

import java.util.Scanner;

import menu.Menu;
import menu.dough.Bite;
import menu.dough.Cheese;
import menu.dough.Gold;
import menu.dough.Normal;
import menu.dough.RichGold;
import menu.drink.Coke;
import menu.drink.Fanta;
import menu.drink.Sprite;
import menu.side.Spaghetti;
import menu.side.Wing;
import menu.topping.Potato;
import menu.topping.Shirimp;
import order.Order;

public class Kiosk { //사용자의 동작에 대해서 만든 클래스
	
	private Scanner sc = new Scanner(System.in);
	
	//주문 쭉 받기
	public Order useKiosk() {
		boolean isTakeOut = checkTakeOut();
		int dough = selectDough();
		int topping = selectTopping();
		int side = selectSide();
		int drink = selectDrink();
		int price = 0;
		int time = 0;		
		Order order = new Order(isTakeOut,dough,topping, side, drink, price, time);
		return order;
	}
	
	**//비용, 시간 계산하기 : 어려웠던 부분 1️⃣**
	public void calc(Order o){
	
		
		// 도우 선택지에 따른 가격, 시간 구하고 ,,, 주문 내역서에 더하기
		calcDough(o);
		// 토핑 선택지에 따른 가격, 시간 구하고 ,,, 주문 내역서에 더하기
		calcTopping(o);
		// 사이드 선택지에 따른 가격, 시간 구하고 ,,, 주문 내역서에 더하기
		calcSide(o);
		// 음료 선택지에 따른 가격, 시간 구하고 ,,, 주문 내역서에 더하기
		calcDrink(o);
	}
	
	
	private void calcDrink(Order o) {
		int drink = o.getDrink();
		if( drink == 1) {
			Menu m = new Coke();
			**o.addPrice(m.getPrice());
			o.addTime(m.getTime());  //어려웠던 부분2️⃣ : get~ ()에 인자값 대입!!**
			//o.calc(new Normal()); 한 줄로 처리할 수 있음!!!!!
		}else if( drink == 2) {
			Menu m =new Sprite();
			o.addPrice(m.getPrice());
			o.addTime(m.getTime());
		}else if( drink == 3) {
			Menu m =new Fanta();
			o.addPrice(m.getPrice());
			o.addTime(m.getTime());
		}
	}

	private void calcSide(Order o) {
		int side = o.getSide();
		if( side == 1) {
			Menu m = new menu.side.Potato();
			o.addPrice(m.getPrice());
			o.addTime(m.getTime());
		}else if( side == 2) {
			Menu m = new Spaghetti();
			o.addPrice(m.getPrice());
			o.addTime(m.getTime());
		}else if( side == 3) {
			Menu m = new Wing();
			o.addPrice(m.getPrice());
			o.addTime(m.getTime());
		}
	}

	private void calcTopping(Order o) {
		int topping = o.getTopping();
		if(topping == 1) {
			Menu m = new menu.topping.Cheese();
			o.addPrice(m.getPrice());
			o.addTime(m.getTime());
		}else if(topping == 2) {
			Menu m =new Potato();
			o.addPrice(m.getPrice());
			o.addTime(m.getTime());
		}else if(topping == 3) {
			Menu m =new Shirimp();
			o.addPrice(m.getPrice());
			o.addTime(m.getTime());
		}
	}

	private void calcDough(Order o) {
		int dough = o.getDough();
		if(dough == 1) {
			Menu m =new Normal();
			o.addPrice(m.getPrice());
			o.addTime(m.getTime());
		}else if(dough == 2) {
			Menu m =new Cheese();
			o.addPrice(m.getPrice());
			o.addTime(m.getTime());
		}else if(dough == 3) {
			Menu m =new Gold();
			o.addPrice(m.getPrice());
			o.addTime(m.getTime());
		}else if(dough == 4) {
			Menu m =new Bite();
			o.addPrice(m.getPrice());
			o.addTime(m.getTime());
		}else if(dough == 5) {
			Menu m =new RichGold();
			o.addPrice(m.getPrice());
			o.addTime(m.getTime());
		}
	}

	//포장여부 묻기
	private **boolean** checkTakeOut() { //포장여부(boolean) 물어보고 문자열 입력 후 리턴, 
                                     **리턴값은 boolean 타입!!**
		System.out.println("포장하시겠습니까?");
		
		String result = sc.nextLine();
	
		if(result.equalsIgnoreCase("Y")) {
			return true;
		}else {
			return false;
		}
		
	}
	
	//도우 선택
	private int selectDough() {
		//선택지 보여주기
		System.out.println("====== 도우 ======");
		System.out.println("1. 일반 도우");
		System.out.println("2. 치즈 크러스트");
		System.out.println("3. 골드");
		System.out.println("4. 바이트");
		System.out.println("5. 리치골드");
		
		String result = sc.nextLine();
		return Integer.parseInt(result);
		
//		int result = sc.nextInt();
//		sc.nextLine(); // 엔터키 제거
	}
	
	
	//토핑 선택
	private int selectTopping() {
		System.out.println("====== 토핑 ======");
		System.out.println("1. 콤비네이션");
		System.out.println("2. 페페로니");
		System.out.println("3. 치즈");
		System.out.println("4. 포테이토");
		System.out.println("5. 불고기");
		System.out.println("6. 고구마");
		System.out.println("7. 쉬림프");
		
		String result = sc.nextLine();
		return Integer.parseInt(result);
		
		
	}
	
	
	//사이드 선택
	private int selectSide() {
		System.out.println("====== 사이드 ======");
		System.out.println("1. 스파게티");
		System.out.println("2. 감자튀김");
		System.out.println("3. 윙");
		System.out.println("3. 사이드 없음");
		
		String result = sc.nextLine();
		return Integer.parseInt(result);
		
		
	}
	//음료 선택
	private int selectDrink() {
		System.out.println("====== 음료 ======");
		System.out.println("1. 사이다");
		System.out.println("2. 콜라");
		System.out.println("3. 환타");
		System.out.println("4. 음료 없음");
		
		String result = sc.nextLine();
		return Integer.parseInt(result);
		
		
	}
}

< 메뉴 클래스 >

: menu 클래스를 부모 클래스로 이용!

package **menu;**

public class Menu {
	
	public Menu(int price, int time) {
		this.price = price;
		this.time = time;
	}
	
	private int price;
	private int time;
	
	public int getPrice() {
		return price;
	}
	public int getTime() {
		return time;
	}

}

: (자식 클래스 중 일부 발췌) menu 클래스를 상속 받아 자식 클래스에서 이용!

package menu.**dough**;

import menu.Menu;

public class Cheese extends Menu{
	
	public Cheese() {
		**super(2000,2); // 생성자 만들어준 뒤 부모클래스에 인자값을 대입해줌.**
	}

}