# 智能考试系统 **Repository Path**: starry123/RuoVea.Exam ## Basic Information - **Project Name**: 智能考试系统 - **Description**: RuoVea.Exam 是一个基于 .NET Core 8.0 构建的现代化智能考试系统,集成了题目管理、试卷管理、组卷策略、智能组卷、考试记录等完整的考试功能,为教育机构和企业提供了一个高效、灵活的在线考试解决方案。 - **Primary Language**: C# - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-12-16 - **Last Updated**: 2025-12-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # RuoVea.Exam ## 介绍 RuoVea.Exam 是一个基于 .NET Core 8.0 构建的现代化智能考试系统,集成了题目管理、试卷管理、组卷策略、智能组卷、考试记录等完整的考试功能,为教育机构和企业提供了一个高效、灵活的在线考试解决方案。 ## 🛠️ 软件架构 **技术栈**: - **后端**:.NET Core 8.0 + MVC - **前端**:Vue.js 2.6.x + Element UI + Avue + axios - **ORM**:SqlSugar - **认证**:JWT + RuoVea.OmiLogin - **数据库**:默认 SQLite,支持多数据库切换 - **日志**:RuoVea.OmiLog - **国际化**:内置多语言支持 ### 前端技术栈详解 - Vue.js 2.6.x - 核心前端框架 - Element UI - UI组件库 - Avue - 高级表格组件库,提供CRUD表格快速实现 - axios - HTTP客户端,用于前后端数据交互 - i18n国际化支持 - 多语言切换功能 ## 📥 安装与运行 ### **本地开发** 1. **克隆项目**: ```bash git clone https://github.com/yourusername/RuoVea.Exam.git cd RuoVea.Exam ``` 2. **还原依赖**: ```bash dotnet restore ``` 3. **运行项目**: ```bash dotnet run --project RuoVea.Exam.Web ``` 4. **访问系统**: 打开浏览器访问 http://localhost:5000 或 https://localhost:5001 ### **IIS部署** 1. **发布项目**: ```bash dotnet publish -c Release -o ./publish ``` 2. **配置IIS**: - 安装IIS和ASP.NET Core模块 - 创建新网站,指向发布目录 - 配置应用池为无托管代码 3. **启动服务**: 启动IIS中的RuoVea.Exam服务,并通过浏览器访问 #### 5. **Docker部署** 方式1、直接复制代码 控制台运行 ```bash docker run --name RuoVea.Exam-container ^ -p YOU_PORT:8080 ^ -e "ConnectionConfigs:0:DbType=Sqlite" ^ -e "ConnectionConfigs:0:ConnectionString=DataSource=./RuoVea.Exam.db" ^ -e "ConnectionConfigs:0:EnableUnderLine=false" ^ -e TZ=UTC ^ -e TZ=Asia/Shanghai ^ --restart=always ^ crpi-ued86xnwae548w9p.cn-shenzhen.personal.cr.aliyuncs.com/ruovea/RuoVea.Exam-img:latest pause ``` 方式2、docker-compose 部署 在文件下中 执行下面命令 ```bash version: '3.9' services: RuoVea.Exam-img: image: 'crpi-ued86xnwae548w9p.cn-shenzhen.personal.cr.aliyuncs.com/ruovea/RuoVea.Exam-img:latest' restart: always environment: - TZ=Asia/Shanghai - TZ=UTC - 'ConnectionConfigs:0:EnableUnderLine=false' - 'ConnectionConfigs:0:ConnectionString=DataSource=./RuoVea.Exam.db' - 'ConnectionConfigs:0:DbType=Sqlite' ports: - 'YOU_PORT:8080' container_name: RuoVea.Exam-container ``` 启动 运行 ```bash docker-compose up -d ``` 其它配置参数 ```basic -e "ConnectionConfigs:0:DbType=Sqlite" ^ -e "ConnectionConfigs:0:ConnectionString=DataSource=/RuoVea.Exam.db" ^ -e "ConnectionConfigs:0:EnableUnderLine=true" ^ -e "DataAuditing:CreateTime=CreatedAt" ^ -e "DataAuditing:ModifyTime=UpdatedAt" ^ -e "DataAuditing:Creator=CreatedById" ^ -e "DataAuditing:Modifier=UpdatedById" ^ -e "DataAuditing:TenantId=TenantId" ^ -e "DataAuditing:IsDelete=IsDelete" ^ -e "ExceptionLog:Enabled=true" ^ -e "ExceptionLog:LogToFile=true" ^ -e "ExceptionLog:LogMore=true" ^ -e "RequestLog:Enabled=true" ^ -e "RequestLog:LogToFile=true" ^ -e "RequestLog:LogMore=true" ^ -e "RequestLog:IgnoreApis=" ^ -e TZ=Asia/Shanghai ^ ``` ## 📋 使用说明 ### **默认管理员** - **账号**:admin - **密码**:123456 默认用户 - **账号**:ruovea - **密码**:123456 初始化密码可在项目配置文件中配置,初始化后,数据库中的用户密码将是默认密码加密后的数据。提高安全性。 **提示**:首次登录后,建议立即修改默认密码,以确保账户安全。 ### 题目管理功能 **功能说明**:题目管理是系统的核心功能之一,用于管理所有考试题目。 **主要功能**: - 支持多种题目类型:单选题、多选题、判断题、填空题、简答题 - 题目增删改查操作 - 题目状态管理(启用/禁用/草稿) - 题目分类管理 - 批量操作(批量删除、批量修改状态) - 题目详情查看与编辑 **使用场景**: - 教师或管理员创建、编辑和管理考试题目 - 维护题目库,确保题目质量和多样性 ![题目管理](/Doc/img/Question.jpeg) ### 题目导入功能 **功能说明**:支持通过Excel模板批量导入题目,提高题目管理效率。 **主要功能**: - 提供Excel导入模板下载 - 支持批量导入多种类型题目 - 导入数据验证与错误提示 - 导入结果统计与反馈 **使用场景**: - 快速导入大量题目到系统 - 从其他系统迁移题目数据 - 定期更新题目库 ![题目导入](/Doc/img/Question-import.jpeg) ### 试卷管理功能 **功能说明**:用于创建、编辑和管理考试试卷。 **主要功能**: - 手动组卷:自由选择题目组合成试卷 - 自动组卷:基于组卷策略自动生成试卷 - 试卷总分和题目数量自动计算 - 试卷增删改查操作 - 试卷模板管理 - 智能组卷功能 **使用场景**: - 为不同考试创建个性化试卷 - 基于策略快速生成标准化试卷 - 管理历史试卷记录 ![试卷管理](/Doc/img/Paper.jpeg) ### 组卷策略功能 **功能说明**:用于配置自动组卷的规则和参数。 **主要功能**: - 策略基本信息配置(名称、总分、考试时长等) - 题目类型配比设置 - 题目难度分布配置 - 策略状态管理(启用/禁用) - 策略详情配置(每种题型的数量和分值) **使用场景**: - 配置标准化考试的组卷规则 - 根据不同考试需求调整组卷策略 - 实现智能组卷功能 ![组卷策略](/Doc/img/Strategy.jpeg) ### **登录界面** ![Img](/Doc/img/login.png) **操作说明**:输入正确的账号和密码,点击“登录”按钮进入系统。如果忘记密码,可以点击“找回密码”进行重置。 ### **用户管理** ![Img](/Doc/img/user.png) **功能描述**:在用户管理界面,可以查看所有用户的基本信息,包括用户名、注册日期、最后登录时间等。支持用户搜索、筛选和批量操作。 ### **用户添加** ![Img](/Doc/img/user-add.png) **操作说明**:点击“添加用户”按钮,填写用户的基本信息,如用户名、密码、邮箱等,然后点击“创建”完成新用户添加。 ### **系统设置** ![Img](/Doc/img/setting.png) **功能描述**:系统设置界面允许管理员配置软件的各项参数,如数据备份路径、邮件服务器设置、通知模板等。 ### **系统设置-编辑** ![Img](/Doc/img/setting-edit.png) **操作说明**:选择需要修改的设置项,点击“编辑”按钮,修改参数后点击“保存”应用更改。 --- ### **系统日志** - **差异日志** ![Img](/Doc/img/log-diff.png) **描述**:记录系统中数据的变更历史,帮助管理员追踪数据修改情况。 - **访问日志** ![Img](/Doc/img/log-vis.png) **描述**:记录用户的登录和访问行为,提供详细的访问时间、IP地址等信息。 - **操作日志** ![Img](/Doc/img/log-op.png) **描述**:记录管理员和用户的操作行为,如添加、编辑、删除数据等。 - **异常日志** ![Img](/Doc/img/log-ex.png) **描述**:记录系统运行中的错误和异常情况,帮助开发者快速定位和解决问题。 --- ### **系统设置后-登录界面** ![Img](/Doc/img/login-after.png) **说明**:完成系统设置后,登录界面会根据新的配置进行更新,确保用户体验的一致性。 ### 项目特点 - **完整的考试功能**:包含题目管理、试卷管理、组卷策略、智能组卷、考试记录等核心功能 - **灵活的组卷方式**:支持手动组卷和基于策略的自动智能组卷 - **多种题目类型**:支持单选题、多选题、判断题、填空题、简答题等多种题型 - **智能题目推荐**:基于策略规则自动生成符合要求的试卷 - **响应式设计**:适配不同屏幕尺寸,提供良好的用户体验 - **完善的日志系统**:包含操作日志、访问日志、异常日志,便于系统监控和问题排查 - **支持多数据库**:默认使用SQLite,可轻松切换到其他数据库 - **国际化支持**:内置多语言支持,便于国际化部署 - **Docker部署**:支持Docker容器化部署,简化环境配置 - **易扩展架构**:采用分层架构设计,便于功能扩展和二次开发 ### 运行与部署 #### 1. **安全建议** - 生产环境务必更换默认的JWT密钥,使用强随机密钥 - 调整合适的JWT过期时间,平衡安全性和用户体验 - 生产环境建议使用HTTPS传输,防止数据被窃取 - 定期更换JWT密钥,特别是在系统升级或安全事件发生时 - 限制管理员账号的访问IP,增强系统安全性 #### 2. **性能优化** - 启用缓存机制,减少数据库频繁访问 - 优化查询语句,添加适当索引 - 启用异步操作,提高系统并发处理能力 - 对于大规模考试场景,考虑使用分布式部署 #### 3. **部署建议** - **Docker部署**:推荐使用Docker容器化部署,简化环境配置 - **反向代理**:配置Nginx/Apache作为反向代理,提高系统稳定性 - **负载均衡**:对于高并发场景,启用负载均衡 - **数据库优化**:生产环境建议使用MySQL或SQL Server,而非SQLite - **定期备份**:配置数据库定期备份,防止数据丢失 #### 4. **开发建议** - 遵循分层架构设计,保持代码结构清晰 - 使用单元测试和集成测试确保功能正确性 - 遵循RESTful API设计规范 - 前端开发使用统一的axios实例(`this.$http`)进行API调用 - 定期进行代码审查,确保代码质量 ### 许可证 本项目使用 MIT 许可证,请查看 LICENSE 文件获取更多详情。