P134 例4-9 个人银行账户管理程序(一)

//运行环境:VS2017
//运行目的:P134 例4-9 个人银行账户管理程序
#include<iostream>
#include<cmath>
#include<cstdlib>
using namespace std;


const unsigned YEAR_DAYS = 365;


class SavingsAccount {
private:
int id;//账号id
double balance;//余额
double rate;//存款的年利率
int lastDate;//上次变更余额的时期
double accumulation;//余额按日累加之和


void record(int date, double amount);
double accumulate(int date) const {
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);
void settlle(int date);
void show();
};


SavingsAccount::SavingsAccount(int date, int id, double 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;//向下取整
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" << endl;
else record(date, -amount);
}


void SavingsAccount::settlle(int date) {
double interest = accumulate(date)*rate / YEAR_DAYS;
if (interest != 0) record(date, interest);
accumulation = 0;
}


void SavingsAccount::show() {
cout << "#" << id << "\tbalance" << 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);


sa0.settlle(90);
sa1.settlle(90);


sa0.show();
sa1.show();


system("pause");
return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_35689096/article/details/80285461