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日

相关文章

  • 详解SpringBoot中的统一功能处理的实现

    我会从以下几个方面讲解“详解SpringBoot中的统一功能处理的实现”: 1.什么是SpringBoot中的统一功能处理2.实现统一功能处理的方式3.示例1:统一异常处理4.示例2:统一日志处理 1.什么是SpringBoot中的统一功能处理 在SpringBoot应用中,我们常常需要实现一些特定的功能,如统一异常处理、统一日志处理等。为了避免在每个Con…

    Java 2023年5月15日
    00
  • Spring框架中 @Autowired 和 @Resource 注解的区别

    在Spring框架中,@Autowired和@Resource注解都是用于进行依赖注入的。两者都可以自动装配bean,但它们之间还是存在一些区别。 1. @Autowired注解 1.1 功能 @Autowired是Spring自带的依赖注入注解。它实现了自动装配,Spring会根据类型自动注入到字段、构造方法或者是setter方法上来完成属性的注入。 1.…

    Java 2023年6月15日
    00
  • Hibernate的Session_flush与隔离级别代码详解

    Hibernate的Session_flush与隔离级别代码详解 Session_flush Session_flush是Hibernate的Session接口中的一个方法。它将缓存中所有的托管实体对象同步到数据库中,即将所有还未被同步到数据库中的操作都提交执行。 Session_flush方法有两种调用方式,分别是: session.flush():这种方…

    Java 2023年5月19日
    00
  • 浅谈Java当作数组的几个应用场景

    浅谈Java当作数组的几个应用场景 Java 数组是一个容器,可以存储一定数量的数据,Java 数组可以包含基本类型(int、short、long、byte、float、double、boolean、char)和引用类型(类、接口、数组)。 Java 数组可以作为各种数据结构的基础,介绍几个 Java 数组的应用场景。 1. 用 Java 数组模拟队列 队列…

    Java 2023年5月26日
    00
  • java 通过cmd 调用命令启动tomcat的操作

    启动Tomcat服务器一般有两种方式: 通过启动脚本启动Tomcat服务器 通过命令行启动Tomcat服务器 下面我将详细介绍如何通过Java代码通过命令行启动Tomcat服务器,以及实现该操作所需要的各种准备工作。 准备工作 在进行下面的步骤之前,需要确保机器上已经安装Java,并且已经配置好了环境变量。此外,也需要下载和安装Tomcat服务器,确保Tom…

    Java 2023年5月19日
    00
  • Jmeter BeanShell 内置变量vars、props、prev的使用详解

    下面是“Jmeter BeanShell 内置变量vars、props、prev的使用详解”的完整攻略。 1. 什么是BeanShell内置变量 在Jmeter中,BeanShell是一种脚本语言。当我们需要在Jmeter中编写脚本时,可以使用BeanShell语言。Jmeter中已经内置了许多BeanShell变量,这些变量中包含了大量的信息,可以帮助我们…

    Java 2023年6月15日
    00
  • sql文件怎么打开,SQL格式是什么文件?

    SQL(Structured Query Language)是一种专为管理关系数据库管理系统(RDBMS)而创建的语言。SQL文件是SQL语句的文本文件,由SQL语句组成,通常保存为.sql文件扩展名。 要打开SQL文件,可以使用文本编辑器,也可以使用专门的数据库管理软件(如MySQL Workbench、Navicat等)。在文本编辑器中打开SQL文件,可…

    Java 2023年6月16日
    00
  • java中mybatis和hibernate的用法总结

    Java中MyBatis和Hibernate的用法总结 1. MyBatis的用法示例 1.1. 配置MyBatis数据源 在MyBatis中使用数据源需要在项目的配置文件mybatis-config.xml中进行配置。下面以配置MySQL连接为例进行说明。 <!– 配置数据源 –> <dataSource type="POO…

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