springboot药品管理系统 毕业设计-附源码74152

摘  要

当代的计算机自动化管理已被应用于各大行业中,这也同样是实现现代化管理的重要标志之一。计算机的自动化管理能有效减轻西药剂师进行医院药品相关药品出入库、详细信息等管理的工作量,也能避免西药品管理不当或者落后所导致的西药品分发等的错误率问题。基于此,有必要建立一套药品管理系统实现自动化管理。

本文的主要内容包括药品管理系统中各模块的设计以及可行的方案。文中着重探讨了采用Java编程语言,基于SpringBoot的框架,并结合B/S模式以及利用MVC的三层架构设计完成系统开发,最终结合MysQL数据库进行数据信息存储的详细开发过程。本系统设计并实现了系统用户、药品信息管理、药品出库管理、药品入库管理、药品销售管理、药品采购管理、系统管理、资源管理以及通知公告管理九大管理模块,依据此五大管理模块的功能设计实现自动化管理医院药品内药品的出入库等过程。

最终,针对本系统的代码以及前端界面效果进行了展示评价与总结,并进一步阐述了此次设计的主要工作以及有待改进之处。该系统提供了逻辑清晰且简约的管理前端界面,方便药剂管理员进行管理操作,从而进一步保证了医院药品信息管理操作的正确率以及效率。

关键词:MYSQL数据库;药品管理;SpringBoot框架

Springboot Drug Management System

Abstract

Contemporary computer automation management has been applied in various industries, which is also an important symbol of achieving modern management. The automation management of computers can effectively reduce the workload of Western medicine pharmacists in managing the entry and exit of hospital drug related drugs, detailed information, etc. It can also avoid the error rate problem of Western medicine distribution caused by improper or backward Western medicine management. Based on this, it is necessary to establish a drug management system to achieve automated management.

The main content of this article includes the design of each module in the drug management system and feasible solutions. The article focuses on exploring the detailed development process of using Java programming language, based on the SpringBoot framework, combined with B/S mode and using MVC's three-layer architecture design to complete the system development, and finally combining with the MysQL database for data information storage. This system has designed and implemented nine management modules: system user, drug information management, drug outbound management, drug inbound management, drug sales management, drug procurement management, system management, resource management, and notification and announcement management. Based on the functions of these five management modules, the system has designed and implemented automated management of the inbound and outbound processes of drugs in hospitals.

Finally, an evaluation and summary of the code and front-end interface effects of this system were presented, and the main work of this design and areas for improvement were further elaborated. The system provides a logically clear and concise management front-end interface, which facilitates pharmaceutical administrators to carry out management operations, further ensuring the accuracy and efficiency of hospital drug information management operations.

Key words :MYSQL database; Drug management; SpringBoot framework

 目  录

摘 要

1 绪论 1

1.1研究背景 1

1.2课题研究的目的和意义 2

2 药品管理系统相关理论及技术综述 2

2.1开发技术 2

2.2Java语言 3

2.4 B/S结构 3

2.5 SpringBoot框架介绍 4

3 药品管理系统需求分析 5

3.1可行性分析 6

3.1.1 经济可行性 6

3.1.2 技术可行性 6

3.1.3 操作可行性 6

3.2功能需求分析 6

3.3 性能分析概述 8

3.4 系统业务流程分析 9

3.5系统流程分析 10

3.5.1药品信息流程 11

3.5.2出库入库信息流程 11

3.5.3药品销售信息添加流程 12

4 药品管理系统设计 13

4.1系统概要设计 13

4.2系统结构设计 13

4.3系统顺序图设计 15

4.3.1登录模块顺序图 14

4.3.2添加信息模块顺序图 15

4.4数据库设计 15

4.4.1数据库E-R图设计 15

4.4.2数据库表设计 16

5 药品管理系统功能设计 21

5.1登录模块的实现 21

5.2用户首页模块的实现 24

5.3注册模块的实现 26

5.4药品信息模块的实现 27

5.5用户管理模块的实现 28

5.6药品入库管理模块的实现 30

5.1通知公告管理模块的实现 31

6 药品管理系统测试 33

6.1 测试定义 33

6.2 测试目的 33

6.3测试方案 34

1)模块测试 34

2)集成测试: 35

3)验收测试: 35

6.4系统分析 36

7 结论 37

参考文献 38

谢辞 40

1 绪论

1.1研究背景

近年来,计算机系统在所有管理范围内发挥着至关重要的作用,用有效的方法以自动化以及便利化人工的工作。此外,基础纸质化的管理在某些特定方面与情况下面临着复杂的问题,即访问信息时的耗时问题。换言之在人工管理的过程中,执行跟踪、匹配或存储文档等操作时,会损耗大量的时间成本。

医院药品往往是医院中最繁忙的科室之一,只要是前往医院探诊的病症患者,即最终的门诊步骤都会指向于医院药品。医院药品每天都面临着大规模的取药操作,而其中的工作人员均忙碌于各种事务性的工作中,人人均忙碌得不可开交。由于长时间的重复性工作以及各种主客观原因,其在药品的分发上均可能发生一定程度的混乱现象。尤其是针对大型省市型医院,其药品数量与品类纷繁复杂,要进行大规模药品的采购、分发以及出入库信息登记等操作,导致其手工操作的错误发生情况难以避免。这将进一步导致账目管理工作无法推进等等问题。而药理学是生物学的一个分支,该学科既研究化学物质的性质,又研究药物的使用、作用与副作用,药剂师也因此应运而生。如何提高药剂师们的工作效率,最常见的技术是条形码验证、电子处方技术和计算机处方的订单输入输出等。

