用java设计一个用于统计一个班学生成绩的程序,需要完成以下功能: 1)输入学生成绩信息 2)按总平均成绩排序 3)按学号排序 4)输出学生成绩表 5)结束退出 根据以上描述,编写程序输出功能菜单,输入菜单选择,根据选择执行对应功能,每个功能只显示该功能名称,例如选2,则输出:“现在执行按总平均成绩排序功能!”
时间: 2024-02-18 17:05:31 浏览: 109
好的,以下是Java代码实现:
```java
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;
// 定义学生类
class Student {
private String name;
private String id;
private double chinese;
private double math;
private double english;
private double total;
public Student(String name, String id, double chinese, double math, double english) {
this.name = name;
this.id = id;
this.chinese = chinese;
this.math = math;
this.english = english;
this.total = chinese + math + english;
}
// 定义输出格式
public String toString() {
return id + "\t" + name + "\t" + chinese + "\t" + math + "\t" + english + "\t" + String.format("%.2f", total);
}
public double getTotal() {
return total;
}
public String getId() {
return id;
}
}
public class Main {
public static void main(String[] args) {
List<Student> students = new ArrayList<>();
Scanner input = new Scanner(System.in);
while (true) {
// 输出菜单
System.out.println("1. 输入学生成绩信息");
System.out.println("2. 按总平均成绩排序");
System.out.println("3. 按学号排序");
System.out.println("4. 输出学生成绩表");
System.out.println("5. 结束退出");
// 获取用户选择
System.out.print("请输入菜单编号:");
String choice = input.nextLine();
// 执行对应功能
if (choice.equals("1")) {
System.out.print("请输入学生姓名:");
String name = input.nextLine();
System.out.print("请输入学生学号:");
String id = input.nextLine();
System.out.print("请输入语文成绩:");
double chinese = input.nextDouble();
System.out.print("请输入数学成绩:");
double math = input.nextDouble();
System.out.print("请输入英语成绩:");
double english = input.nextDouble();
input.nextLine();
Student student = new Student(name, id, chinese, math, english);
students.add(student);
System.out.println("学生成绩信息输入成功!\n");
} else if (choice.equals("2")) {
Collections.sort(students, Comparator.comparing(Student::getTotal).reversed());
System.out.println("现在执行按总平均成绩排序功能!\n");
} else if (choice.equals("3")) {
Collections.sort(students, Comparator.comparing(Student::getId));
System.out.println("现在执行按学号排序功能!\n");
} else if (choice.equals("4")) {
// 输出表头
System.out.println("学号\t姓名\t语文\t数学\t英语\t总分");
for (Student student : students) {
System.out.println(student);
}
System.out.println();
} else if (choice.equals("5")) {
System.out.println("程序结束,谢谢使用!");
break;
} else {
System.out.println("菜单编号输入有误,请重新输入!\n");
}
}
input.close();
}
}
```
同样可以将代码保存为.java文件并运行,程序会依次输出菜单,根据用户选择执行对应功能。学生信息也通过`Student`类进行封装,方便进行排序和输出。需要注意的是,输入时需要用`nextLine()`读取掉回车符。
阅读全文