相关的UML图大概如上
话不多说,直接上代码
import java.util.ArrayList;
import java.util.Scanner;
import java.util.Objects;
class Student{
String StudentNo = "";
String StudentName = "";
public Student() {
}
public Student(String StudentNo,String StudentName) {
this.StudentNo=StudentNo;
this.StudentName=StudentName;
}
public boolean equals(Student s){
if(this.StudentName.equalsIgnoreCase(s.StudentName)&&this.StudentNo.equalsIgnoreCase(s.StudentNo))
return true;
else
return false;
}
public String toString(){
return "\n"+"Student{No="+StudentNo+",Name="+StudentName+"}";
}
}
class Course{
String courseName = "";
int hours = 0;
ArrayList<Student> students = new ArrayList<>();
public Course() {
}
public Course(String courseName,int hours) {
this.courseName=courseName;
this.hours=hours;
}
public Course(String courseName,int hours,ArrayList<Student> students) {
this.courseName=courseName;
this.hours=hours;
this.students = students;
}
public void addStudent(Student s){
students.add(s);
}
public void dropStudent(Student s){
for(int i=0;i<students.size();i++){
if((students.get(i).StudentName.equalsIgnoreCase(s.StudentName))&&(students.get(i).StudentNo.equalsIgnoreCase(s.StudentNo)))
students.remove(i);
}
}
public String toString(){
return "Course{courseName="+courseName+",hours="+hours+" students="+students.toString()+"}"+"\n";
}
}
public class Test_5_14 {
public static void main(String[] args) {
ArrayList<Student> students=new ArrayList<>();
students.add(new Student("2017001","stu1"));
students.add(new Student("2017002","stu2"));
Course c1=new Course("java",60);
Course c2=new Course("c语言",80,students);
Student[] stu=new Student[3];
for( int i=0;i<stu.length;i++){
stu[i]=new Student("201710"+i,"stu10"+i);
}
for( int i=0;i<stu.length;i++){
c1.addStudent(stu[i]);
}
System.out.println("请输入要退选Java的学生学号与姓名");
Scanner input=new Scanner(System.in );
Student s=new Student(input.next(),input.next());
System.out.println("\n输出学生退选前的课程信息");
System.out.println(c1.toString());
System.out.println(c2.toString());
System.out.println("\n输出学生退选后的课程信息");
c1.dropStudent(s);
System.out.println(c1.toString());
}
}
注意:1.链表.add()可以直接增加对象
而链表.remove(int i)是要通过对于链表进行遍历,找到要被删除的对象在链表中的标号,在移除特定标号的对象