此外,集成上述智能化技术的医院药品管理系统是医院药品科室中所运用的一项自动化手段,其可运用计算机强大的数据存储库以及机械化设备以实现自动化配发药品予以患者个人。由于在信息化时代下传统的手工记录方式早已无法满足大数据以及规模化的信息膨胀,该系统的出现实现了新的医院药品管理目标,是药品管理现代化改革所跨出的关键一步。

因此,本文设计并开发一套药品管理系统用以实现西药品自动化统计以及管理的计算机系统,其中包括入库以及出库等管理操作。纯手工管理不仅给药剂师们带来了繁重的工作负担,而且也会导致药品管理分配的错误率升高。因此,有必要设计并开发出一套医院药品管理系统,采取自动化的统计管理方式以替代人工文字记录西药品的入库出库数量、采购数量以及西药品资料信息等方式。

1.2课题研究的目的和意义

如今,随着互联网技术在各个领域的不断渗入,信息化管理已经成为各个行业必不可少的管理方式,网上管理已是时代的必然产物。医院医药信息化竞争逐渐激烈,越来越多的管理者都认识到了医院信息化改革的必要性以及急迫性。医院药品管理需要减少过去的纸质化,避免纸质所带来的不可避免的繁琐性以及效率低等问题,通过该系统,管理员可以高效的处理药品信息,提高药品信息的处理速度和准确性,实现药品信息更加规范、半自动化以及高效性。

本选题的意义在于推动了医院的信息化改革,医院药品工作人员可以通过电脑等任意信息化终端来完善医院医药的专属管理系统,这就直接方便了管理员日常的工作。通过信息化技术就可以避免过去效率方面的问题,医院只需要线上的数据库就可以完美储存大量的数据,使信息可以更加具体详尽的出现在系统上面。突破了过去因纸质材料而受到的种种限制,通过备份等方式可以保证数据的安全性,消除纸质化隐患,减少资金占用并提高市场灵敏度,提升医院市场竞争力。

2 药品管理系统相关理论及技术综述

2.1 开发技术

本系统前端部分基于MVVM模式进行开发,采用B/S模式,后端部分基于Java的SpringBoot框架进行开发。

前端部分:前端框架采用了比较流行的渐进式JavaScript框架Vue.js。使用Vue-Router和Vuex实现动态路由和全局状态管理,Ajax实现前后端通信,Element UI组件库使页面快速成型,项目前端通过栅格布局实现响应式,可适应PC端、平板端、手机端等不同屏幕大小尺寸的完美布局展示。

后端部分:采用SpringBoot作为开发框架,同时集成MyBatis、Redis等相关技术。

2.2Java语言

Java语言在计算机的程序应用过程当中,属于非常重要的一个应用软件,因为它的性能比较高,而且能够应用在多重领域当中,因此该程序在计算机的软件程序应用当中的范围相对来说是比较广泛的。而从专业的技术角度来说,Java程序的应用的实用性也是非常强的,这是因为它与传统的C语言或C++相比没有太大的基本结构的变化,也就是说它的语法结构是相对单一,而且具有稳定的特性,还有更重要的一点是Java程序语言的基本参考对象就是C语言,所以他的程序编写并不是很复杂,而且还能够起到优化工作效率提升系统设计本身的基础功能的作用,因此他也就受到了非常广泛的程序员们的青睐[5]。

在此次进行系统设计开发研究的过程当中,还发现Java程序语言之所以能够得到市场上更多用户的好评和青睐,其根本原因在于他能够具备各种语言的自身独特优点的展现,也就是说它的兼容性是常强的。因此,我们因此我们可以说在任何一个程序的开发过程当中,Java语言程序的应用是必不可少的,它他在程序员进行改动的时候,哪怕是一个程序字母的改动,都可以形成一种特定的程序,这是 Java程序,非常独特的另一个优点。不仅如此,Java源程序的可移植性也是非常大,而且它的安全系数很高,能够通过不同方式进行移植到其他程序当中,而且可以兼容不同程序的系统,在运行的过程当中,其安全系数也是非常强的,能够确保用户在使用网络的过程当中去确保网络的安全,而正是基于这样的可移植性,为程序员节约了很多的系统语言程序的开发设计的时间,这是非常难得的一种自有优势。

2.3 MySQL数据库

科技的进步,给日常带来许多便利:教室的投影器用到了虚拟成像技术,数码相机用到了光电检测技术,比如超市货物进出库的记录需要一个信息仓库。这个信息仓库就是数据库,而这次的智能药品管理系统也需要这项技术的支持。

用MySQL这个软件,是因为它能接受多个使用者访问,而且里面存在Archive等。它会先把数据进行分类,然后分别保存在表里,这样的特别操作就会提高数据管理系统自身的速度,让数据库能被灵活运用。MySQL的代码是公开的,而且允许别人二次编译升级。这个特点能够降低使用者的成本,再搭配合适的软件后形成一个良好的网站系统。虽然它有缺点,但是综合各方面来说,它是使用者的主流运用的对象。

2.4 B/S结构

B/S(Browser/Server)比前身架构更为省事的架构。它借助Web server完成数据的传递交流。只需要下载浏览器作为客户端,那么工作就达到“瘦身”效果, 不需要考虑不停装软件的问题。

2.5 SpringBoot框架介绍

