个人银行账户

m0_56463370 2021-05-07 09:08:32
#include<iostream>
#include<cmath>
using namespace std;
class SavingsAccount{
private:
int id; //账户
double balance; //余额
double rate; //存款年利率
double accumulation; // 余额按日累加和
int lastdate; //上次计算年利的时间
double accumulate(int date)
const {
return accumulation+balance*(date-lastdate);
}
void record(int date,double amount); //记录一笔账,date日期,amount金额

public:
SavingsAccount(int date,int id,int rate);
int getid() {return id;}
double getbalance() {return balance;}
double getrate() {return rate;}
void show(); //显示账户信息
void deposit(int date,double amount); //显示存款金额
void withdraw(int date,double amount); //显示取款金额
void settle(int date); //结算年息
};
//SavingsAmount类相关成员函数的实现
SavingsAccount::SavingsAccount(int date,int id,int 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; //标红的这一段,amount=floor(amount*100+0.5)/100; 是什么意思啊
balance+=amount;
cout<<"Error:not enough money"<<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;
//年利的计算= 账户余额按日累加和/365天*年利率
if(interest!=0)
record(date,interest);
accumulation=0; //每计算一次后,将累加和清零,从当前余额开始进行累加
}
void SavingsAccount::show() //显示账户信息
{
cout<<"#"<<id<<"\t"<<balance<<endl;
}
int main()
{
//定义对象,建立几个账户
SavingsAccount save1(1,12138,0.015);
SavingsAccount save2(1,12148,0.015);
//调用函数成员,几笔账目
save1.deposit(5,5000);
save2.deposit(25,10000);
save1.deposit(45,5500);
save2.withdraw(60,4000);
//计算年息
save1.settle(90);
save2.settle(90);
//输出各个账户信息
save1.show();
save2.show();
return 0;
}
...全文
75 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
qzjhjxj 2021-05-08
  • 打赏
  • 举报
回复
Math类中提供了三个与取整有关的方法:ceil,floor,round,这些方法的作用于它们的英文名称的含义相对应 1、ceil的英文意义是天花板,该方法就表示向上取整,Math.ceil(11.3)的结果为12,Math.ceil(-11.6)的结果为-11; 2、floor的英文是地板,该方法就表示向下取整,Math.floor(11.6)的结果是11,Math.floor(-11.4)的结果-12; 3、round方法,表示“四舍五入”,算法为Math.floor(x+0.5),即将原来的数字加上0.5后再向下取整,所以, Math.round(11.5)的结果是12,Math.round(-11.5)的结果为-11.
源代码大师 2021-05-08
  • 打赏
  • 举报
回复
希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10581430.html

64,282

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