1. 程式人生 > >【C++ 第四章 個人銀行賬戶管理程序案例】

【C++ 第四章 個人銀行賬戶管理程序案例】

with count acc cpp name c++ money 建立 esc

【第四章】 個人銀行賬戶管理程序 案例實現

#include<iostream>
#include<cmath>
using namespace std;
class SavingsAccount //儲蓄賬戶類

{

private:

	int id; //賬號

	double balance; //余額

	double rate; //存款的年利率

	int lastDate; //上次變更余額的日期

	double accumulation; //余額按日累加之和

	static double total; //所有賬戶的總金額

						 //記錄一筆賬,date為日期,desc為說明

	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() const { return id; }

	double getBalance() const { return balance; }

	double getRate() const { return rate; }

	

	void deposit(int date, double amount); //存入現金

	void withdraw(int date, double amount); //取出現金

											//結算利息,每年1月1日調用一次該函數

	void settle(int date);

	//顯示賬戶信息

	void show() const;

};

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() const

{

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

	//開戶後第90天到了銀行的計息日,結算所有賬戶的年息

	sa0.settle(90);

	sa1.settle(90);

	//輸出各個賬戶信息

	sa0.show(); cout << endl;

	sa1.show(); cout << endl;



	return 0;

}

  

ps:

配套教材:鄭莉《c++程序設計語言》

課程:學堂在線《c++程序設計語言》

【C++ 第四章 個人銀行賬戶管理程序案例】