Spring框架是Java平台上的一种开源应用框架,提供具有控制反转特性的容器。尽管Spring框架自身对编程模型没有限制,但其在Java应用中的频繁使用让它备受青睐,以至于后来让它作为EJB(EnterpriseJavaBeans)模型的补充,甚至是替补。Spring框架为开发提供了一系列的解决方案,比如利用控制反转的核心特性,并通过依赖注入实现控制反转来实现管理对象生命周期容器化,利用面向切面编程进行声明式的事务管理,整合多种持久化技术管理数据访问,提供大量优秀的Web框架方便开发等等。Spring框架具有控制反转(IOC)特性,IOC旨在方便项目维护和测试,它提供了一种通过Java的反射机制对Java对象进行统一的配置和管理的方法。Spring框架利用容器管理对象的生命周期,容器可以通过扫描XML文件或类上特定Java注解来配置对象,开发者可以通过依赖查找或依赖注入来获得对象。Spring框架具有面向切面编程(AOP)框架,SpringAOP框架基于代理模式,同时运行时可配置;AOP框架主要针对模块之间的交叉关注点进行模块化。Spring框架的AOP框架仅提供基本的AOP特性,虽无法与AspectJ框架相比,但通过与AspectJ的集成,也可以满足基本需求。Spring框架下的事务管理、远程访问等功能均可以通过使用SpringAOP技术实现。Spring的事务管理框架为Java平台带来了一种抽象机制,使本地和全局事务以及嵌套事务能够与保存点一起工作,并且几乎可以在Java平台的任何环境中工作。Spring集成多种事务模板,系统可以通过事务模板、XML或Java注解进行事务配置,并且事务框架集成了消息传递和缓存等功能。Spring的数据访问框架解决了开发人员在应用程序中使用数据库时遇到的常见困难。它不仅对Java:JDBC、iBATS/MyBATIs、Hibernate、Java数据对象(JDO)、ApacheOJB和ApacheCayne等所有流行的数据访问框架中提供支持,同时还可以与Spring的事务管理一起使用,为数据访问提供了灵活的抽象。Spring框架最初是没有打算构建一个自己的WebMVC框架,其开发人员在开发过程中认为现有的StrutsWeb框架的呈现层和请求处理层之间以及请求处理层和模型之间的分离不够,于是创建了SpringMVC。

3 药品管理系统需求分析

3.1 可行性分析

本文提出的系统将从多个角度,包括经济效益、技术优势和操作便捷性,进行综合考量,以确保其可行性。

3.1.1 经济可行性

因为使用了免费的工具和软件,开发本系统的成本极低,甚至可以忽略不计;此外,该系统还能够有效地提升管理员及用户的隐私保护,最大限度地保护他们的信息安全,因此,从经济可行性方面来看,它是一个可行的选择 。

3.1.2 技术可行性

现在科学技术在不断进步,计算机软硬件的发展已经达到了可持续的水平。Java语言的出现,使得普通的电脑也具备了完成该项目的功能,而且其占用的内存也极其紧凑,这使得使用MySQL进行软件的编程与设计几乎不会出现任何挑战。

3.1.3 操作可行性

计算机和智能手机的普及,使得人们即使没有优秀的教育背景,大部分人也能够熟练地运用电脑进行各种操作,因此,我想设计一个基于Java技术的药品管理系统,它的实施将会大大提升效率,并且可行性也得到了很好的保障。通过多方面的分析,可以确定这个系统是具有实际开发的价值和可能性的。

3.2功能需求分析

药品管理系统中根据普通用户的需求可以分为一下功能模块。

通知公告:查看通知公告内容。

药品资讯:浏览药品资讯内容,可以点赞收藏评论。

个人中心:修改个人信息,修改密码。

药品信息:查看药品信息列表。

药品管理系统中根据管理员的需求可以分为一下功能模块:

管理员

个人中心:修改个人信息,修改密码。

系统用户:管理所有注册用户信息资料,可以删除添加修改等功能。

系统管理:管理员可以查看修改和删除轮播图。

通知公告管理:管理员可以查看修改和删除公告内容。

资源管理:对资讯信息增删改查操作。

药品信息管理:管理药品信息,可以添加,修改和删除等操作。

药品销售管理:对药品销售信息增删改查操作。

药品采购管理:对药品采购信息增删改查操作。

药品入库管理:管理员可以查看查询和删除药品入库。

用户角色用例如图3-1所示。

图3-1 药品管理系统用户角色用例图

web后台管理上的管理员是维护整个药品管理系统中所有数据信息的。管理员角色用例如图3-2所示。

图3-2 药品管理系统管理员角色用例图

3.3 性能分析概述

(1)系统响应效率:页面响应时问应该在3秒以内,最长不能超过4秒,并支持至少10000人同时在线所有系统。

(2)界面简洁清晰:系统界面要求简单明了,容易操作,符合用户操作习惯。

(3)储存性高:因为药品管理系统中有很多的信息需要存储,因此对于系统的存储量有很大的要求,需要有一个强大的数据库的支持才能确保所有的信息都能安全稳定的进行存储。

(4)易学性:该系统在操作上必须简单好上手,没有很多复杂的操作,只需要简单的进行学习就能操作该系统。

(5)稳定性需求:开发的药品管理系统要求运行稳定,运行过程中无界面不清楚、字体模糊等现象。

(6)稳定性:开发的药品管理系统要求运行稳定,运行过程中无界面不清楚、字体模糊等现象。

3.4 系统业务流程分析

管理员权限下的工作流程主要为:管理员通过系统界面提供登录按钮并点击,转入管理员登录界面,并在界面上填入相应的管理员账户和管理员密码,进入管理员权限下的后台系统,并且在系统左侧导航条设置了相应的操作功能。

用户权限下的工作流程主要为:用户通过系统提供的注册功能,进行身份验证并注册,而后在登录界面进行个人身份验证,并且进入用户的个人后台界面,并进行相应的操作。

药品管理系统的业务流程如下图所示。

图3-3 系统业务流程图

3.5系统流程分析

3.5.1药品信息流程

添加药品信息时,药品编号自动生成,系统会对添加的药品进行验证,验证通过则添加至数据库,添加药品成功,反之添加失败。添加药品信息流程如图3-4所示。

图3-4 药品信息流程图

3.5.2出库入库流程

用户可选择要出库/入库的药品统计操作时,需要添加药品名称、药品编号、出库数量等具体信息,提交出库或者入库操作如图3-5所示。

