基于JAVA的学生管理系统

该文描述了一个基于控制台的Java学生管理系统,包括添加学生(保证ID唯一)、删除学生、修改学生信息以及查询所有学生信息的功能。系统使用ArrayList存储Student对象,并实现了相应操作的方法。
摘要由CSDN通过智能技术生成

一. 需求文档

学生管理系统

需求:

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

分析:

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

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

添加功能:

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

  • id唯一

删除功能:

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

  • id存在删除

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

修改功能:

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

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

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

查询功能:

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

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

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

id			姓名		年龄		家庭住址
heima001	张三		23		 南京
heima002	李四		24		 北京
heima003	王五		25		 广州
heima004	赵六	 	26		 深圳

二. Student的构建

package wzm.com;

public class Student {
    private String id;
    private String name;
    private String age;
    private String area;

    public Student() {
    }

    public Student(String id, String name, String age, String area) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.area = area;
    }

    /**
     * 获取
     * @return id
     */
    public String getId() {
        return id;
    }

    /**
     * 设置
     * @param id
     */
    public void setId(String id) {
        this.id = id;
    }

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     * @return age
     */
    public String getAge() {
        return age;
    }

    /**
     * 设置
     * @param age
     */
    public void setAge(String age) {
        this.age = age;
    }

    /**
     * 获取
     * @return area
     */
    public String getArea() {
        return area;
    }

    /**
     * 设置
     * @param area
     */
    public void setArea(String area) {
        this.area = area;
    }

   
}

三. 主体框架的的构建

public static void main(String[] args) {
        ArrayList<Student> list = new ArrayList<>();
        Scanner sc = new Scanner(System.in);


        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:退出");

            //定义为String类型,可以在录入值为字符时不报错,兼容性更好
            System.out.print("请选择要进行的操作:");
            String choose = sc.next();
            switch (choose){
                case"1" -> addStudent(list);
                case"2" -> removeStudent(list);
                case"3" -> turnStudent(list);
                case"4" -> findStudent(list);
                case"5" -> System.exit(0);
                default -> System.out.println("输入命令错误,请重新输入:");

            }


        }
}

四. 通用方法的编写

因为编程过程中需要大量遍历list进行查询操作,所以我们可以把这一部分进行模块化。

//查询索引
    public static  int findIndex(ArrayList<Student> list , String id){
        for (int i = 0; i < list.size(); i++) {
            if(id.equals(list.get(i).getId())){
                return i;
            }
        }
        return -1;


    }

五. 各选择的方法实现

1:添加学生

//"1:添加学生"
    public static void addStudent(ArrayList<Student> list){
        System.out.println("1:添加学生");
        Scanner sc = new Scanner(System.in);

        while(true){
            //输入id
            System.out.println("请输入学生id");
            String id = sc.next();

            //id唯一形判断
            if(findIndex(list,id) >= 0){
                System.out.println("学生信息已经存在,请重新输入");
                continue;
            }else{
                //输入名字
                System.out.println("请输入学生名字");
                String name = sc.next();

                //输入年龄
                System.out.println("请输入学生年龄");
                String age = sc.next();
                //输入家庭地址
                System.out.println("请输入学生家庭住址");
                String area = sc.next();


                Student st = new Student(id,name,age,area);
                list.add(st);
                System.out.println("学生信息添加成功");
                break;
            }


        }

    }

2:删除学生

//"2:删除学生"
    public static void removeStudent(ArrayList<Student> list){
        System.out.println("2:删除学生");
        Scanner sc = new Scanner(System.in);
        //输入要删除的id
        System.out.println("请输入要删除学生的id");
        String id = sc.next();
        int index = findIndex(list, id);
        if(index < 0){
            System.out.println("学生id不存在");
        }else{

            list.remove(index);
        }
    }

3:修改学生

//"3:修改学生"
    public static void turnStudent(ArrayList<Student> list){
        System.out.println("3:修改学生");
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要修改学生的id");
        String id = sc.next();
        int index = findIndex(list, id);
        Student s = list.get(index);
        if(index < 0){
            System.out.println("学生id不存在");
        }else{
            s.setId(id);
            //输入id
            System.out.println("请输入学生id");
            String id1 = sc.next();
            s.setId(id1);
            //输入名字
            System.out.println("请输入学生名字");
            String name = sc.next();
            s.setName(name);

            //输入年龄
            System.out.println("请输入学生年龄");
            String age = sc.next();
            s.setAge(age);
            //输入家庭地址
            System.out.println("请输入学生家庭住址");
            String area = sc.next();
            s.setArea(area);
            System.out.println("修改成功");
        }
    }

4:查询学生

public static void findStudent(ArrayList<Student> list){
        System.out.println("4:查询学生");
        if(list.size() == 0){
            System.out.println("当前无学生信息,请添加后在查询");
            return;
        }else{
            //打印表头
            System.out.println("id\t姓名\t\t年龄\t\t家庭住址");
            for (int i = 0; i < list.size(); i++) {
                Student s = list.get(i);
                System.out.println(s.getId() + "\t" + s.getName() + "\t\t" + s.getAge() + "\t" + s.getArea());

            }
        }

    }
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值