【第五章】 个人银行账户管理程序  案例实现

//5_11.cpp#include"account.h"#include<iostream>
#include"account.cpp"
using namespace std;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;cout << "Total:" << SavingsAccount::getTotal() << endl;return 0;}

  

 1 // account.cpp : Defines the entry point for the console application.
 2
 3
 4
 5 #ifndef _ACCOUNT_H_
 6
 7 #define _ACCOUNT_H_
 8
 9 class SavingsAccount //储蓄账户类
10
11 {
12
13 private:
14
15     int id; //账号
16
17     double balance; //余额
18
19     double rate; //存款的年利率
20
21     int lastDate; //上次变更余额的日期
22
23     double accumulation; //余额按日累加之和
24
25     static double total; //所有账户的总金额
26
27                          //记录一笔账,date为日期,desc为说明
28
29     void record(int date, double amount);
30
31     //获得到指定日期为止的存款金额按日累积值
32
33     double accumulate(int date) const
34
35     {
36
37         return accumulation + balance*(date - lastDate);
38
39     }
40
41 public:
42
43     //构造函数
44
45     SavingsAccount(int date, int id, double rate);
46
47     int getId() const { return id; }
48
49     double getBalance() const { return balance; }
50
51     double getRate() const { return rate; }
52
53     static double getTotal() { return total; }
54
55     void deposit(int date, double amount); //存入现金
56
57     void withdraw(int date, double amount); //取出现金
58
59                                             //结算利息,每年1月1日调用一次该函数
60
61     void settle(int date);
62
63     //显示账户信息
64
65     void show() const;
66
67 };
68
69 #endif//_ACCOUNT_H_

 1 //account.cpp
 2
 3 #include"account.h"
 4
 5 #include<cmath>
 6
 7 #include<iostream>
 8
 9 using namespace std;
10
11 double SavingsAccount::total = 0;
12
13 //SavingsAccount类相关成员函数的实现
14
15 SavingsAccount::SavingsAccount(int date, int id, double rate)
16
17     : id(id), balance(0), rate(rate), lastDate(date), accumulation(0)
18
19 {
20
21     cout << date << "\t#" << id << " is created" << endl;
22
23 }
24
25 void SavingsAccount::record(int date, double amount)
26
27 {
28
29     accumulation = accumulate(date);
30
31     lastDate = date;
32
33     amount = floor(amount * 100 + 0.5) / 100; //保留小数点后两位
34
35     balance += amount;
36
37     total += amount;
38
39     cout << date << "\t#" << id << "\t" << amount << "\t" << balance << endl;
40
41 }
42
43 void SavingsAccount::deposit(int date, double amount)
44
45 {
46
47     record(date, amount);
48
49 }
50
51 void SavingsAccount::withdraw(int date, double amount)
52
53 {
54
55     if (amount>getBalance())
56
57         cout << "Error:not enough money" << endl;
58
59     else
60
61         record(date, -amount);
62
63 }
64
65 void SavingsAccount::settle(int date)
66
67 {
68
69     double interest = accumulate(date)*rate / 365; //计算年息
70
71     if (interest != 0)
72
73         record(date, interest);
74
75     accumulation = 0;
76
77 }
78
79 void SavingsAccount::show() const
80
81 {
82
83     cout << "#" << id << "\tBalance:" << balance;
84
85 }

ps:

配套教材:郑莉《c++程序设计语言》

课程:学堂在线《c++程序设计语言》

转载于:https://www.cnblogs.com/cswangchen/p/7645085.html

