小项目之个人银行账户管理程序(2)

xiaoxiao2021-02-28  46

本次新增了总金额输出,其他输出结果与(1)完全一样。新增静态数据成员total,在account.h中的类定义给出了它的声明,在account.cpp中给出了它的定义(为它分配空间),并将其初始值设为0。SavingsAccount::record函数中,每当当前账户的balance修改时,total也随之 进行修改 。由于deposit,withdraw和settle各函数  都是通过record来修改余额的,total随时等于所有账户的总和。并且对account.h使用条件编译指令,可以避免SavingsAccount类被重复包含到文件中而导致编译错误。

//account.h #ifndef _ACCOUNT_H_ #define _ACCOUNT_H_ class SavingsAccount//储蓄账户类 { private: int id;//账号 double balance;//余额 double rate;//存款年利率 int lastdate;//上次变更余额的日期 double accumulation;//余额按日累加之和 static double total;//所有账户的总金额 void record(int date,double amount);//记录一笔账,date为日期,amount为金额 double accumulate(int date)const{return accumulation+balance*(date-lastdate);}// //获得到指定日期为止的存款金额按日累计值 public: SavingsAccount(int date,int id,double rate); int getID()const{return id;} double getBalance()const{return balance;} double getRate()const{return rate;} static double getTotal(){return total;} void deposit(int date,double amount);//存入现金 void withdraw(int date,double amount);//取出现金 //结算利息,每年1月1日调用一次 void setttle(int date); //显示账户信息 void show(); }; #endif //account.cpp #include"account.h" #include<cmath> #include<iostream> using namespace std; double SavingsAccount::total=0; / SavingsAccount::SavingsAccount(int date,int id,double rate):id(id),balance(0),rate(rate),lastdate(date),accumulation(0) { cout<<date<<"\t#"<<id<<"is creatde"<<endl; } void SavingsAccount::record(int date,double amount) { accumulation=accumulate(date); lastdate=date; amount=floor(amount*100+0.5)/100;//高斯函数(向下取整数),用来得到不大于一个数的最大整数,声明在头文件cmath中 balance+=amount; total+=amount; cout<<date<<"\t#"<<id<<"\t"<<amount<<"\t"<<balance<<endl; } void SavingsAccount::deposit(int date,double amount) { record(date,amount); } void SavingsAccount::withdraw(int date,double amount) { if(amount > getBalance()) cout<<"Error:not enough money"<<endl; else record(date,-amount); } void SavingsAccount::setttle(int date) { double interest=accumulate(date)*rate/365;//计算年息 if(interest!=0) record(date,interest); accumulation =0; } void SavingsAccount::show() { cout<<"#"<<id<<"\tBalance :"<<balance; } //main.cpp #include"account.h" #include<iostream> using namespace std; int main() { //建立几个账户 SavingsAccount s0(1,21325302,0.015); SavingsAccount s1(1,58320212,0.015); //几笔账目 s0.deposit(5,5000); s1.deposit(25,10000); s0.deposit(45,5500); s1.withdraw(60,4000); //开户90天到了银行的计息日,结算所有账户的年息 s0.setttle(90); s1.setttle(90); //输出各位账户信息 s0.show(); cout<<endl; s1.show(); cout<<endl; cout<<"Total: "<<SavingsAccount::getTotal()<<endl; return 0; }
转载请注明原文地址: https://www.6miu.com/read-2613972.html

最新回复(0)