文件读写-成绩分析

82 阅读1分钟

任务如下:

1.计算每个同学的总分和平均分

  1. 统计每个科目的平均分

  2. 列出总分前3名和单科前3名,并保存结果到文件中

学生的成绩示例:

姓名,语文,数学,英语
张伟,87,92,88
李娜,90,85,95
王强,78,90,82

(一)任务分析

分成三步来完成按行读入,并拆分。

(1)组装对象数组

(2)对对象数组做数据处理

(3)保存结果到文件。

(二)按行读取文本文件

由于一行表示一条数据,所以,我们可以一次读入一行。以下是读取文件并打印每一行的示例:

import scala.io.Source

object SourceReadExample {

  def main(args: Array[String]) {

    val source = Source.fromFile("input.txt")

    for (line <- source.getLines()) {

      println(line)

    }

    source.close()

  }}

(三)组装数据对象

思路:定义case class ,分别去new 对象,并赋值。

case class Student(name:String, yuwen:Double, shuxue: Double, yingyu:Double)   
    val source = Source.fromFile("input.txt")

    for (line <- source.getLines()) {

      val(name, yuwen, shuxue, yingyu) = line.split(",")  
      stuList += Student(name, yuwen, shuxue, yingyu)

  }  
  
  
}

(四)分析数据

任务1:计算每个人的总分和平均分

for(s <-studentList) {  
 total = s.yuwen + s.shuxue + s.yingyu  
 avg = total / 3  
}

任务2:统计每个科目的平均分

(1)对List中的每个学生,使用foreach计算每门课程的成绩

(2)除以总数

任务3:列出总分前3名和单科前3名

思路:对数组进行三次不同的排序,对应得到三个不同的排序数组。

操作:使用sortBy函数进行排序