Java:初学者项目:学员管理系统

版权声明:版权归 你的pizza到了 所有,未经允许不可转载 https://blog.csdn.net/qq_38353993/article/details/82594809

利用之前已发博客的知识,可以自行创建一个I/O流的学员管理系统,简单的实现增、删、改、查。

后续播客将逐渐强化该系统

以下内容会一步一步完善该系统:

1、学员类

在写界面前,要有一个学员类来存储学员的基本信息

这里只写了学员的学号stuNo、姓名name、性别sex、年龄。如果有更多需求可以自行添加

构造方法、get,set方法和toString方法可以使用alt+int快捷键生成

public class Student {
    private int stuNo;
    private String name;
    private String sex;
    private int age;

    public Student() {
    }

    public Student(int stuNo, String name, String sex, int age) {
        this.stuNo = stuNo;
        this.name = name;
        this.sex = sex;
        this.age = age;
    }

    public int getStuNo() {
        return stuNo;
    }

    public void setStuNo(int stuNo) {
        this.stuNo = stuNo;
    }

    public String getName() {
        return name;
    }

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

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public int getAge() {
        return age;
    }

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

    @Override
    public String toString() {//重写toString方法(),方便println(Student对象)进行打印Student的属性信息
        return "Student{" +
                "stuNo=" + stuNo +
                ", name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                ", age=" + age +
                '}';
    }
}

2、画控制台简单界面

在画简单界面前,要先将Student的数据放在集合中,从而实现对Student对象的增删改查。

再对Student集合进行操作前要先初始化集合内容(init(students));

因为用户输入操作指令在退出系统前是循环的,所以使用while(true){}死循环;

其中添加数据的方法addStudent(); 修改的方法 upStudent();删除的方法deleteStudent();按学号查询的方法findById();查询全部的方法findAll();将在后面一一实现;

使用死循环实现重复执行系统,直到退出系统

public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        ArrayList<Student> students = new ArrayList<>();
        init(students);//初始化集合
        System.out.println("--欢迎使用学员信息管理系统--");
        while (true){//在退出该系统前一直循环
            System.out.println("【请输入你要操作的编号】:");
            System.out.println("1、添加  2、修改  3、删除  4、按学号查询  5、查询全部  6、退出");
            int num = scanner.nextInt();
            switch (num){
                case 1://添加
                    //addStudent();
                    break;
                case 2://修改
                    //upStudent();
                    break;
                case 3://删除
                    //deleteStudent();
                    break;
                case 4://按学号查询
                    //findById();
                    break;
                case 5://查询全部
                    //findAll();
                    break;
                case 6://退出
                    System.out.println("感谢使用,已退出");
                    System.exit(0);
                    break;
                default://没有以上序号时的提示
                    System.out.println("输入有误,请重新输入");
                    break;
            }
        }
    }

3、查询全部findAll方法

查询集合中所有Student数据就需要将集合作为参数传给findAll方法,再进行遍历打印

private static void findAll(ArrayList<Student> students) {
        System.out.println("---------------------------------");
        System.out.println("学号\t\t姓名\t\t性别\t\t年龄\t\t");
        System.out.println(".................................");
        for (int i = 0; i < students.size(); i++) {
            Student student = students.get(i);
            System.out.println(student.getStuNo()+"\t\t"+student.getName()+
                    "\t\t"+student.getSex()+"\t\t"+student.getAge());
        }
        System.out.println(".................................");
    }

这里在遍历集合时使用了fori对集合进行遍历,代码不太简洁,所以使用增强for循环修改为以下代码

private static void findAll(ArrayList<Student> students) {
        System.out.println("---------------------------------");
        System.out.println("学号\t\t姓名\t\t性别\t\t年龄\t\t");
        System.out.println(".................................");
        for (Student s:students) {
            System.out.println(s.getStuNo()+"\t\t"+s.getName()+
                    "\t\t"+s.getSex()+"\t\t"+s.getAge());
        }
        System.out.println(".................................");
    }

4、添加信息addStudent方法

添加学生信息到集合中,就要把集合传递到addStudent方法中,因为在此方法中要用户输入添加的学生信息,所以Scanner对象也要作为方法的参数传递进来

private static void addStudent(ArrayList<Student> students, Scanner scanner) {
        int num = 0;
        loop:
        while (true){
            System.out.println("请输入学号:");
            num = scanner.nextInt();
            for (Student s:students) {
                if (s.getStuNo()==num){
                    System.out.println("你输入的学号已存在,请重新输入:");
                    continue loop;
                }
            }
            break;
        }
        System.out.println("请输入姓名:");
        String name = scanner.next();
        System.out.println("请输入性别:");
        String sex = scanner.next();
        System.out.println("请输入年龄:");
        int age = scanner.nextInt();
        Student student = new Student(num,name,sex,age);
        students.add(student);
    }

