用Java代码实现学生管理系统[通俗易懂]

用Java代码实现学生管理系统[通俗易懂]学生管理系统1.1项目演示1.2学生管理系统实现思路定义学生类主界面的代码编写添加学生的代码编写查看学生的代码编写删除学生的的代码编写修改学生的代码编写1.3定义学生类学生类:Student成员变量:学号:sid姓名:name年龄:age居住地:address构造方法:无参构造带四个参数的构造成员方法:每个成员变量对应给出get/set方法1.4主界面的代码编写思路用输出语句完成主界面的编写用Scanner实现键盘录

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

学生管理系统

1.1 项目演示

在这里插入图片描述

1.2 学生管理系统实现思路

  1. 定义学生类
  2. 主界面的代码编写
  3. 添加学生的代码编写
  4. 查看学生的代码编写
  5. 删除学生的的代码编写
  6. 修改学生的代码编写

1.3 定义学生类

学生类:

  • Student

成员变量:

  • 学号:sid
  • 姓名:name
  • 年龄:age
  • 居住地:address

构造方法:

  • 无参构造
  • 带四个参数的构造

成员方法

  • 每个成员变量对应给出get/set方法

1.4 主界面的代码编写

思路

  1. 用输出语句完成主界面的编写
  2. 用Scanner实现键盘录入数据
  3. 用switch语句完成操作的选择
  4. 用循环完成再次回到主界面

1.5 添加学生的代码编写

思路

  1. 用键盘录入选择添加学生

  2. 定义一个方法,用于添加学生

    1. 显示提示信息,提示要输入何种信息
    2. 键盘录入学生对象所需要的的数据
    3. 创建学生对象,把键盘录入的数据赋值给学生对象的成员变量
    4. 将学生对象添加到集合中(保存)
    5. 调用方法

    在这里插入图片描述

1.6 查看学生代码的编写

思路

  1. 用键盘录入选择查看所有学生信息
  2. 定义一个方法,用于查看学生信息
    1. 显示表头信息
    2. 将集合中数据取出按照对应格式显示学生信息,年龄显示补充”岁“
  3. 调用方法

在这里插入图片描述

1.7 查看学生代码的编写升级版

思考: 假如并没有先添加学生,而是一进来就直接查看学生信息,这时候集合中是没有数据的,控制台就不可能有学生数据信息,表头的信息也不应该显示。

思路

  1. 用键盘录入选择查看所有学生信息
  2. 定义一个方法,用于查看学生信息
    1. 判断集合中是否有数据,如果没有显示提示信息
    2. 显示表头信息
    3. 将集合中数据取出按照对应格式显示学生信息,年龄显示补充”岁“
  3. 调用方法

在这里插入图片描述

1.8 删除学生的代码编写

思路

  1. 用键盘录入选择删除学生信息
  2. 定义一个方法,用于删除学生信息
    1. 显示提示信息
    2. 键盘录入要删除的学生学号
    3. 遍历集合将对应学生对象从集合中删除
    4. 给出删除成功提示
  3. 调用方法

在这里插入图片描述

1.9 修改学生的代码编写

思路

  1. 用键盘录入选择修改学生信息
  2. 定义一个方法,用于修改学生信息
    1. 显示提示信息
    2. 键盘录入要修改的学生学号
    3. 键盘录入要修改的学生信息
    4. 遍历集合修改对应的学生信息
    5. 给出修改成功提示
  3. 调用方法

在这里插入图片描述

1.10 解决删除/修改学生学号不存在问题

思路

  1. 在删除/修改学生操作前,对学号是否存在进行判断
    1. 如果不存在,显示提示信息
    2. 如果存在,执行删除/修改操作

在这里插入图片描述

1.11 解决添加学生学号重复问题

思路

  1. 定义一个方法,对学号是否被使用进行判断
    • 如果与集合中的某一个学生学号相同,返回true
    • 如果都不相同,返回false
  2. 在添加学生录入学号后调用该方法
    1. 如果返回true,弹出提示,重新输入学号
    2. 如果返回false,正常添加学生对象

在这里插入图片描述

1.12 新增根据学生学号查询学生信息模块以及输入错误指令后重新输入的代码(详情请看1.13完整代码)

在这里插入图片描述

1.13 完整代码

  1. Student(学生类)
public class Student { 
   

    private String sid;
    //学号
    private String name;
    //姓名
    private String age;
    //年龄
    private String address;
    //居住地


    public Student() { 
   
    }

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

    public String getSid() { 
   
        return sid;
    }

    public void setSid(String sid) { 
   
        this.sid = sid;
    }

    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;
    }
}
  1. StudentManager(学生管理系统类)
public class StudentManager { 
   
