# 问卷调查系统 功能完善的在线问卷调查系统,支持多种题型、随机抽题、免注册答题等特性。 ## 功能特性 ### 用户端功能 - **免注册答题**:用户无需注册,填写基本信息即可开始答题 - **信息验证**:严格的姓名和手机号格式验证 - **多种题型**:支持单选、多选、判断、文字描述四种题型 - **随机抽题**:根据配置随机生成试卷,确保题目多样性 - **实时反馈**:答题完成后立即显示得分和答案详情 ### 管理端功能 - **题库管理**:支持Excel导入和手动编辑题目 - **题型配置**:灵活设置各题型比例和试卷总分 - **数据统计**:详细的答题记录和统计分析 - **数据导出**:支持导出答题记录和统计报表 ## 技术架构 - **前端**:React 18 + TypeScript + Ant Design + Tailwind CSS - **后端**:Express.js + TypeScript - **数据库**:SQLite3 - **构建工具**:Vite - **文件处理**:Multer + XLSX ## 快速开始 ### 安装依赖 ```bash npm install ``` ### 启动开发服务器 ```bash npm run dev ``` ### 构建生产版本 ```bash npm run build ``` ### 启动生产服务器 ```bash npm start ``` ## 管理员账号 - 用户名:admin - 密码:admin123 ## API接口 ### 用户相关 - `POST /api/users` - 创建用户 - `GET /api/users/:id` - 获取用户信息 - `POST /api/users/validate` - 验证用户信息 ### 题库管理 - `GET /api/questions` - 获取题目列表 - `POST /api/questions` - 创建题目 - `PUT /api/questions/:id` - 更新题目 - `DELETE /api/questions/:id` - 删除题目 - `POST /api/questions/import` - Excel导入题目 ### 答题相关 - `POST /api/quiz/generate` - 生成随机试卷 - `POST /api/quiz/submit` - 提交答题 - `GET /api/quiz/records/:userId` - 获取用户答题记录 ### 管理员相关 - `POST /api/admin/login` - 管理员登录 - `GET /api/admin/config` - 获取抽题配置 - `PUT /api/admin/config` - 更新抽题配置 - `GET /api/admin/statistics` - 获取统计数据 ## 数据库设计 ### 用户表 (users) - id: 用户ID - name: 姓名 - phone: 手机号 - created_at: 创建时间 ### 题目表 (questions) - id: 题目ID - content: 题目内容 - type: 题型 - options: 选项(JSON) - answer: 标准答案 - score: 分值 - created_at: 创建时间 ### 答题记录表 (quiz_records) - id: 记录ID - user_id: 用户ID - total_score: 总得分 - correct_count: 正确题数 - total_count: 总题数 - created_at: 创建时间 ### 答题答案表 (quiz_answers) - id: 答案ID - record_id: 记录ID - question_id: 题目ID - user_answer: 用户答案 - score: 得分 - is_correct: 是否正确 - created_at: 创建时间 ## Excel导入格式 Excel文件需要包含以下列: - 题目内容(必填) - 题型(单选/多选/判断/文字描述) - 标准答案(根据题型格式要求) - 分值(数字类型) - 选项(单选/多选题需要,用|分隔) ## 开发规范 - 使用TypeScript进行类型检查 - 遵循React最佳实践 - 使用ESLint进行代码检查 - 使用Prettier进行代码格式化 ## 部署说明 1. 构建项目:`npm run build` 2. 上传构建文件到服务器 3. 安装生产依赖:`npm ci --only=production` 4. 启动服务:`npm start` 5. 配置反向代理(如Nginx) ## 许可证 MIT License