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

C#实现批量读取学生成绩文件并计算平均分功能咨询

C# 批量提取学生期末成绩并计算平均分实现思路

核心实现步骤

  • 获取目标文件夹下的所有TXT文件
    使用Directory.GetFiles方法筛选指定文件夹内的.txt文件,推荐结合FolderBrowserDialog让用户选择目标文件夹(避免硬编码路径),示例代码:

    // 通过FolderBrowserDialog获取用户选择的文件夹路径
    using var folderDialog = new FolderBrowserDialog();
    if (folderDialog.ShowDialog() != DialogResult.OK) return;
    
    var txtFiles = Directory.GetFiles(folderDialog.SelectedPath, "*.txt", SearchOption.TopDirectoryOnly);
    
  • 读取文件并提取期末成绩
    先明确TXT文件中成绩的存储格式(比如固定关键词行、特定位置行),再编写解析逻辑:
    假设文件中存在类似期末成绩:85的行,可通过以下方式提取数值:

    var scores = new List<double>();
    foreach (var filePath in txtFiles)
    {
        try
        {
            var lines = File.ReadAllLines(filePath);
            foreach (var line in lines)
            {
                if (line.Contains("期末成绩:"))
                {
                    // 分割字符串提取成绩部分并转换为数字
                    var scoreStr = line.Split(':')[1].Trim();
                    if (double.TryParse(scoreStr, out var score))
                    {
                        scores.Add(score);
                    }
                    break; // 找到成绩后跳出当前文件的行循环
                }
            }
        }
        catch (Exception ex)
        {
            // 记录错误,可在TextBox中提示异常文件
            textBoxResult.Text += $"读取文件 {Path.GetFileName(filePath)} 出错:{ex.Message}\r\n";
        }
    }
    

    注:如果成绩存储格式不同(比如单独一行、固定位置),只需调整行筛选和数值提取的逻辑即可。

  • 计算平均分并显示结果
    先判断有效成绩数量,避免除以0的异常,再计算平均分并输出到TextBox:

    if (scores.Count > 0)
    {
        var averageScore = scores.Average();
        // 保留两位小数显示
        textBoxResult.Text += $"期末成绩平均分:{averageScore:F2}\r\n";
    }
    else
    {
        textBoxResult.Text = "未找到有效期末成绩数据";
    }
    

优化建议

  • 异步处理:当文件数量上千时,用await Task.Run(() => { /* 批量处理逻辑 */ })包裹文件读取和解析代码,避免UI线程卡顿。
  • 错误日志:可将读取失败的文件信息记录到日志文件,方便后续排查问题。
  • 格式兼容:如果不同文件的成绩格式有差异,可增加多种解析规则的判断,提升兼容性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 08:27:39