StudentManagementSystem

卫嘉谊
2023-12-01

一个主方法,两个接口,一个实现接口类,一个用户类,一个方法类

用户类

public class Student{
	//定义属性
 String name;
 char sex;
 int age;
 String classId;
 String id;

 //定义Student类方法
 public Student(){}

 //重写Student类全员方法
 public Student(name,sex,age,classId,id){
     this.name=name;
     this.sex=sex;
     this.age=age;
     this.classId=classId;
     this.id=id;
 }

 //设置get/set方法
 public String getName(){return name;}
	public void setName(String name){this.name=name}

 public char getSex(){return sex;}
 public void setSex(char sex){this.sex=sex;}

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

 public String getClassId(){return classId;}
 public void setClassId(String classId){this.classId=classId;}

 public String getId(){return id;}
 public void setId(String id){this.id=id;}

 //equals方法
 @Override
 public boolean equals(Object obj){
     if(this==obj) return true;
     if(obj instanceof Student){
         Student stu=(Student) obj;
         if(this.classId.equals(stu.class)&&this.id.equals(stu.id)){
             return true;
         }
     }
     return flase;
 }

 //toString方法
 @Override
 public String toString(){
     return name+"\t"+sex+"\t"+age+"\t"
         +classId+"\t"+id;
 }
}

接口

public interface IManagerSystem{
	int NAME=1;
 int SEX=2;
 int AGE=3;
 int CLASSID=4;
 int ID=5;

 //添加学生
 public int add(Student stu);

 //删除学生
 public int delete(String classID,String id);

 //修改学生
 public int update(String classId,String id,int type,Object value);

 //查找学生在数组中的下标   目标学生
 public int query(Student stu);

 //查询学生在数组中的下标   目标班级号学号
 public int query(String classId,String id);

 //打印所有学生信息
 public void printStuInfo();

 //数组扩容
 public void expansion();

}
public interface Code {
    //默认修改static
    enum UpdateCode{
        ERROR_1(-1,"修改失败---学生信息不合法"),
        ERROR_2(-2,"修改失败---有重复学生"),
        ERROR_3(-3,"修改失败---修改类型错误"),
        ERROR_4(-4,"修改失败---修改数据类型错误"),
        ERROR_5(-5,"修改失败---修改数据不合法"),
        ERROR_6(-6,"修改失败---目标班级上有该学生"),
        ERROR_7(-7,"修改失败---目标学号上有该学生"),
        OK(1,"修改成功");
        private int code;
        private String info;
        private UpdateCode(){}

        private UpdateCode(int code, String info) {
            this.code = code;
            this.info = info;
        }

        public int getCode() {
            return code;
        }

        public void setCode(int code) {
            this.code = code;
        }

        public String getInfo() {
            return info;
        }

        public void setInfo(String info) {
            this.info = info;
        }

        @Override
        public String toString() {
            return info ;
        }
    }
    enum DeleteCode{
        ERROR_1(-1,"删除失败---学生信息不合法"),
        ERROR_2(-2,"删除失败---没有学生"),
        OK(1,"删除成功");
        private int code;
        private String info;
        private DeleteCode(){}

        private DeleteCode(int code, String info) {
            this.code = code;
            this.info = info;
        }

        public int getCode() {
            return code;
        }

        public void setCode(int code) {
            this.code = code;
        }

        public String getInfo() {
            return info;
        }

        public void setInfo(String info) {
            this.info = info;
        }

        @Override
        public String toString() {
            return  info ;
        }
    }
    enum AddCode{
        ERROR_1(-1,"添加失败---学生信息不合法"),
        ERROR_2(-2,"添加失败---有重复学生"),
        OK(1,"添加成功");
        private int code;
        private String info;
        private AddCode(){}

        private AddCode(int code, String info) {
            this.code = code;
            this.info = info;
        }

        public int getCode() {
            return code;
        }

        public void setCode(int code) {
            this.code = code;
        }

        public String getInfo() {
            return info;
        }

        public void setInfo(String info) {
            this.info = info;
        }

        @Override
        public String toString() {
            return   info ;
        }
    }
}

实现接口类

public class StudentManagerSystem implements IManagerSystem {
    //学生容器
    private Student[] stus;
    //默认初始化容量
    private static final int DEFAULT_INIT_CAPACITY = 3;
    //指针
    private int size;

