用Java写高校人员分教师、学生、工人等多个类别,所有的人除了姓名、年龄、工号/学号等共有信息外,教师和学生还具有不同的职责和属性。一个教师可以教多门课程,一门课程可以有多个教师教;一个学生需要学习多门课程,一门课程也会有多个学生学习。学期末,会记录学生每门课的成绩。就上述问题 定义实现以下功能指今: •所有信息由屏幕或文件输人; •打印输出所有学生属性; •打印输出所有教师属性; •按课程统计学生平均成绩; •统计指定学生的总分; •统计老师名下学生数量;
时间: 2024-02-28 09:54:37 浏览: 61
好的,这是一个典型的面向对象编程问题,可以使用Java语言来解决。下面是我给出的大致思路:
首先,我们需要定义一个Person类,包含姓名、年龄、工号/学号等共有信息。
然后,我们需要定义一个Teacher类,继承自Person类,包含教授课程及课程人数等属性和方法。
接着,我们需要定义一个Student类,同样继承自Person类,包含学习课程及成绩等属性和方法。
我们还需要定义一个Course类,包含课程名称、教师、学生等属性和方法。
最后,我们可以定义一个School类,包含所有的教师、学生、课程等信息和方法。在School类中,我们可以实现按课程统计学生平均成绩、统计指定学生的总分、统计老师名下学生数量等功能。
具体实现的代码可以参考以下示例:
```java
// Person类
public class Person {
private String name; // 姓名
private int age; // 年龄
private String id; // 工号/学号
public Person(String name, int age, String id) {
this.name = name;
this.age = age;
this.id = id;
}
// getter和setter方法
// ...
}
// Teacher类
public class Teacher extends Person {
private List<Course> courses; // 教授课程
public Teacher(String name, int age, String id) {
super(name, age, id);
courses = new ArrayList<>();
}
public void addCourse(Course course) {
courses.add(course);
}
public int getStudentCount() {
int count = 0;
for (Course course : courses) {
count += course.getStudentCount();
}
return count;
}
// getter和setter方法
// ...
}
// Student类
public class Student extends Person {
private List<Course> courses; // 学习课程
private Map<Course, Integer> scores; // 成绩
public Student(String name, int age, String id) {
super(name, age, id);
courses = new ArrayList<>();
scores = new HashMap<>();
}
public void addCourse(Course course) {
courses.add(course);
}
public void setScore(Course course, int score) {
scores.put(course, score);
}
public int getTotalScore() {
int total = 0;
for (int score : scores.values()) {
total += score;
}
return total;
}
// getter和setter方法
// ...
}
// Course类
public class Course {
private String name; // 课程名称
private Teacher teacher; // 教师
private List<Student> students; // 学生
public Course(String name, Teacher teacher) {
this.name = name;
this.teacher = teacher;
students = new ArrayList<>();
}
public void addStudent(Student student) {
students.add(student);
}
public int getStudentCount() {
return students.size();
}
public double getAverageScore() {
int total = 0;
for (Student student : students) {
total += student.scores.get(this);
}
return total / (double) students.size();
}
// getter和setter方法
// ...
}
// School类
public class School {
private List<Teacher> teachers; // 教师
private List<Student> students; // 学生
private List<Course> courses; // 课程
public School() {
teachers = new ArrayList<>();
students = new ArrayList<>();
courses = new ArrayList<>();
}
public void addTeacher(Teacher teacher) {
teachers.add(teacher);
}
public void addStudent(Student student) {
students.add(student);
}
public void addCourse(Course course) {
courses.add(course);
}
public void printAllStudents() {
for (Student student : students) {
System.out.println("姓名:" + student.getName());
System.out.println("年龄:" + student.getAge());
System.out.println("学号:" + student.getId());
// 输出学生其他属性
// ...
}
}
public void printAllTeachers() {
for (Teacher teacher : teachers) {
System.out.println("姓名:" + teacher.getName());
System.out.println("年龄:" + teacher.getAge());
System.out.println("工号:" + teacher.getId());
// 输出教师其他属性
// ...
}
}
public double getAverageScoreByCourse(Course course) {
return course.getAverageScore();
}
public int getTotalScoreByStudent(Student student) {
return student.getTotalScore();
}
public int getStudentCountByTeacher(Teacher teacher) {
return teacher.getStudentCount();
}
// 其他方法
// ...
}
```
阅读全文