侧边栏壁纸
博主头像
一叶舟的秘密花园 博主等级

行动起来,活在当下

  • 累计撰写 37 篇文章
  • 累计创建 15 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

学生信息管理系统(Java 控制台)

Li
Li
2025-04-08 / 0 评论 / 0 点赞 / 17 阅读 / 0 字
温馨提示:
本文最后更新于2025-04-08,若内容或图片失效,请留言反馈。 八月长江万里晴,千帆一道带风轻

核心内容:

• 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();
            }

        }
    }
}

0

评论区