2.在上机练习4第1、2题的基础上,设计一个简单的成绩管理系统(GradeManager)。主要功能包括:
(1)每个学生可以选修多门课程,每门课程也可以有多个学生选修。
(2)记录每个学生每门课程的成绩,以百分制计算,保留1位小数。
(3)学生可以查询自己单门课程或所有课程的成绩。
(4)合理选择数据结构以提高查询效率。
设计时,采用层次化设计法,将类分为界面层(ui)、功能层(business)和持久层(persistence)3层,放在不同子包中。整个系统的代码放在exe6_2包中
business.java
package exe6_2.business;
import java.util.Collection;
import java.util.HashMap;
import java.util.Scanner;
import java.util.Iterator ;
public class business {
exe6_2.persistence.persistence test = new exe6_2.persistence.persistence();
Scanner in = new Scanner(System.in);
public void xuanxiu()
{
String xuehao = new String(in.nextLine());
String kecheng = new String(in.nextLine());
String chengji = new String("0.0");
test.HashCourse.put(kecheng, chengji);
test.yingshe.put(xuehao, test.HashCourse);
}
public void jiluchengji()
{
String xuehao = new String(in.nextLine());
String kecheng = new String(in.nextLine());
String chengji = new String(in.nextLine());
test.HashCourse.put(kecheng, chengji);
test.yingshe.put(xuehao, test.HashCourse);
}
public static String getKey(HashMap<String,String> map,String keys)
{
String key = null;
for(String getKey: map.keySet()){
if(map.get(getKey).equals(keys)){
key = getKey;
}
}
return key;
//这个key肯定是最后一个满足该条件的key.
}
public void chaxundanke()
{
String xuehao = new String(in.nextLine());
String kecheng = new String(in.nextLine());
System.out.println(test.yingshe.get(xuehao).get(kecheng));
}
public void chaxunsuoyou()
{
String xuehao = new String(in.nextLine());
Collection<String> values = test.yingshe.get(xuehao).values() ;// 得到全部的value
Iterator<String> iter = values.iterator() ;
while(iter.hasNext()){
String str = iter.next() ;
System.out.println(getKey(test.yingshe.get(xuehao),str)+":"+str) ;
}
}
}
persistence.java
package exe6_2.persistence;
import java.util.HashMap;
public class persistence {
public HashMap<String,String> HashCourse = new HashMap<String,String>();
public HashMap<String,HashMap<String,String>>yingshe=new HashMap<String,HashMap<String,String>>();
}