5. 一个班级包含一些学生,每个学生有固定的学号与姓名,有JAVA,计算机网络,英语三门课的成绩。试采用面向对象程序设计方法,实现如下功能: 1)分别找出班上总成绩及单科成绩最高的学生(若有多个,应都找出来),并输出这些学生的信息; 2)分别找出班上至少有一门课成绩低于60分、至少有两门课成绩低于60及三门课成绩均低于60分的学生,并输出这些学生的信息。 3)允许通过输入一个学生的学号或姓名(姓名可能重复,因此可能找到多个学生)寻找学生,并输出其信息(或找到多个,则都输出)。
时间: 2023-06-05 08:05:07 浏览: 130
我明白您所提出的问题。这是一个关于班级成绩管理系统的问题,可以采用面向对象程序设计方法进行实现。具体实现如下:
定义一个学生类 Student,包含学号、姓名和三门课的成绩属性;
定义一个班级类 Class,包含一个学生列表属性,能够添加、删除和查找学生功能;
在 Class 类中实现以下功能:
- 找出班上总成绩最高的学生和单科成绩最高的学生,并输出这些学生的信息;
- 找出班上至少有一门课成绩低于60分、至少有两门课成绩低于60分及三门课成绩均低于60分的学生,并输出这些学生的信息;
- 允许通过输入一个学生的学号或姓名(姓名可能重复,因此可能找到多个学生)寻找学生,并输出其信息(或找到多个,则都输出)。
代码实现示例:
class Student {
private String id;
private String name;
private double javaGrade;
private double networkGrade;
private double englishGrade;
public Student(String id, String name, double javaGrade, double networkGrade, double englishGrade) {
this.id = id;
this.name = name;
this.javaGrade = javaGrade;
this.networkGrade = networkGrade;
this.englishGrade = englishGrade;
}
public String getId() {
return id;
}
public String getName() {
return name;
}
public double getJavaGrade() {
return javaGrade;
}
public double getNetworkGrade() {
return networkGrade;
}
public double getEnglishGrade() {
return englishGrade;
}
public double getTotalGrade() {
return javaGrade + networkGrade + englishGrade;
}
}
class Class {
private List<Student> students = new ArrayList<>();
public void addStudent(Student student) {
students.add(student);
}
public void removeStudent(Student student) {
students.remove(student);
}
public List<Student> findStudents(String keyword) {
List<Student> results = new ArrayList<>();
for (Student student : students) {
if (student.getId().equals(keyword) || student.getName().equals(keyword)) {
results.add(student);
}
}
return results;
}
public List<Student> findAll() {
return students;
}
public Student findMaxTotalGradeStudent() {
Student maxStudent = students.get(0);
for (Student student : students) {
if (student.getTotalGrade() > maxStudent.getTotalGrade()) {
maxStudent = student;
}
}
return maxStudent;
}
public List<Student> findMaxSingleGradeStudent() {
List<Student> maxStudents = new ArrayList<>();
double maxJava = 0;
double maxNetwork = 0;
double maxEnglish = 0;
for (Student student : students) {
if (student.getJavaGrade() > maxJava) {
maxJava = student.getJavaGrade();
}
if (student.getNetworkGrade() > maxNetwork) {
maxNetwork = student.getNetworkGrade();
}
if (student.getEnglishGrade() > maxEnglish) {
maxEnglish = student.getEnglishGrade();
}
}
for (Student student : students) {
if (student.getJavaGrade() == maxJava || student.getNetworkGrade() == maxNetwork || student.getEnglishGrade() == maxEnglish) {
maxStudents.add(student);
}
}
return maxStudents;
}
public List<Student> findBadStudents() {
List<Student> badStudents = new ArrayList<>();
for (Student student : students) {
int lowCount = 0;
if (student.getJavaGrade() < 60) {
lowCount++;
}
if (student.getNetworkGrade() < 60) {
lowCount++;
}
if (student.getEnglishGrade() < 60) {
lowCount++;
}
if (lowCount >= 1 || (student.getJavaGrade() < 60 && student.getNetworkGrade() < 60) || (student.getJavaGrade() < 60 && student.getEnglishGrade() < 60) || (student.getNetworkGrade() < 60 && student.getEnglishGrade() < 60) || lowCount == 3) {
badStudents.add(student);
}
}
return badStudents;
}
}
以上就是我根据您提出的问题的答案,希望能够帮到您。如果有任何疑问,请随时与我交流。
阅读全文