Menu
CoddyTech

总结:银行账户管理器

本课属于 Coddy GDScript 学习旅程的“面向对象编程”单元。第 14 课,共 65 课。

challenge icon

挑战

中等

在 bank_account.gd 中编写 BankAccount 类。它综合运用了本章的所有内容。

  • 一个静态 int 变量 interest_percent,初始值为 2,由所有账户共享
  • 两个私有属性:_owner_name(一个 String)和 _balance(一个初始值为 0 的 int)
  • 一个只读属性 owner_name,其 getter 返回 _owner_name
  • 一个属性 balance,其 getter 返回 _balance;如果值为负数,其 setter 会打印 Balance cannot be negative,否则会将该值存入 _balance
  • 构造函数 _init(account_owner, start_balance) 用于保存所有者,并将 start_balance 赋给 balance,以便 setter 检查该值

还需要实现以下方法:

  • deposit(amount):当 amount 小于或等于 0 时,打印 Deposit amount must be positive 并返回 false;否则将其加到账户余额中并返回 true
  • withdraw(amount):当 amount 小于或等于 0 时,打印 Withdrawal amount must be positive 并返回 false;当其大于余额时,打印 Insufficient funds 并返回 false;否则从余额中扣除该金额并返回 true
  • apply_interest():将 _balance * interest_percent / 100(整美元)加到账户余额中,并返回利息金额
  • display_info():打印三行内容:Account Owner: NAME、Balance: $BALANCE 和 Interest Rate: PERCENT%

提供的代码会读取 owner start_balance、后续命令的数量,以及以下命令:deposit N、withdraw N、set N(为 balance 赋值)、interest、rate N(设置 BankAccount.interest_percent)和 info。每次成功存款、取款和支付利息时,都会打印一行内容,并在最后打印所有者的余额。输入 Coddy 1000,并依次执行命令 deposit 500、withdraw 200、interest、info、set 5000 和 withdraw 10000 时,会打印:

Deposited $500
Withdrew $200
Interest earned: $26
Account Owner: Coddy
Balance: $1326
Interest Rate: 2%
Insufficient funds
Coddy has $5000

将代码写在 bank_account.gd 中。main.gd 包含提供的输入/输出代码,不能编辑。

亲手试试

extends Node

func _ready():
	# 提供的输入输出代码:保持原样。
	var first := OS.read_string_from_stdin().split(" ")
	var account := BankAccount.new(first[0], int(first[1]))
	var count := int(OS.read_string_from_stdin())
	for i in count:
		var parts := OS.read_string_from_stdin().split(" ")
		match parts[0]:
			"deposit":
				if account.deposit(int(parts[1])):
					print("Deposited $%s" % parts[1])
			"withdraw":
				if account.withdraw(int(parts[1])):
					print("Withdrew $%s" % parts[1])
			"set":
				account.balance = int(parts[1])
			"interest":
				print("Interest earned: $%d" % account.apply_interest())
			"rate":
				BankAccount.interest_percent = int(parts[1])
			"info":
				account.display_info()
	print("%s has $%d" % [account.owner_name, account.balance])

面向对象编程中的所有课

自己练习: GDScript 在线编译器