자바 scanner를 사용해서 구현할 수 있는 주제를 찾다가 메뉴를 입력받고 영수증을 출력하는 키오스크를 구현하고자 했다.
2022.08.24 ~ 2022.09.02
플로우차트는 이렇다 !
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];
}
}
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;
}
}
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", ".");
}
for (Map.Entry<String, Integer> entry : map.entrySet()) {
System.out.printf("%s%10s\n", entry.getKey(), entry.getValue());
}
1. 포장하기 / 2. 먹고가기
2
---------**버거 메뉴**---------
1.통새우와퍼 8,600원
2.베이컨치즈와퍼 9,600원
3.불고기와퍼 7,800원
4.몬스터와퍼 9,900원
5.콰트로치즈와퍼 8,600원
6.담기
-----------------------------
주문하실 메뉴를 선택해주세요 : 1
주문하실 메뉴를 선택해주세요 : 1
주문하실 메뉴를 선택해주세요 : 6
사이드 메뉴를 선택하시겠습니까?(1. 네 / 2. 아니오)
2
음료수를 선택하시겠습니까?(1. 네 / 2. 아니오)
1
-----------**음료수**-----------
1.아메리카노 2,200원
2.아이스초코 2,700원
3.코카콜라 2,800원
4.스프라이트 2,800원
5.씨그램 2,800원
6.미닛메이드오렌지 3,400원
7.담기
-----------------------------
음료수를 선택해주세요 : 2
음료수를 선택해주세요 : 7
.
.
.
.
.
<주문메뉴확인>
------------------------------------
메뉴 단가 수량
통새우와퍼 8,600원 2
아이스초코 2,700원 1
------------------------------------
주문하시겠습니까? (1. 네 / 2. 취소하기)
1
결제 금액은 19900원입니다. 카드를 넣어주세요.
주문이 완료되었습니다.
____________________________________
[영수증]
버거킹 / TEL : 02-123-4567
서울 동작구 동작대로 21
2022-09-30 05:39
------------------------------------
메뉴 단가 수량
------------------------------------
통새우와퍼 8,600원 2
아이스초코 2,700원 1
____________________________________
결제 금액 : 19900원
주문번호 [13583]
____________________________________
1. 포장하기 / 2. 먹고가기 // 무한반복이기 때문에 계속 출력