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

## 一、功能介绍

这是一个基于Java控制台的学生管理系统,适合Java初学者练手使用。系统使用ArrayList存储学生数据,实现了完整的增删改查功能。

### 主要功能:
– ✅ 添加学生信息(学号、姓名、年龄、性别、班级)
– ✅ 删除学生信息(按学号删除)
– ✅ 修改学生信息(支持部分修改,回车跳过不修改的项)
– ✅ 查询学生信息(按学号查询、按姓名模糊查询)
– ✅ 查看所有学生列表
– ✅ 输入验证(年龄必须是数字、学号不能重复)

技术特点:
– 纯Java代码,无需任何框架
– 使用ArrayList集合存储数据
– 控制台交互界面,操作简单
– 代码结构清晰,注释详细,适合学习

## 二、小白手把手教程

如果你是完全的编程小白,没关系,跟着下面的步骤一步步来,保证你能成功运行!

### 第一步:安装JDK(Java开发工具包)

JDK是运行Java程序必须的环境,就像你要玩游戏需要先安装游戏引擎一样。

1. 打开浏览器,搜索”JDK下载”,或者直接去Oracle官网下载
2. 选择适合你电脑系统的版本(Windows选Windows版,Mac选Mac版)
3. 下载后双击安装包,一直点”下一步”就可以安装完成
4. **重要提示**:记住你的安装路径,后面配置环境变量会用到

### 第二步:配置环境变量

配置环境变量是为了让电脑在任何地方都能找到Java命令,就像给电脑设置一个”快捷方式”。

**Windows系统配置方法:**
1. 右键点击”此电脑”,选择”属性”
2. 点击”高级系统设置”
3. 点击”环境变量”
4. 在”系统变量”里点击”新建”
– 变量名:`JAVA_HOME`
– 变量值:你的JDK安装路径(比如 `C:\Program Files\Java\jdk1.8.0_202`)
5. 找到”Path”变量,点击”编辑”
6. 点击”新建”,输入 `%JAVA_HOME%\bin`
7. 一路点击”确定”保存

### 第三步:验证Java环境

安装配置完成后,我们来验证一下是否成功:

1. 按 `Win + R` 键,输入 `cmd`,回车打开命令提示符
2. 输入 `java -version`,回车
3. 如果显示出Java版本信息,说明安装成功了!
4. 再输入 `javac -version`,回车
5. 如果也显示版本信息,说明编译器也没问题了

### 第四步:保存代码

1. 在电脑上新建一个文件夹,比如叫 `StudentSystem`
2. 在文件夹里新建两个文本文件
3. 第一个文件命名为 `Student.java`(注意后缀是.java,不是.txt)
4. 第二个文件命名为 `StudentManagementSystem.java`
5. 把下面的源码分别复制到对应的文件里保存

**重要提示**:文件名必须和类名完全一致,包括大小写!否则会编译失败。

### 第五步:编译运行

1. 打开命令提示符(cmd)
2. 用 `cd` 命令进入你的代码文件夹,比如:
“`
cd C:\StudentSystem
“`
3. 输入编译命令:
“`
javac Student.java StudentManagementSystem.java
“`
4. 如果没有报错,说明编译成功了!文件夹里会多出两个.class文件
5. 输入运行命令:
“`
java StudentManagementSystem
“`
6. 恭喜你!程序运行起来了!

### 第六步:操作演示

程序运行后,会显示主菜单,你可以输入数字选择功能:
– 输入 `1`:添加学生
– 输入 `2`:删除学生
– 输入 `3`:修改学生
– 输入 `4`:查询学生
– 输入 `5`:查看所有学生
– 输入 `0`:退出系统

跟着提示操作就可以了,非常简单!

python_crawler_screenshot2

screenshot1

## 三、运行效果展示

下面是程序运行的实际效果截图,大家可以参考一下:

(图片展示:主菜单界面、添加学生功能、查询学生功能等)

## 四、完整源码

下面是完整的Java代码,直接复制就能用,非常适合初学者学习和练手!

### 1. Student.java(学生实体类)

这个类用于存储学生的基本信息,包括学号、姓名、年龄、性别、班级等属性。

/**
 * 学生实体类
 * 用于存储学生的基本信息
 */
public class Student {
    // 学号
    private String id;
    // 姓名
    private String name;
    // 年龄
    private int age;
    // 性别
    private String gender;
    // 班级
    private String className;

    // 无参构造方法
    public Student() {
    }

