Files
Web_BLV_OA_Exam_Prod/README.md

140 lines
3.3 KiB
Markdown
Raw Normal View History

# 问卷调查系统
2025-12-18 19:03:08 +08:00
功能完善的在线问卷调查系统,支持多种题型、随机抽题、免注册答题等特性。
## 功能特性
### 用户端功能
- **免注册答题**:用户无需注册,填写基本信息即可开始答题
- **信息验证**:严格的姓名和手机号格式验证
- **多种题型**:支持单选、多选、判断、文字描述四种题型
- **随机抽题**:根据配置随机生成试卷,确保题目多样性
- **实时反馈**:答题完成后立即显示得分和答案详情
### 管理端功能
- **题库管理**支持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
## 许可证
2025-12-19 11:45:54 +08:00
MIT License