學生選課程序:一個學生可以選多個課程,同樣一門課程不只是一個同學在選,有好多同
學選這門課程,這樣學生和課程之間就是一個多對多的關系。為此我們封裝一個學生類,
一個課程類。學生類里包括學生最基本的信息:姓名和年齡還有一個盛放課程的List集合
;在學生類里還有一個添加課程的方法addClasse;課程類里包括課程的基本信息:課程名
稱和學分,還有一個盛放學生的List集合;在課程類里還有一個添加學生的方法
addStudent。本程序還有一個測試類,在測試類里定義了一個List集合cseList,
用來盛放課程,然后定義了三門課程和四個學生。一個學
生選擇一門課程(使用Student類里的添加方法將這門課程添加到Student類定義的盛放課
程的集合里),那么這門課程必須添加這個學生(使用Course類里的添加方法將這個學生
添加到Course類定義的盛放學生的集合里)。
程序代碼如下:
//學生類
package com.dr.xuanke;
import java.util.ArrayList;
import java.util.List;
public class Student {
private String name;
private int age;
private List<Course> cseList;
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> getCseList() {
return cseList;
}
public void setCseList(List<Course> cseList) {
this.cseList = cseList;
}
public Student(String name,int age)
{
this.setName(name);
this.setAge(age);
this.setCseList(new ArrayList<Course>());
}
public void addCourse(Course cse)
{
this.cseList.add(cse);
}
public String toString()
{
return "\t\t\t|-"+"姓名:"+" "+this.name+" "+",年
齡:"+this.age;
}
}
//課程類
package com.dr.xuanke;
import java.util.ArrayList;
import java.util.List;
public class Course {
private String name;
private float score;
private List<Student> stuList;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public float getScore() {
return score;
}
public void setScore(float score) {
this.score = score;
}
public List<Student> getStuList() {
return stuList;
}
public void setStuList(List<Student> stuList) {
this.stuList = stuList;
}
public Course(String name,float score)
{
this.setName(name);
this.setScore(score);
this.setStuList(new ArrayList<Student>());
}
public void addStu(Student stu)
{
this.stuList.add(stu);
}
public String toString()
{
return "課程名稱|-"+this.getName()+" "+",學分:"+this.getScore();
}
}
//測試類
package com.dr.xuanke;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Test {
public static void main(String args[])
{
List<Course> cseList=new ArrayList<Course>();
Course cse1=new Course("高數",2.0f);
Course cse2=new Course("英語",3.0f);
Course cse3=new Course("語文",5.0f);
Student stu1=new Student("張三",20);
Student stu2=new Student("李四",21);
Student stu3=new Student("王五",30);
Student stu4=new Student("李明",35);
cseList.add(cse1);
cseList.add(cse2);
cseList.add(cse3);
//張三選擇高數、英語
stu1.addCourse(cse1);
cse1.addStu(stu1);
stu1.addCourse(cse2);
cse2.addStu(stu1);
//李四選擇語文、英語
stu2.addCourse(cse3);
cse3.addStu(stu2);
stu2.addCourse(cse2);
cse2.addStu(stu2);
//王五選擇高數、語文
stu3.addCourse(cse1);
cse1.addStu(stu3);
stu3.addCourse(cse3);
cse3.addStu(stu3);
//輸出結果
Iterator<Course> iter1=cseList.iterator();
while(iter1.hasNext())
{
Course cse=iter1.next();
System.out.println(cse);
Iterator<Student> iter2=cse.getStuList().iterator();
while(iter2.hasNext())
{
System.out.println(iter2.next());
}
}
}
}
程序的輸出結果如圖所示:

此程序需要注意兩點:1.了解課程與學生之間是多對多的關系,這就要考慮在課程和學生
類里定義兩個盛放對方的集合。2.在新建課程對象和新建學生對象時一定要對類中定義的
集合初始化(在Course類的構造函數Course中的代碼:this.setStuList(new
ArrayList<Student>());和在Student類的構造函數Student中的代碼:this.setCseList
(new ArrayList<Course>());)。