Java 程序:解析员工文件,查找员工信息并计算周年纪念日
以下是一个使用 Java 编写的程序,它读取当前目录下的所有员工文件,解析出员工信息并存入 Map。然后,用户输入员工姓名,程序将查找员工信息并输出姓名、年龄、工资和入职 20 周年纪念日当周的周六日期。
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
class Emp {
private String name;
private int age;
private int salary;
private Date hireDate;
public Emp(String name, int age, int salary, Date hireDate) {
this.name = name;
this.age = age;
this.salary = salary;
this.hireDate = hireDate;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public int getSalary() {
return salary;
}
public Date getHireDate() {
return hireDate;
}
}
public class EmployeeProgram {
private static Map<String, Emp> employeeMap = new HashMap<>();
public static void main(String[] args) {
readEmployeeFiles();
Scanner scanner = new Scanner(System.in);
System.out.print("请输入员工名字:");
String name = scanner.nextLine();
Emp employee = employeeMap.get(name);
if (employee != null) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String hireDateString = dateFormat.format(employee.getHireDate());
System.out.println(employee.getName() + "," + employee.getAge() + "," + employee.getSalary() + "," + hireDateString);
Calendar calendar = Calendar.getInstance();
calendar.setTime(employee.getHireDate());
calendar.add(Calendar.YEAR, 20);
calendar.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);
String anniversaryDate = dateFormat.format(calendar.getTime());
System.out.println('入职20周年纪念日派对日期: ' + anniversaryDate);
} else {
System.out.println('查无此人');
}
}
private static void readEmployeeFiles() {
File currentDirectory = new File(".");
File[] files = currentDirectory.listFiles();
if (files != null) {
for (File file : files) {
if (file.isFile() && file.getName().endsWith(".txt")) {
parseEmployeeFile(file);
}
}
}
}
private static void parseEmployeeFile(File file) {
try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
String line;
while ((line = reader.readLine()) != null) {
String[] parts = line.split(",");
if (parts.length == 4) {
String name = parts[0].trim();
int age = Integer.parseInt(parts[1].trim());
int salary = Integer.parseInt(parts[2].trim());
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date hireDate = dateFormat.parse(parts[3].trim());
Emp employee = new Emp(name, age, salary, hireDate);
employeeMap.put(name, employee);
}
}
} catch (IOException | ParseException e) {
e.printStackTrace();
}
}
}
请将此代码保存为EmployeeProgram.java文件并编译运行。程序会读取当前目录下的所有以.txt结尾的员工文件,并将员工信息解析为Emp对象存入employeeMap中。然后,程序会要求用户输入一个员工名字,若该员工存在,则输出该员工的名字、年龄、工资,以及入职20周年纪念日当周的周六的日期。若该员工不存在,则输出'查无此人'。
原文地址: https://www.cveoy.top/t/topic/o02g 著作权归作者所有。请勿转载和采集!