实现程序模拟简单的企业职工管理系统。请按继承层次构建企业的各种职工类型,包括超类Employee,以及相应的子类Manager、Secretary和Programmer,从Manager继承又可得到Executive。超类Employee有编号,姓名,年龄,薪金、地址和雇佣日期等信息。用户可以根据职工编号或职工姓名查找所需的信息。管理人员可以增加,删除数据;可以写入一个数据,查找一个数据,或删除一个数据;此外,管理人员可以增加或降低每个职工的薪金。程序通过ArrayList来实现增加,查找,删除数据;
针对现成的改一改就行:
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 方法。最后,提供了打印所有职工信息的方法。
接下来我们创建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);
}
}
}
}