    // 带参构造方法
    public Student(String id, String name, int age, String gender, String className) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.gender = gender;
        this.className = className;
    }

    // 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 String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public String getClassName() {
        return className;
    }

    public void setClassName(String className) {
        this.className = className;
    }

    // 重写toString方法,方便打印学生信息
    @Override
    public String toString() {
        return "学号:" + id + "\t姓名:" + name + "\t年龄:" + age + "\t性别:" + gender + "\t班级:" + className;
    }
}

### 2. StudentManagementSystem.java(主程序类)

这个类是程序的主入口,包含了所有的功能实现,包括添加、删除、修改、查询学生信息等。使用ArrayList存储学生数据,通过控制台与用户交互。

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

/**
 * Java学生管理系统(控制台版)
 * 功能:学生信息的增删改查
 * 使用ArrayList存储数据
 * 控制台交互界面
 */
public class StudentManagementSystem {
    // 使用ArrayList存储学生信息
    private static ArrayList<Student> studentList = new ArrayList<>();
    // 扫描仪对象,用于接收用户输入
    private static Scanner scanner = new Scanner(System.in);

    public static void main(String[] args) {
        // 程序主循环
        while (true) {
            // 显示主菜单
            showMenu();
            
            // 接收用户选择
            System.out.print("请输入您的选择(0-5):");
            String choice = scanner.nextLine();
            
            // 根据用户选择执行相应操作
            switch (choice) {
                case "1":
                    // 添加学生
                    addStudent();
                    break;
                case "2":
                    // 删除学生
                    deleteStudent();
                    break;
                case "3":
                    // 修改学生信息
                    updateStudent();
                    break;
                case "4":
                    // 查询学生信息
                    queryStudent();
                    break;
                case "5":
                    // 显示所有学生
                    showAllStudents();
                    break;
                case "0":
                    // 退出系统
                    System.out.println("========================================");
                    System.out.println("感谢使用学生管理系统,再见!");
                    System.out.println("========================================");
                    System.exit(0);
                default:
                    System.out.println("输入有误,请重新选择!");
                    System.out.println();
            }
        }
    }

