Menu
CoddyTech

存款逻辑

本课属于 Coddy C 学习旅程的“面向对象编程”单元。第 24 课,共 61 课。

challenge icon

挑战

简单

现在为你的 Account 模块添加第一个真正的银行操作:存款!存款函数需要足够智能:它只能接受正数金额,以保护你的账户免受无效交易的影响。

在现有的 Bank Account 项目基础上,你将为模块添加存款功能。存款函数必须先验证输入,再修改隐藏的余额。这就是封装保护数据完整性的方式。

你将使用 3 个文件:

  • account.h:扩展现有头文件,添加一个新的函数原型:deposit。这个函数应接收一个 Account 指针和一个 double 类型的金额,并返回一个 int(成功时为 1,金额无效时为 0)。保留现有的 create_account 和 destroy_account 声明。
  • account.c:在现有的构造函数和析构函数旁实现 deposit 函数。只有金额为正数(大于零)时,存款操作才应成功。如果金额有效,就将金额加到隐藏的余额中,并返回 1。如果金额为零或负数,则返回 0 拒绝存款,且不改变余额。
  • main.c:创建一个账户并执行多次存款操作,以展示存款功能,其中一些操作有效,另一些无效,从而验证你的检查是否正常工作。

你将收到 3 个输入:账户 ID(一个整数)、有效存款金额(一个正数)和无效存款金额(零或负数)。

在主文件中,使用给定的 ID 创建一个账户并打印确认信息。然后先尝试存入无效金额:打印存款是否成功,并说明余额应保持不变。接着存入有效金额:打印成功结果。最后销毁账户并确认已完成清理。

按以下格式打印输出:

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

其中,1001 是账户 ID,-50.00 是无效金额,200.00 是有效金额。使用 %.2f 将所有金额格式化为两位小数。

你的存款函数就像一道把关程序。它能确保只有有效交易才能修改账户的隐藏余额。虽然你现在还看不到余额(我们会在后续课程中添加一个 getter),但你可以放心,无效存款会被正确拒绝。

亲手试试

#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;
}

面向对象编程中的所有课

自己练习: C 在线编译器