java控制台实现学生信息管理系统(集合版)

下面就给大家详细讲解一下如何实现Java控制台学生信息管理系统。

系统需求

  • 学生的基本信息包括学号、姓名、性别和年龄;
  • 使用集合对学生信息进行管理;
  • 实现基本的增、删、改、查功能;
  • 可以按照学号或者姓名进行查找和排序;
  • 友好的用户交互界面。

实现步骤

步骤一:创建学生类

public class Student {
    private int id;
    private String name;
    private String sex;
    private int age;

    // 省略get和set方法
}

步骤二:创建控制台界面

public class ConsoleUI {
    private Scanner scanner;
    private List<Student> studentList;

    /**
     * 构造方法,用于初始化学生列表和Scanner对象
     */
    public ConsoleUI() {
        scanner = new Scanner(System.in);
        studentList = new ArrayList<>();
    }

    /**
     * 显示学生信息管理界面
     */
    public void show() {
        while (true) {
            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("6.按姓名排序");
            System.out.println("0.退出系统");
            System.out.println("======================");
            System.out.print("请选择操作: ");

            int choice = scanner.nextInt();

            switch (choice) {
                case 1:
                    addStudent();
                    break;
                case 2:
                    deleteStudent();
                    break;
                case 3:
                    modifyStudent();
                    break;
                case 4:
                    queryStudent();
                    break;
                case 5:
                    sortById();
                    break;
                case 6:
                    sortByName();
                    break;
                case 0:
                    System.exit(0);
                    break;
                default:
                    System.out.println("请输入正确的选项!");
                    break;
            }
        }
    }

    /**
     * 添加学生方法
     */
    private void addStudent() {
        System.out.println("请输入学生信息");

        System.out.print("学号: ");
        int id = scanner.nextInt();

        System.out.print("姓名: ");
        String name = scanner.next();

        System.out.print("性别: ");
        String sex = scanner.next();

        System.out.print("年龄: ");
        int age = scanner.nextInt();

        Student student = new Student();
        student.setId(id);
        student.setName(name);
        student.setSex(sex);
        student.setAge(age);

        studentList.add(student);

        System.out.println("添加成功!");
    }

    /**
     * 删除学生方法
     */
    private void deleteStudent() {
        System.out.print("请输入要删除学生的学号: ");
        int id = scanner.nextInt();

        boolean flag = false;
        for (Student student : studentList) {
            if (student.getId() == id) {
                studentList.remove(student);
                flag = true;
                break;
            }
        }

        if (flag) {
            System.out.println("删除成功!");
        } else {
            System.out.println("未找到该学生,删除失败!");
        }
    }

    /**
     * 修改学生方法
     */
    private void modifyStudent() {
        System.out.print("请输入要修改学生的学号: ");
        int id = scanner.nextInt();

        boolean flag = false;
        for (Student student : studentList) {
            if (student.getId() == id) {
                System.out.println("请输入修改后的学生信息");

                System.out.print("姓名: ");
                String name = scanner.next();

                System.out.print("性别: ");
                String sex = scanner.next();

                System.out.print("年龄: ");
                int age = scanner.nextInt();

                student.setName(name);
                student.setSex(sex);
                student.setAge(age);

                flag = true;
                break;
            }
        }

        if (flag) {
            System.out.println("修改成功!");
        } else {
            System.out.println("未找到该学生,修改失败!");
        }
    }

    /**
     * 查询学生方法
     */
    private void queryStudent() {
        System.out.print("请输入要查询学生的学号或姓名: ");
        String keyword = scanner.next();

        List<Student> resultList = new ArrayList<>();
        for (Student student : studentList) {
            if (student.getName().contains(keyword) || String.valueOf(student.getId()).contains(keyword)) {
                resultList.add(student);
            }
        }

        if (resultList.size() > 0) {
            System.out.println("查询结果:");
            for (Student student : resultList) {
                System.out.println(student);
            }
        } else {
            System.out.println("未找到相关学生信息!");
        }
    }

    /**
     * 按学号排序方法
     */
    private void sortById() {
        Collections.sort(studentList, new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
                return o1.getId() - o2.getId();
            }
        });
        System.out.println("已按学号排序!");
    }

    /**
     * 按姓名排序方法
     */
    private void sortByName() {
        Collections.sort(studentList, new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
                return o1.getName().compareTo(o2.getName());
            }
        });
        System.out.println("已按姓名排序!");
    }
}

步骤三:实现运行入口

public class Main {
    public static void main(String[] args) {
        ConsoleUI consoleUI = new ConsoleUI();
        consoleUI.show();
    }
}

示例说明

假设我们需要添加三个学生信息:张三、李四、王五

======================
学生信息管理系统
1.添加学生信息
2.删除学生信息
3.修改学生信息
4.查询学生信息
5.按学号排序
6.按姓名排序
0.退出系统
======================
请选择操作: 1
请输入学生信息
学号: 001
姓名: 张三
性别: 男
年龄: 20
添加成功!
======================
学生信息管理系统
1.添加学生信息
2.删除学生信息
3.修改学生信息
4.查询学生信息
5.按学号排序
6.按姓名排序
0.退出系统
======================
请选择操作: 1
请输入学生信息
学号: 002
姓名: 李四
性别: 女
年龄: 21
添加成功!
======================
学生信息管理系统
1.添加学生信息
2.删除学生信息
3.修改学生信息
4.查询学生信息
5.按学号排序
6.按姓名排序
0.退出系统
======================
请选择操作: 1
请输入学生信息
学号: 003
姓名: 王五
性别: 男
年龄: 22
添加成功!

