第三次作业

个人第三次作业

利用P177 例5-11个人银行账户管理程序来对
1.常成员函数
2.静态数据成员
3.C++多文件结构
进行说明
首先编写一个个人账户的头文件,使文件分离,让主函数代码更加简洁

copy
#ifndef _ACCOUNT_H_ #define _ACCOUNT_H_ class SavingsAccount { private: int id;//个人ID double balance;//个人余额 double rate;//年利率 int LastDate;//上次变余额日期 double accumulation;//余额按日累加和 static double total;//所有账户的总金额,具有全局生存周期的静态数据成员,便于累加所有账户金额。不用静态常数据成员是因为增加一个人,所有账户总金额就要修改,而静态常数据成员的值不能修改 void record(int date, double amount);//存钱记账,如xx date存入 xx amount double accumulate(int date)const//常成员函数,不会更改目的对象数据成员的值,当调用常函数,这个对象就被视为常对象,所以它不能更新目的对象的数据成员 { return accumulation + balance * (date - LastDate); }//得到指定日期为止金额按日累加值,方便后面算利息 public: SavingsAccount(int date, int id, double rate);//构造函数,个人信息 int GetId()const { return id; }//得到个人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 amonut);//取钱 void settle(int date);//年结算 void show()const; }; #endif // !_ACCOUNT_H_

接下来编写头文件中的函数的实现

copy
#include"account.h"//引用头文件 #include"cmath" #include"iostream" using namespace std; double SavingsAccount::total = 0;//静态数据成员在类外进行初始化(因为它不属于任何对象),分配空间,让所有对象共同维护一个Total 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;//余额变动 total += 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 monry" << 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; }

然后就是主函数啦

copy
#include"account.h" #include"iostream" using namespace std; int main() { SavingsAccount sa0(1,1325301, 0.015); SavingsAccount sa1(1, 58320212, 0.015); sa0.deposit(5, 5000);//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; cout << "Total:" << SavingsAccount::GetTotal() << endl;//静态成员函数的输出可以通过类名,也可以通过对象名 return 0; }

结果如下

posted @   Simple5960  阅读(239)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
🚀