简单模拟选课系统

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	选的课程为:[]

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值