5月9日打卡
例4-10
题目描述:
个人银行账户管理。
#include<iostream> #include<cmath> using namespace std; class SavingsAccount {//储蓄账户类 private: int 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 settle(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::settle(int date) { double interest = accumulate(date) * rate / 365; if (interest != 0) record(date, interest); accumulation = 0; } void SavingsAccount::show() { cout << "#" << id << "\tBalance:" << balance; } 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.settle(90); sa1.settle(90); sa0.show(); cout << endl; sa1.show(); cout << endl; return 0; }