导航菜单
首页 >  智能化考试平台介绍怎么写  > 微信小程序考试系统

微信小程序考试系统

作者简介:全栈开发工程,从事Java、Python、前端、小程序方面的开发和研究,对大数据应用与开发比较感兴趣,

主要内容:Java项目、前端项目、Python项目、小程序开发、大数据项目、单片机

收藏点赞不迷路  关注作者有好处

文末获取源码 

感谢您的关注,请收藏以免忘记,点赞以示鼓励,评论给以建议,爱你哟

项目编号:BS-GX-067

一,项目简介

随着计算机技术的不断发展,我们的日常生活和工作都与计算机技术的关系越来越密切。计算机技术的发展改变了我们日常的生活和工作习惯,也改变了社会的发展速度,使得我们的生活更加便利和高效。伴随着计算机技术发展起来的互联网技术将我们的生活带领进信息化时代,改变了我们的学习和工作环境,例如我们经常面对的考试也随着互联网技术的发展产生了改变,伴随着信息技术的发展,在线无纸化的考试系统应运而生,不仅彻底改变了传统纸质考试的习惯和环境,更是提高了考试效率,保证了考试效果,达到了考试目的[1]。传统的纸质考试具有很多局限性和不足,主要包括以下几点:

1.传统纸质考试需要较多的人力资源和时间资源进行题目的设定,同时题目的难易程度和考核价值水平很难达到基本的要求;

2.传统纸质考试的阅卷采用人工的方式,人工阅卷难免会出现阅卷差错或者分数合算差错,这也会对考试的效果造成影响;

3.传统纸质考试的人工阅卷模式也会浪费大量的人力资源和时间资源,不能保证工作效率和工作质量;

4.传统纸质考试对考试的总结能力较差,不能够全面具体的分析考试结果,教师也很难得到基本的考试结果分析的数据信息,而这些数据信息是提高教学质量和教学效果的关键因素;

5.传统纸质考试对考试时间以及考试纪律的要求不能达到统一,这也会影响到考试的公平性。根据以上分析的传统纸质考试的不足之处,新型的结合计算机技术以及互联网技术的在线考试系统应运而生,不仅通过一种新的技术解决了传统纸质考试的基本问题,还提供了一种新的考试思路和考试理念,纠正了传统纸质考试的弊端,提供更加合理有效的考试过程。

二,环境介绍

三,技术说明 后端系统前端系统微信小程序spring-boot 2.1.6.RELEASEvue 采用新版,使用了vue-cli4搭建的系统iView 主题样式spring-boot-security 用户登录验证element-ui 最流行的vue UI框架undertow web容器vue-element-admin 模版mybatis/mybatis_plusecharts 图表统计hikari 速度最快的数据库连接池ueditor 题目编辑器 四,功能列表 4.1 学生系统功能 模块介绍登录用户名、密码注册年级、用户名、密码任务中心管理员发布的年级任务,每个学生只能做一次考试题干支持文本、图片、数学公式、表格等,学生答题支持:文本固定试卷可重复练习、自行批改的试卷时段试卷在时间限制内,可重复练习、自行批改的试卷考试记录查看答卷记录和试卷信息错题本答错题目会自动进入错题本,显示题目基本信息个人信息显示学生个人资料更新信息修改个人资料、头像个人动态显示用户最近的个人动态消息中心用于接收管理员发送的消息 4.2 管理系统功能 模块介绍登录用户名、密码主页试卷总数、题目总数、用户活跃度、题目月数量学生列表显示系统所有的学生,新增、修改、删除、禁用管理员列表显示系统所有的管理员,新增、修改、删除、禁用学科列表学科查询、修改、删除学科创编创建学科试卷列表试卷查询、修改、删除试卷创编创建的试卷为时段试卷、固定试卷、任务试卷题目列表题目查询、修改、删除题目创建题目支持单选题、多选题、判断题、填空题、简答题,题干支持文本、图片、表格、数学公式任务列表任务查询、修改、删除消息列表显示已发送的消息,消息已读人数等信息消息发送发送消息给多个用户用户日志显示所有用户日志个人资料显示管理员用户名、真实姓名时间线显示管理员创建时间修改资料修改姓名、手机号 4.3 小程序功能 模块介绍登录用户登录登出功能,登录会自动绑定微信账号,登出会解绑注册年级、用户名、密码任务中心管理员发布的年级任务,每个学生只能做一次考试题干支持文本、图片、数学公式、表格等,学生答题支持:文本固定试卷可重复练习、自行批改的试卷时段试卷在时间限制内,可重复练习、自行批改的试卷考试记录查看答卷记录和试卷信息错题本答错题目会自动进入错题本,显示题目基本信息个人信息显示学生个人资料更新信息修改个人资料、头像个人动态显示用户最近的个人动态消息中心用于接收管理员发送的消息五,数据库设计

