本项目是一个基于 **MVC 架构模式** 的 B/S 架构在线考试系统,支持管理员、教师和学生三种角色的完整业务流程。系统采用 Node.js + Express 作为后端框架,使用 SQLite(sql.js)作为数据库,EJS 作为视图模板引擎。
#### 后端技术
- **Node.js**:JavaScript 运行环境
- **Express 4.x**:Web 应用框架
- **sql.js 1.13.0**:SQLite 的 JavaScript 实现
- **bcrypt 5.1.1**:密码加密库
- **express-session 1.17.3**:Session 管理
- **body-parser 1.20.2**:请求体解析
#### 前端技术
- **EJS 3.1.9**:模板引擎
- **HTML/CSS/JavaScript**:前端基础技术
#### 开发工具
- **nodemon 3.0.1**:开发时自动重启
客户端请求
↓
路由层(Routes)- 定义URL路由和权限控制
↓
控制器层(Controllers)- 处理业务逻辑
↓
模型层(Models)- 数据库操作
↓
数据库层(SQLite/sql.js)
↓
视图层(Views/EJS)- 渲染页面
↓
响应返回客户端
使用 **sql.js** 作为 SQLite 的 JavaScript 实现
- 数据库文件存储在 `data/exam.db`
- 实现了 SQLite3 API 兼容包装器,保证代码兼容性
- 支持数据库文件的自动保存和加载
### 6.2 认证机制
- **Session 认证**:使用 express-session 管理用户会话
- **密码加密**:使用 bcrypt 进行密码哈希(10轮加密)
- **角色验证**:路由中间件检查用户角色
### 6.3 题目类型处理
- **单选题/多选题**:选项以 JSON 格式存储
- **判断题**:答案存储为 "正确"/"错误"
- **主观题**:答案存储为文本内容
### 6.4 评分机制
- **客观题(单选、多选、判断)**:系统自动评分
- **主观题**:需要教师手动评分(当前版本为自动评分,可扩展)
## 七、项目特点
1. **清晰的 MVC 架构**:代码结构清晰,易于维护和扩展
2. **完整的权限管理**:三种角色,权限明确
3. **灵活的课程分配机制**:支持教师-课程-班级的灵活分配
4. **多题型支持**:支持单选、多选、判断、主观题
5. **数据持久化**:使用 SQLite 数据库,数据安全可靠
6. **友好的用户界面**:基于 EJS 模板的响应式界面