プロジェクトの仕上げ:メインループ
CoddyのCジャーニー「Object Oriented Programming」セクションの一部 — レッスン 27/61。
チャレンジ
簡単おめでとうございます。完全な銀行口座ライブラリが完成しました!次は役割を交代しましょう。ライブラリの作成者ではなく、ライブラリの利用者になります。あなたのタスクは、Accountモジュールを実際に動かしてみるメインプログラムを作成することです。
これは、顧客が銀行に入って一連の取引を行うようなものだと考えてください。口座を作成し、預け入れや引き出しを行い、その都度残高を確認し、最後に用が済んだら口座を閉じます。
3つのファイルを扱います:
account.h: 不透明なAccount型と、すべての関数プロトタイプ(create_account、destroy_account、deposit、withdraw、get_balance)を含む完全なヘッダーファイルです。account.c:idとbalanceを含む隠蔽された構造体と、このプロジェクトを通じて構築したすべての関数の実装を含む完全な実装ファイルです。main.c: ここがあなたの腕の見せ所です!現実的な一連の取引を通じて、銀行口座の全ライフサイクルを示すプログラムを記述してください。
5つの入力を受け取ります:口座ID(整数)、最初の預け入れ、引き出し、2回目の預け入れ、そしてオーバードラフトの試行(残高不足で失敗するはずの引き出し)です。
メインプログラムでは、この口座のライフストーリーを次のように記述してください:
- 口座を作成し、それを通知する
- 開始時の残高を表示する
- 最初の預け入れを行い、新しい残高を表示する
- 資金をいくらか引き出し、更新された残高を表示する
- 別の預け入れを行い、残高を表示する
- 残高を超える引き出しを試みる(これは失敗するはずです)
- 最終的な残高を表示する(失敗した引き出しの後は変更されていないはずです)
- 口座を閉じる
出力を次の形式で表示してください:
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 を使用して小数点以下2桁でフォーマットしてください。引き出しに失敗した時のメッセージは、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: 1回目の入金を行い、"Deposited <amount>" と新しい残高を出力する
// TODO: 資金を引き出し、"Withdrew <amount>" と更新された残高を出力する
// TODO: 2回目の入金を行い、"Deposited <amount>" と新しい残高を出力する
// TODO: 当座貸越(overdraft)による引き出しを試行する。失敗した場合は "Withdrawal failed: insufficient funds" と出力する
// TODO: 最終残高を出力する
// TODO: "Account <id> closed" と出力し、アカウントを破棄する
return 0;
}