c++多态银行管理系统
时间: 2023-07-19 19:26:14 浏览: 188
好的,我可以为您提供一些关于C++多态银行管理系统的信息。
一个基于多态的银行管理系统可以由一个基类BankAccount和两个派生类CheckingAccount和SavingsAccount组成。BankAccount类将包含所有银行账户的通用属性和方法,CheckingAccount和SavingsAccount则将包含特定于每种账户类型的属性和方法。
以下是一个简单的示例,演示如何使用多态来实现银行账户管理系统:
```c++
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class BankAccount {
protected:
string owner;
double balance;
public:
BankAccount(string owner, double balance) {
this->owner = owner;
this->balance = balance;
}
virtual bool deposit(double amount) {
balance += amount;
return true;
}
virtual bool withdraw(double amount) {
if (balance >= amount) {
balance -= amount;
return true;
}
else {
return false;
}
}
virtual void display() {
cout << "Account owner: " << owner << endl;
cout << "Account balance: " << balance << endl;
}
};
class CheckingAccount : public BankAccount {
private:
double overdraftLimit;
public:
CheckingAccount(string owner, double balance, double overdraftLimit) : BankAccount(owner, balance) {
this->overdraftLimit = overdraftLimit;
}
bool withdraw(double amount) {
if (balance + overdraftLimit >= amount) {
balance -= amount;
return true;
}
else {
return false;
}
}
void display() {
BankAccount::display();
cout << "Overdraft limit: " << overdraftLimit << endl;
}
};
class SavingsAccount : public BankAccount {
private:
double interestRate;
public:
SavingsAccount(string owner, double balance, double interestRate) : BankAccount(owner, balance) {
this->interestRate = interestRate;
}
bool withdraw(double amount) {
if (balance >= amount) {
balance -= amount;
return true;
}
else {
return false;
}
}
void addInterest() {
balance += balance * interestRate;
}
void display() {
BankAccount::display();
cout << "Interest rate: " << interestRate << endl;
}
};
int main() {
vector<BankAccount*> accounts;
accounts.push_back(new CheckingAccount("Alice", 1000, 500));
accounts.push_back(new SavingsAccount("Bob", 2000, 0.05));
for (int i = 0; i < accounts.size(); i++) {
accounts[i]->display();
}
accounts[0]->withdraw(1500);
accounts[0]->display();
accounts[1]->addInterest();
accounts[1]->display();
return 0;
}
```
在这个示例中,BankAccount类包含了所有银行账户的通用属性和方法,包括所有账户都具有的owner和balance属性,以及deposit、withdraw和display方法。CheckingAccount和SavingsAccount类则分别包含了特定于每种账户类型的属性和方法,例如CheckingAccount类中的overdraftLimit属性和withdraw方法,以及SavingsAccount类中的interestRate属性和addInterest方法。
在主函数中,我们创建了一个BankAccount类型的向量,将两个不同类型的账户对象推入其中,并循环遍历该向量,调用每个账户对象的display方法。接着,我们尝试从第一个账户中取出1500元,然后再次调用display方法来显示更新后的余额。最后,我们调用第二个账户的addInterest方法来添加利息,并再次调用display方法来显示更新后的余额。
当我们运行这个程序时,我们会看到每个账户的信息被正确地显示出来,我们也成功地从第一个账户中取出了1500元,并添加了第二个账户的利息。
这就是一个简单的C++多态银行管理系统的实现。希望这个示例能够帮助您了解如何使用多态来实现银行账户管理系统。
阅读全文