    /* * 1. 用输出语句完成主界面的编写 * 2. 用Scanner实现键盘录入数据 * 3. 用switch语句完成操作的选择 * 4. 用循环完成再次回到主界面 */
    public static void main(String[] args) { 
   
        // 创建集合对象,用于存储学生数据
        ArrayList<Student> array = new ArrayList<Student>();

        // 用循环完成再次回到主界面
        while (true) { 
   
            // 1. 用输出语句完成主界面的编写
            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("-------------------------------------");

            // 2. 用Scanner实现键盘录入数据
            Scanner scanner = new Scanner(System.in);
            String line = scanner.nextLine();
            // 3. 用switch语句完成操作的选择
            switch (line) { 
   
                case "1":
                    // System.out.println("添加学生");
                    addStudent(array);
                    break;
                case "2":
                    // System.out.println("删除学生");
                    deleteStudent(array);
                    break;
                case "3":
                    // System.out.println("修改学生");
                    updataStudent(array);
                    break;
                case "4":
                    // System.out.println("根据学号查看学生信息");
                    findStudentBySid(array);
                    break;
                case "5":
                    // System.out.println("查看所有学生");
                    findAllStudent(array);
                    break;
                case "6":
                    System.out.println("谢谢使用!");
                    System.exit(0);
                    break;
                default:
                    // 输入命令有误时,返回开端重新输入
                    System.out.println("输入命令有误,请重新输入!");
            }
        }
    }

