C++课本第四章例题
个人银行账户管理程序
1 #include<iostream> 2 #include <cmath> 3 using namespace std; 4 class SavingsAccount{ //储蓄账户类 5 private: 6 int id; //账号 7 double balance; //余额 8 double rate; //存款的年利率 9 int lastDate; //上次变更余额的时期 10 double accumulation; //余额按日累加之和 11 //记录一笔账,date为日期,amount为金额,desc为说明 12 void record(int date,double amount); 13 //获得到指定日期为止的存款金额按日累计值 14 double accumulate(int date)const{ 15 return accumulation+balance*(date-lastDate); 16 } 17 public: 18 //构造函数 19 SavingsAccount(int date,int id,double rate); 20 int getId(){ 21 return id; 22 } 23 double getBalance(){ 24 return balance; 25 } 26 double getRate(){ 27 return rate; 28 } 29 void deposit(int date,double amount); //存入现金 30 void withdraw(int date,double amount); //取出现金 31 //结算利息,每年一月一日调用一次该函数 32 void settle(int date); 33 //显示账户信息 34 void shouw(); 35 }; 36 //SavingsAccount类相关成员函数的实现 37 SavingsAccount::SavingsAccount(int date,int id,double rate):id(id),balance(0),rate(rate),lastDate(date),accumulation(0){ 38 cout<<date<<"\t#"<<id<<"is created"<<endl; 39 } 40 void SavingsAccount::record(int date,double amount){ 41 accumulation=accumulate(date); 42 lastDate=date; 43 amount=floor(amount*100+0.5)/100; 44 balance+=amount; 45 cout<<date<<"\t#"<<id<<"\t"<<amount<<"\t"<<balance<<endl; 46 } 47 void SavingsAccount::deposit(int date,double amount){ 48 record(date,amount); 49 } 50 void SavingsAccount::withdraw(int date,double amount){ 51 if(amount>getBalance()) 52 cout<<"error:not enough money"<<endl; 53 else 54 record(date,-amount); 55 } 56 void SavingsAccount::settle(int date){ 57 double interest=accumulate(date)*rate/365; //计算年息 58 if(interest!=0) 59 record(date,interest); 60 accumulation=0; 61 } 62 void SavingsAccount::shouw(){ 63 cout<<"#"<<id<<"\tBalance: "<<balance<<endl; 64 } 65 int main() 66 { 67 //建立几个账户 68 SavingsAccount sa0(1,21325302,0.015); 69 SavingsAccount sa1(1,58320212,0.015); 70 //几笔账目 71 sa0.deposit(5,5000); 72 sa1.deposit(25,10000); 73 sa0.deposit(45,5500); 74 sa1.withdraw(60,4000); 75 //开户后第九十天到了银行的计息日,结算所有账户的年息 76 sa0.settle(90); 77 sa1.settle(90); 78 //输出各个账户的信息 79 sa0.shouw(); 80 cout<<endl; 81 sa1.shouw(); 82 cout<<endl; 83 return 0; 84 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?