实验五 关卡一
任务描述
本关任务:设计一个程序,管理一个班级的若干学生(学生的姓名是唯一的),每个学生都修了若干门课程,没门课程都有了一个成绩。但一个班的同学修的课程不完全一样。
要求:
该程序用集合框架的Map接口来实现。学生用Map来存储,键用学生姓名,值是另一个存储课程的Map;每个同学修的若干门课程也用Map来存储,键是课程名称,值是该课程的成绩。
将把完成的工作放在Class类中。 类名:Class public Class(String name) 构造函数,name为班级名称;
public void addCourseGrade(String stuname,String []Coursenames,Integer[] grades) 增加学生及课程的数据,stuname 学生姓名,Coursenames多个课程名,grades对应的多个分数;
public void addCourseGrade(String stuname,String Coursename,Integer grade) 增加学生及课程的数据,stuname 学生姓名,Coursename课程名,grade对应的分数;
public void delStudent(String stuname) 删出一个学生,stuname学生姓名;
public void delStuCourse(String stuname,String Coursename) 删出一个学生的一门课程,stuname学生姓名,Coursename课程名;
public double getPerAvgStudent(String stuname)返回一个学生的所有课程的平均成绩,stuname学生姓名;
``
public double getClassAvgCourse(String Coursename) 返回一个班某门课程的平均成绩,如果该班有同学没选修该门课程,平均成绩不计算该同学,Coursename为课程名。
package step1;
import java.util.*;
//在此写Class类
public class Class {
String classname = null;
String stuname = null;
HashMap<String,ArrayList<HashMap<String,Integer>>> nameprojects = new HashMap<>();//姓名、课程
public Class(String classname){
this.classname = classname;
}
public void addCourseGrade(String stuname,String Coursename,Integer grade){
ArrayList<HashMap<String,Integer>> stuList = nameprojects.get(stuname);
if(stuList == null) {
stuList = new ArrayList<>();
nameprojects.put(stuname, stuList);
}
HashMap<String,Integer> courseGrade = new HashMap<>();
courseGrade.put(Coursename, grade);
stuList.add(courseGrade);
}
public void addCourseGrade(String stuname,String[] Coursenames,Integer[] grades){
for(int i = 0;i < Coursenames.length;i++){
ArrayList<HashMap<String,Integer>> stuList = nameprojects.get(stuname);
if(stuList == null) {
stuList = new ArrayList<>();
nameprojects.put(stuname, stuList);
}
HashMap<String,Integer> courseGrade = new HashMap<>();
courseGrade.put(Coursenames[i], grades[i]);
stuList.add(courseGrade);
}
}
public void delStudent(String stuname){
nameprojects.remove(stuname);
}
public void delStuCourse(String stuname,String Coursename) {
for (Map.Entry<String, ArrayList<HashMap<String, Integer>>> delet : nameprojects.entrySet()) {
if (delet.getKey().equals(stuname)) {
for(HashMap<String,Integer> deletCourse : delet.getValue()){
deletCourse.remove(Coursename);
}
}
}
}
public double getPerAvgStudent(String stuname){
double sum = 0;
int count = 0;
for (Map.Entry<String,ArrayList<HashMap<String,Integer>>> find_name : nameprojects.entrySet()) {
if(find_name.getKey().equals(stuname)){
for(HashMap<String,Integer> SUM : find_name.getValue()){
for(Map.Entry<String,Integer> Sum : SUM.entrySet()){
sum = sum + Sum.getValue();
count++;
}
}
}
}
return sum/count;
}
public double getClassAvgCourse(String Coursename){
double sum = 0;
int count = 0;
for (Map.Entry<String,ArrayList<HashMap<String,Integer>>> find_name : nameprojects.entrySet()) {
for(HashMap<String,Integer> SUM : find_name.getValue()){
for(Map.Entry<String,Integer> Sum : SUM.entrySet()){
if(Sum.getKey().equals(Coursename)){
sum = sum + Sum.getValue();
count++;
}
}
}
}
return sum/count;
}
}