使用java编写一个教职工工资管理系统包括教师实验人员行政人员教师和兼职实验室人员以及教师和兼职行政人员该程序应能够从键盘输入任何员工的工资查询可以通过员工编号和员工姓名实现如果有员工因工作调动可以进行相应的删除操作。教师的工资是基本工资加课时费实验室人员的工资是基本工资加实验室补助行政人员的工资是基本工资加行政补贴教师和兼职实验室人员的工资是基本工资加上课时费加上实验室补助教师和兼职行政人员的工
由于题目比较复杂,需要考虑多个员工类型和计算公式,因此编写一个面向对象的程序能够更好地实现该功能。以下是一个简单的教职工工资管理系统的代码示例:
Employee.java
public abstract class Employee {
private String id;
private String name;
private double basicSalary;
public Employee(String id, String name, double basicSalary) {
this.id = id;
this.name = name;
this.basicSalary = basicSalary;
}
public String getId() {
return id;
}
public String getName() {
return name;
}
public double getBasicSalary() {
return basicSalary;
}
public abstract double getSalary();
}
Teacher.java
public class Teacher extends Employee {
private int teachingHours;
public Teacher(String id, String name, double basicSalary, int teachingHours) {
super(id, name, basicSalary);
this.teachingHours = teachingHours;
}
public int getTeachingHours() {
return teachingHours;
}
public void setTeachingHours(int teachingHours) {
this.teachingHours = teachingHours;
}
public double getSalary() {
return getBasicSalary() + teachingHours * 40;
}
}
LabStaff.java
public class LabStaff extends Employee {
private double labSubsidy;
public LabStaff(String id, String name, double basicSalary, double labSubsidy) {
super(id, name, basicSalary);
this.labSubsidy = labSubsidy;
}
public double getLabSubsidy() {
return labSubsidy;
}
public void setLabSubsidy(double labSubsidy) {
this.labSubsidy = labSubsidy;
}
public double getSalary() {
return getBasicSalary() + labSubsidy;
}
}
AdminStaff.java
public class AdminStaff extends Employee {
private double adminSubsidy;
public AdminStaff(String id, String name, double basicSalary, double adminSubsidy) {
super(id, name, basicSalary);
this.adminSubsidy = adminSubsidy;
}
public double getAdminSubsidy() {
return adminSubsidy;
}
public void setAdminSubsidy(double adminSubsidy) {
this.adminSubsidy = adminSubsidy;
}
public double getSalary() {
return getBasicSalary() + adminSubsidy;
}
}
TeacherLabStaff.java
public class TeacherLabStaff extends Employee {
private int teachingHours;
private double labSubsidy;
public TeacherLabStaff(String id, String name, double basicSalary, int teachingHours, double labSubsidy) {
super(id, name, basicSalary);
this.teachingHours = teachingHours;
this.labSubsidy = labSubsidy;
}
public int getTeachingHours() {
return teachingHours;
}
public void setTeachingHours(int teachingHours) {
this.teachingHours = teachingHours;
}
public double getLabSubsidy() {
return labSubsidy;
}
public void setLabSubsidy(double labSubsidy) {
this.labSubsidy = labSubsidy;
}
public double getSalary() {
return getBasicSalary() + teachingHours * 40 + labSubsidy;
}
}
TeacherAdminStaff.java
public class TeacherAdminStaff extends Employee {
private int teachingHours;
private double adminSubsidy;
public TeacherAdminStaff(String id, String name, double basicSalary, int teachingHours, double adminSubsidy) {
super(id, name, basicSalary);
this.teachingHours = teachingHours;
this.adminSubsidy = adminSubsidy;
}
public int getTeachingHours() {
return teachingHours;
}
public void setTeachingHours(int teachingHours) {
this.teachingHours = teachingHours;
}
public double getAdminSubsidy() {
return adminSubsidy;
}
public void setAdminSubsidy(double adminSubsidy) {
this.adminSubsidy = adminSubsidy;
}
public double getSalary() {
return getBasicSalary() + teachingHours * 40 + adminSubsidy;
}
}
SalaryManagementSystem.java
import java.util.ArrayList;
import java.util.Scanner;
public class SalaryManagementSystem {
private ArrayList<Employee> employeeList;
public SalaryManagementSystem() {
employeeList = new ArrayList<Employee>();
}
public void addEmployee(Employee employee) {
employeeList.add(employee);
}
public void deleteEmployee(String id) {
for (int i = 0; i < employeeList.size(); i++) {
Employee employee = employeeList.get(i);
if (employee.getId().equals(id)) {
employeeList.remove(i);
break;
}
}
}
public void searchEmployee(String keyword) {
boolean found = false;
for (Employee employee : employeeList) {
if (employee.getId().equals(keyword) || employee.getName().equals(keyword)) {
System.out.println(employee.getId() + "\t" + employee.getName() + "\t" + employee.getSalary());
found = true;
}
}
if (!found) {
System.out.println("No employee found.");
}
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
SalaryManagementSystem system = new SalaryManagementSystem();
Teacher teacher1 = new Teacher("T001", "Alice", 1000, 140);
teacher1.setTeachingHours(150);
system.addEmployee(teacher1);
LabStaff labStaff1 = new LabStaff("L001", "Bob", 850, 250);
system.addEmployee(labStaff1);
AdminStaff adminStaff1 = new AdminStaff("A001", "Charlie", 950, 350);
system.addEmployee(adminStaff1);
TeacherLabStaff teacherLabStaff1 = new TeacherLabStaff("TL001", "David", 1000, 140, 250);
teacherLabStaff1.setTeachingHours(160);
system.addEmployee(teacherLabStaff1);
TeacherAdminStaff teacherAdminStaff1 = new TeacherAdminStaff("TA001", "Eve", 1000, 140, 350);
teacherAdminStaff1.setTeachingHours(170);
system.addEmployee(teacherAdminStaff1);
while (true) {
System.out.println("1. Add employee");
System.out.println("2. Delete employee");
System.out.println("3. Search employee");
System.out.println("4. Exit");
System.out.print("Please select an option: ");
int option = scanner.nextInt();
scanner.nextLine(); // consume the newline character
if (option == 1) {
System.out.print("Enter employee type (T/L/A/TL/TA): ");
String type = scanner.nextLine();
System.out.print("Enter employee ID: ");
String id = scanner.nextLine();
System.out.print("Enter employee name: ");
String name = scanner.nextLine();
System.out.print("Enter basic salary: ");
double basicSalary = scanner.nextDouble();
scanner.nextLine(); // consume the newline character
if (type.equals("T")) {
System.out.print("Enter teaching hours: ");
int teachingHours = scanner.nextInt();
scanner.nextLine(); // consume the newline character
Teacher teacher = new Teacher(id, name, basicSalary, teachingHours);
system.addEmployee(teacher);
} else if (type.equals("L")) {
System.out.print("Enter lab subsidy: ");
double labSubsidy = scanner.nextDouble();
scanner.nextLine(); // consume the newline character
LabStaff labStaff = new LabStaff(id, name, basicSalary, labSubsidy);
system.addEmployee(labStaff);
} else if (type.equals("A")) {
System.out.print("Enter admin subsidy: ");
double adminSubsidy = scanner.nextDouble();
scanner.nextLine(); // consume the newline character
AdminStaff adminStaff = new AdminStaff(id, name, basicSalary, adminSubsidy);
system.addEmployee(adminStaff);
} else if (type.equals("TL")) {
System.out.print("Enter teaching hours: ");
int teachingHours = scanner.nextInt();
scanner.nextLine(); // consume the newline character
System.out.print("Enter lab subsidy: ");
double labSubsidy = scanner.nextDouble();
scanner.nextLine(); // consume the newline character
TeacherLabStaff teacherLabStaff = new TeacherLabStaff(id, name, basicSalary, teachingHours, labSubsidy);
system.addEmployee(teacherLabStaff);
} else if (type.equals("TA")) {
System.out.print("Enter teaching hours: ");
int teachingHours = scanner.nextInt();
scanner.nextLine(); // consume the newline character
System.out.print("Enter admin subsidy: ");
double adminSubsidy = scanner.nextDouble();
scanner.nextLine(); // consume the newline character
TeacherAdminStaff teacherAdminStaff = new TeacherAdminStaff(id, name, basicSalary, teachingHours, adminSubsidy);
system.addEmployee(teacherAdminStaff);
} else {
System.out.println("Invalid employee type.");
}
} else if (option == 2) {
System.out.print("Enter employee ID: ");
String id = scanner.nextLine();
system.deleteEmployee(id);
} else if (option == 3) {
System.out.print("Enter search keyword: ");
String keyword = scanner.nextLine();
system.searchEmployee(keyword);
} else if (option == 4) {
break;
} else {
System.out.println("Invalid option.");
}
System.out.println();
}
scanner.close();
}
}
在代码中,我们定义了一个抽象类Employee作为所有员工的基类,其中包含了员工的ID、姓名和基本工资。每个员工类型都继承了Employee类,并实现了自己的getSalary方法以计算工资。
SalaryManagementSystem类用于管理所有员工,包括添加、删除和搜索员工的功能。在该类的main方法中,我们实例化了几个不同类型的员工,并将它们添加到管理系统中。接下来,我们使用一个循环来接受用户的输入,并根据用户选择的不同选项来执行相应的操作。在处理添加员工的选项时,我们需要根据员工类型的不同,分别向用户询问额外的信息,并实例化相应的员工类型
原文地址: https://www.cveoy.top/t/topic/hqa5 著作权归作者所有。请勿转载和采集!