小言_互联网的博客

求教:settle函数中accumulation=0的作用

313人阅读  评论(0)

//面向个人银行账户管理程序—综合实例
//一个活期储蓄账户包括:
//信息(账号id,余额balance,年利率rate)
//操作(显示账号信息show,存款deposit,取款withdraw,结算利息settle)

//难点:利息的计算 日均余额(变)×年利率/365=日利 :每日利息
//(求和符号)∑(日均余额×日均余额持续天数)x每日利息=总利息

#include “stdafx.h”
#include
#include
using namespace std;

class SavingsAccount//定义一个类 活期储蓄账户
{
private:
int id;//账号
double balance;//余额
double rate;//年利率
int lastdate;//上次变更余额的时期
double accumulation;//余额按日累加之和

//私有成员函数
//记录一笔账,date为日期,amount为金额
void record(int date, double amount);//修改余额并自动输出
//获得指定日期为止的存款金额按日累积值
double accumulate(int date)
	{return accumulation + balance*(date - lastdate);}

public:
//构造函数
SavingsAccount(int date, int id,double rate);
int getid(){ return id; }
double getbalance(){ return balance; }
double getrate(){ return rate; }
//存入现金
void deposit(int date,double amount);
//取出现金
void withdraw(int date, double amount);
//结算利息,每年1月1日调用一次
void settle(int date);
//显示账号信息
void show();
};
//SavingsAccount类相关成员函数的实现
SavingsAccount::SavingsAccount(int date, int id, double rate)
:id(id), balance(), rate(rate), lastdate(date), accumulation(0)
{
cout << date << “\t#” << id << “创建” << endl;
}
//记录一笔账
void SavingsAccount::record(int date, double amount)
{
accumulation = accumulate(date);
lastdate = date;
amount = floor(amount * 100 + 0.5) / 100;//实现保留两位小数
balance += 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”;
else
record(date, -amount);
}
//计算利息
void SavingsAccount::settle(int date)
{
double interest = accumulate(date)*rate / 365; //计算利息
if (interest != 0)
record(date, interest);
accumulation = 0;//不明白这个accumulation 作用
}
//显示账号信息
void SavingsAccount::show()
{
cout <<id << “\t余额#” << balance << endl;
}

int main()
{
//建立几个账户
SavingsAccount sa0(1, 21325302, 0.015);//第一天 账号 年利率
SavingsAccount sa1(1, 58320212, 0.015);
//几笔账目
sa0.deposit(5, 5000);
sa1.deposit(25, 10000);
sa0.deposit(45, 5500);
sa1.withdraw(60, 4000);
//开户后第90天到了银行的计息日,结算所有账户的年息
sa0.settle(90);
sa1.settle(90);
//输出各个账户信息
sa0.show(); cout << endl;
sa1.show(); cout << endl;
return 0;
}


转载:https://blog.csdn.net/qq_45695069/article/details/102007368
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场