Menu
CoddyTech

复习:银行账户管理器

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

challenge icon

挑战

简单

让我们构建一个完整的银行账户管理系统,整合你学过的关于类架构的所有知识。你将创建一个 BankAccount 类,正确区分实例数据(每个账户独有)和静态数据(所有账户共享),并使用验证来确保账户始终处于有效状态。

你将创建两个文件来组织代码:

  • BankAccount.cs:在 Banking 命名空间中定义一个 BankAccount 类。你的账户应包含:
    • 一个 const 字段 MinimumBalance,值为 100,这是所有账户必须维持的最低余额
    • 一个 static 字段 InterestRate(decimal),初始值为 0.03m,由所有账户共享
    • 一个 static 字段 TotalAccounts(int),用于跟踪现有账户的数量
    • 一个 readonly 字段 AccountNumber(string),在创建时设置一次,之后不能更改
    • 一个私有的后备字段 _ownerName,以及一个设置时会去除空白字符的 OwnerName 属性
    • 一个私有的后备字段 _balance,以及一个能防止余额低于 MinimumBalance 的 Balance 属性(如果有人尝试将余额设置得更低,就让它保持为 MinimumBalance)
    • 一个接受账户号码、所有者姓名和初始余额的构造函数,并递增 TotalAccounts
    • 一个静态方法 SetInterestRate(decimal rate),用于更新所有账户共享的利率
    • 一个 CalculateInterest() 方法,返回余额乘以利率的结果
  • Program.cs:在主文件中,使用输入值创建两个银行账户,更新利率,并显示账户信息和共享的银行数据。

你将收到 7 个输入:

  • 第一个账户号码
  • 第一个账户所有者姓名
  • 第一个账户的初始余额
  • 第二个账户号码
  • 第二个账户所有者姓名
  • 第二个账户的初始余额
  • 新的利率(小数,例如 0.05)

请按以下格式输出:

--- Bank Summary ---
Interest Rate: {InterestRate}
Minimum Balance: {MinimumBalance}
Total Accounts: {TotalAccounts}

Account: {AccountNumber}
Owner: {OwnerName}
Balance: {Balance}
Interest Earned: {interest}

Account: {AccountNumber}
Owner: {OwnerName}
Balance: {Balance}
Interest Earned: {interest}

例如,如果输入是 ACC001、 Alice Smith 、500、ACC002、Bob Jones、50 和 0.05,输出应为:

--- Bank Summary ---
Interest Rate: 0.05
Minimum Balance: 100
Total Accounts: 2

Account: ACC001
Owner: Alice Smith
Balance: 500
Interest Earned: 25.0

Account: ACC002
Owner: Bob Jones
Balance: 100
Interest Earned: 5.0

注意,Alice 的姓名会去除多余空格,而 Bob 的余额会从 50 提高到最低余额 100。利息使用创建账户后设置的新利率 0.05 计算。

亲手试试

using System;
using Banking;

class Program
{
    public static void Main(string[] args)
    {
        // 读取第一个账户的输入
        string accountNumber1 = Console.ReadLine();
        string ownerName1 = Console.ReadLine();
        decimal balance1 = Convert.ToDecimal(Console.ReadLine());
        
        // 读取第二个账户的输入
        string accountNumber2 = Console.ReadLine();
        string ownerName2 = Console.ReadLine();
        decimal balance2 = Convert.ToDecimal(Console.ReadLine());
        
        // 读取新的利率
        decimal newRate = Convert.ToDecimal(Console.ReadLine());
        
        // TODO:使用输入值创建两个 BankAccount 对象
        
        // TODO:使用静态方法更新利率
        
        // TODO:按要求的格式输出银行汇总信息
        // --- Bank Summary ---
        // Interest Rate: {InterestRate}
        // Minimum Balance: {MinimumBalance}
        // Total Accounts: {TotalAccounts}
        // (空行)
        // 账户:{AccountNumber}
        // 户主:{OwnerName}
        // 余额:{Balance}
        // Interest Earned: {interest}
        // (空行)
        // 账户:{AccountNumber}
        // 户主:{OwnerName}
        // 余额:{Balance}
        // Interest Earned: {interest}
    }
}

面向对象编程中的所有课

自己练习: C# 在线编译器