学生管理系统(ArrayList简易版)

学生管理系统(ArrayList简易版)

学生管理系统实现思路

① 定义学生类

② 主界面的代码编写

③ 添加学生的代码编写

④ 查看学生的代码编写

⑤ 删除学生的代码编写

⑥ 修改学生的代码编写

⑦ 解决添加学生学号重复的问题

⑧ 解决删除/修改学生学号不存在的问题

定义学生类

  • 学生类:

    • Student
  • 成员变量:

    • 学号:sid
    • 姓名:name
    • 年龄:age
    • 居住地:address
  • 构造方法:

    • 无参构造
    • 带四个参数的构造
  • 成员方法:

    • 每个成员变量对应的get/set方法

这里的构造方法和成员方法可以使用Alt+Ins组合键生成即可

package cn.wolfcode;

public class Student {
    
    
    //学号
    private String sid;
    //姓名
    private String name;
    //年龄
    private Integer age;
    //居住地
    private String address;

    public Student() {
    
    
    }

    public Student(String sid, String name, Integer age, String address) {
    
    
        this.sid = sid;
        this.name = name;
        this.age = age;
        this.address = address;
    }

    public String getSid() {
    
    
        return sid;
    }

    public void setSid(String sid) {
    
    
        this.sid = sid;
    }

    public String getName() {
    
    
        return name;
    }

    public void setName(String name) {
    
    
        this.name = name;
    }

    public Integer getAge() {
    
    
        return age;
    }

    public void setAge(Integer age) {
    
    
        this.age = age;
    }

    public String getAddress() {
    
    
        return address;
    }

    public void setAddress(String address) {
    
    
        this.address = address;
    }
} 

下面是分模块编写代码,完整的StudentManager代码在最下面

主界面的代码编写

思路:

① 用输出语句完成主界面的编写

② 用Scanner实现舰炮录入数据

③ 用switch语句完成操作的选择

④ 用循环完成再次回到主界面

主界面示例图:

在这里插入图片描述


package cn.wolfcode;

import java.util.Scanner;

public class StudentManager {
    
    
    private static Scanner sc = new Scanner(System.in);
    public static void main(String[] args) {
    
    
        List<Student> array = new ArrayList<>();
        a : 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("请输入你的选择:");
            int i = sc.nextInt();
            /*
             * 这里先用文字代替方法,等后面写完方法再删掉这个,改成调用方法
             */
            switch (i) {
    
    
                case 1:
                    System.out.println("添加学生");
                    break;
                case 2:
                    System.out.println("删除学生");
                    break;
                case 3:
                    System.out.println("修改学生");
                    break;
                case 4:
                    System.out.println("查看所有学生");
                    break;
                case 5:
                    System.out.println("谢谢使用");
                    break a;
            }
        }
    }
}

添加学生的代码编写

思路:

  • 用键盘录入选择添加学生
  • 定义一个方法,用于添加学生
    • 显示提示信息,提示要录入是吗信息
    • 键盘录入学生对象所需的数据
    • 创建学生对象,把键盘录入的数据赋值给学生对象的成员变量
    • 将学生对象添加到集合中(保存)
    • 给出添加成功提示
  • 调用方法
//添加学生
private static void add(List<Student> array) {
    
    
    System.out.println("请输入学生的学号:");
    String sid = sc.next();
    System.out.println("请输入学生的姓名:");
    String name = sc.next();
    System.out.println("请输入学生的年龄:");
    int age = sc.nextInt();
    System.out.println("请输入学生的地址:");
    String address = sc.next();
    Student student = new Student(sid, name, age, address);
    array.add(student);
    System.out.println("学生信息添加成功");
}

再把case1中的控制台打印改成调用方法

case 1:
    add(array);
    break;

查看学生的代码编写

思路:

  • 用键盘录入选择查看所有学生信息
  • 定义一个方法,用于查看学生学习
    • 判断集合中是否有学生信息,如果没有显示提示信息
    • 显示表头信息
    • 将集合中数据取出按照对应格式显示学生信息
  • 调用方法
