Java 学生管理系统实战:从需求到代码实现

1. 需求描述

本案例将开发一个简单的学生管理系统,主要功能如下:

  1. 添加学生:通过键盘录入学生信息,添加到集合中
  2. 删除学生:通过键盘录入要删除学生的学号,如果学号存在,将该学生对象从集合中删除;如果学号不存在,提示无法删除
  3. 修改学生:通过键盘录入要修改学生的学号,将该学生对象其他信息进行修改,修改完毕保存在集合中
  4. 查看学生:将集合中的学生对象信息进行展示
  5. 退出系统:结束程序

2. 实现步骤

2.1 定义学生类 Student

  • 成员变量:
    • 学号:'sid'
    • 姓名:'name'
    • 年龄:'age'
    • 生日:'birthday'
  • 构造方法:
    • 无参构造
    • 带四个参数的构造成员方法:每个成员变量对应给出 get/set 方法

2.2 学生管理系统主界面的搭建步骤

  1. 用输出语句完成主界面的编写
  2. 用 Scanner 实现键盘录入数据
  3. 用 switch 语句完成操作的选择
  4. 用循环完成再次回到主界面

2.3 学生管理系统的添加学生功能实现步骤

  1. 用键盘录入选择添加学生
  2. 定义一个方法,用于添加学生:
    • 显示提示信息,提示要输入何种信息
    • 键盘录入学生对象所需要的数据
    • 创建学生对象,把键盘录入的数据赋值给学生对象的成员变量
    • 将学生对象添加到集合中(保存)
    • 给出添加成功提示(额外要求:学生学号不重复)
  3. 调用方法

2.4 学生管理系统的查看学生功能实现步骤

  1. 用键盘录入选择查看所有学生信息
  2. 定义一个方法,用于查看学生信息:
    • 显示表头信息
    • 将集合中数据取出按照对应格式显示学生信息,年龄显示补充“岁”
  3. 调用方法

2.5 学生管理系统的删除学生功能实现步骤

  1. 用键盘录入选择删除学生信息
  2. 定义一个方法,用于删除学生信息:
    • 显示提示信息
    • 键盘录入要删除的学生学号
    • 调用 getIndex 方法,查找该学号在集合的索引
    • 如果索引为 -1,提示信息不存在
    • 如果索引不是 -1,调用 remove 方法删除并提示删除成功
  3. 调用方法

2.6 学生管理系统的修改学生功能实现步骤

  1. 用键盘录入选择修改学生信息
  2. 定义一个方法,用于修改学生信息:
    • 显示提示信息
    • 键盘录入要修改的学生学号
    • 调用 getIndex 方法,查找该学号在集合的索引
    • 如果索引为 -1,提示信息不存在
    • 如果索引不是 -1,键盘录入要修改的学生信息
    • 集合修改对应的学生信息
    • 给出修改成功提示
  3. 调用方法

2.7 退出系统

使用 return; 退出程序

3. 代码实现

3.1 Student 类

public class Student {
    private String sid;//学号
    private String name;//姓名
    private int age;//年龄
    private String birthday;//生日

    public Student() {}

    public Student(String sid, String name, int age, String birthday) {
        this.sid = sid;
        this.name = name;
        this.age = age;
        this.birthday = birthday;
    }

    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 int getAge() {
        return age;
    }

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

    public String getBirthday() {
        return birthday;
    }

    public void setBirthday(String birthday) {
        this.birthday = birthday;
    }
}

3.2 Main 类

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

public class Main {
    public static void main(String[] args) {
        ArrayList<Student> list = new ArrayList<>();
        while (true) {
            System.out.println("--------------欢迎来到学生管理系统--------------");
            System.out.println("请选择您要进行的操作:");
            System.out.println("1.添加学生");
            System.out.println("2.删除学生");
            System.out.println("3.修改学生");
            System.out.println("4.查看学生");
            System.out.println("5.退出系统");

            Scanner sc = new Scanner(System.in);
            String choice = sc.nextLine();

            switch (choice) {
                case "1":
                    addStudent(list);
                    break;
                case "2":
                    deleteStudent(list);
                    break;
                case "3":
                    updateStudent(list);
                    break;
                case "4":
                    findAllStudent(list);
                    break;
                case "5":
                    System.out.println("感谢使用学生管理系统,再见!");
                    return;
                default:
                    System.out.println("输入有误,请重新输入!");
                    break;
            }
        }
    }

    //添加学生
    public static void addStudent(ArrayList<Student> list) {
        Scanner sc = new Scanner(System.in);
        String sid;
        while (true) {
            System.out.println("请输入学生学号:");
            sid = sc.nextLine();
            boolean flag = isUsed(list, sid);
            if (flag) {
                System.out.println("该学号已存在,请重新输入!");
            } else {
                break;
            }
        }
        System.out.println("请输入学生姓名:");
        String name = sc.nextLine();
        System.out.println("请输入学生年龄:");
        int age = Integer.parseInt(sc.nextLine());
        System.out.println("请输入学生生日:");
        String birthday = sc.nextLine();

        Student stu = new Student(sid, name, age, birthday);
        list.add(stu);
        System.out.println("添加成功!");
    }

    //判断学号是否已经被使用
    public static boolean isUsed(ArrayList<Student> list, String sid) {
        for (int i = 0; i < list.size(); i++) {
            Student stu = list.get(i);
            if (stu.getSid().equals(sid)) {
                return true;
            }
        }
        return false;
    }

    //删除学生
    public static void deleteStudent(ArrayList<Student> list) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要删除的学生学号:");
        String sid = sc.nextLine();

        int index = getIndex(list, sid);//查找该学号在集合的索引
        if (index == -1) {
            System.out.println("该学号不存在!");
        } else {
            list.remove(index);
            System.out.println("删除成功!");
        }
    }

    //查找学生在集合中对应的索引
    public static int getIndex(ArrayList<Student> list, String sid) {
        for (int i = 0; i < list.size(); i++) {
            Student stu = list.get(i);
            if (stu.getSid().equals(sid)) {
                return i;
            }
        }
        return -1;
    }

    //修改学生信息
    public static void updateStudent(ArrayList<Student> list) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要修改的学生学号:");
        String sid = sc.nextLine();

        int index = getIndex(list, sid);//查找该学号在集合的索引
        if (index == -1) {
            System.out.println("该学号不存在!");
        } else {
            System.out.println("请输入学生姓名:");
            String name = sc.nextLine();
            System.out.println("请输入学生年龄:");
            int age = Integer.parseInt(sc.nextLine());
            System.out.println("请输入学生生日:");
            String birthday = sc.nextLine();

            Student stu = new Student(sid, name, age, birthday);
            list.set(index, stu);
            System.out.println("修改成功!");
        }
    }

    //查看所有学生信息
    public static void findAllStudent(ArrayList<Student> list) {
        System.out.println("学号\t姓名\t年龄\t生日");
        for (int i = 0; i < list.size(); i++) {
            Student stu = list.get(i);
            System.out.println(stu.getSid() + "\t" + stu.getName() + "\t" + stu.getAge() + "岁\t" + stu.getBirthday());
        }
    }
}
Java 学生管理系统实战:从需求到代码实现

原文地址: https://www.cveoy.top/t/topic/oCIs 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录