publicclassStudentView{/*后面会反复键盘录入,所以我们没要执行一个方法就new一次Scanner所以将Scanner对象放到成员位置*/Scanner sc =newScanner(System.in);/*老数组,长度为 50,代表班级最多能放50个人后面每个功能都需要使用数组,所以可以将数组放到成员位置*/Student[] students =newStudent[50];/*定义一个count,记录数组中有多少个对象,遍历元素不能全部遍历,因为没有存对象的位置遍历出来是null,再调用getxxx方法,会出现空指针所以我们应该记录存储对象的个数,存多少个对象,就遍历多少次而且,后面可能会反复使用count,所以提到成员位置*/int count =0;/*新数组,一会删除元素的时候需要将删除后剩下的元素复制到新数组中因为数组定长,不能直接在原来的数组基础上随意改变长度由于一次删一个,所以新数组长度为老数组长度-1后面可能会反复使用新数组,所以定义到成员位置*/Student[] newStudents =newStudent[students.length-1];/*start方法用于展示页面以及调用对应的功能*/publicvoidstart(){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){case1:addStudent();break;case2:updateStudent();break;case3:deleteStudent();break;case4:findAllStudent();break;case5:System.out.println("退出功能");break;}}}privatevoidfindAllStudent(){System.out.println("查看功能");}privatevoiddeleteStudent(){System.out.println("删除功能");}privatevoidupdateStudent(){System.out.println("修改功能");}privatevoidaddStudent(){System.out.println("添加功能");}}
3.4.工具类_ArrayUtils
publicclassArrayUtils{privateArrayUtils(){}publicstaticintfindIndexById(Student[] students,int id,int count){//遍历,查找for(int i =0; i < count; i++){if(id==students[i].getId()){return i;}}return-1;}}
3.5.添加功能_addStudent
privatevoidaddStudent(){//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();//2.将学生信息封装到Student对象中Student student =newStudent(id, name, age, sex);//3.将封装好的Student对象放到students数组中students[count]= student;//4.count++记录存储了多少个对象count++;System.out.println("添加成功!!!");}
3.6.查看功能_findAllStudent
privatevoidfindAllStudent(){System.out.println("学号"+"\t"+"姓名"+"\t"+"年龄"+"\t"+"性别");/*排序是为了防止:删除完之后再重新添加之前删除的序号对应的学生而发生乱序的情况*/for(int j =0; j < count-1; j++){for(int i =0; i < count-1-j; i++){if(students[i].getId()>students[i+1].getId()){Student temp = students[i];students[i]= students[i+1];students[i+1]= temp;}}}//如果count为0(证明没有添加过学生),证明没有学生if(count==0){System.out.println("对不起,现在班级没有学生,待开班.........");}else{//我们应该是添加了多少个学生,count就是几,就应该遍历几次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());}}}
3.7.修改功能_updateStudent
privatevoidupdateStudent(){//1.录入要修改的学生学号 idSystem.out.println("请您输入要修改的学生学号:");int id = sc.nextInt();/*2.注意:修改完之后不能直接将id当成索引去存储新的学生对象原因:id和学生在数组中的索引不是对应的解决:根据id查询对应的学生在数组中的索引位置*/int updateIndex =ArrayUtils.findIndexById(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 =newStudent(id, name, age, sex);students[updateIndex]= student;System.out.println("修改成功!!!");}
3.8.删除功能_deleteStudent
privatevoiddeleteStudent(){//1.输入要删除的学生学号System.out.println("请您输入要删除的学生学号:");int id = sc.nextInt();//2.根据id查询学生对应的索引位置int removeIndex =ArrayUtils.findIndexById(students, id, count);//复制被删除元素前面一部分System.arraycopy(students,0,newStudents,0,removeIndex);//再复制被删除元素后面一部分System.arraycopy(students,removeIndex+1,newStudents,removeIndex,students.length-removeIndex-1);//将新数组的地址值给老数组students = newStudents;//删除完之后count--count--;System.out.println("删除成功");}