Java实现简易的学生管理系统

Java实现简易的学生管理系统



前言

该项目主要是作为新手快速上手实操,围绕面向对象所学知识实现学生管理系统的增删改查功能,所使用的知识点主要是面向对象的三大特征使用的方法、判断语句、构造方法等知识点,代码量并不是很多,主要是考察我们在做项目会遇到的一些问题,我们会用什么样的方法去解决,以及提高我们的逻辑能力,从而为后面学习我们的集合、多线程、框架等打牢基础


一、如何实现

1、首先我们要去分析我们需要定义哪些类?
2、定义类之后我们赋予的数据类型是否得当?
3、是否要提供get、set方法,有参、无参构造方法?
4、既然我们要实现增删改查的操作,那我们按怎样的顺序来完成才是最好的呢?
5、增删改查的每一步我们需要用到些什么知识点呢?
。。。。。。。。

二、实现的方法(示意图)

为了更好的使我们更熟悉实现流程,为此做出以下示意图作为参考

在这里插入图片描述

三、开始实现

3.1 定义类

按照我们的这个示意图可知,我们在实现的时候,主要是定义两个类,一个学生类(Student)和 学生管理类(StudentMessage),并分别定义成员属性以及对象集合,在Student类中,我们还要为它提供get、set方法和有参构造方法

Student类

public class Student {
    private String stuId;
    private String name;
    private Integer age;
    private String address;

    public String getStuId() {
        return stuId;
    }

    public void setStuId(String stuId) {
        this.stuId = stuId;
    }

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

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

StudentMessage类

public class StudentMessage {

    private static ArrayList<Student> stus = new ArrayList<>();
    }

3.2 定义主界面

主界面实现方式:
1、我们这里直接使用输出语句即可

在这里插入图片描述

			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("请选择[1-5]");

如何实现用户在输入数字使用某个功能时,该功能可以实现?
1、就要使用到Scanner,获取用户从键盘中输入的数值
2、使用switch 或 if 判断语句,判断用户输入的数组应该跳转到哪,在这里我们使用switch,主要是为了更加美观

Scanner scanner = new Scanner(System.in);
            int number = scanner.nextInt();

            //判断用户输入哪一个数字 我们可以使用switch 或 if
            switch (number) {
                case 1:
                    System.out.println("1、新增学生");
                    addStudent();
                    break;
                case 2:
                    System.out.println("2、修改学生");
                    updateStudent();
                    break;
                case 3:
                    System.out.println("3、删除学生");
                    deleteStudent();
                    break;
                case 4:
                    System.out.println("4、查询学生");
                    showStudent();
                    break;
                case 5:
                    System.out.println("5、退出系统");
                    return;
            }

3.3 实现添加功能

实现添加功能的过程:
1、定义方法,在这里我们定义的方法名为addStudent
2、我们需要把数据类型相同的先进行键盘获取
3、将学生的信息存入到集合中
4、调用该方法

public static void addStudent() {

        //在这里 我们需要把数据类型相同的先进行键盘获取 否则会出现读取不了下一个数据提前结束获取
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入学生学号");
        String stuId = scanner.nextLine();
        System.out.println("请输入学生姓名");
        String name = scanner.nextLine();
        System.out.println("请输入学生地址");
        String address = scanner.nextLine();
        System.out.println("请输入学生年龄");
        int age = scanner.nextInt();

        //直接将学生的信息存入到集合中
        stus.add(new Student(stuId,name,age,address));
        //确认我们是否成功新增学生信息
        System.out.println("新增成功");
    }

注意:
学号是每一个学生特定的,这时我们就要封装一个方法(getStuIdStudent),根据用户传入进来的学生学号与集合中存在的学生学号进行对比,如果存在就不允许继续插入,进行返回

getStuIdStudent方法

public static Student getStuIdStudent(String stuId) {
        for (int i = 0; i < stus.size(); i++) {
            Student student = stus.get(i);
            //用户录入的学号 与 集合中存在学生学号相同 则该学号已经被使用 不允许继续插入
            if (student.getStuId().equals(stuId)) {
                return student;
            }

        }
        return null;
    }

addStudent()进行调用

//根据用户输入学号从集合中查询 如果存在的话 就不允许插入
        Student student = getStuIdStudent(stuId);
        if (student!=null) {
            System.out.println("该学号已经被" + student.getName() + "占用,不能够继续插入相同的学号");
            return;
        }

3.4 实现查询功能

查询功能实现过程:
1、定义方法,在这里我们定义的方法名为showStudent
2、遍历学生对象,取出每位学生对象
3、输出每位学生对象

public static void showStudent() {
 System.out.println("学号\t姓名\t年龄\t地址\t");
        for (int i = 0; i < stus.size(); i++) {
            Student student = stus.get(i);
            System.out.println(student.getStuId() + "\t"
                    + student.getName() + "\t" + student.getAge() + "\t" +student.getAddress() + "\t");
        }
  }

我们在查询的时候可能会查询到不存在的学生对象,这时,我们就要有一个判断语句,来进行输出提示

