Skip to content

项目 1:控制台版学生管理系统

项目概述

控制台版学生管理系统是一个基于 Java 控制台的简单应用,用于管理学生信息。它提供了添加学生、删除学生、修改学生信息、查询所有学生和退出系统等功能。

功能需求

  1. 添加学生:输入学生的学号、姓名、年龄和成绩,将学生信息添加到系统中
  2. 删除学生:根据学号删除指定的学生信息
  3. 修改学生信息:根据学号修改学生的姓名、年龄和成绩
  4. 查询所有学生:显示系统中所有学生的信息
  5. 退出系统:退出学生管理系统

技术实现

1. 学生类(Student)

首先,我们需要创建一个学生类,用于存储学生的信息。

java
public class Student {
    private String id;      // 学号
    private String name;    // 姓名
    private int age;        // 年龄
    private double score;   // 成绩
    
    // 构造方法
    public Student(String id, String name, int age, double score) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.score = score;
    }
    
    // getter 和 setter 方法
    public String getId() {
        return id;
    }
    
    public void setId(String id) {
        this.id = id;
    }
    
    public String getName() {
        return name;
    }
    
    public void setName(String name) {
        this.name = name;
    }
    
    public int getAge() {
        return age;
    }
    
    public void setAge(int age) {
        this.age = age;
    }
    
    public double getScore() {
        return score;
    }
    
    public void setScore(double score) {
        this.score = score;
    }
    
    // 重写 toString 方法,用于打印学生信息
    @Override
    public String toString() {
        return "学号: " + id + ", 姓名: " + name + ", 年龄: " + age + ", 成绩: " + score;
    }
}

2. 学生管理系统类(StudentManagementSystem)

接下来,我们创建学生管理系统类,实现具体的功能。

java
import java.util.ArrayList;
import java.util.Scanner;

public class StudentManagementSystem {
    private ArrayList<Student> students; // 存储学生信息的集合
    private Scanner scanner;            // 用于读取用户输入
    
    // 构造方法
    public StudentManagementSystem() {
        students = new ArrayList<>();
        scanner = new Scanner(System.in);
    }
    
    // 显示菜单
    public void showMenu() {
        System.out.println("===================================");
        System.out.println("        学生管理系统");
        System.out.println("===================================");
        System.out.println("1. 添加学生");
        System.out.println("2. 删除学生");
        System.out.println("3. 修改学生信息");
        System.out.println("4. 查询所有学生");
        System.out.println("5. 退出系统");
        System.out.println("===================================");
        System.out.print("请选择操作: ");
    }
    
    // 启动系统
    public void start() {
        boolean running = true;
        while (running) {
            showMenu();
            int choice = scanner.nextInt();
            scanner.nextLine(); // 消费换行符
            
            switch (choice) {
                case 1:
                    addStudent();
                    break;
                case 2:
                    deleteStudent();
                    break;
                case 3:
                    updateStudent();
                    break;
                case 4:
                    queryAllStudents();
                    break;
                case 5:
                    running = false;
                    System.out.println("系统已退出!");
                    break;
                default:
                    System.out.println("输入错误,请重新选择!");
                    break;
            }
        }
    }
    
    // 添加学生
    public void addStudent() {
        System.out.println("===================================");
        System.out.println("        添加学生");
        System.out.println("===================================");
        
        System.out.print("请输入学号: ");
        String id = scanner.nextLine();
        
        // 检查学号是否已存在
        for (Student student : students) {
            if (student.getId().equals(id)) {
                System.out.println("学号已存在,请重新输入!");
                return;
            }
        }
        
        System.out.print("请输入姓名: ");
        String name = scanner.nextLine();
        
        System.out.print("请输入年龄: ");
        int age = scanner.nextInt();
        scanner.nextLine(); // 消费换行符
        
        System.out.print("请输入成绩: ");
        double score = scanner.nextDouble();
        scanner.nextLine(); // 消费换行符
        
        // 创建学生对象并添加到集合
        Student student = new Student(id, name, age, score);
        students.add(student);
        
        System.out.println("添加成功!");
    }
    
    // 删除学生
    public void deleteStudent() {
        System.out.println("===================================");
        System.out.println("        删除学生");
        System.out.println("===================================");
        
        System.out.print("请输入要删除的学生学号: ");
        String id = scanner.nextLine();
        
        boolean found = false;
        for (int i = 0; i < students.size(); i++) {
            if (students.get(i).getId().equals(id)) {
                students.remove(i);
                found = true;
                break;
            }
        }
        
        if (found) {
            System.out.println("删除成功!");
        } else {
            System.out.println("未找到该学生!");
        }
    }
    
    // 修改学生信息
    public void updateStudent() {
        System.out.println("===================================");
        System.out.println("        修改学生信息");
        System.out.println("===================================");
        
        System.out.print("请输入要修改的学生学号: ");
        String id = scanner.nextLine();
        
        boolean found = false;
        for (Student student : students) {
            if (student.getId().equals(id)) {
                System.out.print("请输入新姓名: ");
                String name = scanner.nextLine();
                
                System.out.print("请输入新年龄: ");
                int age = scanner.nextInt();
                scanner.nextLine(); // 消费换行符
                
                System.out.print("请输入新成绩: ");
                double score = scanner.nextDouble();
                scanner.nextLine(); // 消费换行符
                
                // 修改学生信息
                student.setName(name);
                student.setAge(age);
                student.setScore(score);
                
                found = true;
                break;
            }
        }
        
        if (found) {
            System.out.println("修改成功!");
        } else {
            System.out.println("未找到该学生!");
        }
    }
    
