Java案例-学生管理系统

功能展示

启动类

java 复制代码
public class Test {
    public static void main(String[] args) {
        new StudentView().start();
    }
}

学生类

java 复制代码
package StudentManager;

public class Student {
    //学号
    private int id;
    //姓名
    private String name;
    //性别
    private String sex;
    //年龄
    private int age;

    public Student() {
    }

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

    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 String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }


}

菜单与前期准备

java 复制代码
    //获取键盘录入
    Scanner sc = new Scanner(System.in);

    //定义一个数组,用于存储学生信息
    Student[] students = new Student[50];

    //定义一个计数变量,用统计对学生数组的操作次数
    //为什么定义新数组:没存对象的位置遍历出来的是null,调用getter方法会出现空指针
    int count = 0;

    //定义新数组,用于存储操作之后的学生数组
    //原因:数组定长
    Student[] newStudents = new Student[students.length - 1];

    public void start() {
        //界面显示
        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("请选择(1-5):");
            int num = sc.nextInt();
            System.out.println("----------------------------------");
            switch (num) {
                case 1:
                    addStudnet();
                    break;
                case 2:
                    updateStudent();
                    break;
                case 3:
                    removeStudent();
                    break;
                case 4:
                    findAddStudent();
                    break;
                case 5:
                    System.out.println("是否退出程序?退出按0,不退出按9");
                    int key = sc.nextInt();
                    if (key == 0) {
                        return; //退出方法
                    } else if (key == 9) {
                        break; //退出循环
                    }
            }
        }
    }

添加功能

java 复制代码
    private void addStudnet() {
        //添加功能
        System.out.println("添加功能");
        //1、键盘录入学生信息
        System.out.println("请输入学生学号:");
        int id = sc.nextInt();
        System.out.println("请输入学生姓名:");
        String name = sc.next();
        System.out.println("请输入学生年龄:");
        int age = sc.nextInt();
        System.out.println("请输入学生性别:");
        String sex = sc.next();
        //将学生信息封装到Student对象中
        Student student = new Student(id, name, age, sex);
        //3、将封装好的student对象放到students中
        students[count] = student;
        //4、count++ 记录存储了多少个对象
        count++;
        System.out.println("添加成功!!!");
    }

修改功能

java 复制代码
   private void updateStudent() {
        System.out.println("修改功能");
        System.out.println("请输入需要修改的学生学号:");
        int id = sc.nextInt();
        for (int i = 0; i < count; i++) {
            if (id == students[i].getId()) {

                int updateindex = ArrayUtils.fiandIndexById(students, id, count);
                System.out.println("请输入学生姓名:");
                String name = sc.next();
                System.out.println("请输入学生年龄:");
                int age = sc.nextInt();
                System.out.println("请输入学生性别:");
                String sex = sc.next();
                //将修改之后的信息,封装成一个新的student对象

                Student student = new Student(id, name, age, sex);
                students[updateindex] = student;
                System.out.println("修改成功!!");
            } else {
                System.out.println("学号不存在,请核对后修改");
            }
        }
    }

删除功能

java 复制代码
    private void removeStudent() {
        System.out.println("删除功能");
        System.out.println("输入要删除的学生学号:");
        int id = sc.nextInt();
        for (int i = 0; i < count; i++) {
            if (id == students[i].getId()) {
        //获取删除学号的下标
        int deleteIndex = ArrayUtils.fiandIndexById(students, id, count);
        //因为数组不支持删除,所以将数组中除删除元素外的元素复制到新的数组中
        //第一次复制:复制删除学号之前的
        System.arraycopy(students, 0, newStudents, 0, deleteIndex);
        //第二次复制:复制删除学号之后的
        System.arraycopy(students, deleteIndex + 1, newStudents, deleteIndex, students.length - deleteIndex - 1);
        //将新数组的地址值给老数组
        students = newStudents;
        //删除学生之后,count--
        count--;
        System.out.println("删除成功");
            } else {
                System.out.println("学号不存在,请核对后删除");
            }
        }
    }

查看功能

java 复制代码
    private void findAddStudent() {
        System.out.println("查看功能");
        System.out.println("学号" + "\t" + "姓名" + "\t" + "年龄" + "\t" + "性别");

        //增加冒泡排序
        for (int i = 0; i < count; i++) {
            for (int j = 0; j < count - 1 - i; j++) {
                if (students[j].getId() > students[j + 1].getId()) {
                    Student temp = students[j];
                    students[j] = students[j + 1];
                    students[j + 1] = temp;
                }
            }
        }

        //count代表班级中的实际人数,故不能通过students.length 来进行判断
        if (count == 0) {
            System.out.println("班级人数为0,待开班");
        } else {
            //循环元的是班级中实际的人数
            for (int i = 0; i < count; i++) {
                System.out.println(students[i].getId() + "\t" + students[i].getName() + "\t" + students[i].getAge() + "\t" + students[i].getSex());
            }
        }
    }

工具类

java 复制代码
public class ArrayUtils {
    private ArrayUtils() {

    }
    public static int fiandIndexById(Student[] students, int id, int count) {
        //遍历查找下标值
        for (int i = 0; i < count; i++) {
            if (id == students[i].getId()) {
                return i;
            }
        }
        return -1;
    }
}

数组复制

java 复制代码
public class Test02 {
    public static void main(String[] args) {
        int[] arr1 ={1,2,3,4,5,8,6,7};
        int[] arr2 = new int[7];
        /**
         * 工具类:System
         * 静态方法:arrayCopy
         *      参数1;原数组
         *      参数2:开始索引
         *      参数3:目标数组
         *      参数4:目标数字的哪个索引开始粘贴
         *      参数5;复制多少
         */

        System.arraycopy(arr1,2,arr2,1,4);
        for (int i = 0; i < arr2.length; i++) {
            System.out.print(arr2[i]);
        }


    }
}
相关推荐
我不会起名字3229 分钟前
一天一道算法题(34):回溯法的经典例题(子集)
java·数据结构·python·算法·golang·深度优先·力扣
Wang's Blog1 小时前
Java框架快速入门: Spring Security+OAuth2之JWT核心概念与实战
java·spring·log4j
Dreams_l1 小时前
死信队列和延迟队列介绍
java·开发语言
Bs_MoneyMagnet1 小时前
基于springboot+vue的生态果园采摘预约系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·毕业设计·计算机毕业设计
麻瓜code2 小时前
【JUC】AQS enq() 自旋入队
java
Wang's Blog2 小时前
Java框架快速入门: Spring Security+OAuth2之核心角色与授权流程
java·spring·github
hai_android2 小时前
Kotlin Flow combine 源码剖析:一个 Channel 如何优雅合并多条流
android·java·kotlin
caoerzhong2 小时前
JeeWMS 开源仓库管理系统权限与域验证解析:Java WMS 如何把数据权限管到仓、货主与人
java·python·开源·vue
君顾12 小时前
西安 24 小时自助健身房系统开发实战指南
java·开发语言·健身房
用户094248568032 小时前
第9章:OpenJDK堆分代与 Serial/Parallel GC 基础
java·jvm