# 学生请假管理系统

一个基于Java Swing的学生请假管理系统，使用JDBC连接MySQL数据库。

## 项目结构

AbsenceManager/
├── src/                # 源代码目录
│   ├── dao/           # 数据访问层
│   │   └── impl/      # DAO接口实现类
│   ├── service/       # 业务逻辑层
│   ├── model/         # 数据模型层
│   ├── gui/           # 图形界面层
│   └── util/          # 工具类
├── lib/               # 第三方依赖库
├── sql/               # 数据库相关文件
│   └── init.sql      # 数据库初始化脚本
└── README.md         # 项目说明文档

## 技术栈

- Java SE
- Java Swing (GUI界面)
- MySQL (数据库)
- JDBC (数据库连接)

## 功能特性

1. 用户管理
   - 学生账号登录
   - 教师账号登录
   - 基本信息维护

2. 请假申请
   - 学生提交日常出校申请
   - 支持多种请假类型（学习、就医、办事等）
   - 自动计算请假时长
   - 是否离津标记
   - 详细事由说明

3. 请假审批
   - 教师查看待审批申请
   - 按状态筛选（待审批、已通过、已拒绝）
   - 教师审批处理
   - 审批意见填写
   - 审批结果通知

4. 信息查询
   - 学生查看个人请假记录
   - 教师查看所有请假记录
   - 按时间范围查询
   - 按审批状态筛选
   - 双击查看详细信息

5. 界面特性
   - 简洁美观的Swing界面
   - 分页显示数据
   - 表格化展示信息
   - 详情对话框展示

## 运行环境要求

- JDK 8 或更高版本
- MySQL 5.7 或更高版本
- IDE推荐使用IntelliJ IDEA

## 任务步骤

## Day 1 - 项目框架搭建

### 任务步骤

1. 项目初始化
   - 创建Java项目
   - 建立项目目录结构（src, lib, sql等，参考“项目结构”部分）
   - 导入必要的第三方库（mysql-connector-java.jar）

2. 数据库配置
   - 创建MySQL数据库（absence_manager）
   - 运行sql/init.sql脚本创建表结构
   - 配置数据库连接（src/util/DatabaseUtil.java）

3. 实现学生实体类（model/Student.java）

```java
public class Student {
   private int id;              // 数据库主键ID
   private String studentId;    // 学号
   private String name;         // 学生姓名
   private String className;    // 班级
   private String contact;      // 联系方式
   private String college;      // 学院
   private String major;        // 专业
   private String password;     // 登录密码

   // 构造方法
   // getter和setter方法
}
```

4. 测试运行
   - 测试数据库连接
   - 确保项目能够正常编译运行

### 完成标准

- [ ] 项目结构完整，包含所有必要的目录
- [ ] 成功导入所需的第三方库
- [ ] 数据库表结构创建完成
- [ ] 数据库连接配置正确
- [ ] Student类实现完整，包含所有必要的属性和方法
- [ ] 项目可以正常编译运行

### 注意事项

1. 建立项目时注意包结构的规范性
2. 数据库字符集使用utf8mb4，避免中文乱码
3. 代码编写要规范，加上必要的注释
4. 提交代码前进行本地测试，确保无编译错误

### 参考代码

![](https://static.seahi.me/2024/12/202412171225346.png)

![](https://static.seahi.me/2024/12/202412171226194.png)
