第一版提交,答题功能OK,题库管理待完善
This commit is contained in:
140
README.md
140
README.md
@@ -1,2 +1,140 @@
|
||||
# Web_BLV_OA_Exam_Prod
|
||||
# 问卷调查系统
|
||||
|
||||
功能完善的在线问卷调查系统,支持多种题型、随机抽题、免注册答题等特性。
|
||||
|
||||
## 功能特性
|
||||
|
||||
### 用户端功能
|
||||
- **免注册答题**:用户无需注册,填写基本信息即可开始答题
|
||||
- **信息验证**:严格的姓名和手机号格式验证
|
||||
- **多种题型**:支持单选、多选、判断、文字描述四种题型
|
||||
- **随机抽题**:根据配置随机生成试卷,确保题目多样性
|
||||
- **实时反馈**:答题完成后立即显示得分和答案详情
|
||||
|
||||
### 管理端功能
|
||||
- **题库管理**:支持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
|
||||
Reference in New Issue
Block a user