#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;
}