首页 > 编程语言 >C++课本第四章例题

C++课本第四章例题

时间:2023-04-22 18:00:48浏览次数:38  
标签:SavingsAccount int double C++ rate 课本 date 例题 id

个人银行账户管理程序

 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 }

 

标签:SavingsAccount,int,double,C++,rate,课本,date,例题,id
From: https://www.cnblogs.com/Lyh3012648079/p/17343602.html

相关文章

  • VC++ | DLL的创建和使用
    文章目录DLL的创建和使用动态链接库概述1.新建项目1-1.新建文件1-2.生成动态链接库2.Dumpbin命令2-1.用法3.从DLL中导出函数4.参考DLL的创建和使用动态链接库概述1.新建项目1-1.新建文件新建DLL1.cpp#include"pch.h"intadd(inta,intb){ return(a+b);}intsubtract(i......
  • C++的拓扑排序实现
    template<typenameT=CString,typename_Data=CString> structUnion_node//!<节点 { Union_node():nColor(0){} std::vector<Union_node*>vecNodeSon; Tkey;//!<关键数据 _Datadata;//!<卫星数据 mutableintnColor;//0:白色节点(未发现),1:灰色节点(发现),......
  • 初学者代码训练Day5(c/c++)
    打鱼还是晒网要求中国有句俗语叫“三天打鱼两天晒网”。某人从1990年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。流程图  代码1#include<iostream>2usingnamespacestd;34intmain()5{intyear=0,month=0,day=......
  • C++恶意软件开发(五)Linux shellcoding
    什么是shellcode?Shellcode通常指的是一段用于攻击的机器码(二进制代码),可以被注入到目标计算机中并在其中执行。Shellcode的目的是利用目标系统的漏洞或弱点,以获取系统控制权或执行恶意操作。它的名称来自于它经常被注入到攻击者编写的恶意软件的shell环境中,以便让攻击者可以更......
  • C语言和C++推荐书籍
    《CPrimerPlus》(第六版)作者:StephenPrata《C和指针》(第二版)作者:KennethA.Reek《C语言程序设计》(第四版)作者:谭浩强《C++Primer》(第五版)作者:Lippman,Lajoie,andMoo《EffectiveC++》(第三版)作者:ScottMeyers《STL源码剖析》作者:侯捷《深入理解C++11:C++11新特性解析与......
  • C语言和C++的switch语句用法
    C语言和C++的switch语句用法是相似的,但在一些细节上有所不同。在C语言中,switch语句的用法如下:switch(expression){  caseconstant1:    //dosomething    break;  caseconstant2:    //dosomething    break;  //...  ......
  • c++打卡第十二天
    一、问题描述。 二、设计思路①、我们可以从第五年往前推算,即1000=前一年剩余的钱*(1+12*0.0063),算出的结果加上一千就是前一年年初加上利息所得的总钱。②、列出五行式子就可以算出解。③、打印出程序运行结果。三、代码实现。#include<iostream>usingnamespacestd;i......
  • C++调用自定义源文件函数
    C++调用自定义源文件函数的步骤如下:在需要调用函数的源文件中包含自定义源文件的头文件。例如,如果需要调用名为myfunc.cpp的自定义源文件中的函数,则需要在调用该函数的源文件中包含myfunc.h头文件。编译自定义源文件。如果使用命令行编译,可以使用以下命令编译自定义源文件并生成......
  • 【c++】容器
    c++中容器的定义如下:数据存储上,有一种对象类型,它可以持有其他对象或指向其他对象的指针,这种对象类型叫容器。通俗的说容器就是保存其他对象的对象,这种“对象”还包含了一些列处理其他对象的方法,这也体现了容器类的一个好处,“容器类对特定代码重用问题的良好的解决方案”。容器另......
  • c++ CRTP 中判断 Derived 中有没有某个成员函数
    //省略HasMembertemplate<Dervied>classB{static_assert(HasMember<Derived>());}classA:publicB<A>{public:voidMember();}这样的代码是编译不过的,因为A还没有完全定义时,static_assert就会fail,但是将static_assert放到某个函数里是可以编译过的。......