Skip to main content

4月29日 类的方法

using System;
using System.Collections.Generic;

namespace BankAccountDemo
{
// 银行账户类
public class BankAccount
{
// ========== 字段 ==========
private string accountNumber; // 账户号
private string holderName; // 持有人姓名
private decimal balance; // 余额
private DateTime createDate; // 创建日期
private List<string> transactions; // 交易记录

// ========== 构造方法 ==========
public BankAccount(string accountNumber, string holderName)
{
this.accountNumber = accountNumber;
this.holderName = holderName;
this.balance = 0;
this.createDate = DateTime.Now;
this.transactions = new List<string>();

// 记录开户交易
RecordTransaction($"开户,初始余额: ¥0.00");
}

// ========== 方法 ==========

// 存款
public void Deposit(decimal amount)
{
if (amount <= 0)
{
Console.WriteLine("存款金额必须大于0!");
return;
}

balance += amount;
RecordTransaction($"存款: +¥{amount:F2},余额: ¥{balance:F2}");
Console.WriteLine($"存款成功!存入 ¥{amount:F2}");
}

// 取款
public bool Withdraw(decimal amount)
{
if (amount <= 0)
{
Console.WriteLine("取款金额必须大于0!");
return false;
}

if (amount > balance)
{
Console.WriteLine($"余额不足!当前余额: ¥{balance:F2},需要: ¥{amount:F2}");
return false;
}

balance -= amount;
RecordTransaction($"取款: -¥{amount:F2},余额: ¥{balance:F2}");
Console.WriteLine($"取款成功!取出 ¥{amount:F2}");
return true;
}

// 查询余额
public decimal GetBalance()
{
return balance;
}

// 打印账户信息
public void PrintInfo()
{
Console.WriteLine("\n========== 账户信息 ==========");
Console.WriteLine($"账户号: {accountNumber}");
Console.WriteLine($"持有人: {holderName}");
Console.WriteLine($"当前余额: ¥{balance:F2}");
Console.WriteLine($"开户日期: {createDate:yyyy-MM-dd HH:mm}");
Console.WriteLine("==============================\n");
}

// 打印交易记录
public void PrintTransactions()
{
Console.WriteLine("\n========== 交易记录 ==========");
if (transactions.Count == 0)
{
Console.WriteLine("暂无交易记录");
}
else
{
foreach (var transaction in transactions)
{
Console.WriteLine(transaction);
}
}
Console.WriteLine("==============================\n");
}

// 计算利息(年利率3%,计算本月利息)
public void CalculateInterest()
{
decimal monthlyRate = 0.03m / 12; // 月利率
decimal interest = balance * monthlyRate;
balance += interest;
RecordTransaction($"利息结算: +¥{interest:F2},余额: ¥{balance:F2}");
Console.WriteLine($"利息已结算!获得利息: ¥{interest:F2}");
}

// 私有方法:记录交易
private void RecordTransaction(string description)
{
string record = $"[{DateTime.Now:yyyy-MM-dd HH:mm:ss}] {description}";
transactions.Add(record);
}
}

// 程序入口
class Program
{
static void Main(string[] args)
{
Console.WriteLine("=== 欢迎使用简易银行账户系统 ===\n");

// 创建账户
Console.Write("请输入账户号: ");
string accNum = Console.ReadLine();
Console.Write("请输入持有人姓名: ");
string name = Console.ReadLine();

BankAccount myAccount = new BankAccount(accNum, name);
Console.WriteLine("\n账户创建成功!\n");

// 主菜单循环
bool running = true;
while (running)
{
Console.WriteLine("请选择操作:");
Console.WriteLine("1. 存款");
Console.WriteLine("2. 取款");
Console.WriteLine("3. 查询余额");
Console.WriteLine("4. 查看账户信息");
Console.WriteLine("5. 查看交易记录");
Console.WriteLine("6. 结算利息");
Console.WriteLine("0. 退出");
Console.Write("\n> ");

string choice = Console.ReadLine();
Console.WriteLine();

switch (choice)
{
case "1":
Console.Write("请输入存款金额: ");
if (decimal.TryParse(Console.ReadLine(), out decimal depositAmount))
{
myAccount.Deposit(depositAmount);
}
else
{
Console.WriteLine("输入无效!");
}
break;

case "2":
Console.Write("请输入取款金额: ");
if (decimal.TryParse(Console.ReadLine(), out decimal withdrawAmount))
{
myAccount.Withdraw(withdrawAmount);
}
else
{
Console.WriteLine("输入无效!");
}
break;

case "3":
Console.WriteLine($"当前余额: ¥{myAccount.GetBalance():F2}\n");
break;

case "4":
myAccount.PrintInfo();
break;

case "5":
myAccount.PrintTransactions();
break;

case "6":
myAccount.CalculateInterest();
break;

case "0":
running = false;
Console.WriteLine("感谢使用,再见!");
break;

default:
Console.WriteLine("无效选项,请重新选择。\n");
break;
}

if (running)
{
Console.WriteLine("按任意键继续...");
Console.ReadKey();
Console.Clear();
}
}
}
}
}