使用Java做一个简易的学生管理系统

项目演示

用户输入数字实现对应功能。

控制台打印要一直死循环,直到用户输入数字5退出应用。

在这里插入图片描述

项目思路
  • 定义学生类
  • 主界面代码编写
  • 添加学生代码编写
  • 查看学生代码编写
  • 删除学生代码编写
  • 修改学生代码编写
创建学生类并生成相应代码

学生类添加成员变量:学号、姓名、年龄、居住地
生成构造方法:无参构造、带四个参数的构造
生成成员方法: 每个成员变量设置为私有变量,然后对应出get/set方法

idea生成构造函数和get/set方法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Student类代码

package com.cz.py;

public class Student {
    private int sid;
    private String name;
    private int age;
    private String address;

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

    public Student() {
    }

    public int getSid() {
        return sid;
    }

    public void setSid(int 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 getAddress() {
        return address;
    }

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

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

main方法代码(注释详细)

package com.cz.py;

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

public class runCode {
    public static void main(String[] args) {
        // 键盘输入对象
        Scanner sc = new Scanner(System.in);
        // 生成一个集合来存放学生对象<Student>为泛型,这个集合中只允许存在Student类的对象
        ArrayList<Student> stus = new ArrayList<>();
        // loop  循环标号  用于用户退出时结束死循环
        loop:
        // 死循环界面
        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("-------------------------------------");
            System.out.println("请输入你的选择:");
            // 获取用户输入选择的是哪个功能
            int input = sc.nextInt();
            // 添加switch循环,来分别处理逻辑
            switch (input) {
                case 1:
                    // 如果用户输入1  添加学生,调用添加学生的方法,传入学生对象集合
                    addStu(stus);
                    break;
                case 2:
                    // 如果用户输入2  删除学生,调用删除学生的方法,传入学生对象集合
                    removeStu(stus);
                    break;
                case 3:
                    // 与上面同理
                    updateStu(stus);
                    break;
                case 4:
                    getStu(stus);
                    break;
                case 5:
                    // 用户输入5退出应用,使用循环标号结束最外层的死循环,应用结束
                    System.out.println("谢谢使用!");
                    break loop;
            }
        }
    }


    public static void updateStu(ArrayList<Student> stus) {
        Scanner sc = new Scanner(System.in);
        // 获取用户输入要修改的学生学号
        System.out.println("请输入你要修改的学生的学号:");
        int stu_id = sc.nextInt();
        // 查询是否有该学生,如果有返回下标,否则返回-1
        int index = getStuIndex(stus, stu_id);
        if (index != -1) {
            // 根据下标在集合中查询出该学生对象
            Student stu = stus.get(index);

            // 获取用户输入的修改后的信息
            System.out.println("请输入学生的新姓名:");
            String stu_name = sc.next();
            System.out.println("请输入学生的新年龄:");
            int stu_age = sc.nextInt();
            System.out.println("请输入学生的新居住地:");
            String stu_address = sc.next();

            // 使用对象的set方法修改对象的值
            stu.setName(stu_name);
            stu.setAge(stu_age);
            stu.setAddress(stu_address);
            System.out.println("修改学生成功!");

        } else {
            // 如果是-1 则对象不存在
            System.out.println("输入有误!查无此人!");
        }

    }

    /**
     * 在集合内删除学生对象的方法
     *
     * @param stus 存放学生对象的集合
     */
    public static void removeStu(ArrayList<Student> stus) {
        Scanner sc = new Scanner(System.in);
        // 获取用户输入的要删除的学生的学号
        System.out.println("请输入你要删除学生的学号:");
        int stu_id = sc.nextInt();
        // 调用集合内是否有该学生的方法,如果有返回学生对象在集合内的下标没有返回-1
        int index = getStuIndex(stus, stu_id);
        // 如果getStuIndex方法返回值不为-1说明学生存在
        if (index != -1) {
            // 集合根据下标删除学生对象
            stus.remove(index);
            System.out.println("删除成功!");
        } else {
            // 如果为-1说明要删除的学生不存在
            System.out.println("要删除的学生不存在!");
        }

    }

    /**
     * 查询学生是否存在于stus集合中的方法,如果有返回下标,没有返回-1
     * @param stus 存放学生对象的集合
     * @param stu_id 用户输入的学生学号,删除、添加或者修改
     * @return 如果集合中存在用户输入的学号就返回对象在集合中的下标,如果 不存在返回-1
     */
    public static int getStuIndex(ArrayList<Student> stus, int stu_id) {
        // index变量最初假设没有为-1
        int index = -1;
        // 遍历集合查询集合对象中的学号如果等于用户输入的学号index等于该对象的下标
        for (int i = 0; i < stus.size(); i++) {
            Student stu = stus.get(i);
            int sid = stu.getSid();
            if (stu_id == sid) {
                index = i;
            }
        }
        return index;
    }

    public static void getStu(ArrayList<Student> stus) {
        // 如果存放学生对象的集合长度为0说明不存在数据
        if (stus.size() == 0) {
            System.out.println("暂无信息,请添加后再查看!");
            return;
        }
        // 遍历集合获取对象打印出对象信息
        System.out.println("学号" + "\t\t" + "姓名" + "\t\t" + "年龄" + "\t\t" + "居住地");
        for (int i = 0; i < stus.size(); i++) {
            Student stu = stus.get(i);
            System.out.println(stu.getSid() + "\t\t" + stu.getName() + "\t" + stu.getAge() + "岁" + "\t" + stu.getAddress());
        }
    }

    /**
     * 往集合内添加学生对象的方法
     *
     * @param stus 存放学生对象的集合
     */
    public static void addStu(ArrayList<Student> stus) {
        // 获取用户要添加的学生信息:学号、姓名、年龄、居住地
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入学生学号:");
        int sId = sc.nextInt();
        // 调用集合内是否有该学生的方法,如果有返回学生对象在集合内的下标没有返回-1
        int index = getStuIndex(stus, sId);
        // 如果getStuIndex返回的不是-1说明学生已存在
        if (index != -1) {
            System.out.println("添加的学号已存在,请重新输入!");
            return;
        }
        System.out.println("请输入学生姓名:");
        String sName = sc.next();
        System.out.println("请输入学生年龄:");
        int sAge = sc.nextInt();
        System.out.println("请输入学生居住地:");
        String sAddress = sc.next();
        // 创建一个学生对象  把用户输入的学号、姓名、年龄、地址等信息传入
        Student stu = new Student(sId, sName, sAge, sAddress);
        // 把创建好的学生对象放进stus集合内
        stus.add(stu);
        // 打印信息添加成功
        System.out.println("添加学生成功!");
    }
}


版权声明:本文为bjsyc123456原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
THE END
< <上一篇
下一篇>>