Compare commits

...

No commits in common. 'master' and 'main' have entirely different histories.
master ... main

@ -1,38 +0,0 @@
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; }
}

@ -1,53 +0,0 @@
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; }
}

@ -1,65 +0,0 @@
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());
}
}

@ -1,76 +0,0 @@
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; }
}

@ -1,36 +0,0 @@
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;
}
}

@ -1,50 +0,0 @@
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;
}
}

@ -1,64 +0,0 @@
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));
}
}

@ -1,35 +0,0 @@
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; }
}

@ -1,87 +0,0 @@
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; }
}

@ -1,48 +0,0 @@
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);
}
}
}

@ -1,49 +0,0 @@
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; }
}

@ -1,39 +0,0 @@
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; }
}

@ -1,42 +0,0 @@
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();
}
}

@ -1,59 +0,0 @@
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);
}
}
}

@ -1,109 +1,2 @@
# 学校管理系统
# 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…
Cancel
Save