用c++并且是纯虚函数和抽象类写出一个银行管理系统,添加基本账户类型包括:普通活期账户、定期存款账户、理财账户、信用卡账户,计算并输出各种账户不同利率的收益情况,以及统计分析功能
时间: 2024-06-09 09:05:45 浏览: 90
以下是一个简单的银行管理系统的示例代码,其中包括了基本账户类型的定义和计算收益的功能。这个示例使用了纯虚函数和抽象类来定义基本账户类型,以便在统一的接口下管理不同类型的账户。
```c++
#include <iostream>
#include <vector>
#include <string>
using namespace std;
// 抽象基类 Account
class Account {
public:
virtual double calculateInterest() = 0; // 纯虚函数,需要在子类中实现
virtual void display() = 0; // 纯虚函数,需要在子类中实现
virtual string getType() = 0; // 纯虚函数,需要在子类中实现
virtual ~Account() {} // 虚析构函数
};
// 活期账户类
class CurrentAccount : public Account {
private:
double balance; // 账户余额
double interestRate; // 利率
public:
CurrentAccount(double b, double i) : balance(b), interestRate(i) {}
double calculateInterest() override {
return balance * interestRate;
}
void display() override {
cout << "账户类型: " << getType() << endl;
cout << "账户余额: " << balance << endl;
cout << "利率: " << interestRate << endl;
cout << "收益: " << calculateInterest() << endl;
}
string getType() override {
return "普通活期账户";
}
};
// 定期存款账户类
class FixedDepositAccount : public Account {
private:
double balance; // 账户余额
double interestRate; // 利率
int term; // 存款期限(月)
public:
FixedDepositAccount(double b, double i, int t) : balance(b), interestRate(i), term(t) {}
double calculateInterest() override {
return balance * interestRate * term / 12;
}
void display() override {
cout << "账户类型: " << getType() << endl;
cout << "账户余额: " << balance << endl;
cout << "利率: " << interestRate << endl;
cout << "存款期限: " << term << "个月" << endl;
cout << "收益: " << calculateInterest() << endl;
}
string getType() override {
return "定期存款账户";
}
};
// 理财账户类
class WealthManagementAccount : public Account {
private:
double balance; // 账户余额
double interestRate; // 利率
int term; // 理财期限(月)
public:
WealthManagementAccount(double b, double i, int t) : balance(b), interestRate(i), term(t) {}
double calculateInterest() override {
return balance * interestRate * term / 12;
}
void display() override {
cout << "账户类型: " << getType() << endl;
cout << "账户余额: " << balance << endl;
cout << "利率: " << interestRate << endl;
cout << "理财期限: " << term << "个月" << endl;
cout << "收益: " << calculateInterest() << endl;
}
string getType() override {
return "理财账户";
}
};
// 信用卡账户类
class CreditCardAccount : public Account {
private:
double balance; // 账户余额
double interestRate; // 利率
public:
CreditCardAccount(double b, double i) : balance(b), interestRate(i) {}
double calculateInterest() override {
return balance * interestRate;
}
void display() override {
cout << "账户类型: " << getType() << endl;
cout << "账户余额: " << balance << endl;
cout << "利率: " << interestRate << endl;
cout << "欠款利息: " << calculateInterest() << endl;
}
string getType() override {
return "信用卡账户";
}
};
// 统计分析类
class Statistics {
private:
vector<Account*> accounts; // 存储所有账户
public:
void addAccount(Account* account) {
accounts.push_back(account);
}
void displayAllAccounts() {
cout << "所有账户信息:" << endl;
for (auto account : accounts) {
account->display();
cout << endl;
}
}
void displayTotalInterest() {
double totalInterest = 0;
for (auto account : accounts) {
totalInterest += account->calculateInterest();
}
cout << "所有账户的总收益为:" << totalInterest << endl;
}
void displayInterestByType(string type) {
double totalInterest = 0;
for (auto account : accounts) {
if (account->getType() == type) {
totalInterest += account->calculateInterest();
}
}
cout << "所有" << type << "账户的总收益为:" << totalInterest << endl;
}
};
int main() {
// 创建不同类型的账户
Account* account1 = new CurrentAccount(10000, 0.01);
Account* account2 = new FixedDepositAccount(50000, 0.02, 12);
Account* account3 = new WealthManagementAccount(100000, 0.03, 6);
Account* account4 = new CreditCardAccount(-5000, 0.05);
// 创建统计分析对象
Statistics stats;
stats.addAccount(account1);
stats.addAccount(account2);
stats.addAccount(account3);
stats.addAccount(account4);
// 显示所有账户信息
stats.displayAllAccounts();
// 显示所有账户的总收益
stats.displayTotalInterest();
// 显示理财账户的总收益
stats.displayInterestByType("理财账户");
// 释放内存
delete account1;
delete account2;
delete account3;
delete account4;
return 0;
}
```
这个示例中,我们首先定义了一个抽象基类 Account,其中包含了三个纯虚函数:calculateInterest、display 和 getType。这些函数需要在子类中实现,以便在统一的接口下管理不同类型的账户。
接下来,我们定义了四个子类:CurrentAccount、FixedDepositAccount、WealthManagementAccount 和 CreditCardAccount。这些子类分别代表了不同的账户类型,并实现了在父类中定义的纯虚函数。
最后,我们定义了一个统计分析类 Statistics,其中包含了一个存储所有账户的 vector。这个类提供了一些统计分析的功能,如显示所有账户信息、计算所有账户的总收益、计算某种类型账户的总收益等。
在 main 函数中,我们创建了不同类型的账户对象,并将它们添加到统计分析对象中。然后,我们调用了统计分析对象的一些函数来显示账户信息和计算收益。最后,我们释放了创建的内存。
这个示例只是一个简单的银行管理系统,实际的系统可能会更复杂。但是,这个示例提供了一个基本的框架,可以方便地扩展和修改。
阅读全文