2025-12-22 18:29:23 +08:00
2025-12-22 18:29:23 +08:00
2025-12-23 00:35:57 +08:00
2025-12-19 11:47:24 +08:00
2025-12-22 18:29:23 +08:00

问卷调查系统

功能完善的在线问卷调查系统,支持多种题型、随机抽题、免注册答题等特性。

功能特性

用户端功能

  • 免注册答题:用户无需注册,填写基本信息即可开始答题
  • 信息验证:严格的姓名和手机号格式验证
  • 多种题型:支持单选、多选、判断、文字描述四种题型
  • 随机抽题:根据配置随机生成试卷,确保题目多样性
  • 实时反馈:答题完成后立即显示得分和答案详情

管理端功能

  • 题库管理支持Excel导入和手动编辑题目
  • 题型配置:灵活设置各题型比例和试卷总分
  • 数据统计:详细的答题记录和统计分析
  • 数据导出:支持导出答题记录和统计报表

技术架构

  • 前端React 18 + TypeScript + Ant Design + Tailwind CSS
  • 后端Express.js + TypeScript
  • 数据库SQLite3
  • 构建工具Vite
  • 文件处理Multer + XLSX

快速开始

安装依赖

npm install

启动开发服务器

npm run dev

构建生产版本

npm run build

启动生产服务器

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

Description
No description provided
Readme 2 MiB
Languages
TypeScript 97.8%
JavaScript 1.4%
CSS 0.7%
HTML 0.1%