仅展示部分数据库字段设计

5.1 试卷表 字段名类型注释idintnamevarchar试卷名称subject_idint学科paper_typeint试卷类型( 1.固定试卷 4.时段试卷 6.任务试卷 )grade_levelint年级scoreint试卷总分(千分制)question_countint题目数量suggest_timeint建议时长(分钟)limit_start_timedatetime时段试卷 开始时间limit_end_timedatetime时段试卷 结束时间frame_text_content_idint试卷框架 内容为JSONcreate_userintcreate_timedatetimedeletedbittask_exam_idint 5.2 试卷答案表 字段名类型注释idintexam_paper_idintpaper_namevarchar试卷名称paper_typeint试卷类型( 1.固定试卷 4.时段试卷 6.任务试卷 )subject_idint学科system_scoreint系统判定得分user_scoreint最终得分(千分制)paper_scoreint试卷总分question_correctint做对题目数量question_countint题目总数量do_timeint做题时间(秒)statusint试卷状态(1待判分 2完成)create_userint学生create_timedatetime提交时间task_exam_idint 5.3 题目表 字段名类型注释idintquestion_typeint1.单选题 2.多选题 3.判断题 4.填空题 5.简答题subject_idint学科scoreint题目总分(千分制)grade_levelint级别difficultint题目难度correcttext正确答案info_text_content_idint题目 填空、 题干、解析、答案等信息create_userint创建人statusint1.正常create_timedatetime创建时间deletedbit 5.4 学科表 字段名类型注释idintnamevarchar语文 数学 英语 等levelint年级 (1-12) 小学 初中 高中 大学level_namevarchar一年级、二年级等item_orderint排序deletedbit 5.5 用户表 字段名类型注释idintuser_uuidvarcharuser_namevarchar用户名passwordvarcharreal_namevarchar真实姓名ageintsexint1.男 2女birth_daydatetimeuser_levelint学生年级(1-12)phonevarcharroleint1.学生 3.管理员statusint1.启用 2禁用image_pathvarchar头像地址create_timedatetimemodify_timedatetimelast_active_timedatetimedeletedbit是否删除wx_open_idvarchar微信openId 5.6 用户日志表 字段名类型注释idintuser_idint用户iduser_namevarchar用户名real_namevarchar真实姓名contenttext内容create_timedatetime时间

其他表的设计省略............

六,系统展示 6.1 后台管理 主页

用户管理 

试卷管理

题目管理 

添加题目

添加试卷 

 

任务管理

教育管理 

成绩管理

 6.2 学生端 首页登录与注册

学生端首页 

试卷中心 

考试记录 

错题本

 个人中心

6.3 小程序端 登录与注册

 

首页 

试卷考试 

考试记录 

我的 

