基于SSM的自治区药检院综合数据库管理系统的设计与实现

2022-05-30 10:48王静蒋晨昊
电脑知识与技术 2022年16期

王静 蒋晨昊

摘要:随着科学技术的不断发展和进步,计算机信息系统管理与技术规模日益壮大。如今,各个领域的专业人员已经广泛了解并熟悉得知现代信息的管理及技术,在计算机领域发展也逐步走到在行业前列。计算机管理技术应用已经深深融入各行各业当中,充当着十分重要的角色。用计算机进行管理具有足够多的优点:信息检索效率大大提高、信息查找方便、运行结果可靠、能够存储更多信息、保密性高、成本低等优点。该系统使用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 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 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 login = userServiceImpl.login(uname, upwd);

Map 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");

else

map.put("photo",login.get("photo").toString());

/* System.out.println(JSON.toJSONString(map));*/

return map;

}

}

@Override

public Map login(String uname, String upwd){

SqlSession sqlSession = sqlSessionFactoryBean.openSession(true);

String sql="com.isoft.mapping.User.login";

Map map = new HashMap<>();

map.put("uname",uname);

map.put("upwd",upwd);

Map rscount =sqlSession.selectOne(sql,map);

sqlSession.close();

return rscount  ;

}

2)用户模块

用户模块是用户对自身个人信息进行管理以及对各类文件的查看、收藏功能。

①用户可以对自身真实姓名、出生日期、密码、头像进行修改功能。头像上传Controller核心代码如下:

String fileName = file.getOriginalFilename();

String extName = fileName.substring(fileName.lastIndexOf("."));

List list = new ArrayList();

list.add(".jpg");

list.add(".png");

list.add(".gif");

list.add(".bmp");

list.add(".jpeg");

