利用键盘输入职工的姓名、性别、基本丁资、绩效工资,并把职工信息保存在文件中,然后按照职工总工资从高到低输出java
时间: 2023-12-19 17:24:24 浏览: 42
好的,这是一个涉及到文件操作和排序算法的问题,我可以给你提供一些思路和代码示例。
首先,我们需要定义一个职工类,包含姓名、性别、基本工资和绩效工资四个属性:
```java
public class Employee {
private String name;
private String gender;
private double baseSalary;
private double performanceSalary;
public Employee(String name, String gender, double baseSalary, double performanceSalary) {
this.name = name;
this.gender = gender;
this.baseSalary = baseSalary;
this.performanceSalary = performanceSalary;
}
public double getTotalSalary() {
return baseSalary + performanceSalary;
}
// 省略 getter 和 setter 方法
}
```
接下来,我们需要从键盘输入职工信息,创建职工对象,并把职工信息保存在文件中:
```java
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class EmployeeManager {
private List<Employee> employees = new ArrayList<>();
public void addEmployee() {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入职工姓名:");
String name = scanner.next();
System.out.print("请输入职工性别:");
String gender = scanner.next();
System.out.print("请输入职工基本工资:");
double baseSalary = scanner.nextDouble();
System.out.print("请输入职工绩效工资:");
double performanceSalary = scanner.nextDouble();
Employee employee = new Employee(name, gender, baseSalary, performanceSalary);
employees.add(employee);
try {
BufferedWriter writer = new BufferedWriter(new FileWriter("employees.txt", true));
writer.write(name + "," + gender + "," + baseSalary + "," + performanceSalary);
writer.newLine();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
注意:这里使用了 BufferedWriter 和 FileWriter 类来写入文件,其中 BufferedWriter 是对 FileWriter 的包装,可以提供缓冲区,提高写入效率。
最后,我们需要按照职工总工资从高到低排序,并输出结果:
```java
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Collections;
import java.util.Comparator;
public class EmployeeManager {
// 省略 addEmployee() 方法
public void sortEmployees() {
try {
BufferedReader reader = new BufferedReader(new FileReader("employees.txt"));
String line = null;
while ((line = reader.readLine()) != null) {
String[] fields = line.split(",");
String name = fields[0];
String gender = fields[1];
double baseSalary = Double.parseDouble(fields[2]);
double performanceSalary = Double.parseDouble(fields[3]);
Employee employee = new Employee(name, gender, baseSalary, performanceSalary);
employees.add(employee);
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
Collections.sort(employees, new Comparator<Employee>() {
@Override
public int compare(Employee e1, Employee e2) {
return Double.compare(e2.getTotalSalary(), e1.getTotalSalary());
}
});
for (Employee employee : employees) {
System.out.println(employee.getName() + "\t" + employee.getGender() + "\t" + employee.getTotalSalary());
}
}
}
```
这里使用了 Collections.sort() 方法来对职工列表进行排序,排序规则是按照职工总工资从高到低排序。
完整代码示例: