学生管理系统

发布时间:2023年12月25日

需求:

采取控制台的方式去书写学生管理系统

分析:

初始菜单:

"-------欢迎来到学生管理系统"
"1:添加学生"
"2:删除学生"
"3:修改学生"
"4:查询学生"  
"5:退出"    
"请输入您的选择" 

学生类:

属性:id,姓名、年龄、家庭住址

添加功能:

键盘录入每一个学生信息并添加,需要满足以下要求:

  • id唯一

删除功能:

键盘录入要删除的学生id,需要满足一下要求:

  • id存在删除

  • id不存在,需要提示不存在,并回到初始菜单

修改功能:

键盘录入要修改的学生id,需要满足一下要求:

  • id存在,继续录入其他信息

  • id不存在,需要提示不存在,并回到初始菜单

查询功能:

打印所有学生的信息,需要满足以下要求:

  • 如果没有学生信息,提示:当前无学生信息,请添加后在查询

  • 如果有学生信息,需要按照一下格式输出(不用过于纠结对齐的问题)

    id          姓名         年龄        家庭住址
    heima001    karry         24          重庆
    heima002    roy           23          重庆
    heima003    jackson       23          湖南
    heima004    王五          24          上海

    代码

    package stdentSystem;
    public class Student {
        private String id;
        private String name;
        private int age;
        private String address;
        public Student() {
        }
        public Student(String id, String name, int age, String address) {
            this.id = id;
            this.name = name;
            this.age = age;
            this.address = address;
        }
    
        public String getId() {
            return id;
        }
    
        public void setId(String id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public String getAddress() {
            return address;
        }
    
        public void setAddress(String address) {
            this.address = address;
        }
    }
    
    package stdentSystem;
    import java.util.ArrayList;
    import java.util.Scanner;
    public class StudentSystem {
        public static void main(String[] args) {
            ArrayList<Student> list=new ArrayList<>();
          loop: 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("请输入您的选择:");
                Scanner sc=new Scanner(System.in);
                String choose=sc.next();
                switch (choose){
                    case"1" :addStudent(list);break;
                    case"2" :delStudent(list);break;
                    case"3" :updateStudent(list);break;
                    case"4" :queryStudent(list);break;
                    case"5" :{
                        System.out.println("退出");
                        break loop;
                       // System.exit(0);停止虚拟机运行
                    }
                    default:
                        System.out.println("没有这个选项");
                }
            }
        }
        //添加学生
        public static void addStudent(ArrayList<Student> list){
          //利用空参构造先创建学生对象
            Student s=new Student();
            Scanner sc=new Scanner(System.in);
            String id= null;
            while (true) {
                System.out.println("请输入学生id");
                id = sc.next();
                boolean flag = contains(list, id);
                if(flag){
        //表示id已经存在,需要重新录入
                    System.out.println("id已经存在,请重新录入");
                }else{
    //表示id不存在
    s.setId(id);
    break;
                }
            }
    
            System.out.println("请输入学生的姓名");
            String name=sc.next();
            s.setName(name);
            System.out.println("请输入学生的年龄");
           int age= sc.nextInt();
           s.setAge(age);
            System.out.println("请输入学生的家庭住址");
            String address=sc.next();
            s.setAddress(address);
           // Student s=new Student(id,name,age,address);
       //把学生对象添加到集合当中
            list.add(s);
            //提示一下用户
            System.out.println("学生信息添加成功");
        }
        //删除学生
        public static void delStudent(ArrayList<Student> list){
          Scanner sc=new Scanner(System.in);
            System.out.println("请输入要删除的id");
            String id=sc.next();
           //查询id在集合中的索引
            int index=getIndex(list,id);
            //对index进行判断
            //如果-1,就表示不存在,结束方法,返回初始菜单
            if(index>=0){
                //如果大于等于0,表示存在,直接删除
                list.remove(index);
                System.out.println("id为:"+id+"的学生删除成功");
            }else{
                System.out.println("id不存在,删除失败");
            }
        }
        //修改学生
        public static void updateStudent(ArrayList<Student> list){
           Scanner sc=new Scanner(System.in);
            System.out.println("请输入要修改学生的id");
            String id=sc.next();
            int index = getIndex(list, id);
            if(index==-1){
                System.out.println("要修改的id"+id+"不存在,请重新输入");
            return;
            }
            //当代码执行到这里表示当前id存在
            //获取要修改的对象
            Student stu=list.get(index);
            //输入其他的信息并修改
            System.out.println("请输入要修改的学生姓名");
            String newName= sc.next();
            stu.setName(newName);
            System.out.println("请输入要修改的学生的年龄");
            int newAge=sc.nextInt();
            stu.setAge(newAge);
            System.out.println("请输入要修改的学生的家庭地址");
            String newAddress=sc.next();
            stu.setAddress(newAddress);
            System.out.println("学生信息修改成功");
        }
        //查询学生
        public static void queryStudent(ArrayList<Student> list){
           if(list.size()==0){
               System.out.println("当前无学生信息,请添加后在查询");
         //结束方法
          return;
           }
           //打印表头信息
            System.out.println("id\t\t姓名\t年龄\t家庭住址");
           //当代码执行到这里,代表集合里有数据
            for (int i = 0; i < list.size(); i++) {
     Student stu=list.get(i);
                System.out.println(stu.getId()+"\t"+stu.getName()+"\t"+stu.getAge()+"\t"+stu.getAddress());
            }
        }
    //判断id在集合中是否存在
       public static boolean contains(ArrayList<Student> list,String id){
         //循环遍历集合得到每一个学生对象
         //拿到学生对象后,获取id进行判断
           //存在,true,不存在false
          /* for (int i = 0; i < list.size(); i++) {
             Student stu=  list.get(i);
             String sid=stu.getId();
             if(sid.equals(id)){
                 return  true;
             }
           }
    return false;*/
         return   getIndex(list,id)>=0;
       }
    //通过id获取索引的方法
    public static int getIndex(ArrayList<Student> list,String id ){
       //遍历集合
        for (int i = 0; i < list.size(); i++) {
        //得到每一个学生对象
            Student stu=  list.get(i);
           //得到每一个学生对象的id
            String sid = stu.getId();
            //拿着集合中的学生id跟要查询的Id进行比较
            if(sid.equals(id)){
                //如果一样,那么就返回索引
                return i;
            }
        }
        //当循环结束之后还没找到,就表示不存在,返回-1
        return -1;
    }
    }

文章来源:https://blog.csdn.net/qq_52326978/article/details/135172089
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。