Java考勤程序实现每日日期命名文件存储考勤记录咨询
Java考勤程序添加文件保存功能解决方案
以下是优化后的完整代码,既实现了每日生成以当日日期命名的文件存储考勤记录的需求,还简化了原代码中重复的考勤录入逻辑:
import java.util.*; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.nio.file.Files; import java.nio.file.Paths; import java.nio.charset.StandardCharsets; import java.io.IOException; public class AttendanceRecorder { // 存储学生名单,替代原有的单个变量,更易维护 private static final List<String> STUDENTS = Arrays.asList( "Student 1", "Student 2", "Student 3", "Student 4", "Student 5", "Student 6", "Student 7", "Student 8", "Student 9" ); // 指定考勤记录存储的文件夹,可修改为你需要的路径 private static final String RECORD_FOLDER = "attendance_records"; public static void main(String args[]) { LocalDate today = LocalDate.now(); String dateStr = today.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); System.out.println("Date : " + dateStr); // 1. 创建存储文件夹(如果不存在) try { Files.createDirectories(Paths.get(RECORD_FOLDER)); } catch (IOException e) { System.err.println("创建文件夹失败: " + e.getMessage()); return; } Scanner sc = new Scanner(System.in); StringBuilder recordContent = new StringBuilder(); recordContent.append("考勤日期: ").append(dateStr).append("\n\n"); recordContent.append("学生考勤记录:\n"); // 2. 循环处理每个学生的考勤录入 System.out.println("Name of Students : \n"); STUDENTS.forEach(System.out::println); System.out.println("\n请输入每个学生的考勤状态(P/p代表出勤,其他代表缺勤)"); for (String student : STUDENTS) { System.out.print("Is " + student + " present? "); String input = sc.nextLine().trim(); String status = input.equalsIgnoreCase("p") ? "出勤" : "缺勤"; System.out.println(student + " " + status); // 把记录添加到内容中 recordContent.append(student).append(" : ").append(status).append("\n"); } // 3. 写入当日考勤文件 String filePath = RECORD_FOLDER + "/" + dateStr + ".txt"; try { Files.write(Paths.get(filePath), recordContent.toString().getBytes(StandardCharsets.UTF_8)); System.out.println("\n考勤记录已保存到: " + filePath); } catch (IOException e) { System.err.println("保存考勤记录失败: " + e.getMessage()); } sc.close(); } }
关键功能说明
- 文件夹自动创建:程序启动时会自动创建
attendance_records文件夹(如果不存在),避免因路径不存在导致的写入错误 - 规范文件名:用
yyyy-MM-dd格式作为文件名(比如2024-05-20.txt),确保文件名合法、无特殊字符,且按日期排序方便查看 - 简化考勤逻辑:用
List存储学生名单,通过循环处理每个学生的考勤,彻底消除原代码中重复的if-else块,后续添加/删除学生只需修改List即可 - 文件写入实现:使用Java NIO的
Files.write方法,简洁高效地将考勤内容写入文件,默认使用UTF-8编码保证中文显示正常
运行注意事项
- 生成的考勤文件会存放在项目根目录下的
attendance_records文件夹中,如果你需要指定其他路径,直接修改RECORD_FOLDER常量为绝对路径即可(比如"D:/attendance_records") - 若输入时不小心输入空格,程序通过
trim()方法自动去除,不影响状态判断
内容的提问来源于stack exchange,提问作者ChimpBrain
相关产品推荐
相关产品推荐