if (list.contains(extName.toLowerCase())){

String realPath = session.getServletContext().getRealPath("myphoto");

String photoFileName = new Date().getTime()+ extName;//使用時间戳进行文件命名

String descPath = realPath + "/" + photoFileName;

System.out.println(descPath);

file.transferTo(new File(realPath, photoFileName));

//图片路径和文件名称保存到数据库中

//根据用户ID更新头像

int i = userServiceImpl.updateUserPhoto(userid, "myphoto/"  + photoFileName);

②用户拥有对各类文件进行查看、收藏的功能。其中收藏功能核心代码如下:

if(iscollect>0){

$.ajax({

url: "file/cancelcollectFile.do",

method: "post",

dataType:"json",

data: {

"id": id,

"userid": sessionStorage.getItem("user_id"),

},

success: function (data){

if(data.code==0){

tr.children('td').eq(1).find(".layui-icon").attr("class","layui-icon layui-icon-star");

tr.children('td').eq(1).find(".layui-icon").attr("title","收藏文件");

}

if(data.code!=0){

layui.table.reload("id", {

where: {

"client_upload_user": sessionStorage.getItem("user_id")

}

});

layer.msg(data.msg, {icon: 2,time:2000});

return;

}

}, error: function (){

layer.msg('请求服务器失败!', {icon: 2});

return;

}

3)管理员模块

管理员模块主要功能分为以下几点:

①对用户信息进行修改,赋予或取消用户登录权限、下载文件权限。

②对各类文件进行添加、修改、删除功能。

③对文件进行上传、修改或对文件信息进行覆盖功能。

④实现Excel数据上传功能,但需严格按照提供模板进行操作。

在这里,我们展示上传文件、Excel数据上传主要功能代码,详细如下:

上传文件核心代码:

String sql = "com.isoft.mapping.File.insertBgsFileInfo";

//上传文件

String realPath = session.getServletContext().getRealPath("/Bgs/");

path=(realPath+ UUID.randomUUID()+file.getOriginalFilename());

String newpath=path.replace("\\","/");

file.transferTo(new File(newpath));

//录入信息

bgsInfo.setBaocundizhi(newpath);

int update = sqlSession.insert(sql, bgsInfo);

sqlSession.commit();

String sc="succ";

sqlSession.close();

return sc;

Excel数据上传核心代码:

InputStream is = file.getInputStream();         HashMap>>> key1 = this.ReadExcel(is);

is.close();

is = null;

ZZKInfo ci = new ZZKInfo();

for (String a : key1.keySet()){

HashMap>> key2 = key1.get(a);

//System.out.println("Key = " + a + ", Value = " + key2);

ci.setLeibie(a);

for (String b : key2.keySet()){

HashMap> key3 = key2.get(b);

ci.setPinzhong(b);

for (String c : key3.keySet()){

HashMap key4 = key3.get(c);

ci.setCanshu(c);

for (String d : key4.keySet()){

String key5 = key4.get(d);

ci.setJiancebiaozhunmingcheng(key5);

ci.setBiaozhunbianhao(d);

int da=clientServiceImpl.uploadClient(ci);

}

}

}

}

4)子管理员模块

子管理员模块仅是对其中任意一类的文件进行权限管理,其最主要的功能与最高级管理员模块操作相同。包括对文件的添加、修订、删除、上传、查看、下载等操作。以执行标准为例:子管理员仅对执行标准进行管理,可以对成册书名、执行标准编号、标准名称、类别、发行日期、有效期、状态等字段进行管理。具体如图3所示:

4.4 系统交互图

系统架构中的工作流程:用户在发送权限请求完毕后,由业务代理者将给权限管理者发送一条权限验证请求,权限管理者同时将接到请求发送给业务逻辑代理者,验证无误后,将验证请求转交到业务对象,否则返回消息。对于异常数据处理操作,异常数据处理操作对象可以将各种意外情况导致的故障信息进行分析处理,然后将异常处理分析结果自动返回到业务逻辑,最后再把故障数据处理操作结果返回到用户界面,响应用户请求。系统架构交互图如图4所示。

5 系统测试

对于软件系统来说,由于系统测试要保障系统的稳定运行以及对系统安全性能评估,所以在系统开发中最重要的部分即为系统测试。由于系统测试的目的是保障系统安全稳定地运行,则系统测试就应该着重检测系统中bug概率较大的区域以及项目中较为复杂的代码部分。由此可见,测试的目的就是在系统运行过程中及时找出bug并且提供相应的解决办法的阶段。基于SSM的自治区药检院综合数据库管理系统各模块主要测试如下。

5.1 登录功能测试(不包含验证码)

5.2 用户模块测试

5.3 管理员模块测试

5.4 子管理员模块测试

5 结束语

自治区药检院综合数据库管理系统采用SSM+Tomcat+MySQL,基于SSM框架,更加方便地對大量文件进行管理分类,大大节省了办公人员的时间,让用户得到更大的便利。本系统很好地实现当前所需的功能,并且页面简洁,方便用户操作,但仍有需要改进的地方,在后续的工作中会根据用户、管理员的需要添加相应的功能,让系统更加完善,并且会不断进行优化、维护,给用户带来更好的体验。

参考文献:

[1] 邢静,王志刚,徐章博.基于SSM框架的文档一体化管理系统研究[J].甘肃科技,2020,36(22):19-22.

[2] 刘茜颖,张艳红.基于SSM的线上教育系统设计与实现[J].电脑编程技巧与维护,2021(10):45-46,59.

[3] 周游,张国华.基于SSM框架智慧养老系统设计[J].软件,2021,42(10):47-49.

[4] 张弛,朴顺姬.基于SSM框架的供暖收费系统设计与实现[J].电脑知识与技术,2021,17(9):66-67,70.

[5] 邹林辰.基于SSM的酒店管理系统开发[J].科学技术创新,2020(32):55-56.

[6] 杨子鑫,余小兰.基于SSM的农产品销售系统的设计与实现[J].现代信息科技,2021,5(15):33-35,39.

【通联编辑:谢媛媛】