目前,许多高校绝大多数课程还采用考教统一的模式来完成教学过程,这种传统的考试模式在教学到实施考试的过程带有很大的主观随意性和不规范性。另外随着各高校近年来学生规模的扩大,教学任务日益繁重,教师的工作量相应的不断增加。迫切需要计算机辅助教学系统来打破这种传统的教学模式,减轻教师的工作负担,提高教学质量。因此,本文研究设计了一个试题库管理系统,来解决和缓解高校课程教学中现存的问题,提高教学质量和考试效果,减轻教师工作压力。试题库管理系统可辅助教师对所教科目的各种试题的题型、知识点、难度等相关资料进行保存、查询等信息管理;并在需要对学生进行测验、评估的时候,从题库中抽取出相应要求的题目,组成一套试卷。

试题库管理是学校工作的重要组成部分,如何快速有效合理的组卷和试题库完善的保管是所有教师和学校管理者共同高度关注的问题。大部分的题库管理系统很难保证试题的多样性、全面性和试卷难度的恰当分配。为了解决教师出题困难,帮助教师轻松的出一份高质量的试卷,所以开发试题库管理系统是非常必要的。

本系统基于java的springboot开发框架,数据库采用mysql,开发工具采用idea进行设计,本文首先简要介绍了开发试题库管理系统的可行性分析,系统的需求分析和总体设计,然后主要针对系统的设计、组成、用户界面设计、程序设计进行了详细分析,并对系统部分关键性代码进行了讲解,同时对一般系统软件设计的基本思想及工作流程给出了方法技巧。首先在短时间内建立系统应用原型,然后,对初始原型系统进行需求迭代,不断修正和改进,直到形成用户满意的可行系统。

关键字:springboot  mybatis  题库管理 mysql数据库

目    录

1    

1.1 题目的来源及背景

1.2 研究意义

1.3 软件工程瀑布模型介绍

2  需求分析

2.1  项目内容及要求

2.1.1 具体完成功能

2.1.2 实现目标

2.2 可行性分析

2.2.1 经济可行性

2.2.2 技术可行性

2.3 开发工具的论述

2.3.1 前台开发工具

2.3.2 后台数据库

3  系统结构特性设计

3.1  系统分析模型

3.2  数据库设计

4  系统行为特性设计

4.1 软件结构设计

4.2功能子模块设计

4.2.1 教师登录模块

4.2.2 题库的管理与维护模块

4.2.3 试题查询模块

4.2.4 自动生成试卷模块

4.2.5 手工改动现有试卷模块

5 系统测试

5.1 系统测试方案

5.2 测试结果分析与调试

 

yml配置:

spring:datasource:#    数据源基本配置username: root    #前面没有data直接是username或passwordpassword: rooturl: jdbc:mysql://localhost:3306/software?useUnicode=true&characterEncoding=utf-8&useSSL=false&&serverTimezone=Asia/Shanghaidriver-class-name: com.mysql.cj.jdbc.Drivertype: com.alibaba.druid.pool.DruidDataSource#   数据源其他配置initialSize: 5minIdle: 5maxActive: 20maxWait: 60000timeBetweenEvictionRunsMillis: 60000minEvictableIdleTimeMillis: 300000validationQuery: SELECT 1 FROM DUALtestWhileIdle: truetestOnBorrow: falsetestOnReturn: falsepoolPreparedStatements: true#   配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙filters: stat,wall  #,log4jmaxPoolPreparedStatementPerConnectionSize: 20useGlobalDataSourceStat: trueconnectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500#    schema:#      - classpath:sql/books.sql#    initialization-mode: alwaysthymeleaf:prefix: classpath:/templates/cache: falsesuffix: .htmlencoding: UTF-8mode: HTMLservlet:content-type: text/html
#开发时让无缓存mybatis:type-aliases-package: com.zhao.quiz.domainconfig-location: classpath:mybatis/mybatis-config.xmlmapper-locations: classpath:mybatis/mapper/*.xmlpagehelper:helper-dialect: mysqlreasonable: truesupport-methods-arguments: trueparams: count=countSql

关键代码:

