Java实现员工管理系统

 员工管理系统实现起来还是比较简单的,建一个员工类,里面包含员工的工号、姓名、年龄、性别和专业属性

public class Staff {
    private int id;
    private String name;
    private int age;
    private String sex;
    private String specialty;

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

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

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

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }
    public String getSpecialty() {
        return specialty;
    }
    public void setSpecialty(String specialty) {
        this.specialty = specialty;
    }
}

设置完员工的属性后,需要存储员工的信息,我用的是ArrayList动态数组存储员工信息

ArrayList动态数组还是比较强大的,它不像数组要定义数组的长度,并且它的操作性很强,自带许多的方法,例如add()、clear()、get()...

public class StaffManager {
    public static void main(String[] args) {
        ArrayList<Staff> array = new ArrayList<>();
        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 line = sc.nextLine();
            switch (line) {
                case "1":
                    System.out.println("添加员工");
                    add(array);
                    break;
                case "2":
                    delete(array);
                    break;
                case "3":
                    update(array);
                    break;
                case "4":
                    find(array);
                    break;
                case "5":
                    System.out.println("谢谢使用");
                    System.exit(0);
            }
        }
    }
    public static void add(ArrayList<Staff> array) {
        Scanner sc = new Scanner(System.in);
        String id;

        while (true) {
            System.out.println("请输入员工号:");
            id = sc.nextLine();

            boolean flag = isUsed(array, id);
            if (flag) {
                System.out.println("你输入的员工号已经被使用,请重新输入");
            } else {
                break;
            }
        }

        System.out.println("请输入员工姓名:");
        String name = sc.nextLine();
        System.out.println("请输入员工年龄:");
        String age = sc.nextLine();
        System.out.println("请输入员工性别:");
        String sex = sc.nextLine();
        System.out.println("请输入员工专业:");
        String specialty = sc.nextLine();
        Staff s = new Staff();
        s.setId(Integer.parseInt(id));
        s.setName(name);
        s.setAge(Integer.parseInt(age));
        s.setSex(sex);
        s.setSpecialty(specialty);
        array.add(s);
        System.out.println("添加员工成功");
    }
    public static boolean isUsed(ArrayList<Staff> array, String id) {
        boolean flag = false;

        for (int i = 0; i < array.size(); i++) {
            Staff s = array.get(i);
            if (s.getId()==Integer.parseInt(id)) {
                flag = true;
                break;
            }
        }
        return flag;
    }
    public static void find(ArrayList<Staff> array) {
        if (array.size() == 0) {
            System.out.println("无信息,请先添加信息再查询");
        } else {
            System.out.println("员工号\t\t姓名\t\t\t\t年龄\t\t\t\t\t性别\t\t\t\t\t专业");
            for (int i = 0; i < array.size(); i++) {
                Staff s = array.get(i);
                System.out.println(s.getId() + "\t\t\t" + s.getName() + "\t\t\t\t" + s.getAge() + "岁\t\t\t\t" + s.getSex()+"\t\t\t\t"+s.getSpecialty());
            }
        }
    }
    public static void delete(ArrayList<Staff> array) {
        Scanner sc = new Scanner(System.in);

        System.out.println("请输入你要删除的员工号:");
        String id = sc.nextLine();

        int index = -1;

        for (int i = 0; i < array.size(); i++) {
            Staff s = array.get(i);
            if (s.getId()==(Integer.parseInt(id))) {
                index = i;
                break;
            }
        }

        if (index == -1) {
            System.out.println("该员工不存在,请重新输入");
        } else {
            array.remove(index);

            System.out.println("删除成功");
        }
    }
    public static void update(ArrayList<Staff> array) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你要修改的员工号:");
        String id = sc.nextLine();

        int index = -1;
        for (int i = 0; i < array.size(); i++) {
            Staff staff = array.get(i);
            if (staff.getId()==(Integer.parseInt(id))) {
                index = i;
                break;
            }
        }
        if (index == -1) {
            System.out.println("该员工不存在,请重新输入");
        } else {
            System.out.println("请输入员工新的姓名:");
            String name = sc.nextLine();
            System.out.println("请输入员工新的年龄:");
            String age = sc.nextLine();
            System.out.println("请输入员工新的性别:");
            String sex = sc.nextLine();
            System.out.println("请输入员工新的专业:");
            String specialty = sc.nextLine();
            Staff s = new Staff();
            s.setId(Integer.parseInt(id));
            s.setName(name);
            s.setAge(Integer.parseInt(age));
            s.setSex(sex);
            s.setSpecialty(specialty);
            array.set(index, s);
            System.out.println("修改员工信息成功");
        }
    }
}
后面对员工信息的增添删改都是对动态数组的一个操作

我谈下我对动态数组的一个理解吧,纯属个人观点,如有误还请指点

普通的一维数组,例如int[ ]、String[ ]、char[ ] 这些数组,在使用前这个数组的长度已经是定下来了无法改变得。就像建房子一样,这房子只有一层并且它的长度也不能扩大,所以里面的房间数量也是一个定值,这里的房间数量也就是数组的长度。

而动态数组,像我们这里的动态数组里面存放的是Staff类,而Staff类有五个属性,那么也就是把动态数组的长度给定下来了,就是一层楼也只有五个房间,但是它与普通的一维数组不同,它能够增加它的高度

 

 也就是像这样一样,它的宽度不能变,但是它的高度能根据需要而增加或减少,所以它才叫动态数组

猜你喜欢

转载自blog.csdn.net/weixin_54284906/article/details/125218595