编写一个学生成绩管理系统, 内容包括学号, 姓名以及数学外语 java等课程成绩,设计一个文件管 理程序
时间: 2024-02-19 19:58:19 浏览: 31
好的,我们可以使用Java的File、Scanner和PrintWriter类来实现。以下是一个简单的学生成绩管理系统:
```java
import java.io.*;
import java.util.*;
public class StudentScoreManagementSystem {
public static void main(String[] args) {
// 读取学生成绩文件
File file = new File("scores.txt");
List<Student> students = new ArrayList<>();
try {
Scanner scanner = new Scanner(file);
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
String[] parts = line.split(",");
String id = parts[0];
String name = parts[1];
int mathScore = Integer.parseInt(parts[2]);
int englishScore = Integer.parseInt(parts[3]);
int javaScore = Integer.parseInt(parts[4]);
students.add(new Student(id, name, mathScore, englishScore, javaScore));
}
scanner.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
// 输出所有学生信息
System.out.println("所有学生信息:");
for (Student student : students) {
System.out.println(student);
}
// 计算平均分并输出
double mathAvg = 0;
double englishAvg = 0;
double javaAvg = 0;
for (Student student : students) {
mathAvg += student.getMathScore();
englishAvg += student.getEnglishScore();
javaAvg += student.getJavaScore();
}
mathAvg /= students.size();
englishAvg /= students.size();
javaAvg /= students.size();
System.out.println("数学平均分:" + mathAvg);
System.out.println("英语平均分:" + englishAvg);
System.out.println("Java平均分:" + javaAvg);
// 查找某个学生信息
Scanner scanner = new Scanner(System.in);
System.out.print("请输入要查找的学生姓名:");
String name = scanner.next();
boolean found = false;
for (Student student : students) {
if (student.getName().equals(name)) {
System.out.println("找到学生信息:" + student);
found = true;
}
}
if (!found) {
System.out.println("没有找到该学生信息");
}
// 添加某个学生信息
System.out.print("请输入要添加的学生学号:");
String id = scanner.next();
System.out.print("请输入要添加的学生姓名:");
name = scanner.next();
System.out.print("请输入要添加的学生数学成绩:");
int mathScore = scanner.nextInt();
System.out.print("请输入要添加的学生英语成绩:");
int englishScore = scanner.nextInt();
System.out.print("请输入要添加的学生Java成绩:");
int javaScore = scanner.nextInt();
students.add(new Student(id, name, mathScore, englishScore, javaScore));
try {
PrintWriter writer = new PrintWriter(new FileWriter(file, true));
writer.println(id + "," + name + "," + mathScore + "," + englishScore + "," + javaScore);
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
// 输出所有学生信息
System.out.println("所有学生信息:");
for (Student student : students) {
System.out.println(student);
}
}
}
class Student {
private String id;
private String name;
private int mathScore;
private int englishScore;
private int javaScore;
public Student(String id, String name, int mathScore, int englishScore, int javaScore) {
this.id = id;
this.name = name;
this.mathScore = mathScore;
this.englishScore = englishScore;
this.javaScore = javaScore;
}
public String getId() {
return id;
}
public String getName() {
return name;
}
public int getMathScore() {
return mathScore;
}
public int getEnglishScore() {
return englishScore;
}
public int getJavaScore() {
return javaScore;
}
@Override
public String toString() {
return "学号:" + id + " 姓名:" + name + " 数学:" + mathScore + " 英语:" + englishScore + " Java:" + javaScore;
}
}
```
在上面的代码中,我们首先使用Scanner类读取包含学生成绩的文件,并将它们存储在一个ArrayList中。然后,我们输出所有学生信息,并计算每个科目的平均分。接下来,我们使用Scanner类从控制台读取要查找的学生姓名,如果找到了该学生,则输出其信息,否则输出未找到的信息。然后,我们使用Scanner类从控制台读取要添加的学生信息,并将其添加到ArrayList和文件中。最后,我们再次输出所有学生信息。
请注意,在向文件中添加学生信息时,我们需要使用FileWriter类的第二个参数将其设置为true,以使用追加模式打开文件。这样,我们就可以将新数据添加到文件的末尾,而不是覆盖原有数据。