Android App Track⛺-013

MunkiJeon·2024년 6월 21일

TIL

목록 보기
30/59
post-thumbnail

TIL (Today I Learned)

오늘 공부한거!

  • 키오스크 과제 급하게 시작...(주말까지 해벌임...)
    • Lv0
      - 요구사항 : 메인 메뉴판 화면
      : 메뉴 선택시 상세 메뉴화면으로 이동
      : 잘못된 번호 선택 시 예외처리
      : 프로그램 종료을 위한 번호 정의
      [ 필요한 기능 ]
      요구사항1: 메인 메뉴판 화면
      : 메뉴 선택시 상세 메뉴화면으로 이동 [v]
      메뉴판 ->
       01.버거->
           치킨 3.0
           포크 4.0
           비프 6.0
           치즈 2.5
       02.스낵&4이드->
           치즈스틱 2.0
           감자튀김 1.0
           치킨너겟 1.5
           스넥랩   2.5
       03.음료&커픠->
           사이다     1.0
           콜라       1.0
           아메리카노 1.5
           라떼       1.5
      : 잘못된 번호 선택 시 예외처리[v]
      : 프로그램 종료을 위한 번호 정의[v]
    • Lv0
      • 프로그램을 실행하면 메뉴판의 번호들을 보여줍니다.(대분류의 메뉴를 보여줌)
      • 대분류 메뉴에 해당하는 숫자를 입력하면 선택하면 세부 메뉴들을 보여줍니다.
        • 예를 들어 햄버거에 해당하는 숫자를 입력 하면
          햄버거 1, 햄버거 2 처럼 세부 종류를 보여줘요.(출력 예시 참고)
      • 반복문을 이용해서 메뉴 선택할 수 있게 유지하고
        대분류 메뉴에서, 0번이 입력되면 프로그램을 종료합니다.
       print(Menu(0).strTrens(0))//초기화면
          var category = 0
          while (true){
              var orderNum = try { readLine()!!.toInt() }
              catch (e: NumberFormatException) {
                  print("\n숫자로만 입력 해주세요\n번호 입력>> ")
                  continue
              }
              catch (e: IndexOutOfBoundsException){
                  print("\n제시된 숫자 중에 선택해 주세요\n번호 입력>> ")
                  continue
              }
             when(orderNum as Int){
                  0->{
                      if (category == 0) {
                          print("키오스크를 종료 합니다.")
                          break
                      }
                      else{
                          category = 0
                          print( Menu(orderNum).strTrens(orderNum))
                      }
                  }
                  1->{
                      if (category == 0){
                          category = orderNum
                          print(Burger(category,orderNum).strTrens(orderNum))
                      }
                      else if (category == 99) {
                          Cart().payment()
                          break
                      }
                      else{ Burger(category,orderNum).addCart() }
                  }
                  2->{
                      if (category == 0){
                          category = orderNum
                          print( Snack(category,orderNum).strTrens(orderNum))
                      }
                      else if (category == 99){
                          category = 0
                          print( Menu(orderNum).strTrens(orderNum))
                      }
                      else{ Snack(category,orderNum).addCart() }
                  }
                  3->{
                      if (category == 0){
                          category = orderNum
                          print( Drink(category,orderNum).strTrens(orderNum))
                      }
                      else{ Drink(category,orderNum).addCart() }
                  }
                 4->{
                     if (category == 0){
                         category = orderNum
                         print( Drink(category,orderNum).strTrens(orderNum))
                     }
                     else{ Drink(category,orderNum).addCart() }
                 }
                  99->{
                      category = orderNum
                      Cart().checkCart()
                  }
                 else->{print("\n제시된 숫자 중에 선택해 주세요\n번호 입력>> ")}
             }
          }
    • Lv3
      설계한 클래스들을 상속 관계를 가지도록 변경합니다.
        open class Menu (val _category: Int) {
            //대 메뉴
            // - 메뉴 뜨우는 기능만 존재
            //필요한 프로퍼티: 제품메뉴 / 장바구니 / 취소
            var strMenus :String =""
            open fun strTrens(_category: Int) : String{
                strMenus += menuTitle[0]
                for (i in g_property.categoryList){ strMenus += i+"\n" }
                strMenus += menuTitle[1] + menuTitle[2]
                return strMenus
            }
        }
        open class SubMenu(_category: Int, var _orderNum: Int) : Menu(_category) {
             var prises : List<Double>  = g_property.priseList[_category-1]
             var products : List<String> = g_property.productList[_category-1]
            override fun strTrens(_category: Int) : String {
                super.strMenus += menuTitle[0]
                super.strMenus += g_property.categoryList[_category-1] +"\n"
                for ((index,i) in products.withIndex()){ super.strMenus += i +" | w "+ prises[index]+"천원\n" }
                super.strMenus += menuTitle[1] + menuTitle[2]
                return super.strMenus
            }
            open fun addCart() {
                var pri : Double = prises[_orderNum-1]
                var prd : String = products[_orderNum-1]
                if(g_property.cartList.containsKey(prd)){pri += g_property.cartList.get(prd)!!}
                g_property.cartList.put(prd, pri)
                print("${prd} 를 장바구니에 담았습니다. \n| 총 가격 : ${g_property.cartList.values.sum()}천원\n${menuTitle[1]}")
                //if(_category == 1){} 메뉴 추가
                print(strTrens(_category))
            }
    	}
    	```

Today Review

  • 클래스 개념이 약해서,,,,여기서 과제 스탑...
profile
공장자동화와 웹 개발을 핥아 먹다 앱 개발로 전향한 개발자의 키보드의 낡은 키캡⛑️

0개의 댓글