Java中的集合2——学生管理系统(1)

简介: 当录入的学号已经存在时,我们就要提示用户重新输入,直至不重复为止,这时候我们就需要重新定义一个方法来判断学号是否重复

一、前言


本文主要是实现登录学生管理系统后的功能一部分,包括实现学生类和主界面、添加学生、查看所有学生,其主界面如图


e70d5c7db744445eb8f0daa8acc806e3.png


二、学生类实现


在本管理系统中,需要录入的是学生的学号、姓名和性别,所以首先要定义三个成员变量


  • private String id
  • private String name
  • private String gender


然后生成一个标准的JavaBean类,快捷方法参考文章:IDEA2018 中有关编写JavaBean类的小技巧(保姆级教程)

生成后将最后两行删除,代码如下:


public class student {
        private String id;
        private String name;
        private String gender;
    public student() {
    }
    public student(String id, String name, String gender) {
        this.id = id;
        this.name = name;
        this.gender = gender;
    }
    /**
     * 获取
     * @return id
     */
    public String getId() {
        return id;
    }
    /**
     * 设置
     * @param id
     */
    public void setId(String id) {
        this.id = id;
    }
    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }
    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }
    /**
     * 获取
     * @return gender
     */
    public String getGender() {
        return gender;
    }
    /**
     * 设置
     * @param gender
     */
    public void setGender(String gender) {
        this.gender = gender;
    }
}


三、主界面实现


1.解题思路


由于这里要选择的选项很多,所以我们用 switch语句 来实现


1.创建一个集合,用来存放学生数据

2.打印输出 “-----欢迎来到学生管理系统-----”

3.打印输出“----------------------------” 和 “请选择需要执行的操作”

4.键盘输入一个数

5.运用switch语句来进行选择,并调用方法实现每个选择

6.调用无限循环语句使得每次执行操作完回到主界面


2.代码实现


public static void main(String[] args) {
        ArrayList<student> list = new ArrayList<>();
        Scanner in = new Scanner(System.in);
        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("----------------------------");
            System.out.println("请选择需要执行的操作");
            int i = in.nextInt();
            switch (i) {
                case 1:
                    System.out.println("添加学生");
                    addStudent(list);
                    break;
                case 2:
                    System.out.println("删除学生");
                    removeStudent(list);
                    break;
                case 3:
                    System.out.println("修改学生");
                    modifyStudent(list);
                    break;
                case 4:
                    System.out.println("查找学生");
                    searchStudent(list);
                    break;
                case 5:
                    System.out.println("查看学生");
                    lookStudent(list);
                    break;
                default:
                    System.out.println("输入有误,请重新输入");
                    break;
            }
        }


四、添加学生功能


1.解题思路


1.定义一个带参数的方法,需要添加学生时调用方法即可

2.参数为一个集合,用来存放数据

3.分别从键盘录入要添加学生的学号、姓名和性别

4.将键盘输入的信息添加到集合中

5.返回提示信息 “添加成功”


2.学号重复情况


当录入的学号已经存在时,我们就要提示用户重新输入,直至不重复为止,这时候我们就需要重新定义一个方法来判断学号是否重复


🟡思路


1.定义一个带参数的方法来判断输入的学号是否已经存在与集合内

2.参数为集合和输入的学号

3.定义一个 flag,使其值为 false,表示新增元素与集合中存在元素不相同

4.遍历集合,判断输入的学号是否与集合中的元素相同

5.如果相同,修改flag的值为 true 并退出循环

6.返回flag的值

7.定义一个boolean型的变量接收返回值

8.参数为增加学生方法内定义的集合名以及输入的学号

9.判断变量值;如果为true,则输出提升语句:“学号重复,请重新输入”,如果为false则退出循环

10.由于添加循环,所以学号的类型要在循环体外定义,不影响后续使用


🟡判断是否重复功能的代码


public static boolean isUsed(ArrayList<student> Array,String id){
  boolean flag = false;
    for (int i = 0; i < Array.size(); i++) {
      student s = Array.get(i);
        if(s.getId().equals(id)){
          flag = true;
            break;
        }
    }
        return flag;
}


🟡在实现添加学生功能内代码


