package com.example.mykiosk
class InputNumber {
fun inputNumber(type: String): Any? {
return when (type) {
"selectMainMenu" -> {
println("이동하실 화면의 숫자를 입력하세요.")
while (true) {
try {
var selectMainMenu: String? = readLine()
return selectMainMenu?.toInt() ?: -1
} catch (e: Exception) {
println("올바른 번호를 다시 선택해주세요.")
}
}
}
"selectBurgerMenu" -> {
println("이동하실 화면의 숫자를 입력하세요.")
while (true) {
try {
var selectBurgerMenu: String? = readLine()
return selectBurgerMenu?.toInt() ?: -1
} catch (e: Exception) {
println("올바른 번호를 다시 선택해주세요.")
}
}
}
"selectMcCafeMenu" -> {
println("이동하실 화면의 숫자를 입력하세요.")
while (true) {
try {
var selectMcCafeMenu: String? = readLine()
return selectMcCafeMenu?.toDouble() ?: -1
} catch (e: Exception) {
println("올바른 번호를 다시 선택해주세요.")
}
}
}
else -> {
return "no"
}
}
}
}
package com.example.mykiosk
fun main() {
println("")
println("[맥도날드 키오스크]")
while (true) {
println("")
println("---------------------------------------------------------------------------------------------")
println("[전체 메뉴 : 번호를 입력하시면 상세 메뉴 페이지로 이동합니다.]")
println("[1] 햄버거 단품 : 주문 즉시 조리하는 햄버거 ")
// println("[2] 햄버거 세트 : 햄버거 + 감자튀김 + 음료 세트")
println("[3] 맥카페 : 다양한 음료")
// println("[4] 사이드 : 디저트 및 사이드 메뉴")
// println("[5] 맥모닝 : 새벽 4시부터 오전 10시30분까지 주문 가능")
println("")
println("[주문 : 주문 완료를 위해 올바른 번호를 입력해주세요.]")
println("[9] 장바구니로 이동하여 결제")
println("[0] 주문 취소 및 프로그램 종료")
var selectMainMenu = InputNumber().inputNumber("selectMainMenu").toString().toInt()
when (selectMainMenu) {
1 -> {
println("햄버거 단품의 상세 페이지로 이동합니다.")
Burger().detailedBurger()
}
3 -> {
println("맥카페의 상세 페이지로 이동합니다.")
McCafe().detailedMcCafe()
}
0 -> {
println("프로그램이 종료됩니다.")
break
}
else -> {
println("잘못된 번호입니다. 올바른 번호를 입력해주세요.")
}
}
}
}
package com.example.mykiosk
class Burger() {
fun detailedBurger() {
while (true) {
println("")
println("---------------------------------------------------------------------------------------------")
println("[햄버거 단품 메뉴 목록]")
println("[1] 맥스파이시 상하이 버거 단품: 5,500원 ")
println("[2] 맥크리스피 디럭스 버거 단품: 6,800원")
println("")
println("[9] 메인메뉴로 돌아가기")
println("[0] 프로그램 종료")
var selectBurgerMenu = InputNumber().inputNumber("selectBurgerMenu").toString().toInt()
when (selectBurgerMenu) {
1 -> {
println("맥스파이시 상하이 버거 단품 (5,500원)을 선택하셨습니다. 장바구니에 담으시겠습니까?")
}
9 -> {
println("메인메뉴로 돌아갑니다.")
return
}
0 -> {
println("프로그램을 종료합니다.")
break
}
else -> {
println("잘못된 번호입니다. 올바른 번호를 입력해주세요.")
}
}
}
}
}
package com.example.mykiosk
class McCafe {
fun detailedMcCafe() {
while (true) {
println("")
println("---------------------------------------------------------------------------------------------")
println("[맥카페 메뉴 목록]")
println("[1.1] Hot-드립커피 : 2,000원")
println("[1.2] Ice-드립커피 : 1,800원")
println("[2.1] Hot-드립커피 : 2,000원")
println("[2.2] Ice-드립커피 : 1,800원")
println("")
println("[9] 메인메뉴로 돌아가기")
println("[0] 프로그램 종료")
var selectMcCafeMenu = InputNumber().inputNumber("selectMcCafeMenu").toString().toDouble()
when (selectMcCafeMenu) {
1.1 -> {
println("Hot-드립커피(2,000원)을 선택하셨습니다. 장바구니에 담으시겠습니까?")
}
9.0 -> {
println("메인메뉴로 돌아갑니다.")
return
}
0.0 -> {
println("프로그램을 종료합니다.")
break
}
else -> {
println("잘못된 번호입니다. 올바른 번호를 입력해주세요.")
}
}
}
}
}
일단 아까 위에도 언급했듯이, InputNumber클래스를 따로 뺀 건 좋은데, 메뉴마다 하나씩 예외처리를 해주니까 중복된 모양이 발생해서, 내일 Int형과 Double형으로 다시 처리해 줄 것이다.
지금보니까 음료메뉴도 1번 2번들이 동일한 값이다. 이것도 내일 코드를 완성하면서 제대로 다듬어야겠다.
메뉴의 입출력과 자유로운 이동은 구현은 나름 쉽게 했다.. 그 후에
<각 메뉴를 클래스로 만들어서 그에 대한 정보값을 저장하고, 특정 메뉴들을 선택하여 그 선택한 값들을 장바구니에 따로 저장해두고, 장바구니에 저장한 값들을 통해 계산처리를 하는 것>
을. 사실. 오늘 시도해봤다.. 이전에 만들었던 계산기구현을 참고해서 추상메서드도 만들고, 연결해봤더니 계산기는 값을 저장하기 보다는 각 클래스에서 계산한 값을 반환해주는거라 생각한 모양이 안나왔다.