package day1201;
import java.util.HashMap;
import java.util.Map;
public class Course {
public static Map<String,Integer> hm = new HashMap();
private String course;//课程名
public Course(){}
public Course(String course){
this.setCourse(course);
hm.put(course, 0);
}
public void SelectCourse(String course){// 该学生成功选课,该课程选修人数加一
Integer n = hm.get(course);
hm.put(course,Integer.valueOf(n+1));//更新 HashMap 中的key为course的相应值
}
public void deleteCourse(String course){// 该学生成功退选课,该课程选修人数减一
Integer n = hm.get(course);
hm.put(course, Integer.valueOf(n-1));//更新 HashMap 中的key为course的相应值
}
public String getCourse() {
return course;
}
public void setCourse(String course) {
this.course = course;
}
@Override
public String toString(){
return course;
}
}
********************************
package day1201;
import java.util.HashSet;
import java.util.Iterator;
public class Student {
private HashSet hs;
private int id; //学生学号
private String name;
public Student(){
hs = new HashSet(3);
}
public Student(int id,String name){
this();
this.setId(id);
this.setName(name);
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void addCourse(Course c){ //添加该学生的选课
if(hs.add(c)){
c.SelectCourse(c.getCourse());
}
}
public void removeCourse(String name){ //删除该学生所选的对应课程
Iterator it = hs.iterator();
while(it.hasNext()){
Object obj = it.next();
Course c =(Course)obj;
while(c.getCourse().equals(name)){
it.remove();
c.deleteCourse(name);
break;
}
}
}
public void removeAllCourse(){ //删除该学生所选的所有课程
Iterator it = hs.iterator();
while(it.hasNext()){
Object obj = it.next();
Course c =(Course)obj;
it.remove();
c.deleteCourse(c.getCourse());
}
}
@Override
public String toString(){
return name+"\t选的课程为:"+hs.toString();
}
}
************************
package day1201;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class SchoolClass {
private HashSet hs;
public SchoolClass(){
hs = new HashSet(3);
}
public void addStudent(Student s){//添加学生
hs.add(s);
}
public void removeStudent(String name){//开除学生
Iterator it = hs.iterator();
while(it.hasNext()){
Object obj = it.next();
Student s =(Student)obj;
while(s.getName().equals(name)){
it.remove();
s.removeAllCourse();
break;
}
}
}
public static void main(String[] args) {
SchoolClass sc1 = new SchoolClass();//创建一个班级
Student s1 = new Student(1,"zhang");//构造3个学生,名字前面的是学号
Student s2 = new Student(2,"li");
Student s3 = new Student(3,"wang");
Course c1 = new Course("math");//构造4门课程
Course c2 = new Course("computer");
Course c3 = new Course("history");
Course c4 = new Course("physics");
sc1.addStudent(s1);//将3名学生放入班级sc1中
sc1.addStudent(s2);
sc1.addStudent(s3);
s1.addCourse(c1);//给学生1选课
s1.addCourse(c2);
s1.addCourse(c3);
s1.addCourse(c4);
s2.addCourse(c1);//给学生2选课
s2.addCourse(c2);
s2.addCourse(c3);
s2.addCourse(c2);//选一重复课程,检验程序用
s3.addCourse(c2);//给学生3选课
s3.addCourse(c1);
s2.removeCourse("computer");//学生2退选一门课程
sc1.removeStudent("wang");//开除一学生
//输出各门课程的选课人数
Map<String,Integer> hh=Course.hm;
Set<String> set =hh.keySet();
for(String str : set){
System.out.println("选["+str+"] \t的人数为:"+hh.get(str));
}
System.out.println();
//输出各个学生的选课情况
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
}
}
*********************
运行结果:
选[history] 的人数为:2
选[computer] 的人数为:1
选[math] 的人数为:2
选[physics] 的人数为:1
zhang 选的课程为:[physics, math, history, computer]
li 选的课程为:[history, math]
wang 选的课程为:[]