        if (stus.size()==0) {
            System.out.println("对象集合中没有学生");
            return;
        }

3.5 实现删除功能

实现删除功能的过程:
1、定义方法,在这里我们定义的方法名为deleteStudent
2、获取用户从键盘中输入的学生学号
3、遍历学生对象,取出每位学生对象
4、确认是否有该学号,根据输入进来的学号与集合中的学号进行对比

public static void deleteStudent() {
        //删除学生 学号是唯一的 所以我们可以根据学号来进行删除
        System.out.println("请输入需要删除的学生学号");
        Scanner scanner = new Scanner(System.in);
        String stuId = scanner.nextLine();
        //先根据是否有这个学号 在进行删除
        for (int i = 0; i < stus.size(); i++) {
            Student student = stus.get(i);
            //根据输入进来的学号 与 集合中的学号 进行对比
            if (student.getStuId().equals(stuId)) {
                stus.remove(i);
                System.out.println("删除学生的学号:" + stuId + "成功!");
                return;
            }
        }
        //没有根据学号进行查找删除
        System.out.println("没有根据学号查找到删除的学生");
    }

3.6 实现修改功能

实现修改功能的过程:
1、定义方法,在这里我们定义的方法名为updateStudent
2、根据学号来进行查找修改
3、根据学号,查找学生对象里学号是否为空
4、给对象进行新的赋值

public static void updateStudent() {
        //修改学生 同样是根据学号来进行查找修改
        System.out.println("请输入需要修改的学生学号");
        Scanner scanner = new Scanner(System.in);
        String stuId = scanner.nextLine();
        //根据学号 查找学生对象
        Student student = getStuIdStudent(stuId);
        if (student==null) {
            System.out.println("从集合中没有查找到该学号对应的学生对象");
            return; // 不会向下执行
        }

        //能够执行到这里 说明这个对象是存在的 我们可以给对象进行新的赋值
        System.out.println("请输入需要修改的新名称:");
        String newName = scanner.nextLine();
        System.out.println("请输入需要修改的新地址:");
        String newAddress = scanner.nextLine();
        System.out.println("请输入需要修改的新年龄:");
        Integer newAge = scanner.nextInt();
        student.setName(newName);
        student.setAge(newAge);
        student.setAddress(newAddress);
        //修改了原来学生对象信息内容
        System.out.println("修改成功");
    }

四、完整代码

Student类

package com.gance.xyz.day15;

/**
 * @author 杰仔正在努力
 * @create 2022-11-25 11:17
 */
public class Student {
    private String stuId;
    private String name;
    private Integer age;
    private String address;

    public String getStuId() {
        return stuId;
    }

    public void setStuId(String stuId) {
        this.stuId = stuId;
    }

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

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

StudentMessage类

package com.gance.xyz.day15;

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

/**
 * @author 杰仔正在努力
 * @create 2022-11-25 11:26
 */
public class StudentMessage {

    private static ArrayList<Student> stus = new ArrayList<>();

    public static void main(String[] args) {

        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("请选择[1-5]");
            Scanner scanner = new Scanner(System.in);
            int number = scanner.nextInt();

            //判断用户输入哪一个数字 我们可以使用switch 或 if
            switch (number) {
                case 1:
                    System.out.println("1、新增学生");
                    addStudent();
                    break;
                case 2:
                    System.out.println("2、修改学生");
                    updateStudent();
                    break;
                case 3:
                    System.out.println("3、删除学生");
                    deleteStudent();
                    break;
                case 4:
                    System.out.println("4、查询学生");
                    showStudent();
                    break;
                case 5:
                    System.out.println("5、退出系统");
                    return;
            }
        }
    }

