头歌实验平台Java实验五

实验五 关卡一

任务描述

本关任务:设计一个程序,管理一个班级的若干学生(学生的姓名是唯一的),每个学生都修了若干门课程,没门课程都有了一个成绩。但一个班的同学修的课程不完全一样。

要求:

该程序用集合框架的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;
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只菜鸟呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值