如何实现程序模拟简单的企业职工管理系统?

实现程序模拟简单的企业职工管理系统。请按继承层次构建企业的各种职工类型,包括超类Employee,以及相应的子类Manager、Secretary和Programmer,从Manager继承又可得到Executive。超类Employee有编号,姓名,年龄,薪金、地址和雇佣日期等信息。用户可以根据职工编号或职工姓名查找所需的信息。管理人员可以增加,删除数据;可以写入一个数据,查找一个数据,或删除一个数据;此外,管理人员可以增加或降低每个职工的薪金。程序通过ArrayList来实现增加,查找,删除数据;

针对现成的改一改就行:

img

import java.util.ArrayList;

class Employee {
    int id;
    String name;
    int age;
    float salary;
    String address;
    String hireDate;

    public Employee(int id, String name, int age, float salary, String address, String hireDate) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.salary = salary;
        this.address = address;
        this.hireDate = hireDate;
    }

    public void increaseSalary(float amount) {
        salary += amount;
    }

    public void decreaseSalary(float amount) {
        salary -= amount;
    }
}

class Manager extends Employee {
    String department;

    public Manager(int id, String name, int age, float salary, String address, String hireDate, String department) {
        super(id, name, age, salary, address, hireDate);
        this.department = department;
    }
}

class Secretary extends Employee {
    String boss;

    public Secretary(int id, String name, int age, float salary, String address, String hireDate, String boss) {
        super(id, name, age, salary, address, hireDate);
        this.boss = boss;
    }
}

class Programmer extends Employee {
    String language;

    public Programmer(int id, String name, int age, float salary, String address, String hireDate, String language) {
        super(id, name, age, salary, address, hireDate);
        this.language = language;
    }
}

class Executive extends Manager {
    String title;

    public Executive(int id, String name, int age, float salary, String address, String hireDate, String department, String title) {
        super(id, name, age, salary, address, hireDate, department);
        this.title = title;
    }
}

class Management {
    ArrayList<Employee> employees;

    public Management() {
        employees = new ArrayList<>();
    }

    public void addEmployee(Employee e) {
        employees.add(e);
    }

    public void removeEmployee(Employee e) {
        employees.remove(e);
    }

    public Employee findEmployeeById(int id) {
        for (Employee e : employees) {
            if (e.id == id) {
                return e;
            }
        }
        return null;
    }

    public Employee findEmployeeByName(String name) {
        for (Employee e : employees) {
            if (e.name.equals(name)) {
                return e;
            }
        }
        return null;
    }

    public void increaseSalary(Employee e, float amount) {
        e.increaseSalary(amount);
    }

    public void decreaseSalary(Employee e, float amount) {
        e.decreaseSalary(amount);
    }
}

public class Main {
    public static void main(String[] args) {
        Management management = new Management();
        Employee employee1 = new Employee(1, "John Doe", 30, 50000, "123 Main St", "01/01/2020");
        Employee employee2 = new Employee(2, "Jane Smith", 25, 40000, "456 Oak St", "02/01/2020");
        Manager manager1 = new Manager(3, "Bob Johnson", 35, 60000, "789 Pine St", "03/01/2020", "Sales");
        Secretary secretary1 = new Secretary(4, "Sue Davis", 28, 35000, "321 Elm St", "04/01/2020", "Bob Johnson");
        Programmer programmer1 = new Programmer(5, "Tom Wilson", 40, 70000, "654 Maple St", "05/01/2020", "Java");
        Executive executive1 = new Executive(6, "Alice Lee", 45, 80000, "987 Cedar St", "06/01/2020", "Marketing", "VP");

        management.addEmployee(employee1);
        management.addEmployee(employee2);
        management.addEmployee(manager1);
        management.addEmployee(secretary1);
        management.addEmployee(programmer1);
        management.addEmployee(executive1);

        System.out.println("Find employee by ID:");
        Employee foundEmployee = management.findEmployeeById(3);
        if (foundEmployee != null) {
            System.out.println("Found employee: " + foundEmployee.name);
        } else {
            System.out.println("Employee not found.");
        }

        System.out.println("Find employee by name:");
        foundEmployee = management.findEmployeeByName("Sue Davis");
        if (foundEmployee != null) {
            System.out.println("Found employee: " + foundEmployee.name);
        } else {
            System.out.println("Employee not found.");
        }

        System.out.println("Increase employee's salary:");
        Employee employeeToIncrease = management.findEmployeeById(1);
        if (employeeToIncrease != null) {
            System.out.println("Current salary: " + employeeToIncrease.salary);
            management.increaseSalary(employeeToIncrease, 10000);
            System.out.println("New salary: " + employeeToIncrease.salary);
        } else {
            System.out.println("Employee not found.");
        }

        System.out.println("Decrease employee's salary:");
        Employee employeeToDecrease = management.findEmployeeByName("Jane Smith");
        if (employeeToDecrease != null) {
            System.out.println("Current salary: " + employeeToDecrease.salary);
            management.decreaseSalary(employeeToDecrease, 5000);
            System.out.println("New salary: " + employeeToDecrease.salary);
        } else {
            System.out.println("Employee not found.");
        }
        System.out.println("Remove employee:");
        Employee employeeToRemove = management.findEmployeeById(5);
        if (employeeToRemove != null) {
            management.removeEmployee(employeeToRemove);
            System.out.println("Employee removed.");
        } else {
            System.out.println("Employee not found.");
        }
    }
}


以下回答来自chatgpt
以下是 Java 实现企业职工管理系统的代码,使用了继承和 ArrayList 数据结构:

Employee.java

public class Employee {
    private int id;
    private String name;
    private int age;
    private double salary;
    private String address;
    private String hireDate;

    public Employee(int id, String name, int age, double salary, String address, String hireDate) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.salary = salary;
        this.address = address;
        this.hireDate = hireDate;
    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public double getSalary() {
        return salary;
    }

    public String getAddress() {
        return address;
    }

    public String getHireDate() {
        return hireDate;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }

    @Override
    public String toString() {
        return "Employee{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", salary=" + salary +
                ", address='" + address + '\'' +
                ", hireDate='" + hireDate + '\'' +
                '}';
    }
}

Manager.java

public class Manager extends Employee {
    private String department;

    public Manager(int id, String name, int age, double salary, String address, String hireDate, String department) {
        super(id, name, age, salary, address, hireDate);
        this.department = department;
    }

    public String getDepartment() {
        return department;
    }

    @Override
    public String toString() {
        return "Manager{" +
                "id=" + getId() +
                ", name='" + getName() + '\'' +
                ", age=" + getAge() +
                ", salary=" + getSalary() +
                ", address='" + getAddress() + '\'' +
                ", hireDate='" + getHireDate() + '\'' +
                ", department='" + department + '\'' +
                '}';
    }
}

Secretary.java

public class Secretary extends Employee {
    private String boss;

    public Secretary(int id, String name, int age, double salary, String address, String hireDate, String boss) {
        super(id, name, age, salary, address, hireDate);
        this.boss = boss;
    }

    public String getBoss() {
        return boss;
    }

    @Override
    public String toString() {
        return "Secretary{" +
                "id=" + getId() +
                ", name='" + getName() + '\'' +
                ", age=" + getAge() +
                ", salary=" + getSalary() +
                ", address='" + getAddress() + '\'' +
                ", hireDate='" + getHireDate() + '\'' +
                ", boss='" + boss + '\'' +
                '}';
    }
}

Programmer.java

public class Programmer extends Employee {
    private String language;

    public Programmer(int id, String name, int age, double salary, String address, String hireDate, String language) {
        super(id, name, age, salary, address, hireDate);
        this.language = language;
    }

    public String getLanguage() {
        return language;
    }

    @Override
    public String toString() {
        return "Programmer{" +
                "id=" + getId() +
                ", name='" + getName() + '\'' +
                ", age=" + getAge() +
                ", salary=" + getSalary() +
                ", address='" + getAddress() + '\'' +
                ", hireDate='" + getHireDate() + '\'' +
                ", language='" + language + '\'' +
                '}';
    }
}

Executive.java

public class Executive extends Manager {
    private double bonus;

    public Executive(int id, String name, int age, double salary, String address, String hireDate, String department, double bonus) {
        super(id, name, age, salary, address, hireDate, department);
        this.bonus = bonus;
    }

    public double getBonus() {
        return bonus;
    }

    @Override
    public String toString() {
        return "Executive{" +
                "id=" + getId() +
                ", name='" + getName() + '\'' +
                ", age=" + getAge() +
                ", salary=" + getSalary() +
                ", address='" + getAddress() + '\'' +
                ", hireDate='" + getHireDate() + '\'' +
                ", department='" + getDepartment() + '\'' +
                ", bonus=" + bonus +
                '}';
    }
}

EmployeeManager.java

import java.util.ArrayList;

public class EmployeeManager {
    private ArrayList<Employee> employees;

    public EmployeeManager() {
        employees = new ArrayList<>();
    }

    public void addEmployee(Employee employee) {
        employees.add(employee);
    }

