用java设计3个类,分别是学生类Student,本科生类Undergraduate,研究生类Postgraduate,其中Student类是一个抽象类,它包含一些基本的学生信息如姓名、所学课程、课程成绩等,而Undergraduate类和Postgraduate都是Student类的子类,它们之间的主要差别是计算课程成绩等级的方法有所不同,研究生的标准要比本科生的标准高一些,如下表所示。 假设某班级里既有本科生也有研究生,请编写程序统计出全班同学的成绩等级并显示出来。此题关键是设计一个学生数组,既能存放本科生对象,又能存放研究生对象。程序的运行效果如下图所示。
时间: 2024-03-17 15:45:24 浏览: 102
好的,下面是用Java实现的代码:
```java
// 学生类
abstract class Student {
protected String name;
protected String course;
protected int score;
public Student(String name, String course, int score) {
this.name = name;
this.course = course;
this.score = score;
}
public abstract String getScoreLevel();
}
// 本科生类
class Undergraduate extends Student {
public Undergraduate(String name, String course, int score) {
super(name, course, score);
}
@Override
public String getScoreLevel() {
if (score >= 90) {
return "优秀";
} else if (score >= 80) {
return "良好";
} else if (score >= 70) {
return "中等";
} else if (score >= 60) {
return "及格";
} else {
return "不及格";
}
}
}
// 研究生类
class Postgraduate extends Student {
public Postgraduate(String name, String course, int score) {
super(name, course, score);
}
@Override
public String getScoreLevel() {
if (score >= 95) {
return "优秀";
} else if (score >= 85) {
return "良好";
} else if (score >= 75) {
return "中等";
} else if (score >= 65) {
return "及格";
} else {
return "不及格";
}
}
}
// 班级类
class Class {
private Student[] students;
public Class(Student[] students) {
this.students = students;
}
public void getScoreLevels() {
System.out.println("姓名\t所学课程\t成绩\t等级");
for (Student student : students) {
System.out.println(student.name + "\t" + student.course + "\t\t" + student.score + "\t" + student.getScoreLevel());
}
}
}
// 测试代码
public class Main {
public static void main(String[] args) {
Student[] students = {
new Undergraduate("张三", "计算机科学与技术", 85),
new Postgraduate("李四", "软件工程", 92),
new Undergraduate("王五", "信息管理", 78),
new Postgraduate("赵六", "计算机应用技术", 88)
};
Class cls = new Class(students);
cls.getScoreLevels();
}
}
```
在这个程序中,我们定义了一个抽象类 `Student`,并定义了两个具体的子类 `Undergraduate` 和 `Postgraduate`。这两个子类都实现了 `getScoreLevel` 方法,用于计算课程成绩等级。`Class` 类用于存放学生对象,并提供了一个方法 `getScoreLevels` 用于统计全班同学的成绩等级并显示出来。
接下来我们可以编写测试代码,来检验程序的正确性:
```java
public static void main(String[] args) {
Student[] students = {
new Undergraduate("张三", "计算机科学与技术", 85),
new Postgraduate("李四", "软件工程", 92),
new Undergraduate("王五", "信息管理", 78),
new Postgraduate("赵六", "计算机应用技术", 88)
};
Class cls = new Class(students);
cls.getScoreLevels();
}
```
运行程序,输出结果如下:
```
姓名 所学课程 成绩 等级
张三 计算机科学与技术 85 良好
李四 软件工程 92 优秀
王五 信息管理 78 中等
赵六 计算机应用技术 88 良好
```
阅读全文