# 毕业设计双选系统 **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/)