Menu
CoddyTech

Xử lý nạp tiền

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 24 trên 61.

challenge icon

Thử thách

Dễ

Đã đến lúc thêm thao tác ngân hàng thực tế đầu tiên vào module Account của bạn: nạp tiền! Hàm nạp tiền cần hoạt động thông minh: chỉ chấp nhận số tiền dương, giúp bảo vệ tài khoản khỏi các giao dịch không hợp lệ.

Dựa trên dự án Bank Account hiện có, bạn sẽ mở rộng module bằng chức năng nạp tiền. Hàm nạp tiền phải xác thực đầu vào trước khi sửa đổi số dư bị ẩn. Đây là tính đóng gói đang bảo vệ tính toàn vẹn của dữ liệu.

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

  • account.h: Mở rộng tệp tiêu đề hiện có bằng cách thêm nguyên mẫu hàm mới: deposit. Hàm này nhận một con trỏ Account và một lượng tiền kiểu double, rồi trả về một int (1 nếu thành công, 0 nếu số tiền không hợp lệ). Giữ lại các khai báo hiện có cho create_account và destroy_account.
  • account.c: Triển khai hàm deposit bên cạnh hàm khởi tạo và hàm hủy hiện có. Chỉ nạp tiền thành công nếu số tiền dương (lớn hơn không). Nếu hợp lệ, hãy cộng số tiền đó vào số dư bị ẩn và trả về 1. Nếu số tiền bằng không hoặc âm, hãy từ chối bằng cách trả về 0 mà không thay đổi số dư.
  • main.c: Minh họa chức năng nạp tiền bằng cách tạo tài khoản và thực hiện nhiều thao tác nạp tiền, một số hợp lệ, một số không hợp lệ, để cho thấy phần xác thực hoạt động chính xác.

Bạn sẽ nhận ba đầu vào: ID tài khoản (một số nguyên), số tiền nạp hợp lệ (một số dương) và số tiền nạp không hợp lệ (bằng không hoặc âm).

Trong tệp chính, hãy tạo tài khoản với ID đã cho và in thông báo xác nhận. Sau đó, thử nạp số tiền không hợp lệ trước: in kết quả thành công hay thất bại và lưu ý rằng số dư sẽ không thay đổi. Tiếp theo, nạp số tiền hợp lệ và in kết quả thành công. Cuối cùng, hủy tài khoản và xác nhận đã dọn dẹp.

In đầu ra theo định dạng này:

Account 1001 created
Deposit -50.00: 0
Deposit 200.00: 1
Account destroyed

Trong đó, 1001 là ID tài khoản, -50.00 là số tiền không hợp lệ và 200.00 là số tiền hợp lệ. Định dạng tất cả số tiền với hai chữ số thập phân bằng %.2f.

Hàm nạp tiền của bạn đóng vai trò như người gác cổng. Hàm đảm bảo chỉ các giao dịch hợp lệ mới có thể sửa đổi số dư bị ẩn của tài khoản. Dù bạn chưa thể xem số dư (mình sẽ thêm hàm lấy giá trị trong bài học sau), bạn có thể tin rằng các khoản nạp không hợp lệ được từ chối đúng cách.

Tự làm thử

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

int main() {
    int account_id;
    scanf("%d", &account_id);
    
    Account* account = create_account(account_id);
    printf("Account %d created\n", account_id);
    
    destroy_account(account);
    printf("Account destroyed\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