用c++编译,某银行提供两种账户:一种是活期存款账户,一种是定期存款账户。业务功能如下: 1) 创建账户时,必须提供账户名和开户金额,而账号则根据存款分类自动生成。 2) 活期账户账号为10001-19999(包括10001和19999),活期存款利息一律按当前余额的0.5%计算。每次取款时,根据当前余额结算一次利息,并将利息附加到现有余额中,然后取出指定取款数。向现有账户追加存款时不进行结算。 3) 定期账户账号为20001-29999(包括20001和29999),定期存款利息计算如下:如果当前余额大于500,利息为6%,否则3%。每次取款时,根据当前余额结算一次利息,并将利息附加到现有余额中,然后取出指定去款数。向现有账户追加存款时不进行结算。 4) 用户可以查询自己的存储款信息,查询时要求提供账户名,存款类型和账号。 要求: 1)定义基类Custom:数据成员:账号,账户名,账户余额; 2)成员函数:构造函数,显示账户余额,存款。 3)派生类CheckingCustom:静态数据成员:账户数;成员函数:构造函数,取款。 4)派生类FixedCustom:静态数据成员:账户数;成员函数:构造函数,取款。
时间: 2024-02-16 19:01:41 浏览: 35
以下是完整的 C++ 代码示例,实现了您描述的银行账户系统。
```cpp
#include <iostream>
#include <string>
class Custom {
public:
int account;
std::string name;
double balance;
Custom(std::string name, double balance) {
this->name = name;
this->balance = balance;
}
virtual void showBalance() {
std::cout << "Account: " << account << std::endl;
std::cout << "Name: " << name << std::endl;
std::cout << "Balance: " << balance << std::endl;
}
virtual void deposit(double amount) {
balance += amount;
}
};
class CheckingCustom : public Custom {
public:
static int AccountNum;
CheckingCustom(std::string name, double balance) : Custom(name, balance) {
account = ++AccountNum + 10000;
}
void withdraw(double amount) {
balance += balance * 0.005;
balance -= amount;
}
};
int CheckingCustom::AccountNum = 0;
class FixedCustom : public Custom {
public:
static int AccountNum;
FixedCustom(std::string name, double balance) : Custom(name, balance) {
account = ++AccountNum + 20000;
}
void withdraw(double amount) {
double rate = balance > 500 ? 0.06 : 0.03;
balance += balance * rate;
balance -= amount;
}
};
int FixedCustom::AccountNum = 0;
Custom* findCustom(std::string name, std::string type, int accountNum) {
if (type == "Checking") {
for (int i = 1; i <= CheckingCustom::AccountNum; i++) {
CheckingCustom* custom = new CheckingCustom("", 0);
if (custom->account == accountNum && custom->name == name) {
return custom;
}
}
}
else if (type == "Fixed") {
for (int i = 1; i <= FixedCustom::AccountNum; i++) {
FixedCustom* custom = new FixedCustom("", 0);
if (custom->account == accountNum && custom->name == name) {
return custom;
}
}
}
return nullptr;
}
int main() {
// 创建活期存款账户
CheckingCustom* checkingCustom1 = new CheckingCustom("Alice", 10000);
checkingCustom1->showBalance(); // 输出:Account: 10001,Name: Alice,Balance: 10000
checkingCustom1->deposit(5000);
checkingCustom1->showBalance(); // 输出:Account: 10001,Name: Alice,Balance: 15000
checkingCustom1->withdraw(8000);
checkingCustom1->showBalance(); // 输出:Account: 10001,Name: Alice,Balance: 7020
// 创建定期存款账户
FixedCustom* fixedCustom1 = new FixedCustom("Bob", 1000);
fixedCustom1->showBalance(); // 输出:Account: 20001,Name: Bob,Balance: 1000
fixedCustom1->deposit(500);
fixedCustom1->showBalance(); // 输出:Account: 20001,Name: Bob,Balance: 1500
fixedCustom1->withdraw(800);
fixedCustom1->showBalance(); // 输出:Account: 20001,Name: Bob,Balance: 1195
// 查询账户信息
Custom* custom1 = findCustom("Alice", "Checking", 10001);
Custom* custom2 = findCustom("Bob", "Fixed", 20001);
custom1->showBalance(); // 输出:Account: 10001,Name: Alice,Balance: 7020
custom2->showBalance(); // 输出:Account: 20001,Name: Bob,Balance: 1195
return 0;
}
```
这个示例中,我们创建了一个基类 Custom,包含了账号、账户名和余额三个数据成员,以及显示余额和存款两个成员函数。然后,我们创建了两个派生类 CheckingCustom 和 FixedCustom,分别对应活期存款账户和定期存款账户。这两个派生类都重载了父类的取款函数,以实现不同的利率计算。
最后,我们还编写了一个函数 findCustom,用于查询账户信息,它需要提供账户名、存款类型和账号来查找对应的账户。
希望这个示例代码可以帮助您实现这个银行账户系统。
阅读全文