其中的loop为循环前的标签名,在循环中continue后加标签名,再代码运行到这一句时,便会跳到标签名的位置继续向下执行。

5、按学号查询findById方法

要从集合中查找学号,所以要将学生集合作为实参传递到方法中,方法中要获取用户输入的学号,所以将Scanner对象作为实参传入方法中;

在方法中使用加强for循环遍历学生集合,对比用户输入的学号,相同就输出查找到的结果,并结束此方法下面的运行;当遍历结束也没有找到与用户输入的学号相同的内容,就在继续进行死循环,提示后再次输入

private static void findById(ArrayList<Student> stuList, Scanner scanner) {
        int stuNo = 0;
        loop:
        while (true){
            System.out.println("请输入要查询的学号:");
            stuNo = scanner.nextInt();
            for (Student s: stuList) {
                if (stuNo == s.getStuNo()){
                    System.out.println("查找结果:");
                    System.out.println(s);
                    return;//立即结束程序
                }
            }
            //输入学号在集合中不存在
            System.out.println("你输入的学号不存在,请重新输入");
            continue loop;
        }
    }

6、修改upData方法

先查找用户输入的学号,在集合的遍历中查找到用户输入的学号时,在输入新的其他属性,输入零不会修改

private static void upData(ArrayList<Student> stuList, Scanner scanner) {
        int stuNo = 0;
        loop://定义标签,在输入学号不存在时,再次运行标签处代码
        while (true){
            //先对学号进行查找
            System.out.println("请输入要修改的学号:");
            stuNo = scanner.nextInt();
            for (Student s: stuList) {
                if (stuNo == s.getStuNo()){
                    System.out.println("请输入新的姓名[输入0不进行修改]:");
                    String name = scanner.next();
                    System.out.println("请输入新的性别[输入0不进行修改]:");
                    String sex = scanner.next();
                    System.out.println("请输入新的年龄[输入0不进行修改]:");
                    int age = scanner.nextInt();
                    if (!name.equals("0")){
                        s.setName(name);
                    }
                    if (!sex.equals("0")){
                        s.setSex(sex);
                    }
                    if (age != 0){
                        s.setAge(age);
                    }
                    System.out.println("修改成功!");
                    return;
                }
            }
            //输入学号在集合中不存在
            System.out.println("你输入的学号不存在,请重新输入");
            continue loop;
        }
    }

7、删除delectStudent方法

先查找用户输入的学号,在集合的遍历中查找到用户输入的学号时,在进行删除,且提示用户是否进行删除

private static void deleteStudent(ArrayList<Student> stuList, Scanner scanner) {
        int stuNo = 0;
        loop:
        while (true){
            //对学号进行查找
            System.out.println("请输入要删除的学号:");
            stuNo = scanner.nextInt();
            for (Student s: stuList) {
                if (stuNo == s.getStuNo()){
                    //提示是否删除
                    System.out.println("确定要删除以下学员么?(y/n):");
                    System.out.println(s);
                    String chack = scanner.next();
                    if (chack.equalsIgnoreCase("y")){//忽略大小写
                        stuList.remove(s);
                        System.out.println("信息已删除");
                    }else {
                        System.out.println("信息没有进行删除");
                    }
                    return;
                }
            }
            //输入学号在集合中不存在
            System.out.println("你输入的学号不存在,请重新输入");
            continue loop;
        }
    }

完整代码

Student类:

public class Student {
    private int stuNo;
    private String name;
    private String sex;
    private int age;

    public Student() {
    }

    public Student(int stuNo, String name, String sex, int age) {
        this.stuNo = stuNo;
        this.name = name;
        this.sex = sex;
        this.age = age;
    }

    public int getStuNo() {
        return stuNo;
    }

    public void setStuNo(int stuNo) {
        this.stuNo = stuNo;
    }

    public String getName() {
        return name;
    }

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

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public int getAge() {
        return age;
    }

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

    @Override
    public String toString() {
        return "Student{" +
                "stuNo=" + stuNo +
                ", name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                ", age=" + age +
                '}';
    }
}

测试类:

public static void main(String[] args) {
        System.out.println("----欢迎使用学员管理系统----");
        Scanner scanner = new Scanner(System.in);
        ArrayList<Student> stuList = new ArrayList<>();
        init(stuList);//初始化集合

        while (true) {
            System.out.println("【请选择要操作的功能编号】");
            System.out.println("1、添加  2、修改  3、删除  4、按学号查询  5、查询所有学员  6、退出");
            int num = scanner.nextInt();
            switch (num) {
                case 1://添加
                    addStudent(stuList, scanner);
                    break;
                case 2://修改
                    upData(stuList,scanner);
                    break;
                case 3://删除
                    deleteStudent(stuList,scanner);
                    break;
                case 4://按学号查询
                    findById(stuList,scanner);
                    break;
                case 5://查询所有学员
                    findAll(stuList);
                    break;
                case 6://退出
                    System.out.println("感谢使用,已退出");
                    System.exit(0);
                    break;
                default:
                    System.out.println("您的输入有误,请重新输入");
                    break;

            }
        }

    }

    //查询全部
    private static void findAll(ArrayList<Student> stuList) {
        System.out.println("----------------------------");
        System.out.println("学号\t\t姓名\t\t性别\t\t年龄");
        System.out.println("............................");
        if (stuList.size() == 0) {
            System.out.println("【无数据】");
        } else {
            for (Student student : stuList) {
                System.out.println(student.getStuNo() + "\t\t" + student.getName() + "\t\t" + student.getSex() + "\t\t" + student.getAge());
            }
        }
        System.out.println("----------------------------");
    }

    //按学号查找
    private static void findById(ArrayList<Student> stuList, Scanner scanner) {
        int stuNo = 0;
        loop:
        while (true){
            System.out.println("请输入要查询的学号:");
            stuNo = scanner.nextInt();
            for (Student s: stuList) {
                if (stuNo == s.getStuNo()){
                    System.out.println("查找结果:");
                    System.out.println(s);
                    return;//立即结束程序
                }
            }
            //输入学号在集合中不存在
            System.out.println("你输入的学号不存在,请重新输入");
            continue loop;
        }
    }

    //删除
    private static void deleteStudent(ArrayList<Student> stuList, Scanner scanner) {
        int stuNo = 0;
        loop:
        while (true){
            //对学号进行查找
            System.out.println("请输入要删除的学号:");
            stuNo = scanner.nextInt();
            for (Student s: stuList) {
                if (stuNo == s.getStuNo()){
                    //提示是否删除
                    System.out.println("确定要删除以下学员么?(y/n):");
                    System.out.println(s);
                    String chack = scanner.next();
                    if (chack.equalsIgnoreCase("y")){//忽略大小写
                        stuList.remove(s);
                        System.out.println("信息已删除");
                    }else {
                        System.out.println("信息没有进行删除");
                    }
                    return;
                }
            }
            //输入学号在集合中不存在
            System.out.println("你输入的学号不存在,请重新输入");
            continue loop;
        }
    }

    //修改
    private static void upData(ArrayList<Student> stuList, Scanner scanner) {
        int stuNo = 0;
        loop://定义标签,在输入学号不存在时,再次运行标签处代码
        while (true){
            //先对学号进行查找
            System.out.println("请输入要修改的学号:");
            stuNo = scanner.nextInt();
            for (Student s: stuList) {
                if (stuNo == s.getStuNo()){
                    System.out.println("请输入新的姓名[输入0不进行修改]:");
                    String name = scanner.next();
                    System.out.println("请输入新的性别[输入0不进行修改]:");
                    String sex = scanner.next();
                    System.out.println("请输入新的年龄[输入0不进行修改]:");
                    int age = scanner.nextInt();
                    if (!name.equals("0")){
                        s.setName(name);
                    }
                    if (!sex.equals("0")){
                        s.setSex(sex);
                    }
                    if (age != 0){
                        s.setAge(age);
                    }
                    System.out.println("修改成功!");
                    return;
                }
            }
            //输入学号在集合中不存在
            System.out.println("你输入的学号不存在,请重新输入");
            continue loop;
        }
    }

    //添加
    private static void addStudent(ArrayList<Student> stuList, Scanner scanner) {
        int no = 0;
        loop:
        while (true) {
            System.out.println("请输入学号:");
            no = scanner.nextInt();
            for (Student s : stuList) {
                if (no == s.getStuNo()) {
                    System.out.println("你输入的学号已存在,请重新输入:");
                    continue loop;
                }
            }
            break;
        }
        System.out.println("请输入姓名:");
        String name = scanner.next();
        System.out.println("请输入性别:");
        String sex = scanner.next();
        System.out.println("请输入年龄:");
        int age = scanner.nextInt();
        //创建Student对象
        Student student = new Student(no, name, sex, age);
        //添加到集合中
        stuList.add(student);
    }

    //集合初始化
    private static void init(ArrayList<Student> stuList) {
        stuList.add(new Student(1, "ez", "男", 12));
        stuList.add(new Student(2, "蚂蚱", "男", 45));
        stuList.add(new Student(3, "奥特曼", "男", 158));
        stuList.add(new Student(4, "轮子妈", "女", 34));
    }

猜你喜欢

转载自blog.csdn.net/qq_38353993/article/details/82594809