# BankAccount类设计与实现 以下是符合要求的BankAccount类C++实现: ```cpp #include <iostream> #include <string> #include <random> #include <iomanip> class BankAccount { private: std::string accountNumber; std::string ownerName; double balance; static int totalAccounts; public: // 有参构造函数 BankAccount(const std::string& accNum, const std::string& name, double initialBalance) : accountNumber(accNum), ownerName(name), balance(initialBalance) { totalAccounts++; } // 无参构造函数 BankAccount() : ownerName("Anonymous"), balance(0) { // 生成随机账号 ACC-XXX static int counter = 1; std::ostringstream oss; oss << "ACC-" << std::setw(3) << std::setfill('0') << counter++; accountNumber = oss.str(); totalAccounts++; } // 获取账号 std::string getAccountNumber() const { return accountNumber; } // 获取户名 std::string getOwnerName() const { return ownerName; } // 获取余额(只读) double getBalance() const { return balance; } // 存款 void deposit(double amount) { if (amount > 0) { balance += amount; } } // 取款 bool withdraw(double amount) { if (amount > 0 && balance >= amount) { balance -= amount; return true; } return false; } // 静态方法:获取总账户数 static int getTotalAccounts() { return totalAccounts; } }; // 初始化静态成员 int BankAccount::totalAccounts = 0; int main() { // 测试有参构造函数 BankAccount account1("12345678", "张三", 1000.0); std::cout << "账户1: " << account1.getAccountNumber() << ", " << account1.getOwnerName() << ", 余额: " << account1.getBalance() << std::endl; // 测试无参构造函数 BankAccount account2; std::cout << "账户2: " << account2.getAccountNumber() << ", " << account2.getOwnerName() << ", 余额: " << account2.getBalance() << std::endl; // 测试存款 account1.deposit(500.0); std::cout << "账户1存款500后余额: " << account1.getBalance() << std::endl; // 测试取款 if (account1.withdraw(200.0)) { std::cout << "账户1取款200成功,余额: " << account1.getBalance() << std::endl; } else { std::cout << "账户1取款失败" << std::endl; } // 测试余额不足取款 if (account1.withdraw(2000.0)) { std::cout << "账户1取款2000成功" << std::endl; } else { std::cout << "账户1取款2000失败,余额不足" << std::endl; } // 测试静态方法 std::cout << "总账户数: " << BankAccount::getTotalAccounts() << std::endl; return 0; } ``` ## 代码说明 1. 构造函数: - 有参构造函数初始化账号、户名和余额 - 无参构造函数生成随机账号(格式ACC-XXX),默认户名"Anonymous",余额0 2. 属性封装: - 余额balance通过私有成员实现只读 - 提供deposit()和withdraw()方法修改余额 - withdraw()方法会验证余额是否充足 3. 静态成员: - totalAccounts统计所有账户总数 - getTotalAccounts()返回当前总账户数 4. 主函数测试: - 创建有参和无参账户 - 测试存款和取款功能 - 验证余额不足时的取款处理 - 输出总账户数 ## 注意事项 1. 静态成员变量totalAccounts需要在类外初始化 2. 无参构造函数中的随机账号生成使用静态计数器确保唯一性 3. withdraw()方法返回bool表示操作是否成功 [2025-04-13 15:50:48 | AI写代码神器 | 963点数解答]