//查看学生
private static void selectAll(List<Student> array) {
    
    
    if(array.isEmpty()) {
    
    
            System.err.println("无信息,请添加消息再查询!");
            return;
        }
    //显示表头
    System.out.println("学号\t\t姓名\t\t年龄\t\t居住地");
    //for循环遍历array集合
    for(int i=0; i<array.size(); i++) {
    
    
        Student s = array.get(i);
        System.out.println(s.getSid()+ "\t\t" + s.getName() + "\t\t" + s.getAge() + "岁\t" + s.getAddress());
    }
}

再把case4中的控制台打印改成调用方法

case 4:
    selectAll(array);
    break;

删除学生的代码编写

思路:

  • 用键盘录入选择删除学生信息
  • 定义一个方法,用于删除学生信息
    • 显示提示信息
    • 键入要删除的学生学号
    • 遍历集合将对应的学生对象从集合中删除
    • 给出删除成功提示
  • 调用方法
//删除学生
private static void delete(List<Student> array) {
    
    
    System.out.println("请输入要删除的学生学号");
    String sid = sc.next();
    for(int i=0; i<array.size(); i++) {
    
    
        if(sid.equals(array.get(i).getSid())) {
    
    
            array.remove(i);
        }
    }
    System.out.println("学生信息删除成功");
}

再把case2中的控制台打印改成调用方法

case 2:
    delete(array);
    break;

修改学生的代码编写

思路:

  • 用键盘录入选择修改学生信息
  • 定义一个方法,用于修改学生信息
    • 显示提示信息
    • 键入要修改的学生学号
    • 键入要修改的学生信息
    • 遍历集合修改对应的学生信息
    • 给出修改成功提示
  • 调用方法
//修改学生信息
private static void update(List<Student> array) {
    
    
    System.out.println("请输入要修改信息的学生学号");
    String sid = sc.next();
    System.out.println("请输入学生的新姓名:");
    String name = sc.next();
    System.out.println("请输入学生的新年龄:");
    int age = sc.nextInt();
    System.out.println("请输入学生的新地址:");
    String address = sc.next();
    Student student = new Student(sid, name, age, address);
    for(int i=0; i<array.size(); i++) {
    
    
        if(sid.equals(array.get(i).getSid())) {
    
    
            array.set(i,student);
        }
    }
    System.out.println("学生信息修改成功");
}

再把case3中的控制台打印改成调用方法

case 3:
    update(array);
    break;

解决添加学生学号重复的问题

思路:

  • 定义一个方法,对学号是否被使用进行判断
    • 如果与集合中的某个学生学号相同,返回true
    • 否则,返回false
  • 在添加学生录入学号后调用该方法
    • 如果返回true,弹出提示,重新输入学号
    • 否则可以正常添加学生对象
//判断学号是否重复
private static boolean hasSid(List<Student> array, String sid) {
    
    
    for(int i=0; i<array.size(); i++) {
    
    
        if(sid.equals(array.get(i).getSid())) {
    
    
            return true;
        }
    }
    return false;
}

编写完方法后修改添加学生对象的代码

//添加学生
private static void add(List<Student> array) {
    
    
    String sid = null;
    while (true) {
    
    
        System.out.println("请输入学生的学号:");
        sid = sc.next();
        if (hasSid(array, sid)) {
    
    
            System.out.println("你输入的学号已被占用,请重新输入学号");
        } else {
    
    
            break;
        }
    }
    System.out.println("请输入学生的姓名:");
    String name = sc.next();
    System.out.println("请输入学生的年龄:");
    int age = sc.nextInt();
    System.out.println("请输入学生的地址:");
    String address = sc.next();
    Student student = new Student(sid, name, age, address);
    array.add(student);
    System.out.println("学生信息添加成功");
}

解决删除/修改学生学号不存在的问题

思路:

  • 调用hasSid(array, sid)判断学号是否存在
    • 如果返回false,弹出提示,重新输入学号
    • 否则可以正常删除/修改学生对象

由于修改删除修改方法的代码一样,这里只演示删除方法,想看修改方法可在下面全部完整代码中查看

//删除学生
private static void delete(List<Student> array) {
    
    
    String sid;
    while(true) {
    
    
        System.out.println("请输入要删除的学生学号");
        sid = sc.next();
        if (!hasSid(array, sid)) {
    
    
            System.err.println("该信息不存在,请重新输入");
        } else {
    
    
            break;
        }
    }
    for(int i=0; i<array.size(); i++) {
    
    
        if(sid.equals(array.get(i).getSid())) {
    
    
            array.remove(i);
        }
    }
    System.out.println("学生信息删除成功");
}