【C++ 第五章 个人银行账户管理程序案例】相关推荐

  1. 【C++ 第七章 个人银行账户管理程序案例】

    [第七章] 个人银行账户管理程序  案例实现 //account.cpp #include"account.h" #include<cmath> #include< ...

  2. 第五章:银行往来及资金清算业务的核算

    第五章:银行往来及资金清算业务的核算 第一节.概述 主要解决央行和商业银行间.各个商业银行间.各个商业银行内部清算业务. 1.银行往来资金清算 同一银行各个部门不同系统之间进行资金往来. 商业银行间经 ...

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

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

  4. shell银行账户管理程序_如何在德国设立银行账户?德国银行卡比较和解析

    什么是Current Account? 通过Expatrio在线办理的自保金账户是一个特殊的,有限制条款的冻结账户,不能作为储蓄和消费账户使用.因此您需要设立一个欧元往来账户(current acco ...

  5. shell银行账户管理程序_德国邮政 Postbank 银行 开户 中文 参考教程

    精 选 众家 » 生活点滴 » 德国邮政 Postbank 银行 开户 中文 参考教程 德国邮政 Postbank 银行 开户 中文 参考教程 2014-07-29 2518 次阅读 德国邮政银行Po ...

  6. 个人银行账户管理程序(C++语言程序设计第4版)

    银行作业分享,欢迎批评指正.到第12章. 文章目录 Array.h accumulator.h date.h account.h account.cpp date.cpp main.cpp comma ...

  7. C++转Java个人银行账户管理程序

    4.9 1.private,public等在Java里面需要单独写在每一个成员前面 java private int id; private void record(int date, double ...

  8. C#实验报告 类与对象的访问性:银行账户存取款、新建账户、查询余额

    实验4 C#程序的流程控制 一.实验目的 (1)理解面向对象的概念,掌握C#定义类和创建对象的方法 (2)区分类的不同数据成员,包括常量.字段和属性的定义方法,并学会控制其访问性 (3)掌握类的方法成 ...

  9. 美国银行账户里的美元(目前大概每月有五六万),有什么更好的办法转到国内的人民币账户上?

    有一个比较好的办法可以解决,只需要注册一个Payoneer派安盈账户,个人就可以注册,免费的.注册成功后,会自动获得一个美元账户,可以将你的美国银行账户里的美元转账到这个账户里面.等到账以后,就可以直 ...

  10. 【MyBatis】第五课 银行账户管理系统网站开发

    概念 本文是根据Jsp以及Servlet课程,结合MyBatis框架的综合运用,开发一个小项目网站,使用MVC+三层架构的项目搭建方式来编写本文文章. 1.数据库的创建 本文使用MySQL数据搭建数据 ...

最新文章

  1. 9.C++弱引用智能指针weak_ptr的用处
  2. 按我的理解string似乎不是字面值类型,但为什么《c++ primer》习题7.55答案说Data类是集合类呢?
  3. JAVA基础_修饰符
  4. 解决在sample文件夹里面写代码,在测试的时候因为virtual原因,make编译报错
  5. python计算时间装饰器_使用python装饰器计算函数运行时间的实例
  6. 基于linux运行指的什么意思,基于Linux的Windows非常有意义
  7. 【C++笔记】函数(笔记)
  8. [笔记] 最大权闭合子图最大流最小割相关笔记
  9. Dijkstra算法,起点到当前点的最短距离及路径 C++实现
  10. linux输入法变成乱码,Linux ibus输入法五笔打字的时候出现乱码框框的解决方案
  11. ae运动模糊插件安装教程_AEPR运动模糊插件(RSMB) REVisionFX ReelSmart Motion Blur Pro v4.2.3...
  12. 网格模型obj文件及其纹理解析
  13. ArcGis 10.2运行提示“未授权”的解决方法
  14. AutoJs学习-悬浮单任务计时器
  15. 白盒测试之测试覆盖率浅析
  16. USB Network Gate SDK Crack,构建USB Network Gate的技术
  17. 【小程序从0到1】网络数据请求——request合法域名|GET|POST|跨域?Ajax?
  18. linux下打开windows txt文件中文乱码问题
  19. 什么是 Web 服务器(server)
  20. 轻松学习JavaScript十一:JavaScript基本类型(包含类型转换)和引用类型

热门文章

  1. WPS个人版如何启用VBA(宏)
  2. 计算机流程图设计教程,流程图制作工具分享,在电脑上就可以画图
  3. C++——队列应用——显示二项式系数
  4. C#压缩图片文件大小
  5. dubbo实战之四:管理控制台dubbo-admin
  6. 新一代消息中间件—Apache Pulsar
  7. DB2活动日志占用过大
  8. Hadoop In Action
  9. 简历求职01:STAR法则
  10. STL ++iter与iter++区别