🍥구현 기능
- 사용자가 호텔 예약을 할 수 있는 메뉴 표시하기
- 방 예약
- 예약 목록 출력
- 예약 목록 (정렬) 출력
- 시스템 종료
- 금액 입금-출금 내역 목록 출력
- 예약 변경/취소
- 메뉴 1번 구현하기
- 방 예약 플로우: 성함 입력받기 -> 방 번호 입력받기 -> 체크인 날짜 입력받기 -> 체크아웃 날짜 입력받기
- 방 번호의 범위: 100호실~999호실
- 체크인 날짜: 지금 날짜와 비교해서 이전날짜는 입력받을 수 없다
- 체크아웃 날짜: 체크인 날짜보다 이전이거나 같을 수는 없다
- 방 예약이 완료되면 임의의 금액이 입금되고 호텔 예약비로 출금된다
🍥구현하기
ReservationInfo 클래스
data class ReservationInfo(val name: String, var roomNum:Int, var checkIn:String, var checkOut:String)
TransactionInfo 클래스
data class TransactionInfo (val name:String, val info:String, val money:Int)
HotelReservation 클래스
import android.util.Log
import java.time.LocalDate
import java.time.format.DateTimeFormatter
class HotelReservation {
init{
println("호텔 예약 프로그램입니다.")
}
private val menus = arrayOf(
"방 예약",
"예약 목록 출력",
"예약 목록 (정렬) 출력",
"시스템 종료",
"금액 입금-출금 내역 목록 출력",
"예약 변경/취소")
private var reservationInfoList = arrayOf<ReservationInfo>()
private var transactionInfoList = arrayOf<TransactionInfo>()
fun start(){
while(true) {
printMenu()
var input = readLine()!!.toInt()
when (input) {
1 -> runMenu1()
2 -> runMenu2()
3 -> runMenu3()
4 -> {
runMenu4()
return
}
5 -> runMenu5()
6 -> runMenu6()
else -> println("존재하지 않는 메뉴입니다.")
}
}
}
private fun printMenu(){
println("[메뉴]")
for(i in 0 until menus.size){
print("${i+1}. ${menus[i]}.\t")
}
println()
}
private fun runMenu1(){
println("예약자분의 성함을 입력해주세요.")
val name = readLine()!!
var roomNum = 0
while(roomNum < 100 || 999< roomNum) {
println("예약할 방 번호를 입력해주세요.")
roomNum = readLine()!!.toInt() - '0'.code
if(roomNum < 100 || 999< roomNum) println("올바르지 않은 방 번호입니다. 방 번호는 100부터 999까지 입니다.")
}
var nowDate = LocalDate.now()
val formatter = DateTimeFormatter.ofPattern("yyyyMMdd")
val nowDateStr = nowDate.format(formatter)
var checkIn = "00000000"
while(checkIn.toInt() < nowDateStr.toInt()) {
println("체크인 날짜를 입력해주세요. (표기 방식: 20230631)")
checkIn = readLine()!!
if(checkIn.toInt() < nowDateStr.toInt()) println("체크인 날짜로 지난 날짜를 선책할 수 없습니다.")
}
var checkOut = "00000000"
while(checkOut.toInt() <= checkIn.toInt()){
println("체크아웃 날짜를 입력해주세요. (표기 방식: 20230631)")
checkOut = readLine()!!
if(checkOut.toInt() <= checkIn.toInt()) println("체크아웃 날짜로 체크인 날짜보다 전이거나 같은 날짜를 선택할 수 없습니다.")
}
transactionInfoList += TransactionInfo(name, "예약비 입금", 50000)
transactionInfoList += TransactionInfo(name, "예약비 출금", -50000)
val newReservationInfo = ReservationInfo(name, roomNum, checkIn, checkOut)
reservationInfoList += newReservationInfo
println("호텔 예약이 완료되었습니다.")
}
private fun runMenu2(){
}
private fun runMenu3(){
}
private fun runMenu4(){
println("시스템을 종료합니다.")
}
private fun runMenu5(){
}
private fun runMenu6(){
}
}
MyHotelReservation.kt
fun main(){
val hotelReservation = HotelReservation()
hotelReservation.start()
}