题目:

1. 要求使用HashMap存储每次考试的成绩(key键为姓名,value为成绩)。

2. 要求使用LinkedList存储考试次数,有几次考试就有几个HashMap 。

3. 注意:后台用户是知道学生姓名的。

形式如:LinkedList<HashMap<String,Integer>>

姓名

第一次考试成绩

第二次考试成绩

第三次考试成绩

第四次考试成绩

张三

80

88

86

88

李四

65

75

67

80

王五

35

45

55

59

薛六

90

92

98

88

赵七

70

75

65

68

要求是实现的功能

(1)查询某次考试的总成绩?(具体考试次数由后台用户输入Scanner决定)。

(2)查询某个学生的总成绩?(具体学生由后台用户输入Scanner决定)。

(3)查询某个学生的平均成绩?(具体学生由后台用户输入Scanner决定)。

(4)查询全班平均分最高的一次考试成绩是哪次,并输出平均成绩的具体值。

(5)查询某个学生的某次考试成绩(学生姓名和考试次数均由后台用户输入)。

提示:

例如第一次考试成绩,应该存储为如下格式:

HashMap<String,Integer> m = new HashMap<String,Integer>();

m.put(“张三”, 80);

m.put(“李四”, 65);

m.put(“王五”, 35);

m.put(“薛六”, 90);

m.put(“赵七”, 70);


