快速学习scala语法和数据结构,完成以下作业内容。
以下数据包含了某大学某专业学生的成绩,数据格式如下所示:
Tom,DataBase,80
Tom,Algorithm,50
Tom,DataStructure,60
Jim,DataBase,90
Jim,Algorithm,60
Jim,DataStructure,80
Jack,DataBase,92
Jack,Algorithm,62
Jack,DataStructure,82
请根据以上给定的实验数据,在scala中通过编程来计算以下内容:
(1)该系总共有多少学生;
(2)该系共开设了多少门课程;
(3)Tom同学的总成绩平均分是多少;
(4)求每名同学的选修的课程门数;
(5)该系DataBase课程共有多少人选修;
(6)各门课程的平均分是多少;
import scala.collection.mutableobject Homework {def main(args: Array[String]): Unit = {val map = Map(("Tom", "DataBase") -> 80,("Tom", "Algorithm") -> 50,("Tom", "DataStructure") -> 60,("Jim", "DataBase") -> 90,("Jim", "Algorithm") -> 60,("Jim", "DataStructure") -> 80,("Jack", "DataBase") -> 92,("Jack", "Algorithm") -> 62,("Jack", "DataStructure") -> 82)// 该系总共有多少学生;printf("该系总共有%d名学生\n", calculate_department_length(map))// 该系共开设了多少门课程;printf("该系共开设了%d门课程\n", calculate_course_length(map))//Tom同学的总成绩平均分是多少;printf("Tom同学的总成绩平均分是%.2f\n", calculate_student_average_grade(map, "Tom"))//求每名同学的选修的课程门数;val set_student = mutable.Set[String]()val set_course = mutable.Set[String]()map.keys.foreach(tuple => {set_student += tuple._1set_course += tuple._2})for (student <- set_student) {printf("%s同学的选修的课程门数是%d\n", student, calculate_student_course_num(map, student))}// 该系DataBase课程共有多少人选修printf("该系DataBase课程共有%d人选修\n", calculate_course_num(map, "DataBase"))// 各门课程的平均分是多少;for (course <- set_course) {printf("%s课程的平均分是%.2f\n", course, calculate_course_average_grade(map, course))}}def calculate_department_length(map: Map[(String, String), Int]): Int = {// 定义一个可变set// 使用return 这样看起来比较舒服,和python3.10语法很像val set = mutable.Set[String]()for (student <- map.keys) {set += student._1}return set.size}def calculate_course_length(map: Map[(String, String), Int]): Int = {val set = mutable.Set[String]()for (student <- map.keys) {set += student._2}return set.size}def calculate_student_average_grade(map: Map[(String, String), Int], student_name: String): Double = {var grade: Double = 0val set = mutable.Set[String]()for (student <- map.seq) {if (student._1._1 == student_name) {set += student._1._2 //计算这名学生的课程数量grade += student._2 //计算学生总成绩}}return grade / set.size}def calculate_student_course_num(map: Map[(String, String), Int], student_name: String): Int = {val set = mutable.Set[String]()for (student <- map.seq) {if (student._1._1 == student_name) {set += student._1._2 //计算这名学生的课程数量}}return set.size}def calculate_course_num(map: Map[(String, String), Int], course_name: String): Int = {var length: Int = 0for (student <- map.seq) {if (student._1._2 == course_name) {length += 1 //该系课程共有多少人选修;}}return length}def calculate_course_average_grade(map: Map[(String, String), Int], course_name: String): Double = {var grade: Double = 0var length: Int = 0for (student <- map.seq) {if (student._1._2 == course_name) {length += 1 //该系课程共有多少人选修;grade += student._2 // 计算总成绩}}return grade / length}
}