银行账户(静态成员与友元函数)

这是一个关于银行账户类的编程问题,需要实现包括静态成员和友元函数的功能。要求定义一个Account类,包含友元函数Update用于计算并更新账户的结息余额。在main函数中,要操作Account类型的数组,进行存款、取款、显示账户信息以及调用友元函数进行结息操作。输入包括利率、账户数量以及每个账户的详细信息,输出则展示每个账户的详细状态和所有账户的总余额。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

银行账户(静态成员与友元函数)

题目描述

银行账户类的基本描述如下:

要求如下:

实现该银行账户类

为账户类Account增加一个友元函数,实现账户结息,要求输出结息后的余额(结息余额=账户余额+账户余额*利率)。友元函数声明形式为 friend void Update(Account& a);

在main函数中,设计一个Account类型的数组,为数组中对象初始化,并调用成员函数测试存款、取款、显示等函数,再调用友元函数测试进行结息。

大家可以根据实际需求在类内添加其他方法,也可以修改成员函数的参数设置

输入

第1行:利率
第2行:账户数目n
第3行开始,每行依次输入一个账户的“账号”、“姓名”、“余额”、存款数,取款数。

输出

第1行开始,每行输出一个账户的相关信息,包括账号、姓名、存款后的余额、存款后结息余额、取款后余额。

好的,我知道了,不会泄漏您的信息。以下是银行账户类的设计,实现了封装、继承、友元、静态成员变量和函数: ```cpp #include <iostream> using namespace std; class Account { // 基类 protected: string name; int balance; int number; public: void deposit(int amount) { balance += amount; } virtual void withdraw(int amount) = 0; // 纯虚函数 virtual void display() { cout << "Number: " << number << endl; cout << "Name: " << name << endl; cout << "Balance: " << balance << endl; } friend class ATM; // 将 ATM 类设为友元 }; class CheckingAccount : public Account { // 储蓄账户类,继承自 Account 类 private: static double fee; public: CheckingAccount(string n, int b) { name = n; balance = b; number = rand() % 10000; } void withdraw(int amount) { if (balance >= amount + fee) { balance -= (amount + fee); } else { cout << "Insufficient balance!" << endl; } } void display() { Account::display(); cout << "Checking Account Fee: " << fee << endl; } static void setFee(double f) { fee = f; } // 静态函数 }; double CheckingAccount::fee = 5.0; // 静态成员变量的初始化 class SavingsAccount : public Account { // 存款账户类,继承自 Account 类 private: int rate; public: SavingsAccount(string n, int b, int r) { name = n; balance = b; rate = r; number = rand() % 10000; } void withdraw(int amount) { if (balance >= amount) { balance -= amount; } else { cout << "Insufficient balance!" << endl; } } void display() { Account::display(); cout << "Savings Account Rate: " << rate << "%" << endl; } static void compoundInterest(SavingsAccount& sa) { // 静态函数 double interest = sa.balance * sa.rate / 100.0; sa.balance += interest; } }; class ATM { // 友元类 public: void withdraw(Account& acc, int amount) { acc.withdraw(amount); } }; int main() { CheckingAccount::setFee(10.0); // 使用静态函数设置所有储蓄账户的手续费 Account* acc[3]; acc[0] = new CheckingAccount("Tom", 2000); acc[1] = new SavingsAccount("Jerry", 3000, 5); acc[2] = new CheckingAccount("Alice", 1000); for (int i = 0; i < 3; i++) { acc[i]->display(); cout << endl; } SavingsAccount::compoundInterest(*(SavingsAccount*)acc[1]); // 强制类型转换,调用静态函数计算利息 cout << "After compound interest: " << endl; for (int i = 0; i < 3; i++) { acc[i]->display(); cout << endl; } ATM atm; atm.withdraw(*acc[0], 500); // 取款 atm.withdraw(*acc[1], 2000); // 取款 cout << "After withdraw: " << endl; for (int i = 0; i < 3; i++) { acc[i]->display(); cout << endl; } return 0; } ``` 以上代码演示了一个银行账户管理的例子,基类为 Account,其中包括了存款和取款操作,及展示账户信息的 display 函数。储蓄账户类 CheckingAccount 继承自 Account,多加了一个手续费 fee,不足以支付手续费时,取款操作将失败。存款账户类 SavingsAccount 同理,多包括了一个利率 rate。ATM 类用于实现取款操作,需要将 Account 类设为友元,避免取款操作需要知道私有成员的信息。当然,ATM 技术已经很老,这里只是为了演示类的友元。 设计模式上,以上代码主要应用了模板方法模式,封装了储蓄和取款操作,便于扩展新的账户类型。同时,利用了静态成员变量和函数,使得储蓄账户的手续费费率同步控制,利率定时计算。友元类是典型的抽象工厂模式的应用,可以方便地扩展其他银行卡和业务功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值