    /**
     * 显示主菜单
     */
    private static 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("        0. 退出系统");
        System.out.println("========================================");
    }

    /**
     * 添加学生
     */
    private static void addStudent() {
        System.out.println("========== 添加学生信息 ==========");
        
        // 输入学号
        System.out.print("请输入学号:");
        String id = scanner.nextLine();
        
        // 检查学号是否已存在
        if (isIdExists(id)) {
            System.out.println("学号 " + id + " 已存在,添加失败!");
            System.out.println();
            return;
        }
        
        // 输入姓名
        System.out.print("请输入姓名:");
        String name = scanner.nextLine();
        
        // 输入年龄
        int age = 0;
        while (true) {
            System.out.print("请输入年龄:");
            try {
                age = Integer.parseInt(scanner.nextLine());
                if (age > 0 && age < 150) {
                    break;
                } else {
                    System.out.println("年龄输入不合法,请重新输入!");
                }
            } catch (NumberFormatException e) {
                System.out.println("请输入数字!");
            }
        }
        
        // 输入性别
        System.out.print("请输入性别:");
        String gender = scanner.nextLine();
        
        // 输入班级
        System.out.print("请输入班级:");
        String className = scanner.nextLine();
        
        // 创建学生对象并添加到集合
        Student student = new Student(id, name, age, gender, className);
        studentList.add(student);
        
        System.out.println("添加成功!");
        System.out.println();
    }

    /**
     * 删除学生
     */
    private static void deleteStudent() {
        System.out.println("========== 删除学生信息 ==========");
        
        if (studentList.isEmpty()) {
            System.out.println("暂无学生信息!");
            System.out.println();
            return;
        }
        
        System.out.print("请输入要删除的学生学号:");
        String id = scanner.nextLine();
        
        // 查找学生
        int index = findStudentIndexById(id);
        
        if (index == -1) {
            System.out.println("未找到学号为 " + id + " 的学生!");
            System.out.println();
            return;
        }
        
        // 显示要删除的学生信息
        System.out.println("找到以下学生信息:");
        System.out.println(studentList.get(index));
        
        System.out.print("确定要删除吗?(y/n):");
        String confirm = scanner.nextLine();
        
        if (confirm.equalsIgnoreCase("y")) {
            studentList.remove(index);
            System.out.println("删除成功!");
        } else {
            System.out.println("已取消删除操作。");
        }
        System.out.println();
    }

    /**
     * 修改学生信息
     */
    private static void updateStudent() {
        System.out.println("========== 修改学生信息 ==========");
        
        if (studentList.isEmpty()) {
            System.out.println("暂无学生信息!");
            System.out.println();
            return;
        }
        
        System.out.print("请输入要修改的学生学号:");
        String id = scanner.nextLine();
        
        // 查找学生
        int index = findStudentIndexById(id);
        
        if (index == -1) {
            System.out.println("未找到学号为 " + id + " 的学生!");
            System.out.println();
            return;
        }
        
        // 显示原学生信息
        Student student = studentList.get(index);
        System.out.println("原学生信息:");
        System.out.println(student);
        System.out.println("(直接回车表示不修改该项)");
        
        // 输入新姓名
        System.out.print("请输入新姓名:");
        String name = scanner.nextLine();
        if (!name.isEmpty()) {
            student.setName(name);
        }
        
        // 输入新年龄
        System.out.print("请输入新年龄:");
        String ageStr = scanner.nextLine();
        if (!ageStr.isEmpty()) {
            try {
                int age = Integer.parseInt(ageStr);
                if (age > 0 && age < 150) {
                    student.setAge(age);
                } else {
                    System.out.println("年龄输入不合法,跳过年龄修改。");
                }
            } catch (NumberFormatException e) {
                System.out.println("年龄输入不合法,跳过年龄修改。");
            }
        }
        
        // 输入新性别
        System.out.print("请输入新性别:");
        String gender = scanner.nextLine();
        if (!gender.isEmpty()) {
            student.setGender(gender);
        }
        
        // 输入新班级
        System.out.print("请输入新班级:");
        String className = scanner.nextLine();
        if (!className.isEmpty()) {
            student.setClassName(className);
        }
        
        System.out.println("修改成功!");
        System.out.println("修改后的信息:");
        System.out.println(student);
        System.out.println();
    }

    /**
     * 查询学生信息
     */
    private static void queryStudent() {
        System.out.println("========== 查询学生信息 ==========");
        
        if (studentList.isEmpty()) {
            System.out.println("暂无学生信息!");
            System.out.println();
            return;
        }
        
        System.out.println("请选择查询方式:");
        System.out.println("1. 按学号查询");
        System.out.println("2. 按姓名查询");
        System.out.print("请输入选择(1-2):");
        String choice = scanner.nextLine();
        
        switch (choice) {
            case "1":
                // 按学号查询
                System.out.print("请输入学号:");
                String id = scanner.nextLine();
                int index = findStudentIndexById(id);
                if (index == -1) {
                    System.out.println("未找到学号为 " + id + " 的学生!");
                } else {
                    System.out.println("查询结果:");
                    System.out.println(studentList.get(index));
                }
                break;
            case "2":
                // 按姓名查询
                System.out.print("请输入姓名:");
                String name = scanner.nextLine();
                ArrayList<Student> result = findStudentsByName(name);
                if (result.isEmpty()) {
                    System.out.println("未找到姓名为 " + name + " 的学生!");
                } else {
                    System.out.println("查询结果(共" + result.size() + "条):");
                    for (Student s : result) {
                        System.out.println(s);
                    }
                }
                break;
            default:
                System.out.println("输入有误!");
        }
        System.out.println();
    }

    /**
     * 显示所有学生
     */
    private static void showAllStudents() {
        System.out.println("========== 所有学生信息 ==========");
        
        if (studentList.isEmpty()) {
            System.out.println("暂无学生信息!");
            System.out.println();
            return;
        }
        
        System.out.println("共 " + studentList.size() + " 名学生:");
        System.out.println("----------------------------------------");
        for (int i = 0; i < studentList.size(); i++) {
            System.out.println((i + 1) + ". " + studentList.get(i));
        }
        System.out.println("----------------------------------------");
        System.out.println();
    }

    /**
     * 根据学号查找学生索引
     * @param id 学号
     * @return 学生在集合中的索引,找不到返回-1
     */
    private static int findStudentIndexById(String id) {
        for (int i = 0; i < studentList.size(); i++) {
            if (studentList.get(i).getId().equals(id)) {
                return i;
            }
        }
        return -1;
    }

    /**
     * 根据姓名查找学生
     * @param name 姓名
     * @return 匹配的学生列表
     */
    private static ArrayList<Student> findStudentsByName(String name) {
        ArrayList<Student> result = new ArrayList<>();
        for (Student s : studentList) {
            if (s.getName().contains(name)) {
                result.add(s);
            }
        }
        return result;
    }

    /**
     * 检查学号是否已存在
     * @param id 学号
     * @return 存在返回true,不存在返回false
     */
    private static boolean isIdExists(String id) {
        return findStudentIndexById(id) != -1;
    }
}

 

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容