# 软件工程实践 **Repository Path**: Nicky-xiang/software-engineering-practice ## Basic Information - **Project Name**: 软件工程实践 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-09-23 - **Last Updated**: 2025-10-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 校园食堂反馈管理系统 一个基于Vue.js + Node.js + MySQL的现代化校园食堂反馈管理系统,支持学生反馈提交、食堂管理员处理反馈、数据统计分析等功能。 ## 🎉 最新更新 (2025-07-30) ### ✅ 已修复问题 - **用户登录问题**:修复了所有15个用户的密码和昵称 - **端口冲突解决**:学生端后端(3000) + Admin端后端(3001) - **API配置修复**:更新前端API地址配置 - **登录界面更新**:修正登录说明和默认密码 ### 🔐 可用测试账户 - **运营管理员**: `admin` / `admin123` - **食堂管理员**: `canteen1_admin` / `canteen123` - **食堂员工**: `canteen1_staff1` / `staff123` - **学生用户**: `student01` / `student123` --- ## 🚀 协作者快速上手 ### 一键检查项目状态 ```bash # 检查项目配置和环境 node scripts/check-project-setup.js ``` ### 一键快速启动 ```bash # 自动安装依赖、配置环境、检查数据库 node scripts/quick-start.js ``` ### 手动启动步骤 ```bash # 1. 克隆项目 git clone cd campus-canteen-feedback # 2. 配置数据库 mysql -u root -p CREATE DATABASE campus_canteen CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; EXIT; # 3. 配置环境变量 cp admin/backend/config.env.example admin/backend/config.env # 编辑 admin/backend/config.env 文件,配置数据库连接信息 # 4. 安装依赖 cd admin/backend && npm install cd ../frontend && npm install cd ../../student/backend && npm install cd ../frontend && npm install # 5. 启动服务 # 终端1: 启动学生端后端 cd student/backend && npm start # 终端2: 启动Admin端后端 cd admin/backend && npm start # 终端3: 启动Admin端前端 cd admin/frontend && npm run dev # 终端4: 启动学生端前端 cd student/frontend && npm run dev # 6. 访问应用 # Admin端: http://localhost:9528 # 学生端: http://localhost:8080 # 学生端后端API: http://localhost:3000 # Admin端后端API: http://localhost:3001 ``` --- ## 🚀 功能特性 ### 学生端功能 - **反馈提交**: 支持文字描述、图片上传、多维度评分 - **反馈查看**: 查看历史反馈记录和处理状态 - **窗口信息**: 浏览食堂窗口信息和评分 - **用户中心**: 个人信息管理和设置 ### 管理员端功能 - **仪表板**: 实时数据统计和趋势分析 - **反馈管理**: 处理学生反馈,分配整改任务 - **窗口管理**: 管理食堂窗口信息 - **数据报表**: 多维度数据分析和可视化 - **窗口排名**: 窗口满意度排名和趋势分析 - **用户管理**: 用户信息管理和权限控制 - **系统设置**: 系统配置和参数管理 ### 系统特性 - **多食堂支持**: 支持多个食堂独立管理 - **权限控制**: 基于角色的访问控制 - **数据可视化**: 丰富的图表和统计报表 - **响应式设计**: 支持PC和移动端访问 - **文件上传**: 支持图片上传和预览 - **实时通知**: 反馈状态变更通知 ## 🛠 技术栈 ### 前端 - **Vue.js 2.x**: 前端框架 - **Element UI**: UI组件库 - **ECharts**: 数据可视化图表 - **Axios**: HTTP客户端 - **Vue Router**: 路由管理 - **Vuex**: 状态管理 ### 后端 - **Node.js**: 运行环境 - **Express.js**: Web框架 - **MySQL 8.0**: 数据库 - **JWT**: 身份认证 - **Multer**: 文件上传 - **bcryptjs**: 密码加密 ### 开发工具 - **Vue CLI**: 前端开发工具 - **ESLint**: 代码规范检查 - **Git**: 版本控制 ## 📁 项目结构 ``` campus-canteen-feedback/ ├── admin/ # 管理员端 │ ├── backend/ # Admin端后端服务 │ │ ├── config/ # 配置文件 │ │ ├── controllers/ # 控制器 │ │ ├── middleware/ # 中间件 │ │ ├── models/ # 数据模型 │ │ ├── routes/ # 路由定义 │ │ ├── scripts/ # 数据库脚本 │ │ ├── utils/ # 工具函数 │ │ └── app.js # 应用入口 │ └── frontend/ # Admin端前端 │ ├── src/ # 源代码 │ ├── public/ # 静态资源 │ └── package.json # 依赖配置 ├── student/ # 学生端 │ ├── backend/ # 学生端后端服务 │ └── frontend/ # 学生端前端 ├── database/ # 数据库相关 │ └── schema/ # 数据库结构 ├── docs/ # 项目文档 ├── scripts/ # 项目脚本 └── README.md # 项目说明 ``` ## 🚀 快速开始 ### 环境要求 - Node.js >= 14.0.0 - MySQL >= 8.0 - npm >= 6.0.0 ### 1. 克隆项目 ```bash git clone cd campus-canteen-feedback ``` ### 2. 数据库配置 ```bash # 创建数据库 mysql -u root -p CREATE DATABASE campus_canteen CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; # 导入数据库结构 mysql -u root -p campus_canteen < database/schema/campus_canteen.sql ``` ### 3. Admin端后端配置 ```bash cd admin/backend # 安装依赖 npm install # 配置环境变量 cp config.env.example config.env # 编辑 config.env 文件,配置数据库连接等信息 # 启动开发服务器 npm start ``` ### 4. 学生端后端配置 ```bash cd student/backend # 安装依赖 npm install # 配置环境变量 cp config.env.example config.env # 启动开发服务器 npm start ``` ### 5. 前端配置 ```bash # Admin端前端 cd admin/frontend npm install npm run dev # 学生端前端 cd student/frontend npm install npm run dev ``` ### 6. 访问应用 - Admin端: http://localhost:9528 - 学生端: http://localhost:8080 - 学生端后端API: http://localhost:3000 - Admin端后端API: http://localhost:3001 ## 📊 数据库设计 ### 核心表结构 - **users**: 用户表(学生、管理员、食堂员工) - **roles**: 角色表 - **user_roles**: 用户角色关联表 - **canteens**: 食堂信息表 - **canteen_managers**: 食堂管理员关联表 - **windows**: 窗口信息表 - **feedbacks**: 反馈记录表 - **feedback_process_history**: 反馈处理历史表 - **feedback_assignments**: 反馈分配表 - **operation_logs**: 操作日志表 - **medals**: 勋章表 - **user_medals**: 用户勋章表 - **point_rules**: 积分规则表 - **user_points**: 用户积分表 - **point_records**: 积分流水表 ### 数据关系 - 一个食堂包含多个窗口 - 一个窗口接收多个反馈 - 一个反馈对应一个处理历史 - 食堂管理员管理特定食堂 - 支持多角色权限控制 ## 🔧 配置说明 ### 环境变量配置 #### Admin端后端 (admin/backend/config.env) ```env # 数据库配置 DB_HOST=localhost DB_PORT=3306 DB_USER=root DB_PASSWORD=your_password DB_NAME=campus_canteen # JWT配置 JWT_SECRET=your_jwt_secret JWT_EXPIRES_IN=7d # 服务器配置 PORT=3001 NODE_ENV=development # 文件上传配置 UPLOAD_PATH=./uploads MAX_FILE_SIZE=5242880 ``` #### 学生端后端 (student/backend/config.env) ```env # 数据库配置 DB_HOST=localhost DB_PORT=3306 DB_USER=root DB_PASSWORD=your_password DB_NAME=campus_canteen # JWT配置 JWT_SECRET=your_jwt_secret JWT_EXPIRES_IN=7d # 服务器配置 PORT=3000 NODE_ENV=development ``` ### 前端配置 ```javascript // admin/frontend/src/utils/request.js const baseURL = 'http://localhost:3001' // student/frontend/src/utils/request.js const baseURL = 'http://localhost:3000' ``` ## 📈 功能模块 ### 仪表板模块 ✅ - 今日反馈数统计 - 平均评分趋势 - 处理率分析 - 平均响应时间 - 评分趋势图表 - 反馈类型分布 ### 反馈管理模块 ✅ - 反馈列表查看 - 反馈状态更新 - 整改任务分配 - 反馈详情查看 - 图片查看功能 - 处理历史记录 - 草稿保存功能 ### 数据报表模块 ✅ - 多维度数据统计 - 时间范围筛选 - 食堂筛选功能 - 图表数据可视化 - 详细数据表格 ### 窗口管理模块 ✅ - 窗口信息管理 - 窗口状态控制 - 窗口统计数据 - 窗口筛选功能 ### 食堂管理模块 ✅ - 食堂信息管理 - 食堂管理员分配 - 食堂员工管理 - 食堂数据统计 ### 用户管理模块 ✅ - 用户信息管理 - 角色权限分配 - 用户状态控制 - 操作日志记录 ## 🔐 权限控制 ### 角色定义 - **student**: 学生用户,可提交和查看反馈 - **canteen_staff**: 食堂员工,处理分配的反馈 - **canteen_manager**: 食堂管理员,管理特定食堂 - **operation_admin**: 运营管理员,管理所有食堂 - **operation_analyst**: 运营分析师,查看统计数据 ### 权限范围 - 食堂员工只能处理分配给自己的反馈 - 食堂管理员只能管理分配的食堂 - 运营管理员可以管理所有食堂 - 学生只能查看和提交反馈 ## 🚀 部署指南 ### 生产环境部署 1. 配置生产环境变量 2. 构建前端项目 3. 配置Nginx反向代理 4. 使用PM2管理Node.js进程 5. 配置SSL证书 ### Docker部署 ```bash # 构建镜像 docker build -t campus-canteen-feedback . # 运行容器 docker run -d -p 3000:3000 -p 3001:3001 campus-canteen-feedback ``` ## 📝 API文档 详细的API文档请参考: - [Admin端API文档](admin/backend/API_DOCUMENTATION.md) - [学生端API文档](student/backend/API_DOCUMENTATION.md) ## 🎯 开发进度 ### ✅ 已完成功能 - [x] 用户认证和权限控制 - [x] 食堂管理端完整功能 - [x] 反馈处理流程 - [x] 数据统计和可视化 - [x] 文件上传功能 - [x] 草稿保存功能 - [x] 多角色权限管理 - [x] 反馈状态流转 - [x] 处理历史记录 - [x] 图片上传和预览 - [x] 用户密码和昵称管理 - [x] 端口冲突解决 - [x] API配置修复 - [x] 登录界面优化 ### 🔄 进行中功能 - [ ] 学生端小程序开发 - [ ] 移动端适配优化 - [ ] 性能优化 ### 📋 待开发功能 - [ ] 消息通知系统 - [ ] 数据导出功能 - [ ] 批量操作功能 - [ ] 系统监控 - [ ] 积分系统完善 - [ ] 勋章系统实现 ## 🐛 已知问题 ### ✅ 已修复 (2025-07-30) - **用户登录密码不匹配问题**:修复了所有15个用户的密码哈希 - **端口冲突问题**:学生端后端(3000) + Admin端后端(3001) - **API地址配置错误**:更新前端API地址配置 - **登录界面说明不一致**:修正登录说明和默认密码 - **数据库字段命名问题**:统一使用snake_case命名规范 - **用户昵称缺失**:为所有用户添加了真实姓名和昵称 ### 🔍 待解决 - 暂无 ## 📊 数据库统计 ### 用户数据 - **总用户数**: 15人 - **运营管理员**: 1人 (admin) - **食堂管理员**: 3人 (canteen1_admin, canteen2_admin, canteen3_admin) - **食堂员工**: 6人 (canteen1_staff1/2, canteen2_staff1/2, canteen3_staff1/2) - **学生用户**: 5人 (student01-05) ### 食堂数据 - **总食堂数**: 3个 (第一食堂、第二食堂、第三食堂) - **总窗口数**: 20个 - **总反馈数**: 10条 ### 系统配置 - **数据库表数**: 18个 - **角色类型**: 5种 (student, canteen_staff, canteen_manager, operation_admin, operation_analyst) - **API端点**: 完整的RESTful API ## 📄 许可证 本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情 ## 📞 联系方式 - 项目维护者: [Your Name] - 邮箱: [your.email@example.com] - 项目地址: [https://github.com/your-username/campus-canteen-feedback] ## 🙏 致谢 感谢所有为这个项目做出贡献的开发者和用户!