学生请假管理系统通过Java实现,采用Student和LeaveRequest类封装数据,使用ArrayList存储并结合文件持久化。1. 设计Student类包含学号、姓名、班级;2. LeaveRequest类包含请假详情与状态;3. 用静态List管理学生和请假记录;4. 提供增、查、审批功能;5. 通过ObjectOutputStream保存对象到文件,启动时加载数据;6. 所有类实现Serializable接口支持序列化;7. main方法演示添加学生、提交请假、审批及保存流程。系统结构清晰,便于扩展数据库或界面功能。

学生请假管理系统是校园信息化中常见的小型应用,使用Java实现时,通过封装类和合理的数据存储方式,可以让系统结构清晰、易于维护。下面从类设计、数据存储两个方面,带你一步步实现一个基础但完整的请假管理系统。
在面向对象编程中,合理的类设计是系统稳定的基础。我们需要定义Student和LeaveRequest两个核心类。
● Student类:用于封装学生基本信息包含学号、姓名、班级等属性,提供构造方法和getter/setter方法。
public class Student {
private String studentId;
private String name;
private String className;
public Student(String studentId, String name, String className) {
this.studentId = studentId;
this.name = name;
this.className = className;
}
// getter 和 setter 方法
public String getStudentId() { return studentId; }
public String getName() { return name; }
public String getClassName() { return className; }
}
包含请假ID、学生对象、请假时间、原因、状态(如“待审批”、“已批准”)等。
立即学习“Java免费学习笔记(深入)”;
public class LeaveRequest {
private int requestId;
private Student student;
private String startDate;
private String endDate;
private String reason;
private String status; // "pending", "approved", "rejected"
public LeaveRequest(int requestId, Student student, String startDate,
String endDate, String reason) {
this.requestId = requestId;
this.student = student;
this.startDate = startDate;
this.endDate = endDate;
this.reason = reason;
this.status = "pending"; // 默认状态
}
// getter 和部分 setter 方法
public int getRequestId() { return requestId; }
public Student getStudent() { return student; }
public String getStatus() { return status; }
public void setStatus(String status) { this.status = status; }
}
对于小型系统,可以先将数据存在内存的集合中,再通过Java的序列化或文本文件实现简单持久化。
● 使用ArrayList管理数据定义两个静态列表来保存学生和请假记录:
import java.util.ArrayList;
import java.util.List;
public class LeaveSystem {
private static List<Student> students = new ArrayList<>();
private static List<LeaveRequest> leaveRequests = new ArrayList<>();
private static int nextRequestId = 1;
}
提供添加学生的接口,并确保不重复添加学号相同的同学。
public static void addStudent(Student student) {
if (students.stream().noneMatch(s -> s.getStudentId().equals(student.getStudentId()))) {
students.add(student);
} else {
System.out.println("该学号已存在:" + student.getStudentId());
}
}
public static void submitLeave(LeaveRequest request) {
leaveRequests.add(request);
System.out.println("请假提交成功,编号:" + request.getRequestId());
}
支持按学号查询请假记录,以及修改状态。
public static List<LeaveRequest> getLeavesByStudent(String studentId) {
return leaveRequests.stream()
.filter(r -> r.getStudent().getStudentId().equals(studentId))
.toList();
}
public static void approveLeave(int requestId) {
leaveRequests.stream()
.filter(r -> r.getRequestId() == requestId)
.findFirst()
.ifPresent(req -> req.setStatus("approved"));
}
为了重启程序后保留数据,可以用ObjectOutputStream保存对象到文件。
● 保存数据到文件
import java.io.*;
public static void saveData() {
try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("data.dat"))) {
out.writeObject(students);
out.writeObject(leaveRequests);
System.out.println("数据已保存");
} catch (IOException e) {
e.printStackTrace();
}
}
public static void loadData() {
File file = new File("data.dat");
if (!file.exists()) return;
try (ObjectInputStream in = new ObjectInputStream(new FileInputStream(file))) {
students = (List<Student>) in.readObject();
leaveRequests = (List<LeaveRequest>) in.readObject();
// 更新请求ID计数器
nextRequestId = leaveRequests.stream()
.mapToInt(LeaveRequest::getRequestId)
.max().orElse(0) + 1;
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
}
注意:Student和LeaveRequest类需要实现Serializable接口才能被序列化。
在main方法中初始化数据并测试流程:
public static void main(String[] args) {
loadData();
Student s1 = new Student("S001", "张三", "高一1班");
addStudent(s1);
LeaveRequest lr = new LeaveRequest(nextRequestId++, s1, "2024-04-01", "2024-04-03", "感冒");
submitLeave(lr);
approveLeave(1);
System.out.println("当前状态:" + lr.getStatus());
saveData();
}
基本上就这些。通过封装类明确职责,用集合管理数据,辅以文件存储,就能构建出一个可运行的学生请假系统原型。后续可扩展数据库连接、图形界面或Web服务。
以上就是Java实现学生请假管理系统_封装类与数据存储实战的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号