Java 学生信息管理系统:读取、写入文件并计算平均分
import java.io.*;
import java.util.ArrayList;
import java.util.List;
class Student {
private String name;
private String gender;
private int age;
private int score;
public Student() {}
public Student(String name, String gender, int age, int score) {
this.name = name;
this.gender = gender;
this.age = age;
this.score = score;
}
// getter/setter
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public String getGender() { return gender; }
public void setGender(String gender) { this.gender = gender; }
public int getAge() { return age; }
public void setAge(int age) { this.age = age; }
public int getScore() { return score; }
public void setScore(int score) { this.score = score; }
}
public class Main {
public static void main(String[] args) {
// 初始化学员集合
List<Student> stuList = new ArrayList<>();
stuList.add(new Student('迪丽热巴','女',18,99));
stuList.add(new Student('古力娜扎','女',19,98));
stuList.add(new Student('周杰伦','男',20,88));
stuList.add(new Student('蔡徐坤','男',19,78));
// 写入文件
try (FileWriter writer = new FileWriter('a.txt')) {
for (Student stu : stuList) {
writer.write(stu.getName() + ',' + stu.getGender() + ',' + stu.getAge() + ',' + stu.getScore() + '\n');
}
} catch (IOException e) {
e.printStackTrace();
}
// 读取文件
try (FileReader reader = new FileReader('a.txt');
BufferedReader br = new BufferedReader(reader)) {
String line;
while ((line = br.readLine()) != null) {
String[] fields = line.split(',');
Student stu = new Student(fields[0], fields[1], Integer.parseInt(fields[2]), Integer.parseInt(fields[3]));
stuList.add(stu);
}
} catch (IOException e) {
e.printStackTrace();
}
// 输出学员信息
for (Student stu : stuList) {
System.out.println(stu.getName() + ' ' + stu.getGender() + ' ' + stu.getAge() + ' ' + stu.getScore());
}
// 计算平均分数
double sum = 0;
for (Student stu : stuList) {
sum += stu.getScore();
}
double avg = sum / stuList.size();
System.out.println('平均分数:' + avg);
}
}
该程序实现了以下功能:
- 创建学生类: 定义一个名为
Student的类,包含name、gender、age和score属性,并提供构造方法和getter/setter方法。 - 初始化学生集合: 在
main方法中创建一个ArrayList存储Student对象,并初始化一些学生数据。 - 写入学生信息到文件: 使用
FileWriter将学生信息写入a.txt文件,每个学生信息占一行,字段之间用逗号分隔。 - 从文件读取学生信息: 使用
FileReader和BufferedReader读取a.txt文件,将每行信息解析成Student对象并添加到学生集合中。 - 输出学生信息: 遍历学生集合,输出每个学生的姓名、性别、年龄和分数。
- 计算平均分数: 遍历学生集合,计算所有学生的平均分数并输出。
使用说明:
- 运行程序,程序会将学生信息写入
a.txt文件,然后从文件读取学生信息,并输出所有学生的详细信息和平均分数。 - 可以在程序中修改学生数据,然后重新运行程序,以测试程序功能。
注意事项:
- 程序中使用了
try-with-resources语句,确保文件在使用完后自动关闭,避免资源泄露。 - 程序使用了
BufferedReader来提高读取文件的效率。 - 程序中使用了
ArrayList存储学生对象,可以方便地添加和删除学生信息。 - 程序中使用了
double类型存储平均分数,以保证计算精度。
拓展:
- 可以添加更多功能,例如:添加、删除、修改学生信息。
- 可以将程序封装成一个独立的类库,方便在其他项目中使用。
- 可以使用图形界面来提高程序的用户体验。
本程序是一个简单的学生信息管理系统示例,可以作为学习 Java 文件读写操作和集合使用的参考。
希望本程序能对您有所帮助。
原文地址: https://www.cveoy.top/t/topic/ok5N 著作权归作者所有。请勿转载和采集!