由于是简易版的学生管理系统,所以就完成基本的CRUD就差不多了,后面可能还会有进阶版的学生管理系统,着急的同学也可以私信我了解一下

下面给一下完整的StudentManager的代码

package cn.wolfcode;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class StudentManager {
    
    
    private static Scanner sc = new Scanner(System.in);

    public static void main(String[] args) {
    
    
        List<Student> array = new ArrayList<>();

        //这里是我用来做测试的,不想要的童鞋可以把这段删了
        Student s1 = new Student("001", "xhm", 12, "blw");
        Student s2 = new Student("002", "pdx", 12, "dst");
        Student s3 = new Student("003", "zyg", 21, "rlx");
        array.add(s1);
        array.add(s2);
        array.add(s3);
        
        a:
        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("请输入你的选择:");
            int i = sc.nextInt();
            switch (i) {
    
    
                case 1:
                    add(array);
                    break;
                case 2:
                    delete(array);
                    break;
                case 3:
                    update(array);
                    break;
                case 4:
                    selectAll(array);
                    break;
                case 5:
                    System.out.println("谢谢使用");
                    break a;
            }
        }
    }

    //添加学生
    private static void add(List<Student> array) {
    
    
        String sid = null;
        while (true) {
    
    
            System.out.println("请输入学生的学号:");
            sid = sc.next();
            if (hasSid(array, sid)) {
    
    
                System.err.println("你输入的学号已被占用,请重新输入学号");
            } else {
    
    
                break;
            }
        }
        System.out.println("请输入学生的姓名:");
        String name = sc.next();
        System.out.println("请输入学生的年龄:");
        int age = sc.nextInt();
        System.out.println("请输入学生的地址:");
        String address = sc.next();
        Student student = new Student(sid, name, age, address);
        array.add(student);
        System.out.println("学生信息添加成功");
    }

    //查看学生
    private static void selectAll(List<Student> array) {
    
    
        if (array.isEmpty()) {
    
    
            System.err.println("无信息,请添加消息再查询!");
            return;
        }
        //显示表头
        System.out.println("学号\t\t姓名\t\t年龄\t\t居住地");
        //for循环遍历array集合
        for (int i = 0; i < array.size(); i++) {
    
    
            Student s = array.get(i);
            System.out.println(s.getSid() + "\t\t" + s.getName() + "\t\t" + s.getAge() + "岁\t" + s.getAddress());
        }
    }

    //删除学生
    private static void delete(List<Student> array) {
    
    
        String sid;
        while(true) {
    
    
            System.out.println("请输入要删除的学生学号");
            sid = sc.next();
            if (!hasSid(array, sid)) {
    
    
                System.err.println("该信息不存在,请重新输入");
            } else {
    
    
                break;
            }
        }
        for(int i=0; i<array.size(); i++) {
    
    
            if(sid.equals(array.get(i).getSid())) {
    
    
                array.remove(i);
            }
        }
        System.out.println("学生信息删除成功");
    }

    //修改学生信息
    private static void update(List<Student> array) {
    
    
        String sid;
        while(true) {
    
    
            System.out.println("请输入要修改信息的学生学号");
            sid = sc.next();
            if (!hasSid(array, sid)) {
    
    
                System.err.println("该信息不存在,请重新输入");
            } else {
    
    
                break;
            }
        }
        System.out.println("请输入学生的新姓名:");
        String name = sc.next();
        System.out.println("请输入学生的新年龄:");
        int age = sc.nextInt();
        System.out.println("请输入学生的新地址:");
        String address = sc.next();
        Student student = new Student(sid, name, age, address);
        for(int i=0; i<array.size(); i++) {
    
    
            if(sid.equals(array.get(i).getSid())) {
    
    
                array.set(i,student);
            }
        }
        System.out.println("学生信息修改成功");
    }

    //判断学号是否重复
    private static boolean hasSid(List<Student> array, String sid) {
    
    
        for(int i=0; i<array.size(); i++) {
    
    
            if(sid.equals(array.get(i).getSid())) {
    
    
                return true;
            }
        }
        return false;
    }
}

猜你喜欢

转载自blog.csdn.net/aichijvzi/article/details/122917180
今日推荐