七,核心代码展示 @Servicepublic class TaskExamServiceImpl extends BaseServiceImpl implements TaskExamService {protected final static ModelMapper modelMapper = ModelMapperSingle.Instance();private final TaskExamMapper taskExamMapper;private final TextContentService textContentService;private final ExamPaperMapper examPaperMapper;@Autowiredpublic TaskExamServiceImpl(TaskExamMapper taskExamMapper, TextContentService textContentService, ExamPaperMapper examPaperMapper) {super(taskExamMapper);this.taskExamMapper = taskExamMapper;this.textContentService = textContentService;this.examPaperMapper = examPaperMapper;}@Overridepublic PageInfo page(TaskPageRequestVM requestVM) {return PageHelper.startPage(requestVM.getPageIndex(), requestVM.getPageSize(), "id desc").doSelectPageInfo(() ->taskExamMapper.page(requestVM));}@Override@Transactionalpublic void edit(TaskRequestVM model, User user) {ActionEnum actionEnum = (model.getId() == null) ? ActionEnum.ADD : ActionEnum.UPDATE;TaskExam taskExam = null;if (actionEnum == ActionEnum.ADD) {Date now = new Date();taskExam = modelMapper.map(model, TaskExam.class);taskExam.setCreateUser(user.getId());taskExam.setCreateUserName(user.getUserName());taskExam.setCreateTime(now);taskExam.setDeleted(false);//保存任务结构TextContent textContent = textContentService.jsonConvertInsert(model.getPaperItems(), now, p -> {TaskItemObject taskItemObject = new TaskItemObject();taskItemObject.setExamPaperId(p.getId());taskItemObject.setExamPaperName(p.getName());return taskItemObject;});textContentService.insertByFilter(textContent);taskExam.setFrameTextContentId(textContent.getId());taskExamMapper.insertSelective(taskExam);} else {taskExam = taskExamMapper.selectByPrimaryKey(model.getId());modelMapper.map(model, taskExam);TextContent textContent = textContentService.selectById(taskExam.getFrameTextContentId());//清空试卷任务的试卷Id,后面会统一设置List paperIds = JsonUtil.toJsonListObject(textContent.getContent(), TaskItemObject.class).stream().map(d -> d.getExamPaperId()).collect(Collectors.toList());examPaperMapper.clearTaskPaper(paperIds);//更新任务结构textContentService.jsonConvertUpdate(textContent, model.getPaperItems(), p -> {TaskItemObject taskItemObject = new TaskItemObject();taskItemObject.setExamPaperId(p.getId());taskItemObject.setExamPaperName(p.getName());return taskItemObject;});textContentService.updateByIdFilter(textContent);taskExamMapper.updateByPrimaryKeySelective(taskExam);}//更新试卷的taskIdList paperIds = model.getPaperItems().stream().map(d -> d.getId()).collect(Collectors.toList());examPaperMapper.updateTaskPaper(taskExam.getId(), paperIds);model.setId(taskExam.getId());}@Overridepublic TaskRequestVM taskExamToVM(Integer id) {TaskExam taskExam = taskExamMapper.selectByPrimaryKey(id);TaskRequestVM vm = modelMapper.map(taskExam, TaskRequestVM.class);TextContent textContent = textContentService.selectById(taskExam.getFrameTextContentId());List examResponseVMS = JsonUtil.toJsonListObject(textContent.getContent(), TaskItemObject.class).stream().map(tk -> {ExamPaper examPaper = examPaperMapper.selectByPrimaryKey(tk.getExamPaperId());ExamResponseVM examResponseVM = modelMapper.map(examPaper, ExamResponseVM.class);examResponseVM.setCreateTime(DateTimeUtil.dateFormat(examPaper.getCreateTime()));return examResponseVM;}).collect(Collectors.toList());vm.setPaperItems(examResponseVMS);return vm;}@Overridepublic List getByGradeLevel(Integer gradeLevel) {return taskExamMapper.getByGradeLevel(gradeLevel);}} @Servicepublic class AuthenticationServiceImpl implements AuthenticationService {private final UserService userService;private final SystemConfig systemConfig;@Autowiredpublic AuthenticationServiceImpl(UserService userService, SystemConfig systemConfig) {this.userService = userService;this.systemConfig = systemConfig;}/** * @param username username * @param password password * @return boolean */@Overridepublic boolean authUser(String username, String password) {User user = userService.getUserByUserName(username);return authUser(user, username, password);}@Overridepublic boolean authUser(User user, String username, String password) {if (user == null) {return false;}String encodePwd = user.getPassword();if (null == encodePwd || encodePwd.length() == 0) {return false;}String pwd = pwdDecode(encodePwd);return pwd.equals(password);}@Overridepublic String pwdEncode(String password) {return RsaUtil.rsaEncode(systemConfig.getPwdKey().getPublicKey(), password);}@Overridepublic String pwdDecode(String encodePwd) {return RsaUtil.rsaDecode(systemConfig.getPwdKey().getPrivateKey(), encodePwd);}}

{{remainTimeStr}} {{form.name}}

相关推荐: