c++银行账户管理程序4(最终版)
在C++银行账户管理程序3的基础上做如下改进:
在基类Account中添加deposit、withdraw、settle这3个函数并将其声明为纯虚函数;将show函数声明为虚函数,通过基类的指针可以调用派生类的相应函数。将计算两个日期相差天数的distance函数改为“—”运算符重载函数。
main.cpp
#include<iostream>
#include<string.h>
#include"date.h"
#include"account.h"
using namespace std;
double Account::total = 0;
int main()
{
Date d01(2008,11,5),d02(2008,12,5),d11(2008,11,25),d12(2008,12,20),d2(2009,1,1),dc1(2008,11,15),dc2(2008,12,1);
Account *ptr; //定义基类指针
cout<<"--------------------------------"<<"1001"<<"------------------------------"<<endl;
SavingsAccount s0(2008,11,1,1001,0,0.015);
ptr=&s0; //基类指针调用
ptr->deposit(d01,5000);
ptr->deposit(d02,5500);
ptr->settle(d2);
d2.show();
ptr->show();
cout<<"------------------------------------------------------------------"<<endl;
cout<<"--------------------------------"<<"1002"<<"------------------------------"<<endl;
SavingsAccount s1(2008,11,1,1002,0,0.015);
ptr=&s1;
ptr->deposit(d11,10000);
ptr->withdraw(d12,4000);
ptr->settle(d2);
d2.show();
ptr->show();
cout<<"------------------------------------------------------------------"<<endl;
cout<<"--------------------------------"<<"1003"<<"------------------------------"<<endl;
CreditAccount c0(2008,11,1,1003,0,10000,0.0005,50);
ptr=&c0;
ptr->deposit(dc1,2000);
ptr->withdraw(dc2,2000);
ptr->withdraw(dc2,-c0.getDebt(dc2)); //结算利息
ptr->settle(d2);
d2.show();
ptr->show();
cout<<"------------------------------------------------------------------"<<endl;
d2.show();
ptr->getTotal();
cout<<"------------------------------------------------------------------"<<endl;