package com.zhao.quiz.controller;import com.zhao.quiz.domain.*;
import com.zhao.quiz.service.ExamService;
import com.zhao.quiz.service.PaperService;
import com.zhao.quiz.service.RecordService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;import javax.servlet.http.HttpServletRequest;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;@Controller
@RequestMapping("/exam")
public class ExamController {@Autowiredprivate ExamService examService;@Autowiredprivate PaperService paperService;@Autowiredprivate RecordService recordService;//前台跳转@RequestMapping("/toExam")public String toExam(Model model){List<Exam> Exams = examService.getAll();model.addAttribute("Exams",Exams);return "exam/examplan";}@RequestMapping("/toHist/{id}")public String toHist(@PathVariable ("id") Integer id,Model model){List<Record> records=recordService.queryAllExamById(id);model.addAttribute("records",records);return "exam/histplan";}//从其他页面跳转到home@RequestMapping("/toHome")public String tohome(){return "redirect:/indexprexam";}//来到对应考试页面@RequestMapping("/toDoExam/{id}")public String toDoExam(@PathVariable ("id") Integer id,Model model,String examId){List<QuestionPaper> questionPapers = paperService.paperQueryALlQuestionByIdOrderByType(id);int exId=Integer.parseInt(examId);Exam examById = examService.getExamById(exId);Paper paperName = paperService.queryPaperNameById(examById.getPaperId());model.addAttribute("paperName",paperName);model.addAttribute("examById",examById);model.addAttribute("questionPapers",questionPapers);return "exam/doExam";}//提交试卷@RequestMapping("/submitExam")public String submitExam(Integer paperId, Integer studentId, HttpServletRequest request){List<QuestionPaper> questionPapers = paperService.paperQueryALlQuestionByIdOrderByType(paperId);List<String> ans=new ArrayList<>();List<String> RightAns=new ArrayList<>();for (QuestionPaper qb:questionPapers){RightAns.add(qb.getQuestion().getQuestionOpright());String parameter="";String []parameters;if(qb.getQuestion().getQuestionType().equals("y")){parameters= request.getParameterValues("optionsSelect" + qb.getQuestionId());for(String s:parameters){parameter+=s;}}else {parameter = request.getParameter("optionsSelect" + qb.getQuestionId());}ans.add(parameter);}//核对答案得到成绩int k=0;    //哨兵Double y=0.0;    //正确数int score=0;    //得分int a=0;        //记录单选题个数int b=0;        //记录多选题个数int c=0;        //记录判断题个数int totalScore=0;for (QuestionPaper qb:questionPapers){//若为单选题则正确+单选题分数if(qb.getQuestion().getQuestionType().equals("x")){if(ans.get(k).equals(RightAns.get(k))){score+=qb.getPaper().getScoreSin();y++;}a++;k++;}else if(qb.getQuestion().getQuestionType().equals("y")){if(ans.get(k).equals(RightAns.get(k))){score+=qb.getPaper().getScoreChe();y++;}b++;k++;}else {if(ans.get(k).equals(RightAns.get(k))){score+=qb.getPaper().getScoreJug();y++;}c++;k++;}}int scoreSin1 = questionPapers.get(0).getPaper().getScoreSin();int scoreChe1 = questionPapers.get(0).getPaper().getScoreChe();int scoreJug1 = questionPapers.get(0).getPaper().getScoreJug();int bool=recordService.queryBooleanToscore(paperId);if (bool==0){totalScore=scoreSin1*a+scoreChe1*b+scoreJug1*c; //得到每张试卷总分Toscore toscore=new Toscore();toscore.setPaperId(paperId);toscore.setToscore(totalScore);recordService.AddToScore(toscore);}//保存答题记录String answer = String.join(",", ans);Paper paper = paperService.queryPaperNameById(paperId);String paperName = paper.getPaperName();Double recordAcc=y/k;int recordScore=score;Record record=new Record();record.setRecordName(paperName);record.setStudentId(studentId);record.setPaperId(paperId);record.setRecordAnswer(answer);record.setRecordAcc(recordAcc);record.setRecordScore(recordScore);recordService.addRecord(record);return "redirect:/exam/toExam";}/*** 考试后台* *///查看所有考试安排后台@RequestMapping("/getAllExam")public String getAllExam(Model model){List<Exam> Exams = examService.getAllS();model.addAttribute("Exams",Exams);return "exam/backexamlist";}//去往考试添加页面@RequestMapping("/toAddExam")public String toAddExam(Model model){List<Paper> papers = paperService.getAll();model.addAttribute("papers",papers);return "exam/AddExam";}//添加操作@RequestMapping("/addExam")public String addExam(Exam exam, String examBegins,String examEnds) throws ParseException {String t1 = examBegins.replace("T", " ");String t2 = examEnds.replace("T", " ");SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");Date begin = sdf.parse(t1);Date end = sdf.parse(t2);exam.setExamBegin(begin);exam.setExamEnd(end);examService.AddExam(exam);return "redirect:/exam/getAllExam";}@RequestMapping("/deleteExam/{id}")public String toEditExam(@PathVariable ("id") Integer id,Model model){examService.deleteById(id);return "redirect:/exam/getAllExam";}
}

java毕业设计之基于springboot题库管理系统源码含论文mysql404【包调试运行 指导】

