Files
Web_BLV_OA_Exam_Prod/README.md
2025-12-19 11:47:24 +08:00

140 lines
3.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 问卷调查系统
功能完善的在线问卷调查系统,支持多种题型、随机抽题、免注册答题等特性。
## 功能特性
### 用户端功能
- **免注册答题**:用户无需注册,填写基本信息即可开始答题
- **信息验证**:严格的姓名和手机号格式验证
- **多种题型**:支持单选、多选、判断、文字描述四种题型
- **随机抽题**:根据配置随机生成试卷,确保题目多样性
- **实时反馈**:答题完成后立即显示得分和答案详情
### 管理端功能
- **题库管理**支持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