Menu
CoddyTech

Hoàn thiện dự án: vòng lặp chính

Thuộc phần Lập trình hướng đối tượng trong hành trình C của Coddy. Bài học 27 trên 61.

challenge icon

Thử thách

Dễ

Chúc mừng: bạn đã xây dựng xong thư viện Tài khoản ngân hàng! Giờ là lúc đổi vai. Thay vì làm người tạo thư viện, bạn sẽ trở thành người dùng thư viện. Nhiệm vụ của bạn là viết chương trình chính để thử nghiệm mô-đun Account.

Hãy hình dung một khách hàng bước vào ngân hàng và thực hiện một loạt giao dịch. Bạn sẽ tạo tài khoản, gửi và rút tiền, kiểm tra số dư trong quá trình đó, rồi đóng tài khoản khi hoàn tất.

Bạn sẽ làm việc với ba tệp:

  • account.h: Tệp tiêu đề hoàn chỉnh với kiểu Account không hiển thị cấu trúc bên trong và tất cả nguyên mẫu hàm: create_account, destroy_account, deposit, withdraw và get_balance.
  • account.c: Phần triển khai hoàn chỉnh với cấu trúc ẩn chứa id và balance, cùng tất cả phần triển khai hàm bạn đã xây dựng trong suốt dự án này.
  • main.c: Đây là lúc bạn thể hiện khả năng! Hãy viết chương trình minh họa toàn bộ vòng đời của một tài khoản ngân hàng thông qua một chuỗi giao dịch thực tế.

Bạn sẽ nhận năm đầu vào: mã tài khoản (một số nguyên), khoản gửi đầu tiên, khoản rút tiền, khoản gửi thứ hai và lần rút vượt số dư (một khoản rút sẽ thất bại do không đủ tiền).

Chương trình chính của bạn sẽ kể lại quá trình hoạt động của tài khoản:

  1. Tạo tài khoản và thông báo
  2. Hiển thị số dư ban đầu
  3. Gửi khoản tiền đầu tiên và hiển thị số dư mới
  4. Rút một khoản tiền và hiển thị số dư đã cập nhật
  5. Gửi thêm một khoản tiền và hiển thị số dư
  6. Thử rút một khoản vượt quá số dư. Thao tác này sẽ thất bại
  7. Hiển thị số dư cuối cùng, không thay đổi sau lần rút thất bại
  8. Đóng tài khoản

In kết quả theo định dạng sau:

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

Trong đó 2001 là mã tài khoản, còn các khoản tiền lấy theo đầu vào của bạn. Định dạng tất cả giá trị tiền tệ với hai chữ số thập phân bằng %.2f. Thông báo rút tiền thất bại sẽ được in khi withdraw trả về 0.

Bài cuối này minh họa mọi điều bạn đã học về tính đóng gói. Chương trình chính chỉ tương tác với Account thông qua giao diện công khai, không bao giờ truy cập trực tiếp vào dữ liệu nội bộ bị ẩn.

Tự làm thử

#include <stdio.h>
#include "account.h"

int main() {
    // TODO: Đọc account_id, deposit1, withdraw_amount, deposit2 và overdraft từ đầu vào

    // TODO: Tạo tài khoản và in ra "Account <id> created"

    // TODO: In ra số dư ban đầu

    // TODO: Nạp tiền lần đầu, in ra "Deposited <amount>" và số dư mới

    // TODO: Rút tiền, in ra "Withdrew <amount>" và số dư sau khi rút

    // TODO: Nạp tiền lần thứ hai, in ra "Deposited <amount>" và số dư mới

    // TODO: Thử rút tiền vượt số dư; nếu không thành công, in ra "Withdrawal failed: insufficient funds"
    // TODO: In ra số dư cuối cùng

    // TODO: In ra "Account <id> closed" và hủy tài khoản

    return 0;
}

Tất cả bài học trong Lập trình hướng đối tượng

Tự luyện tập: Trình biên dịch C online