    public void removeEmployee(Employee employee) {
        employees.remove(employee);
    }

    public Employee findEmployeeById(int id) {
        for (Employee employee : employees) {
            if (employee.getId() == id) {
                return employee;
            }
        }
        return null;
    }

    public Employee findEmployeeByName(String name) {
        for (Employee employee : employees) {
            if (employee.getName().equals(name)) {
                return employee;
            }
        }
        return null;
    }

    public void increaseSalary(Employee employee, double amount) {
        employee.setSalary(employee.getSalary() + amount);
    }

    public void decreaseSalary(Employee employee, double amount) {
        employee.setSalary(employee.getSalary() - amount);
    }

    public void printAllEmployees() {
        for (Employee employee : employees) {
            System.out.println(employee);
        }
    }
}

在 EmployeeManager 类中,使用 ArrayList 存储职工信息,提供了增加、删除、查找、修改职工信息的方法。其中,增加和删除职工信息使用了 ArrayList 的 add 和 remove 方法,查找职工信息使用了循环遍历 ArrayList,修改职工薪资使用了 Employee 类中的 setSalary 方法。最后,提供了打印所有职工信息的方法。

  • 这篇博客: 集合ArrayList源码,添加数据过程(末尾有一些常见面试题)中的 我讲解该代码会从添加数据作为讲解源码的入口,为大家开始讲解,我开始会把讲解源码需要用到的代码快先一一提取出来说明,,说明完了后面才开始正式讲解,前面可以简单看一下后面跟着我的节奏去感受代码的魅力吧。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 以下回答由chatgpt基于相关博客总结生成:

    接下来我们创建Manager、Secretary和Programmer三个子类和Executive子类。 接下来展示Manager子类的代码实现,其他子类和超类的代码实现请自行完成。

    public class Manager extends Employee {
    
        private double bonus;
    
        public Manager(String mName, double mSalary, int year, int month, int day) {
            super(mName, mSalary, year, month, day);
            bonus = 0;
        }
    
        public double getSalary() {
            double baseSalary = super.getSalary();
            return baseSalary + bonus;
        }
    
        public void setBonus(double bonus) {
            this.bonus = bonus;
        }
    }
    

    段落2:添加功能 我们需要实现查找,增加,删除数据等功能,先写一个接口来表示这些操作:

    public interface IEmployeeManager {
    
        // 增加职工
        void addEmployee(Employee employee);
    
        // 删除职工
        boolean deleteEmployee(int id);
    
        // 修改职工信息
        boolean modifyEmployee(Employee employee);
    
        // 查找职工
        Employee findEmployee(int id);
    
        // 查找所有职工
        ArrayList<Employee> getAllEmployees();
    
        // 增加薪水
        void addSalary(int id,double money);
    
    }
    

    这里有些基本的CRUD操作,对于ArrayList来说,我们可以直接调用add、remove、set方法实现增加、 删除、修改操作;对于查找操作,我们可以使用for循环语句来查找指定编号的职工,这里使用迭代器遍历集合。

    import java.time.LocalDate;
    import java.util.ArrayList;
    import java.util.Iterator;
    
    public class EmployeeManager implements IEmployeeManager {
    
        private ArrayList<Employee> employees; // 职工列表
    
        public EmployeeManager() {
            employees = new ArrayList<>();
        }
    
        // 增加职工
        @Override
        public void addEmployee(Employee employee) {
            employees.add(employee);
        }
    
        // 删除职工
        @Override
        public boolean deleteEmployee(int id) {
            Iterator<Employee> it = employees.iterator(); // 获取迭代器
            while (it.hasNext()) {
                Employee employee = it.next();
                if (employee.getId() == id) {
                    it.remove();
                    return true;
                }
            }
            return false;
        }
    
        // 修改职工信息
        @Override
        public boolean modifyEmployee(Employee employee) {
            for (int i = 0; i < employees.size(); i++) {
                if (employees.get(i).getId() == employee.getId()) {
                    employees.set(i, employee);
                    return true;
                }
            }
            return false;
        }
    
        // 查找职工
        @Override
        public Employee findEmployee(int id) {
            for (Employee employee : employees) {
                if (employee.getId() == id) {
                    return employee;
                }
            }
            return null;
        }
    
        // 查找所有职工
        @Override
        public ArrayList<Employee> getAllEmployees() {
            return employees;
        }
    
        // 增加薪水
        @Override
        public void addSalary(int id, double money) {
            for (Employee employee : employees) {
                if (employee.getId() == id) {
                    employee.raiseSalary(money);
                }
            }
        }
    }