    /**
     * 新增学生
     */
    public static void addStudent() {

        //在这里 我们需要把数据类型相同的先进行键盘获取 否则会出现读取不了下一个数据提前结束获取
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入学生学号");
        String stuId = scanner.nextLine();

        //根据用户输入学号从集合中查询 如果存在的话 就不允许插入
        Student student = getStuIdStudent(stuId);
        if (student!=null) {
            System.out.println("该学号已经被" + student.getName() + "占用,不能够继续插入相同的学号");
            return;
        }

        System.out.println("请输入学生姓名");
        String name = scanner.nextLine();
        System.out.println("请输入学生地址");
        String address = scanner.nextLine();
        System.out.println("请输入学生年龄");
        int age = scanner.nextInt();

        //直接将学生的信息存入到集合中
        stus.add(new Student(stuId,name,age,address));
        //确认我们是否成功新增学生信息
        System.out.println("新增成功");
    }

    /**
     * 封装提供方法 就是根据学号查询 对象在集合中 学生信息
     * 如果我们能够在集合中查找到该学号 则进行返回
     */
    public static Student getStuIdStudent(String stuId) {
        for (int i = 0; i < stus.size(); i++) {
            Student student = stus.get(i);
            //用户录入的学号 与 集合中存在学生学号相同 则该学号已经被使用 不允许继续插入
            if (student.getStuId().equals(stuId)) {
                return student;
            }

        }
        return null;
    }

    /**
     * 查询学生
     */
    public static void showStudent() {
        if (stus.size()==0) {
            System.out.println("对象集合中没有学生");
            return;
        }
        //主要是为了更加美观
        System.out.println("学号\t姓名\t年龄\t地址\t");
        for (int i = 0; i < stus.size(); i++) {
            Student student = stus.get(i);
            System.out.println(student.getStuId() + "\t"
                    + student.getName() + "\t" + student.getAge() + "\t" +student.getAddress() + "\t");
        }
    }

    /**
     * 删除学生
     */
    public static void deleteStudent() {
        //删除学生 学号是唯一的 所以我们可以根据学号来进行删除
        System.out.println("请输入需要删除的学生学号");
        Scanner scanner = new Scanner(System.in);
        String stuId = scanner.nextLine();
        //先根据是否有这个学号 在进行删除
        for (int i = 0; i < stus.size(); i++) {
            Student student = stus.get(i);
            //根据输入进来的学号 与 集合中的学号 进行对比
            if (student.getStuId().equals(stuId)) {
                stus.remove(i);
                System.out.println("删除学生的学号:" + stuId + "成功!");
                return;
            }
        }
        //没有根据学号进行查找删除
        System.out.println("没有根据学号查找到删除的学生");
    }

    /**
     * 修改学生
     */
    public static void updateStudent() {
        //修改学生 同样是根据学号来进行查找修改
        System.out.println("请输入需要修改的学生学号");
        Scanner scanner = new Scanner(System.in);
        String stuId = scanner.nextLine();
        //根据学号 查找学生对象
        Student student = getStuIdStudent(stuId);
        if (student==null) {
            System.out.println("从集合中没有查找到该学号对应的学生对象");
            return; // 不会向下执行
        }

        //能够执行到这里 说明这个对象是存在的 我们可以给对象进行新的赋值
        System.out.println("请输入需要修改的新名称:");
        String newName = scanner.nextLine();
        System.out.println("请输入需要修改的新地址:");
        String newAddress = scanner.nextLine();
        System.out.println("请输入需要修改的新年龄:");
        Integer newAge = scanner.nextInt();
        student.setName(newName);
        student.setAge(newAge);
        student.setAddress(newAddress);
        //修改了原来学生对象信息内容
        System.out.println("修改成功");
    }
}

五、总结

该项目适合刚入门的同学来进行上手操作,这样子有利于提升我们的逻辑思维,也可以使我们更加的深入的理解我们所学习到的知识,能够巩固我们的知识,提高我们编写代码的能力

完整的代码中,我们还是可以把我们的代码进行整合,对我们的部分代码进行重构,比如说我们这个添加和删除功能都用到getStuIdStudent()方法,这里我们是可以进行重构的,在这里,我就不演示了,各位可以自己去尝试一下

  • 1
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值