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

题目描述

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


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行开始,每行输出一个账户的相关信息,包括账号、姓名、存款后的余额、存款后结息余额、取款后余额。

最后一行输出所有账户的余额。


输入样例1 <-复制

0.01
3
201501 张三 10000 1000 2000
201502 李四 20000 2000 4000
201503 王二 80000 4000 6000


输出样例1

201501 张三 11000 11110 9110
201502 李四 22000 22220 18220
201503 王二 84000 84840 78840
106170


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

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

#include
using namespace std;
class Account
{
    //“账号”、“姓名”、“余额”、存款数,取款数。
private:
    static float count; // 账户总余额
    static float interestRate;//利率
    string accno, accname;//账号 姓名
    float balance;//余额
public:
    Account() {};
    Account(string ac, string na, float ba);
    ~Account() {};

    void set(string ac, string na, float ba);//初始化
    void deposit(float amount); // 存款
    void withdraw(float amount); // 取款
    float getBalance(); // 获取账户余额
    void show(); // 显示账户所以基本信息

    //静态的成员变量只会在数据共享区中维护一份,而非静态成员变量的数据会在每个对象中都维护一份的。
    static float getCount(); // 获取账户总余额
    static void setInterestRate(float rate); // 设置利率
    static void setcount(int co);
    static float getcount();
    static float getInterestRate(); // 获取利率

    friend void update(Account& a);

    void print()//输出
    {
        cout << accno << " ";
        cout << accname << " ";
    }
    void print1()
    {
        cout << balance;
    }
};

//静态变量类内声明类外初始化
float Account::count = 0;
float Account::interestRate = 0;


void Account::setcount(int co)
{
    count += co;
}
float Account::getcount()
{
    return count;
}
Account::Account(string ac, string na, float ba)
{
    accno = ac;
    accname = na;
    balance = ba;
}
//初始化
void Account::set(string ac, string na, float ba)
{
    accno = ac;
    accname = na;
    balance = ba;
}
void Account::deposit(float amount)
{
    balance += amount;
}
void Account::withdraw(float amount)
{
    balance -= amount;
}
float Account::getBalance()
{
    return balance;
}
float Account::getCount()
{
    return count;
}

//设置利率
void Account::setInterestRate(float rate)
{
    interestRate = rate;
}

float Account::getInterestRate()
{
    return interestRate;
}
//实现账户结息,要求输出结息后的余额(结息余额=账户余额+账户余额*利率)
void update(Account& a)
{
    a.balance += (a.balance * a.getInterestRate());
    cout << a.balance;
}
int main()
{
    //义一个Account类型的指针数组,让每个指针指向动态分配的Account对象
    //,并调用成员函数测试存款、取款、显示等函数,
    //再调用友元函数测试进行结息。
    //第一行设置利率
    float rate;
    cin >> rate;
    Account::setInterestRate(rate);//静态 account创建的对象 利率值都一样
    int t;
    cin >> t;
    Account* a = new Account[t];//动态数组
    string name, num;
    float bal, jia, jian;
    float count = 0;
    for (int i = 0; i < t; i++)
    {
        cin >> num;
        cin >> name;
        cin >> bal;
        cin >> jia;
        cin >> jian;
        a[i].set(num, name, bal);//初始化
        a[i].print();//输出
        a[i].deposit(jia);
        a[i].print1();
        cout << " ";
        update(a[i]);
        cout << " ";
        a[i].withdraw(jian);
        a[i].print1();
        cout << endl;
        count += a[i].getBalance();
    }
    cout << count;
    return 0;
}

你可能感兴趣的:(oj,c++,c++,开发语言)