#include<iostream>
#include<cmath>
using namespace std;
class SavingsAccount{
private:
int id; //賬戶
double balance; //余額
double rate; //存款年利率
double accumulation; // 余額按日累加和
int lastdate; //上次計算年利的時間
double accumulate(int date)
const {
return accumulation+balance*(date-lastdate);
}
void record(int date,double amount); //記錄一筆賬,date日期,amount金額
public:
SavingsAccount(int date,int id,int rate);
int getid() {return id;}
double getbalance() {return balance;}
double getrate() {return rate;}
void show(); //顯示賬戶資訊
void deposit(int date,double amount); //顯示存款金額
void withdraw(int date,double amount); //顯示取款金額
void settle(int date); //結算年息
};
//SavingsAmount類相關成員函式的實作
SavingsAccount::SavingsAccount(int date,int id,int rate)
{
id=id;
balance=0;
rate=rate;
lastdate=date;
accumulation=0;
cout<<date<<"\t#"<<id<<" is created"<<endl;
}
void SavingsAccount::record(int date,double amount) //記賬
{
accumulation=accumulate(date);
lastdate=date;
amount=floor(amount*100+0.5)/100; //標紅的這一段,amount=floor(amount*100+0.5)/100; 是什么意思啊
balance+=amount;
cout<<"Error:not enough money"<<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::settle(int date) //結算利息
{
double interest=accumulate(date)*rate/365;
//年利的計算= 賬戶余額按日累加和/365天*年利率
if(interest!=0)
record(date,interest);
accumulation=0; //每計算一次后,將累加和清零,從當前余額開始進行累加
}
void SavingsAccount::show() //顯示賬戶資訊
{
cout<<"#"<<id<<"\t"<<balance<<endl;
}
int main()
{
//定義物件,建立幾個賬戶
SavingsAccount save1(1,12138,0.015);
SavingsAccount save2(1,12148,0.015);
//呼叫函式成員,幾筆賬目
save1.deposit(5,5000);
save2.deposit(25,10000);
save1.deposit(45,5500);
save2.withdraw(60,4000);
//計算年息
save1.settle(90);
save2.settle(90);
//輸出各個賬戶資訊
save1.show();
save2.show();
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/283238.html
標籤:C++ 語言
下一篇:C++的解構式的繼承
