核心内容:
• Java 基础语法(变量、流程控制、数组)
• 面向对象编程(类、继承、多态、接口)
• 常用类(String、ArrayList、Map)
• 异常处理、文件操作、简单多线程
功能:
增删查改学生、排序、导出到文件
创建 Student 类(表示学生对象)
package Student;
import java.io.Serializable;
public class Student implements Serializable {
private static final long serialVersionUID = 1L;
private String name;
private int age;
private int score;
public Student(String name, int age, int score) {
this.name = name;
this.age = age;
this.score = score;
}
public Student() {
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public int getScore(){
return score;
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public void setScore(int score) {
this.score = score;
}
// 打印学生信息
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", score=" + score +
'}';
}
}主程序 Main.java
package Student;
import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Scanner;
public class Main {
static ArrayList<Student> students = new ArrayList<>();
static Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
// 读取数据
loadStudentsFromFile();
while (true) {
showMenu();
int choice = scanner.nextInt();
scanner.nextLine(); // 清除换行符
switch (choice) {
case 1 -> addStudent();
case 2 -> showStudents();
case 3 -> deleteStudent();
case 4 -> updateStudent();
case 5 -> sortStudentsByScore();
case 6 -> {
System.out.println("退出系统,感谢使用!");
savaStudentsToFile(); // 保存数据
return;
}
default -> System.out.println("无效输入,请重新选择!");
}
}
}
public static void showMenu() {
System.out.println("\n====== 学生信息管理系统 ======");
System.out.println("1. 添加学生");
System.out.println("2. 查看所有学生");
System.out.println("3. 删除学生");
System.out.println("4. 修改学生信息");
System.out.println("5. 按成绩排序");
System.out.println("6. 退出");
System.out.print("请选择功能:");
}
public static void addStudent() {
System.out.print("输入学生姓名:");
String name = scanner.nextLine();
System.out.print("输入学生年龄:");
int age = scanner.nextInt();
System.out.print("输入学生成绩:");
int score = scanner.nextInt();
scanner.nextLine(); // 清除换行符
students.add(new Student(name, age, score));
System.out.println("✅ 添加成功!");
}
// 显示所有学生信息
public static void showStudents() {
if (students.isEmpty()) {
System.out.println("暂无学生信息。");
} else {
for (Student s : students) {
System.out.println(s);
}
}
}
// 删除学生信息
public static void deleteStudent() {
System.out.print("输入要删除的学生姓名:");
String name = scanner.nextLine();
boolean removed = students.removeIf(s -> s.getName().equals(name));
System.out.println(removed ? "✅ 删除成功!" : "未找到该学生。");
}
// 修改学生信息
public static void updateStudent() {
System.out.print("输入要修改的学生姓名:");
String name = scanner.nextLine();
for (Student s : students) {
if (s.getName().equals(name)) {
System.out.print("输入新的成绩:");
int newScore = scanner.nextInt();
scanner.nextLine(); // 清除换行符
s.setScore(newScore);
System.out.println("✅ 修改成功!");
return;
}
}
System.out.println("未找到该学生。");
}
// 按成绩排序
public static void sortStudentsByScore() {
students.sort(Comparator.comparingInt(Student::getScore).reversed());
System.out.println("✅ 排序完成!");
showStudents();
}
// 保存数据至students.dat
public static void savaStudentsToFile(){
try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("students.dat"))) {
oos.writeObject(students);
System.out.println("✅ 数据保存成功!");
} catch (IOException e) {
e.printStackTrace();
}
}
// 读取数据从students.dat
public static void loadStudentsFromFile(){
File file = new File("students.dat");
// 如果文件存在,则加载数据
if (file.exists()) {
try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(file))) {
students = (ArrayList<Student>) ois.readObject();
System.out.println("✅ 数据加载成功!");
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
}
}
}
评论区