Compare commits
No commits in common. 'main' and 'master' have entirely different histories.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,38 @@
|
|||||||
|
package com.school;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Advisor class represents a club advisor in the club management system.
|
||||||
|
* Relationship: One-to-many with Club
|
||||||
|
*/
|
||||||
|
public class Advisor {
|
||||||
|
private int advisorId;
|
||||||
|
private String name;
|
||||||
|
private String department;
|
||||||
|
private List<Club> advisedClubs; // One-to-many relationship
|
||||||
|
|
||||||
|
public Advisor(int advisorId, String name, String department) {
|
||||||
|
this.advisorId = advisorId;
|
||||||
|
this.name = name;
|
||||||
|
this.department = department;
|
||||||
|
this.advisedClubs = new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addAdvisedClub(Club club) {
|
||||||
|
if (!advisedClubs.contains(club)) {
|
||||||
|
advisedClubs.add(club);
|
||||||
|
club.setAdvisor(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Getters and Setters
|
||||||
|
public int getAdvisorId() { return advisorId; }
|
||||||
|
public void setAdvisorId(int advisorId) { this.advisorId = advisorId; }
|
||||||
|
public String getName() { return name; }
|
||||||
|
public void setName(String name) { this.name = name; }
|
||||||
|
public String getDepartment() { return department; }
|
||||||
|
public void setDepartment(String department) { this.department = department; }
|
||||||
|
public List<Club> getAdvisedClubs() { return advisedClubs; }
|
||||||
|
}
|
||||||
@ -0,0 +1,53 @@
|
|||||||
|
package com.school;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Club class represents a student club in the club management system.
|
||||||
|
* Relationships:
|
||||||
|
* - Many-to-many with Student
|
||||||
|
* - Many-to-one with Advisor
|
||||||
|
*/
|
||||||
|
public class Club {
|
||||||
|
private int clubId;
|
||||||
|
private String clubName;
|
||||||
|
private String description;
|
||||||
|
private Advisor advisor; // Many-to-one relationship
|
||||||
|
private List<Student> members; // Many-to-many relationship
|
||||||
|
|
||||||
|
public Club(int clubId, String clubName, String description) {
|
||||||
|
this.clubId = clubId;
|
||||||
|
this.clubName = clubName;
|
||||||
|
this.description = description;
|
||||||
|
this.members = new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addMember(Student student) {
|
||||||
|
if (!members.contains(student)) {
|
||||||
|
members.add(student);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void removeMember(Student student) {
|
||||||
|
members.remove(student);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAdvisor(Advisor advisor) {
|
||||||
|
this.advisor = advisor;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getMemberCount() {
|
||||||
|
return members.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Getters and Setters
|
||||||
|
public int getClubId() { return clubId; }
|
||||||
|
public void setClubId(int clubId) { this.clubId = clubId; }
|
||||||
|
public String getClubName() { return clubName; }
|
||||||
|
public void setClubName(String clubName) { this.clubName = clubName; }
|
||||||
|
public String getDescription() { return description; }
|
||||||
|
public void setDescription(String description) { this.description = description; }
|
||||||
|
public Advisor getAdvisor() { return advisor; }
|
||||||
|
public List<Student> getMembers() { return members; }
|
||||||
|
}
|
||||||
@ -0,0 +1,65 @@
|
|||||||
|
package com.school;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Student Club Management System
|
||||||
|
* Relationship design:
|
||||||
|
* - Club to Student: Many-to-many
|
||||||
|
* - Club to Advisor: One-to-many
|
||||||
|
* - Student to Club: Many-to-many
|
||||||
|
*/
|
||||||
|
public class ClubManagementSystem {
|
||||||
|
|
||||||
|
// Test method
|
||||||
|
public static void main(String[] args) {
|
||||||
|
// Create students
|
||||||
|
Student student1 = new Student(1, "Zhang San", 1);
|
||||||
|
Student student2 = new Student(2, "Li Si", 2);
|
||||||
|
Student student3 = new Student(3, "Wang Wu", 1);
|
||||||
|
|
||||||
|
// Create advisors
|
||||||
|
Advisor advisor1 = new Advisor(1, "Teacher Zhang", "Computer Science");
|
||||||
|
Advisor advisor2 = new Advisor(2, "Teacher Li", "Art Department");
|
||||||
|
|
||||||
|
// Create clubs
|
||||||
|
Club club1 = new Club(1, "Programming Club", "Learn and exchange programming skills");
|
||||||
|
Club club2 = new Club(2, "Music Club", "Learn and create music");
|
||||||
|
|
||||||
|
// Establish advisor relationships
|
||||||
|
advisor1.addAdvisedClub(club1);
|
||||||
|
advisor2.addAdvisedClub(club2);
|
||||||
|
|
||||||
|
// Students join clubs
|
||||||
|
student1.joinClub(club1);
|
||||||
|
student2.joinClub(club1);
|
||||||
|
student2.joinClub(club2);
|
||||||
|
student3.joinClub(club2);
|
||||||
|
|
||||||
|
// Test output
|
||||||
|
System.out.println("Student Club Management System Test:");
|
||||||
|
|
||||||
|
System.out.println("\nClub Information:");
|
||||||
|
System.out.println(club1.getClubName() + " - Advisor: " + club1.getAdvisor().getName() + ", Member Count: " + club1.getMemberCount());
|
||||||
|
System.out.println(club2.getClubName() + " - Advisor: " + club2.getAdvisor().getName() + ", Member Count: " + club2.getMemberCount());
|
||||||
|
|
||||||
|
System.out.println("\nClubs Students Joined:");
|
||||||
|
System.out.println(student1.getName() + " joined clubs: ");
|
||||||
|
for (Club club : student1.getClubs()) {
|
||||||
|
System.out.println(" - " + club.getClubName());
|
||||||
|
}
|
||||||
|
|
||||||
|
System.out.println(student2.getName() + " joined clubs: ");
|
||||||
|
for (Club club : student2.getClubs()) {
|
||||||
|
System.out.println(" - " + club.getClubName());
|
||||||
|
}
|
||||||
|
|
||||||
|
System.out.println("\nClubs Advised by Teachers:");
|
||||||
|
System.out.println(advisor1.getName() + " advised clubs: ");
|
||||||
|
for (Club club : advisor1.getAdvisedClubs()) {
|
||||||
|
System.out.println(" - " + club.getClubName());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Test student leaving club
|
||||||
|
student2.leaveClub(club1);
|
||||||
|
System.out.println("\nMember count after Li Si left Programming Club: " + club1.getMemberCount());
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,76 @@
|
|||||||
|
package com.school;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Course class represents a course in the school systems.
|
||||||
|
* Relationships:
|
||||||
|
* - One-to-many with TimetableEntry (in timetable system)
|
||||||
|
* - One-to-many with CourseGrade (in grade management system)
|
||||||
|
* - Many-to-one with Teacher (in grade management system)
|
||||||
|
* - Many-to-many with Student (in grade management system)
|
||||||
|
*/
|
||||||
|
public class Course {
|
||||||
|
private int courseId;
|
||||||
|
private String courseName;
|
||||||
|
private String credit;
|
||||||
|
private Teacher teacher; // Many-to-one relationship
|
||||||
|
private List<TimetableEntry> entries; // One-to-many relationship (for timetable)
|
||||||
|
private List<Student> enrolledStudents; // Many-to-many relationship (for grade management)
|
||||||
|
private List<CourseGrade> grades; // One-to-many relationship (for grade management)
|
||||||
|
|
||||||
|
public Course(int courseId, String courseName, String credit) {
|
||||||
|
this.courseId = courseId;
|
||||||
|
this.courseName = courseName;
|
||||||
|
this.credit = credit;
|
||||||
|
this.entries = new ArrayList<>();
|
||||||
|
this.enrolledStudents = new ArrayList<>();
|
||||||
|
this.grades = new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Methods for timetable system
|
||||||
|
public void addEntry(TimetableEntry entry) {
|
||||||
|
entries.add(entry);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Methods for grade management system
|
||||||
|
public void addStudent(Student student) {
|
||||||
|
if (!enrolledStudents.contains(student)) {
|
||||||
|
enrolledStudents.add(student);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addGrade(CourseGrade grade) {
|
||||||
|
grades.add(grade);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTeacher(Teacher teacher) {
|
||||||
|
this.teacher = teacher;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double calculateAverageScore() {
|
||||||
|
if (grades.isEmpty()) return 0;
|
||||||
|
double sum = 0;
|
||||||
|
for (CourseGrade grade : grades) {
|
||||||
|
sum += grade.getScore();
|
||||||
|
}
|
||||||
|
return sum / grades.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getStudentCount() {
|
||||||
|
return enrolledStudents.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Getters and Setters
|
||||||
|
public int getCourseId() { return courseId; }
|
||||||
|
public void setCourseId(int courseId) { this.courseId = courseId; }
|
||||||
|
public String getCourseName() { return courseName; }
|
||||||
|
public void setCourseName(String courseName) { this.courseName = courseName; }
|
||||||
|
public String getCredit() { return credit; }
|
||||||
|
public void setCredit(String credit) { this.credit = credit; }
|
||||||
|
public Teacher getTeacher() { return teacher; }
|
||||||
|
public List<TimetableEntry> getEntries() { return entries; }
|
||||||
|
public List<Student> getEnrolledStudents() { return enrolledStudents; }
|
||||||
|
public List<CourseGrade> getGrades() { return grades; }
|
||||||
|
}
|
||||||
@ -0,0 +1,36 @@
|
|||||||
|
package com.school;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CourseGrade class represents a student's grade for a specific course.
|
||||||
|
* Relationships:
|
||||||
|
* - Many-to-one with Student
|
||||||
|
* - Many-to-one with Course
|
||||||
|
*/
|
||||||
|
public class CourseGrade {
|
||||||
|
private Student student; // Many-to-one relationship
|
||||||
|
private Course course; // Many-to-one relationship
|
||||||
|
private double score;
|
||||||
|
private String semester;
|
||||||
|
|
||||||
|
public CourseGrade(Student student, Course course, double score, String semester) {
|
||||||
|
this.student = student;
|
||||||
|
this.course = course;
|
||||||
|
this.score = score;
|
||||||
|
this.semester = semester;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Getters and Setters
|
||||||
|
public Student getStudent() { return student; }
|
||||||
|
public void setStudent(Student student) { this.student = student; }
|
||||||
|
public Course getCourse() { return course; }
|
||||||
|
public void setCourse(Course course) { this.course = course; }
|
||||||
|
public double getScore() { return score; }
|
||||||
|
public void setScore(double score) { this.score = score; }
|
||||||
|
public String getSemester() { return semester; }
|
||||||
|
public void setSemester(String semester) { this.semester = semester; }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "Student: " + student.getName() + ", Course: " + course.getCourseName() + ", Score: " + score + ", Semester: " + semester;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,50 @@
|
|||||||
|
package com.school;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Grade class
|
||||||
|
* Relationship design:
|
||||||
|
* - Many-to-one with Student
|
||||||
|
* - Many-to-one with Course
|
||||||
|
* This class complements CourseGrade for the grade management system
|
||||||
|
*/
|
||||||
|
public class Grade {
|
||||||
|
private double grade; // Score
|
||||||
|
private Student student; // Many-to-one relationship with Student
|
||||||
|
private Course course; // Many-to-one relationship with Course
|
||||||
|
|
||||||
|
public Grade(double grade, Student student, Course course) {
|
||||||
|
this.grade = grade;
|
||||||
|
this.student = student;
|
||||||
|
this.course = course;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Getters and Setters
|
||||||
|
public double getGrade() {
|
||||||
|
return grade;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setGrade(double grade) {
|
||||||
|
this.grade = grade;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Student getStudent() {
|
||||||
|
return student;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStudent(Student student) {
|
||||||
|
this.student = student;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Course getCourse() {
|
||||||
|
return course;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCourse(Course course) {
|
||||||
|
this.course = course;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "Student: " + (student != null ? student.getName() : "Unknown") + ", Course: " + (course != null ? course.getCourseName() : "Unknown") + ", Grade: " + grade;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,64 @@
|
|||||||
|
package com.school;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Student Grade Management System
|
||||||
|
* Relationship design:
|
||||||
|
* - Student to CourseGrade: One-to-many
|
||||||
|
* - Course to CourseGrade: One-to-many
|
||||||
|
* - Teacher to Course: One-to-many
|
||||||
|
* - Student to Course: Many-to-many
|
||||||
|
*/
|
||||||
|
public class GradeManagementSystem {
|
||||||
|
|
||||||
|
// Test method
|
||||||
|
public static void main(String[] args) {
|
||||||
|
// Create students
|
||||||
|
Student student1 = new Student(1, "Zhang San", 1);
|
||||||
|
Student student2 = new Student(2, "Li Si", 2);
|
||||||
|
Student student3 = new Student(3, "Wang Wu", 1);
|
||||||
|
|
||||||
|
// Create teachers
|
||||||
|
Teacher teacher1 = new Teacher(1, "Teacher Zhang", "Computer Science");
|
||||||
|
Teacher teacher2 = new Teacher(2, "Teacher Li", "Mathematics");
|
||||||
|
|
||||||
|
// Create courses
|
||||||
|
Course course1 = new Course(1, "Data Structures", "3");
|
||||||
|
Course course2 = new Course(2, "Advanced Mathematics", "4");
|
||||||
|
|
||||||
|
// Establish teacher-course relationships
|
||||||
|
teacher1.addTaughtCourse(course1);
|
||||||
|
teacher2.addTaughtCourse(course2);
|
||||||
|
|
||||||
|
// Students enroll in courses
|
||||||
|
student1.enrollCourse(course1);
|
||||||
|
student1.enrollCourse(course2);
|
||||||
|
student2.enrollCourse(course1);
|
||||||
|
student3.enrollCourse(course2);
|
||||||
|
|
||||||
|
// Add grades
|
||||||
|
student1.addGrade(course1, 85.5, "2023-2024 First Semester");
|
||||||
|
student1.addGrade(course2, 92.0, "2023-2024 First Semester");
|
||||||
|
student2.addGrade(course1, 78.5, "2023-2024 First Semester");
|
||||||
|
student3.addGrade(course2, 88.0, "2023-2024 First Semester");
|
||||||
|
|
||||||
|
// Test output
|
||||||
|
System.out.println("Student Grade Management System Test:");
|
||||||
|
|
||||||
|
System.out.println("\nStudent Grade Information:");
|
||||||
|
for (Student student : new Student[]{student1, student2, student3}) {
|
||||||
|
System.out.println("\n" + student.getName() + "'s grades:");
|
||||||
|
for (CourseGrade grade : student.getCourseGrades()) {
|
||||||
|
System.out.println(grade);
|
||||||
|
}
|
||||||
|
System.out.println("Average score: " + String.format("%.2f", student.calculateAverageScore()));
|
||||||
|
}
|
||||||
|
|
||||||
|
System.out.println("\nCourse Statistics:");
|
||||||
|
System.out.println(course1.getCourseName() + ": Teacher - " + course1.getTeacher().getName() + ", Enrollment: " + course1.getStudentCount() + ", Average score: " + String.format("%.2f", course1.calculateAverageScore()));
|
||||||
|
System.out.println(course2.getCourseName() + ": Teacher - " + course2.getTeacher().getName() + ", Enrollment: " + course2.getStudentCount() + ", Average score: " + String.format("%.2f", course2.calculateAverageScore()));
|
||||||
|
|
||||||
|
// Test single course grade query
|
||||||
|
System.out.println("\nZhang San's Data Structures score: " + student1.getScoreByCourse(course1));
|
||||||
|
System.out.println("Li Si's Advanced Mathematics score: " + student2.getScoreByCourse(course2));
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,35 @@
|
|||||||
|
package com.school;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Room class represents a classroom in the timetable system.
|
||||||
|
* Relationship: One-to-many with TimetableEntry
|
||||||
|
*/
|
||||||
|
public class Room {
|
||||||
|
private int roomId;
|
||||||
|
private String roomNumber;
|
||||||
|
private int capacity;
|
||||||
|
private List<TimetableEntry> entries; // One-to-many relationship
|
||||||
|
|
||||||
|
public Room(int roomId, String roomNumber, int capacity) {
|
||||||
|
this.roomId = roomId;
|
||||||
|
this.roomNumber = roomNumber;
|
||||||
|
this.capacity = capacity;
|
||||||
|
this.entries = new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addEntry(TimetableEntry entry) {
|
||||||
|
entries.add(entry);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Getters and Setters
|
||||||
|
public int getRoomId() { return roomId; }
|
||||||
|
public void setRoomId(int roomId) { this.roomId = roomId; }
|
||||||
|
public String getRoomNumber() { return roomNumber; }
|
||||||
|
public void setRoomNumber(String roomNumber) { this.roomNumber = roomNumber; }
|
||||||
|
public int getCapacity() { return capacity; }
|
||||||
|
public void setCapacity(int capacity) { this.capacity = capacity; }
|
||||||
|
public List<TimetableEntry> getEntries() { return entries; }
|
||||||
|
}
|
||||||
@ -0,0 +1,87 @@
|
|||||||
|
package com.school;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Student class represents a student in the school systems.
|
||||||
|
* Relationships:
|
||||||
|
* - One-to-many with CourseGrade (in grade management system)
|
||||||
|
* - Many-to-many with Course (in grade management system)
|
||||||
|
* - Many-to-many with Club (in club management system)
|
||||||
|
*/
|
||||||
|
public class Student {
|
||||||
|
private int studentId;
|
||||||
|
private String name;
|
||||||
|
private int grade;
|
||||||
|
private List<CourseGrade> courseGrades; // One-to-many relationship
|
||||||
|
private List<Course> courses; // Many-to-many relationship
|
||||||
|
private List<Club> clubs; // Many-to-many relationship (for club management)
|
||||||
|
|
||||||
|
public Student(int studentId, String name, int grade) {
|
||||||
|
this.studentId = studentId;
|
||||||
|
this.name = name;
|
||||||
|
this.grade = grade;
|
||||||
|
this.courseGrades = new ArrayList<>();
|
||||||
|
this.courses = new ArrayList<>();
|
||||||
|
this.clubs = new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Methods for grade management system
|
||||||
|
public void enrollCourse(Course course) {
|
||||||
|
if (!courses.contains(course)) {
|
||||||
|
courses.add(course);
|
||||||
|
course.addStudent(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addGrade(Course course, double score, String semester) {
|
||||||
|
CourseGrade courseGrade = new CourseGrade(this, course, score, semester);
|
||||||
|
courseGrades.add(courseGrade);
|
||||||
|
course.addGrade(courseGrade);
|
||||||
|
}
|
||||||
|
|
||||||
|
public double calculateAverageScore() {
|
||||||
|
if (courseGrades.isEmpty()) return 0;
|
||||||
|
double sum = 0;
|
||||||
|
for (CourseGrade grade : courseGrades) {
|
||||||
|
sum += grade.getScore();
|
||||||
|
}
|
||||||
|
return sum / courseGrades.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getScoreByCourse(Course course) {
|
||||||
|
for (CourseGrade grade : courseGrades) {
|
||||||
|
if (grade.getCourse().equals(course)) {
|
||||||
|
return grade.getScore();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1; // Score not found
|
||||||
|
}
|
||||||
|
|
||||||
|
// Methods for club management system
|
||||||
|
public void joinClub(Club club) {
|
||||||
|
if (!clubs.contains(club)) {
|
||||||
|
clubs.add(club);
|
||||||
|
club.addMember(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void leaveClub(Club club) {
|
||||||
|
if (clubs.contains(club)) {
|
||||||
|
clubs.remove(club);
|
||||||
|
club.removeMember(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Getters and Setters
|
||||||
|
public int getStudentId() { return studentId; }
|
||||||
|
public void setStudentId(int studentId) { this.studentId = studentId; }
|
||||||
|
public String getName() { return name; }
|
||||||
|
public void setName(String name) { this.name = name; }
|
||||||
|
public int getGrade() { return grade; }
|
||||||
|
public void setGrade(int grade) { this.grade = grade; }
|
||||||
|
public List<CourseGrade> getCourseGrades() { return courseGrades; }
|
||||||
|
public List<Course> getCourses() { return courses; }
|
||||||
|
public List<Club> getClubs() { return clubs; }
|
||||||
|
}
|
||||||
@ -0,0 +1,48 @@
|
|||||||
|
package com.school;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Subject class
|
||||||
|
* Relationship with Course: One-to-many
|
||||||
|
*/
|
||||||
|
public class Subject {
|
||||||
|
private int subjectId; // Subject ID
|
||||||
|
private String subjectName; // Subject name
|
||||||
|
private List<Course> courses; // One-to-many relationship with Course
|
||||||
|
|
||||||
|
// Getters and Setters
|
||||||
|
public int getSubjectId() {
|
||||||
|
return subjectId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSubjectId(int subjectId) {
|
||||||
|
this.subjectId = subjectId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSubjectName() {
|
||||||
|
return subjectName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSubjectName(String subjectName) {
|
||||||
|
this.subjectName = subjectName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Course> getCourses() {
|
||||||
|
return courses;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCourses(List<Course> courses) {
|
||||||
|
this.courses = courses;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addCourse(Course course) {
|
||||||
|
if (courses == null) {
|
||||||
|
courses = new ArrayList<>();
|
||||||
|
}
|
||||||
|
if (!courses.contains(course)) {
|
||||||
|
courses.add(course);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,49 @@
|
|||||||
|
package com.school;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Teacher class represents a teacher in the school systems.
|
||||||
|
* Relationships:
|
||||||
|
* - One-to-many with TimetableEntry (in timetable system)
|
||||||
|
* - One-to-many with Course (in grade management system)
|
||||||
|
*/
|
||||||
|
public class Teacher {
|
||||||
|
private int teacherId;
|
||||||
|
private String name;
|
||||||
|
private String department;
|
||||||
|
private List<TimetableEntry> entries; // One-to-many relationship (for timetable)
|
||||||
|
private List<Course> taughtCourses; // One-to-many relationship (for grade management)
|
||||||
|
|
||||||
|
public Teacher(int teacherId, String name, String department) {
|
||||||
|
this.teacherId = teacherId;
|
||||||
|
this.name = name;
|
||||||
|
this.department = department;
|
||||||
|
this.entries = new ArrayList<>();
|
||||||
|
this.taughtCourses = new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Methods for timetable system
|
||||||
|
public void addEntry(TimetableEntry entry) {
|
||||||
|
entries.add(entry);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Methods for grade management system
|
||||||
|
public void addTaughtCourse(Course course) {
|
||||||
|
if (!taughtCourses.contains(course)) {
|
||||||
|
taughtCourses.add(course);
|
||||||
|
course.setTeacher(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Getters and Setters
|
||||||
|
public int getTeacherId() { return teacherId; }
|
||||||
|
public void setTeacherId(int teacherId) { this.teacherId = teacherId; }
|
||||||
|
public String getName() { return name; }
|
||||||
|
public void setName(String name) { this.name = name; }
|
||||||
|
public String getDepartment() { return department; }
|
||||||
|
public void setDepartment(String department) { this.department = department; }
|
||||||
|
public List<TimetableEntry> getEntries() { return entries; }
|
||||||
|
public List<Course> getTaughtCourses() { return taughtCourses; }
|
||||||
|
}
|
||||||
@ -0,0 +1,39 @@
|
|||||||
|
package com.school;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TimeSlot class represents a specific time period in the timetable system.
|
||||||
|
* Relationship: One-to-many with TimetableEntry
|
||||||
|
*/
|
||||||
|
public class TimeSlot {
|
||||||
|
private int slotId;
|
||||||
|
private String day;
|
||||||
|
private String startTime;
|
||||||
|
private String endTime;
|
||||||
|
private List<TimetableEntry> entries; // One-to-many relationship
|
||||||
|
|
||||||
|
public TimeSlot(int slotId, String day, String startTime, String endTime) {
|
||||||
|
this.slotId = slotId;
|
||||||
|
this.day = day;
|
||||||
|
this.startTime = startTime;
|
||||||
|
this.endTime = endTime;
|
||||||
|
this.entries = new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addEntry(TimetableEntry entry) {
|
||||||
|
entries.add(entry);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Getters and Setters
|
||||||
|
public int getSlotId() { return slotId; }
|
||||||
|
public void setSlotId(int slotId) { this.slotId = slotId; }
|
||||||
|
public String getDay() { return day; }
|
||||||
|
public void setDay(String day) { this.day = day; }
|
||||||
|
public String getStartTime() { return startTime; }
|
||||||
|
public void setStartTime(String startTime) { this.startTime = startTime; }
|
||||||
|
public String getEndTime() { return endTime; }
|
||||||
|
public void setEndTime(String endTime) { this.endTime = endTime; }
|
||||||
|
public List<TimetableEntry> getEntries() { return entries; }
|
||||||
|
}
|
||||||
@ -0,0 +1,42 @@
|
|||||||
|
package com.school;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TimetableEntry class serves as an association entity in the timetable system.
|
||||||
|
* Relationships:
|
||||||
|
* - Many-to-one with TimeSlot
|
||||||
|
* - Many-to-one with Room
|
||||||
|
* - Many-to-one with Course
|
||||||
|
* - Many-to-one with Teacher
|
||||||
|
*/
|
||||||
|
public class TimetableEntry {
|
||||||
|
private int entryId;
|
||||||
|
private TimeSlot timeSlot; // Many-to-one relationship
|
||||||
|
private Room room; // Many-to-one relationship
|
||||||
|
private Course course; // Many-to-one relationship
|
||||||
|
private Teacher teacher; // Many-to-one relationship
|
||||||
|
|
||||||
|
public TimetableEntry(int entryId, TimeSlot timeSlot, Room room, Course course, Teacher teacher) {
|
||||||
|
this.entryId = entryId;
|
||||||
|
this.timeSlot = timeSlot;
|
||||||
|
this.room = room;
|
||||||
|
this.course = course;
|
||||||
|
this.teacher = teacher;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Getters and Setters
|
||||||
|
public int getEntryId() { return entryId; }
|
||||||
|
public void setEntryId(int entryId) { this.entryId = entryId; }
|
||||||
|
public TimeSlot getTimeSlot() { return timeSlot; }
|
||||||
|
public void setTimeSlot(TimeSlot timeSlot) { this.timeSlot = timeSlot; }
|
||||||
|
public Room getRoom() { return room; }
|
||||||
|
public void setRoom(Room room) { this.room = room; }
|
||||||
|
public Course getCourse() { return course; }
|
||||||
|
public void setCourse(Course course) { this.course = course; }
|
||||||
|
public Teacher getTeacher() { return teacher; }
|
||||||
|
public void setTeacher(Teacher teacher) { this.teacher = teacher; }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "Course: " + course.getCourseName() + ", Time: " + timeSlot.getDay() + " " + timeSlot.getStartTime() + "-" + timeSlot.getEndTime() + ", Room: " + room.getRoomNumber() + ", Teacher: " + teacher.getName();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,59 @@
|
|||||||
|
package com.school;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Timetable System
|
||||||
|
* Relationship design:
|
||||||
|
* - Room to TimetableEntry: One-to-many
|
||||||
|
* - TimeSlot to TimetableEntry: One-to-many
|
||||||
|
* - Course to TimetableEntry: One-to-many
|
||||||
|
* - Teacher to TimetableEntry: One-to-many
|
||||||
|
*/
|
||||||
|
public class TimetableSystem {
|
||||||
|
// Test method
|
||||||
|
public static void main(String[] args) {
|
||||||
|
// Create time slots
|
||||||
|
TimeSlot timeSlot1 = new TimeSlot(1, "Monday", "08:00", "09:40");
|
||||||
|
TimeSlot timeSlot2 = new TimeSlot(2, "Tuesday", "10:00", "11:40");
|
||||||
|
|
||||||
|
// Create rooms
|
||||||
|
Room room1 = new Room(1, "A101", 50);
|
||||||
|
Room room2 = new Room(2, "B201", 30);
|
||||||
|
|
||||||
|
// Create teachers
|
||||||
|
Teacher teacher1 = new Teacher(1, "Teacher Zhang", "Computer Science");
|
||||||
|
Teacher teacher2 = new Teacher(2, "Teacher Li", "Mathematics");
|
||||||
|
|
||||||
|
// Create courses
|
||||||
|
Course course1 = new Course(1, "Data Structures", "3");
|
||||||
|
Course course2 = new Course(2, "Advanced Mathematics", "4");
|
||||||
|
|
||||||
|
// Create timetable entries
|
||||||
|
TimetableEntry entry1 = new TimetableEntry(1, timeSlot1, room1, course1, teacher1);
|
||||||
|
TimetableEntry entry2 = new TimetableEntry(2, timeSlot2, room2, course2, teacher2);
|
||||||
|
|
||||||
|
// Establish relationships
|
||||||
|
timeSlot1.addEntry(entry1);
|
||||||
|
timeSlot2.addEntry(entry2);
|
||||||
|
room1.addEntry(entry1);
|
||||||
|
room2.addEntry(entry2);
|
||||||
|
teacher1.addEntry(entry1);
|
||||||
|
teacher2.addEntry(entry2);
|
||||||
|
course1.addEntry(entry1);
|
||||||
|
course2.addEntry(entry2);
|
||||||
|
|
||||||
|
// Test output
|
||||||
|
System.out.println("Timetable System Test:");
|
||||||
|
System.out.println(entry1);
|
||||||
|
System.out.println(entry2);
|
||||||
|
|
||||||
|
System.out.println("\nCourses taught by Teacher Zhang:");
|
||||||
|
for (TimetableEntry entry : teacher1.getEntries()) {
|
||||||
|
System.out.println(entry);
|
||||||
|
}
|
||||||
|
|
||||||
|
System.out.println("\nSchedule for Room A101:");
|
||||||
|
for (TimetableEntry entry : room1.getEntries()) {
|
||||||
|
System.out.println(entry);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,2 +1,109 @@
|
|||||||
# 123
|
# 学校管理系统
|
||||||
|
|
||||||
|
本项目包含三个主要的管理系统,用于学校的不同业务场景管理。
|
||||||
|
|
||||||
|
## 1. 社团管理系统 (Club Management System)
|
||||||
|
|
||||||
|
### 功能概述
|
||||||
|
社团管理系统用于管理学校中的学生社团活动,包括学生信息管理、指导教师管理和社团管理。
|
||||||
|
|
||||||
|
### 主要类结构
|
||||||
|
- **Student**: 学生类,包含学生基本信息
|
||||||
|
- **Advisor**: 指导教师类,包含教师基本信息
|
||||||
|
- **Club**: 社团类,包含社团基本信息
|
||||||
|
- **ClubManagementSystem**: 社团管理系统主类,提供社团管理的核心功能
|
||||||
|
|
||||||
|
### 主要功能
|
||||||
|
- 学生信息管理
|
||||||
|
- 指导教师信息管理
|
||||||
|
- 社团创建和管理
|
||||||
|
- 学生加入社团
|
||||||
|
- 教师指导社团
|
||||||
|
|
||||||
|
## 2. 成绩管理系统 (Grade Management System)
|
||||||
|
|
||||||
|
### 功能概述
|
||||||
|
成绩管理系统用于管理学生的课程成绩,包括学生信息管理、教师信息管理、课程管理和成绩录入。
|
||||||
|
|
||||||
|
### 主要类结构
|
||||||
|
- **Student**: 学生类,包含学生基本信息
|
||||||
|
- **Teacher**: 教师类,包含教师基本信息
|
||||||
|
- **Course**: 课程类,包含课程基本信息
|
||||||
|
- **Grade**: 成绩类,管理学生的课程成绩
|
||||||
|
- **GradeManagementSystem**: 成绩管理系统主类,提供成绩管理的核心功能
|
||||||
|
|
||||||
|
### 主要功能
|
||||||
|
- 学生信息管理
|
||||||
|
- 教师信息管理
|
||||||
|
- 课程创建和管理
|
||||||
|
- 学生选课功能
|
||||||
|
- 成绩录入和管理
|
||||||
|
|
||||||
|
## 3. 课程管理系统 (Subject Management System)
|
||||||
|
|
||||||
|
### 功能概述
|
||||||
|
课程管理系统用于管理学校的学科和课程体系,建立学科与课程之间的层次关系。
|
||||||
|
|
||||||
|
### 主要类结构
|
||||||
|
- **Subject**: 学科类,包含学科基本信息和与课程的一对多关系
|
||||||
|
- **Course**: 课程类,包含课程基本信息
|
||||||
|
|
||||||
|
### 主要功能
|
||||||
|
- 学科信息管理
|
||||||
|
- 课程信息管理
|
||||||
|
- 学科与课程的关联管理
|
||||||
|
- 课程列表维护
|
||||||
|
|
||||||
|
## 系统架构
|
||||||
|
|
||||||
|
### 项目结构
|
||||||
|
```
|
||||||
|
com.school/
|
||||||
|
├── ClubManagementSystem.java # 社团管理系统主类
|
||||||
|
├── GradeManagementSystem.java # 成绩管理系统主类
|
||||||
|
├── Student.java # 学生类
|
||||||
|
├── Teacher.java # 教师类
|
||||||
|
├── Advisor.java # 指导教师类
|
||||||
|
├── Club.java # 社团类
|
||||||
|
├── Subject.java # 学科类
|
||||||
|
├── Course.java # 课程类
|
||||||
|
└── Grade.java # 成绩类
|
||||||
|
```
|
||||||
|
|
||||||
|
### 数据关系
|
||||||
|
- **Student** 与 **Course**: 多对多关系,通过选课功能实现
|
||||||
|
- **Student** 与 **Grade**: 一对多关系,一个学生有多门课程成绩
|
||||||
|
- **Course** 与 **Grade**: 一对多关系,一门课程有多名学生的成绩
|
||||||
|
- **Subject** 与 **Course**: 一对多关系,一个学科包含多门课程
|
||||||
|
- **Student** 与 **Club**: 多对多关系,学生可以加入多个社团
|
||||||
|
- **Advisor** 与 **Club**: 一对多关系,一个指导教师可以指导多个社团
|
||||||
|
|
||||||
|
## 编译和运行
|
||||||
|
|
||||||
|
### 编译命令
|
||||||
|
```bash
|
||||||
|
javac -d target/classes src/main/java/com/school/*.java
|
||||||
|
```
|
||||||
|
|
||||||
|
### 运行方式
|
||||||
|
分别运行三个管理系统的主类:
|
||||||
|
```bash
|
||||||
|
java -cp target/classes com.school.ClubManagementSystem
|
||||||
|
java -cp target/classes com.school.GradeManagementSystem
|
||||||
|
```
|
||||||
|
|
||||||
|
## 使用说明
|
||||||
|
|
||||||
|
1. **社团管理系统**:用于学校社团的日常管理,包括社团创建、成员管理和指导教师分配。
|
||||||
|
|
||||||
|
2. **成绩管理系统**:用于教师录入和管理学生成绩,支持按学生、按课程查询成绩。
|
||||||
|
|
||||||
|
3. **课程管理系统**:用于建立学校的学科课程体系,维护学科与课程之间的层次关系。
|
||||||
|
|
||||||
|
## 扩展建议
|
||||||
|
|
||||||
|
1. 添加数据库持久化功能
|
||||||
|
2. 开发图形用户界面
|
||||||
|
3. 实现用户权限管理
|
||||||
|
4. 添加数据报表和统计功能
|
||||||
|
5. 集成学生信息系统和教务管理系统
|
||||||
Loading…
Reference in new issue