题目需求:

学生类:

属性 :id、姓名、年龄、家庭住址

添加功能

键盘录入每一个学生信息并添加,需要满足以下要求:

*id唯一

删除功能

键盘录入要删除的学生id,需要满足以下要求:

*id存在才能删除

*id不存在,需要提示不存在,并回到初始菜单

修改功能

键盘录入要修改的学生id,需要满足以下要求:

*id存在,继续录入需要修改的信息

*id不存在,需要提示不存在,并回到初始菜单

查询功能

打印所有学生信息,需要满足以下要求:

*如果没有学生信息,提示:当前无学生信息,请添加后再查询

学生类

package com.iweb.list.test1.StudentSystem;

/**
 * @author Caesar
 * @date 2022 11 2022/11/14 15:50
 * @description 类的描述与介绍
 */
public class Student {
    private int id;
    private String name;
    private int age;
    private String address;

    public Student() {
    }

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

    public int getId() {
        return id;
    }

    public void setId(int 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 getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
}

测试类:

package com.iweb.list.test1.StudentSystem;

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

/**
 * @author Caesar
 * @date 2022 11 2022/11/14 16:01
 * @description 类的描述与介绍
 */
public class StudentSystem {
    public static void main(String[] args) {
//            定义一个集合,用于存储学生对象
        ArrayList<Student> list = new ArrayList<>();
        loop:
        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:退出<<<<<<<<<<<<<<<<<<<<<<<");
            Scanner scr = new Scanner(System.in);
            String chose = scr.next();


            switch (chose) {
                case "1":
                    addStudents(list);
                    break;
                case "2":
                    deleteStudent(list);
                    break;
//                    for (int i = 0; i < list.size(); i++) {
//                        System.out.println(list.get(i).getId());
//                    }
                case "3":
                    updateStudent(list);
                    break;
                case "4":
                    searchStudent(list);
                    break;
                case "5":
                    System.out.println("谢谢惠顾!!!");
//                    break loop;
//                    这里的loop用于给while循环起名
//                    结束指定循环,才会结束
//                    若直接break,只能跳出switch case这个循环,不能跳出外面的while循环
//                退出的第二种写法:
                    System.exit(0);
//                表示虚拟机停止运行
                default:
                    System.out.println("没有这个选项!请重新输入");
            }
        }

    }

    //    用于添加学生
    public static void addStudents(ArrayList<Student> list) {
        Scanner scr = new Scanner(System.in);
        Student stu = new Student();
//        利用空参构造创建学生对象
        System.out.println("请输入学生id");
        int sid = scr.nextInt();
        stu.setId(sid);
        boolean flag = contains(list, sid);
        if (flag) {
//            表示id已经存在
            System.out.println("学生信息已存在!");
        } else {
//            表示id不存在,并插入学生信息
            System.out.println("请输入学生姓名");
            String sname = scr.next();
            stu.setName(sname);

            System.out.println("请输入学生年龄");
            int sage = scr.nextInt();
            stu.setAge(sage);

            System.out.println("请输入学生地址");
            String saddress = scr.next();
            stu.setAddress(saddress);

            list.add(stu);
            System.out.println("学生信息添加成功!");
        }
    }


    public static void deleteStudent(ArrayList<Student> list) {
        Scanner scr = new Scanner(System.in);
        System.out.println("请输入要删除的学生id");
        int sid = scr.nextInt();
        int index=getIndex(list,sid);
//        调用下面的getIndex方法获取集合的索引
//        如果索引>=0,则表示对象存在,反之不存在
        if(index>=0){
//            添加确认删除
//            Y:确认删除,N:取消删除
            System.out.println("确认删除:Y,取消删除:N");
            String delete=scr.next();
            if(delete.equals("Y")||delete.equals("y")){
                list.remove(index);
                System.out.println("删除成功!");
            }else if(delete.equals("N")||delete.equals("n")){
                System.out.println("已取消删除!");
            }else {
                System.out.println("输入有误!");
            }
        }else{
            System.out.println("你要删除的id不存在!");
        }
    }

    public static void updateStudent(ArrayList<Student> list) {
        Scanner scr = new Scanner(System.in);
        Student stu = new Student();
        System.out.println("请输入需要修改信息的学生id");
        int sid = scr.nextInt();
        int index = getIndex(list, sid);
        if (index >= 0) {
            list.remove(index);
            stu.setId(sid);
            System.out.println("请输入需要求改的姓名");
            String sname = scr.next();
            stu.setName(sname);

            System.out.println("请输入需要修改的年龄");
            int sage = scr.nextInt();
            stu.setAge(sage);

            System.out.println("请输入需要求改的地址");
            String saddress = scr.next();
            stu.setAddress(saddress);
            System.out.println("您要修改的信息为:");
            System.out.println("姓名:"+sname);
            System.out.println("年龄:"+sage);
            System.out.println("地址:"+saddress);
            System.out.println("确认修改:Y,取消修改:N");
            String comfirm=scr.next();

                if(comfirm.equals("Y")||comfirm.equals("y")){
                    System.out.println("修改成功!");
                    list.add(stu);
                }else if(comfirm.equals("N")||comfirm.equals("n")){
                    System.out.println("已取消!");
                }else {
                    System.out.println("输入有误!");
            }
        } else {
            System.out.println("学生信息不存在!");

        }
    }

    //    查询学生
    public static void searchStudent(ArrayList<Student> list) {
        if (list.size() == 0) {
            System.out.println("当前无学生信息,请添加后再查");
//            结束方法
            return;
        } else {
            System.out.println("id\t姓名\t年龄\t家庭住址");
            for (int i = 0; i < list.size(); i++) {
                System.out.println(list.get(i).getId() + "\t" + list.get(i).getName() +
                        "\t" + list.get(i).getAge() + "\t\t" + list.get(i).getAddress());
            }
        }
    }

    //    写一个方法用于判断id是否在集合中存在
    public static boolean contains(ArrayList<Student> list, int id) {
        int index = getIndex(list, id);
        if (index >= 0) {
            return true;

        }
        return false;
//        3.存在,true,不存在,false
    }

    //    写一个方法用于获取学生对象的索引
    public static int getIndex(ArrayList<Student> list, int id) {
        for (int i = 0; i < list.size(); i++) {
            Student stu = list.get(i);
            int sid = stu.getId();
            if (id == sid) {
                return i;
            }
        }
        return -1;
    }

}