用JAVA的多态编写一个学校课程管理系统
时间: 2023-07-19 07:18:43 浏览: 99
好的,以下是使用JAVA的多态编写的一个学校课程管理系统的示例代码:
```java
import java.util.ArrayList;
import java.util.Scanner;
public class CourseManagementSystem {
public static void main(String[] args) {
ArrayList<Person> persons = new ArrayList<Person>();
ArrayList<Enrollment> enrollments = new ArrayList<Enrollment>();
Scanner scanner = new Scanner(System.in);
// 添加学生、教师和课程信息
System.out.println("请输入学生信息:");
persons.add(new Student(scanner.nextLine()));
System.out.println("请输入教师信息:");
persons.add(new Teacher(scanner.nextLine()));
System.out.println("请输入课程信息:");
Course course = new Course(scanner.nextLine());
// 学生选课
System.out.println("请选择课程:");
System.out.println(course.getName());
for (int i = 0; i < persons.size(); i++) {
if (persons.get(i) instanceof Student) {
System.out.println((i + 1) + "." + persons.get(i).getName());
}
}
int choice = scanner.nextInt();
enrollments.add(new Enrollment((Student)persons.get(choice - 1), course));
// 教师录入成绩
System.out.println("请输入成绩:");
int score = scanner.nextInt();
enrollments.get(0).setScore(score);
// 查询成绩统计信息
int totalScore = 0;
int count = 0;
for (Enrollment enrollment : enrollments) {
totalScore += enrollment.getScore();
count++;
}
int averageScore = totalScore / count;
System.out.println("平均成绩为:" + averageScore);
}
}
abstract class Person {
protected String name;
public Person(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
class Student extends Person {
public Student(String name) {
super(name);
}
}
class Teacher extends Person {
public Teacher(String name) {
super(name);
}
}
class Course {
private String name;
public Course(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
class Enrollment {
private Student student;
private Course course;
private int score;
public Enrollment(Student student, Course course) {
this.student = student;
this.course = course;
}
public Student getStudent() {
return student;
}
public Course getCourse() {
return course;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
}
```
在这个示例中,我们使用了多态的概念,将学生和教师都继承自抽象类Person,然后在学生选课的时候只显示学生的信息,而在教师录入成绩的时候只显示教师的信息。这样就可以避免了代码中的类型转换,使代码更加易读和易于维护。
阅读全文
相关推荐


