    // 查询所有学生
    public void queryAllStudents() {
        System.out.println("===================================");
        System.out.println("        所有学生信息");
        System.out.println("===================================");
        
        if (students.isEmpty()) {
            System.out.println("暂无学生信息!");
        } else {
            for (Student student : students) {
                System.out.println(student);
            }
        }
    }
    
    // 主方法
    public static void main(String[] args) {
        StudentManagementSystem system = new StudentManagementSystem();
        system.start();
    }
}

代码解析

1. 学生类(Student)

  • 成员变量:学号、姓名、年龄和成绩
  • 构造方法:用于创建学生对象
  • getter 和 setter 方法:用于访问和修改成员变量
  • toString 方法:用于打印学生信息

2. 学生管理系统类(StudentManagementSystem)

  • 成员变量

    • students:存储学生信息的 ArrayList 集合
    • scanner:用于读取用户输入的 Scanner 对象
  • 方法

    • showMenu():显示系统菜单
    • start():启动系统,处理用户输入
    • addStudent():添加学生
    • deleteStudent():删除学生
    • updateStudent():修改学生信息
    • queryAllStudents():查询所有学生
    • main():主方法,创建系统对象并启动

运行示例

运行结果

===================================
        学生管理系统
===================================
1. 添加学生
2. 删除学生
3. 修改学生信息
4. 查询所有学生
5. 退出系统
===================================
请选择操作: 1
===================================
        添加学生
===================================
请输入学号: 1001
请输入姓名: 张三
请输入年龄: 18
请输入成绩: 95.5
添加成功!
===================================
        学生管理系统
===================================
1. 添加学生
2. 删除学生
3. 修改学生信息
4. 查询所有学生
5. 退出系统
===================================
请选择操作: 1
===================================
        添加学生
===================================
请输入学号: 1002
请输入姓名: 李四
请输入年龄: 19
请输入成绩: 88.0
添加成功!
===================================
        学生管理系统
===================================
1. 添加学生
2. 删除学生
3. 修改学生信息
4. 查询所有学生
5. 退出系统
===================================
请选择操作: 4
===================================
        所有学生信息
===================================
学号: 1001, 姓名: 张三, 年龄: 18, 成绩: 95.5
学号: 1002, 姓名: 李四, 年龄: 19, 成绩: 88.0
===================================
        学生管理系统
===================================
1. 添加学生
2. 删除学生
3. 修改学生信息
4. 查询所有学生
5. 退出系统
===================================
请选择操作: 3
===================================
        修改学生信息
===================================
请输入要修改的学生学号: 1001
请输入新姓名: 张三
请输入新年龄: 20
请输入新成绩: 98.0
修改成功!
===================================
        学生管理系统
===================================
1. 添加学生
2. 删除学生
3. 修改学生信息
4. 查询所有学生
5. 退出系统
===================================
请选择操作: 4
===================================
        所有学生信息
===================================
学号: 1001, 姓名: 张三, 年龄: 20, 成绩: 98.0
学号: 1002, 姓名: 李四, 年龄: 19, 成绩: 88.0
===================================
        学生管理系统
===================================
1. 添加学生
2. 删除学生
3. 修改学生信息
4. 查询所有学生
5. 退出系统
===================================
请选择操作: 2
===================================
        删除学生
===================================
请输入要删除的学生学号: 1002
删除成功!
===================================
        学生管理系统
===================================
1. 添加学生
2. 删除学生
3. 修改学生信息
4. 查询所有学生
5. 退出系统
===================================
请选择操作: 4
===================================
        所有学生信息
===================================
学号: 1001, 姓名: 张三, 年龄: 20, 成绩: 98.0
===================================
        学生管理系统
===================================
1. 添加学生
2. 删除学生
3. 修改学生信息
4. 查询所有学生
5. 退出系统
===================================
请选择操作: 5
系统已退出!

扩展功能

  1. 按学号查询学生:根据学号查询特定学生的信息
  2. 按姓名查询学生:根据姓名查询学生信息
  3. 按成绩排序:按学生成绩从高到低或从低到高排序
  4. 数据持久化:将学生信息保存到文件,下次启动时加载
  5. 输入验证:对用户输入进行验证,确保输入的有效性

总结

控制台版学生管理系统是一个简单但完整的 Java 应用,它演示了如何使用面向对象编程、集合框架和控制台输入输出等基本 Java 技术。通过这个项目,你可以学习:

  1. 类的设计:如何设计和实现一个学生类
  2. 集合的使用:如何使用 ArrayList 存储和管理学生信息
  3. 用户交互:如何使用 Scanner 读取用户输入
  4. 控制流程:如何使用循环和 switch 语句控制程序流程
  5. 异常处理:如何处理用户输入错误等异常情况

这个项目是一个很好的 Java 入门练习,它涵盖了 Java 基础编程的许多重要概念。

© 2026 编程马·菜鸟教程 版权所有