選課系統很有意思,學生選擇一門課程以后,這門課程就會添加到這個學生的選課列表里面,同時這名學生也添加到了選擇這門課程的學生列表里面,也就是學生和課程是雙向選擇的。
創建課程類Course,設置三個屬性分別為名稱、學分、學生名單。
Course import java.util.ArrayList; import java.util.List; public class Course { private String name; private float grade; private List<Student> allStudents; public Course(String name,float grade){ this.setAllStudents(new ArrayList<Student>()); this.setGrade(grade); this.setName(name); } public void addStu(Student student){ this.allStudents.add(student); } public String getName() { return name; } public void setName(String name) { this.name = name; } public float getGrade() { return grade; } public void setGrade(float grade) { this.grade = grade; } public List<Student> getAllStudents() { return allStudents; } public void setAllStudents(List<Student> allStudents) { this.allStudents = allStudents; } }
創建學生類Student,設置三個屬性姓名、年齡、選課列表。
Student import java.util.ArrayList; import java.util.List; public class Student { private String name; private int age; private List<Course> allCourse;//一個學生可以選多門課 public Student(String name,int age){ this.setAge(age); this.setAllCourse(new ArrayList<Course>()); this.setName(name); } public void addCourse(Course course){ this.allCourse.add(course); } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public List<Course> getAllCourse() { return allCourse; } public void setAllCourse(List<Course> allCourse) { this.allCourse = allCourse; } }
創建測試類TestCourse,在里面創建五個學生三門課程,并對他們互相選擇,并把每個學生選得課程添加到各自的選課列表,把選擇每門課程的學生添加到各科的學生列表,然后進行遍歷,學生的課程列表和課程的學生列表。
TestCourse import java.util.Iterator; public class TestCourse { public static void main(String[] args) { Student stu1 = new Student("張三",20); Student stu2 = new Student("李四",21); Student stu3 = new Student("王五",22); Student stu4 = new Student("趙柳",23); Student stu5 = new Student("孫琦",24); Course c1 = new Course("Java se 基礎",2.0f); Course c2 = new Course("Java se web",3.0f); Course c3 = new Course("分布式開發",5.0f); // 設置關系 stu1.addCourse(c1); c1.addStu(stu1); stu1.addCourse(c2); c2.addStu(stu1); stu2.addCourse(c2); c2.addStu(stu2); stu3.addCourse(c1); c1.addStu(stu3); stu3.addCourse(c2); c2.addStu(stu3); stu3.addCourse(c3); c3.addStu(stu3); stu4.addCourse(c3); c3.addStu(stu4); stu5.addCourse(c3); c3.addStu(stu5); System.out.println("學生姓名:"+stu1.getName()); Iterator<Course> it1 = stu1.getAllCourse().iterator(); while(it1.hasNext()){ Course c = it1.next(); System.out.println("\t|-課程名稱:"+c.getName()+",學分:"+c.getGrade()); } System.out.println("課程名稱:"+c3.getName()); Iterator<Student> it2 = c3.getAllStudents().iterator(); while(it2.hasNext()){ Student s = it2.next(); System.out.println("\t|-學生姓名:"+s.getName()+",年齡:"+s.getAge()); } } }
結果顯示(只打印stu1和c1的列表)