基于SSM的临床医师模拟考试软件设计开发

2022-12-14 00:42张翔
新型工业化 2022年2期

张翔

(景德镇学院,江西 景德镇 333000)

0 引言

无纸化、信息化考试方法值得被使用,本课题针对执业医师学习测试提供了一定的解决方法[1]。该系统可以便捷地实现学生成绩管理,方便教师工作,避免了传统考试管理效率低、可维护性不高的缺点。同时针对执业医师考试采用针对化题库,以满足执业医师考生的大部分需求,使得软件更加实用。本系统将考试核心功能放置在高性能的云服务器上,将不需要占用太多资源的登录注册、修改密码、数据管理等功能放置在本地电脑上,以达到提高软件响应速度和运行效率的目的。

1 需求及功能分析

当前无纸化考试快速发展,信息化、无纸化考试方式是大势所趋[2]。本设计针对于医考生实际考试流程和实际需求作出专项功能设计,设计整个软件的基本流程,结合实际需求进行开发。

实现后的软件权限分为超级管理员、管理员和普通用户三个模块,超级管理员负责对管理员信息、学院信息、试题类型信息等基本信息进行管理;管理员对试题信息、试卷信息、普通用户信息进行管理;普通用户则可以使用软件基本功能即模拟考试、考试历史查询等功能。

2 软件框架

基于SSM的临床医师模拟考试软件使用SSM框架进行开发。这一框架是近年来比较流行的Java技术框架,SSM框架则是非常流行的JavaEE企业级框架[3]。本方案就是以SSM框架搭建后端管理界面,然后集成layui+shiro,这两个技术是比较流行的技术,使用方便快捷。其优点是开发效率高、运行速度快、软件负载高、开发成本低[4]。

3 layui技术简介

layui 是一款采用自身模块规范编写的前端 UI 框架,遵循原生 HTML/CSS/JS 的书写与组织形式,门槛极低,拿来即用。其外在极简,却又不失饱满的内在,体积轻盈,组件丰盈,从核心代码到 API 的每一处细节都经过精心雕琢,非常适合界面的快速开发。

由国人开发于2016年出厂的框架,其主要提供了很多好看、方便的样式,并且基本拿来即用,和Bootstrap有些相似,但该框架有个极大的好处就是定义了很多前后端交互的样式接口,如分页表格,只需在前端配置好接口,后端则按照定义好的接口规则返回数据,即可完成页面的展示,极大地减少了后端人员的开发成本。

3.1 layui的特点

layui属于轻量级框架,简单美观;适用于开发后端模式,它在服务端页面上有非常好的效果;layui是提供给后端开发人员的UI框架,基于DOM驱动。

3.2 目录结构

├─css // css目录

│ │─modules // 模块css目录(一般如果模块相对较大,我们会单独提取,比如下面三个:)

│ │ ├─laydate

│ │ ├─layer │ │ └─layim

│ └─layui.css // 核心样式文件

├─font // 字体图标目录

├─images // 图片资源目录(目前只有layim和编辑器用到的GIF表情)

│─lay // 模块核心目录

│ └─modules // 各模块组件

│─layui.js // 基础核心库

└─layui.all.js // 包含layui.js和所有模块的合并文件

3.3 基本页面

<!--开始使用layui -->

<link rel="stylesheet" href="layui/css/layui.css">

<!-- 你的HTML代码 -->

<script src="layui/layui.js"></script>

<script>

// 模块和回调函数

// 一般直接写在一个js文件中

layui.use(['layer', 'form'], function(){

var layer = layui.layer

,form = layui.form;

layer.msg('Hello World');

});

</script>

3.4 页面元素

布局:将栅格放入一个带有class=“layuicontainer”的特定的容器中,以便在小屏幕以上的设备中固定宽度,让列可控;可以不固定容器宽度。将栅格或其他元素放入一个带有class=“layui-fluid”的容器中,那么宽度将不会固定,而是100%适应。

3.5 栅格系统

为了丰富网页布局,简化 HTML/CSS 代码的耦合,并提升多终端的适配能力,layui 引进了一套具备响应式能力的栅格系统。将容器进行了12等分,预设了4*12种CSS排列类,它们在移动设备、平板、桌面中/大尺寸四种不同的屏幕下发挥着各自的作用。

3.6 导航主题

通过对导航追加CSS背景类,让导航呈现不同的主题色;导航菜单可应用于头部和侧边,支持响应式,支持删除选项卡等功能,依赖加载模块。实现步骤:①引入的资源;②依赖加载模块;③加载HTML。

4 Shiro框架简介

Apache Shiro是Java的一个安全框架。它为开发人员提供一个直观而全面的认证、授权、加密及会话管理的解决方案。Shiro的主要功能是管理应用程序中与安全相关的全部,同时尽可能支持多种实现方法。Shiro是建立在完善的接口驱动设计和面向对象原则之上的,支持各种自定义行为。Shiro提供的默认实现,使其能完成与其他安全框架同样的功能。