    public StudentManagerSystem() {

        stus = new Student[DEFAULT_INIT_CAPACITY];

        //假数据
        add(new Student("榮十一",'男',22,"2107","001"));
        add(new Student("沝\t",'女',21,"2107","002"));
        add(new Student("沝心\t",'女',21,"2107","003"));
        add(new Student("桜\t",'女',22,"2107","004"));
        add(new Student("张王京桜",'女',22,"2107","005"));
        add(new Student("张王1京桜",'女',22,"2107","006"));
    }

    public StudentManagerSystem(int initCapacity) {
        if (initCapacity <= DEFAULT_INIT_CAPACITY) {
            stus = new Student[DEFAULT_INIT_CAPACITY];
        } else {
            stus = new Student[initCapacity];
        }
    }


    @Override
    public Code.AddCode add(Student stu) {

        //判断学生信息是否合法
        if (!StuInfoUtil.isStu(stu)) {
            return Code.AddCode.ERROR_1;
        }
        //判断是否有该学生
        if (query(stu) != -1) {
            return Code.AddCode.ERROR_2;
        }
        //判断是否扩容
        if (size == stus.length) {
            expansion();
        }
        //添加学生
        stus[size++] = stu;
        return Code.AddCode.OK;
    }

    @Override
    public Code.DeleteCode delete(String classId, String id) {
        //1判断学生信息合法性
        if (!StuInfoUtil.isClassId(classId)||!StuInfoUtil.isId(id)){
            return Code.DeleteCode.ERROR_1;
        }
        //判断是否有该学生
        int index=query(classId,id);
        if (index==-1){
            return Code.DeleteCode.ERROR_2;
        }
        //删除
        for (int i=index;i<size-1;i++){
            stus[i]=stus[i+1];
        }size--;
        return Code.DeleteCode.OK;
    }

    @Override
    public Code.UpdateCode update(String classID, String id, int type, Object value) {
        //判断学生合法性
        if (!StuInfoUtil.isClassId(classID)||!StuInfoUtil.isId(id)){
            return Code.UpdateCode.ERROR_1;//学生信息不合法
        }
        //判断是否有该学生
        int index=query(classID,id);
        if (index==-1){
            return Code.UpdateCode.ERROR_2;//没有该学生
        }
        //判断修改类型
        switch (type){
            case IManagerSystem.NAME:
                if (value instanceof String){
                    String name=(String) value;
                    //判断修改数据的合法性
                    if (!StuInfoUtil.isName(name)){
                        return Code.UpdateCode.ERROR_5;//修改数据不合法
                    }
                    stus[index].setName(name);
                }else {
                    return Code.UpdateCode.ERROR_4;//修改数据类型错误
                }
                break;
            case IManagerSystem.SEX:
                if (value instanceof Character){
                    char sex=(Character) value;
                    //判断修改数据的合法性
                    if (!StuInfoUtil.isSex(sex)){
                        return Code.UpdateCode.ERROR_5;
                    }
                    stus[index].setSex(sex);
                }else {
                    return Code.UpdateCode.ERROR_4;//修改数据类型错误
                }break;
            case IManagerSystem.AGE:
                if (value instanceof Integer){
                    Integer age=(Integer) value;
                    //判断修改数据的合法性
                    if (!StuInfoUtil.isAge(age)){
                        return Code.UpdateCode.ERROR_5;
                    }
                    stus[index].setAge(age);
                }else{
                    return Code.UpdateCode.ERROR_4;//修改数据类型错误
                }break;
            case IManagerSystem.CLASS_ID:
                if (value instanceof String){
                    String targetClassId=(String) value;
                    //判断数据的合法型
                    if ((!StuInfoUtil.isClassId(targetClassId))){
                        return Code.UpdateCode.ERROR_5;//修改数据不合法
                    }
                    //判断修改过后的数据是否有该学生
                    if (query(new Student(targetClassId,id))!=-1){
                        return Code.UpdateCode.ERROR_6;//目标班级有该学生
                    }
                    stus[index].setClassId(targetClassId);
                }else {
                    return Code.UpdateCode.ERROR_4;
                }
                break;
            case IManagerSystem.ID:
                if (value instanceof String){
                    String targetId=(String) value;
                    //判断修改的数据合法性
                    if (!StuInfoUtil.isId(targetId)){
                        return Code.UpdateCode.ERROR_5;
                    }
                    //判断修改过后的数据是否有该学生
                    if (query(new Student(classID,targetId))!=-1){
                        return Code.UpdateCode.ERROR_7;//目标学号有该学生
                    }stus[index].setId(targetId);
                }else {
                    return Code.UpdateCode.ERROR_4;
                }break;
            default:
                return Code.UpdateCode.ERROR_3;//修改类型错误
        }
        return Code.UpdateCode.OK;
    }

