//用IO流实现学员信息的增删改查
public class Student_CRUD {
    //把管理员的信息添加到集合中
    static  List<Administrator>getList=new ArrayList<>();
    //把学生的对象添加到集合中
    static List<Students>list=new ArrayList<>();
    //static  List<Administrator>list1=new ArrayList<>();
    //输学生的信息
    static  Scanner  input=new Scanner(System.in);

    public static void main(String[] args) {

        Administrator();
    }

    public  static  void Administrator(){
        System.out.println("==========学生信息管理系统============");
        System.out.println("1.注册     2.登录    3.忘记密码");
        int  temp=input.nextInt();
        if(temp==1){
            //管理员的注册
            ZhuCe();
        }else  if(temp==2){
            //管理员的登录
            LoginAutor();
        }else if(temp==3){
            //管理员忘记密码

        }else{
            System.out.println("你的输入有误,请重新输入!!!");
            Administrator();
        }

    }
    public  static  void  ZhuCe(){
        System.out.println("请输入管理员的id");
        int id=input.nextInt();
        System.out.println("请输入管理员的账号");
        String name=input.next();
        //判断管理员的账号开头不能是数字
        if (!Character.isDigit(name.charAt(0))) {

        }else {
            System.out.println("不能以数字开头,必须是英文和数字组成");
            System.out.println("请重新注册");
            ZhuCe();
        }
        System.out.println("请输入管理员的密码");
        String  pwd=input.next();
        String newdata = String.valueOf(pwd);
        //必须到6到12位之间组成
        if (newdata.length() >= 6 && newdata.length()<= 12) {

        }else {
            System.out.println("长度必须在6-12位");
            System.out.println("请重新注册");
            ZhuCe();
        }
        //将管理员对象保存到集合中
        getList.add(new Administrator(id,name,pwd));

        //在将集合保存到文件中
       try(ObjectOutputStream fw=new ObjectOutputStream(new FileOutputStream("F:\\aaa\\a.txt"));){
          fw.writeObject(getList);
           System.out.println("管理员注册成功!!!!");
           //注册成功就跳转到登录的页面
           LoginAutor();
       }catch(FileNotFoundException  ce){
          ce.printStackTrace();
      }catch (IOException  ce){
          ce.printStackTrace();
      }
    }
    //管理员的登录页面
    public  static  void  LoginAutor() {

        System.out.println("==========学生信息管理系统============");
        System.out.println("请管理员登录");
        System.out.println("请输入管理员的id");
        int id1 = input.nextInt();
        System.out.println("请输入管理员的账号");
        String name11 = input.next();
        System.out.println("请输入管理员的密码");
        String pwd1 = input.next();
        //如果index=-1 就证明没有该管理的信息
        int index = -1;
        for (int i = 0; i < getList.size(); i++) {
            //如果三个条件都符合就证明登录成功
            if (getList.get(i).getId()== id1&&getList.get(i).getName()==name11&&getList.get(i).getPwd()==pwd1) {
                index = i;
                break;
            }
            //如果等等-1就证明没有该管理员的信息
            if(index==-1){
//                LoginAutor();
//                break;
            }else{
                System.out.println("欢迎进行学生信息管理系统");
            }
        }
        //在将集合重新保存到文件中
        try (ObjectOutputStream fw = new ObjectOutputStream(new FileOutputStream("F:\\aaa\\a.txt"))) {
            fw.writeObject(list);
            fw.close();
            System.out.println("登录成功!!!!");
            dis();
        } catch (IOException ce) {
            ce.printStackTrace();
        }

        try(ObjectInputStream fr=new ObjectInputStream(new FileInputStream("F:\\aaa\\a.txt"))){
           getList=(List<Administrator>)fr.readObject();
            System.out.print("管理员的信息:");
            System.out.println(getList);
        }catch(IOException  ce){
            ce.printStackTrace();
        }catch(ClassNotFoundException  ce){
            ce.printStackTrace();
        }

    }