Shiro功能在验证用户身份时有如下:用户访问控制,比如用户是否被赋予了某个角色,是否允许访问某些资源;任何环境都可以使用Session API,即使不是WEB项目或没有EJB容器;事件响应,可在身份验证、访问控制期间或是session生命周期中;多种用户信息数据源;SSO-单点登陆;Remember Me,记住我。Shiro尝试在任何应用环境下实现这些功能,而不依赖其他框架、容器或应用服务器。

Shiro可以非常容易地开发出足够好的应用,其不仅可以用在JavaSE环境,也可以用在JavaEE环境。Shiro可以帮助我们完成认证、授权、加密、会话管理、与Web集成、缓存等。四大基石包括身份验证、授权、会话管理、加密。①Authentication:身份认证/登录,验证用户是不是拥有相应的身份;②Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个权限,即判断用户是否能做事情,常见的如验证某个用户是否拥有某个角色或者细粒度地验证某个用户对某个资源是否具有某个权限;③Session Manager:会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话中;会话可以是普通JavaSE环境的,也可以是如Web环境的;④Cryptography:加密,保护数据的安全性,如采用密码加密存储到数据库,而不是明文存储。

5 总体功能设计

本方案初步目标是实现一个具有考试功能的软件,设置三个角色:超级管理员、管理员、用户,除了实现最基本的功能外,还在其中加入了其他一些功能。

超级管理员功能主要有:①登录注销功能;②权限管理功能;③题库管理功能;④试卷管理功能;⑤用户管理功能;⑥历史考试记录管理功能;⑦修改密码功能;⑧发布公告功能。

管理员功能主要有:①登录注销功能;②试卷管理功能;③用户管理功能;④历史考试记录管理功能;⑤修改密码功能;⑥发布公告功能。

用户功能主要有:①考试功能;②错题查看功能。

6 软件功能实现与测试

6.1 用户登录和注册模块实现

本设计使用Shiro框架实现登录模块的实现,用户在登录框中输入用户名、密码和验证码点击登录,验证码功能使用JS实现,采用前端拦截的措施,使用正则表达式进行用户名和密码的格式限制,以使验证码无误。前端通过AJAX方式使用post请求向后端传输登录信息,后端的登录验证则是由Shiro框架实现的。

后端取到用户名和密码,执行登录验证。首先数据库中读取对应的账号密码,如果不存在该用户的账号则返回空值,如果存在则会对读取该用户信息;然后对密码进行验证,不管是否成功都返回一个值,该值含有登录验证成功与否的信息;最后,使用控制器类对其进行判断是否可以进行登录跳转或者返回登录界面。

6.2 考试题库管理模块实现

题库管理使用layui前端框架进行页面的渲染,从后端读取数据并在前端显示。其中增加试题按钮是一个弹窗按钮,使用弹窗按钮后会出现一个弹窗,填入试题信息即可增加试题。其中的文件提交按钮为单独的一个表单,使用该按钮可以提交试题所需的图片。文件提交完成后会自动在上面增加试题信息的表单中填入文件的路径信息。页面中的题号组卷功能是从题库中随机抽取100~600道试题实现随机组卷的功能,管理员也可以自己选择想要的题目,不需要选足对应的题目数量,软件判断试题数量自动补全试题,然后再组合成对应试卷[5]。

6.3 试卷管理模块实现

试卷管理模块由layui渲染完成。其中随机生成按钮和试题管理中的题号组卷功能类似,无需指定题目,直接可以生成对应试卷。

6.4 用户管理模块实现

本模块采用的数据全部都是随机生成的,增加用户按钮和编辑按钮使用同一个方法实现,采用动态的方式获取数据,通过Ajax的方式进行前后端数据传输,动态获取下拉框数据。

7 结语

至此,本设计的功能基本完善,普通用户和管理员用户的功能也基本完善。本设计使用的SSM框架,相较于之前开发过的软件便捷了许多,软件功能也相对完善。该软件在软件设计之初还有许多不完善的地方,但经过实际开发的考验,软件的完善程度也随之提高。在开发过程中遇到的难点重点也是非常多的。例如:(1)前期layui框架和SSM使用的默认模板引擎的资源冲突问题,这会导致前端页面显示时出现显示错误的问题,使用静态资源过滤解决了这个问题。然后是显示的渲染问题,由于使用动态的渲染,导致使用编辑信息的功能时会使后端获取的数据无法显示或者显示不完全,解决方法是在渲染表格和弹窗时添加数据,然后等所有数据加载完成后,重载表格和弹窗。(2)文件上传功能也是重难点之一,复杂文件的上传是在同一页面上使用两个并行的表单上传文件,并返回对应路径。其中遇到的问题是使用Ajax方式上传文件会遇到文件上传失败或者文件获取不到的问题,解决方法就是使用Ajax时严格限制上传格式,并且在后端获取时使用复杂文件对象接收,使用IO流的形式将文件存放到磁盘固定的位置。

本设计的创新点有:(1)使用文件上传功能,使题库丰富且多样化;(2)使用前端框架layui搭建后端管理模块,页面美观、响应速度快。