.net core mvc在线考试系统asp.net考试系统源码考试管理系统 主要技术: 基于.net core mvc架构和sql server数据库,数据库访问采用EF core code first,前端采用vue.js和bootstrap。 功能模块: 系统包括前台和后台两个部分,分三种角色登录。 管理员登录后台,拥有科目管理,题库管理,考试管理,成绩管理,用户管理等功能。 教师登录后台,可进行题库管理,考试管理和成绩管理。 用户登录前台,可查看考试列表,参加考试,查看已考试的结果,修改密码等。 系统实现了国际化,支持中英两种语言。 源码打包: 包含全套源码,数据库文件,需求分析和代码说明文档。 运行环境: 运行需vs2019或者以上版本,sql server2012或者以上版本。
一、系统概述
本在线考试系统专为艾默生过程控制流量技术有限公司设计,基于.Net Core 3.1和C#开发,采用B/S架构,支持中英文双语切换。系统按照权限层级划分为管理员子系统、教师子系统和员工子系统,实现了从题库管理、试卷生成、在线考试到成绩统计的全流程数字化管理,核心目标是为企业内部培训考核提供高效、便捷、可追溯的解决方案。
二、系统架构与技术栈
(一)整体架构
系统采用分层架构设计,分为表现层、业务逻辑层(BLL)、数据访问层(DAL)和工具层(Utility),各层职责清晰、解耦性强:
- 表现层(Web):基于ASP.NET Core MVC开发,负责用户交互、请求接收与响应展示,包含控制器、视图和静态资源。
- 业务逻辑层(BLL):封装核心业务逻辑,提供服务类和数据传输对象(DTO),协调数据访问层完成业务操作。
- 数据访问层(DAL):基于Entity Framework Core实现数据持久化,定义实体类和数据库上下文,负责与SQL Server数据库交互。
- 工具层(Utility):提供通用工具类,包括加密、枚举定义、HTML处理等功能。
(二)核心技术栈
| 技术类别 | 具体技术/框架 | 应用场景 |
|---|---|---|
| 开发框架 | ASP.NET Core 3.1 | Web应用开发、控制器路由、依赖注入 |
| 编程语言 | C# | 全栈业务逻辑编写 |
| 数据访问 | Entity Framework Core 3.1 | 数据库CRUD操作、实体映射 |
| 数据库 | SQL Server | 数据存储(用户、试题、试卷、成绩等) |
| 前端技术 | Bootstrap、Font Awesome、jQuery | 页面布局、样式设计、前端交互 |
| 其他 | JWT Cookie认证、Excel导入(EPPlus) | 用户身份验证、批量题库导入 |
三、核心模块与代码功能详解
(一)数据模型设计(DAL层)
数据访问层定义了12个核心实体类,覆盖系统所有业务数据,关键实体如下:
- User(用户):存储用户基本信息,包含角色ID(RoleId)区分管理员(1)、教师(2)、员工(3),关联字段包括工号(EmployeeNo)、生产线(ProductionLine)等企业专属属性。
- Question(试题):支持判断题、选择题(含多选题)、填空题、问答题四种题型,包含题干(Content)、选项(OptionA-F)、答案(Answer)、分值(Score)、难度系数(DifficultyDegree)等字段。
- Examination(试卷):存储试卷基本信息,关联科目(SubjectId)、考试时长(Time)、总分(Score),通过Examination_Question表与试题建立多对多关系。
- ExaminationRule(试卷规则):定义试卷生成规则,指定各题型数量(ChoiceCount、FillCount等)、考试时长和总分,支持自动组卷。
- User_Examination(用户考试记录):记录用户参与考试的结果,包含总分(Score)、自动评分(AutoScore)、手动评分(ManualScore)和考试状态(Status:0未批改/1已批改)。
- UserExaminationAnswer(用户答题记录):存储用户每道题的作答情况,包含是否批改(IsMark)、是否正确(IsCorrect)和得分(Score)。
(二)业务逻辑层(BLL层)
业务逻辑层通过服务类封装核心业务,各服务类功能如下:
1. UserService(用户服务)
- 核心功能:用户登录、注册、密码修改、用户信息管理、用户科目分配。
- 关键代码解析:
csharp
public async Task Login(string name, string password)
{
var pwd = Encrypt.MD5Encrypt(password); // 密码MD5加密
var user = await _dbContext.Users.FirstOrDefaultAsync(x => x.Name == name && x.Password == pwd);
return user;
}
登录逻辑中对密码进行MD5加密验证,确保数据安全;支持按角色查询用户权限内的科目,管理员默认拥有所有科目权限。
2. QuestionService(试题服务)
- 核心功能:试题CRUD、题库查询、Excel批量导入。
- 关键代码解析:
csharp
public async Task ImportQuestions(string filePath)
{
using (var fs = System.IO.File.Open(filePath, FileMode.Open, FileAccess.Read))
using (var package = new ExcelPackage(fs))
{
var worksheet = package.Workbook.Worksheets[1];
// 循环读取Excel行数据,转换为Question实体
for (var i = 2; i <= worksheet.Dimension.Rows; i ++)
{
// 解析题干、题型、科目、选项、答案等字段
var question = new Question()
{
Content = worksheet.Cells[i, 1].Value.ToString(),
TypeId = types.FirstOrDefault(x => x.Type == worksheet.Cells[i, 2].Value.ToString())?.Id ?? 0,
// 其他字段赋值...
};
questions.Add(question);
}
return await AddQuestions(questions);
}
}
支持通过Excel批量导入试题,自动解析题型和科目映射,大幅提升题库搭建效率。
3. ExaminationService(试卷服务)
- 核心功能:试卷CRUD、自动/手动组卷、用户考试提交、试卷批改。
- 关键代码解析:
csharp
public async Task AddAutoExamination(int ruleId, string title, List questionIds)
{
var rule = awaitdbContext.ExaminationRules.FirstOrDefaultAsync(x => x.Id == ruleId);
var score = awaitdbContext.Questions.Where(x => questionIds.Contains(x.Id)).SumAsync(x => x.Score);
var model = new Examination()
{
Title = title,
SubjectId = rule.SubjectId,
Score = score,
Time = rule.Time,
CreateTime = DateTime.Now,
UpdateTime = DateTime.Now
};
dbContext.Examinations.Add(model);
awaitdbContext.SaveChangesAsync();
// 建立试卷与试题的关联关系
foreach (var quesiondId in questionIds)
{
dbContext.ExaminationQuestions.Add(new ExaminationQuestion { ExaminationId = model.Id, QuestionId = quesiondId });
}
return awaitdbContext.SaveChangesAsync();
}
自动组卷功能根据试卷规则从题库中随机选择对应数量和难度的试题,自动计算总分并生成试卷;支持手动选择试题组卷,满足个性化试卷需求。
4. AchievementService(成绩服务)
- 核心功能:成绩统计、分数段分析、错题率统计。
- 关键代码解析:
csharp
public async Task GetAchievementStatistics(int examId)
{
// 查询该考试所有已批改成绩
var exams = await (from a indbContext.UserExaminations
.Where(x => x.ExaminationId == examId && x.Status == (int)PaperStatus.Marked)
join b indbContext.Examinations on a.ExaminationId equals b.Id
join c indbContext.Subjects on b.SubjectId equals c.Id
select new { a.Score, b.Title, c.Title }).ToListAsync();
// 计算平均分、最高分、最低分
var avgScore = (double)exams.Sum(x => x.Score) / exams.Count();
var max = exams.Max(x => x.Score);
var min = exams.Min(x => x.Score);
// 分数段统计(0-10分至90-100分)
var section = new Dictionary();
section.Add("0-10", exams.Count(x => x.Score >= 0 && x.Score < 10));
// 其他分数段统计...
// 错题率统计
statistis.Questions = await GetQuestionStatistics(examId);
return statistis;
}
支持按考试维度统计参与人数、平均分、分数段分布,以及每道题的错误率,为教学评估提供数据支撑。
(三)表现层(Web层)
表现层通过控制器接收用户请求,返回JSON数据或视图,核心控制器功能如下:
1. HomeController(首页控制器)
- 负责用户登录、注册、退出登录和语言切换功能,支持中英文双语切换(通过Cookie存储语言偏好)。
- 登录成功后通过Cookie存储用户ID和角色信息,用于后续权限验证。
2. AdminController(管理员控制器)
- 仅管理员可访问,支持科目管理、试卷规则管理、用户管理(新增/删除/分配科目)。
- 提供图片上传和Excel导入接口,支持科目图标设置和题库批量导入。
3. QuestionController(试题控制器)
- 管理员和教师可操作,提供试题CRUD、题库查询和Excel导入功能,支持按科目、题型、关键字筛选试题。
4. ExaminationController(试卷控制器)
- 支持试卷管理、自动/手动组卷、试卷预览和批改功能,教师可批量批改问答题,管理员可查看所有试卷批改情况。
5. ClientController(员工控制器)
- 员工端核心控制器,支持在线考试(限时作答)、成绩查询(个人成绩、排名、科目最高分/平均分)。
- 考试提交后自动批改客观题,主观题需等待教师批改后更新总分。
(四)工具层(Utility)
- Encrypt:提供MD5加密功能,用于密码加密存储。
- Enum:定义用户角色(UserRole)和试卷状态(PaperStatus)枚举,统一系统状态管理。
- HtmlHelper:提供HTML标签移除方法,用于试题内容净化展示。
四、关键业务流程
(一)试卷生成流程
- 管理员/教师创建试卷规则(指定科目、各题型数量、考试时长);
- 系统根据规则从题库中随机选择符合条件的试题(按难度系数筛选);
- 生成试卷并关联试题,支持手动调整试题内容;
- 试卷发布后,员工可在权限内查看并参与考试。
(二)在线考试流程
- 员工选择未参与的考试,系统验证权限后加载试卷(隐藏答案和解析);
- 考试过程中记录答题状态,超时自动提交;
- 提交后系统自动批改客观题(判断题、选择题、填空题),主观题标记为待批改;
- 教师批改主观题后,系统更新总分并生成成绩排名。
(三)成绩统计流程
- 管理员/教师选择考试科目和时间范围;
- 系统统计该考试的参与人数、平均分、最高分、最低分;
- 按0-10分、10-20分...90-100分划分分数段,统计各段人数;
- 展示每道题的错误率,支持按错误率排序优化题库。
五、系统特色功能
- 精细化权限控制:基于角色的权限管理(RBAC),管理员拥有最高权限,教师仅能管理所属科目,员工仅能参与考试和查询成绩。
- 灵活组卷策略:支持自动组卷(按规则随机选题)和手动组卷(自定义选题),满足不同考核场景需求。
- 批量数据导入:支持Excel批量导入试题,大幅提升题库搭建效率,导入模板包含题干、题型、科目、选项、答案等字段。
- 多维度成绩分析:提供分数段分布、错题率统计等数据,帮助管理员和教师精准定位教学薄弱点。
- 双语切换支持:通过ASP.NET Core本地化功能,支持中英文界面切换,适配企业国际化需求。
- 客观题自动批改:判断题、选择题、填空题提交后立即批改并显示得分,主观题支持教师在线批改并标记得分。
六、总结
本在线考试系统基于.Net Core构建,充分结合企业内部培训考核需求,实现了从题库管理、试卷生成、在线考试到成绩统计的全流程数字化。系统架构清晰、功能完善,具备良好的扩展性和易用性,可有效降低企业培训考核的人力成本,提升考核效率和数据追溯能力。后续可扩展功能包括试题解析展示、考试防作弊机制、移动端适配等,进一步优化用户体验。
.net core mvc在线考试系统asp.net考试系统源码考试管理系统 主要技术: 基于.net core mvc架构和sql server数据库,数据库访问采用EF core code first,前端采用vue.js和bootstrap。 功能模块: 系统包括前台和后台两个部分,分三种角色登录。 管理员登录后台,拥有科目管理,题库管理,考试管理,成绩管理,用户管理等功能。 教师登录后台,可进行题库管理,考试管理和成绩管理。 用户登录前台,可查看考试列表,参加考试,查看已考试的结果,修改密码等。 系统实现了国际化,支持中英两种语言。 源码打包: 包含全套源码,数据库文件,需求分析和代码说明文档。 运行环境: 运行需vs2019或者以上版本,sql server2012或者以上版本。