Java学生学籍管理系统开发实战:从设计到代码实现

一颗松果
一颗松果
发布时间:2026-10-16 | 4人浏览过
原创

本文详细讲解如何使用 Java 编写一个简单的控制台版学生学籍管理系统。通过定义包含学号、姓名等属性的 Student 实体类,结合 java.util.ArrayList 集合与 Scanner 键盘录入工具,逐步实现主菜单导航及学生信息的添加、查询、修改和删除功能。教程核心涵盖了集合数据的持久化操作及基础的业务逻辑判断。

一、学籍管理系统功能介绍

学籍管理系统旨在高效处理学生的信息变更与维护。作为教育管理的基础工具,它能够辅助管理者快速完成大量学生数据的维护工作。本案例实现了系统最核心的 CRUD(增删改查)功能,适合作为程序设计课程的参考练习。

1. 系统核心功能

用户进入系统后,可通过主界面菜单选择执行以下操作:

  • 添加新学生信息
  • 查看已录入的全部学生信息
  • 按条件查找或删除指定学生
  • 修改现有学生的档案数据
  • 安全退出系统

2. 系统功能逻辑图示

3. 代码编写整体思路

在动手编码前,需明确系统的构建步骤:
首先是定义承载数据的 Student 类;随后搭建带有循环与菜单选项的主程序入口;最后分模块逐一实现具体的增删改查方法,并确保各方法之间能够正确调用。

二、定义学生数据模型(Student类)

系统的数据载体由独立的类构成,所有学生的基本信息都通过这个类进行封装。

1. 成员变量设计

Student 类包含四个私有(private)字符串类型的成员变量:
num(学号)、name(姓名)、age(年龄)、address(地址)。

2. 构造方法与 getter/setter

为了规范对象访问,需要提供无参构造器用于实例化空对象,以及带四个参数的全参构造器用于一次性赋值。同时,必须为每个变量提供对应的 get 和 set 方法。

3. Student 类代码示例

public class Student {
    private String num; // 学生学号
    private String name; // 学生姓名
    private String age; // 学生年龄
    private String address; // 学生地址

    public Student() {}

    public Student(String num, String name, String age, String address) {
        this.num = num;
        this.name = name;
        this.age = age;
        this.address = address;
    }

    public String getNum() { return num; }
    public void setNum(String num) { this.num = num; }

    public String getName() { return name; }
    public void setName(String name) { this.name = name; }

    public String getAge() { return age; }
    public void setAge(String age) { this.age = age; }

    public String getAddress() { return address; }
    public void setAddress(String address) { this.address = address; }
}

三、主界面的搭建

主类(命名为 Studentdemo)负责程序的流转控制,利用无限循环保持系统运行状态。

1. 界面逻辑架构

  • 初始化 ArrayList<Student> 集合以存储学员数据。
  • 打印欢迎标语及功能列表。
  • 使用 Scanner 读取用户的指令编号。
  • 通过 switch-case 结构分发对应的业务处理。

2. 主程序入口代码示例

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

public class Studentdemo {
    public static void main(String[] args){
        ArrayList<Student> array = new ArrayList<>();
        
        while(true) {
            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("请选择你需要的操作:");

            Scanner sc = new Scanner(System.in);
            String line = sc.nextLine();

            switch (line) {
                case "1":
                    Addstudent(array); // 此处调用“添加学生方法”
                    break;
                case "2":
                    Deletestudent(array); // 此处调用“删除学生方法”
                    break;
                case "3":
                    Updatestudent(array); // 此处调用“修改学生方法”
                    break;
                case "4":
                    Findallstudent(array); // 此处调用“查找学生方法”
                    break;
                case "5":
                    System.out.println("谢谢使用!");
                    System.exit(0); // 终止虚拟机进程
            }
        }
    }
}

四、系统功能方法的实现

具体业务逻辑被拆分为独立的方法,方便主循环进行模块化调用。

1. 添加学生信息

操作说明

用户在输入框依次录入学号、姓名、年龄和地址。系统将数据封装为 Student 对象并追加到 array 集合中。

方法逻辑图示

核心代码实现

    public static void Addstudent(ArrayList<Student> array){
        Scanner sc = new Scanner(System.in);

        System.out.print("请输入学生学号:");
        String num = sc.nextLine();
        System.out.print("请输入学生姓名:");
        String name = sc.nextLine();
        System.out.print("请输入学生年龄:");
        String age = sc.nextLine();
        System.out.print("请输入学生地址:");
        String address = sc.nextLine();

        //创建学生对象,将键盘录入的数据赋值给学生对象的成员变量
        Student s = new Student();
        s.setNum(num);
        s.setName(name);
        s.setAge(age);
        s.setAddress(address);

        //将学生对象添加到集合中
        array.add(s);
        System.out.println("添加学生成功!");
    }