    // 定义一个方法,用于添加学生信息
    public static void addStudent(ArrayList<Student> array) { 
   
        // 用键盘录入选择添加学生,显示提示信息,提示要输入何种信息
        Scanner sc = new Scanner(System.in);

        // 为了让sid在while循环外面能被访问到,我们就把它定义在了循环外
        String sid;

        // 为了让程序能够回到这里,我们使用循环使用
        while (true) { 
   
            System.out.println("请输入学生学号:");
            sid = sc.nextLine();

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

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

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

        // 将学生对象添加到集合中(保存)
        array.add(s);

        // 给出添加成功提示
        System.out.println("添加学生成功");
    }

    // 定义一个方法,判断学号是否被占用
    public static boolean isUsed(ArrayList<Student> array, String sid) { 
   
        // 如果与集合中的某一个学生学号相同,返回true 如果都不相同,返回false
        boolean flag = false;
        for (int i = 0; i < array.size(); i++) { 
   
            Student s = array.get(i);
            if (s.getSid().equals(sid)) { 
   
                flag = true;
                break;
            }
        }
        return flag;
    }

    // 定义一个方法,用于根据学生学号查看学生信息
    public static void findStudentBySid(ArrayList<Student> array) { 
   
        // 用键盘录入选择添加学生,显示提示信息,提示要输入何种信息
        Scanner sc = new Scanner(System.in);

        // 输入学生学号
        System.out.println("请输入学生学号:");
        String sid = sc.nextLine();

        // 在根据学生学号查询前,对学号是否存在进行判断
        // 如果不存在,显示提示信息
        // 如果存在,打印表头和学生信息
        int index = -1;
        Student s = null;

        // 遍历集合将对应学生对象从集合中拿出
        for (int i = 0; i < array.size(); i++) { 
   
            s = array.get(i);
            if (s.getSid().equals(sid)) { 
   
                index = i;
                break;
            }
        }
        if (index == -1) { 
   
            System.out.println("该学号不存在,请重新输入");
        } else { 
   
            System.out.println("学号\t\t\t姓名\t\t年龄\t\t居住地");

            // 将集合中数据取出按照对应格式显示学生信息,年龄显示补充”岁“
            System.out.println(s.getSid() + "\t\t" + s.getName() + "\t\t" + s.getAge() + "岁\t\t" + s.getAddress());
        }
    }

    // 定义一个方法,用于查看学生信息
    public static void findAllStudent(ArrayList<Student> array) { 
   
        // 显示表头信息
        // '\t' 其实就是tab键的位置
        if (array.size() == 0) { 
   
            System.out.println("无信息,请先添加信息再查询");
            // 为了不让程序继续往下执行
            return;
        }
        System.out.println("学号\t\t\t姓名\t\t年龄\t\t居住地");

        // 将集合中数据取出按照对应格式显示学生信息,年龄显示补充”岁“
        for (int i = 0; i < array.size(); i++) { 
   
            Student s = array.get(i);
            System.out.println(s.getSid() + "\t\t" + s.getName() + "\t\t" + s.getAge() + "岁\t\t" + s.getAddress());
        }
    }

    // 定义一个方法,用于删除学生信息
    public static void deleteStudent(ArrayList<Student> array) { 
   
        // 键盘录入要删除的学生学号,显示提示信息
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要删除的学生的学号");
        String sid = sc.nextLine();

        // 在删除/修改学生操作前,对学号是否存在进行判断
        // 如果不存在,显示提示信息
        // 如果存在,执行删除/修改操作
        int index = -1;

        // 遍历集合将对应学生对象从集合中删除
        for (int i = 0; i < array.size(); i++) { 
   
            Student s = array.get(i);
            if (s.getSid().equals(sid)) { 
   
                index = i;
                break;
            }
        }

        if (index == -1) { 
   
            System.out.println("该学号不存在,请重新输入");
        } else { 
   
            array.remove(index);
            System.out.println("删除学生成功");
        }
    }

    // 定义一个方法,用于修改学生信息
    public static void updataStudent(ArrayList<Student> array) { 
   
        // 键盘录入要修改的学生学号,显示提示信息
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要修改的学生的学号");
        String sid = sc.nextLine();

        // 在删除/修改学生操作前,对学号是否存在进行判断
        // 如果不存在,显示提示信息
        // 如果存在,执行删除/修改操作
        int index = -1;

        // 遍历集合修改对应的学生信息
        for (int i = 0; i < array.size(); i++) { 
   
            Student s = array.get(i);
            if (s.getSid().equals(sid)) { 
   
                index = i;
                break;
            }
        }

        if (index == -1) { 
   
            System.out.println("该学号不存在,请重新输入");
        } else { 
   
            for (int j = 0; j < array.size(); j++) { 
   
                Student student = array.get(j);
                if (student.getSid().equals(sid)) { 
   
                    // 键盘录入要修改的学生信息
                    System.out.println("请输入学生的新姓名");
                    String name = sc.nextLine();
                    System.out.println("请输入学生的新年龄");
                    String age = sc.nextLine();
                    System.out.println("请输入学生的新居住地");
                    String address = sc.nextLine();

                    // 创建学生对象
                    Student s = new Student();
                    s.setSid(sid);
                    s.setName(name);
                    s.setAge(age);
                    s.setAddress(address);
                    array.set(j, s);

                    // 给出修改成功提示
                    System.out.println("修改学生成功");
                    break;
                }
            }
        }
    }
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/191310.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • fvwm 4_FV7144TFATG

    fvwm 4_FV7144TFATG31.2.MiscellaneousCommands31.2.1.BugOptsBugOpts[option[bool]],…Thiscommandcontrolsseveralworkaroundsforbugsinthirdpartyprograms.Theindividualoptionsareseparated

    2022年10月3日
    3
  • 像素,分辨率,PPI(像素密度),BPP 扫盲

    像素,分辨率,PPI(像素密度),BPP 扫盲像素于分辨率像素,又称画素,为图像显示的基本单位,译自英文“pixel”,pix是英语单词picture的常用简写,加上英语单词“元素”element,就得到pixel,故“像素”表示“图像元素”之意,有时亦被称为pel(picture element)。每个这样的信息元素不是一个点或者一个方块,而是一个抽象的采样。仔细处理的话,一幅图像中的像素可以在任何尺度上看起来都不像分离的点或者方块;但…

    2022年5月11日
    45
  • HandlerThread原理分析、实战、最佳实践!

    HandlerThread原理分析、实战、最佳实践!本文我们将学习HandlerThread的实现原理,以及开发时,如何正确的使用它来实现我们的开发任务。HandlerThread源码分析设想这样一个场景:我们要在一个线程A中处理业务逻辑,在另一个线程B中,监听A的执行,并进行结果处理。这时我们使用HandlerThread就可以非常简单的实现该功能了。通常我们的线程交互场景,都是UI线程中启动子线程,并且由子线程完成工作任务,最终结果交给UI线程。现在我们的使用场景是,在子线程中监控其他线程的执行结果(这里的其他线程可以是另一个子线程,也可以是UI

    2025年7月15日
    6
  • 2022pycharm激活码【最新永久激活】

    (2022pycharm激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月31日
    327
  • java volatile可见性解析

    java volatile可见性解析很长一段时间中对于volatile关键字都是一知半解的,由于工作中用的比较少,也没有对其深入了解,直到看了《深入理解java虚拟机》之后,才有进一步的了解。   volatile是java虚拟机提供的最轻量级的同步机制,只能作用于变来那个,具备两种特性:保证此变量对所有线程的可见性:可见性是指一旦一个线程修改了此变量的值,其他线程能立即得知。禁止指令的重排序(本文暂不涉及)由于vol

    2022年7月18日
    17
  • 最全的sublime插件整理

    最全的sublime插件整理PackageControl1.插件管理器1)在Sublime中打开View–>ShowConsole,将以下代码复制到输入框中后按回车键 importurllib.request,os;pf=’PackageControl.sublime-package’;ipp=sublime.installed_packages_path();urllib.request.i

    2022年6月24日
    67

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号