# 项目迁移到服务器(go-zero)实现方案 ## 当前项目分析 根据查看的文件,我可以看到这是一个基于Qt的教师端服务器应用程序,主要功能包括: 1. 学生管理:添加、删除、导入、导出学生信息 2. 考试管理:发送考题、开始考试、解锁屏幕等 3. 成绩管理:查看、导出成绩 4. WebSocket服务:与学生端进行实时通信 5. 配置管理:系统设置、考试设置等 6. 数据存储:使用SQLite数据库 ## 迁移到服务器(go-zero)的方案 ### 1. 整体架构设计 ```plaintext +----------------+ +----------------+ +-------------------+ | | | | | | | 学生端应用 +----->| 教师端应用 |<---->| 服务器(go-zero)服务| | (Qt客户端) | | (Qt客户端) | | (后端API) | | | | | | | +----------------+ +----------------+ +-------+-----------+ | v +----------------+ | | | Vue网页端 | | (前端界面) | | | +----------------+ ``` ### 2. 服务器(go-zero)服务开发计划 1) API定义 需要实现以下API: 1. 用户认证API - 登录/登出 - 获取用户信息 2. 学生管理API - 添加/删除/修改学生信息 - 批量导入/导出学生信息 - 分页查询学生列表 3. 考试管理API - 添加/删除/修改考试信息 - 发送考题 - 开始/结束考试 - 解锁屏幕 4. 成绩管理API - 记录/查询成绩 - 导出成绩 5. 配置管理API - 获取/修改系统配置 2) 数据库设计 需要迁移的数据表: 1. 用户表(User) 2. 学生表(Student) 3. 考试表(Exam) 4. 成绩表(Grade) 5. 配置表(Config) 2.3 WebSocket服务 实现WebSocket服务,用于: - 实时通知学生端开始考试 - 发送考题 - 解锁屏幕 - 监控学生状态 ### 3. 与现有系统的交互方案 3) 教师端与go-zero服务交互 1. 修改教师端代码,使其通过HTTP API与go-zero服务交互 2. 保留WebSocket客户端功能,连接到go-zero的WebSocket服务 3.2 学生端与go-zero服务交互 1. 修改学生端代码,使其通过HTTP API与go-zero服务交互 2. 保留WebSocket客户端功能,连接到go-zero的WebSocket服务 ### 4. Vue网页端开发计划 4) 功能模块 1. 用户认证 - 登录/登出界面 2. 学生管理 - 学生列表展示 - 添加/编辑/删除学生 - Excel导入/导出功能 3. 考试管理 - 考试列表 - 考试配置 - 考试控制(开始/结束) 4. 成绩管理 - 成绩列表 - 成绩统计 - 成绩导出 5. 系统设置 - 基本配置 - 考试配置 4.2 技术选型 1. 前端框架:Vue 3 + TypeScript 2. UI组件库:Element Plus 3. 状态管理:Pinia 4. 路由:Vue Router 5. HTTP请求:Axios 6. Excel处理:xlsx.js 4.3 Excel导入导出功能 1. 导入功能 - 上传Excel文件 - 解析Excel数据 - 数据校验 - 批量添加到数据库 2. 导出功能 - 查询数据 - 生成Excel文件 - 下载文件 ## 开发周期预估 ### 1. 准备阶段 (2周) - 需求分析和详细设计 (1周) - 环境搭建和技术选型确认 (1周) ### 2. go-zero服务开发 (6周) - API定义和代码生成 (1周) - 数据库设计和迁移 (1周) - 用户认证和权限管理 (1周) - 学生管理和考试管理API (1周) - 成绩管理和配置管理API (1周) - WebSocket服务实现 (1周) ### 3. 现有系统适配 (3周) - 教师端适配 (1.5周) - 学生端适配 (1.5周) ### 4. Vue网页端开发 (5周) - 用户界面和认证模块 (1周) - 学生管理模块 (1周) - 考试管理模块 (1周) - 成绩管理模块 (1周) - Excel导入导出功能 (1周) ### 5. 测试和部署 (4周) - 单元测试和集成测试 (2周) - 系统测试和问题修复 (1周) - 部署和上线 (1周) ## $\color{red} {总计开发周期:20周 (约5个月)} $ # $\color{green} {项目迁移到go-zero实现方案 - 加急时间表格} $ | 阶段 | 任务 | 原计划时间 | 加急时间 | 负责人 | | :-----| ----: | :----: | :----: | :----: | | 准备阶段 | 需求分析和详细设计 | 1周 | 1天 | 项目经理| | | 环境搭建和技术选型确认| 1周 | 3天| 架构师| | go-zero服务开发 | API定义和代码生成 | 1周 | 3天 | 后端开发| | | 数据库设计和迁移 |1周 |4天 |数据库工程师| | | 用户认证和权限管理| 1周 |5天 |后端开发 | | | 学生管理和考试管理API |1周 |5天 |后端开发 | | | 成绩管理和配置管理API |1周 |5天| 后端开发 | | | WebSocket服务实现 |1周 |5天 |后端开发| |现有系统适配 | 教师端适配 | 1.5周 | 7天 | 客户端开发 | | 学生端适配 | 1.5周 | 7天 | 客户端开发| | Vue网页端开发 | 用户界面和认证模块 | 1周 | 5天 | 前端开发| | | 学生管理模块 | 1周 | 5天 | 前端开发 | | | 考试管理模块 | 1周 | 5天 | 前端开发| | | 成绩管理模块 | 1周 | 5天 | 前端开发 | | | Excel导入导出功能 | 1周 | 4天 | 前端开发| | 测试和部署 | 单元测试和集成测试 | 2周 | 3天 | 测试工程师| | | 系统测试和问题修复 | 1周 | 2天 | 全体开发| | | 部署和上线 | 1周 | 2天 | 运维工程师| | 总计 | | 20周(约5个月) | 76天(约2.5个月)|