2. 查看全体学生信息

操作说明

遍历集合输出表头,并按特定格式展示每一个元素的属性。若集合为空则提示无记录。

方法逻辑图示

核心代码实现

    public static void Findallstudent(ArrayList<Student> array){
        if(array.size() == 0){
            System.out.println("无信息!");
            return;
        }
        // 显示表头信息
        System.out.println("学号\t\t姓名\t\t年龄\t\t地址");
        
        for(int i=0; i<array.size(); i++){
            Student s = array.get(i);
            System.out.println(s.getNum() + "\t\t" + s.getName() + "\t\t" + s.getAge() + "\t\t" + s.getAddress());
        }
    }

3. 删除指定学生信息

操作说明

首先接收待删除的学号,然后遍历集合寻找匹配项并记录索引。找到后使用 remove 移除元素,未找到则给出错误反馈。

方法逻辑图示

核心代码实现

    public static void Deletestudent(ArrayList<Student> array){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要删除学生的学号:");
        String num = sc.nextLine();
        
        int index = -1;
        for(int i=0; i<array.size(); i++){
            Student s = array.get(i);
            if(s.getNum().equals(num)){
                index = i;
                break;
            }
        }
        
        if(index == -1){
            System.out.println("学号有误,删除失败!");
        } else {
            array.remove(index);
            System.out.println("删除学生信息成功!");
        }
    }

4. 修改学生信息

操作说明

同样依据学号定位目标节点,获取该位置索引后,允许用户录入新的覆盖信息并写入集合对应位置。

方法逻辑图示

核心代码实现

    public static void Updatestudent(ArrayList<Student> array){
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入要修改的学生学号:");
        String num = sc.nextLine();
        
        // 键盘录入要修改的学生信息
        System.out.print("请输入修改后的学生姓名:");
        String name = sc.nextLine();
        System.out.print("请输入修改后的学生年龄:");
        String age = sc.nextLine();
        System.out.print("请输入修改后的学生地址:");
        String address = sc.nextLine();
        
        //创建学生对象接收新数据
        Student s = new Student();
        s.setNum(num);
        s.setName(name);
        s.setAge(age);
        s.setAddress(address);
        
        //遍历集合找到位置并更新
        for(int i=0; i<array.size(); i++){
            Student student = array.get(i);
            if(student.getNum().equals(num)){
                array.set(i, s);
                System.out.println("修改成功!");
                break;
            }
        }
    }

5. 进阶:处理学号重复问题

为保证数据的唯一性,在每次添加时都需要检查学号是否已被占用。

防重校验逻辑

引入一个布尔型方法 Isused,当检测到集合中已有相同的学号时返回 true,否则返回 false。配合 while 循环强制用户重新输入。

校验方法图示

改进后的代码实现

判定学号是否存活的工具方法:

    public static boolean Isused(ArrayList<Student> array, String num){
        boolean flag = false;
        for(int i=0; i<array.size(); i++){
            Student s = array.get(i);
            if(s.getNum().equals(num)){
                flag = true;
                break;
            }
        }
        return flag;
    }

整合校验机制后的添加方法:

    public static void Addstudent(ArrayList<Student> array){
        Scanner sc = new Scanner(System.in);
        String num;

        // 循环确保学号不冲突
        while(true){
            System.out.print("请输入学生学号:");
            num = sc.nextLine();

            boolean flag = Isused(array, num);
            if(flag){
                System.out.println("你输入的学号已经被使用,请重新输入:");
            } else {
                break;
            }
        }

        System.out.print("请输入学生姓名:");
        String name = sc.nextLine();
        System.out.print("请输入学生年龄:");
        String age = sc.nextLine();
        System.out.print("请输入学生地址:");
        String address = sc.nextLine();

        Student s = new Student();
        s.setNum(num);
        s.setName(name);
        s.setAge(age);
        s.setAddress(address);

        array.add(s);
        System.out.println("添加学生成功!");
    }

以上就是使用 Java 原生集合开发简易学籍管理系统的详细内容。本案例完整演示了如何通过面向对象思维解决数据存储与管理问题,更多关于 Java 集合框架应用的相关资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表