用Java实现以下描述:输入5个学生的信息(包含学号、姓名、3科成绩),统计各学生的总分,然后将学生信息和统计结果存入二进制数据文件STUDENT.DAT中,再从STUDENT.DAT文件中读取数据,寻找平均分最高的学生,并输出该学生的所有信息。完整代码即可
时间: 2023-02-06 12:55:45 浏览: 323
在 Java 中,可以使用 Scanner 类来从控制台输入学生的信息,使用 FileOutputStream 和 DataOutputStream 类将学生信息和统计结果写入二进制数据文件,使用 FileInputStream 和 DataInputStream 类从文件中读取数据。
下面是一个示例代码,实现了上述功能:
```
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Scanner;
class Student {
int id;
String name;
int[] scores;
int total;
double average;
}
public class Main {
public static void main(String[] args) throws Exception {
Scanner scanner = new Scanner(System.in);
// 存储所有学生的信息
Student[] students = new Student[5];
// 从控制台输入学生信息
for (int i = 0; i < 5; i++) {
Student s = new Student();
System.out.print("请输入学号:");
s.id = scanner.nextInt();
System.out.print("请输入姓名:");
s.name = scanner.next();
s.scores = new int[3];
for (int j = 0; j < 3; j++) {
System.out.print("请输入第" + (j + 1) + "科成绩:");
s.scores[j] = scanner.nextInt();
s.total += s.scores[j];
}
s.average = (double) s.total / 3;
students[i] = s;
}
// 将学生信息和统计结果写入二进制数据文件
try (FileOutputStream fos = new FileOutputStream("STUDENT.DAT");
DataOutputStream dos = new DataOutputStream(fos)) {
for (Student s : students) {
dos.writeInt(s.id);
dos.writeUTF(s.name);
for (int score : s.scores) {
dos.writeInt(score);
}
dos.writeInt(s.total);
dos.writeDouble(s.average);
}
}
// 从文件中读取数据
阅读全文