我帮你写了一个,所有功能都能实现,但是最后计算每门课程有多少学生选修了..
实现的方法好像不太好..请问下会的朋友对于这种情况有没有更好的方法来判断
每门课有多少学生选修了.谢谢! (下面代码蓝色部份为判断每门课有多少学生选修的方法)
public class Course
{
private String name;
private int count = 0; //此门课程选修人数
public Course()
{}
public void addCourse() //添加课程选修总数
{
count++;
}
public void removeCourse() //删除课程总数
{
if(count>0)
count--;
else
System.out.println("已经没有课程可删了");
}
public int getCount() //得到报此课程的人数;
{
return count;
}
public Course(String name)
{
this.name = name;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
}
import java.util.HashSet;
public class Student
{
private HashSet<Course> hsCourse = new HashSet<Course>(); //所有课程
public HashSet getAllHsCourse() //得到所有课程
{
return hsCourse;
}
public void addCourse(Course c) //添加课程
{
hsCourse.add(c);
c.addCourse();
}
public void removeCourse(String name) //删除课程
{
for(Course c : hsCourse)
{
if(c.getName().equals(name))
{
hsCourse.remove(name);
c.removeCourse();
}
}
}
public void printAllCourse() //显示此学生所选中的所有课程
{
for(Course c : hsCourse)
{
System.out.println(c.getName());
}
}
}
import java.util.HashSet;
public class SchoolClass
{
HashSet<Student> hsStudent = new HashSet<Student>();
public void addStudent(Student s) //添加学生
{
hsStudent.add(s);
}
public void removeStudent(String name) //删除学生
{
hsStudent.remove(name);
}
public void printAllStudent() //显示所有学生
{
for(Student stu : hsStudent)
{
System.out.println(stu);
}
}
}
public class Test
{
public static void main(String[] args)
{
SchoolClass objSchool = new SchoolClass();
Course chineseCourse = new Course("chinese");
Course englishCourse = new Course("english");
Student stu1 = new Student();
Student stu2 = new Student();
objSchool.addStudent(stu1); //添加学生
stu1.addCourse(chineseCourse);//学生1加课程
stu1.addCourse(englishCourse);
stu2.addCourse(chineseCourse);
stu1.printAllCourse(); //打印学生1选的所有课程
stu1.removeCourse("english"); //学生1删除选项中课程
stu1.printAllCourse();
System.out.println("语文课有" + chineseCourse.getCount()+"位学生选修!");
System.out.println("英语课有" + englishCourse.getCount()+"位学生选修!");
}
}