import java.util.HashMap;
import java.util.LinkedList;
import java.util.Map;
//存储学生的成绩信息
public class StudentScore {
	LinkedList<Map<String, Integer>> list = new LinkedList<Map<String, Integer>>();
		Map<String, Integer> map1 = new HashMap<String, Integer>();
		map1.put("张三", 80);
		map1.put("李四", 65);
		map1.put("王五", 35);
		map1.put("薛六", 90);
		map1.put("赵七", 70);
		Map<String, Integer> map2 = new HashMap<String, Integer>();
		map2.put("张三", 88);
		map2.put("李四", 75);
		map2.put("王五", 45);
		map2.put("薛六", 92);
		map2.put("赵七", 75);
		Map<String, Integer> map3 = new HashMap<String, Integer>();
		map3.put("张三", 86);
		map3.put("李四", 67);
		map3.put("王五", 55);
		map3.put("薛六", 98);
		map3.put("赵七", 65);
		Map<String, Integer> map4 = new HashMap<String, Integer>();
		map4.put("张三", 88);
		map4.put("李四", 80);
		map4.put("王五", 59);
		map4.put("薛六", 88);
		map4.put("赵七", 68);
		list.add(map1);
		list.add(map2);
		list.add(map3);
		list.add(map4);
	public LinkedList<Map<String, Integer>> getList() {
		return list;
}
import java.util.LinkedList;
import java.util.Map;
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        StudentScore score = new StudentScore();
        LinkedList<Map<String, Integer>> list = score.getList();//将学生信息存入list中
        System.out.println("*--------------------------------------------------*");
        System.out.println("1.查询某次考试的总成绩                                 *");
        System.out.println("2.查询某个学生的总成绩                                 *");
        System.out.println("3.查询某个学生平均成绩                                 *");
        System.out.println("4.查询全班平均成绩最高的考试是哪次,并输出平均成绩的具体值    *");
        System.out.println("5.查询某个学生某次考试的成绩                            *");
        System.out.println("6.退出查询                                           *");
        System.out.println("*                                                  *");
        inputNumber(list);
    public static void inputNumber(LinkedList<Map<String, Integer>> list) {//实现主界面的功能,输入1~6
        System.out.println("*--------------------------------------------------*");
        System.out.println("请输入1~6来选择想要实现的功能:                          ");
        Scanner scanner = new Scanner(System.in);
        int a;
        try {
            a = scanner.nextInt();
        } catch (Exception e) {
            a = -1;
        switch (a) {
            case 1:
                anExamTotalScore(list);
                inputNumber(list);//回到主界面重新输入1~6
                break;
            case 2:
                aStudentTotalScore(list);
                inputNumber(list);
                break;
            case 3:
                aStudentAverageScore(list);
                inputNumber(list);
                break;
            case 4:
                theWholeClassEveryGrade(list);
                inputNumber(list);
                break;
            case 5:
                aStudentOneScore(list);
                inputNumber(list);
                break;
            case 6:
                System.out.println("程序成功退出!");
                System.out.println("*--------------------------------------------------*");
                System.exit(0);
            default:
                System.out.println("*--------------------------------------------------*");
                System.out.println("输入有误!请重新输入!");
                inputNumber(list);
                break;
    /*------------------------------------查询某次考试的总成绩----------------------------------------------*/
    public static void anExamTotalScore(LinkedList<Map<String, Integer>> list) {
        System.out.println("*--------------------------------------------------*");
        System.out.println("您想要查询第几次考试的总成绩:");
        Scanner scanner = new Scanner(System.in);
        int a;
        try {
            a = scanner.nextInt();
        } catch (Exception e) {
            a = 8;
        if (a > 0 && a <= 4) {
            int sum = 0;
            for (String key : list.get(a - 1).keySet()) {
                sum += list.get(a - 1).get(key);//获取list集合中的某个map元素,并把该map中所有key对应的value值相加
            System.out.println("第" + a + "次考试的总成绩为" + sum + "分");
        } else {
            System.out.println("您输入的考试场次不存在或不合法,请重新输入!");
            anExamTotalScore(list);
    /*----------------------------------------查询某个学生的总成绩 -----------------------------------------*/
    public static void aStudentTotalScore(LinkedList<Map<String, Integer>> list) {
        System.out.println("*--------------------------------------------------*");
        System.out.println("请输入学生姓名:");
        Scanner scanner = new Scanner(System.in);
        String a;
        int sum = 0;
        try {
            a = scanner.next();
            for (int i = 0; i < list.size(); i++) {
                sum += list.get(i).get(a);
            System.out.println(a + "的总成绩为" + sum);
        } catch (Exception e) {
            a = "hhh";
            System.out.println("*--------------------------------------------------*");
            System.out.println("该名字输入不合法或不存在,请重新输入!");
            aStudentTotalScore(list);
    /*-------------------------------------查询某个学生的平均成绩---------------------------------------*/
    public static void aStudentAverageScore(LinkedList<Map<String, Integer>> list) {
        System.out.println("*--------------------------------------------------*");
        System.out.println("请输入学生姓名");
        Scanner scanner = new Scanner(System.in);
        String name;
        int sum = 0;
        try {
            name = scanner.next();
            for (int i = 0; i < list.size(); i++) {
                sum += list.get(i).get(name);
            System.out.println(name + "的平均成绩为" + sum / (list.size() + 1));
        } catch (Exception e) {
            name = "hhh";
            System.out.println("*--------------------------------------------------*");
            System.out.println("该名字输入不合法或不存在,请重新输入!");
            aStudentAverageScore(list);
    /*--------------------------------------查询全班平均成绩最高的考试是哪次,并输出平均成绩的具体值-------------------------------------*/
    public static void theWholeClassEveryGrade(LinkedList<Map<String, Integer>> list) {
        System.out.println("*--------------------------------------------------*");
        int max = 0;
        int once = 1;
        int n = 0;
        for (int i = 0; i < list.size(); i++) {
            int sum = 0;
            n = 0;
            for (String key : list.get(i).keySet()) {
                sum += list.get(i).get(key);
            if (max < sum) {
                max = sum;
                once = i + 1;
        System.out.println("全班平均成绩最高的是第" + once + "次,平均成绩是" + max / n + "分");
    /*-------------------------------------查询某个学生某次考试的成绩--------------------------------------*/
    public static void aStudentOneScore(LinkedList<Map<String, Integer>> list) {
        Scanner scanner = new Scanner(System.in);
        int n;
        String name;
        try {
            System.out.println("*--------------------------------------------------*");
            System.out.println("请输入要查询学生的姓名");
            name = scanner.next();
            System.out.println("请输入要查询考试的次数");
            n = scanner.nextInt();
            int score = list.get(n).get(name);
            System.out.println(name + "的第" + n + "次考试成绩为:" + score);
        } catch (Exception e) {
            System.out.println("您输入的学生考试信息不存在或不合法!请重新输入!");
            aStudentOneScore(list);