基于springboot题库管理系统的设计与实现相关推荐

  1. 题库管理|考试管理|基于Web的大学生题库管理系统的设计与实现

    作者简介:全栈开发工程,从事Java.Python.前端.小程序方面的开发和研究,对大数据应用与开发比较感兴趣, 主要内容:Java项目.前端项目.Python项目.小程序开发.大数据项目.单片机 收 ...

  2. 基于springboot地方旅游系统的设计与实现

    摘    要 本次设计内容是基于Springboot的旅游系统的设计与实现,采用B/S三层架构分别是Web表现层.Service业务层.Dao数据访问层,并使用Springboot,MyBatis二大 ...

  3. 基于Java的题库管理系统的设计与实现

    技术:Java.JSP等 摘要: 随着我国社会的进步,社会的各个领域的创新改革都在高速发展的信息时代下突显出来.在信息时代这个大的背景下,对软件开发的要求越来越高,对考试的管理更需要加强,所以迫使我们 ...

  4. Spring MVC 题库管理系统 课程设计作业

    前言:这个系统原本是为了(强国答题)学习而做的.后台感觉这样提交的话,交到学校里感觉不太好,故改名题库管理系统. 先说下本系统的功能: 1.用户的登陆,注册,修改密码,退出等操作. 2.对题的增删改查 ...

  5. 第18期基于SpringBoot仓库管理系统

    第18期基于SpringBoot实现的仓库管理系统 大家好,小辰今天给大家介绍一个基于SpringBoot+ Mybatis+ thymeleaf实现的仓库管理系统,演示视频文章末尾公众号对号查询观看 ...

  6. [附源码]计算机毕业设计基于springBoot仓库管理系统

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

  7. 基于springboot的问卷调查系统的设计与实现

    技术栈SpringBoot+IDEA+SSM+MYSQL+Maven+JSP 源码+环境配置+文档设计+PPT 运行效果图如下所示 精华源代码 @RequestMapping("/updat ...

  8. 基于springboot仓库管理系统

    技术点: springboot,mysql redis,vue 功能: 用户角色管理 权限菜单管理 客户管理 供应商管理 商品管理 供应商管理 截图 数据库部分 CREATE TABLE `sys_u ...

  9. springboot毕业设计 基于springboot在线视频点播系统毕业设计设计与实现参考

    功能清单 (1)注册登录:游客进行账号注册.登录平台 (2)查看网站介绍:网站介绍.关于我们.联系我们.加入我们.法律声明 (3)视频列表:显示网站提供的所有视频信息:可以按视频的分类筛选. (4)视 ...

最新文章

  1. 我人生的贵人系列之 - 文深刘
  2. maven引入本地jar包
  3. Linux下压力测试工具Webbench介绍
  4. airtestide 下载后打不开_微信收到CAD图纸打不开怎么办?2种方法教你手机CAD快速看图...
  5. java stringbuilder appendline_StringBuilder
  6. WPF布局控件Grid的基本使用 - 使用kaxaml
  7. 7对讲机调频软件_对讲机怎么配对?
  8. 报错The sandbox is not in sync with the Podfile.lock
  9. 虚机中访问外网;NAT中的POSTROUTING是怎么搞的?
  10. 对象序列化和反序列化是怎么回事
  11. 【RobotStudio学习笔记】(七)工件坐标
  12. 阿里云为自动驾驶量身打造一体化解决方案,助力行业突破技术瓶颈
  13. Scratch 3.x编程技巧:条件语句与随机数
  14. 围棋人机大战一周年:被AlphaGo改变的世界
  15. 模拟医院信息管理系统
  16. drm是什么_DRM:它是什么,为什么不起作用
  17. Flowable Modeler
  18. 计算机无法连接网络错误651,宽带连接错误651怎么解决?
  19. 路由器刷opwenwrt固件和原厂固件教程
  20. 中国 98 家央企及下属 409 家上市企业全名单( 2023 最新版)

热门文章

  1. EPSON LS3-401S机器人学习笔记 5 - 坐标系
  2. OpenCL学习笔记——整体流程(向量相加)
  3. ajax 原生js操作ajax
  4. Linux基础笔记18 | 磁盘分区管理
  5. 【复变函数与积分变换】06. 拉普拉斯变换
  6. 【NoteBook】吴晓波:《影响商业的50本书》——第一部分:当商业开始改变世界
  7. 八人抢答器讲解_课程设计题一:八人抢答器
  8. QPainter 绘制阴影边界
  9. 微信小程序 - 基础 - 002 - WEUI - 一个基本页面的设计 - index页面的制作
  10. 别再纠结页面设计!挑选小程序页面设计模板就对了