3.5 设计学生成绩的数据结构

该程序使用HashMap来组织学生数据,每个学生的名字映射到另一个HashMap,该HashMap中课程名对应成绩。提供了录入分数、按学生查询成绩和按课程查询所有学生成绩的功能。程序实现了数据结构的有效存储和查找操作,适用于处理不完整的学生选课数据。
摘要由CSDN通过智能技术生成

如果要写程序表达一个班级的很多个学生的很多门课的成绩,应该如何表达这些数据?

如果我们希望通过学生的姓名,可以找到他的所有成绩,而每一门课的成绩,是由课程名称和分数构成的。

而如果我们还希望这个程序能找出某一门课的全部学生的成绩应该怎么做呢?

注意,并非所有的学生都参加了所有的课程。

import java.util.HashMap;

public class Scores {

	private HashMap<String,HashMap<String,Double>> scores = new HashMap<String,HashMap<String,Double>>();

	

	//录入分数

	public void setScores(String name,String subName,double score){

		if(scores.containsKey(name))

		{

			scores.get(name).put(subName, score);

		}

		else

		{

			HashMap<String,Double> temp = new HashMap<String,Double>();

			temp.put(subName, score);

			scores.put(name,temp);

		}

	}

	

	//通过姓名查询该学生所有成绩

	public void query(String name) {

		for( String temp : scores.get(name).keySet() )//scores.get(name)获取了该学生的<课程,成绩> HashMap,再对该HashMap用keySet()返回所有的课程集合 ,用temp来遍历课程

		{

			System.out.println(temp+": "+scores.get(name).get(temp));

		}

	}

	

	

	//通过课程查询所有选修该课的学生成绩

	public void queryBySubject(String subName) {

		//对每一个学生 遍历找到课程后输出成绩

		for( String name : scores.keySet() )

		{

			for(String temp : scores.get(name).keySet())

			{

				if( temp == subName )

				{

					System.out.println(name+": "+scores.get(name).get(subName));

				}

			}

		}

	}

	

	

	

	public static void main(String[] args) {

		// TODO Auto-generated method stub

		Scores scores = new Scores();

		scores.setScores("张三", "Chinese", 100);

		scores.setScores("张三", "Math", 100);

		scores.setScores("李四", "Chinese", 95);

		scores.setScores("李四", "Math", 95);

		scores.query("张三");

		System.out.println("-------------------------------");

		scores.queryBySubject("Chinese");

	}



}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值