存款逻辑
本课属于 Coddy C 学习旅程的“面向对象编程”单元。第 24 课,共 61 课。
挑战
简单现在为你的 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 在线编译器