1. 程式人生 > >銀行賬戶管理系統(一)

銀行賬戶管理系統(一)

一個活期儲蓄帳戶包括賬號(id),餘額(balance),年利率(rate)等資訊,還包括顯示賬戶資訊(show),存款(desposit),取款(withdraw),結算利息(settle)等操作。為此設計一個savingaccount類,將id,balance,rate,作為其成員資料,將show,deposit,withdraw,settle,均作為其成員函式。無論是存款取款還是結算利息,都需要修改當前的餘額並且將餘額的變動輸出,這些公共操作由私有成員函式record來執行。

根據所學知識程式碼持續完善中……

#include <iostream>
#include<cmath>
using namespace std;
class SavingAccount{
private:
    int id;             //賬戶
    double balance;       //餘額
    double rate;          //年利率
    int lastdate;         //餘額上一次變化的日期
    double accumulation;  //餘額按日累加之和
    int accumulate(int date); //獲得到指定日期位置的存款累計值
    double getbalance(){return balance;}
    double getrate(){return rate;}
    void record(int date,double amount);    //記賬
public:
    SavingAccount(int date,int id,double rate);    //建構函式
    void deposit(int date,double amount);   //存款
    void withdrawl(int date,double amount);       //取款
    void show();   //顯示餘額
    void settle(int date);  //結算利息,每年一月一日呼叫此函式
};
//類的成員函式的實現
SavingAccount::SavingAccount(int date,int id,double rate):id(id),balance(0),rate(rate),lastdate(date),accumulation(0){
    cout<<"#"<<id<<"is created"<<endl;
}
int SavingAccount::accumulate(int date){
return accumulation+balance*(date-lastdate);
}
void SavingAccount::record(int date,double amount){
    lastdate=date;
    amount=floor(100*amount+0.5)/100;   //floor為向下取整函式,此處可以做到保留兩位小數
    balance+=amount;
    cout<<date<<"\t#"<<id<<"\t"<<amount<<"\t"<<balance<<endl;
}
void SavingAccount::deposit(int date,double amount){
    record(date,amount);
}
void SavingAccount::withdrawl(int date, double amount){
    if(amount>balance)
        cout<<"not enough money"<<endl;
    else
        record(date,-amount);
}
void SavingAccount::show(){
    cout<<"#"<<id<<"\tBalance"<<balance<<endl;
}
void SavingAccount::settle(int date){
    double interest=accumulate(date)*rate/365; //計算年息
    if(interest!=0)
        record(date,interest);
    accumulation=0;
}

int main()
{
    SavingAccount s1(0,11111,0.015);
    SavingAccount s2(1,22222,0.015);
    s1.deposit(5,5000);
    s2.deposit(25,10000);
    s1.deposit(45,5500);
    s2.withdrawl(60,11000);
    s1.settle(90);
    s2.settle(90);
    s1.show();
    s2.show();
 
    return 0;
}