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]);
        }


    }
}
相关推荐
文丑颜不良啊31 分钟前
LeetCode876~900题目解析
java·leetcode
aloha_7891 小时前
Java 基础、集合、异常与 JUnit 5 速查
java·junit·sqlserver
知守观2 小时前
设计模式实战:从真实老项目中看标准模板方法与工厂的落地
java·spring·设计模式
独隅2 小时前
Claude API 实战教程:从入门到完整项目
android·java·数据库·claude·claude code
Wang's Blog2 小时前
Java 项目实战: 交友项目 - 圈子功能实现:总结
java·开发语言·交友
SL_staff2 小时前
JVS私有化文档系统上线避坑指南:5大运维与业务协同断点及检测加固实践
java·开源·全栈
FinelyYang4 小时前
考试系统简答题 AI 阅卷:覆盖度驱动、异步评分与人机协同落地实践
java·大数据·人工智能
hhhjhl4 小时前
Yup 跨端三方库仓颉适配全流程
java·开发语言
用户3126874877204 小时前
Java 对象内存布局:压缩指针、对齐填充与 JOL 实测
java
东华果汁哥5 小时前
【Spring AI 实战】从零开始调用大模型接口,构建 Java AI 应用
java·人工智能·spring