//运行环境: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;
}
//运行目的: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;
}