图3-5 删除信息流程图

3.5.3药品销售信息添加流程

对药品销售信息进行添加操作时,需要添加订单编号、客户名称、产品单价、售出时间、产品名称、产品图片等具体内容,具体操作如图3-6所示。

图3-6 药品销售信息添加流程图

4 系统设计

4.1系统概要设计

本药品管理系统选择B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式。适合在互联网上进行操作,只要用户能连网,任何时间、任何地点都可以进行系统的操作使用。系统工作原理图如图4-1所示:

图4-1 系统工作原理图

4.2系统结构设计

整个系统是由多个功能模块组合而成的,要将所有的功能模块都一一列举出来,然后进行逐个的功能设计,使得每一个模块都有相对应的功能设计,然后进行系统整体的设计。

springboot药品管理系统结构图如图4-2所示。

图4-2 系统功能结构图

系统功能模块设计:

药品管理系统划分为了普通用户管理模块和管理员模块这两大部分。

前台用户管理模块:

(1)用户注册登录:用户注册为会员并登录药品管理系统;用户对个人信息的增删改查,比如个人资料,密码修改。

(2)通知公告:用户进行通知公告的浏览,可以对公告进行点赞评论操作。

(3)药品资讯:用户可以浏览药品资讯,同时可以点赞收藏。

(4)药品信息:用户点击药品信息列表,查看或者搜索某款药品。

后台管理员管理模块:

(1)系统管理:管理员可以对药品管理系统中的轮播图进行发布和维护。

(2)系统用户:管理员可以对前台上注册过的用户信息进行管控,同时可以对管理员的信息进行管理。

(3)通知公告管理:管理员可以对药品管理系统中的公告信息进行发布和维护。

(4)资源管理:管理员可以对药品资讯、以及资讯分类信息进行增删改查。

(5)药品信息:管理员可以对药品信息进行增删改查,比如补充库存量以及更改药品信息和发布新药品信息等。

4.3系统顺序图设计

4.3.1登录模块顺序图

登录模块主要满足了管理员、用户的权限登录,登录模块顺序图如图4-3所示。

图4-3 登录顺序图

4.3.2添加信息模块顺序图

管理员、用户登录后均可进行添加信息操作,添加信息模块顺序图如图4-4所示。

图4-4 添加信息顺序图

4.4数据库设计

一个好的数据库可以关系到程序开发的优劣,数据库设计离不开表结构的设计,还有表与表之间的联系,以及系统开发需要设计的数据表内容等信息。在进行数据库设计期间,要结合实际情况来对数据库进行针对性的开发设计。

4.4.1数据库E-R图设计

本药品管理系统采用的是MYSQL数据库,数据存储快,因为药品管理系统,主要的就是对信息的管理,信息内容比较多,这就需要好好的设计一个好的数据库,分类要清楚,不能添加信息的时候,造成信息太过混乱,设计好的数据库首先就需要先把各个实体之间的关系表达明确。

系统的E-R图如下图所示:

图4-5 系统E-R图

4.4.2数据库表设计

将数据库概念设计的E-R图转换为关系数据库。在关系数据库中,数据关系由数据表组成,但是表的结构表现在表的字段上。

表comment (评论)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

comment_id

int

10

0

N

Y

评论ID:

2

user_id

int

10

0

N

N

0

评论人ID:

3

reply_to_id

int

10

0

N

N

0

回复评论ID:空为0

4

content

longtext

2147483647

0

Y

N

内容:

5

nickname

varchar

255

0

Y

N

昵称:

6

avatar

varchar

255

0

Y

N

头像地址:[0,255]

7

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

9

source_table

varchar

255

0

Y

N

来源表:

10

source_field

varchar

255

0

Y

N

来源字段:

11

source_id

int

10

0

N

N

0

来源ID:

表drugs_warehousing (药品入库)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

drugs_warehousing_id

int

10

0

N

Y

药品入库ID

2

drug_name

varchar

64

0

Y

N

药品名称

3

drug_number

varchar

64

0

Y

N

药品编号

4

production_date

date

10

0

Y

N

生产日期

5

inventory_quantity

int

10

0

Y

N

0

入库数量

6

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

7

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表drug_information (药品信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

drug_information_id

int

10

0

N

Y

药品信息ID

2

drug_number

varchar

64

0

N

N

药品编号

3

drug_name

varchar

64

0

Y

N

药品名称

4

drug_introduction

varchar

64

0

Y

N

药品简介

5

number_of_drugs

int

10

0

Y

N

0

药品数量

6

production_date

date

10

0

Y

N

生产日期

7

drug_images

varchar

255

0

Y

N

药品图片

8

shelf_life_to

date

10

0

Y

N

保质期至

9

remarks_description

text

65535

0

Y

N

备注说明

10

hits

int

10

0

N

N

0

点击数

11

praise_len

int

10

0

N

N

0

点赞数

12

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

13

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表drug_outbound (药品出库)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

drug_outbound_id

int

10

0

N

Y

药品出库ID

2

drug_name

varchar

64

0

Y

N

药品名称

3

drug_number

varchar

64

0

Y

N

药品编号

4

production_date

date

10

0

Y

N

生产日期

5

outbound_quantity

int

10

0

Y

N

0

出库数量

6

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

7

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表hits (用户点击)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

hits_id

int

10

0

N

Y

点赞ID:

2

user_id

int

10

0

N

N

0

点赞人:

3

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

4

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

5

source_table

varchar

255

0

Y

N

来源表:

6

source_field

varchar

255

0

Y

N

来源字段:

7

source_id

int

10

0

N

N

0

来源ID:

表notice (公告)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

notice_id

mediumint

8

0

N

Y

公告id:

2

title

varchar

125

0

N

N

标题:

3

content

longtext

2147483647

0

Y

N

正文:

4

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

5

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表procurement_information (采购信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

procurement_information_id

int

10

0

N

Y

采购信息ID

2

procurement_number

varchar

64

0

N

N

采购编号

3

drug_name

varchar

64

0

Y

N

药品名称

4

drug_classification

varchar

64

0

Y

N

药品分类

5

procurement_time

datetime

19

0

Y

N

采购时间

6

purchase_quantity

int

10

0

Y

N

0

采购数量

7

purchase_price

int

10

0

Y

N

0

采购价格

8

total_purchase_price

varchar

64

0

Y

N

采购总价

9

supplier

varchar

64

0

Y

N

供应商

10

purchasing_name

varchar

64

0

Y

N

采购姓名

11

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

12

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表regular_users (普通用户)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

regular_users_id

int

10

0

N

Y

普通用户ID

2

user_name

varchar

64

0

Y

N

用户姓名

3

user_gender

varchar

64

0

Y

N

用户性别

4

contact_number

varchar

64

0

Y

N

联系电话

5

examine_state

varchar

16

0

N

N

已通过

审核状态

6

user_id

int

10

0

N

N

0

用户ID

7

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表sales_information (销售信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

sales_information_id

int

10

0

N

Y

销售信息ID

2

order_number

varchar

64

0

N

N

订单编号

3

customer_name

varchar

64

0

Y

N

客户名称

4

product_unit_price

int

10

0

Y

N

0

产品单价

5

sales_time

datetime

19

0

Y

N

售出时间

6

product_name

varchar

64

0

Y

N

产品名称

7

product_images

varchar

64

0

Y

N

产品图片

8

sales_quantity

int

10

0

Y

N

0

销售数量

9

total_amount

varchar

64

0

Y

N

总金额

10

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

11

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

5 药品管理系统功能设计

5.1登录模块的实现

将首页的左边的功能设计为用户登录的位置,所以在进行登录的地方就会显示首页。在登录后就是大众较为熟悉的位置,也就是让用户进行账号以及密码输入的样式。

当用户输入完信息并点击登录按钮时,Struts就会将用户输入的信息传递进表单并装入相应的对象之中,然后再转到相应位置进行校验。若用户名和密码框都是空的,那么系统就会不可将账号密码均设置为空值。

系统的底层设置要求账号密码不可以都是空值,将这些信息传递给相关的类中的对象方法并调用相关的信息,对于用户输入的数据进行检验。若检验结果正确会自动转到系统首页欢迎页面,如果不正确系统就会返回用户登录界面。

用户登录流程图如下所示。

图5-1 用户登录流程

系统登录界面如下图所示。

图5-2登录界面图

用户登录的关键代码如下。

 /**

     * 登录

     * @param data

     * @param httpServletRequest

     * @return

     */

    @PostMapping("login")

    public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {

        log.info("[执行登录接口]");

        String username = data.get("username");

        String email = data.get("email");

        String phone = data.get("phone");

        String password = data.get("password");

        List resultList = null;

        Map<String, String> map = new HashMap<>();

        if(username != null && "".equals(username) == false){

            map.put("username", username);

            resultList = service.selectBaseList(service.select(map, new HashMap<>()));

        }

        else if(email != null && "".equals(email) == false){

            map.put("email", email);

            resultList = service.selectBaseList(service.select(map, new HashMap<>()));

        }

        else if(phone != null && "".equals(phone) == false){

            map.put("phone", phone);

            resultList = service.selectBaseList(service.select(map, new HashMap<>()));

        }else{

            return error(30000, "账号或密码不能为空");

        }

        if (resultList == null || password == null) {

            return error(30000, "账号或密码不能为空");

        }

        //判断是否有这个用户

        if (resultList.size()<=0){

            return error(30000,"用户不存在");

        }

        User byUsername = (User) resultList.get(0);

        Map<String, String> groupMap = new HashMap<>();

        groupMap.put("name",byUsername.getUserGroup());

        List groupList = userGroupService.selectBaseList(userGroupService.select(groupMap, new HashMap<>()));

        if (groupList.size()<1){

            return error(30000,"用户组不存在");

        }

        UserGroup userGroup = (UserGroup) groupList.get(0);

        //查询用户审核状态

        if (!StringUtils.isEmpty(userGroup.getSourceTable())){

            String res = service.selectExamineState(userGroup.getSourceTable(),byUsername.getUserId());

            if (res==null){

                return error(30000,"用户不存在");

            }

            if (!res.equals("已通过")){

                return error(30000,"该用户审核未通过");

            }

        }

        //查询用户状态

        if (byUsername.getState()!=1){

            return error(30000,"用户非可用状态,不能登录");

        }

        String md5password = service.encryption(password);

        if (byUsername.getPassword().equals(md5password)) {

            // 存储Token到数据库

            AccessToken accessToken = new AccessToken();

            accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));

            accessToken.setUser_id(byUsername.getUserId());

            Duration duration = Duration.ofSeconds(7200L);

            redisTemplate.opsForValue().set(accessToken.getToken(), accessToken,duration);

            // 返回用户信息

            JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));

            user.put("token", accessToken.getToken());

            JSONObject ret = new JSONObject();

            ret.put("obj",user);

            return success(ret);

        } else {

            return error(30000, "账号或密码不正确");

        }

    }

5.2用户首页模块的实现

首页主要分别展示各个模块的最新动态,浏览者可以很清楚地看到不同模块的最新更新内容。并且系统首页每个部分可以跳转到相对应的模块,方便浏览者选择感兴趣的地方。

首页载入流程图如下所示。

图5-3 首页载入流程

首页如下图所示。

图5-4 首页界面

5.3用户注册模块的实现

