🏦 미니 은행 시스템
📋 프로젝트 개요
함수와 딕셔너리를 활용하여 실제 은행과 같은 기본 기능을 구현해보세요. 계좌 관리, 입출금, 거래 내역 등을 체계적으로 관리할 수 있는 시스템을 만들어봅시다!
🎯 학습 목표
- 함수를 활용한 코드 모듈화
- 딕셔너리를 활용한 데이터 관리
- 리스트를 활용한 거래 내역 관리
- 사용자 입력 검증 및 예외 처리
🚀 1단계: 기본 기능
핵심 요구사항
-
계좌 개설 기능
- 계좌번호 자동 생성 (예: ACC001, ACC002…)
- 고객 이름과 초기 입금액 입력
- 계좌 정보를 딕셔너리로 저장
-
잔액 조회 기능
- 계좌번호로 잔액 확인
- 존재하지 않는 계좌번호 처리
💻 출력 예시
=== 미니 은행 시스템 ===
1. 계좌 개설
2. 잔액 조회
3. 종료
선택: 1
=== 계좌 개설 ===
고객 이름: 김철수
초기 입금액: 100000
계좌가 성공적으로 개설되었습니다!
계좌번호: ACC001
고객명: 김철수
잔액: 100,000원
=== 미니 은행 시스템 ===
1. 계좌 개설
2. 잔액 조회
3. 종료
선택: 2
=== 잔액 조회 ===
계좌번호: ACC001
고객명: 김철수
현재 잔액: 100,000원
💡 구현 힌트
- 계좌 정보를 저장할 딕셔너리 구조를 설계해보세요
- 각 기능을 별도의 함수로 구현해보세요
- 계좌번호 생성 방법을 생각해보세요
🔥 2단계: 입출금 기능
추가 요구사항
-
입금 기능
- 계좌번호와 입금액 입력
- 잔액 업데이트
-
출금 기능
- 계좌번호와 출금액 입력
- 잔액 부족 시 처리
- 잔액 업데이트
-
모든 계좌 조회
- 개설된 모든 계좌 목록 출력
💻 출력 예시
=== 미니 은행 시스템 ===
1. 계좌 개설
2. 잔액 조회
3. 입금
4. 출금
5. 모든 계좌 조회
6. 종료
선택: 3
=== 입금 ===
계좌번호: ACC001
입금액: 50000
입금이 완료되었습니다!
현재 잔액: 150,000원
선택: 4
=== 출금 ===
계좌번호: ACC001
출금액: 30000
출금이 완료되었습니다!
현재 잔액: 120,000원
선택: 4
=== 출금 ===
계좌번호: ACC001
출금액: 150000
잔액이 부족합니다!
현재 잔액: 120,000원
💡 구현 힌트
- 입출금 시 잔액 확인 로직을 구현해보세요
- 음수 입력 등 잘못된 입력을 처리해보세요
🎖️ 3단계: 고급 기능
고급 요구사항
-
거래 내역 관리
- 모든 거래(입금, 출금)를 기록
- 거래 시간 포함 (datetime 모듈 활용)
- 계좌별 거래 내역 조회
-
계좌 간 이체
- 보내는 계좌에서 출금
- 받는 계좌에서 입금
- 이체 내역 기록
-
통계 기능
- 총 고객 수
- 총 예치금액
- 평균 계좌 잔액
💻 출력 예시
=== 미니 은행 시스템 ===
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
을 활용해 현재 시간을 기록해보세요- 이체 시 두 계좌의 잔액을 동시에 업데이트해야 합니다
🌟 도전 기능 (선택사항)
추가 아이디어
-
비밀번호 기능
- 계좌 개설 시 비밀번호 설정
- 거래 시 비밀번호 확인
-
계좌 유형
- 일반 계좌, 적금 계좌 구분
- 적금 계좌는 출금 제한
-
거래 한도
- 일일 출금 한도 설정
- 한도 초과 시 거래 제한
-
데이터 저장
- 프로그램 종료 시 파일에 저장
- 다시 실행할 때 데이터 불러오기
✅ 구현 체크리스트
✅ 미니 은행 시스템 구현 체크리스트
💭 개발자 노트
프로젝트를 통해 배우는 것
- 함수형 프로그래밍: 각 기능을 독립적인 함수로 구현
- 데이터 구조 설계: 효율적인 데이터 저장 방법
- 사용자 경험: 직관적이고 편리한 인터페이스
- 예외 처리: 다양한 오류 상황에 대한 대응
실제 은행 시스템과의 차이점
- 실제 은행은 데이터베이스를 사용합니다
- 보안과 암호화가 훨씬 중요합니다
- 네트워크 통신과 동시성 처리가 필요합니다
- 법적 규제와 감사 시스템이 있습니다
하지만 이 프로젝트를 통해 은행 시스템의 핵심 개념을 이해할 수 있습니다!
🚀 다음 단계
이 프로젝트를 완성했다면:
- 코드 리팩토링: 더 깔끔하고 효율적으로 개선
- 새로운 기능: 자신만의 창의적인 기능 추가
- 실제 프로젝트: 더 복잡한 프로그램에 도전
프로그래밍은 끝없는 학습의 여정입니다. 계속 도전하세요! 💪
Last updated on