프로젝트 마무리: 메인 루프
Coddy C 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨. 61개 중 27번째.
챌린지
쉬움축하합니다. 완전한 Bank Account 라이브러리를 구축했습니다! 이제 역할을 바꿀 시간입니다. 라이브러리 제작자가 되는 대신, 이제 라이브러리 사용자가 됩니다. 여러분의 과제는 Account 모듈을 실제로 사용해 보는 main 프로그램을 작성하는 것입니다.
은행에 들어가 일련의 거래를 수행하는 고객을 떠올려 보세요. 계좌를 만들고, 입금과 출금을 진행하고, 그 과정에서 잔액을 확인한 다음, 모든 작업이 끝나면 마지막으로 계좌를 닫게 됩니다.
다음 세 파일을 사용합니다.
account.h: 불투명한Account타입과 모든 함수 프로토타입인create_account,destroy_account,deposit,withdraw,get_balance가 포함된 완성된 헤더 파일입니다.account.c:id와balance를 포함하는 숨겨진 구조체와, 이 프로젝트를 진행하며 작성한 모든 함수 구현이 포함된 완성된 구현 파일입니다.main.c: 여러분의 실력을 발휘할 곳입니다! 현실적인 거래 순서를 통해 은행 계좌의 전체 생명 주기를 보여 주는 프로그램을 작성하세요.
다섯 개의 입력을 받습니다. account ID(정수), first deposit, withdrawal, second deposit, 그리고 attempted overdraft(잔액 부족으로 실패해야 하는 출금)입니다.
main 프로그램은 이 계좌의 생애를 다음과 같이 보여 주어야 합니다.
- 계좌를 만들고 생성 사실을 알립니다.
- starting 잔액을 표시합니다.
- 첫 번째 입금을 진행하고 새로운 잔액을 표시합니다.
- 자금을 일부 출금하고 updated 잔액을 표시합니다.
- 다시 입금하고 잔액을 표시합니다.
- 잔액을 초과하는 출금을 시도합니다. 이 작업은 실패해야 합니다.
- final 잔액을 표시합니다(실패한 출금 이후에도 변경되지 않음).
- 계좌를 닫습니다.
다음 형식으로 출력을 표시하세요.
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은 account ID이며, 금액은 입력값을 반영합니다. 모든 금액은 %.2f를 사용하여 소수점 이하 두 자리로 형식화하세요. withdraw가 0을 반환할 때 실패한 출금 메시지를 표시해야 합니다.
이 마지막 과제는 캡슐화에 대해 지금까지 배운 모든 내용을 보여 줍니다. main 프로그램은 공개 인터페이스를 통해서만 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: Attempt the overdraft withdrawal; if it fails, print "Withdrawal failed: insufficient funds"
// TODO: 최종 잔액 출력
// TODO: "Account <id> closed"를 출력하고 계정 파기
return 0;
}
객체 지향 프로그래밍의 모든 레슨
직접 연습해 보세요: 온라인 C 컴파일러