銀行賬戶管理系統(一)
阿新 • • 發佈:2019-01-22
一個活期儲蓄帳戶包括賬號(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; }