药品管理系统的注册登录操作,用户都是从同一个注册登录页面进行注册登录,若是还未有系统账号,则进行注册操作;若是已注册账号,则用户在操作时,输入账号、密码,再选择相应的角色,如“管理员”、“用户”等。

用户注册流程图如下所示。

图5-5 用户注册流程

用户注册界面如下图所示。

图5-6 用户注册界面

注册关键代码如下:

 /**

     * 注册

     * @param user

     * @return

     */

    @PostMapping("register")

    public Map<String, Object> signUp(@RequestBody User user) {

        // 查询用户

        Map<String, String> query = new HashMap<>();

        Map<String,Object> map = JSON.parseObject(JSON.toJSONString(user));

        query.put("username",user.getUsername());

        List list = service.selectBaseList(service.select(query, new HashMap<>()));

        if (list.size()>0){

            return error(30000, "用户已存在");

        }

        map.put("password",service.encryption(String.valueOf(map.get("password"))));

        service.insert(map);

        return success(1);

}     

5.4药品信息模块的实现

用户执行药品信息,并可以操作相关内容,例如查看,编辑。药品信息的添加操作是建立在药品信息的列表基础上,单击查看药品信息下的药品信息链接;然后单击“药品信息”进行添加,添加成功后的信息会载入到药品信息查询列表中。

药品信息流程如下图所示。

图5-7 药品信息流程

药品信息界面如下图所示。

图5-8药品信息界面

5.5用户管理模块的实现

用户通过注册了方可获得登录使用权限,此时选择注册用户选项,系统就会自动转到用户注册工作面,在注册该部分信息时系统会自动调用add函数,然后在给定的文本框中填写有关该用户的基础信息后选择确认即可完成注册。检索用户信息,在新增用户信息以后,在检索工具栏中填写对应的用户信息,系统就会将该用户有关的所有信息展示出来。

用户管理流程图如下所示。

图5-9 用户管理流程图

用户管理界面如下图所示。

图5-10 用户管理界面

用户管理关键代码如下:

 @PostMapping("/add")

    @Transactional

    public Map<String, Object> add(HttpServletRequest request) throws IOException {

        service.insert(service.readBody(request.getReader()));

        return success(1);

    }

public Map<String, Object> addMap(Map<String,Object> map){

    service.insert(map);

     return success(1);

 }

5.6药品入库管理模块的实现

当药品的库存数量不足时,操作时通过JS控制打开库存管理的二级菜单,输入要入库的药品及入库数量,既可以完成入库操作,入库后,该药品的数量马上增加。

其中rukujilu_add.vue提供入库操作的视图层,consumable_warning.py提供入库操作的逻辑层,conttrol.py提供入库操作的控制层,首先视图层收到请求,调用控制层,控制层找到逻辑层完成入库操作。

药品入库流程图如下所示。

图5-11 药品入库流程图

入库界面如下图所示。

图5-12 入库界面

药品入库管理关键代码如下:

@RequestMapping(value = "/del")

    @Transactional

    public Map<String, Object> del(HttpServletRequest request) {

        service.delete(service.readQuery(request), service.readConfig(request));

        return success(1);

    }

    public void delete(Map<String,String> query,Map<String,String> config){

        QueryWrapper wrapper = new QueryWrapper<E>();

        toWhereWrapper(query, "0".equals(config.get(FindConfig.GROUP_BY)),wrapper);

        baseMapper.delete(wrapper);

        log.info("[{}] - 删除操作:{}",wrapper.getSqlSelect());

    }

5.7通知公告管理模块的实现

在主页左侧菜单栏中点击“通知公告管理”按钮,再从二级目录中点击“新增公告”按钮,进入到新增公告界面。在此处公告可以添加公告的名称、价格、预约方式。

在主页左侧菜单栏中点击“通知公告管理”按钮,再从二级目录中点击“查询公告”按钮,进入到查询公告界面。在此处公告可以查询当前所有公告记录。

通知公告展示界面如下图所示。

图5-12 公告展示界面

通知公告管理界面如下图所示。

图5-13 通知公告管理界面

通知公告管理关键代码如下:

 @RequestMapping("/get_list")

    public Map<String, Object> getList(HttpServletRequest request) {

        Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));

        return success(map);

    }

6 药品管理系统测试

一个系统设计好后,就会进入测试阶段,测试的目标是检验设计好的网站是否可以正常无误的运行,尽可能的发现网站的问题,已使后期网站投入使用后网站尽少出错[12]。

6.1 测试定义

系统测试主要是判断系统是否可以正常运行,功能模块是否可以实现操作。程序代码中是否有错误出现。测试程序是开发过程中的一个主要问题。就算系统完成的再好,再进行程序测试时也会也会发现一个重来没有被发现的错误信息。

测试不仅是系统开发的开始,而且应该贯穿整个系统的整个生命周期。评估系统质量的方法不局限于系统编码和过程,应该与软件设计工作和历史需求分析密切相关。系统错误,不一定是代码错误,可能是阶段的设计摘要和设计细节存在问题,问题也可能出现在需求分析阶段。从实际情况来看,最初的问题很可能是一个小错误,根据按钮的原理,按钮后的按钮位错将是所有位错。该系统的原因也同样适用,随着后续的开发工作,误差将越来越严重。因此就应该对系统进行测试,在一开始就发现系统中存在的问题,就能保证以后系统能够正常稳定的运行。在测试系统中,开发人员应该站在客户的角度来处理测试工作,而现在主要的测试方法是黑盒测试。测试的目的可以概括为以下几点:首先,用户界面和客户需求是一致的,设置界面和设计风格统一;第二,创新设计接口规范设计标准,具有独特的审美特征;最后,人类传统的接口以满足审美需求,不能盲目地追求一种独特的,合理的规划布局,符合审美标准。

6.2 测试目的

