[Java 프로젝트]햄버거 키오스크

develop.u·2022년 9월 30일
0

❓ 주제 선정

자바 scanner를 사용해서 구현할 수 있는 주제를 찾다가 메뉴를 입력받고 영수증을 출력하는 키오스크를 구현하고자 했다.

📆 기간

2022.08.24 ~ 2022.09.02

플로우차트는 이렇다 !

✏️ 클래스

  1. 버거 메뉴, 가격
  2. 사이드 메뉴, 가격
  3. 음료수 메뉴, 가격
  4. 랜덤 메소드가 담긴 클래스
  5. 메인 클래스

가. 버거 메뉴와 가격이 담긴 class

package kiosk;

public class BurgerMenu {
	
    // 버거 메뉴판 출력
	public void menu() {
		String[] menu = {	"1.통새우와퍼\t8,600원", "2.베이컨치즈와퍼\t9,600원"
							, "3.불고기와퍼\t7,800원", "4.몬스터와퍼\t9,900원"
							, "5.콰트로치즈와퍼\t8,600원", "6.담기"};
			System.out.println("---------**버거 메뉴**---------");
			for (int i = 0; i < menu.length; i++) {
				System.out.printf(menu[i] + "\n");
			}
			System.out.println("-----------------------------");
	}
	
    // 장바구니에 담길 메뉴
	public String cartMenu(int cmenu) {
		String[] menu = {	"통새우와퍼\t\t8,600원", "베이컨치즈와퍼\t9,600원"
							, "불고기와퍼\t\t7,800원", "몬스터와퍼\t\t9,900원"
							, "콰트로치즈와퍼\t8,600원"};
		return menu[cmenu-1];
	}
	
	public int price(int cmenu) {
		int[] menuPrice = {8600, 9600, 7800, 10200, 8600};
		
			return menuPrice[cmenu-1];	
	}
}

사이드 메뉴와 음료수는 버거 클래스와 같은 형식으로 구성하였다.


나. 랜덤 class

  • 영수증에 출력할 주문번호(랜덤 메소드)
package kiosk;

public class Random {
	//싱글톤
	private static Random rd;
	
	public static Random getInstance() {
		if(rd == null) {
			rd = new Random();
		}
		return rd;
	}
	
	public static void freeInstance() {
		rd = null;
	}
	
	private Random() {
		
	}
	
	public int random(int max, int min) {
		int a = (int)((Math.random()*(max  - min + 1))+min);
		return a;
	}
	

}

다. 메인 class

영수증에 출력할 날짜

LocalDateTime now = LocalDateTime.now();
String printNow = now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm"));

무한반복

for (; ;) {	
			
	System.out.println("1. 포장하기 / 2. 먹고가기");
	int eat = sc.nextInt();
			
	if(eat != 1 && eat != 2) {
		System.out.println("잘못 입력하셨습니다.");
		
        continue; //"1. 포장하기 / 2. 먹고가기"
    }
            
    if(eat == 1 || eat == 2){
            
    // 버거, 사이드, 음료수 메뉴 출력 ~ 주문 메뉴 확인
            
    	for (; ;) {	//주문
			System.out.println("주문하시겠습니까? (1. 네 / 2. 취소하기)");
			int answer4 = sc.nextInt();
				
			if(answer4 == 1) {
                .
                .
                .
            	break;	//주문 for문 종료
			} else if(answer4 == 2) {
				break;	//키오스크 처음으로 돌아가기
			} else {
				System.out.println("똑바로 입력하세요.");
				continue;	// 주문 for문 반복
			}
		}	
			//키오스크 처음으로 돌아가기("1. 포장하기 / 2. 먹고가기") 
            continue;
    }
}

중복된 메뉴를 제외한 장바구니

Map<String, Integer> map = new HashMap<String, Integer>();
        
for (int i = 0; i < cart.size(); i++) {	
	if(map.containsKey(cart.get(i))) {
    	//메뉴(key값)가 겹친다면 수량(value)+1
		map.put(cart.get(i), map.get(cart.get(i))+1);	
	} else {
        //메뉴(key값)가 겹치지 않는다면 수량(value) = 1
		map.put(cart.get(i), 1);						
	}
}
			
for (int i = 0; i < 5; i++) {
	System.out.printf("%20s\n", ".");				
}

장바구니에 담긴 주문메뉴 확인 시 메뉴&가격(key)과 가격(value)모두 출력 하기 위한 코드

for (Map.Entry<String, Integer> entry : map.entrySet()) {	
	System.out.printf("%s%10s\n", entry.getKey(), entry.getValue());
}

❗ 결과

실행 시 나오는 화면

사이드메뉴, 음료수 선택

주문 완료

  • 결제 금액 출력 후 Thread.sleep()을 발생시켜 카드 결제 효과

영수증 출력

전체

1. 포장하기 / 2. 먹고가기
2
---------**버거 메뉴**---------
1.통새우와퍼	8,6002.베이컨치즈와퍼	9,6003.불고기와퍼	7,8004.몬스터와퍼	9,9005.콰트로치즈와퍼	8,6006.담기
-----------------------------
주문하실 메뉴를 선택해주세요 : 1
주문하실 메뉴를 선택해주세요 : 1
주문하실 메뉴를 선택해주세요 : 6
사이드 메뉴를 선택하시겠습니까?(1./ 2. 아니오)
2
음료수를 선택하시겠습니까?(1./ 2. 아니오)
1
-----------**음료수**-----------
1.아메리카노	2,2002.아이스초코	2,7003.코카콜라		2,8004.스프라이트	2,8005.씨그램		2,8006.미닛메이드오렌지	3,4007.담기
-----------------------------
음료수를 선택해주세요 : 2
음료수를 선택해주세요 : 7
                   .
                   .
                   .
                   .
                   .
              <주문메뉴확인>
------------------------------------
   메뉴             단가         수량
통새우와퍼		8,6002
아이스초코		2,7001
------------------------------------
주문하시겠습니까? (1./ 2. 취소하기)
1
결제 금액은 19900원입니다. 카드를 넣어주세요.
주문이 완료되었습니다.

____________________________________
               [영수증]
버거킹 / TEL : 02-123-4567
서울 동작구 동작대로 21
2022-09-30 05:39
------------------------------------
   메뉴             단가         수량
------------------------------------
통새우와퍼		8,6002
아이스초코		2,7001
____________________________________
결제 금액 : 19900원
주문번호 [13583]
____________________________________

1. 포장하기 / 2. 먹고가기 // 무한반복이기 때문에 계속 출력

0개의 댓글

관련 채용 정보