You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

计算机科学项目:如何用C#改写文本文件中特定字符串(余额更新)

解决ATM存款后更新文本文件余额的问题

你现在的核心问题是没有先读取原有账户数据就直接写文件,而且直接用StreamWriter会清空原文件内容。要实现更新余额,得先把文件里的所有账户信息读出来,修改余额后再完整写回文件。

结合你已经掌握的结构体、StreamReader/StreamWriter,具体步骤如下:

  • 读取原有账户信息:用StreamReader逐行读取文本文件,把每行内容对应填充到bankAccount结构体里(余额需转成整数)。
  • 计算更新后的余额:把存款金额加到原有余额上。
  • 重新写入完整账户信息:用StreamWriter把更新后的所有账户字段按原格式写回文件,覆盖原有内容。

修改后的完整代码段

// 先读取原有账户信息到结构体(假设你已定义BankAccount结构体)
BankAccount bankAccount = new BankAccount();
using (StreamReader reader = new StreamReader("AccountInfo.txt"))
{
    bankAccount.AccountNumber = reader.ReadLine();
    bankAccount.Name = reader.ReadLine();
    bankAccount.NIP = reader.ReadLine();
    bankAccount.TotalBalance = int.Parse(reader.ReadLine());
}

switch (choice)
{
    case 1:
        Console.Write("Entrez le montant à déposer : ");
        int depositAmount = Convert.ToInt32(Console.ReadLine());
        while (depositAmount < 2 || depositAmount > 20000)
        {
            Console.Write("Entrez le montant à déposer (min $2 max $20,000) : ");
            depositAmount = Convert.ToInt32(Console.ReadLine());
        }

        // 更新余额
        bankAccount.TotalBalance += depositAmount;

        // 把更新后的账户信息写回文件
        using (StreamWriter myfilewrite = new StreamWriter("AccountInfo.txt"))
        {
            myfilewrite.WriteLine(bankAccount.AccountNumber);
            myfilewrite.WriteLine(bankAccount.Name);
            myfilewrite.WriteLine(bankAccount.NIP);
            myfilewrite.WriteLine(bankAccount.TotalBalance);
        }

        DisplayTransaction(bankAccount.AccountNumber, bankAccount.Name, bankAccount.NIP, bankAccount.TotalBalance);
        break;
}

关键细节说明

  • 用using语句包装流对象:它会自动关闭文件,避免资源泄漏(新手容易忘记手动关文件导致报错)。
  • 严格对应文件行顺序:你的文件是「账号→姓名→PIN→余额」,读取和写入的顺序必须完全一致,否则会出现数据错乱。
  • 后续可以优化输入校验:比如用int.TryParse替代Convert.ToInt32,避免用户输入非数字内容时程序崩溃。

内容的提问来源于stack exchange,提问作者Optik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 20:25:13