测试的目的在于要对系统的稳定和可操作性能进行对照检查。对于软件的开发利用最终的目的在最后的测试和试用,这是一个不可缺少的重要环节。对于软件开发者而言,在对每一个单独的功能进行编排时候,都要有单独的测试,并通过测试阶段才可以研发多个功能性软件,这样既缩短了研发时间,也可以在的单个的早期测试中发现问题,以免融合后的软件,在查找问题时就很难快速解决或者急速定位问题。

springboot药品管理系统开发设计完成后,需要对其进行系统测试,测试的主要目的就是发现并找出系统中存在的问题,并及时的进行解决,确保系统可以正常稳定的运行下去,在进行系统测试的时候,在一定要非常的认真、仔细,切记不能粗心,不能放过一个漏洞,测试时候一定不要着急,要按照之前指定好的测试步骤一步一步进行,并且将测试的结果进行详细的记录,我们在进行测试的时候做好选择自动化的测试,这样既可以节省时间而且也能确保测试的准确性,如果采用人工测试的方法就不会这么的方便,由于人工测试有很多不确定的因素,在测试过程中很可能会出现一些问题,用机器测试就不会出现任何的问题,而且机器不会疲惫会一直二等工作下去。在测试的时候一定要非常专注,时刻关注着测试的结果,一但发现异常及时进行修改,最后,测试完之后的文档应该保存下来,方便以后测试时用到。系统测试的方法有很多,对于本智能药品管理系统的测试,我们使用了测试用得最多的黑盒测试方法来对该系统进行测试。

6.3测试方案

对测试计划的把握是测试方案的重中之重。所有的技术难点应该都被包含在这个测试计划之中。而且我们要保证能与目标形成一致性,以至于能够测试出一些主要存在的错误和一些错误的漏洞。可以完美解决这些问题就只有白盒测试或者黑盒测试。

构造测试是白盒测试的另一个名字,了解与分析程序的结构以及性能功用的,从而我们可以得到最终想要的结果并且观察出是不是每一条程序都能得到。

性能测试是黑盒测试别称,程序本身的运作通过程序的进程来观察,主要是看一下程序是不是能够像我们预期的目标那样发展,看一看我们的程序最终能不能完整的得到我们最后想要的功能和储存想得到的数据,到最后看一下我们的这个程序完整性能不能达到要求。

1)模块测试

单元测试就是模块测试,顾名思义就是测试每个模块所承担的功能是否能够实现,这个测试就是为了找出代码在实际的设计运转中某一些小的程序所出现的偏差,很好地改正这些错误,就说明我们模块测试进行很成功过。

2)集成测试:

集成测试就是对系统的测试以及对他子系统的一些性能测试,他检查的事系统的包装程序信息。找出其中的问题。他的优势主要有以下这几点:

软件耗费较少。

可以提前发现端口的错误。

更好的地位系统中错误的位置。

从底部往上面进行的方案针对于偏下层的结构,而中间的结构就采用折中的方法。

3)验收测试:

终于到了结尾性的工作了。就是为了给用户看一下我们的系统功能是否达到了预期的效果。我采用了性能测试也就是黑盒测试对系统进行测试。

其结果是分别是:

有一定的差异在用户的需求。

再者就是结果与之差不了多少。

到了最后了,我们发现的问题都是与用户的需求存在一定的关联。

1、登录测试

 测试点:登录

测试的目标:输入账号密码以及验证码后系统会自动进行验证是否正确。

所用的环境:Windows10和IE浏览器。

输入信息:用户名、密码。

步骤:

(1)首先我们打来浏览器,进入该系统的登录界面。

(2)在进入页面登录部分以后可以进行对用户名、密码进行测试,具体测试输入情况如下表6.1所示。

表6.1 登录测试

情况

用户名输入

密码输入

期望结果

(1)

15546219225

1244566

提示“用户名或者密码错误,或账号未经审核”

(2)

aaaaa

123456

提示“用户名或密码错误,或者账号未经审核”

(3)

15546219225

hangguowei

登陆成功

6.4系统分析

本药品管理系统设计要求基本都可以达到,此系统具有完整的软件功能,良好的用户界面,能够正确的处理错误信息,而且能够准确的提出错误的种类。但是系统测试时也出现了一些系统的不足和缺陷,所以在今后的日子里我会对其视觉上的不足作出修改,其次系统的代码和数据库出现了非常多的冗余现象,都是因为对编程技术的应用不够熟练,在日后我会加强自己的自身学习和能力,减少这样的冗余现象。

经过对上述的测试结果分析,本药品管理系统无论是在技术方面,还是操作方面,还是经济方面都是完全可以实行的,并且经过测试,该系统操作简单,所有的功能都可以实现,因此该系统可以满足人们的使用需求,值得被推广。

总体说来,软件通过测试。

7 结论

本文研究了springboot药品管理系统的设计与实现,在文章开端首先对个研究背景、研究意义和研究目的作了简单的介绍,然后通过系统分析,引申出本系统研究的主要内容。

通过对SpringBoot框架技术和MYSQL数据库的简介,从硬件和软件两反面说明了药品管理系统的设计与实现的可行性,本文结论及研究成果如下:实现了SpringBoot框架与mysql数据库相结合构建的药品管理系统,通过本次药品管理系统的设计与实现的研究与实现,我感触到学习一门新技术,最重要的是实践,只有多动手才能尽快掌握它,一个系统的开发,经验是最重要的,经验不足,就难免会有许多考虑不周之处。要想吸引更多的用户,系统的界面必须要美观、有特色、友好,功能要健全。

