在工资支付系统中,雇员的记录由:雇员号(int)、姓名(String)、地址(String)和工资(double)组成。编写一个程序完成雇员记录的添加、修改、删除、查询功能。要求在系统退出时将系统所有的雇员记录写入文件中;在下次进入系统时,从该文件中恢复雇员信息。 思路提示: 1)、建立一个可序列化的雇员类,类的属性包括:雇员号(int)、姓名(String)、地址(String)和工资(double)。类的方法:构造函数、设置和读取各数据成员的方法。 2)、 建立一个管理雇员记录的操作类。 类的数据成员:用于存放全部雇员记录的数组(使用集合); 类的方法:构造函数(创建集合对象,从文件中读全部雇员对象到集合中); 完成雇员记录的添加、修改、删除、查询的四个方法(对集合进行)。 定义写方法:将集合中所有雇员记录保留到文件中。 3)、 编写测试代码,测试上述功能。
时间: 2024-03-27 21:36:29 浏览: 141
做一个工资管理系统,要能按照姓名和卡号查找员工的工资信息,以及员工工资信息的插入,删除同时这些信息要存txt
5星 · 资源好评率100%
好的,以下是代码实现:
1. 雇员类 Employee.java
```java
import java.io.Serializable;
public class Employee implements Serializable {
private int id;
private String name;
private String address;
private double salary;
public Employee(int id, String name, String address, double salary) {
this.id = id;
this.name = name;
this.address = address;
this.salary = salary;
}
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 String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
}
```
2. 雇员记录管理类 EmployeeManager.java
```java
import java.io.*;
import java.util.ArrayList;
import java.util.List;
public class EmployeeManager {
private List<Employee> employeeList;
public EmployeeManager() {
this.employeeList = new ArrayList<>();
readEmployeesFromFile();
}
// 添加雇员记录
public void addEmployee(Employee employee) {
employeeList.add(employee);
saveEmployeesToFile();
}
// 修改雇员记录
public void updateEmployee(Employee employee) {
for (int i = 0; i < employeeList.size(); i++) {
if (employeeList.get(i).getId() == employee.getId()) {
employeeList.set(i, employee);
saveEmployeesToFile();
break;
}
}
}
// 删除雇员记录
public void deleteEmployee(int id) {
employeeList.removeIf(employee -> employee.getId() == id);
saveEmployeesToFile();
}
// 查询雇员记录
public Employee getEmployeeById(int id) {
for (Employee employee : employeeList) {
if (employee.getId() == id) {
return employee;
}
}
return null;
}
// 读取雇员记录
private void readEmployeesFromFile() {
try (ObjectInputStream in = new ObjectInputStream(new FileInputStream("employees.dat"))) {
employeeList = (ArrayList<Employee>) in.readObject();
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
}
// 写入雇员记录
private void saveEmployeesToFile() {
try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("employees.dat"))) {
out.writeObject(employeeList);
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
3. 测试代码 Test.java
```java
public class Test {
public static void main(String[] args) {
EmployeeManager employeeManager = new EmployeeManager();
// 添加雇员记录
employeeManager.addEmployee(new Employee(1, "张三", "北京市", 2000));
employeeManager.addEmployee(new Employee(2, "李四", "上海市", 3000));
employeeManager.addEmployee(new Employee(3, "王五", "广州市", 4000));
// 查询雇员记录
System.out.println(employeeManager.getEmployeeById(2).getName());
// 修改雇员记录
Employee employee = employeeManager.getEmployeeById(1);
employee.setName("赵六");
employeeManager.updateEmployee(employee);
// 删除雇员记录
employeeManager.deleteEmployee(3);
}
}
```
这个程序先创建一个 `EmployeeManager` 对象,然后通过该对象来添加、修改、删除和查询雇员记录。程序运行时,如果存在 `employees.dat` 文件,则会从该文件中读取雇员记录;如果不存在,则会创建一个新的文件。每次添加、修改、删除和查询雇员记录后,都会将所有的雇员记录保存到 `employees.dat` 文件中。
阅读全文