计算机小混子 2022-02-19 04:18 采纳率: 100%
浏览 30
已结题

刚学C++求解答下列问题

question1 第16行 return accumulation + balance * (date - lastDate);这是什么含义?
question2 哪些是构造函数,以及构造函数和其他成员函数怎么区分?
question3 public为什么既有函数的实现又有函数的声明?函数的实现不应该在外面实现吗 ?
question4 lastDate = date这是什么?
question5 amount = floor(amount * 100 + 0.5) / 100;保留小数点后两位为什么要这样实现?
question6 输出结果中的第一列不是date为什么会有60?
question7 第48行if (amount > getBalance())为什么double型数值能跟函数比大小?
question8 double getBalance() { return balance; }
double getRate() { return rate; } 这两个是声明?怎么感觉多此一举
question9
void SavingsAccount::settle(int date) {
double interest = accumulate(date) * rate / 365;//计算年息
if (interest != 0)
record(date, interest);
accumulation = 0;
} accumulation = 0;这是什么?
question10
double accumulate(int date) const {
return accumulation + balance * (date - lastDate); const的位置为什么在这里?
question11 date 究竟是什么含义?


// 4-10个人银行账户管理系统.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
#include <iostream>
#include <cmath>
using namespace std;
class SavingsAccount {//存储账户类
private:
    int id;          //账号
    double balance;  //余额
    double rate;     //年利率
    int lastDate;     //上次变余额的日期
    double accumulation;//余额按日累加之和
    //记录一笔账,date为日期,amount为金额,desc为说明
    void record(int date, double amount);
    //获得到指定日期为止的存款金额按日累积值
        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::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: notenough money" << endl;
    else
        record(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;
}
输出结果如图

![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/492739412546126.png "#left")

  • 写回答

1条回答 默认 最新

  • [PE]经典八炮 2022-02-19 08:39
    关注

    1.返回本金+(指定日期-存款日期)×余额,好像是每天存款一些
    2.构造函数和类名称相同,没用返回值
    3.可以在类内也可以在类外,没有强制要求
    4.上一次修改日期的时间设为这个时间,因为这就是修改操作
    5.举两个例子,比如3.476,先乘以100,变成了347.6,再加上0.5,变成了348.1,再向下取整,就是348,除以100是3.48。再比如5.242,乘以一百524.2,加0.5=524.7,向下取整524,除以100=5.24.
    6.第60天取款了4000
    7.不是和函数比较,是和函数的返回值比较!!!
    8.这是面向对象三大思想中的封装,非常重要!!!它能实现信息隐藏,防止外部修改数据!!!
    9.把变量清零
    10.const成员函数,表示不能在函数中修改类内部的数据,这是一个非常好的习惯
    11.不知道你说的哪个date
    有帮助望采纳,谢谢!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 2月27日
  • 已采纳回答 2月19日
  • 创建了问题 2月19日

悬赏问题

  • ¥15 远程桌面文档内容复制粘贴,格式会变化
  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题