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


    }
}
相关推荐
Wang's Blog4 小时前
Java 项目实战: 外卖平台优化-Nginx配置文件结构与块层级
java·开发语言·nginx
\光辉岁月/6 小时前
5.java-数组
java·开发语言
谢亮_vipxieliang6 小时前
Spring 事务失效的常见场景
java·开发语言·数据库·spring boot
郑州光合科技余经理6 小时前
海外版外卖加盟:总站与分站配送规则怎么分开管
java·开发语言·前端·后端·uni-app·php·ai编程
2601_962071576 小时前
类变量和全局变量的生命周期有什么区别?
java·开发语言·jvm
code2cat6 小时前
Java进阶篇之AtomicReference:一次替换引用,读到一份完整状态
java·并发编程·不可变对象·atomicreference
专业程序开发源6 小时前
springboot简历管理系统81389-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·spring·php·课程设计
Wang's Blog6 小时前
Java 项目实战: 外卖平台优化-前后端分离开发模式与工程拆分
java·开发语言
HEJOO97 小时前
指针的算术运算详解
java·数据结构·算法
sunshine22 girl7 小时前
Java学习六 Java常见API-2--String-3-字符串的截取替换和其他方法
java·开发语言·学习