鱼生富贵 2023-02-02 01:48 采纳率: 97.4%
浏览 17
已结题

EmptyAccountNumber哪里有问题(标签-ios|关键词-stream)

代码是这样的:

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

class BankAccount {
public:
    friend class Bank;
    string GetName() const { return name; }
    int GetNumber() const { return number; }
    double GetBalance() const { return balance; }
    double GetRate() const { return rate; }
    bool GetActive() const { return active; }
    BankAccount():name("Test Account"),number(Bank::EmptyAccountNumber),balance(0),rate(0),active(false){}
    double saving_intrest() const;
    void show() const;
private:
    string name;
    int number;
    double balance;
    double rate;
    bool active;
    void setName(string _name);
    void deposit(double in);
    bool withdraw(double out);
    void close();
    BankAccount(string _name, int _number, double _balance, double _rate, bool _active) :name(_name), number(_number), balance(_balance), rate(_rate), active(_active) {}
};

void BankAccount::setName(string _name)
{
    name = _name;
}
void BankAccount::deposit(double in)
{
    balance += in;
}
bool BankAccount::withdraw(double out)
{
    if (out <= balance)
    {
        balance -= out;
        return true;
    }
    else
        return false;
}
void BankAccount::close()
{
    active = false;
}
double BankAccount::saving_intrest() const
{
    return balance * rate;
}
void BankAccount::show() const
{
    cout << "Name: " << GetName() << ", Number: " << GetNumber() << ", Balance: " << GetBalance() << ", Intrest Rate: " << GetRate() << endl;
}

class Bank {
private:
    vector<BankAccount> accounts;
    string name;
    static double rate;
    static int _number;
    int findAccount(int index);
public:
    friend class BankAccount;
    static const int EmptyAccountNumber;
    Bank(const string _name) { name = _name; }
    int registerAccount(string _name, double in);
    void closeAccount(int number);
    void imitate_in(int number, double in);
    void imitate_out(int number, double out);
    int activeAccount();
    double sumAccount();
    void show_activeAccount();
    static void setRate(double _rate);
    static double getRate() { return rate; }
    const BankAccount& getAccount(int number);
};

const int Bank::EmptyAccountNumber = -10000;
int Bank::findAccount(int index)
{
    for (int i = 0; i < accounts.size(); i++)
        if (accounts[i].number == index)
            return i;
    return -1;
}
int Bank::registerAccount(string _name, double in)
{
    BankAccount account(_name, _number++, in, rate,true);
    account.name = _name;
    account.balance += in;
    accounts.push_back(account);
    return _number - 1;
}
void Bank::closeAccount(int number)
{
    accounts[findAccount(number)].close();
}
void Bank::imitate_in(int number, double in)
{
    accounts[findAccount(number)].deposit(in);
}
void Bank::imitate_out(int number, double out)
{
    accounts[findAccount(number)].withdraw(out);
}
int Bank::activeAccount()
{
    int sum = 0;
    for (int i = 0; i < accounts.size(); i++)
        if (accounts[i].active == true)
            sum++;
    return sum;
}
double Bank::sumAccount()
{
    double sum = 0;
    for (int i = 0; i < accounts.size(); i++)
        if (accounts[i].active == true)
            sum += accounts[i].GetBalance();
    return sum;
}
void Bank::show_activeAccount()
{
    for (int i = 0; i < accounts.size(); i++)
        if (accounts[i].active == true)
            accounts[i].show();
    cout << "银行当前总储户数量--总的存款数额:" << activeAccount() << "--" << sumAccount() << endl;
}
void Bank::setRate(double _rate)
{
    rate = _rate;
}
double Bank::rate;
int Bank::_number = 1;
const BankAccount& Bank::getAccount(int number)
{
    return accounts[findAccount(number)];
}

int main()
{
    Bank bank("ICBC");
    bank.setRate(0.013);

    int id1 = bank.registerAccount("MaYun", 10000);
    int id2 = bank.registerAccount("MaHua", 13200);
    bank.show_activeAccount();
    
    cout << "\n*******************************************************\n";
    bank.setRate(0.015);
    int id3 = bank.registerAccount("Musk", 10270);
    int id4 = bank.registerAccount("Zhang", 19080);
    bank.show_activeAccount();

    cout << "\n*******************************************************\n";
    bank.closeAccount(id3);
    bank.getAccount(id3).show();
    bank.imitate_out(id4, 2000);
    bank.show_activeAccount();
    cout << "\n*******************************************************\n";
    int id5 = bank.registerAccount("Wang", 7790);
    bank.getAccount(id5).show();
    bank.imitate_in(id5, 10000);

    bank.getAccount(id5).show();
    cout << "interest= ";
    cout << bank.getAccount(id5).saving_intrest() << endl;

    bank.show_activeAccount();

    return 0;
}

报错是这样的:

![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/712216372576138.png "#left")
想来想去不知道为什么,EmptyAccountNumber哪里有问题,求解
  • 写回答

1条回答 默认 最新

  • m0_54204465 2023-02-02 07:55
    关注

    程序中没有明显的错误。

    "EmptyAccountNumber"是静态常量,它在类Bank中被定义为-10000。它是一个特殊的帐户编号,可以用来查找未注册的帐户。如果没有问题,则需要考虑代码的实际应用和使用。

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

报告相同问题?

问题事件

  • 系统已结题 3月28日
  • 已采纳回答 3月20日
  • 创建了问题 2月2日

悬赏问题

  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥60 许可证msc licensing软件报错显示已有相同版本软件,但是下一步显示无法读取日志目录。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
  • ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
  • ¥30 关于<main>标签页面跳转的问题
  • ¥80 部署运行web自动化项目
  • ¥15 腾讯云如何建立同一个项目中物模型之间的联系
  • ¥30 VMware 云桌面水印如何添加