【id:57】【20分】B. 银行账户(静态成员与友元函数)

这篇具有很好参考价值的文章主要介绍了【id:57】【20分】B. 银行账户(静态成员与友元函数)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

时间限制
1s
内存限制
128MB

题目描述
银行账户类的基本描述如下:

class Account
{
private:
static float count; // 账户总余额
static float interestRate;
string accno, accname;
float balance;
public:
Account(string ac, string na, float ba);
~Account();
void deposit(float amount); // 存款
void withdraw(float amount); // 取款
float getBalance(); // 获取账户余额
void show(); // 显示账户所有基本信息
static float getCount(); // 获取账户总余额
static void setInterestRate(float rate); // 设置利率
static float getInterestRate(); // 获取利率
};
要求如下:

实现该银行账户类

为账户类Account增加一个友元函数,实现账户结息,要求输出结息后的余额(结息余额=账户余额+账户余额*利率)。友元函数声明形式为 friend void update(Account& a);

在main函数中,定义一个Account类型的指针数组,让每个指针指向动态分配的Account对象,并调用成员函数测试存款、取款、显示等函数,再调用友元函数测试进行结息。

大家可以根据实际需求在类内添加其他方法,也可以修改成员函数的参数设置

输入
第1行:利率
第2行:账户数目n
第3行开始,每行依次输入一个账户的“账号”、“姓名”、“余额”、存款数,取款数。

输出
第1行开始,每行输出一个账户的相关信息,包括账号、姓名、存款后的余额、存款后结息余额、取款后余额。

最后一行输出所有账户的余额。文章来源地址https://www.toymoban.com/news/detail-430544.html

#include <iostream>
#include <string>
using namespace std;

class Account {
private:
    static float count; // 账户总余额
    static float interestRate;
    string accno, accname;
    float balance;
public:
    Account(string ac, string na, float ba); // 构造函数
    ~Account(); // 析构函数
    void deposit(float amount); // 存款
    void withdraw(float amount); // 取款
    float getBalance(); // 获取账户余额
    void show(); // 显示账户所有基本信息
    friend void update(Account& a); // 友元函数:结息
    static float getCount(); // 获取账户总余额
    static void setInterestRate(float rate); // 设置利率
    static float getInterestRate(); // 获取利率
};

float Account::count = 0;
float Account::interestRate = 0;

Account::Account(string ac, string na, float ba) {
    accno = ac;
    accname = na;
    balance = ba;
    count += ba;
}

Account::~Account() {
    count -= balance;
}

void Account::deposit(float amount) {
    balance += amount;
    count += amount;
    cout<<" "<<balance; 
}

void Account::withdraw(float amount) {
    if (balance >= amount) {
        balance -= amount;
        count -= amount;
        cout<<" "<<balance; 
    }
    else {
        cout << "Insufficient balance" << endl;
    }
}

float Account::getBalance() {
    return balance;
}

void Account::show() {
    cout << accno << " " <<  accname;
}

void update(Account& a) {
    float interest = a.balance * Account::interestRate;
    a.balance += interest;
    Account::count += interest;
    cout << " " << a.balance;
}

float Account::getCount() {
    return count;
}

void Account::setInterestRate(float rate) {
    interestRate = rate;
}

float Account::getInterestRate() {
    return interestRate;
}

int main() {
    float rate;
    cin >> rate;
    Account::setInterestRate(rate);

    int n;
    cin >> n;

    Account* accounts[n]; // 定义Account类型的指针数组
    for (int i = 0; i < n; i++) {
        string ac, na;
        float ba, de, wi;
        cin >> ac >> na >> ba >> de >> wi;

        accounts[i] = new Account(ac, na, ba); // 动态分配Account对象,并将指针存入数组
 		accounts[i]->show();
        accounts[i]->deposit(de);
        update(*accounts[i]);
        accounts[i]->withdraw(wi);
        
        cout << endl;
    }

    cout << Account::getCount() << endl;

    for (int i = 0; i < n; i++) {
        delete accounts[i]; // 释放动态分配的内存
    }

    return 0;
}

