Skip to Content
💻 코리아IT아카데미 신촌 - 프로그래밍 학습 자료
실전 프로젝트레벨 5미니 은행 시스템

🏦 미니 은행 시스템

📋 프로젝트 개요

함수와 딕셔너리를 활용하여 실제 은행과 같은 기본 기능을 구현해보세요. 계좌 관리, 입출금, 거래 내역 등을 체계적으로 관리할 수 있는 시스템을 만들어봅시다!

🎯 학습 목표

  • 함수를 활용한 코드 모듈화
  • 딕셔너리를 활용한 데이터 관리
  • 리스트를 활용한 거래 내역 관리
  • 사용자 입력 검증 및 예외 처리

🚀 1단계: 기본 기능

핵심 요구사항

  1. 계좌 개설 기능

    • 계좌번호 자동 생성 (예: ACC001, ACC002…)
    • 고객 이름과 초기 입금액 입력
    • 계좌 정보를 딕셔너리로 저장
  2. 잔액 조회 기능

    • 계좌번호로 잔액 확인
    • 존재하지 않는 계좌번호 처리

💻 출력 예시

=== 미니 은행 시스템 === 1. 계좌 개설 2. 잔액 조회 3. 종료 선택: 1 === 계좌 개설 === 고객 이름: 김철수 초기 입금액: 100000 계좌가 성공적으로 개설되었습니다! 계좌번호: ACC001 고객명: 김철수 잔액: 100,000원 === 미니 은행 시스템 === 1. 계좌 개설 2. 잔액 조회 3. 종료 선택: 2 === 잔액 조회 === 계좌번호: ACC001 고객명: 김철수 현재 잔액: 100,000원

💡 구현 힌트

  • 계좌 정보를 저장할 딕셔너리 구조를 설계해보세요
  • 각 기능을 별도의 함수로 구현해보세요
  • 계좌번호 생성 방법을 생각해보세요

🔥 2단계: 입출금 기능

추가 요구사항

  1. 입금 기능

    • 계좌번호와 입금액 입력
    • 잔액 업데이트
  2. 출금 기능

    • 계좌번호와 출금액 입력
    • 잔액 부족 시 처리
    • 잔액 업데이트
  3. 모든 계좌 조회

    • 개설된 모든 계좌 목록 출력

💻 출력 예시

=== 미니 은행 시스템 === 1. 계좌 개설 2. 잔액 조회 3. 입금 4. 출금 5. 모든 계좌 조회 6. 종료 선택: 3 === 입금 === 계좌번호: ACC001 입금액: 50000 입금이 완료되었습니다! 현재 잔액: 150,000원 선택: 4 === 출금 === 계좌번호: ACC001 출금액: 30000 출금이 완료되었습니다! 현재 잔액: 120,000원 선택: 4 === 출금 === 계좌번호: ACC001 출금액: 150000 잔액이 부족합니다! 현재 잔액: 120,000원

💡 구현 힌트

  • 입출금 시 잔액 확인 로직을 구현해보세요
  • 음수 입력 등 잘못된 입력을 처리해보세요

🎖️ 3단계: 고급 기능

고급 요구사항

  1. 거래 내역 관리

    • 모든 거래(입금, 출금)를 기록
    • 거래 시간 포함 (datetime 모듈 활용)
    • 계좌별 거래 내역 조회
  2. 계좌 간 이체

    • 보내는 계좌에서 출금
    • 받는 계좌에서 입금
    • 이체 내역 기록
  3. 통계 기능

    • 총 고객 수
    • 총 예치금액
    • 평균 계좌 잔액

💻 출력 예시

=== 미니 은행 시스템 === 1. 계좌 개설 2. 잔액 조회 3. 입금 4. 출금 5. 모든 계좌 조회 6. 거래 내역 7. 계좌 이체 8. 은행 통계 9. 종료 선택: 6 === 거래 내역 조회 === 계좌번호: ACC001 [2024-03-15 14:30:25] 계좌개설: +100,000원 (잔액: 100,000원) [2024-03-15 14:32:10] 입금: +50,000원 (잔액: 150,000원) [2024-03-15 14:35:45] 출금: -30,000원 (잔액: 120,000원) 선택: 7 === 계좌 이체 === 보내는 계좌: ACC001 받는 계좌: ACC002 이체 금액: 20000 이체가 완료되었습니다! ACC001 잔액: 100,000원 ACC002 잔액: 70,000원 선택: 8 === 은행 통계 === 총 고객 수: 2명 총 예치금액: 170,000원 평균 계좌 잔액: 85,000원

💡 구현 힌트

  • 거래 내역을 저장할 데이터 구조를 생각해보세요
  • import datetime 을 활용해 현재 시간을 기록해보세요
  • 이체 시 두 계좌의 잔액을 동시에 업데이트해야 합니다

🌟 도전 기능 (선택사항)

추가 아이디어

  1. 비밀번호 기능

    • 계좌 개설 시 비밀번호 설정
    • 거래 시 비밀번호 확인
  2. 계좌 유형

    • 일반 계좌, 적금 계좌 구분
    • 적금 계좌는 출금 제한
  3. 거래 한도

    • 일일 출금 한도 설정
    • 한도 초과 시 거래 제한
  4. 데이터 저장

    • 프로그램 종료 시 파일에 저장
    • 다시 실행할 때 데이터 불러오기

✅ 구현 체크리스트

✅ 미니 은행 시스템 구현 체크리스트

💭 개발자 노트

프로젝트를 통해 배우는 것

  • 함수형 프로그래밍: 각 기능을 독립적인 함수로 구현
  • 데이터 구조 설계: 효율적인 데이터 저장 방법
  • 사용자 경험: 직관적이고 편리한 인터페이스
  • 예외 처리: 다양한 오류 상황에 대한 대응

실제 은행 시스템과의 차이점

  • 실제 은행은 데이터베이스를 사용합니다
  • 보안과 암호화가 훨씬 중요합니다
  • 네트워크 통신과 동시성 처리가 필요합니다
  • 법적 규제와 감사 시스템이 있습니다

하지만 이 프로젝트를 통해 은행 시스템의 핵심 개념을 이해할 수 있습니다!

🚀 다음 단계

이 프로젝트를 완성했다면:

  1. 코드 리팩토링: 더 깔끔하고 효율적으로 개선
  2. 새로운 기능: 자신만의 창의적인 기능 추가
  3. 실제 프로젝트: 더 복잡한 프로그램에 도전

프로그래밍은 끝없는 학습의 여정입니다. 계속 도전하세요! 💪

Last updated on