    @Override
    public int query(Student stu) {
        for (int i = 0; i < size; i++) {
            if (stus[i].equals(stu)) {
                return i;
            }
        }
        return -1;
    }

    @Override
    public int query(String classID, String id) {
        Student stu =new Student(classID,id);

        return query(stu);
    }

    @Override
    public void printStuInfo() {
        for (int i = 0; i < size; i++) {
            System.out.println(stus[i]);
        }
    }

    @Override
    public void expansion() {

        int capacity = stus.length;
        int newCapacity = capacity + (capacity >> 1);
        stus = Arrays.copyOf(stus, newCapacity);
    }
}

方法类

public class StuInfoUtil {
    public static boolean isStu(Student stu) {
        String name = stu.getName();
        char sex = stu.getSex();
        int age = stu.getAge();
        String classId = stu.getClassId();
        String id = stu.getId();
        if (!(isName(name) && isSex(sex) && isAge(age) && isClassId(classId) && isId(id))) {
            return false;
        }
        return true;
    }

    public static boolean isName(String name) {
        int length = name.length();
        if (length < 1 || length > 8) {
            return false;
        }
        return true;
    }

    public static boolean isSex(char sex) {
        if (sex != '男' && sex != '女') {
            return false;
        }
        return true;
    }

    public static boolean isAge(int age) {
        if (age < 16 || age > 60) {
            return false;
        }
        return true;
    }

    public static boolean isClassId(String classId) {
        int length = classId.length();
        if (length != 4) {
            return false;
        }
        return true;
    }

    public static boolean isId(String id) {
        int length = id.length();
        if (length != 3) {
            return false;
        }
        return true;
    }
}

主方法类

 public class Main {
     private static StudentManagerSystem sms=new StudentManagerSystem();
     private static Scanner scan =new Scanner(System.in);
 
     public static void main(String[] args) {
         System.out.println("欢迎进入**学生管理系统");
         boolean flag=true;
         while (flag){
             System.out.println("请输入功能:");
             System.out.println("1-添加学生  2-删除学生   3-修改学生  4-打印所有学生信息  886-退出系统");
             int num=scan.nextInt();
             switch (num){
                 case 1:
                     addMenu();
                     break;
                 case 2:
                     deleteMenu();
                     break;
                 case 3:
                     upadateMenu();
                     break;
                 case 4:
                     printMenu();
                     break;
                 case 886:
                     flag =false;
                     System.out.println("正在退出**学生管理系统");
                     break;
             }
         }
         scan.close();//关闭Scanner资源
     }
     public static void addMenu(){
         System.out.println("请输入姓名、性别、年龄、班级号、学号");
         String name= scan.next();
         char sex=scan.next().toCharArray()[0];//将字符串转换为数组,再获取第0个下标位置上的元素
         int age=scan.nextInt();
         String classId=scan.next();
         String id=scan.next();
         Student stu=new Student(name,sex,age,classId,id);
         Code.AddCode add=sms.add(stu);
         System.out.println(add);
         System.out.println("--------------------");
     }
     public static void deleteMenu(){
         System.out.println("请输入班级号、学号");
         String classId=scan.next();
         String id=scan.next();
 
         Code.DeleteCode delete= sms.delete(classId,id);
         System.out.println(delete);
         System.out.println("-------------------------");
     }
     public static void upadateMenu(){
         System.out.println("请输入班级号、学号");
         String classId=scan.next();
         String id= scan.next();
         System.out.println("请输入要修改的类型:1-姓名 2-性别 3-年龄 4-班级号 5-学号");
         int type= scan.nextInt();
         System.out.println("请输入要修改的值:");
         Object value=null;
         switch (type){
             case IManagerSystem.NAME: case IManagerSystem.CLASS_ID:case IManagerSystem.ID:
                 value= scan.next();
                 break;
             case IManagerSystem.SEX:
                 value= scan.next().toCharArray()[0];
                 break;
             case IManagerSystem.AGE:
                 value = scan.nextInt();
                 break;
         }
         Code.UpdateCode update= sms.update(classId,id,type,value);
         System.out.println(update);
         System.out.println("----------------------");
     }
     public static void printMenu(){
         sms.printStuInfo();
         System.out.println("----------------------");
     }
 }
 
 类似资料:

相关阅读

相关文章

相关问答