题目

一个人可以有好几个活期储蓄账户,一个活期账户包括id(账号)、balance(余额 )、rate(年利率),还包括show(显示账户信息)、deposit(存钱)、withdraw(取钱)、settle(结算利息)等操作。故设计一个类SavingsAccount将上述属性以及行为封装在其中。无论是存钱,取钱还是结算利息。都需要修改当前余额并且将余额的变动输出,设计一个私有成员函数record,由它完成。

分析

利息计算有点难。由于是活期余额会不断的变化,因此不能用alance*rate来算,可以通过将一年当中每天的余额累积起来在除以一年的总天数,得到一个日均余额,再乘以年利率。因此用私有数据lastDate来存储上一次余额变动的日期、私有属accumulation来存储上次计算利息以后到最近一次余额变动时按日累加的值、成员函数accumulate来计算到指定日期的账户余额按日累积值。

程序

#include <iostream>
#include <cmath>
using namespace std;
class SavingsAccount //储蓄账户类
{private:int id; //账号double balance; //余额double rate; //存款中的年利率int lastDate; //上次变更余额的时间double accumulation; //余额按日累计之和void record(int date,double amount);//记录一笔账,date为日期,amount为余额,dasc为说明
double accumulate(int date) const //获得到指定日期为止存款金额按日累计值{return accumulation+balance*(date-lastDate);}
public://构造函数SavingsAccount(int date,int id, double rate); int getId(){return id;}double getBalance(){return balance;}double getRate(){return rate;}//存入现金void deposit(int date,double amount); //取出现金void withdraw(int date,double amount); //结算利息,每年1月1日调用一次该函数void settle(int date); void show(); //显示账户信息};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;elserecord(date,-amount);}void SavingsAccount::settle(int date)
{//计算年息double interest=accumulate(date)*rate/365; if(interest!=0)record(date,interest);accumulation=0;}void SavingsAccount::show()
{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;}

结果

C++书本综合实例(一)个人银行账户管理相关推荐

  1. SAP银行账户管理(Bank Account Management)

    1. 基本概念 & 系统配置 1.1 BANK(银行): SAP系统中的BANK对应现实中的实体银行,例如"中国工商银行","中国农业银行"等.BANK ...

  2. C++ 个人银行账户管理 综合实例62.10_date

    在网上找了很多例子,代码都不是循序渐进的,自己一点一点按章节把代码按照老师的要求都码好了,一点一点进步吧,因为一开始就去看别人整篇的代码实在很难,带给需要帮助的人,这是第六章第二个综合实例,加入Dat ...

  3. c语言实现银行账户管理(超详细)

    目录 前言 一,需求定义 二,具体框架 1,Manager(管理员).h头文件和BankCard(银行卡).h头文件 (1)Manager.h (2)BankCard.h 2,文件框架 三,函数封装 ...

  4. 南京邮电大学Java软件开发(混合式)实验2:银行账户管理——面向对象

    一. Java 类与对象的基本知识: 1. 类的定义 2. 方法重载 3. 构造方法 4. static 关键字 5. this 关键字 6. 包与import 语句 7. 访问权限 8. 对象的使用 ...

  5. 银行账户管理项目(纯java)

    银行管理项目 温馨提示:如果你是java大佬,好了,你可以去干别的事情去了.本项目适合java初学者,对大佬没有什么帮助. 文章目录 银行管理项目 前言 一.项目说明 二.项目展示 1.主菜单 2.用 ...

  6. java 银行账户 透支,Java学习——银行账户模拟

    以下实例是一个银行账户的模拟,通过银行卡的号码完成识别,可以进行存钱和取钱的操作. InsufficientFundsException.java 文件代码: // 文件名InsufficientFu ...

  7. 个人银行账户管理程序

    这个程序是一个银行账户管理的程序,是用C++来实现程序功能的,该程序包含六个文件,其中有date.h头文件 是日期类的头文件,date.cpp是日期类的实现文件,accumulator.h是按日将数值 ...

  8. mysql 账户管理_Mysql账户管理原理与实现方法详解

    本文实例讲述了Mysql账户管理原理与实现方法.分享给大家供大家参考,具体如下: 账户管理 在生产环境下操作数据库时,绝对不可以使用root账户连接,而是创建特定的账户,授予这个账户特定的操作权限,然 ...

  9. python 通登录银行_Python3 适合初学者学习的银行账户登录系统实例

    一.所用知识点: 1. for循环与if判断的结合 2. %s占位符的使用 3. 辅助标志的使用(标志位) 4. break的使用 二.代码示例: ''' 银行登录系统 ''' uname = &qu ...

  10. python 例子 银行_Python3实现简单的银行账户登录系统实例

    下面小编就为大家带来一篇Python3 适合初学者学习的银行账户登录系统实例.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 一.所用知识点: 1. for循环与if判断 ...

最新文章

  1. 微服务网关从零搭建——(七)更改存储方式为oracle
  2. 区块链只能炒币?5G通信、医疗健康、食品安全,采购管理这些领域都已用上国产自研长安链...
  3. TCP/IP详解--第十五章
  4. .Net Core添加分布式Session
  5. 一次旁站信息泄露的dedecms站点渗透
  6. apache.camel_Apache Camel 2.19发布–新增功能
  7. 名企面试官精讲典型编程题之C#篇
  8. linux计算机网络一般需要配置哪几部分,计算机网络技术 知识及应用第4章Linux操作系统和常用服务器配置.ppt...
  9. IDEA 个人私藏插件
  10. 使用WangEditor编辑器使用图片上传功能
  11. firefox 邮箱分类过滤
  12. 产品经理学项目管理04:企业管理金字塔
  13. 《林林数据结构笔记》线段树求数组区间和,单点更新,区间更新+lazy思想
  14. C语言之动态内存管理
  15. GBase 8c 迁移工具 DMT 简述
  16. Linux使用scp在服务器之间远程传输复制文件和文件夹
  17. 苹果自带浏览器服务器无响应,苹果safari浏览器打开网页,因为服务器已停止响应...
  18. python之拉格朗日插值算法完成计算
  19. 氧化锌@聚丙烯腈(ZnO@PAN)静电纺丝纳米纤维膜材料|金属有机框架材料ZIF-8@聚丙烯腈(ZIF-8@PAN)纳米纤维膜材料
  20. 在传统连连看游戏的基础上设计出新游戏增量式的创新(结对编程)(2011212026徐颖 2011212023 裴乐)

热门文章

  1. 1138 Postorder Traversal
  2. php数组倒插,phpComasy v0.7.9
  3. 云栖社区Markdown指南【2018版】
  4. CSAPP:第四章——处理器体系结构(上)
  5. PERMISSION_UNFINISHED
  6. IC-二进制, 自然数, 有符号数
  7. 从集合角度看二项式系数之和的计算
  8. 宝付国际严格落实政策要求,助力解决跨境电商交易审核难点
  9. zotero文献管理|chartero 插件 绝对是有一款让你离不开的插件,可视化你的文献阅读记录,提取PDF图片方便阅读
  10. RGB颜色值转换为十进制