#2130. 刷RP的过来

刷RP的过来

题目:我怒了(银行抢劫模拟)

问题描述: 你是一位银行系统的开发者,最近发现你的系统被黑客入侵,黑客利用系统漏洞进行了一次银行抢劫。作为银行系统的行主,你需要编写一个C++程序来模拟这次抢劫事件,并尝试找出黑客的攻击点。

要求:

创建一个银行类(Bank),包含以下属性和方法:

accountList:一个vector,存储银行所有账户的信息,每个账户信息包含账户ID、账户余额等。 getAccountBalance:根据账户ID获取账户余额。 deposit:向指定账户存款。 withdraw:从指定账户取款。 getTotalBalance:获取银行总余额。 编写一个主函数,创建一个银行实例,并添加一些初始账户信息。

模拟黑客攻击:

黑客尝试通过非法手段获取账户信息。 黑客尝试非法取款。 黑客尝试修改账户余额。 在主函数中,调用上述方法,模拟黑客攻击过程,并输出每次攻击的结果。

如果黑客成功修改了账户余额或取款,程序应输出“我怒了!”。

代码示例:

#include <iostream>
#include <vector>
#include <string>

class Account {
public:
    int id;
    double balance;

    Account(int id, double balance) : id(id), balance(balance) {}
};

class Bank {
private:
    std::vector<Account> accountList;

public:
    Bank() {}

    void addAccount(Account account) {
        accountList.push_back(account);
    }

    double getAccountBalance(int id) {
        for (auto& account : accountList) {
            if (account.id == id) {
                return account.balance;
            }
        }
        return -1; // 如果找不到账户,返回-1
    }

    void deposit(int id, double amount) {
        for (auto& account : accountList) {
            if (account.id == id) {
                account.balance += amount;
                return;
            }
        }
    }

    bool withdraw(int id, double amount) {
        for (auto& account : accountList) {
            if (account.id == id) {
                if (account.balance >= amount) {
                    account.balance -= amount;
                    return true;
                } else {
                    return false;
                }
            }
        }
        return false;
    }

    double getTotalBalance() {
        double totalBalance = 0;
        for (const auto& account : accountList) {
            totalBalance += account.balance;
        }
        return totalBalance;
    }
};

int main() {
    Bank bank;
    bank.addAccount(Account(1, 1000));
    bank.addAccount(Account(2, 2000));
    bank.addAccount(Account(3, 3000));

    // 模拟黑客攻击
    std::cout << "初始总余额: " << bank.getTotalBalance() << std::endl;

    // 黑客尝试获取账户信息
    std::cout << "黑客获取账户1余额: " << bank.getAccountBalance(1) << std::endl;

    // 黑客尝试非法取款
    if (!bank.withdraw(1, 500)) {
        std::cout << "我怒了!" << std::endl;
    }

    // 黑客尝试修改账户余额
    bank.deposit(1, -1000);
    std::cout << "修改后账户1余额: " << bank.getAccountBalance(1) << std::endl;

    // 输出最终总余额
    std::cout << "最终总余额: " << bank.getTotalBalance() << std::endl;

    return 0;
}