23.12.11 키오스크 만들기
오늘은 키오스크를 만드는 과제를 수행하게 됬다! 역시 시작은 뭘해야할지를 몰라서 굉장히 막막했지만, 어쨋든 해보기로 했다. 어짜피 겉모습만 흉내내는거니 어떻게든 될것이다.
우선 제목?을
println("========================================")
println(" 버거킹에 오신걸 환영 합니다! ")
println("========================================")
이렇게 메시지를 출력시킨 뒤
1번을 누르면 버거, 2번은 음료, 3번은 종료, 그리고 예외처리를 집어넣으라는 요구사항이 있었기 때문에 try catch를 이용해 1,2,3 외의 숫자를 입력하면 다시 입력하라는 메시지가 뜨도록 해봤다.
while (true) {
try {
println("메뉴를 선택하세요:")
println("1. 버거")
println("2. 음료")
println("3. 종료")
print(" ---> ")
val input = readLine()!!.toInt()
when (input) {
1 -> {
println("버거를 선택했습니다.")
}
2 -> {
println("음료를 선택했습니다.")
}
3 -> {
println("프로그램을 종료합니다.")
break
}
else -> {
println("1, 2, 3 중에서 선택하세요.")
}
}
} catch (e: NumberFormatException) {
println("올바른 숫자를 입력하세요.")
}
}
}
처음엔 try를 어디에 넣어야 하는지 했갈려서 버벅였는데, 모든 메뉴를 감싸듯 가장 위와 아래에 배치해야 한다는걸 알았다! 역시 강의를 듣는것만으론 안되고 실전을 겪어야 머리에 잘 들어온다.
그럼 이제 세부 메뉴를 설정해야 한다. 이것부터가 진짜 시작이라 할수 있겠지... 눈 앞이 시꺼매진다...
우선 제대로 시작하기에 앞서서 버거 메뉴를 설정해 보기로 한다.
fun main의 안쪽에
var burgerMenu = arrayOf(
"와퍼 | W 8.0 | 불에 직접 구운 순 쇠고기 패티에 싱싱한 야채가 한가득~ 버거킹의 대표 메뉴!",
"불고기와퍼 | W 8.0 | 불에 직접 구운 순 쇠고기 패티가 들어간 와퍼에 달콤한 불고기 소스까지!",
"치즈와퍼 | W 8.6 | 불에 직접 구운 순 쇠고기 패티가 들어간 와퍼에 고소한 치즈까지!",
"통새우와퍼 | W 8.8 | 불맛 가득 순쇠고기, 갈릭페퍼 통새우, 스파이시토마토소스가 더해진 프리미엄 버거!",
)
를 집어넣고, when 안쪽의 1번 메뉴를 변형시킨다.
when (input) {
1 -> {
println("[ Burgers MENU ]")
burgerMenu.forEachIndexed { index, menu ->
println("${index + 1}. $menu")
}
println("0. 뒤로가기")
val burgerInput = readLine()!!.toInt()
when (burgerInput) {
0 -> {
// 이전 화면으로 돌아가기
}
in 1..burgerMenu.size -> {
// 선택한 번호에 대한 동작 수행
println("선택한 버거: ${burgerMenu[burgerInput - 1]}")
}
else -> {
println("올바른 번호를 입력하세요.")
}
}
}
1번을 누르면 Burgers MENU가 뜨도록 하고, ${index + 1} 이부분은 목록이 0이아니라 1부터 시작하게 하려면 들어가야 한다고 한다. 기계는 첫 시작이 0이니 +1을 해야하는 것이다.
그리고 또 숫자를 입력해야하니 readLine를 쓰고,
${burgerMenu[burgerInput - 1]} 이 부분은 또 -1을 해야 아까 0부터 시작을 1부터로 만들었듯 다시 0으로 반들어야 한다.
음료도 똑같은 방식을 적용한다.
var drinkMenu = arrayOf(
"콜라 | W 2.9 | 코카-콜라로 더 짜릿하게!",
"사이다 | W 2.9 | 나를 깨우는 상쾌함!",
"아메리카노 | W 2.4 | 자연을 담은 버거킹 RA인증커피"
)
2 -> {
println("[ Drink MENU ]")
drinkMenu.forEachIndexed { index, menu ->
println("${index + 1}. $menu")
}
println("0. 뒤로가기")
val drinkInput = readLine()!!.toInt()
when (drinkInput) {
0 -> {
// 이전 화면으로 돌아가기
}
in 1..drinkMenu.size -> {
// 선택한 번호에 대한 동작 수행
println("선택한 음료: ${drinkMenu[drinkInput - 1]}")
}
else -> {
println("올바른 번호를 입력하세요.")
}
}
}
다음엔 클래스를 각자 따로 만들고 연결해야한다. 계산기처럼! 근데 그건 아직 경험이 부족해서 막히는 중이다. 내일 이어서 해야겠다...