然后我们可以按照学号排序,查看排序结果:

======================
学生信息管理系统
1.添加学生信息
2.删除学生信息
3.修改学生信息
4.查询学生信息
5.按学号排序
6.按姓名排序
0.退出系统
======================
请选择操作: 5
已按学号排序!

这时运行结果如下:

======================
学生信息管理系统
1.添加学生信息
2.删除学生信息
3.修改学生信息
4.查询学生信息
5.按学号排序
6.按姓名排序
0.退出系统
======================
请选择操作: 4
请输入要查询学生的学号或姓名: 
3
查询结果:
Student{id=3, name='王五', sex='男', age=22}
======================
学生信息管理系统
1.添加学生信息
2.删除学生信息
3.修改学生信息
4.查询学生信息
5.按学号排序
6.按姓名排序
0.退出系统
======================
请选择操作: 4
请输入要查询学生的学号或姓名: 
李
查询结果:
Student{id=2, name='李四', sex='女', age=21}
======================
学生信息管理系统
1.添加学生信息
2.删除学生信息
3.修改学生信息
4.查询学生信息
5.按学号排序
6.按姓名排序
0.退出系统
======================
请选择操作: 0

通过以上示例,我们可以看出控制台学生信息管理系统的基本使用和操作方式。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java控制台实现学生信息管理系统(集合版) - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • 解析Java的迭代器中的fast-fail错误检测机制

    Java中的迭代器(Iterator)是一种常用的数据访问方式,但是如果多个线程同时操作同一个集合,就会有可能引发ConcurrentModificationException异常,这时就涉及到了Java迭代器中的fast-fail错误检测机制。 应对fast-fail机制,我们需要深入理解fast-fail原理与应用,掌握迭代器的迭代状态与删除操作,以及合…

    Java 2023年5月25日
    00
  • Spring Boot 快速集成 Redis的方法

    下面是详细讲解“Spring Boot 快速集成 Redis的方法”的完整攻略。 简介 Redis是目前比较流行的高性能缓存和NoSQL数据库,通过使用它可以提高项目的性能和并发能力。而Spring Boot是目前比较流行的Web框架之一,提供了快速开发、易扩展、自动化配置等特性。下面我们将使用Spring Boot来快速集成Redis。 步骤 第一步:添加…

    Java 2023年5月19日
    00
  • SiteMesh如何结合Freemarker及velocity使用

    SiteMesh是一个开源的Java Web页面布局和装饰框架,它可以帮助我们将一个页面的布局和内容分离开来,以便我们可以轻松更改网页的样式和结构。同时,SiteMesh可以与多个模板引擎一起使用,Freemarker和Velocity是SiteMesh集成中广泛使用的两种模板引擎。 下面我们将介绍SiteMesh如何结合Freemarker及velocit…

    Java 2023年6月16日
    00
  • Java Apache Commons报错“ArrayIndexOutOfBoundsException”的原因与解决方法

    当使用Java的Apache Commons类库时,可能会遇到“ArrayIndexOutOfBoundsException”错误。这个错误通常由以下原因之一起: 数组下标越界:如果数组下标越界,则可能会出现此错误。在这种情况下,需要检查数组下标以解决此问题。 数组为空:如果数组为空,则可能会出现此错误。在这种情况下,需要检查数组是否为空以解决此问题。 以下…

    Java 2023年5月5日
    00
  • SpringBoot之返回json数据的实现方法

    在Spring Boot应用程序中,我们可以使用@RestController注解来返回JSON数据。以下是详解Spring Boot返回JSON数据的实现方法的完整攻略: 添加依赖 在Spring Boot应用程序中,我们需要添加以下依赖来支持返回JSON数据: <dependency> <groupId>org.springfra…

    Java 2023年5月15日
    00
  • Java中的base64编码器

    下面是关于Java中的base64编码器的完整攻略。 简介 Base64编码是一种将二进制数据用文本形式表示的编码方式,常用于在传输过程中处理二进制数据或将二进制数据存储在文本文件中。在Java中,提供了Base64编码器和解码器,可以通过Java API方便地实现Base64编解码的功能。 使用Base64编码器 Java中提供了两种方式来实现Base64…

    Java 2023年5月20日
    00
  • Spring操作JdbcTemplate数据库的方法学习

    Spring操作JdbcTemplate数据库的方法学习 什么是JdbcTemplate? JdbcTemplate是Spring框架中的一个类,它对JDBC(Java Database Connectivity) API进行了封装,使得我们在操作数据库时可以更加简单和高效。它这么做的目的是为了提高开发效率和灵活性。 JdbcTemplate提供了许多简便的…

    Java 2023年5月20日
    00
  • 基于SpringMVC的全局异常处理器介绍

    【基于SpringMVC的全局异常处理器介绍】完整攻略 前言 在开发 Web 应用程序时,异常是不可避免的问题。当 Web 应用程序运行时发生异常时,SpringMVC 提供了一种集中处理异常的方式 — 全局异常处理器。本文将详细介绍基于 SpringMVC 的全局异常处理器的使用方法以及示例。 步骤1:新建全局异常处理类 我们需要使用一个能够捕获应用程序…

    Java 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部