在(1)的基础上进行改进
1:增加一个静态成员函数total,记录账户总金额和静态成员函数getTotal
2对不需要改变的对象进行const修饰
3多文件实现
account。h文件
cpp
#ifndef _ACCOUNT_
#define _ACCOUNT_
class SavingAccount {
private:
int id;
double rate;
double balance;
int lastdate;
double accumulation;
static double total;
void record(int date, double amount);
double accumulate(int date)const {
return accumulation + balance * (date - lastdate);
}
public:
SavingAccount(int date, int id, double rate);
int getid()const { return id; }
double getbalance()const { return balance; }
double getrate()const { return rate; }
static double getTotal() { return total; }
void deposit(int date, double amount);
void withdraw(int date, double amount);
void settle(int date);
void show()const;
};
#endif
account。cpp文件
cpp
#include"account.h"
#include<cmath>
#include<iostream>
using namespace std;
double SavingAccount::total = 0;
SavingAccount::SavingAccount(int date, int id, double rate) :id(id), balance(0), rate(rate), lastdate(date)
, accumulation(0) {
cout << date << "\t#" << id << " " << endl;
}
void SavingAccount::record(int date, double amount) {
accumulation = accumulate(date);
lastdate = date;
amount = floor(amount * 100 + 0.5) / 100;
balance += amount;
total += amount;
cout << date << "\t#" << id << "\t" << amount << "\t" << balance << endl;
}
void SavingAccount::deposit(int date, double amount) {
record(date, amount);
}
void SavingAccount::withdraw(int date, double amount) {
if (amount > getbalance())
cout << "余额不足" << endl;
else
record(date, -amount);
}
void SavingAccount::settle(int date) {
double interest = accumulate(date) * rate / 365;
if (interest != 0)
record(date, interest);
accumulation = 0;
}
void SavingAccount::show()const {
cout << "#" << id << "\tbalance:" << balance;
}
1.cpp
cpp
#include"account.h"
#include<iostream>
using namespace std;
int main() {
SavingAccount s1(1, 21325302, 0.0015);
SavingAccount s2(1, 21325303, 0.0015);
s1.deposit(5, 5000);
s2.deposit(25, 10000);
s1.deposit(45, 5500);
s2.withdraw(60, 4000);
s1.settle(90);
s2.settle(90);
s1.show();
s2.show();
}