diff --git a/Course.java b/Course.java new file mode 100644 index 0000000..fdaf5da --- /dev/null +++ b/Course.java @@ -0,0 +1,90 @@ +package basic; + +/** + * 课程类,与学科建立多对一关系 + */ +public class Course { + private int id; + private String name; + private int credit; + + // 所属学科(多对一关系) + private Subject subject; + + // 先修课程(一门课程可能有多门先修课程) + private java.util.List prerequisiteCourses; + + public Course(int id, String name, int credit) { + this.id = id; + this.name = name; + this.credit = credit; + this.prerequisiteCourses = new java.util.ArrayList<>(); + } + + // 添加先修课程 + public void addPrerequisiteCourse(Course course) { + if (course != null) { + prerequisiteCourses.add(course); + } + } + + // 移除先修课程 + public void removePrerequisiteCourse(Course course) { + if (course != null) { + prerequisiteCourses.remove(course); + } + } + + // 设置学科 + public void setSubject(Subject subject) { + this.subject = subject; + } + + // Getters and Setters + 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 int getCredit() { + return credit; + } + + public void setCredit(int credit) { + this.credit = credit; + } + + public Subject getSubject() { + return subject; + } + + public java.util.List getPrerequisiteCourses() { + return prerequisiteCourses; + } + + public void setPrerequisiteCourses(java.util.List prerequisiteCourses) { + this.prerequisiteCourses = prerequisiteCourses; + } + + @Override + public String toString() { + return "Course{" + + "id=" + id + + ", name='" + name + '\'' + + ", credit=" + credit + + ", subject=" + (subject != null ? subject.getName() : "null") + + ", prerequisites.size()=" + prerequisiteCourses.size() + + '}'; + } +} \ No newline at end of file diff --git a/Grade.java b/Grade.java new file mode 100644 index 0000000..7a702c6 --- /dev/null +++ b/Grade.java @@ -0,0 +1,55 @@ +package basic; + +/** + * 成绩类,实现学生与成绩的一对多关联关系,同时与课程建立多对一关系 + */ +public class Grade { + private int id; + private double score; + + // 所属学生(多对一关系) + private Student student; + + // 所属课程(多对一关系) + private Course course; + + public Grade(int id, Course course, double score) { + this.id = id; + this.course = course; + this.score = score; + } + + // 设置学生 + public void setStudent(Student student) { + this.student = student; + } + + // Getters and Setters + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public double getScore() { + return score; + } + + public void setScore(double score) { + this.score = score; + } + + public Student getStudent() { + return student; + } + + public Course getCourse() { + return course; + } + + public void setCourse(Course course) { + this.course = course; + } +} \ No newline at end of file diff --git a/Student.java b/Student.java new file mode 100644 index 0000000..08d6f47 --- /dev/null +++ b/Student.java @@ -0,0 +1,68 @@ +package basic; + +/** + * 学生类,添加成绩属性并实现学生与成绩的一对多关联关系 + */ +public class Student { + private int id; + private String name; + private advanced.Parent parent; + + // 学生的所有成绩(一对多关系) + private java.util.List grades; + + public Student(int id, String name) { + this.id = id; + this.name = name; + this.grades = new java.util.ArrayList<>(); + } + + // 添加成绩 + public void addGrade(Grade grade) { + grades.add(grade); + } + + // 移除成绩 + public void removeGrade(Grade grade) { + grades.remove(grade); + } + + // Getters and Setters + 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 java.util.List getGrades() { + return new java.util.ArrayList<>(grades); + } + + public advanced.Parent getParent() { + return parent; + } + + public void setParent(advanced.Parent parent) { + this.parent = parent; + } + + @Override + public String toString() { + return "Student{" + + "id=" + id + + ", name='" + name + '\'' + + ", parent=" + (parent != null ? parent.getName() : "null") + + ", grades.size()=" + grades.size() + + '}'; + } +} \ No newline at end of file diff --git a/Subject.java b/Subject.java new file mode 100644 index 0000000..9015bb3 --- /dev/null +++ b/Subject.java @@ -0,0 +1,49 @@ +package basic; + +/** + * 学科类,实现学科与课程的一对多关联关系 + */ +public class Subject { + private int id; + private String name; + + // 该学科下的所有课程(一对多关系) + private java.util.List courses; + + public Subject(int id, String name) { + this.id = id; + this.name = name; + this.courses = new java.util.ArrayList<>(); + } + + // 添加课程 + public void addCourse(Course course) { + courses.add(course); + } + + // 移除课程 + public void removeCourse(Course course) { + courses.remove(course); + } + + // Getters and Setters + 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 java.util.List getCourses() { + return new java.util.ArrayList<>(courses); + } +} \ No newline at end of file