Java 学生管理系统(黑马程序员)

步骤1:分析项目,b站链接:业务分析并搭建主菜单

步骤2:建StudentSystem包。

步骤3:编写StudentSystem和Student类。

代码:

StudentSystem类:

package StudentSystem;
import java.util.*;

public class StudentSystem {
    public static void main(String[] args) {
        ArrayList<Student> list = new ArrayList<>();

        //打印菜单
        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("请输入您的选择:");

            Scanner sc = new Scanner(System.in);
            String choose = sc.next();

            switch (choose){
                case "1" : { addStudent(list); break;}
                case "2" : { deleteStudent(list); break;}
                case "3" : { updateStudent(list); break;}
                case "4" : { queryStudent(list); break;}
                case "5" : {
                    System.out.println("退出");
                    break loop;
                }
                default : System.out.println("没有这个选项");break;
            }
        }

    }

    //增
    public static void addStudent(ArrayList<Student> list){
        System.out.println("添加学生");
        Scanner sc = new Scanner(System.in);

        String id = null;
        while (true) {
            System.out.println("请输入学生id");
            id = sc.next();
            boolean flag = contains(list, id);

            //true表示id已经存在
            if(flag) System.out.println("id已经存在,请重新输入");
            else break;
        }

        System.out.println("请输入学生姓名");
        String name = sc.next();

        System.out.println("请输入学生年龄");
        int age = sc.nextInt();

        System.out.println("请输入学生家庭住址");
        String address = sc.next();

        Student stu = new Student(id, name, age, address);

        list.add(stu);

        System.out.println("添加成功");
    }

    //删
    public static void deleteStudent(ArrayList<Student> list){
        System.out.println("删除学生");
        System.out.println("请输入要删除的id");

        Scanner sc = new Scanner(System.in);
        String id = sc.next();

        //id合法。删除
        if(getIndex(list, id) >= 0){
            list.remove(getIndex(list, id));
            System.out.println("id为" + id +"的学生删除成功");
        }
        //否则返回初始菜单
        else System.out.println("id不存在,删除失败");
    }

    //改
    public static void updateStudent(ArrayList<Student> list){
        System.out.println("修改学生");
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入需要修改的学生id");
        String id = sc.next();
        //获取id在list的下标
        int index = getIndex(list, id);
        //判断id是否合法,
        if(index < 0) {
            System.out.println("id不存在,修改失败");
            return;
        }
        //获取修改对象
        Student stu = list.get(index);
        System.out.println("请输入学生姓名");
        String newName = sc.next();
        stu.setName(newName);

        System.out.println("请输入学生年龄");
        int newAge = sc.nextInt();
        stu.setAge(newAge);

        System.out.println("请输入学生家庭住址");
        String newAddress = sc.next();
        stu.setAddress(newAddress);

        System.out.println("id为" +id+ "的学生信息修改成功");
    }

    //查
    public static void queryStudent(ArrayList<Student> list){
        System.out.println("查询学生");

        if(list.size() == 0) {
            System.out.println("当前无学生信息,请添加后再查询");
            return;
        }

        System.out.println("id\t姓名\t\t年龄\t\t家庭住址");  // \t制表符
        for (int i = 0; i < list.size(); i++) {
            Student stu = list.get(i);
            System.out.println(stu.getId() +"\t"+ stu.getName() +"\t\t"+ stu.getAge() +"\t\t"+ stu.getAddress());

        }
    }

    //判断id是否唯一
    public static boolean contains(ArrayList<Student> list, String id){
        /*for (int i = 0; i < list.size(); i++) {
            Student stu = list.get(i);
            if(stu.getId().equals(id)) return true;
        }
        return false;*/
        return getIndex(list,id) >= 0; //true表示id已经存在
    }

    //查询id下标
    public static int getIndex(ArrayList<Student> list, String id){
        for (int i = 0; i < list.size(); i++) {
            Student stu = list.get(i);
            //找到下标就返回
            if(stu.getId().equals(id)) return i;
        }
        return -1;
    }
}

Student类:

package StudentSystem;

public class Student {
    private String id;
    private String name;
    private int age;
    private String address; // 家庭住址


    public Student() { //空参构造
    }

    public Student(String id, String name, int age, String address) {//全参构造
        this.id = id;
        this.name = name;
        this.age = age;
        this.address = address;
    }

    public String getId() {
        return id;
    }

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值