while (true) {
  System.out.println("请输入学号");
    id = in.next();
    boolean flag = isUsed(Array, id);
    if (flag) {
      System.out.println("学号重复,请重新输入");
    }
    else {
        break;
    }


3.代码实现


 public static void addStudent(ArrayList<student> Array){
        student s = new student();
        Scanner in = new Scanner(System.in);
        String id;
        while (true) {
            System.out.println("请输入学号");
            id = in.next();
            boolean flag = isUsed(Array, id);
            if (flag) {
                System.out.println("学号重复,请重新输入");
            }
            else {
                break;
            }
        }
        System.out.println("请输入姓名");
        String name = in.next();
        System.out.println("请输入性别");
        String gender = in.next();
        s.setName(name);
        s.setId(id);
        s.setGender(gender);
        Array.add(s);
        System.out.println("添加成功");
    }
public static boolean isUsed(ArrayList<student> Array,String id){
  boolean flag = false;
    for (int i = 0; i < Array.size(); i++) {
      student s = Array.get(i);
        if(s.getId().equals(id)){
          flag = true;
            break;
        }
    }
        return flag;
}


五、查看所有学生功能


1.解题思路


1.运用判断语句来判断集合内是否有元素存在

2.当集合内为空时,返回提示语句:“无信息,请添加后再查询”

3.当集合内有元素时,遍历集合并输出集合内元素

4.为了整齐,使用制表符 \t 来缩进


2.代码实现


public static void lookStudent(ArrayList<student> Array){
        if(Array.size() == 0){
            System.out.println("无信息,请添加后再查询");
        }
        for (int i = 0; i < Array.size(); i++) {
            student s = Array.get(i);
            System.out.println("学号"+"\t"+"姓名"+"\t"+"性别"+"\t");
            System.out.println(s.getId()+"\t"+s.getName()+"\t"+s.getGender()+"\t");
        }
    }


六、结语


本文实现了一部分功能,下一篇文章中会实现剩余功能

相关文章
|
5天前
|
算法 Java 数据处理
从HashSet到TreeSet,Java集合框架中的Set接口及其实现类以其“不重复性”要求,彻底改变了处理唯一性数据的方式。
从HashSet到TreeSet,Java集合框架中的Set接口及其实现类以其“不重复性”要求,彻底改变了处理唯一性数据的方式。HashSet基于哈希表实现,提供高效的元素操作;TreeSet则通过红黑树实现元素的自然排序,适合需要有序访问的场景。本文通过示例代码详细介绍了两者的特性和应用场景。
25 6
|
5天前
|
存储 Java
深入探讨了Java集合框架中的HashSet和TreeSet,解析了两者在元素存储上的无序与有序特性。
【10月更文挑战第16天】本文深入探讨了Java集合框架中的HashSet和TreeSet,解析了两者在元素存储上的无序与有序特性。HashSet基于哈希表实现,添加元素时根据哈希值分布,遍历时顺序不可预测;而TreeSet利用红黑树结构,按自然顺序或自定义顺序存储元素,确保遍历时有序输出。文章还提供了示例代码,帮助读者更好地理解这两种集合类型的使用场景和内部机制。
20 3
|
5天前
|
存储 Java 数据处理
Java Set接口凭借其独特的“不重复”特性,在集合框架中占据重要地位
【10月更文挑战第16天】Java Set接口凭借其独特的“不重复”特性,在集合框架中占据重要地位。本文通过快速去重和高效查找两个案例,展示了Set如何简化数据处理流程,提升代码效率。使用HashSet可轻松实现数据去重,而contains方法则提供了快速查找的功能,彰显了Set在处理大量数据时的优势。
15 2
|
7天前
|
存储 算法 Java
Java Set因其“无重复”特性在集合框架中独树一帜
【10月更文挑战第14天】Java Set因其“无重复”特性在集合框架中独树一帜。本文深入解析Set接口及其主要实现类(如HashSet、TreeSet)如何通过特定的数据结构(哈希表、红黑树)确保元素唯一性,并提供最佳实践建议,包括选择合适的Set实现类和正确实现自定义对象的`hashCode()`与`equals()`方法。
19 3
|
2天前
|
安全 Java 程序员
深入Java集合框架:解密List的Fail-Fast与Fail-Safe机制
本文介绍了 Java 中 List 的遍历和删除操作,重点讨论了快速失败(fail-fast)和安全失败(fail-safe)机制。通过普通 for 循环、迭代器和 foreach 循环的对比,详细解释了各种方法的优缺点及适用场景,特别是在多线程环境下的表现。最后推荐了适合高并发场景的 fail-safe 容器,如 CopyOnWriteArrayList 和 ConcurrentHashMap。
24 5
|
3天前
|
安全 Java 程序员
Java集合之战:ArrayList vs LinkedList,谁才是你的最佳选择?
本文介绍了 Java 中常用的两个集合类 ArrayList 和 LinkedList,分析了它们的底层实现、特点及适用场景。ArrayList 基于数组,适合频繁查询;LinkedList 基于链表,适合频繁增删。文章还讨论了如何实现线程安全,推荐使用 CopyOnWriteArrayList 来提升性能。希望帮助读者选择合适的数据结构,写出更高效的代码。
20 3
|
2天前
|
XML JSON 监控
告别简陋:Java日志系统的最佳实践
【10月更文挑战第19天】 在Java开发中,`System.out.println()` 是最基本的输出方法,但它在实际项目中往往被认为是不专业和不足够的。本文将探讨为什么在现代Java应用中应该避免使用 `System.out.println()`,并介绍几种更先进的日志解决方案。
9 1
|
5天前
|
存储 Java 数据处理
Set 是 Java 集合框架中的一个接口,不包含重复元素且不保证元素顺序。
【10月更文挑战第16天】Java Set:无序之美,不重复之魅!Set 是 Java 集合框架中的一个接口,不包含重复元素且不保证元素顺序。通过 hashCode() 和 equals() 方法实现唯一性,适用于需要唯一性约束的数据处理。示例代码展示了如何使用 HashSet 添加和遍历元素,体现了 Set 的高效性和简洁性。
17 4
|
6天前
|
Java 关系型数据库 API
介绍一款Java开发的企业接口管理系统和开放平台
YesApi接口管理平台Java版,基于Spring Boot、Vue.js等技术,提供API接口的快速研发、管理、开放及收费等功能,支持多数据库、Docker部署,适用于企业级PaaS和SaaS平台的二次开发与搭建。
|
7天前
|
存储 Java 数据处理
Set 是 Java 集合框架中的一个接口,不包含重复元素且不保证元素顺序。
Java Set:无序之美,不重复之魅!Set 是 Java 集合框架中的一个接口,不包含重复元素且不保证元素顺序。它通过 hashCode() 和 equals() 方法确保元素唯一性,适用于需要唯一性约束的数据处理。示例代码展示了如何使用 HashSet 实现这一特性。
15 5