프로젝트 마무리: 메인 루프
Coddy C 여정의 Object Oriented Programming 섹션에 포함된 레슨 — 61개 중 27번째.
챌린지
쉬움축하합니다—완전한 은행 계좌(Bank Account) 라이브러리를 구축하셨습니다! 이제 역할을 바꿀 시간입니다. 라이브러리 제작자가 아닌 라이브러리 사용자가 되어 보세요. 여러분의 과제는 Account 모듈을 실제로 가동해 보는 메인 프로그램을 작성하는 것입니다.
이것을 고객이 은행에 걸어 들어와 일련의 거래를 수행하는 것이라고 생각하십시오. 계좌를 생성하고, 입금과 출금을 하고, 중간중간 잔액을 확인하고, 마지막으로 업무가 끝나면 계좌를 닫게 됩니다.
세 개의 파일로 작업하게 됩니다:
account.h: 불투명한Account타입과 모든 함수 프로토타입(create_account,destroy_account,deposit,withdraw,get_balance)이 포함된 완성된 헤더 파일입니다.account.c:id와balance를 포함하는 숨겨진 구조체와 이 프로젝트를 통해 구축한 모든 함수 구현이 포함된 완성된 구현 파일입니다.main.c: 여러분의 실력을 발휘할 곳입니다! 현실적인 거래 시퀀스를 통해 은행 계좌의 전체 라이프사이클을 보여주는 프로그램을 작성하십시오.
다섯 개의 입력을 받게 됩니다: 계좌 ID(정수), 첫 번째 입금액, 출금액, 두 번째 입금액, 그리고 초과 인출 시도액(잔액 부족으로 인해 실패해야 하는 출금액)입니다.
메인 프로그램은 이 계좌의 일대기를 다음과 같이 보여주어야 합니다:
- 계좌를 생성하고 이를 알립니다.
- 시작 잔액을 표시합니다.
- 첫 번째 입금을 하고 새로운 잔액을 표시합니다.
- 자금을 일부 출금하고 업데이트된 잔액을 표시합니다.
- 또 다른 입금을 하고 잔액을 표시합니다.
- 잔액을 초과하는 출금을 시도합니다—이것은 실패해야 합니다.
- 최종 잔액을 표시합니다 (실패한 출금 이후이므로 변경되지 않아야 함).
- 계좌를 닫습니다.
출력은 다음 형식으로 인쇄하십시오:
Account 2001 created
Balance: 0.00
Deposited 1000.00
Balance: 1000.00
Withdrew 250.00
Balance: 750.00
Deposited 500.00
Balance: 1250.00
Withdrawal failed: insufficient funds
Balance: 1250.00
Account 2001 closed여기서 2001은 계좌 ID이며, 금액은 입력값을 반영합니다. 모든 통화 수치는 %.2f를 사용하여 소수점 이하 두 자리까지 형식을 맞추십시오. 출금 실패 메시지는 withdraw가 0을 반환할 때 출력되어야 합니다.
이 마지막 단계는 캡슐화에 대해 배운 모든 것을 증명합니다—메인 프로그램은 숨겨진 내부 데이터에 직접 접근하지 않고, 오직 공개 인터페이스를 통해서만 Account와 상호작용합니다.
직접 해보기
#include <stdio.h>
#include "account.h"
int main() {
// TODO: 입력으로부터 account_id, deposit1, withdraw_amount, deposit2, overdraft를 읽어오기
// TODO: 계좌를 생성하고 "Account <id> created" 출력하기
// TODO: 시작 잔액 출력하기
// TODO: 첫 번째 입금을 수행하고, "Deposited <amount>"와 새로운 잔액 출력하기
// TODO: 자금을 인출하고, "Withdrew <amount>"와 업데이트된 잔액 출력하기
// TODO: 두 번째 입금을 수행하고, "Deposited <amount>"와 새로운 잔액 출력하기
// TODO: 마이너스 통장 인출을 시도하고, 실패할 경우 "Withdrawal failed: insufficient funds" 출력하기
// TODO: 최종 잔액 출력하기
// TODO: "Account <id> closed"를 출력하고 계좌를 삭제하기
return 0;
}