大学生就业招聘系统Springboot+Vue
大学生就业招聘系统
程序设计文档
项目名称:大学生就业招聘系统
开发语言:Java + JavaScript
开发框架:Spring Boot + Vue 3
数据库:MySQL
文档版本:v1.0
编写日期:2025年
目录
1. 项目概述

1.1 项目背景
随着互联网技术的快速发展,线上招聘已成为大学生求职的重要渠道。传统的招聘方式存在信息不对称、效率低下等问题。本项目旨在开发一个面向大学生的在线就业招聘系统,为求职者和企业提供便捷、高效的招聘服务。
1.2 项目目标
- 提高招聘效率:通过在线平台实现求职者与企业的快速匹配
- 优化用户体验:提供友好的界面和便捷的操作流程
- 数据统计分析:为企业和管理员提供数据统计和可视化功能
- 系统化管理:实现招聘流程的标准化和规范化管理
1.3 技术选型




1.3.1 后端技术栈
- 框架:Spring Boot 2.7.12
- ORM框架:MyBatis
- 数据库:MySQL 8.0
- 构建工具:Maven
- 开发语言:Java 8+
1.3.2 前端技术栈
- 框架:Vue 3.2.0
- UI组件库:Element Plus 2.4.0
- 构建工具:Vite 4.0.0
- 路由管理:Vue Router 4.0.0
- HTTP客户端:Axios 1.2.0
1.3.3 开发工具
- IDE:IntelliJ IDEA / VS Code
- 版本控制:Git
- 接口测试:Postman
1.4 系统架构
本系统采用前后端分离的B/S架构:
- 前端:Vue 3单页面应用,通过RESTful API与后端通信
- 后端:Spring Boot提供RESTful API服务
- 数据库:MySQL存储业务数据
- 架构模式:MVC(Model-View-Controller)
2. 需求分析
2.1 功能性需求
2.1.1 用户角色
系统包含三种用户角色:
-
求职者(USER)
- 浏览岗位信息
- 搜索和筛选岗位
- 申请心仪岗位
- 查看申请记录
- 查看和管理面试邀请
- 提交平台留言反馈
-
企业用户(COMPANY)
- 发布招聘岗位
- 查看岗位申请信息
- 发送面试邀请
- 管理申请状态(查看、录用、拒绝)
- 查看数据统计(岗位申请数据分析)
-
管理员(ADMIN)
- 用户管理(增删改查)
- 企业管理(增删改查)
- 岗位分类管理
- 留言管理
- 面试邀请管理
- 数据统计查看
2.1.2 核心功能模块
2.1.2.1 用户认证模块
-
注册功能
- 用户名、密码、邮箱注册
- 角色选择(求职者/企业)
- 密码确认验证
- 用户名唯一性检查
-
登录功能
- 用户名密码登录
- 角色验证
- 登录状态保持
- 快速登录(演示账号)
2.1.2.2 岗位管理模块
-
岗位浏览
- 岗位列表展示
- 岗位搜索(关键词搜索)
- 分类筛选
- 岗位详情查看
-
岗位申请
- 在线提交简历
- 申请状态跟踪
- 申请记录查询
2.1.2.3 企业管理模块
-
企业信息展示
- 企业列表
- 企业详情
- 企业岗位关联
-
岗位发布
- 岗位信息录入
- 企业和分类选择
- 岗位状态管理
2.1.2.4 企业中心模块
-
岗位管理
- 查看已发布岗位
- 岗位申请统计
-
申请管理
- 查看岗位申请列表
- 查看申请人详细信息
- 申请状态管理
- 面试邀请发送
-
数据统计
- 岗位申请数据分析(柱状图)
- 申请人数、面试人数、通过人数、拒绝人数统计
2.1.2.5 个人中心模块
-
个人信息
- 用户信息展示
- 申请记录查询
- 面试邀请管理
-
面试管理
- 查看面试邀请
- 接受/拒绝面试
- 面试状态跟踪
2.1.2.6 后台管理模块
-
数据统计
- 用户总数
- 企业数量
- 岗位数量
- 申请记录数
- 面试邀请数
- 用户留言数
-
用户管理
- 用户列表查看
- 用户信息编辑
- 用户删除
- 企业账号分配
-
企业管理
- 企业列表管理
- 企业信息编辑
- 企业删除
- 企业账号分配
-
分类管理
- 岗位分类添加
- 岗位分类删除
-
留言管理
- 留言列表查看
- 留言状态管理(已读/未读)
- 留言删除
2.1.2.7 留言反馈模块
-
学生留言
- 提交平台留言
- 查看留言记录
-
管理员查看
- 留言列表管理
- 标记已读/未读
2.2 非功能性需求
2.2.1 性能需求
- 系统响应时间:页面加载时间 < 3秒
- 并发用户数:支持至少100个并发用户
- 数据库查询优化:关键查询响应时间 < 500ms
2.2.2 可用性需求
- 系统可用性:99%以上
- 数据备份:定期数据备份
- 错误处理:友好的错误提示信息
2.2.3 安全性需求
- 用户认证:登录验证
- 权限控制:角色权限管理
- 数据验证:前后端数据校验
- SQL注入防护:使用参数化查询
2.2.4 可维护性需求
- 代码规范:遵循Java和JavaScript编码规范
- 注释完整:关键代码添加注释
- 模块化设计:功能模块解耦
3. 系统总体设计
3.1 系统架构设计
3.1.1 整体架构
┌─────────────────┐
│ 前端 Vue 3 │
│ Element Plus │
└────────┬────────┘
│ HTTP/RESTful API
│
┌────────▼────────┐
│ Spring Boot │
│ Controller │
└────────┬────────┘
│
┌────────▼────────┐
│ MyBatis │
│ Mapper │
└────────┬────────┘
│
┌────────▼────────┐
│ MySQL │
│ Database │
└─────────────────┘
3.1.2 前后端分离架构
- 前端:单页面应用(SPA),通过Axios发送HTTP请求
- 后端:RESTful API服务,返回JSON数据
- 通信协议:HTTP/HTTPS
- 数据格式:JSON
3.2 系统模块划分
大学生就业招聘系统
├── 用户认证模块
│ ├── 用户注册
│ ├── 用户登录
│ └── 权限验证
├── 岗位管理模块
│ ├── 岗位浏览
│ ├── 岗位搜索
│ ├── 岗位申请
│ └── 申请管理
├── 企业管理模块
│ ├── 企业信息
│ ├── 岗位发布
│ └── 企业中心
├── 个人中心模块
│ ├── 个人信息
│ ├── 申请记录
│ └── 面试管理
├── 后台管理模块
│ ├── 数据统计
│ ├── 用户管理
│ ├── 企业管理
│ ├── 分类管理
│ └── 留言管理
└── 留言反馈模块
├── 提交留言
└── 留言管理
3.3 技术架构设计
3.3.1 后端架构
- Controller层:处理HTTP请求,参数验证,返回响应
- Service层:业务逻辑处理(本项目简化,直接使用Mapper)
- Mapper层:数据访问层,MyBatis接口
- Model层:实体类,对应数据库表
3.3.2 前端架构
- Views层:页面组件
- Components层:可复用组件(本项目简化)
- Utils层:工具函数
- Router层:路由配置
- API层:API请求封装
4. 数据库设计
4.1 数据库概述
- 数据库名称:job_recruitment
- 字符集:utf8mb4
- 排序规则:utf8mb4_general_ci
4.2 数据表设计
4.2.1 用户表(users)
| 字段名 | 类型 | 长度 | 是否为空 | 主键 | 说明 |
|---|---|---|---|---|---|
| id | BIGINT | - | NO | YES | 用户ID(自增) |
| username | VARCHAR | 100 | NO | NO | 用户名 |
| password | VARCHAR | 255 | NO | NO | 密码 |
| role | VARCHAR | 20 | YES | NO | 角色(USER/COMPANY/ADMIN) |
| VARCHAR | 255 | YES | NO | 邮箱 | |
| company_id | BIGINT | - | YES | NO | 关联企业ID |
| created_at | TIMESTAMP | - | YES | NO | 创建时间 |
索引:
- PRIMARY KEY (id)
- FOREIGN KEY (company_id) REFERENCES companies(id)
4.2.2 企业表(companies)
| 字段名 | 类型 | 长度 | 是否为空 | 主键 | 说明 |
|---|---|---|---|---|---|
| id | BIGINT | - | NO | YES | 企业ID(自增) |
| name | VARCHAR | 255 | NO | NO | 企业名称 |
| address | VARCHAR | 255 | YES | NO | 企业地址 |
| description | TEXT | - | YES | NO | 企业简介 |
| created_at | TIMESTAMP | - | YES | NO | 创建时间 |
索引:
- PRIMARY KEY (id)
4.2.3 分类表(categories)
| 字段名 | 类型 | 长度 | 是否为空 | 主键 | 说明 |
|---|---|---|---|---|---|
| id | BIGINT | - | NO | YES | 分类ID(自增) |
| name | VARCHAR | 100 | NO | NO | 分类名称 |
索引:
- PRIMARY KEY (id)
4.2.4 岗位表(jobs)
| 字段名 | 类型 | 长度 | 是否为空 | 主键 | 说明 |
|---|---|---|---|---|---|
| id | BIGINT | - | NO | YES | 岗位ID(自增) |
| title | VARCHAR | 255 | NO | NO | 岗位标题 |
| company_id | BIGINT | - | YES | NO | 企业ID |
| category_id | BIGINT | - | YES | NO | 分类ID |
| location | VARCHAR | 255 | YES | NO | 工作地点 |
| description | TEXT | - | YES | NO | 岗位描述 |
| status | INT | - | YES | NO | 状态(1-招聘中,0-已关闭) |
| created_at | TIMESTAMP | - | YES | NO | 创建时间 |
索引:
- PRIMARY KEY (id)
- FOREIGN KEY (company_id) REFERENCES companies(id)
4.2.5 申请表(applications)
| 字段名 | 类型 | 长度 | 是否为空 | 主键 | 说明 |
|---|---|---|---|---|---|
| id | BIGINT | - | NO | YES | 申请ID(自增) |
| job_id | BIGINT | - | YES | NO | 岗位ID |
| user_id | BIGINT | - | YES | NO | 用户ID |
| resume_text | TEXT | - | YES | NO | 简历内容 |
| status | VARCHAR | 50 | YES | NO | 状态(APPLIED/VIEWED/REJECTED/HIRED) |
| created_at | TIMESTAMP | - | YES | NO | 申请时间 |
索引:
- PRIMARY KEY (id)
- FOREIGN KEY (job_id) REFERENCES jobs(id) ON DELETE CASCADE
- FOREIGN KEY (user_id) REFERENCES users(id)
4.2.6 面试表(interviews)
| 字段名 | 类型 | 长度 | 是否为空 | 主键 | 说明 |
|---|---|---|---|---|---|
| id | BIGINT | - | NO | YES | 面试ID(自增) |
| application_id | BIGINT | - | YES | NO | 申请ID |
| scheduled_at | VARCHAR | 100 | YES | NO | 面试时间 |
| location | VARCHAR | 255 | YES | NO | 面试地点 |
| contact | VARCHAR | 255 | YES | NO | 联系方式 |
| status | VARCHAR | 50 | YES | NO | 状态(待员工确认/待面试/面试完成/录用/拒绝) |
| result | VARCHAR | 50 | YES | NO | 结果(PENDING/PASSED/FAILED) |
| created_at | TIMESTAMP | - | YES | NO | 创建时间 |
索引:
- PRIMARY KEY (id)
- FOREIGN KEY (application_id) REFERENCES applications(id) ON DELETE CASCADE
4.2.7 留言表(messages)
| 字段名 | 类型 | 长度 | 是否为空 | 主键 | 说明 |
|---|---|---|---|---|---|
| id | BIGINT | - | NO | YES | 留言ID(自增) |
| user_id | BIGINT | - | YES | NO | 用户ID |
| content | TEXT | - | NO | NO | 留言内容 |
| created_at | TIMESTAMP | - | YES | NO | 创建时间 |
索引:
- PRIMARY KEY (id)
- FOREIGN KEY (user_id) REFERENCES users(id)
4.2.8 反馈表(feedbacks)
| 字段名 | 类型 | 长度 | 是否为空 | 主键 | 说明 |
|---|---|---|---|---|---|
| id | BIGINT | - | NO | YES | 反馈ID(自增) |
| user_id | BIGINT | - | YES | NO | 用户ID |
| content | TEXT | - | NO | NO | 反馈内容 |
| status | VARCHAR | 20 | YES | NO | 状态(UNREAD/READ) |
| created_at | VARCHAR | 50 | YES | NO | 创建时间 |
索引:
- PRIMARY KEY (id)
- FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE SET NULL
4.3 数据库关系图(ER图)
users ──┐
├──► applications ──► interviews
│
└──► feedbacks
companies ──► jobs ──► applications
│
└──► categories
users ──► companies (通过company_id)
4.4 数据字典
详细的数据字段说明见4.2节各表设计。
5. 系统详细设计
5.1 后端设计
5.1.1 Controller层设计
5.1.1.1 认证控制器(AuthController)
路径:/api/auth
功能:
POST /api/auth/login- 用户登录POST /api/auth/register- 用户注册
关键方法:
@PostMapping("/login")
public Map<String, Object> login(@RequestBody Map<String, String> params)
// 验证用户名和密码,返回用户信息和token
@PostMapping("/register")
public Map<String, Object> register(@RequestBody User user)
// 注册新用户,检查用户名唯一性
5.1.1.2 岗位控制器(JobController)
路径:/api/jobs
功能:
GET /api/jobs- 获取岗位列表GET /api/jobs/{id}- 获取岗位详情POST /api/jobs- 创建岗位PUT /api/jobs/{id}- 更新岗位DELETE /api/jobs/{id}- 删除岗位
5.1.1.3 申请控制器(ApplicationController)
路径:/api/applications
功能:
GET /api/applications- 获取申请列表GET /api/applications/job/{jobId}- 获取某岗位的所有申请POST /api/applications- 创建申请PUT /api/applications/{id}/status- 更新申请状态
5.1.1.4 企业控制器(CompanyController)
路径:/api/companies
功能:
GET /api/companies- 获取企业列表GET /api/companies/{id}- 获取企业详情POST /api/companies- 创建企业PUT /api/companies/{id}- 更新企业DELETE /api/companies/{id}- 删除企业
5.1.1.5 用户控制器(UserController)
路径:/api/users
功能:
GET /api/users- 获取用户列表GET /api/users/{id}- 获取用户详情PUT /api/users/{id}- 更新用户DELETE /api/users/{id}- 删除用户
5.1.1.6 面试控制器(InterviewController)
路径:/api/interviews
功能:
GET /api/interviews- 获取面试列表GET /api/interviews/user/{userId}- 获取用户的面试列表POST /api/interviews- 创建面试邀请PUT /api/interviews/{id}/accept- 接受面试PUT /api/interviews/{id}/reject- 拒绝面试PUT /api/interviews/{id}/complete- 完成面试PUT /api/interviews/{id}/hire- 录用PUT /api/interviews/{id}/not-hire- 不录用
5.1.1.7 反馈控制器(FeedbackController)
路径:/api/feedbacks
功能:
GET /api/feedbacks- 获取反馈列表GET /api/feedbacks/user/{userId}- 获取用户的反馈POST /api/feedbacks- 创建反馈PUT /api/feedbacks/{id}/read- 标记已读DELETE /api/feedbacks/{id}- 删除反馈GET /api/feedbacks/unread-count- 获取未读反馈数
5.1.2 Mapper层设计
使用MyBatis注解方式,主要接口:
UserMapper- 用户数据访问JobMapper- 岗位数据访问ApplicationMapper- 申请数据访问CompanyMapper- 企业数据访问CategoryMapper- 分类数据访问InterviewMapper- 面试数据访问MessageMapper- 留言数据访问FeedbackMapper- 反馈数据访问
5.1.3 Model层设计
实体类对应数据库表:
User- 用户实体Job- 岗位实体Application- 申请实体Company- 企业实体Category- 分类实体Interview- 面试实体Message- 留言实体Feedback- 反馈实体
5.2 前端设计
5.2.1 页面组件设计
5.2.1.1 登录注册页面(Login.vue)
功能:
- 用户登录表单
- 用户注册表单
- 角色选择
- 表单验证
- 快速登录按钮
关键状态:
loginForm- 登录表单数据registerForm- 注册表单数据activeTab- 当前激活的标签页
5.2.1.2 首页(Home.vue)
功能:
- 系统统计数据展示
- 热门岗位展示
- 推荐企业展示
- 快速操作入口
关键功能:
loadStatistics()- 加载统计数据loadHotJobs()- 加载热门岗位loadFeaturedCompanies()- 加载推荐企业
5.2.1.3 岗位浏览页面(Jobs.vue)
功能:
- 岗位列表展示
- 搜索功能
- 分类筛选
- 岗位详情查看
- 在线申请
关键功能:
loadJobs()- 加载岗位列表searchJobs()- 搜索岗位filterByCategory()- 按分类筛选applyForJob()- 申请岗位
5.2.1.4 企业浏览页面(Companies.vue)
功能:
- 企业列表展示
- 企业搜索
- 企业详情查看
- 查看企业岗位
5.2.1.5 岗位发布页面(PostJob.vue)
功能:
- 岗位信息录入
- 企业和分类选择
- 表单验证
- 提交岗位
5.2.1.6 企业中心页面(CompanyDashboard.vue)
功能:
- 岗位管理(我的岗位)
- 申请管理(岗位申请)
- 数据统计(柱状图可视化)
关键功能:
loadMyJobs()- 加载我的岗位viewApplications()- 查看申请loadChartData()- 加载图表数据showInviteInterviewDialog()- 显示面试邀请对话框
5.2.1.7 个人中心页面(Profile.vue)
功能:
- 个人信息展示
- 申请记录查看
- 面试邀请管理
5.2.1.8 后台管理页面(Admin.vue)
功能:
- 数据统计展示
- 用户管理
- 企业管理
- 分类管理
- 留言管理
- 面试管理
关键功能:
loadStatistics()- 加载统计数据loadUsers()- 加载用户列表loadCompanies()- 加载企业列表showUserForm()- 显示用户表单showCompanyForm()- 显示企业表单
5.2.2 路由设计
路由配置(main.js):
const routes = [
{ path: '/', component: Home },
{ path: '/login', component: Login },
{ path: '/jobs', component: Jobs },
{ path: '/companies', component: Companies },
{ path: '/post', component: PostJob },
{ path: '/company', component: CompanyDashboard },
{ path: '/profile', component: Profile },
{ path: '/admin', component: Admin }
]
5.2.3 状态管理
使用Vue 3的响应式系统:
localStorage- 存储用户登录信息ref/reactive- 组件状态管理- 事件总线 - 跨组件通信(
window.dispatchEvent)
6. 接口设计
6.1 接口规范
- 请求方式:RESTful API(GET/POST/PUT/DELETE)
- 数据格式:JSON
- 字符编码:UTF-8
- 跨域支持:
@CrossOrigin注解
6.2 主要接口列表
6.2.1 认证相关接口
| 接口 | 方法 | 说明 | 参数 |
|---|---|---|---|
| /api/auth/login | POST | 用户登录 | username, password |
| /api/auth/register | POST | 用户注册 | username, password, email, role |
6.2.2 岗位相关接口
| 接口 | 方法 | 说明 | 参数 |
|---|---|---|---|
| /api/jobs | GET | 获取岗位列表 | - |
| /api/jobs/{id} | GET | 获取岗位详情 | id |
| /api/jobs | POST | 创建岗位 | title, companyId, categoryId, location, description |
| /api/jobs/{id} | PUT | 更新岗位 | id, 岗位信息 |
| /api/jobs/{id} | DELETE | 删除岗位 | id |
6.2.3 申请相关接口
| 接口 | 方法 | 说明 | 参数 |
|---|---|---|---|
| /api/applications | GET | 获取申请列表 | - |
| /api/applications/job/{jobId} | GET | 获取岗位申请 | jobId |
| /api/applications | POST | 创建申请 | jobId, userId, resumeText |
| /api/applications/{id}/status | PUT | 更新申请状态 | id, status |
6.2.4 企业相关接口
| 接口 | 方法 | 说明 | 参数 |
|---|---|---|---|
| /api/companies | GET | 获取企业列表 | - |
| /api/companies/{id} | GET | 获取企业详情 | id |
| /api/companies | POST | 创建企业 | name, address, description |
| /api/companies/{id} | PUT | 更新企业 | id, 企业信息 |
| /api/companies/{id} | DELETE | 删除企业 | id |
6.2.5 用户相关接口
| 接口 | 方法 | 说明 | 参数 |
|---|---|---|---|
| /api/users | GET | 获取用户列表 | - |
| /api/users/{id} | GET | 获取用户详情 | id |
| /api/users/{id} | PUT | 更新用户 | id, 用户信息 |
| /api/users/{id} | DELETE | 删除用户 | id |
6.2.6 面试相关接口
| 接口 | 方法 | 说明 | 参数 |
|---|---|---|---|
| /api/interviews | GET | 获取面试列表 | - |
| /api/interviews/user/{userId} | GET | 获取用户面试 | userId |
| /api/interviews | POST | 创建面试邀请 | applicationId, scheduledAt, location, contact |
| /api/interviews/{id}/accept | PUT | 接受面试 | id |
| /api/interviews/{id}/reject | PUT | 拒绝面试 | id |
| /api/interviews/{id}/complete | PUT | 完成面试 | id |
| /api/interviews/{id}/hire | PUT | 录用 | id |
| /api/interviews/{id}/not-hire | PUT | 不录用 | id |
6.2.7 反馈相关接口
| 接口 | 方法 | 说明 | 参数 |
|---|---|---|---|
| /api/feedbacks | GET | 获取反馈列表 | - |
| /api/feedbacks | POST | 创建反馈 | userId, content |
| /api/feedbacks/{id}/read | PUT | 标记已读 | id |
| /api/feedbacks/{id} | DELETE | 删除反馈 | id |
6.3 接口响应格式
成功响应:
{
"success": true,
"data": {...}
}
错误响应:
{
"success": false,
"message": "错误信息"
}
7. 测试说明
7.1 测试环境
- 操作系统:Windows 10/11
- 数据库:MySQL 8.0
- Java版本:JDK 8+
- Node.js版本:16+
- 浏览器:Chrome / Edge / Firefox
7.2 功能测试
7.2.1 用户注册测试
-
正常注册测试
- 输入有效的用户名、密码、邮箱
- 选择角色
- 验证注册成功
-
异常测试
- 用户名重复
- 密码为空
- 邮箱格式错误
7.2.2 用户登录测试
-
正常登录测试
- 输入正确的用户名和密码
- 验证登录成功
- 验证角色权限
-
异常测试
- 用户名或密码错误
- 用户不存在
7.2.3 岗位申请测试
- 正常申请测试
- 浏览岗位
- 填写简历
- 提交申请
- 验证申请状态
7.2.4 企业中心测试
-
岗位管理测试
- 查看已发布岗位
- 查看申请数量
-
申请管理测试
- 查看岗位申请列表
- 查看申请人信息
- 更新申请状态
- 发送面试邀请
-
数据统计测试
- 查看柱状图展示
- 验证数据准确性
7.2.5 后台管理测试
-
用户管理测试
- 用户列表查看
- 用户信息编辑
- 用户删除
- 企业账号分配
-
企业管理测试
- 企业列表管理
- 企业信息编辑
- 企业删除
-
数据统计测试
- 验证统计数据准确性
- 测试点击跳转功能
7.3 性能测试
- 页面加载时间 < 3秒
- API响应时间 < 1秒
- 数据库查询优化
7.4 兼容性测试
- Chrome浏览器
- Edge浏览器
- Firefox浏览器
- 移动端响应式布局
8. 总结与展望
8.1 项目总结
本项目成功实现了一个功能完整的的大学生就业招聘系统,主要成果包括:
-
功能完整性
- 实现了用户注册登录、岗位浏览申请、企业管理、后台管理等核心功能
- 支持三种用户角色,权限管理清晰
- 数据统计和可视化功能完善
-
技术实现
- 采用前后端分离架构,代码结构清晰
- 使用现代化的技术栈,易于维护和扩展
- RESTful API设计规范
-
用户体验
- 界面美观,操作便捷
- 响应式设计,支持多端访问
- 友好的错误提示和交互反馈
8.2 存在的问题
- 安全性
- 密码未加密存储(应使用BCrypt)
- 缺少JWT Token认证
- 缺少SQ
更多推荐

所有评论(0)