到了这里,关于【id:57】【20分】B. 银行账户(静态成员与友元函数)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 4.【CPP】入门(初始化列表||explicit||static||友元||静态成员变量/函数)

    我们知道在c++11中才能在成员对象声明时初始化,像下面这样。 注意:构造函数不是初始化,而是赋初始值。那么在c++11以前该怎么初始化成员变量呢? 每个成员变量在初始化列表中只能出现一次(初始化只能初始化一次) 类中包含以下成员,必须放在初始化列表位置进行初始

    2024年01月20日
    浏览(43)
  • c++类和对象(拷贝构造、运算符重载、初始化列表、静态成员、友元等)

    拷贝构造函数的特征: 1、拷贝构造函数是构造函数的一个重载形式; 2、拷贝构造函数的参数只有一个且必须是同类类型对象的引用, 使用传值方式编译器直接报错 ,因为会引发无穷递归调用。 在c++中自定义类型 传值传参 的时候要调用拷贝构造函数。 3、若未显式定义,

    2024年02月15日
    浏览(38)
  • 【id:62】【20分】E. 日期时间合并输出(友元函数)

    【id:62】【20分】E. 日期时间合并输出(友元函数) 时间限制 1s 内存限制 128MB 题目描述 已知日期类Date,有属性:年、月、日,其他成员函数根据需要自行编写,注意该类没有输出的成员函数 已知时间类Time,有属性:时、分、秒,其他成员函数根据需要自行编写,注意该类

    2024年02月02日
    浏览(35)
  • C++——详解类模板与友元函数

    纵有疾风起,人生不言弃。本文篇幅较长,如有错误请不吝赐教,感谢支持。 模板类的友元函数有三类: 1)非模板友元函数:友元函数不是模板函数,而是利用模板类参数生成的函数。 2)约束模板友元函数:模板类实例化时,每个实例化的类对应一个友元函数。 3)非约束

    2024年02月11日
    浏览(37)
  • C++:初始化列表,static成员,友元,内部类

    个人主页 : 个人主页 个人专栏 : 《数据结构》 《C语言》《C++》 本篇博客作为C++:初始化列表,static成员,友元,内部类的知识总结。 初始化列表:以冒号开始,接着是一个以逗号分隔的数据成员列表,每个“成员变量”后面跟一个放在括号中的初始值或表达式。 初始化

    2024年02月07日
    浏览(56)
  • MFC使用友元函数访问窗体类成员变量

    首先创建一个窗体类指针的全局变量 在窗体类的OnInitDialog函数中将指针赋值this,在OnInitDialog中窗体已经创建完成。这样指针就可以指向窗体实例

    2024年02月07日
    浏览(39)
  • 【C++】初始化列表、static成员、友元、匿名对象、附练习题

    我们前面学习了关于类和对象的6个默认成员函数,知道了一个空类中有构造函数和析构函数,通过对对象初始化和对象中进行资源清理,达到初始化和销毁的作用。我们再对一些小的点进行补充,看看类和对象的一些细节。 1.1 构造函数体赋值 在创建对象时,编译器通过 调

    2024年02月22日
    浏览(53)
  • 运算符重载的函数作为类的成员函数和友元函数

    🐶博主主页: @ᰔᩚ. 一怀明月ꦿ  ❤️‍🔥 专栏系列: 线性代数,C初学者入门训练,题解C,C的使用文章,「初学」C++ 🔥 座右铭: “不要等到什么都没有了,才下定决心去做” 🚀🚀🚀大家觉不错的话,就恳求大家点点关注,点点小爱心,指点指点🚀🚀🚀 目录 🐰运

    2024年02月08日
    浏览(41)
  • 【C++初阶】六、类和对象(初始化列表、static成员、友元、内部类)

    ========================================================================= 相关代码gitee自取 : C语言学习日记: 加油努力 (gitee.com)  ========================================================================= 接上期 : 【C++初阶】五、类和对象 (日期类的完善、流运算符重载函数、const成员、“”取地址运算符重

    2024年02月05日
    浏览(45)
  • 【C++】类和对象(下篇)--->再识构造函数,static成员,友元,内部类,匿名对象

    目录 一、构造函数  1、构造函数体赋值  2、初始化列表  3、explicit 二、Static 成员  1、概念  2、特性 三、友元  1、友元函数  2、友元类 四、内部类  1、概念  2、特性 五、匿名对象 六、拷贝对象时的一些编译器优化 在创建对象时,编译器通过调用构造函数,给对

    2024年02月13日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包