学生考勤管理系统
基于SpringBoot + Vue2 + MySQL开发的学生考勤管理系统,实现了学生请假申请、审批、考勤记录管理等核心功能。系统采用前后端分离架构,提供完整的权限管理和数据可视化功能,适合作为计算机设计或学习项目参考。
项目说明
学生考勤管理系统
项目简介
基于SpringBoot + Vue2 + MySQL开发的学生考勤管理系统,实现了学生请假申请、审批、考勤记录管理等核心功能。系统采用前后端分离架构,提供完整的权限管理和数据可视化功能,适合作为计算机设计或学习项目参考。
技术栈
后端技术
| 技术 | 版本/说明 |
|---|---|
| 运行环境 | Java 1.8 |
| 开发框架 | Spring Boot 2.6.4 |
| ORM框架 | MyBatis-Plus 3.5.1 |
| 数据库 | MySQL 8.0 |
| 权限框架 | Apache Shiro 1.6.0 |
| 身份认证 | JWT (jjwt 0.9.1) |
| 工具类库 | Hutool 5.8.0 |
| API文档 | Swagger 3.0.0 |
| Excel处理 | Apache POI 5.2.2 |
| 热部署 | Spring Boot DevTools |
前端技术
| 技术 | 版本/说明 |
|---|---|
| 前端框架 | Vue 2.6.14 |
| UI组件库 | Element UI 2.3.6 |
| 路由管理 | Vue Router 3.5.1 |
| 状态管理 | Vuex 3.6.2 |
| HTTP请求 | Axios 0.26.1 |
| 图表库 | ECharts 5.3.2 |
| CSS预处理器 | Sass/SCSS |
| 构建工具 | Webpack 5.70.0 |
项目特点
- 前后端分离:后端提供RESTful API,前端独立开发部署
- 权限管理:基于Shiro的RBAC权限控制,支持角色和权限管理
- JWT认证:使用JWT实现无状态身份认证
- 数据可视化:集成ECharts图表展示考勤统计数据
- Excel导入导出:支持用户信息批量导入和数据导出
- API文档:集成Swagger自动生成接口文档
- 响应式设计:适配PC端各种分辨率
功能模块
1. 主页模块
- 数据统计概览
- 图表展示(考勤趋势、请假统计等)
- 快捷操作入口
2. 用户管理
- 用户列表查看
- 用户信息增删改查
- 用户状态管理
- 批量导入用户(Excel)
- 用户信息导出
3. 权限管理
- 权限列表管理
- 权限分配
- 菜单权限控制
- 按钮权限控制
4. 我要请假
- 请假申请提交
- 请假类型选择(病假、事假、其他)
- 请假时间选择
- 请假原因填写
- 附件上传
5. 请假名单
- 待审批请假列表
- 请假详情查看
- 请假审批(同意/拒绝)
- 审批意见填写
6. 批假记录
- 已审批请假记录
- 审批历史查询
- 审批状态筛选
- 审批人信息展示
7. 请假记录
- 个人请假历史
- 请假状态查看
- 请假记录统计
- 请假记录导出
8. 角色管理
- 角色列表管理
- 角色权限分配
- 角色用户关联
- 角色状态管理
项目结构
student-kaoqing-system/
├── java/ # 后端项目(Spring Boot)
│ ├── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── edu/wong/
│ │ │ └── attendance_management_api/
│ │ │ ├── config/ # 配置类
│ │ │ │ ├── CorsConfig.java # 跨域配置
│ │ │ │ ├── ShiroConfig.java # Shiro配置
│ │ │ │ └── SwaggerConfig.java # Swagger配置
│ │ │ ├── controller/ # 控制器
│ │ │ │ ├── UserController.java
│ │ │ │ ├── LeaveController.java
│ │ │ │ ├── RoleController.java
│ │ │ │ └── PermissionController.java
│ │ │ ├── entity/ # 实体类
│ │ │ │ ├── User.java
│ │ │ │ ├── Leave.java
│ │ │ │ ├── Role.java
│ │ │ │ └── Permission.java
│ │ │ ├── mapper/ # MyBatis Mapper
│ │ │ ├── service/ # 业务逻辑层
│ │ │ │ ├── impl/
│ │ │ │ ├── UserService.java
│ │ │ │ ├── LeaveService.java
│ │ │ │ └── RoleService.java
│ │ │ ├── util/ # 工具类
│ │ │ │ ├── JwtUtil.java
│ │ │ │ ├── ResultUtil.java
│ │ │ │ └── ExcelUtil.java
│ │ │ └── AttendanceManagementApiApplication.java
│ │ └── resources/
│ │ ├── mapper/ # MyBatis XML映射文件
│ │ ├── application.yml # 应用配置文件
│ │ └── banner.txt # 启动Banner
│ └── pom.xml # Maven配置文件
│
├── vue/ # 前端项目(Vue2)
│ ├── public/ # 静态资源
│ │ ├── index.html
│ │ └── favicon.ico
│ ├── src/
│ │ ├── api/ # API接口封装
│ │ │ ├── user.js
│ │ │ ├── leave.js
│ │ │ └── role.js
│ │ ├── assets/ # 静态资源
│ │ │ ├── images/
│ │ │ └── styles/
│ │ ├── components/ # 公共组件
│ │ │ ├── Header.vue
│ │ │ ├── Sidebar.vue
│ │ │ └── Breadcrumb.vue
│ │ ├── router/ # 路由配置
│ │ │ └── index.js
│ │ ├── store/ # Vuex状态管理
│ │ │ ├── modules/
│ │ │ └── index.js
│ │ ├── utils/ # 工具函数
│ │ │ ├── request.js # Axios封装
│ │ │ ├── auth.js # 认证工具
│ │ │ └── validate.js # 表单验证
│ │ ├── views/ # 页面视图
│ │ │ ├── Home.vue # 主页
│ │ │ ├── Login.vue # 登录页
│ │ │ ├── User/ # 用户管理
│ │ │ │ ├── index.vue
│ │ │ │ └── components/
│ │ │ ├── Leave/ # 请假管理
│ │ │ │ ├── Apply.vue # 我要请假
│ │ │ │ ├── List.vue # 请假名单
│ │ │ │ ├── Approve.vue # 批假记录
│ │ │ │ └── Record.vue # 请假记录
│ │ │ ├── Role/ # 角色管理
│ │ │ └── Permission/ # 权限管理
│ │ ├── App.vue # 根组件
│ │ └── main.js # 入口文件
│ ├── package.json # 依赖配置
│ └── vue.config.js # Vue配置
│
├── 文章/ # 设计说明相关文档
├── attend_mgt.sql # 数据库SQL文件
├── 用户信息导入模板.xlsx # Excel导入模板
├── 安装文档.md # 安装说明
└── 演示视频.mp4 # 系统演示视频
数据库设计
核心数据表
1. 用户表 (user)
CREATE TABLE `user` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '用户ID',
`username` varchar(50) NOT NULL COMMENT '用户名',
`password` varchar(100) NOT NULL COMMENT '密码',
`real_name` varchar(50) DEFAULT NULL COMMENT '真实姓名',
`phone` varchar(20) DEFAULT NULL COMMENT '手机号',
`email` varchar(100) DEFAULT NULL COMMENT '邮箱',
`gender` tinyint DEFAULT NULL COMMENT '性别 0-女 1-男',
`avatar` varchar(255) DEFAULT NULL COMMENT '头像',
`status` tinyint DEFAULT '1' COMMENT '状态 0-禁用 1-启用',
`role_id` bigint DEFAULT NULL COMMENT '角色ID',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';
2. 请假表 (leave_record)
CREATE TABLE `leave_record` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '请假ID',
`user_id` bigint NOT NULL COMMENT '用户ID',
`leave_type` tinyint NOT NULL COMMENT '请假类型 1-病假 2-事假 3-其他',
`start_time` datetime NOT NULL COMMENT '开始时间',
`end_time` datetime NOT NULL COMMENT '结束时间',
`days` decimal(10,1) DEFAULT NULL COMMENT '请假天数',
`reason` text COMMENT '请假原因',
`attachment` varchar(255) DEFAULT NULL COMMENT '附件',
`status` tinyint DEFAULT '0' COMMENT '状态 0-待审批 1-已同意 2-已拒绝',
`approver_id` bigint DEFAULT NULL COMMENT '审批人ID',
`approve_time` datetime DEFAULT NULL COMMENT '审批时间',
`approve_opinion` text COMMENT '审批意见',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_user_id` (`user_id`),
KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='请假记录表';
3. 角色表 (role)
CREATE TABLE `role` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '角色ID',
`role_name` varchar(50) NOT NULL COMMENT '角色名称',
`role_code` varchar(50) NOT NULL COMMENT '角色编码',
`description` varchar(255) DEFAULT NULL COMMENT '角色描述',
`status` tinyint DEFAULT '1' COMMENT '状态 0-禁用 1-启用',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_role_code` (`role_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色表';
4. 权限表 (permission)
CREATE TABLE `permission` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '权限ID',
`permission_name` varchar(50) NOT NULL COMMENT '权限名称',
`permission_code` varchar(50) NOT NULL COMMENT '权限编码',
`permission_type` tinyint DEFAULT NULL COMMENT '权限类型 1-菜单 2-按钮',
`parent_id` bigint DEFAULT '0' COMMENT '父权限ID',
`path` varchar(255) DEFAULT NULL COMMENT '路由路径',
`icon` varchar(50) DEFAULT NULL COMMENT '图标',
`sort` int DEFAULT '0' COMMENT '排序',
`status` tinyint DEFAULT '1' COMMENT '状态 0-禁用 1-启用',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_permission_code` (`permission_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='权限表';
5. 角色权限关联表 (role_permission)
CREATE TABLE `role_permission` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
`role_id` bigint NOT NULL COMMENT '角色ID',
`permission_id` bigint NOT NULL COMMENT '权限ID',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`),
KEY `idx_role_id` (`role_id`),
KEY `idx_permission_id` (`permission_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色权限关联表';
运行环境要求
后端环境
- JDK 1.8+
- Maven 3.6+
- MySQL 8.0+
前端环境
- Node.js 16.5.0 (必须,其他版本可能报错)
- npm 或 yarn
快速开始
1. 数据库配置
- 创建MySQL数据库
CREATE DATABASE attend_mgt CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
- 导入数据库文件
mysql -u root -p attend_mgt < attend_mgt.sql
- 修改数据库配置
编辑
java/target/classes/application.yml:
spring:
datasource:
username: root # 数据库用户名
password: root # 数据库密码
url: jdbc:mysql://localhost:3306/attend_mgt?useUnicode=true&characterEncoding=UTF-8
driver-class-name: com.mysql.cj.jdbc.Driver
2. 启动后端服务
方式一:使用IDE启动
- 使用IDEA或VSCode打开
java目录 - 找到
AttendanceManagementApiApplication.java文件 - 右键运行该文件
方式二:使用Maven命令启动
cd java
mvn clean install
mvn spring-boot:run
后端服务默认运行在 http://localhost:8088
3. 启动前端项目
# 进入前端目录
cd vue
# 安装依赖(Node版本必须是16.x)
npm install
# 启动开发服务器
npm run dev
前端项目默认运行在 http://localhost:8080
4. 访问系统
默认账号
系统提供以下测试账号:
| 角色 | 用户名 | 密码 | 说明 |
|---|---|---|---|
| 管理员 | admin | admin123 | 拥有所有权限 |
| 教师 | teacher | 123456 | 审批权限 |
| 学生 | student | 123456 | 基本权限 |
功能说明
请假流程
-
学生申请请假
- 登录系统
- 进入"我要请假"页面
- 填写请假信息(类型、时间、原因)
- 提交申请
-
教师审批请假
- 登录系统
- 进入"请假名单"页面
- 查看待审批请假申请
- 填写审批意见
- 同意或拒绝申请
-
查看请假记录
- 学生可在"请假记录"查看个人请假历史
- 教师可在"批假记录"查看审批历史
用户管理
-
批量导入用户
- 下载"用户信息导入模板.xlsx"
- 按模板格式填写用户信息
- 在用户管理页面选择导入
- 系统自动创建用户账号
-
用户信息管理
- 新增/编辑/删除用户
- 分配角色
- 启用/禁用账号
- 重置密码
权限管理
-
角色管理
- 创建角色(如:管理员、教师、学生)
- 为角色分配权限
- 管理角色状态
-
权限分配
- 菜单权限:控制页面访问
- 按钮权限:控制操作权限
- 数据权限:控制数据范围
API接口文档
系统集成了Swagger,启动后端服务后访问:
http://localhost:8088/swagger-ui/index.html
主要接口包括:
用户相关
- POST
/api/user/login- 用户登录 - POST
/api/user/register- 用户注册 - GET
/api/user/info- 获取用户信息 - PUT
/api/user/update- 更新用户信息 - POST
/api/user/import- 批量导入用户
请假相关
- POST
/api/leave/apply- 申请请假 - GET
/api/leave/list- 获取请假列表 - GET
/api/leave/pending- 获取待审批列表 - POST
/api/leave/approve- 审批请假 - GET
/api/leave/record- 获取请假记录
角色权限相关
- GET
/api/role/list- 获取角色列表 - POST
/api/role/add- 添加角色 - PUT
/api/role/update- 更新角色 - DELETE
/api/role/delete/{id}- 删除角色 - GET
/api/permission/list- 获取权限列表
扩展建议
如需进一步完善项目,可考虑以下扩展:
- 考勤打卡功能:添加每日签到签退功能
- 移动端支持:开发微信小程序或APP
- 消息通知:集成邮件或短信通知
- 统计报表:更丰富的数据统计和报表导出
- 人脸识别:集成人脸识别考勤
- 地理位置:基于GPS的考勤打卡
- 工作流引擎:支持多级审批流程
- 日志审计:完善的操作日志记录
注意事项
- Node版本要求:前端项目必须使用Node 16.x版本,其他版本可能导致依赖安装失败
- 数据库编码:确保数据库使用utf8mb4编码,避免中文乱码
- 跨域配置:开发环境已配置CORS,生产环境需要配置Nginx反向代理
- JWT密钥:生产环境需要修改JWT密钥配置
- 文件上传:需要配置文件上传路径和大小限制
常见问题
Q: 前端启动报错?
A: 确认Node版本是否为16.x,可使用nvm切换Node版本
Q: 后端连接数据库失败?
A: 检查MySQL服务是否启动,数据库配置是否正确
Q: Swagger无法访问?
A: 确认后端服务已启动,访问地址是否正确
Q: 登录后无权限访问页面?
A: 检查用户角色和权限配置是否正确
Q: Excel导入失败?
A: 确认Excel格式是否符合模板要求,检查数据是否有重复
项目演示
项目包含演示视频文件:演示视频.mp4,展示了系统的完整功能流程。
许可证
本项目仅供学习交流使用,请勿用于商业用途。
技术支持: 如有问题,请查看安装文档或提交Issue。
技术分类
包含内容
适用人群
学习参考与二次开发
关于 AI源码
AI源码 专注优质项目源码分享,提供完整源码、详细文档与技术支持,助力源码设计与课程作业。
相关推荐
查看全部 →
大学生就业信息管理系统
这是一个面向高校大学生的就业信息管理系统,采用前后端分离架构,实现了学生求职、企业招聘、管理员后台管理三端功能。系统涵盖职位发布、简历管理、面试安排、合同签署、就业指南等完整的就业服务流程,适合作为计算机设计或学习项目参考。

大学生在线焦虑测试系统
这是一个专为大学生设计的在线心理健康评估与咨询平台,集成了焦虑测评、在线咨询、个性化建议等核心功能。系统采用前后端分离架构,支持学生、医生、管理员三种角色,提供专业的心理健康服务。

商品管理系统HTML(登录注册增删增删改查)
这是一个基于 Node.js + MySQL + HTML(Vue2) 的商品管理系统,包含用户登录注册和商品的增删改查功能。

高校快递代取系统
本系统是一套高校快递代取微信小程序全栈平台,包含用户端小程序、骑手接单端与 PC 管理后台。用户可发布代取预约、在线支付、跟踪订单进度与申诉;骑手可在大厅接单、取件配送并填写备注;管理员负责驿站与价格配置、公告发布、骑手审核、订单改派及数据统计。后端采用 Express + MySQL,适合作为校园 O2O 类小程序计算机设计参考。

高校选课系统
这是一个完整的高校选课管理系统,采用前后端分离架构,实现了院系管理、专业管理、班级管理、学生管理、教师管理、课程管理、选课管理等核心功能。系统支持多角色(超级管理员、普通管理员、教师、学生)权限控制,适合作为Vue3全栈开发学习项目或计算机设计参考。

高校查分系统
高校学生成绩查询与管理系统,采用前后端分离架构,支持管理员、教师、学生三种角色。