Menu
CoddyTech

回顾:银行账户管理器

本课属于 Coddy Dart 学习旅程的“面向对象编程”单元。第 22 课,共 110 课。

challenge icon

挑战

简单

让我们来构建一个银行账户管理系统,把你在本章学到的所有类属性概念结合起来。你将创建一个系统,用来跟踪各个账户的数据,同时维护整个银行的统计信息。

你需要将代码分成两个文件:

  • bank_account.dart:定义一个管理各个账户并跟踪银行整体统计信息的 BankAccount 类。你的类应包含:
    • 一个创建后不可更改的 final String accountNumber
    • 一个用于存储账户持有人姓名的 String holderName
    • 一个初始值为 0.0 的私有 double _balance 字段
    • 一个初始值为 0 的 static int totalAccounts,用于跟踪现有账户的数量
    • 一个初始值为 0.0 的 static double totalDeposits,用于跟踪整个银行的所有存款
    • 一个接收 accountNumber 和 holderName,并递增 totalAccounts 的构造函数
    • 一个返回当前余额的 getter balance
    • 一个 deposit(double amount) 方法,仅当金额为正数时才增加余额,并在存款成功时同时增加 totalDeposits
    • 一个 withdraw(double amount) 方法,仅当金额为正数且不超过当前余额时才从余额中扣除
    • 一个打印账户详情的 displayInfo() 方法
    • 一个返回银行整体统计信息字符串的静态方法 getBankStats()
  • main.dart:导入你的银行账户类,并演示这个系统:
    • 创建一个账户,账户号码为 'ACC001',持有人为 'Alice'
    • 创建一个账户,账户号码为 'ACC002',持有人为 'Bob'
    • 向 Alice 的账户存入 500.0
    • 向 Bob 的账户存入 300.0
    • 从 Alice 的账户取出 150.0
    • 尝试从 Bob 的账户取出 1000.0(应被忽略,余额不足)
    • 尝试向 Alice 的账户存入 -50.0(应被忽略,金额为负数)
    • 先对 Alice 的账户调用 displayInfo(),再对 Bob 的账户调用
    • 使用 BankAccount.getBankStats() 打印银行统计信息

displayInfo() 方法应按以下格式打印:

Account [accountNumber] | Holder: [holderName] | Balance: $[balance]

getBankStats() 方法应返回:

Bank Stats - Total Accounts: [totalAccounts] | Total Deposits: $[totalDeposits]

预期输出:

Account ACC001 | Holder: Alice | Balance: $350.0
Account ACC002 | Holder: Bob | Balance: $300.0
Bank Stats - Total Accounts: 2 | Total Deposits: $800.0

亲手试试

import 'bank_account.dart';

void main() {
  // TODO: 为 'Alice' 创建账号为 'ACC001' 的账户
  
  // TODO: 为 'Bob' 创建账号为 'ACC002' 的账户
  
  // TODO: 向 Alice 的账户存入 500.0
  
  // TODO: 向 Bob 的账户存入 300.0
  
  // TODO: 从 Alice 的账户取出 150.0
  
  // TODO: 尝试从 Bob 的账户取出 1000.0(应忽略这次操作)
  
  // TODO: 尝试向 Alice 的账户存入 -50.0(应忽略这次操作)
  
  // TODO: 对 Alice 的账户调用 displayInfo()
  
  // TODO: 对 Bob 的账户调用 displayInfo()
  
  // TODO: 使用 BankAccount.getBankStats() 打印银行统计信息
}

面向对象编程中的所有课

自己练习: Dart 在线编译器