AI源码
AI源码AI 精选 · 优质源码 · 助力学习

学生考勤管理系统

基于SpringBoot + Vue2 + MySQL开发的学生考勤管理系统,实现了学生请假申请、审批、考勤记录管理等核心功能。系统采用前后端分离架构,提供完整的权限管理和数据可视化功能,适合作为计算机设计或学习项目参考。

评分:4.8/5.0
销量:83
发布:2025/12/2
难度:L2 进阶级
💬 联系咨询
永久使用权限
免费更新维护
技术支持服务

项目说明

学生考勤管理系统

项目简介

基于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. 数据库配置

  1. 创建MySQL数据库
CREATE DATABASE attend_mgt CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  1. 导入数据库文件
mysql -u root -p attend_mgt < attend_mgt.sql
  1. 修改数据库配置 编辑 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启动

  1. 使用IDEA或VSCode打开 java 目录
  2. 找到 AttendanceManagementApiApplication.java 文件
  3. 右键运行该文件

方式二:使用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. 访问系统

默认账号

系统提供以下测试账号:

角色用户名密码说明
管理员adminadmin123拥有所有权限
教师teacher123456审批权限
学生student123456基本权限

功能说明

请假流程

  1. 学生申请请假

    • 登录系统
    • 进入"我要请假"页面
    • 填写请假信息(类型、时间、原因)
    • 提交申请
  2. 教师审批请假

    • 登录系统
    • 进入"请假名单"页面
    • 查看待审批请假申请
    • 填写审批意见
    • 同意或拒绝申请
  3. 查看请假记录

    • 学生可在"请假记录"查看个人请假历史
    • 教师可在"批假记录"查看审批历史

用户管理

  1. 批量导入用户

    • 下载"用户信息导入模板.xlsx"
    • 按模板格式填写用户信息
    • 在用户管理页面选择导入
    • 系统自动创建用户账号
  2. 用户信息管理

    • 新增/编辑/删除用户
    • 分配角色
    • 启用/禁用账号
    • 重置密码

权限管理

  1. 角色管理

    • 创建角色(如:管理员、教师、学生)
    • 为角色分配权限
    • 管理角色状态
  2. 权限分配

    • 菜单权限:控制页面访问
    • 按钮权限:控制操作权限
    • 数据权限:控制数据范围

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 - 获取权限列表

扩展建议

如需进一步完善项目,可考虑以下扩展:

  1. 考勤打卡功能:添加每日签到签退功能
  2. 移动端支持:开发微信小程序或APP
  3. 消息通知:集成邮件或短信通知
  4. 统计报表:更丰富的数据统计和报表导出
  5. 人脸识别:集成人脸识别考勤
  6. 地理位置:基于GPS的考勤打卡
  7. 工作流引擎:支持多级审批流程
  8. 日志审计:完善的操作日志记录

注意事项

  1. Node版本要求:前端项目必须使用Node 16.x版本,其他版本可能导致依赖安装失败
  2. 数据库编码:确保数据库使用utf8mb4编码,避免中文乱码
  3. 跨域配置:开发环境已配置CORS,生产环境需要配置Nginx反向代理
  4. JWT密钥:生产环境需要修改JWT密钥配置
  5. 文件上传:需要配置文件上传路径和大小限制

常见问题

Q: 前端启动报错?

A: 确认Node版本是否为16.x,可使用nvm切换Node版本

Q: 后端连接数据库失败?

A: 检查MySQL服务是否启动,数据库配置是否正确

Q: Swagger无法访问?

A: 确认后端服务已启动,访问地址是否正确

Q: 登录后无权限访问页面?

A: 检查用户角色和权限配置是否正确

Q: Excel导入失败?

A: 确认Excel格式是否符合模板要求,检查数据是否有重复

项目演示

项目包含演示视频文件:演示视频.mp4,展示了系统的完整功能流程。

许可证

本项目仅供学习交流使用,请勿用于商业用途。


技术支持: 如有问题,请查看安装文档或提交Issue。

技术分类

包含内容

完整源码
项目说明文档
演示材料

适用人群

学习参考与二次开发

关于 AI源码

AI源码 专注优质项目源码分享,提供完整源码、详细文档与技术支持,助力源码设计与课程作业。

QQ: 861077046
邮箱: 861077046@qq.com
已服务 83+ 位用户
立即咨询

相关推荐

查看全部 →
大学生就业信息管理系统
Node
进阶

大学生就业信息管理系统

这是一个面向高校大学生的就业信息管理系统,采用前后端分离架构,实现了学生求职、企业招聘、管理员后台管理三端功能。系统涵盖职位发布、简历管理、面试安排、合同签署、就业指南等完整的就业服务流程,适合作为计算机设计或学习项目参考。

NodeVue3MySQL
4.842
大学生在线焦虑测试系统
SpringBoot
进阶

大学生在线焦虑测试系统

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

SpringBootVue2MySQL
4.833
商品管理系统HTML(登录注册增删增删改查)
Node
进阶

商品管理系统HTML(登录注册增删增删改查)

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

Node大作业Vue2+1
4.838
高校快递代取系统
Node
NEW推荐
进阶

高校快递代取系统

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

Node小程序Vue2+1
4.896
高校选课系统
Node
进阶

高校选课系统

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

NodeVue3MySQL
4.872
高校查分系统
Node
NEW
进阶

高校查分系统

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

NodeVue3MySQL
4.843