由于在此之前对于SpringBoot知识并不了解,所以从一开始就碰到许多困难,例如一开始的页面显示不规范、数据库连接有问题已经无法实现参数的传递等等,不过通过我不断的查阅相关的资料,以及向老师同学请教,最后出现的所有的问题都得到了解决,通过这次的系统开发,我学到了很多的知识,也明白了自己在哪些方面有不足的地方,尤其是学会如何从大量的信息中筛选出所需有用的信息,同时我更加深刻的体会到了,虽然书本上的大部分知识都是有价值,正确的,但实际上每个人编程的思路和对数据处理的方法、思想都是不同的,这就要求我们一定要通过实践才能找到解决问题的方案。在此次毕业设计活动中,我不断的提高了自己,也得到了宝贵的经验,我相信这些对我以后的发展都会有很大帮助。

通过这次药品管理系统的开发,让我学到了更多的知识,同时通过这次系统的设计也让我明白了自己在哪方面有不足,以后加以学习争取可以开发住更多有用的适用的系统软件,本次系统的设计提高了我的编程水平,为了我今后系统的开发打下了结实的基础。

参考文献

[1]成忠平,王若,于凯丽等. 一种麻醉药品管理系统及方法[P]. 天津市: CN117198460A, 2023-12-08.

[2]周建存,刘权. 调度平台、药品管理系统、联合药品调配系统和调度方法[P]. 湖南省: CN112951401B, 2023-12-01.

[3]刘明,杨胜飞,张冶锋等. 基于SpringBoot框架的长距离输水工程水量监测系统设计 [J]. 云南水力发电, 2023, 39 (11): 359-362.

[4]尹应荆. JAVA编程语言在计算机软件开发中的应用 [J]. 石河子科技, 2023, (05): 45-47.

[5]苏婉怡,揣小龙,王煜尧等. 基于Java技术的考试系统设计与实现 [J]. 无线互联科技, 2023, 20 (14): 75-77.

[6]岳峰,段政伟. 基于SpringBoot框架的营区手机管控平台设计与实现 [J]. 无线互联科技, 2023, 20 (11): 49-52.

[7]谭康康,胡支滨,韩阳等. 药店药品信息管理系统的设计及优化 [J]. 华北理工大学学报(自然科学版), 2023, 45 (02): 104-109.

[8]戎成婷,王菲菲,罗晶晶等. 麻醉精神类药品智能管理系统的构建与应用 [J]. 中国卫生质量管理, 2023, 30 (02): 16-19.

[9]严志瑜,范瑞,王伟等. 麻精药品管理与智慧管理服务系统建设探讨 [J]. 医院管理论坛, 2022.

[10]Jiankang H ,Jinjin C ,Qianqian L , et al. Application of family-involved smart medication management system in rural-dwelling middle-aged and older adult participants with chronic diseases: Management of chronic diseases in rural areas [J]. Medicine, 2022.

[11]L M C ,Andrew M ,Bonnie T . Integration with electronic medication management systems is non-negotiable for a national allergy/ADR register. [J]. The Medical journal of Australia, 2022.

[12]王肖雲,卫丹,陈光等. 药物临床试验辅助药品管理系统的建设与应用 [J]. 中国医院药学杂志, 2022, 42 (22): 2411-2414.

[13]毛建利,沈晓敏,杨建军. ABC分类法提高基层医院药品管理系统的效果观察 [J]. 贵州医药, 2022.

[14]张宇,胡丽娜,游海鸿. 药品管理系统升级中的经验与体会 [J]. 中国新通信, 2022.

[15]高志平. 基于SpringBoot框架与ITIL方法的运维管理系统的设计与实现[D]. 华东师范大学, 2021.

[16]Madaline K ,Rebecca M L H ,Yi W Z , et al. Electronic Medication Management Systems: Analysis of Enhancements to Reduce Errors and Improve Workflow. [J]. Applied clinical informatics, 2021.

[17]章政焕. 基于RFID的化学药品管理系统[D]. 宁波大学, 2021.

[18]曾公任. 实验室药品管理系统的设计与实现[D]. 福州大学, 2020.

[19]张关心,文芳. 药品管理系统升级应用体会[C]// 中国药学会医院药学专业委员会. 2020年全国医院药学学术年会暨第72届世界药学大会卫星会论文集. 华中科技大学附属梨园医院药剂科;, 2020.

致谢

本次毕业设计圆满的结束了,通过这次毕业设计我学到了很多的知识,也提高了我软件开发的能力,在系统开发设计的过程中,出现了很多的问题,但是通过老师和同学们的帮助,最后所有的问题都得到了解决,因此我要感谢在此过程中对我帮助的老师和同学们,感谢指导老师帮助我选课题,给我做详细的讲解,给我提供设计所需要的各种设备,也经常询问我进度与成果,再有难点的时候给我解决思路,帮助我顺利完成。没有他的指导,也不会有我今天所展现出的成果。

首先我要感谢我的指导老师,指导老师在教学任务繁忙的情况下,抽出时间帮助我纠正我在设计当中出现的问题,并耐性地为我的论文作校正,是他的定期检查和指导使得我们的毕业设计高质量完成。他在我整个课题开发和设计的过程中,为程序的设计、框架的设计、代码的撰写方面以及论文框架的设计提供了很多宝贵的意见,并且为我推荐了许多有用的资料和文献,他的指导和建议使我受益匪浅,有了指导老师的辅导和指点,我论文才能够顺利完成。老师的认真负责的工作态度和治学严谨之道使我们这些即将踏入社会的毕业生受益匪浅。

然后要感谢我的同学们,感谢大家对我这次毕业设计的帮助, 也感谢大家在大学生活中对我的陪伴,使得我的大学生活过的很快乐。

另外,我还要感谢父母,感谢一直以来对我的支持,让我能够顺利的完成我的学业,没有你们也就没有我的今天,感谢你们无私的付出,未来我一定会报答你们的。

最后,感谢在座的所有参加我论文答辩的老师们,感谢大家的聆听,你们辛苦了。

点赞+收藏+关注 → 私信领取本源代码、数据库

  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值