学生管理系统

文章目录

    • 1.案例需求
    • 2.编程思路
    • 3.运行效果
    • 4.案例源码
    • 5.小结

1.案例需求

上次我们完成了一个酒店管理系统,这次我们使用面向对象思维,完成一个学生管理系统。
实现一个简单的学生管理系统,它具备5个功能,分别为

  • 显示所有的学生信息
  • 添加学生
  • 修改学生信息
  • 删除学生
  • 退出本系统功能

2.编程思路

首先我们要额外定义一个Studnet类,包括学生的学号、姓名、年龄、性别等属性。
其次我们定义一个测试类Test,在测试类的主函数里面要做以下事情:定义学生类型数组、定义一个static变量currentNum来表示目前的学生数组里的学生数量、以及显示菜单包括显示所有的学生信息、添加学生、修改学生信息、删除学生以及退出本系统功能,根据用户选择的菜单,执行相应的功能。每个功能的具体分析思路如下:

  • 显示所有学生信息 (showAllStudent 方法):
    遍历 student 数组,并调用每个 Student 对象的 show 方法来打印学生信息。
  • 添加学生 (addStudent 方法):
    通过循环让用户选择性别,直到选择有效为止。
    收集学生的学号、姓名、性别和年龄信息。
    创建一个新的 Student 对象,并将其添加到 student 数组中。
    更新 currentNum 变量以反映当前学生的数量。
  • 修改学生信息 (modifyStudent 方法):
    首先,要求用户输入要修改的学生的学号。
    遍历 student 数组,找到对应的学生对象。
    提供一个子菜单让用户选择要修改的信息(姓名、性别或年龄)。
    根据用户的选择,调用 Student 对象的相应方法来更新信息。
  • 删除学生 (deleteStudent 方法):
    类似于修改功能,首先要求用户输入要删除的学生的学号。
    找到对应的学生对象后,将该位置之后的所有学生向前移动一位,覆盖要删除的学生信息。
    同样更新 currentNum 变量。
  • 退出本系统功能:
    当用户选择退出选项(5)时,打印退出信息并调用 System.exit(0) 来终止程序。
    同时,在此过程中异常处理:使用 try-catch 块来捕获可能发生的InputMismatchException,以及其他可能的异常。

3.运行效果

学生管理系统的运行效果图如下:
学生管理系统_第1张图片

4.案例源码

Student类源码如下:

package 作业0331;

/**
 * @Version:1.0
 * @Description: TODO(一句话描述该类的功能)
 * @Date: 2024/4/5 12:19
 * @Author: wjy
 */
public class Student {
    private int id;
    private String name;
    private String sex;
    private int age;

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

    public Student() {
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    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;
    }

    public void show(){
        System.out.println(id+"\t\t\t"+name+"\t\t\t"+sex+"\t\t\t"+age);
    }
}

Test类源码如下:

package 作业0331;

import java.util.InputMismatchException;
import java.util.Scanner;

/**
 * @Version:1.0
 * @Description: TODO(一句话描述该类的功能)
 * @Date: 2024/3/31 16:00
 * @Author: wjy
 */
public class Test {
    static int currentNum = 0;

    public static void main(String[] args) {
        Student[] student = new Student[1000];
        System.out.println("***************欢迎进入学生管理系统***************");
        System.out.println("\t\t\t\t1.显示所有的学生信息");
        System.out.println("\t\t\t\t2.添加学生");
        System.out.println("\t\t\t\t3.修改学生信息");
        System.out.println("\t\t\t\t4.删除学生");
        System.out.println("\t\t\t\t5.退出");
        while (true) {
            System.out.print("请选择: ");
            Scanner scanner = new Scanner(System.in);
            if (scanner.hasNextInt()) {
                int choose = scanner.nextInt();
                switch (choose) {
                    case 1: {
                        System.out.println("您选择的功能为显示所有的学生信息");
                        showAllStudent(student);
                        break;
                    }
                    case 2: {
                        System.out.println("您选择的功能为添加学生");
                        addStudent(student);
                        break;
                    }
                    case 3: {
                        System.out.println("您选择的功能为修改学生信息");
                        modifyStudent(student);
                        break;
                    }
                    case 4: {
                        System.out.println("您选择的功能为删除学生");
                        deleteStudent(student);
                        break;
                    }
                    case 5: {
                        System.out.println("您已成功退出本系统!");
                        System.exit(0);
                    }
                    default: {
                        System.out.println("您输入的数字有误,请重新选择");
                        break;
                    }
                }
            } else
                System.out.println("您输入的不是数字,请重新输入!");
        }
    }

