建立一个学生类,有学号、姓名、3门课成绩、总分等信息,能输入学生数据,(不需要从键盘输入数据,通过构造方法传递数据就可,传递的数据有学号、姓名、三门课成绩;构造方法实现成功的同学再尝试从键盘输入数据),要求编写完整的程序能按照总分进行降序排列,按照名词打印出所有学生的详细信息。
时间: 2024-12-23 13:16:33 浏览: 2
数据结构-学生数据结构成绩管理系统.doc
首先,我们创建一个名为`Student`的类,包含学号、姓名、三门课程的成绩以及计算总分的方法。接着,我们将使用构造函数接收初始数据,并提供一个方法来获取用户输入,以便添加更多的学生数据。最后,我们将实现排序和打印功能。
```java
public class Student {
private String id;
private String name;
private int[] scores = new int[3]; // 代表三门课程的成绩
public Student(String id, String name, int score1, int score2, int score3) {
this.id = id;
this.name = name;
this.scores[0] = score1;
this.scores[1] = score2;
this.scores[2] = score3;
}
// 获取用户输入
public void inputScores() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入学号:");
id = scanner.nextLine();
System.out.println("请输入姓名:");
name = scanner.nextLine();
System.out.println("请输入三门课程成绩(例如100 95 85):");
String[] scoreStrs = scanner.nextLine().split(" ");
for (int i = 0; i < 3; i++) {
scores[i] = Integer.parseInt(scoreStrs[i]);
}
}
// 计算总分
public int getTotalScore() {
return scores[0] + scores[1] + scores[2];
}
@Override
public String toString() {
return "学生:" + id + ", 姓名:" + name + ", 成绩:" + Arrays.toString(scores) + ", 总分:" + getTotalScore();
}
// 按照总分降序排列并打印
public static void main(String[] args) {
ArrayList<Student> students = new ArrayList<>();
Student student1 = new Student("001", "小明", 90, 88, 92); // 构造方法传递数据
Student student2 = new Student("002", "小红", 85, 92, 90); // 构造方法传递数据
// 添加用户输入的学生
student1.inputScores();
students.add(student1);
// 排序(这里可以使用Collections.sort,但为了简单起见,我们可以自定义一个比较器)
Collections.sort(students, new Comparator<Student>() {
@Override
public int compare(Student s1, Student s2) {
return s2.getTotalScore() - s1.getTotalScore();
}
});
for (Student student : students) {
System.out.println(student);
}
}
}
```
阅读全文