1.学生类;

public class Student {
    String name;
    String sex;
    public Student() {
    }
    /*getName()方法就是直接调用这个方法的时候就可以得到创建数组时new的姓名*/
    public String getName() {
        return name;
    }
    public String getSex() {
        return sex;
    }
    /*setName()方法就是调用这个方法时可以修改name值的属性*/
    public void setName(String name) {
         = name;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public Student(String name, String sex) {
         = name;
        this.sex = sex;
    }
    @Override
    public String toString() {
        return "{" +
                "name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                '}';
    }
}

2.实现类

public class Test4 {
    public static void main(String[] args) {
        Student[] stus = new Student[10];
        stus[0] = new Student("张三","男");
        stus[1] = new Student("李四","女");
        Scanner sc = new Scanner(System.in);
        int count = 2;//学生总数
        System.out.println("********欢迎来到学生管理系统********");
        System.out.println("********您有如下选择:********");
        while (true){
            System.out.println("1.查看学生 2.添加学生 3.修改学生 4.删除学生");
            System.out.println("请选择编号:");
            int choose = sc.nextInt();
            switch (choose){
                case 1:
                    System.out.println("你选择了查看学生,学生信息如下:");
                    System.out.println("编号\t姓名\t性别");
                    /*循环遍历输出全部属性*/
                    for (int i=0;i<count;i++){
                        System.out.print((i+1)+"\t");
                        System.out.print(stus[i].name+"\t");
                        System.out.print(stus[i].sex+"\t");
                        System.out.println();
                    }
                    break;
                case 2:
                    System.out.println("你选择了添加学生");
                    System.out.println("请输入学生的姓名");
                    String name = sc.next();
                    System.out.println("请输入学生的性别");
                    String sex = sc.next();
                    /*添加操作就是创建新数组*/
                    stus[count] = new Student(name,sex);
                    /*实际长度要加1*/
                    count++;
                    break;
                case 3:
                    /*修改学生的操作就是用Student类中set方法可以将学生的姓名和性别修改 */
                    System.out.println("你选择了修改学生");
                    System.out.println("请输入你想修改学生的编号:");
                    int index = sc.nextInt();
                    //当输入的编号数小于等于学生的总人数时才能进行修改操作
                    if(index<=count) {
                        /*注意:***编号和学生的数组下标值差1,所以后面的index都要减-才能正确得到学生的信息****/
                        System.out.println("该学生的信息为:  姓名:" + stus[index - 1].name +
                                "  性别:" + stus[index - 1].sex);
                        System.out.println("请选择您的操作:1.修改该学生的姓名 2.修改该学生的性别 3.修改姓名及性别");
                        int choice = sc.nextInt();
                        if (choice == 1) {
                            System.out.println("请输入该学生应修改的姓名");
                            String updateName = sc.next();//接收输入的姓名方便修改
                            stus[index - 1].setName(updateName);//使用setName方法可以将姓名修改
                        } else if (choice == 2) {
                            System.out.println("请输入该学生应修改的性别");
                            String updateSex = sc.next();//接收输入的性别方便修改
                            stus[index - 1].setSex(updateSex);//使用setSex方法可以将姓名修改
                        } else if (choice == 3) {
                            System.out.println("请输入该学生应修改的姓名");
                            String updateName = sc.next();
                            stus[index - 1].setName(updateName);
                            System.out.println("请输入该学生应修改的性别");
                            String updateSex = sc.next();
                            stus[index - 1].setSex(updateSex);
                        }
                    }else{
                        /*如果输入学生编号越界 就输出提示*/
                        System.out.println("学生人数没那么多,请重新选择!");
                    }
                    break;
                case 4:
                    System.out.println("你选择了删除学生");
                    System.out.println("请输入你想删除学生编号");
                    int index1 = sc.nextInt(); //接收输入的学生编号
                    for (int i=index1-1;i<count;i++){
                        /*必须加这个否则报空指针异常 当循环遍历到count-1时候将该处的所有属性都置为空*/
                        /*减- 是因为数组下标和编号值差1 然后结跳出循环就不会报空指针异常*/
                        if(i==count-1){
                            stus[i]=null;
                            break;
                        }
                        /*将后一个数组的姓名和性别都赋值给前一个数组的姓名和性别 这样就形成了数组值的覆盖 就是删除了
                        *
                        * */
                        stus[i].name = stus[i+1].name;
                        stus[i].sex = stus[i+1].sex;
                    }
                    /*删除完毕 数组的实际存储的数据总长度要减1*/
                    count--;
                    break;
            }
        }

    }
}