用JAVA语言编程实现学生成绩管理程序,程序中需要对多种类型的学生的成绩进行分析
时间: 2024-06-09 13:08:29 浏览: 12
好的,我可以给你提供一个简单的Java程序来管理学生成绩。这个程序可以处理多种类型的学生,包括本科生、研究生和博士生,并且可以进行成绩的分析。
首先,我们需要定义一个学生类,包括学生的姓名、学号和成绩。对于不同类型的学生,我们可以继承这个学生类来创建不同的子类。
```java
public class Student {
private String name;
private String id;
private double score;
public Student(String name, String id, double score) {
this.name = name;
this.id = id;
this.score = score;
}
public String getName() {
return name;
}
public String getId() {
return id;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
public String toString() {
return name + "\t" + id + "\t" + score;
}
}
```
接下来,我们可以定义本科生、研究生和博士生类,这些类都继承自学生类,并且可以添加一些额外的属性。
```java
public class Undergraduate extends Student {
private int grade;
public Undergraduate(String name, String id, double score, int grade) {
super(name, id, score);
this.grade = grade;
}
public int getGrade() {
return grade;
}
public void setGrade(int grade) {
this.grade = grade;
}
public String toString() {
return super.toString() + "\t" + grade;
}
}
public class Graduate extends Student {
private String supervisor;
public Graduate(String name, String id, double score, String supervisor) {
super(name, id, score);
this.supervisor = supervisor;
}
public String getSupervisor() {
return supervisor;
}
public void setSupervisor(String supervisor) {
this.supervisor = supervisor;
}
public String toString() {
return super.toString() + "\t" + supervisor;
}
}
public class Doctoral extends Student {
private String tutor;
public Doctoral(String name, String id, double score, String tutor) {
super(name, id, score);
this.tutor = tutor;
}
public String getTutor() {
return tutor;
}
public void setTutor(String tutor) {
this.tutor = tutor;
}
public String toString() {
return super.toString() + "\t" + tutor;
}
}
```
现在我们已经定义好了学生类和各种类型的学生类,接下来我们可以编写一个学生管理程序,可以对学生的成绩进行分析。
```java
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class StudentManager {
private List<Student> students;
public StudentManager() {
students = new ArrayList<Student>();
}
public void addStudent(Student student) {
students.add(student);
}
public void removeStudent(Student student) {
students.remove(student);
}
public List<Student> getStudents() {
return students;
}
public double getAverageScore() {
double sum = 0;
for (Student student : students) {
sum += student.getScore();
}
return sum / students.size();
}
public double getMaxScore() {
double maxScore = Double.MIN_VALUE;
for (Student student : students) {
if (student.getScore() > maxScore) {
maxScore = student.getScore();
}
}
return maxScore;
}
public double getMinScore() {
double minScore = Double.MAX_VALUE;
for (Student student : students) {
if (student.getScore() < minScore) {
minScore = student.getScore();
}
}
return minScore;
}
public List<Student> getTopNScore(int n) {
List<Student> topN = new ArrayList<Student>();
Collections.sort(students, new Comparator<Student>() {
public int compare(Student s1, Student s2) {
if (s1.getScore() < s2.getScore()) {
return 1;
}
else if (s1.getScore() > s2.getScore()) {
return -1;
}
else {
return 0;
}
}
});
for (int i = 0; i < Math.min(n, students.size()); i++) {
topN.add(students.get(i));
}
return topN;
}
}
```
这个程序具有以下功能:
1. 可以添加和删除学生;
2. 可以获取所有学生的列表;
3. 可以计算所有学生的平均成绩、最高成绩和最低成绩;
4. 可以获取成绩排名前N的学生。
现在我们可以编写一个测试程序来验证这个学生管理程序的功能。
```java
public class TestStudentManager {
public static void main(String[] args) {
StudentManager manager = new StudentManager();
manager.addStudent(new Undergraduate("张三", "001", 90, 2018));
manager.addStudent(new Undergraduate("李四", "002", 85, 2017));
manager.addStudent(new Graduate("王五", "003", 95, "张三教授"));
manager.addStudent(new Graduate("赵六", "004", 92, "李四教授"));
manager.addStudent(new Doctoral("钱七", "005", 98, "王五教授"));
manager.addStudent(new Doctoral("孙八", "006", 96, "赵六教授"));
System.out.println("所有学生的成绩:");
for (Student student : manager.getStudents()) {
System.out.println(student);
}
System.out.println("平均成绩:" + manager.getAverageScore());
System.out.println("最高成绩:" + manager.getMaxScore());
System.out.println("最低成绩:" + manager.getMinScore());
System.out.println("前3名学生的成绩:");
for (Student student : manager.getTopNScore(3)) {
System.out.println(student);
}
}
}
```
运行这个测试程序,我们可以得到以下输出:
```
所有学生的成绩:
张三 001 90.0 2018
李四 002 85.0 2017
王五 003 95.0 张三教授
赵六 004 92.0 李四教授
钱七 005 98.0 王五教授
孙八 006 96.0 赵六教授
平均成绩:92.66666666666667
最高成绩:98.0
最低成绩:85.0
前3名学生的成绩:
钱七 005 98.0 王五教授
孙八 006 96.0 赵六教授
王五 003 95.0 张三教授
```
这个程序可以管理多种类型的学生,并且可以进行成绩的分析。你可以根据自己的需要来修改和扩展这个程序。