系统合集跳转
源码获取链接
一、系统环境
运行环境: 最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
IDE环境: Eclipse,Myeclipse,IDEA或者Spring Tool Suite都可以
tomcat环境: Tomcat 7.x,8.x,9.x版本均可
操作系统环境: Windows XP/7/8//8.1/10/11或者Linux或者MacOS,2G内存以上,推荐4G,4G以上更好
用了技术框架: HTML+CSS+JavaScript+jsp+mysql+Spring+SpringMVC+mybatis+Spring boot
数据库: Mysql数据库,任意版本均可,也可使用各种数据库工具,例如Navicat等。
二、摘要
2019年新冠疫情席卷全国,对国内线下产业造成了巨大的影响,对于学校这种人口密度巨大的地方来说,影响更大。各大学校纷纷将授课与考试转移到线上进行,线上考试系统需求量得到了巨大的攀升,国内各个地方的小学到大学都需要一套线上考试管理系统来满足学校的要求,基于这种情形,开发出一款线上考试系统刻不容缓。
本文设计并开发了一款线上考试管理系统,采用Java语言进行开发,基于B/S架构,后端采用SSM(Spring+SpringMVC+Mybatis)框架进行搭建,数据库选取MySql数据库存储信息,系统分为多角色使用,分别是学生角色、教师角色和管理员角色,模块主要划分为线上考试、错题回顾、教师管理、试卷管理、学生管理、考试安排等功能。通过对线上考试系统的实现,将考试转移到线上进行,减少学生之间的接触,降低疫情传播的风险,提高学校的管理效率。
关键词: 线上考试;B/S架构;SSM框架;多角色;
三、目录
摘要 i
Abstract i
目录 iii
第一章 绪论 1
1.1 研究背景 1
1.2 研究意义 1
1.3 研究现状 2
1.3.1 国内研究现状 2
1.3.2 国外研究现状 2
1.4 论文结构 2
第二章 相关技术 3
2.1 开发工具 3
2.1.1 Navicat 3
2.1.2 IntelliJ IDEA 3
2.1.3 Tomcat7 3
2.2 开发技术 4
2.2.1 Spring框架 4
2.2.2 MyBatis框架 4
3 可行性分析与需求设计 5
3.1 可行性分析 5
2.1.1 经济可行性 5
2.1.2 技术可行性 5
2.1.3 操作可行性 5
3.2 用例分析 6
3.2.1 学生用户用例 6
3.2.2 管理员用户用例 6
3.2.3 教师用户用例 7
3.3 功能性需求分析 8
3.3.1 前端功能分析 8
3.3.2 后端功能分析 8
3.4 非功能性需求分析 9
4 系统总体设计 10
4.1 系统架构设计 10
4.2 功能模块设计 10
4.2.1 用户登录注册流程 11
4.2.2 在线考试流程 11
4.2.3 修改密码流程 12
4.3系统数据库设计 13
4.3.1 数据库概念设计 13
4.3.2 数据库表设计 13
5 系统功能实现 16
5.1 前台功能实现 16
5.1.1 注册功能实现 16
5.1.2 登录功能实现 17
5.1.3 在线考试 19
5.1.4 试卷回顾 20
5.2后台功能模块 21
5.2.1后台首页 21
5.2.2 学生用户管理模块 21
5.2.3 试卷管理模块 25
5.2.4 试题管理模块 27
6运行系统和测试 29
6.1软件测试的基本概念 29
6.2测试计划 29
6.3测试用例 30
6.4测试结果 30
总 结 31
致 谢 32
参考文献 33
四、论文内容
第一章 绪论
1.1 研究背景
现如今,网络已经覆盖到人们生活的方方面面,电子商务得到了巨大的发展,“互联网+”思维结合电子商务有了非常巨大的空间。网络购物就是在这样的大环境下快速兴起的,并且取得了巨大的成就,据不完全统计国内网络覆盖率高达92%的程度,网民人数已经突破10亿大关,可以说国内已经进入到全民互联网时代了。互联网给人们生活带来了极大的便利,方便了人们的生活,减少了管理人员耗费的时间,提高了管理效率,许多业务在线上进行可以很大程度上省去掉非常多不必要的时间,足不出户就能完成,传统行业结合互联网技术进行创新已经成为时代发展趋势。
教育业一直以来都是国内非常重视的行业之一,几乎每个家庭都会在教育上面投入巨大的精力和金钱,学校教育更是人们关注的重点。但是受到新冠疫情的影响,学校按照要求必须要进行封闭式管理,许多地方不允许进行线下授业,导致大量的学生课程受到影响,但是学生们的学习不能耽误,所以网课逐渐兴起,大多数学校都通过腾讯会议来进行授课,但是考试成为了一大难题,定期进行考试是每个学校进行检验知识掌握情况的常用方法,一定时间内进行一次考试是非常有必要的回顾知识的手段,基于这种形势,开发出一款线上考试系统就可以很好的解决这个问题。
1.2 研究意义
现如今,人们越来越注重高效率的生活,开发出一款线上考试管理系统可以极大程度上减少管理人员的管理效率,方便教师进行在线出题,同时可以方便学生在当下大环境下在家就能完成考试,减弱疫情带来的影响。同时结合互联网技术的线上管理系统可以方便管理人员进行数据管理,便于操作大量的数据信息,提高管理效率。但是在目前的市场调查中,当下的市场上面系统存在着以下问题。
(1)系统管理复杂,针对面太广,系统过于追求完善性,缺乏针对性管理。
(2)系统采用的框架较为老套,普遍还处于SSH、Servlet等框架,进行二次开发和优化较为繁琐。
为了解决以上问题,本系统进行创新改良:
(1)基于学校区域。由于用户群体是在校学生,用户需求重叠度很高,学生在平台上的使用效率有保证。学校区域保证了用户的范围不会太广,平台只上线某区域内合作的学校。平台使用学校+学号的对用户账号进行绑定,实行一人一号,方便管理。
(2)系统采用SSM框架进行搭建,提高系统的开发效率、让代码逻辑更加清晰,更加容易应对变化不断的需求,更容易维护,综合减少开发成本。
1.3 研究现状
1.3.1 国内研究现状
对于国内来说,近些年来,我国的经济发展迅速,许多领域都已经开始向世界领先水平迈进。然而要与世界接轨,就需要一套完善的信息技术管理平台。目前国内市面上已经出现了很多优秀的管理系统,国内互联网市场发展十分迅速。对于线上考试方面来说,据调查,在疫情前国内大多数公立学校是没有引入过这种系统的,大多数是教育机构使用,例如问卷星、优考等在线考试系统,这些系统又大公司进行研发,做了比较充足的需求分析和市场调查,框架稳定,功能齐全,可以作为本系统开发过程中非常良好的参考案例。
国内互联网技术的发展时间也相对较短,管理系统出现也晚于世界领先水平,同时对于管理系统来说,更是在05年才开始得到发展,开发本系统的Spring框架技术在07年才诞生出来,真正在2010年以后才被国内大量的使用起来,并且得到了迅速的发展。截至目前市面上运用Spring框架开发的系统已经非常多了,但是针对学校使用的线上考试系统仍是处于空缺。
1.3.2 国外研究现状
对于国外来说,互联网技术发展久远,管理系统也有着较长的历史,国外早在1964年就出现了比较成熟的管理系统,并且MVC结构模式在20世纪80年代就被发明出来作为一种设计模式。这种设计模式极大程度上加速了管理系统的进展。美国更是Java技术和各大框架的发源地。拥有深层的技术底蕴,且市面上已经存在大量优秀的管理系统,例如CMS Hub、WordPress、Joomla等CMS管理系统,这些系统拥有稳定的技术框架和较为完善的功能结构,能够为大量用户提供服务,是非常好的参考范例,但是对于线上考试系统方向来说,由于国内外教育方式的差异较大,国情也不相同,系统的功能差异较为明显,国外优秀的系统也不能适用于国内,这是一个不小的遗憾。
1.4 论文结构
第一章绪论,主要介绍和分析相关背景和现状,并透过表象探究未来的发展趋势。
第二章相关技术,主要是对开发本系统用到的工具和技术框架进行介绍。
第三章需求分析,主要是对系统进行需求分析和可行性分析,这作为系统开发不可或缺的一部分,同时也对系统开发有着举足轻重的指导作用。
第四章系统概要设计,从系统架构设计进行分析,然后对系统的功能模块进行介绍。
第五章系统详细设计,主要介绍了系统的实体属性,以及数据库的概念结构设计和逻辑结构设计。
第六章系统实现,主要是对系统相关功能描述,具体介绍相关功能的实现方法。
第二章 相关技术
本系统采用Spring框架结合Mybatis框架进行搭建,工具采用IntelliJ IDEA和Navicat工具,系统部署在Tomcat容器上进行展示。
2.1 开发工具
2.1.1 Navicat
Navicat 能在琳琅满目的数据库管理工具中独树一帜,是由于他的高效、便捷、易于上手、轻巧、支持中文等特点[4]。本系统开发选取采用Navicat的原因是因为它是一款轻量级的可视化软件,没有厚重的环境要求,可随时进行变更以及替换版本。其次,它支持多个不同数据库的连接,除常用的MySql外,还支持Oracle、PostgreSQL以及SQL Server等不同类型的数据库,方便系统更换数据库类型时不需要再替换软件,同时对于国内开发人员来说,Navicat是为数不多支持中文的数据库可视化软件,方便国内开发人员上手开发,最后对于设计表格来说非常便利,提供手动设计表格与修改表字段类型的界面,方便修改数据库表格,基于以上原因,本系统开发选用Navicat软件进行管理数据库。
2.1.2 IntelliJ IDEA
IntelliJ IDEA简称Idea,是Java编程语言开发的集成环境,本系统选取Idea软件进行开发带来了非常大的便利,首先,IntelliJ IDEA软件页面比较优美,开发体验良好,支持多语言多种颜色选择,十分人性化。其次,IntelliJ IDEA可以集成多个插件,比如Mybatis的Plus插件,支持自动生成增删改查配置文件,支持lombok插件,免去生成实体类Get、Set方法,为开发系统提供了极大的便利。最后,IntelliJ IDEA软件支持编码辅助和智能编辑等重要功能,可以在代码输入过程中,自动补充方法或类,极大程度上减少开发人员重复工作,非常适用于本系统的开发。基于以上原因,本系统代码的开发采用IntelliJ IDEA软件进行。
2.1.3 Tomcat7
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。本系统开发就是部署在Tomcat服务器上,本系统选取Tomcat作为部署容器是因为它具有非常便捷的部署操作,并且架构属于轻量级,不需要占用大量的内存空间,这样确保了项目的快速部署和启动。并且Tomcat属于开源的项目,不需要额外支付费用。基于以上原因,本系统部署容器选择Tomcat服务器上。
2.2 开发技术
2.2.1 Spring框架
后端选取Spring框架进行搭建,Spring就像是一个管家,它将系统管理的井井有条,你可以将每个功能模块定义成一个实例,主要的一块功能控制反转和依赖注入,线上考试系统中依赖注入部分就是利用到该特性,后台之间模块关联的调用就是靠依赖注入直接引用,不需要每次都进行新建对象,比如在用户管理中,只需要在服务层注入一个用户对象,每个方法都可以调用,不需要每个方法重新新建一遍,可以释放系统内存,并且Spring框架会对该Bean的生命周期进行管理,在不使用的时候还会自动Kill掉,释放内存。
此外,SpringAOP也是该框架的核心,SpringAOP为面向切面编程,将维度划分为切面和点,采用该模块可以对日志和事务进行很好的集成,非常方便进行日志管理,本系统日志管理就是基于SpringAOP的基础上实现的。Spring框架拥有这些良好的框架和特性,为本系统的开发提供了诸多的便利,这也是本系统后端开发采用Spring框架的原因之一。
2.2.2 MyBatis框架
MyBatis 本是apache的一个开源项目iBatis,Mybatis框架主要是用于系统和数据库之间交互使用,Mybatis框架同Spring框架进行集成,主要原理是采用了ORM的思想,将数据库字段和实体类字段进行一一映射,系统操作实体类数据,然后通过映射来传入到数据库中进行修改,金海城美食菜品管理系统中在resource目录下配置好Mapper.xml映射,将实体类和系统的持久层代码结合起来,这样系统可以通过改变实体类的赋值来传递到数据库中,完成数据库的读写查操作。
Mybatis框架解决了Hibernate框架全局映射的问题,采用单独编写Sql语句进行控制,这样改变字段只需要对改动的Sql进行修改,不需要再进行全局修改。在本系统中利用Mybatis框架的特性将字段拆分开来,这样做的好处是,既可以方便字段的变更操作带来的代码改动,又可以提高数据库的查询速度。
3 可行性分析与需求设计
可行性分析是项目启动前必须要进行的步骤,如果一个项目不经过可行性分析就着手开发,可能会造成非常严重的后果,甚至可能需要推翻重做等风险。需求设计又是系统开发前必要的操作,通过需求设计才能确立系统的功能模块。
3.1 可行性分析
2.1.1 经济可行性
经济可行性是指系统开发成本和预计收益之间的关系,如果开发成本远大于预计收益时,就需要认真考虑该系统是否要进行立项开发,反之同样要客观对收益情况进行评估。对应到本系统的中就是,首先考虑本系统的开发成本,系统开发环境较为简易,不需要占用大量硬件设备,同时采用SSM框架来进行搭建,极大程度上简化了搭建步骤,这样可以最大程度上减少开发成本。从预估收益上来说,本系统可以极大程度上弥补市场当前的空缺,吸引商家入驻,下发广告来获取利润,在巨大的市场环境下可以获取很大的收益。综合考虑来看,系统的经济可行性分析结果是可行的。
2.1.2 技术可行性
技术可行性是指决策的技术和决策方案的技术不能突破组织所拥有的或有关人员所掌握的技术资源条件的边界[5]。系统开发人员具备Java基础,并且对SSM框架知识有着深入的研究,数据库方面也学习过MySql基础知识和集成Spring框架知识,对于技术可行性来说,本系统开发采用Java语言,Java语言已经有30年的发展历史,趋于稳定且拥有跨平台的特性,面向对象进行编程,非常适用于本系统的开发,后台框架采用Spring框架进行搭建,Spring框架可以极大的简化系统配置,可以简化部署问题。且对于初学者较为友好,上手难度较低。数据库采用MySql数据库,关系型数据库可以配合着Mybatis框架进行映射,解决了Hibernate框架的弊端。
综上所述,对于技术可行性来说是可行的。
2.1.3 操作可行性
从开发者的角度来说,本系统编写完成后只需将系统项目打包并部署在tomcat上运行即可。目前市面上大多数的项目都采取的这种方式,部署到tomcat上也较为简单,只需在服务器上搭建好tomcat环境。而搭建服务器环境现在都是一键式搭建,并有配套的详细教程。仅需短短几分钟便可搭建完成。因此从开发者的角度来说,本系统完全具备操作可行性。
从使用者的角度来说,本系统采用的是B/S架构,用户只需打开网页即可使用,不必进行下载App等操作同时系统的页面整洁,有提示栏和导航栏,用户体验十分友好。因此,从用户角度考虑,本系统依然具备操作可行性。
综上,本系统完全具备操作可行性。
3.2 用例分析
本系统主要分为三个角色使用,分别是管理员角色和学生角色和教师角色,管理员角色是本系统的后台使用者,主要操作和信息管理有关,学生用户是本系统的前台使用者,主要功能是进行在线考试和错题回顾,教师角色主要是对试卷和考试安排进行管理。
3.2.1 学生用户用例
学生角色用例图如下图所示。
图3-1 学生用户用例图
学生用户角色操作:
1、登录注册:注册账户获取登录账户,登录获取权限。
2、个人中心:登录后可以对个人信息进行查看。
3、在线考试:进行在线考试。
4、试卷回顾:对考完的卷子进行错题回顾。
5、成绩查询:可以对考完的分数进行查询。
3.2.2 管理员用户用例
管理员用户用例图如下图所示。
图3-2 管理员用例图
管理员用户操作:
1、学生管理:对学生信息进行管理。
2、教师管理:对教师信息进行增删改查操作。
3、数据统计:统计数据信息。
4、班级管理:对班级信息进行管理。
5、科目管理:对学科信息进行管理。
3.2.3 教师用户用例
教师用户用例图如下图所示。
图3-3 教师用户用例图
教师用户操作:
1、登录注册:注册账户获取登录账户,登录获取权限。
2、试卷管理:对试卷信息进行管理。
3、试题管理:对试题进行管理。
4、考试安排:给学生安排考试。
5、试卷历史查看:查询历史试卷信息。
3.3 功能性需求分析
在线考试系统功能主要从两个方面介绍,分别是前台和后台两个界面,前台是学生角色使用,主要功能跟在线考试有关。后台是管理使用,主要功能是对系统的信息进行管理和维护。
3.3.1 前端功能分析
前端功能结构如下图所示。
图3-4 前台功能结构图
3.3.2 后端功能分析
后端功能主要和系统信息管理有关,具体结构如下图所示。
图3-5 后台功能结构图
3.4 非功能性需求分析
非功能需求不仅与软件系统本身有关,还与系统的开发过程有关。非功能性需求主要是从系统的正确性、健壮性、性能、安全性、兼容性等方面进行分析和考虑。
正确性:正确性要求系统不允许出现业务上的错误,并且在数据发生多次变动后扔保持数据不发生实质上的错误,确保系统的正确运行。在本系统中,系统集成事务管理,在数据因意外断开时可以发生回滚操作,同时Mybatis框架确保了数据多次变动后的前后顺序,确保数据正确性。
健壮性:健全性要求系统具有一定的应对错误的能力,健壮性强的系统可以应对突发的错误情况,例如突然的断电、断网以及人为的进行错误数据攻击等情形扔保持程序不会突然的崩溃,拥有正确的处理和适当的回避机制。
安全性:安全性要求系统必须严格控制访问权限,确保用户必须通过认证后才能获取对应的权限,阻拦企图绕开安全防线破坏系统的操作。本系统在前端登录中对密码进行了防护,确保数据的安全性,同时Session设置失效时间,避免时间过长导致密码泄露。
4 系统总体设计
4.1 系统架构设计
在线考试系统采用MVC的设计思想,采用Spring+SpringMVC+Mybatis的框架进行搭建,采用B/S架构,将系统分为控制层、业务层和持久层结构,系统的架构图如下图所示。
图4-1 系统架构图
在线考试系统采用MVC的设计思想进行开发,主要分为控制层、服务层和持久层,控制层向上连接Client端,主要由JSP页面组成,通过From表单的形式进行传递信息,向下连接业务层进行业务逻辑的处理,服务层起承上启下的作用,连接控制层和持久层的数据处理与传递,持久层主要是连接数据库,进行读写数据库和数据同步的作用。
4.2系统数据库设计
4.2.1 数据库概念设计
E-R图,即实体属性图,常被用作展现数据库概念设计是因为,一个好的ER图能充分展现实体与实体之间的联系。本系统的总体ER图如下图4-2所示:
图4-2 系统总体E-R图
五、系统实现
五、代码片段
if(comment == null){ret.put("type", "error");ret.put("msg", "请填写正确的评论信息");return ret;}if(StringUtils.isEmpty(comment.getContent())){ret.put("type", "error");ret.put("msg", "请填写评论内容");return ret;}if(commentService.edit(comment) <= 0){ret.put("type", "error");ret.put("msg", "编辑失败,请联系管理员!");return ret;}
if(!StringUtils.isEmpty(username)){Account account = accountService.findByName(username);if(account != null){queryMap.put("userId", account.getId());}}
if(moneyMin != null){queryMap.put("moneyMin", moneyMin);}if(moneyMax != null){queryMap.put("moneyMax", moneyMax);}if(status != null){queryMap.put("status", status);}queryMap.put("offset", page.getOffset());queryMap.put("pageSize", page.getRows());ret.put("rows", orderService.findList(queryMap));ret.put("total", orderService.getTotal(queryMap));
/*** 查询订单列表* @param sn* @param page
*/
@RequestMapping(value="/list",method=RequestMethod.GET)public ModelAndView list(ModelAndView model){model.setViewName("order/list");model.addObject("accountList",
JSONArray.fromObject(accountService.findList(new HashMap<String, Object>())));return model;}
六、源码获取方式
一键三连+关注+评论留下你的邮箱 获取源码,主动获取 看主页置顶
一键三连+关注+评论留下你的邮箱 获取源码,主动获取 看主页置顶
一键三连+关注+评论留下你的邮箱 获取源码,主动获取 看主页置顶