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;
}

 

posted @ 2023-05-09 21:05  石铁生  阅读(8)  评论(0编辑  收藏  举报