基于SSM的自治区药检院综合数据库管理系统的设计与实现
作者: 王静 蒋晨昊
摘要:随着科学技术的不断发展和进步,计算机信息系统管理与技术规模日益壮大。如今,各个领域的专业人员已经广泛了解并熟悉得知现代信息的管理及技术,在计算机领域发展也逐步走到在行业前列。计算机管理技术应用已经深深融入各行各业当中,充当着十分重要的角色。用计算机进行管理具有足够多的优点:信息检索效率大大提高、信息查找方便、运行结果可靠、能够存储更多信息、保密性高、成本低等优点。该系统使用SSM(Spring+SpringMVC+Mybatis)框架,用Navicat for MySQL软件来进行数据库设计,它完全可以兼容多种操作系统,并且采用了完全面向对象的多线程编程,运行速度相对更快。
关键词:SSM框架;MySQL;后台管理系统
中图分类号:TP311 文献标识码:A
文章编号:1009-3044(2022)16-0014-05
1 引言
在当今信息化快速发展的时代,互联网技术在各个领域崭露头角,影响着人们生活的方方面面。本文设计并开发基于现代互联网技术的自治区药检院综合数据库管理系统,通过对大量不同类别的执行标准、报告书等文件进行统一管理,使效率更加高效,文件管理更加准确[1]。
2 需求分析
基于SSM的自治区药检院综合数据库管理系统提供一个可供用户、管理员使用的后台实时管理系统,该系统在开发过程中前后端不分离,使项目更容易进行。该系统功能主要被分为如下两大类部分:管理员和普通用户。其中管理员又分为最高等级管理员和模块管理员,最高等级管理员负责对所有用户、所有文件进行管理操作,模块管理员单独对一个模块进行管理操作;普通用户实现对文件的查看、收藏等功能[2]。本系统根据需求进行如下设计:
1)网站主页:用于用户登录、注册等操作。
2)管理系统页面:对该用户个人信息进行管理、并且包含执行标准库、资质库、报告书原始记录库、原始记录模板库模块内容,分别用于对不同信息进行管理。
3)各个模块都包含文件上传及下载功能,用于实现对不同文件的管理操作,同时包含对过期/作废文件的处理操作。
4)系统程序代码统一,方便之后的系统维护升级。
3 主要技术介绍
3.1 SSM简介
SSM框架,即Spring+Spring和MVC+MyBatis的有效整合,搭建广泛应用于目前各种大型复杂的企业级开发应用的系统环境中,当前国内比较广泛盛行的主要是Java EE企业级框架[3]。Spring就像是在整个项目库环境中被用来装配的JavaBean的一个大数据工厂,在这个配置的文件库中可以直接指定对象并通过使用其中一些特定对象类型中的参数去调用实体类的构造方法来实例化对象; SpringMVC的核心作用是拦截用户请求,作为承担中介或是前台这样的职责的核心是Servlet,即DispatcherServlet,它将用户发送的请求信息都能通过HandlerMapping功能去自动地匹配Controller,Controller就是具体的对应于每个请求层所能被执行到的操作,最终会把每个Model层执行的最终结果自动地返回给每个用户;MyBatis是一个对JDBC层的封装[4]。
3.2 JDBC简介
JDBC是Java语言开发中的用来规范客户端程序如何快速访问数据库资源的一个应用程序接口,提供了一系列诸如快速查询数据库和快速更新数据库资源中的数据等的操作方法。JDBC接口作为一种低端数据库接口,能够直接实现在数据库上快速运用的SQL命令语句操作。而且,在EJB、容器持续以及JMS等调用方式环境下,JDBC也能够间接地通过对My SQL的数据库进行操作来自动实现这些高级数据库调用。
3.3 MySQL数据库简介
数据库在信息管理系统中作为关键的一环,通常被看作系统的核心。基于SSM的自治区药检院综合数据库管理系统采用MySQL数据库来帮助进行更高效的数据管理。其中,MySQL数据库由于其数据体积量小、速度快等独特优点目前已经成功在国际很多电子商务领域崭露头角[5-6]。数据库管理系统和接口如图1所示。
4 系统设计
4.1 数据库设计
系统使用MySQL数据库建立了6张数据表,分别是用户表、收藏表、执行标准表、资质库表、报告书记录库表、原始模板库表。主要数据库表介绍如下:
1)用户表。用户表主要记录自治区药检院综合数据库管理员及用户的信息,如用户名username、真实姓名rname、所属分类usrp、密码password、权限status等。
2)收藏表。收藏表主要针对用户使用,其中包含两个字段userid,shoucangbiaoid。前者用来记录当前用户的id,后者记录当前用户所收藏的文件编号,方便用户进行查看。
3)执行标准表。执行标准表用来记录各分类执行标准文件信息,如成册书名、执行标准编号、标准名称、类别、发行日期、到期日期等。
4)资质库表。资质库表用来记录资质库信息,如类别、参数、样品名称、标准编号等。
5)报告书记录库表。报告书记录库表用来记录报告书信息,如报告书编号、样品名称等。
6)原始模板库表。原始模板库表主要记录原始记录信息,如项目名称、受控编号、实施时间等。
4.2 功能模块设计
系统根据其主要功能介绍可以分为4个基本系统模块:公共模块、用户模块、管理员模块、子管理员模块。功能模块系统的一般设计及方法流程图如图2所示。系统总体功能的技术需求研究和方案分析总体流程如下:
1)公共模块:用户可通过注册/登录进入系统(新注册用户需要管理员授权方可进行正常登录),管理员通过登录进入系统,根据不同用户权限进入不同系统页面。
2)用户模块:通过公共模块进入系统后,用户界面展示个人信息管理、执行标准库信息、资质库信息、报告书记录库信息、原始模板库信息。用户可对自身个人信息进行修改操作,包括真实姓名、密码、简介等。并且可查看其余模块的文件信息以及上传文件内容,不具备编辑、修改、下载等功能。而对于报告书记录库来说,用户只能查看自己授权签字的报告书信息。
3)管理员模块:通过公共模块进入系统,负责管理所有用户的信息,权限分配等,负责对执行标准库信息、资质库信息、报告书记录库信息、原始模板库信息进行添加、修改、删除等工作,并且可对文件进行上传下载等操作。
4)子管理员模块:通过公共模块进入系统,负责对自身文件进行管理。如只可对执行标准库信息进行添加、编辑、删除等操作。
4.3 功能描述
1)公共模块
①注册页面。注册页面包括用户名、用户分组、真实姓名、密码、确认密码。注册成功后才可以进行登录。
实现过程:通过form请求,输入上述对应信息后通过@RequestMapping注解信息传递到Controller层实现对数据转发功能,Controller层代码如下:
@RequestMapping(value = "/register.do",method = RequestMethod.POST)
@ResponseBody
public int register(String uname,String usrp,String rname, String upwd){
Map<String, Object> map = new HashMap<>();
map.put("uname",uname);
map.put("usrp",usrp);
map.put("rname",rname);
map.put("upwd",upwd);
int register = userServiceImpl.register(map);
if(register==0)
return 0;
else
return 1;
}
之后通过Dao层与数据库交互,数据库添加该用户信息。Dao层代码如下:
@Override
public int register(Map<String, Object> obj){
SqlSession sqlSession = sqlSessionFactoryBean.openSession(true);
String sql="com.isoft.mapping.User.register";
int insert = sqlSession.insert(sql, obj);
sqlSession.close();
return insert;
}
②登录页面。登录页面信息主要包括登录用户名、密码、验证码以及重置操作。登录成功后进入对应模块。
实现过程:通过输入用户名、密码、验证码,由@RequestMapping注解传递Controller层实现对数据转发功能,之后传递至Dao层与数据进行交互。具体Controller层、Dao层代码如下:
@RequestMapping(value = "/login.do",method = RequestMethod.POST)
@ResponseBody
public Map login(String uname, String upwd, HttpSession session){
Map<String, Object> login = userServiceImpl.login(uname, upwd);
Map<String, Object> map = new HashMap<>();
if(login==null){
map.put("loginmsg",0);
return map;
}else{
map.put("loginmsg",1);
map.put("userid",login.get("user_id").toString());
map.put("rname",login.get("rname"));
map.put("download",login.get("download"));
session.setAttribute("userid",login.get("user_id").toString());
map.put("status",login.get("status").toString());
session.setAttribute("status",login.get("status").toString());
if(login.get("photo")==null||login.get("photo").toString().equals(""))
map.put("photo","myphoto/myphoto.jpg");