# 毕业设计双选系统
**Repository Path**: hopper/graduationMachingSystem
## Basic Information
- **Project Name**: 毕业设计双选系统
- **Description**: 毕业设计师生双选系统
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2025-11-21
- **Last Updated**: 2025-11-21
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
毕业设计师生双选系统
## 项目简介
毕业设计师生双选系统是一个基于 **Monorepo** 架构的全栈应用,旨在帮助高校高效管理毕业设计的师生匹配流程。系统支持学生组队、填报志愿、教师审核、智能分配以及成绩管理等完整工作流。
基于**若依框架**改造,集成 **Tauri** 实现跨平台桌面应用(Windows/macOS/Linux),提供 Web 端和桌面端双重使用方式。
## 核心功能
### 学生端
- 注册登录、个人信息管理
- 团队创建与管理(队长/队员)
- 教师志愿填报(多志愿排序)
- 分配结果查看
- 成绩查询
### 教师端
- 个人信息管理
- 查看学生志愿列表
- 团队审核与确认
- 成绩评定与管理
### 管理员端
- 学生/教师信息管理
- 专业管理、团队管理
- 智能分配算法(基于志愿和容量)
- 手动调整分配结果
- 成绩统计与导出
- 系统配置(字典、菜单、角色权限等)
### 系统特性
- 多角色权限管理(基于 RBAC)
- 智能匹配算法(志愿优先 + 容量限制)
- 实时通知系统
- 数据导入导出(Excel)
- 操作日志审计
- 缓存优化(Redis)
- 文件存储(MinIO/OSS)
## 技术栈
### 前端
- **框架**: Vue 3.2.45 + Vite 3.2.3
- **UI 组件**: Element Plus 2.11.1
- **状态管理**: Pinia 2.0.22
- **路由**: Vue Router 4.1.4
- **桌面化**: Tauri 2.x(支持 Windows/macOS/Linux)
- **HTTP 客户端**: Axios 0.27.2
- **其他**: VueQuill、ECharts、Fuse.js、Cropper 等
### 后端
- **框架**: Midway.js 3.20(基于 Koa)
- **ORM**: TypeORM 0.3.25
- **数据库**: PostgreSQL / MySQL
- **缓存**: Redis(cache-manager)
- **认证**: JWT + bcryptjs
- **文件存储**: MinIO
- **API 文档**: Swagger
- **其他**: Captcha、ExcelJS、Nodemailer 等
### 工程化
- **包管理**: pnpm 10.17.1 (Workspace Monorepo)
- **代码规范**: ESLint + Prettier + Husky + Commitlint
- **测试**: Vitest + @vitest/browser
- **构建**: Vite + Rollup
## 项目结构
```
graduationMachingSystem/
├── apps/
│ ├── frontend/ # 前端应用(Vue 3 + Tauri)
│ │ ├── src/
│ │ │ ├── views/ # 页面视图
│ │ │ │ ├── home/ # 首页(学生/教师)
│ │ │ │ ├── myTeam/ # 团队管理
│ │ │ │ ├── group/ # 团队列表
│ │ │ │ ├── allocate/ # 分配管理
│ │ │ │ ├── grade/ # 成绩管理
│ │ │ │ ├── student/ # 学生管理
│ │ │ │ └── system/ # 系统管理
│ │ │ ├── components/ # 公共组件
│ │ │ ├── layout/ # 布局组件
│ │ │ └── api/ # API 接口
│ │ └── src-tauri/ # Tauri 桌面端配置
│ └── backend/ # 后端应用(Midway.js)
│ ├── src/
│ │ ├── controller/ # 控制器
│ │ ├── service/ # 业务逻辑
│ │ ├── entity/ # 数据库实体
│ │ ├── middleware/ # 中间件
│ │ └── config/ # 配置文件
├── packages/
│ ├── components/ # 共享组件库
│ └── utils/ # 共享工具库
├── scripts/ # 构建脚本
├── package.json # 根配置文件
└── pnpm-workspace.yaml # pnpm workspace 配置
```
## 快速开始
### 环境要求
- Node.js >= 20.19.0
- pnpm >= 10.17.1
- PostgreSQL >= 13 或 MySQL >= 8.0
- Redis >= 6.0
- Rust(仅构建 Tauri 桌面应用时需要)
### 安装依赖
```bash
# 克隆项目
git clone https://gitee.com/yi-jingqq/graduationMachingSystem.git
cd graduationMachingSystem
# 安装所有依赖(Monorepo 统一管理)
pnpm install
```
### 配置后端
1. **配置数据库**
在 `apps/backend/src/config/config.default.ts` 中配置数据库连接:
```typescript
// PostgreSQL 示例
typeorm: {
dataSource: {
default: {
type: 'postgres',
host: '127.0.0.1',
port: 5432,
username: 'your_username',
password: 'your_password',
database: 'graduationSystem',
synchronize: false,
logging: false,
}
}
}
```
2. **配置 Redis**
```typescript
redis: {
client: {
port: 6379,
host: '127.0.0.1',
password: '',
db: 0,
}
}
```
3. **配置 MinIO(可选)**
```typescript
oss: {
client: {
endPoint: 'your-minio-endpoint',
accessKey: 'your-access-key',
secretKey: 'your-secret-key',
}
}
```
### 运行后端
```bash
# 进入后端目录
cd apps/backend
# 开发模式(支持热重载)
pnpm dev
# 生产构建
pnpm build
# 生产运行
pnpm start
```
后端默认运行在:`http://localhost:7001`
### 运行前端(Web 端)
```bash
# 进入前端目录
cd apps/frontend
# 开发模式
pnpm dev
# 生产构建
pnpm build:prod
# 预览构建结果
pnpm preview
```
前端默认运行在:`http://localhost:8888`
### 构建桌面应用(Tauri)
```bash
# 进入前端目录
cd apps/frontend
# 开发模式(桌面应用)
pnpm tauri-dev
# 构建 Windows 桌面应用
pnpm tauri-build:win
# 构建 macOS 桌面应用
pnpm tauri-build:macos
# 构建 Linux 桌面应用
pnpm tauri-build:linux
# 构建所有平台
pnpm tauri-build:all
```
构建完成后,安装包位于 `apps/frontend/src-tauri/target/release/bundle/`
## 访问地址
- **前端 Web**: http://localhost:8888
- **后端 API**: http://localhost:7001
- **API 文档**: http://localhost:7001/swagger-ui/index.html
- **桌面应用**: 运行生成的安装包
## 默认账号
系统初始化后会创建默认管理员账号:
- 账号:admin
- 密码:admin123
(建议首次登录后立即修改密码)
## 主要模块说明
### 1. 团队管理模块 (`myTeam`)
- 学生可创建团队(自动成为队长)
- 队长可邀请队员(通过学号)
- 队员可申请加入团队
- 支持团队信息编辑与解散
### 2. 志愿填报模块 (`home`)
- 学生填报教师志愿(支持多志愿排序)
- 教师查看学生志愿列表
- 志愿提交后支持修改(截止日期前)
### 3. 智能分配模块 (`allocate`)
- 基于志愿优先算法
- 考虑教师容量限制
- 支持专业维度查看
- 支持手动调整分配结果
- 生成分配报告
### 4. 成绩管理模块 (`grade`)
- 教师录入成绩
- 多维度成绩指标
- 成绩审核流程
- 成绩统计与导出
### 5. 系统管理模块 (`system`)
- 用户管理(学生/教师/管理员)
- 角色权限管理
- 菜单管理
- 字典管理
- 部门管理
- 操作日志
## 开发说明
### Monorepo 工作流
```bash
# 在根目录安装所有依赖
pnpm install
# 运行所有应用(并行)
pnpm dev
# 构建所有应用
pnpm build
# 运行测试
pnpm test
# 代码格式化
pnpm lint:prettier
# ESLint 检查
pnpm lint:eslint
```
### Git 提交规范
本项目使用 Commitizen + Commitlint 规范提交:
```bash
# 使用交互式提交
pnpm commit
# 提交格式
# feat: 新功能
# fix: 修复
# docs: 文档
# style: 格式
# refactor: 重构
# test: 测试
# chore: 构建/工具
```
### 生成数据库实体(TypeORM)
```bash
cd apps/backend
pnpm generate-models
```
## 部署说明
### 后端部署
1. 构建项目:
```bash
cd apps/backend
pnpm build
```
2. 部署文件:
- `dist/` 目录(编译后的代码)
- `package.json`
- `bootstrap.js`
3. 生产环境启动:
```bash
NODE_ENV=production node ./bootstrap.js
```
### 前端部署
1. 构建项目:
```bash
cd apps/frontend
pnpm build:prod
```
2. 将 `dist/` 目录部署到静态服务器(Nginx/CDN)
### Nginx 配置示例
```nginx
server {
listen 80;
server_name your-domain.com;
# 前端
location / {
root /path/to/frontend/dist;
try_files $uri $uri/ /index.html;
}
# 后端 API 代理
location /prod-api/ {
proxy_pass http://localhost:7001/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
```
## 桌面应用特性
- 支持 Windows 7+ / macOS 10.13+ / Linux
- 原生性能,低内存占用
- 支持本地文件访问
- 自动更新(可配置)
- 系统托盘集成
- 原生对话框
## 常见问题
### 1. 前端无法连接后端?
检查 `apps/frontend/src/utils/request.js` 中的 `baseURL` 配置
### 2. Tauri 构建失败?
确保已安装 Rust 环境:https://tauri.app/zh-cn/v1/guides/getting-started/prerequisites
### 3. 数据库连接失败?
检查数据库配置、网络连接、防火墙设置
### 4. pnpm 安装依赖失败?
```bash
# 清除缓存
pnpm store prune
# 重新安装
pnpm install
```
## 技术支持
- 提交 Issue:https://github.com/graduationMachingSystem/issues
- 项目地址:https://gitee.com/yi-jingqq/graduationMachingSystem
## 开源协议
[MIT License](LICENSE)
Copyright (c) 2024-2025 GraduationMachingSystem Team
## 致谢
- [若依框架](http://ruoyi.vip/)
- [Vue.js](https://vuejs.org/)
- [Element Plus](https://element-plus.org/)
- [Midway.js](https://midwayjs.org/)
- [Tauri](https://tauri.app/)