카테고리 없음

23.12.11 키오스크 만들기

suh75321 2023. 12. 11. 21:21

오늘은 키오스크를 만드는 과제를 수행하게 됬다! 역시 시작은 뭘해야할지를 몰라서 굉장히 막막했지만, 어쨋든 해보기로 했다. 어짜피 겉모습만 흉내내는거니 어떻게든 될것이다.

 

우선 제목?을

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("올바른 번호를 입력하세요.")
        }
    }
}

 

다음엔 클래스를 각자 따로 만들고 연결해야한다. 계산기처럼! 근데 그건 아직 경험이 부족해서 막히는 중이다. 내일 이어서 해야겠다...