[iOS 사전캠프] Step3.Lv2.2. 은행 계좌 관리 시스템을 구축해요.

DoyleHWorks·2024년 10월 15일
0
post-thumbnail

문제


내 코드

var newAmount = 0.0
var oldAmount = 0.0

// 계좌 잔액을 저장하는 변수
var balance: Double = 0.0 {
  willSet(newValue){
    newAmount = newValue
  }
  didSet(oldValue){
    oldAmount = oldValue
  }
}

// 입금 함수
func deposit(amount: Double) {
  if amount > 0 {
    balance += amount
    print("입금 금액: \(amount)")
    print("잔액이 \(oldAmount)원에서 \(newAmount)원으로 변경되었습니다.")
  } else {
    print("0 이하의 값을 입금할 수 없습니다.")
  }
}

// 출금 함수
func withdraw(amount: Double) {
  if amount > 0 {
    if balance >= amount {
      balance -= amount
      print("출금 금액: \(amount)")
      print("잔액이 \(oldAmount)원에서 \(newAmount)원으로 변경되었습니다.")
    } else {
      print("잔액이 부족합니다 (현재 잔액: \(balance))")
    }
  } else {
    print("0 이하의 값을 출금할 수 없습니다.")
  }
}

// 명령어
func executeCommand(_ command: String){
  let components = command.split(separator: " ").map { String($0) }

  guard let action = components.first else {
    print("잘못된 명령어입니다.")
    return
  }
  switch action {
    case "deposit":
      if components.count == 2 {
        if let amount = Double(components[1]) {
          deposit(amount: amount)
        } else {
          print("입력한 금액이 유효하지 않습니다.")
        }
      } else {
        print("잘못된 명령어입니다. 예: deposit <금액>")
      }

    case "withdraw":
      if components.count == 2 {
        if let amount = Double(components[1]) {
          withdraw(amount: amount)
        } else {
          print("입력한 금액이 유효하지 않습니다.")
        } 
      } else {
        print("잘못된 명령어입니다. 예: withdraw <금액>")
      }

    default:
      print("알 수 없는 명령어입니다.")
  }
}

// 메인 루프: 사용자 입력을 계속 받아들임
while true {
    print("deposit 또는 withdraw 명령어로 입출금할 수 있습니다: ", terminator: "")
    if let command = readLine() {
        executeCommand(command)
    }
}

과제 주제 내용으로 제시된 프로퍼티 옵저버와 접근 제한자 중에 접근 제한자는 활용 못했는데, 참고하려고 정답예시코드를 확인해봤더니 두 가지 모두 사용되지 않았다.. 🤔


코드 짜면서 배운 내용

  • 기존에 짠 코드를 활용했더니 편했다 😊
    • 특히 excuteCommand 와 메인 루프 (콘솔에 명령어 입력하기용) !
profile
Reciprocity lies in knowing enough

0개의 댓글