Java基础---学生成绩操作系统
来源:互联网 发布:java threadlocal用法 编辑:程序博客网 时间:2024/04/29 22:22
已知如下:
下表为某班级四次考试成绩单,
1. 要求使用HashMap<String,Integer>存储每次考试的成绩(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)查询某个学生的某次考试成绩(学生姓名和考试次数均由后台用户输入)。
(6) 使用TreeMap对学生总成绩进行排名输出
提示:
例如第一次考试成绩,应该存储为如下格式:
HashMap<String, Integer> m = newHashMap<String, Integer>();
m.put(“张三”, 80);
m.put(“李四”, 65);
m.put(“王五”, 35);
m.put(“薛六”, 90);
m.put(“赵七”, 70);
答案;
1、首先新建一个类,将学生的姓名、成绩封装。
public class Scores {private int times;private String name;private int score;private String[] names = new String[]{"张三", "李四", "王五", "薛六", "赵七"};public String[] getNames() {return names;}public int getTimes() {return times;}public void setTimes(int times) {this.times = times;}public String getName() {return name;}public void setNames(String name) {this.name = name;}public int getScore() {return score;}public void setScore(int score) {this.score = score;}}
2、再建一个类,去实现题目要求的6个功能。其中第六个功能需要用TreeMap进行排序,所以比较麻烦。为了能实现对TreeMap中的值的排序,需要再建一个类调用Comparable接口,同时重写compareTo()方法。
import java.util.HashMap;import java.util.Iterator;import java.util.LinkedList;import java.util.Map.Entry;import java.util.Scanner;import java.util.Set;import java.util.TreeMap;public class ScoresService{Scores stuScores = new Scores();Scanner scanner = new Scanner(System.in);//格式输出学生的姓名和成绩public void output(LinkedList> lScores){System.out.println("+---------------+-----------------------+-----------------------+-----------------------+-----------------------+");System.out.println("|\t姓名\t|" + "\t第一次考试成绩\t|"+"\t第二次考试成绩\t|"+"\t第三次考试成绩\t|"+"\t第四次考试成绩\t|");System.out.println("+---------------+-----------------------+-----------------------+-----------------------+-----------------------+");for(int i = 0 ; i < stuScores.getNames().length ; i ++){System.out.println("|\t" + stuScores.getNames()[i] + "\t|\t" + lScores.get(0).get(stuScores.getNames()[i]) + "\t\t|\t" +lScores.get(1).get(stuScores.getNames()[i]) + "\t\t|\t" +lScores.get(2).get(stuScores.getNames()[i])+ "\t\t|\t" +lScores.get(3).get(stuScores.getNames()[i]) + "\t\t|");System.out.println("+---------------+-----------------------+-----------------------+-----------------------+-----------------------+");}}//查询某次考试的总成绩public void queryExamSum(LinkedList > lScores){int sum = 0;System.out.println("请输入考试次序:");int time = scanner.nextInt();for(int i = 0 ; i < stuScores.getNames().length ; i ++){sum += lScores.get(time - 1).get(stuScores.getNames()[i]);}System.out.println("第" + time + "次考试的总分为:" + sum);}//查询某位考生四次考试的总成绩public void queryStudentSum(LinkedList > lScores){int sum = 0;System.out.println("请输入学生姓名:");String name = scanner.next();for(int i = 0 ; i < lScores.size() ; i ++){sum += lScores.get(i).get(name);}System.out.println(name + "四次考试的总分为:" + sum);}//查询某位考生的平均分public void queryStudentAverageScore(LinkedList > lScores){int sum = 0;System.out.println("请输入学生姓名:");String name = scanner.next();for(int i = 0 ; i < lScores.size() ; i ++){sum += lScores.get(i).get(name);}int avg = sum / lScores.size();System.out.println(name + "四次考试的平均分为:" + avg);}//查询历次考试中平均分最高的一次, 并输出该次平均分public void queryHighestAverage(LinkedList > lScores){int sum;double maxAvg = 0;int time = 0;for(int i = 0 ; i < lScores.size() ; i ++){sum = 0;for(int j = 0 ; j < stuScores.getNames().length ; j ++){sum += lScores.get(i).get(stuScores.getNames()[j]);}double avg = sum / stuScores.getNames().length;System.out.println("第" + (i + 1) + "次考试全班的平均分为:" + avg);if(maxAvg < avg){maxAvg = avg;time = i + 1;}}System.out.println("全班平均分最高的一次考试是第" + time + "次, 该次平均分为:" + maxAvg);}//查询某同学的某次考试成绩public void queryStudentAndExamSum(LinkedList > lScores){int score = 0;System.out.println("请输入考试次序:");int time = scanner.nextInt();System.out.println("请输入想要查询的同学的姓名:");String name = scanner.next();score = lScores.get(time - 1).get(name);System.out.println(name + "同学的第" + time + "次的考试成绩为:" + score);}//使用TreeMap对学生总成绩进行排名输出public void SumSortByTreeMap(LinkedList > lScores){HashMap stuSum = new HashMap ();int sum = 0;for(int i = 0 ; i < stuScores.getNames().length ; i ++){sum = 0;for(int j = 0 ; j < lScores.size() ; j ++){sum += lScores.get(j).get(stuScores.getNames()[i]);stuSum.put(stuScores.getNames()[i], sum);}}//将HashMap传入StuSum,使用对value(即历次考试总分)排序的compareTo()方法进行排序StuSum tempMap = new StuSum(stuSum);//将传出的HashMap装入TreeMapTreeMap sortedMap = new TreeMap (tempMap);sortedMap.putAll(stuSum);//将TreeMap转化为Entry类,该类具有TreeMap的键(Key)和值(Value) Set > sortedSet = sortedMap.entrySet();//将Entry装入迭代器,进行遍历输出Iterator > iter = sortedSet.iterator();while(iter.hasNext()){Entry type = (Entry ) iter.next();String k = type.getKey();int v = type.getValue();System.out.println(k + "<----------->" + v);}}}
import java.util.Comparator;import java.util.Map;public class StuSum implements Comparator{Map map;public StuSum(Map map){this.map = map;}@Overridepublic int compare(String s1, String s2) {// TODO Auto-generated method stubif(map.get(s1) >= map.get(s2)){return -1;}else{return 1;}}}
import java.util.HashMap;import java.util.Iterator;import java.util.LinkedList;import java.util.Scanner;import java.util.Set;public class ScoresDemo {public static void main(String[] args) {Scores stuScores = new Scores();ScoresService ss = new ScoresService();LinkedList> lScores = new LinkedList >();Scanner scanner = new Scanner(System.in);//以 i 来计考试次数for(int i = 0; i < 4; i ++){HashMap hScores = new HashMap ();//以 j 来计第几个考生的成绩for(int j = 0; j < stuScores.getNames().length; j ++){System.out.println("请输入" + stuScores.getNames()[j] + "的第" + (i + 1) + "门的成绩:");int n = scanner.nextInt();hScores.put(stuScores.getNames()[j], n);}lScores.add(hScores);}//遍历输出ss.output(lScores);ss.queryExamSum(lScores);ss.queryHighestAverage(lScores);ss.queryStudentAndExamSum(lScores);ss.queryStudentAverageScore(lScores);ss.queryStudentSum(lScores);ss.SumSortByTreeMap(lScores);}}
阅读全文
1 0
- Java基础---学生成绩操作系统
- c++基础:学生成绩
- Java基础之JAVA语法—学生成绩
- Java:学生成绩转换
- java 统计十个学生成绩
- Java基础回顾_二维数组计算班级学生成绩_简单
- Java基础编程之利用条件运算符的嵌套来计算学生成绩
- 学生成绩
- 学生成绩
- 学生成绩
- 学生成绩
- 学生成绩
- 学生成绩
- 学生成绩
- 学生成绩
- Java数据结构课程设计 学生成绩管理
- java简单学生成绩管理笔记
- Java综合性实验 - 学生成绩分析程序
- java实现大整数的加减乘除法(百练OJ:2736、2737、2980、2981)
- C#流程设计
- UVA-1347
- [Winform]默认以管理员身份运行程序
- Eclipse的maven 项目出现 Multiple problems have occurred 或 Problems Occurred的解决办法
- Java基础---学生成绩操作系统
- hdu 5690 All X
- wireshark捕捉过滤器
- 64位ubuntu14.04安装交叉编译器arm-linux-gcc出现没有那个文件或目录
- 树莓派第一次使用WIN10电脑远程连接(无显示器)
- 对象
- 怎么绘制两条极坐标曲线的公共部分呢?
- DOM
- eclipse反向生成实体类