    public static void dis(){
        System.out.println(" =========欢迎使用学生信息管理系统======== ");
        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(" 6、 退出 ");
        while (true) {
            String in = input.next();
            switch (in) {
                case "1":
                    //添加学员的信息
                    addStudent();
                    break;
                case "2":
                    //查找学员的信息
                    findStudent(list);
                    break;
                case "3":
                    //修改学员的信息
                    changeStudent();
                    break;
                case "4":
                    //删除学员的信息
                   delStudent();
                    break;
                case "5":
                    //展示学员的信息
                   showStudent();
                    break;
                case "6":
                    System.out.println("退出程序成功");
                    break;
                default:
                    System.out.println("输入错误,请选择1-6!");
                    dis(); //回调方法
            }
        }

    }
    //添加学员信息的方法
    public  static void   addStudent(){

        System.out.println("请输入学员的id");
        int   id=input.nextInt();
        System.out.println("请输入学员的姓名");
        String name=input.next();
        System.out.println("请输入学员的班级");
        String clzz=input.next();
        //把学员的信息添加到集合中
        list.add(new Students(id,name,clzz));
        //再将集合保存到文件中
        try(ObjectOutputStream  fw=new ObjectOutputStream(new FileOutputStream("F:\\aaa\\a.txt"));){
            fw.writeObject(list);
            fw.close();
            System.out.println("学员的信息添加成功√");
        }catch (IOException  ce){
            ce.printStackTrace();
        }
        dis();

   }
      //查找学员信息的方法
    public static  void  findStudent(List<Students>list){
        try(ObjectInputStream  fr=new ObjectInputStream(new FileInputStream("F:\\aaa\\a.txt"));){

            list=(List<Students>)fr.readObject();
            System.out.println(list);
        }catch (IOException  ce){
            ce.printStackTrace();
        }catch (ClassNotFoundException  ce){

        }

    }
    //修改学员的信息
    public  static  void changeStudent(){
        System.out.println("请输入要修改的学号");
        int  id=input.nextInt();
        //表示该学生不存在
        int index=-1;

        for(int  i=0;i<list.size();i++){
            //判断如果学生对象的学号等于学号说明找到了
           if(list.get(i).getId()==id){
            index=i;
            break;
           }
        }
        if(index==-1) {
            System.out.println("没有找到该学生信息,请重新输入");
        }else {
//            System.out.println("请输入id");
//            int ID = input.nextInt();
            System.out.println("请输入姓名:");
            String nameNew = input.next();
            System.out.println("请输入班级");
            String clasz = input.next();

            //给学生的对象重新赋值,根据下标重新赋值
            Students students = list.get(index);
            //students.setId(ID);
            students.setName(nameNew);
            students.setClazz(clasz);
            //把下标和对象再次添加到集合
            list.add(index, students);


            //再将集合重新保存到文件中
            try (ObjectOutputStream fw = new ObjectOutputStream(new FileOutputStream("F:\\aaa\\a.txt"));) {
                //写入文件中
                fw.writeObject(list);
                fw.close();
                System.out.println("学员的信息修改成功√");
            } catch (IOException ce) {
                ce.printStackTrace();
            }
        }
    }

    //删除学员的信息
    public   static  void   delStudent(){

        System.out.println("请输入要删除的学员的id");
        int  id=input.nextInt();
       //如果等于-1,就证明没有找到该学员
        int  index=-1;
        for(int  i=0;i<list.size();i++){
            //如果输出的id和原有的id相等就证明找到了
            if(list.get(i).getId()==id){
                index=i;
                break;
            }
        }
        if(index==-1){
            System.out.println("Sorry,没有该学员的信息");
        }else{
            //根据学员的id删除该学员的信息
            list.remove(index);
            //将该集合重新写入到文件夹中
            try(ObjectOutputStream  fw=new ObjectOutputStream(new FileOutputStream("F:\\aaa\\a.txt"))){
                fw.writeObject(list);
                fw.close();
                System.out.println("学员的信息删除成功√");
            }catch (IOException  ce){
                ce.printStackTrace();
            }
        }
    }
    //查询所有的信息
    public static void  showStudent(){
        try(ObjectInputStream  fr=new ObjectInputStream(new FileInputStream("F:\\aaa\\a.txt"));){
            list=(List<Students>)fr.readObject();
            System.out.println(list);
        }catch (IOException  ce){
            ce.printStackTrace();
        }catch (ClassNotFoundException  ce){

        }

    }
}
11-24 00:53