    //显示所有学生
    public static void showAllStudent(Student[] student) {
        System.out.println("学号\t\t\t姓名\t\t\t性别\t\t\t年龄");
        for (int i = 0; i < currentNum; i++) {
            student[i].show();
        }
    }

    //添加学生
    public static void addStudent(Student[] student) {
        String sex = null;
        boolean flag = true;
        Scanner scanner = new Scanner(System.in);
        try {
            System.out.println("请输入学号:");
            int id = scanner.nextInt();
            System.out.println("请输入姓名:");
            String name = scanner.next();
            while (flag) {
                System.out.println("请选择性别:1.男\t2.女");
                switch (scanner.nextInt()) {
                    case 1: {
                        sex = "男";
                        flag = false;
                        break;
                    }
                    case 2: {
                        sex = "女";
                        flag = false;
                        break;
                    }
                    default: {
                        System.out.println("您选择的性别不存在,请重新选择");
                    }
                }
            }
            System.out.println("请输入年龄:");
            int age = scanner.nextInt();
            student[currentNum] = new Student(id, name, sex, age);
            currentNum++;
            System.out.println("添加成功");
        } catch (InputMismatchException e) {
            System.out.println("输入不匹配异常");
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }

    }

    //修改学生信息
    public static void modifyStudent(Student[] student) {
        Scanner scanner = new Scanner(System.in);
        try {
            System.out.println("请输入你要修改的学生的学号:");
            int id = scanner.nextInt();
            for (int i = 0; i < currentNum; i++) {
                if (student[i].getId() == id) {
                    OUT1:
                    while (true) {
                        System.out.println("请选择你要修改的地方:1.姓名\t2.性别\t3.年龄");
                        switch (scanner.nextInt()) {
                            case 1: {
                                System.out.println("请输入修改后的姓名:");
                                student[i].setName(scanner.next());
                                break OUT1;
                            }
                            case 2: {
                                System.out.println("请输入修改后的性别:");
                                student[i].setSex(scanner.next());
                                break OUT1;
                            }
                            case 3: {
                                System.out.println("请输入修改后的年龄:");
                                student[i].setAge(scanner.nextInt());
                                break OUT1;
                            }
                            default: {
                                System.out.println("您选择的修改不存在,请重新输入");
                            }
                            System.out.println("修改成功!");
                        }
                    }
                    return;
                }
            }
            System.out.println("找不到该学号!");
        } catch (InputMismatchException e) {
            System.out.println("输入不匹配异常");
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }

    }

    //删除学生
    public static void deleteStudent(Student[] student) {
        Scanner scanner = new Scanner(System.in);
        try {
            System.out.println("请输入需要删除的学生的学号");
            int id = scanner.nextInt();
            for (int i = 0; i < currentNum; i++) {
                if (student[i].getId() == id) {
                    for (int j = i; j < currentNum; j++) {
                        student[j] = student[j + 1];
                    }
                    currentNum--;
                    System.out.println("删除成功!");
                    return;
                }
            }
            System.out.println("找不到该学号!");
        } catch (InputMismatchException e) {
            System.out.println("输入不匹配异常");
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }


    }
}


5.小结

这个学生管理系统涉及到面向对象编程,通过定义Student类,学会了如何将数据(属性)和行为(方法)封装在一起,这有助于创建模块化和可重用的代码。使用了数组来存储学生对象,这有助于理解如何在Java中使用数组来存储集合数据。同时使用了if、switch和while等控制流程语句来处理不同的用户输入,这有助于理解程序的逻辑结构。通过使用try-catch块处理程序运行时可能出现的异常,如输入不匹配异常InputMismatchException。在添加、显示、修改和删除学生信息的过程中,使用了循环来处理重复的任务,这有助于理解循环结构的用途。
不仅学习了Java编程的基础,而且也获得了一些软件开发的实践经验。这些经验将为日后解决更复杂的问题和开发更大型的应用程序打下坚实的基础。

你可能感兴趣的:(java)