用java设计一个用于统计一个班学生成绩的程序,需要完成以下功能: 1)输入学生成绩信息 2)按总平均成绩排序 3)按学号排序 4)输出学生成绩表 5)结束退出 根据以上描述,编写程序输出功能菜单,输入菜单选择,根据选择执行对应功能,每个功能只显示该功能名称,例如选2,则输出:“现在执行按总平均成绩排序功能!”
时间: 2024-02-17 15:01:29 浏览: 18
好的,以下是实现以上功能的Java代码:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = 0; // 学生数
int choice = 0; // 菜单选择
Student[] students = null; // 学生数组
while (true) {
System.out.println("学生成绩管理系统菜单:");
System.out.println("1. 输入学生成绩信息");
System.out.println("2. 按总平均成绩排序");
System.out.println("3. 按学号排序");
System.out.println("4. 输出学生成绩表");
System.out.println("5. 结束退出");
System.out.print("请选择功能(1-5):");
choice = scanner.nextInt();
switch (choice) {
case 1:
System.out.print("请输入学生数:");
n = scanner.nextInt();
students = new Student[n];
for (int i = 0; i < n; i++) {
System.out.print("请输入第" + (i + 1) + "个学生的学号和成绩(用空格隔开):");
int id = scanner.nextInt();
int score = scanner.nextInt();
students[i] = new Student(id, score);
}
System.out.println("学生成绩信息输入完成!");
break;
case 2:
if (students == null) {
System.out.println("请先输入学生成绩信息!");
break;
}
sort(students, 1);
System.out.println("按总平均成绩排序完成!");
break;
case 3:
if (students == null) {
System.out.println("请先输入学生成绩信息!");
break;
}
sort(students, 2);
System.out.println("按学号排序完成!");
break;
case 4:
if (students == null) {
System.out.println("请先输入学生成绩信息!");
break;
}
printTable(students);
break;
case 5:
System.out.println("退出程序!");
return;
default:
System.out.println("选择错误,请重新选择!");
break;
}
}
}
/**
* 按指定方式排序
* @param students 学生数组
* @param type 排序方式,1表示按平均成绩排序,2表示按学号排序
*/
private static void sort(Student[] students, int type) {
for (int i = 0; i < students.length - 1; i++) {
for (int j = i + 1; j < students.length; j++) {
if (type == 1) {
// 按平均成绩排序
if (students[i].getAverageScore() < students[j].getAverageScore()) {
Student temp = students[i];
students[i] = students[j];
students[j] = temp;
}
} else if (type == 2) {
// 按学号排序
if (students[i].getId() > students[j].getId()) {
Student temp = students[i];
students[i] = students[j];
students[j] = temp;
}
}
}
}
}
/**
* 输出学生成绩表
* @param students 学生数组
*/
private static void printTable(Student[] students) {
System.out.println("学号\t成绩");
for (int i = 0; i < students.length; i++) {
System.out.println(students[i].getId() + "\t" + students[i].getAverageScore());
}
}
}
/**
* 学生类
*/
class Student {
private int id; // 学号
private int[] scores; // 成绩数组
public Student(int id, int... scores) {
this.id = id;
this.scores = scores;
}
/**
* 获取学号
* @return 学号
*/
public int getId() {
return id;
}
/**
* 获取平均成绩
* @return 平均成绩
*/
public double getAverageScore() {
double sum = 0;
for (int i = 0; i < scores.length; i++) {
sum += scores[i];
}
return sum / scores.length;
}
}
```
以上代码实现了菜单选择功能,可以输入学生成绩信息,按总平均成绩排序,按学号排序,输出学生成绩表和结束退出。在排序时,可以按总平均成绩或学号排序,输出学生成绩表时,会按照学号从小到大的顺序输出。