Menu
CoddyTech

银行最终测试

本课属于 Coddy Lua 学习旅程的“面向对象编程”单元。第 25 课,共 70 课。

challenge icon

挑战

简单

恭喜你构建出了完整的数字银行系统!你的 Account 类现在可以处理存款、取款、余额查询、账户识别和账户间转账。让我们用一个真实的多账户银行场景来全面测试它。

在这个最终挑战中,你将模拟一家小型银行,三位客户会进行各种交易。这将验证你的所有方法能否正确协同工作,以及各个账户是否确实保持独立状态。

你的两个文件:

  • Account.lua:完整的 Account 类,包含你在整个项目中实现的所有功能(带 ID 的构造函数、存款、取款、getBalance、__tostring 和转账)。
  • main.lua:一个模拟脚本,用于创建多个账户并运行一系列账户间交易。

你将收到 6 个输入:

  1. 账户 1 的 ID
  2. 账户 2 的 ID
  3. 账户 3 的 ID
  4. 账户 1 的初始存款
  5. 账户 2 的初始存款
  6. 账户 3 的初始存款

在你的主文件中,模拟以下银行营业日:

  1. 使用给定的 ID 创建三个账户
  2. 将初始金额分别存入对应的账户
  3. 账户 1 向账户 2 转账 100
  4. 账户 2 向账户 3 转账 150
  5. 账户 3 向账户 1 转账 50
  6. 账户 1 尝试向账户 3 转账 1000(这次转账应该失败)
  7. 按顺序打印三个账户(先账户 1,再账户 2,最后账户 3)

例如,如果输入是 A001、A002、A003、500、300 和 200,输出应该是:

Insufficient funds
Account [A001]: Balance = 450
Account [A002]: Balance = 250
Account [A003]: Balance = 300

我们来梳理一下:账户 1 的初始余额是 500,向账户 2 转账 100(余额变为 400),然后收到来自账户 3 的 50(余额变为 450)。账户 2 的初始余额是 300,收到 100(余额变为 400),再向账户 3 转账 150(余额变为 250)。账户 3 的初始余额是 200,收到 150(余额变为 350),再向账户 1 转账 50(余额变为 300)。最后尝试转账 1000 时会失败,因为账户 1 只有 450。

亲手试试

-- 加载 Account 模块
local Account = require('Account')

-- 读取 6 个输入
local id1 = io.read()
local id2 = io.read()
local id3 = io.read()
local initialDeposit1 = tonumber(io.read())
local initialDeposit2 = tonumber(io.read())
local initialDeposit3 = tonumber(io.read())

-- 创建 3 个带 ID 的账户
-- TODO:使用 Account:new() 创建 account1、account2 和 account3

-- 将初始金额分别存入对应的账户
-- TODO:将 initialDeposit1 存入 account1,将 initialDeposit2 存入 account2,将 initialDeposit3 存入 account3

-- 账户 1 向账户 2 转账 100
-- TODO:account1:transfer(account2, 100)

-- 账户 2 向账户 3 转账 150
-- TODO:account2:transfer(account3, 150)

-- 账户 3 向账户 1 转账 50
-- TODO:account3:transfer(account1, 50)

-- 账户 1 尝试向账户 3 转账 1000(这次应该失败)
-- TODO: account1:transfer(account3, 1000)

-- 按顺序打印这三个账户
-- TODO: 按顺序打印 account1、account2 和 account3

面向对象编程中的所有课

自己练习: Lua 在线编译器