题目:
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);