摘    要

随着社会的进步,人们对于生活越来越重视,健康也成为了人们生活中不可忽视的一部分。在医疗行业中,不可缺少的治疗就是药物治疗。不同的病人、病人不同的时期,对于药品的需求量和需求种类都是不同的。近些年来,我国的市场经济发展蓬勃,医药行业也迅速发展起来。药品的种类在市场的需求不断增加,传统的手工记录管理已经不能够满足现代化和高效率的管理方式。网络在二十一世纪不断发展,利用网络进行药店管理已经成为了社会的一种趋势。

本课题使用Java作为开发语言,使用MySQL作为数据库,采用MVC的三层设计模式。本课题主要针对药品的种类、药品的销售等进行研究。网上药店平台代替了传统手工来管理药店。本设计主要从药品的销售管理出发,分析当前市场药品管理系统的一些现状和背景,从可行性的角度分析系统开发的可行性,通过对功能模块以及数据库交互的设计到最后系统编码及Bug测试,完善本次设计。

本系统满足了人们对现代化生活品质的追求,方便了药店管理员对药品进行销售,减轻了工作人员的工作压力。

关键词药店;信息系统;Java;MVC

 The Design and Implementation of Online Drugstore

 Management Platform Based on Java

Abstract 

With the progress of society, people pay more and more attention to life, and health has become an indispensable part of people's life. In the medical industry, the indispensable treatment is drug treatment. Different patients, patients in different periods, the demand for drugs and types of demand are different. In recent years, China's market economy has developed vigorously, and the pharmaceutical industry has also developed rapidly. With the increasing demand for drugs in the market, the traditional manual record management has been unable to meet the needs of modern and efficient management. With the continuous development of the network in the 21st century, it has become a trend of society to use the network to manage pharmacies.

This topic uses Java as the development language, MySQL as the database, and MVC as the three-tier design mode. This topic mainly focuses on the types of drugs, drug sales and so on. The online pharmacy platform replaces the traditional manual management of pharmacies. This design mainly starts from the drug sales management, analyses the current situation and background of the drug management system in the market, analyses the feasibility of the system development from the perspective of feasibility, and perfects the design through the design of functional modules and database interaction to the final system coding and Bug test.

This system satisfies people's pursuit of modern quality of life, facilitates pharmacy administrators to sell drugs, and reduces the work pressure of staff.

Key Words:Pharmacy;Information System;Java;;MVC

目    录

    

Abstract

    

1  绪论

1.1  课题的研究背景

1.2  课题的研究意义

1.3  国内外现状

1.4  本系统主要研究的内容

2  相关技术介绍

2.1  Java语言介绍

2.2  JSP语言介绍

2.3  SSM框架介绍

2.4  MySQL数据库

2.5  Tomcat服务器

2.6  JavaScript介绍

3  系统需求分析

3.1  用户需求分析

3.2  系统功能分析

3.2.1  员工管理

3.2.2  药品类型管理

3.2.3  药品管理

3.2.4  销售管理

3.3  可行性分析

3.3.1  技术可行性

3.3.2  法律可行性

3.3.3  经济可行性

4  系统总体设计

4.1  功能设计

4.2  数据库设计

4.2.1  概念结构设计

4.2.2  逻辑结构设计

5  系统实现

5.1  数据库连接

5.2  系统功能模块的实现

5.2.1  员工模块实现

5.2.2  药品类型模块实现

5.2.3  药品管理模块实现

5.2.4  销售管理模块实现

6  系统测试

6.1  测试目的

6.2  测试用例设计

6.3  测试结果

    

   

    

引    言

在科技迅速发展的时代,把科技运用到生活中或者运用到某一领域才能发挥科技的作用。现在的社会发展趋势越来越能体现出科技的重要性,有很多科技的产品和软件的研发,已经足够受到人们的青睐,科技也越来越接近我们的生活[1]把科技应用到实际生活中,是目前最热门的研究课题。如何设计一套科学的、适合在药品管理系统就更为重要了[2]为了适应社会的发展,本课题使用Java语言进行编程,主要针对提高工作效率、解决繁重工作的问题设计开发药品销售管理系统[3]

本系统主要分为四大模块,分别是药品类型管理、药品管理、员工管理、销售管理。本文的重点在于将互联网和药店管理联系在一起,并且能用相应的开发技术和数据库实现系统中的各个功能[4]本文的难点在于药店管理系统中各项功能的实现,要做好需求分析,进行详细的业务流程分析,得到系统的总体功能结构以及对系统的数据库设计。

    


1  绪论

1.1  课题的研究背景

在网络普及的时代中,网络在生活和工作中都有着不可代替的地位。在药店的管理中,由于药品的特殊性以及使用性,销售药品是绝对不能出现失误的,以及在药品数量不足时要及时补充药品[5]。大量的记忆使药店管理员的工作存在巨大压力,依靠传统的手工记录是不能让药店管理员来减轻工作上的压力。虽说网络出现在现代的生活中和工作中,但网上药店交易平台在药店的管理中还存在一些问题[6]。

药店管理人员并没有意识到网络对药店的管理有着重要的管理模式,因此,在一些药店中,会出现药品断货或药品进货太多的问题,这给药店增加了成本,减少了销售的数量。为了解决这一问题,完善药店的管理体系,本课题针对网上药店交易平台做出了研究。在必要计算机的帮助下将所有数据输入数据库,然后使用系统来管理这些数据,并通过统计和分析获得各种有用的信息[7]。

1.2  课题的研究意义

随着国民经济的增长和生活水平的提高,尤其是社会物质商品的丰富多彩,在市场中,药店的销售也发生了巨大的变革。现代社会的发展越来越趋于城市化,药店也随处可见[8]。从客观上来讲,药店需要改变并且要求使用现代化产品网络来进行运营适应这一强大的变化。

本课题研究的意义主要是为了让药店的管理适应现代化的管理手段,不让药店的管理成为行业消失的可能,也为药店的管理人员和销售人员减轻工作上的压力,更高效、更智能、更准确的管理药店[9]。使用计算机管理终将成为未来的药店管理趋势,改革的发展必须成为热点,强化内部管理、降低企业成本、提高工作效率,形成参与市场竞争的新的增长点。

1.3  国内外现状

据调查,在上个世纪九十年代初期,药店的管理系统就已经开始运行了。在西方国家,每个药店的运行都是独立存在的,药店也不允许加盟、连锁或开设分机构等[10]。这一条件主要是为了防止药店被某些公司进行垄断,逼迫消费者不得不购买昂贵药品。尤其是在德国,对于药品更加严格,所有的药品必须按照国家规定的价格进行销售,不能擅自修改价格,这样既维护了消费者也维护了药店的经营,药店与药店之间不构成直接要挟。由于国外网络技术的发展很快,对于药店的管理系统也有很高的要求[11]。因此,早在二十世纪初期就开始使用网上药店交易平台,发展至今,已经运行的十分广泛和完善了。

在我国,医疗行业没有国外发展的迅速,目前正处于飞速发展的阶段。在一个行业中想要发展起来,必须要在夹缝中求生存,在竞争中求发展。客观上讲,要从企业内部做好管理[12]。在传统的药店管理模式上来说,人们使用手工记录,在药品短缺或药品有存量的情况下,人们在补充药品时要查阅很多药品才能够了解,这给人们的工作带来了很大的压力。如何尽善、尽美的解决这一问题呢,少不了的就是使用新的管理模式、符合现代化产品的管理模式。

1.4  本系统主要研究的内容

本系统主要是针对药店管理作为研究话题,使用Java语言开发出了一款能够记录药店的销售情况和管理的系统。本系统由管理员进行登录,用户主要是药店的管理人员。在本系统中可以对药品进行管理,主要分为四大模块,分别是药品类型管理模块、药品管理模块、销售管理模块、员工管理模块。这四大模块能够对药品进行良好的管理,如增加药品、减少药品、删除药品、出售药品等,方便了管理员和工作人员对药品的管理和对整个药店的管理。


2  相关技术介绍

本章主要介绍此系统在设计过程中才涉及的技术,本系统采用MVC的三层设计思想、采用JSP作为页面设计、采用SSM框架作为Java后台设计、数据库存储采用MySQL。

2.1  Java语言介绍

Java作为最常用的开发语言之一,是基于面向对象的开发。而C++相比是基于面向过程开发,这也是Java开发简单的原因之一。C++则经常作为底层开发语言或者游戏进行开发。据统计在近几年Java一直是作为第一开发语言选择,Java语言的开发优势明显,跨平台优势,不局限与某个开发平台,移植性较高,且具有三大特点:继承、封装、多态。因此代码的重复利用度与逻辑性较高。继承:可以将具有公共类或属性的类进行整合,提炼,逻辑性更好。封装:则可以作为Jar包,避免一些开发人员因为业务逻辑而去阅读一行的代码,只需直接调用处理结果。多态:则是依据不同的情形对不同的方法设定不同的参数,返回不同的结果。Java的开发包为JDK,包含了很多的基础的开发封装,Java开发也有23种开发模式,都是经过提炼后的一种设计思想[13]

2.2  JSP语言介绍

JSP的前身为html静态页面,主要是采用超文本语言设计,此文本服务器可以渲染。主要是为了快速响应访问,但HTML的缺点也较为明显,太过于静态,对于用户体验来说没有交互体验,而动态页面可以依据不同的业务进行页面显示,也可通过点击、或者是提交等操作随时发生改变[14]。对于服务器而言JSP页面可以编译转为Class文件,而HTML仅作为一个页面文件不会被视为程序,JSP页面可以包含一些交互标签,也可包含一些JavaScript代码,在页面中也可进行数据库交互,可以减少页面的程序代码维护,将用户进行定制化请求处理。JSP也是跨平台,可以嵌入Java脚本,也可集成很多的插件,有利于平台的健硕性和维护性[15]

2.3  SSM框架介绍

Spring:Spring作为整合框架的两大特点,IOC、DI控制反转、切面编程.。Spring最大的优势在于对开发者来讲引入了注释,通过注释已经Interceptor拦截,将init的所有的Action和Service进行提前注入。避免了项目调用时新建,而且Spring可以配置Transaction事务拦截,在最初的日志Log中都是手动控制事务原子性,通过事务的配置和拦截,可以将需要事务一致性的方法进行配置,Spring通过在XML中配置Scan进行初期的扫描拦截,通过配置Session Factory进行数据库Session操作管理。首先获取到Session操作线程,然后开启事务,然后进行数据库增、删除、改、查操作。然后提交事务,关闭连接,在Spring中也可以配置一些定时Quarter等,可以通过注入Bean然后调用操作的Service进行定时处理[16]。总而言之,Spring是一个容器框架,可以集成很多的ORM或者是Servlet框架,也可进行优化事务拦截处理。

SpringMVC:在最初的MVC三层模式开发中,Servlet是作为中转进行请求处理。SpringMVC则是Servlet框架,可以进行RequestMappring路径配置,可以对action进行controller控制层注入。SpringMVC可以进行Interceptor拦截处理,可以对登录或者是后台权限请求进行拦截,控制层的主要作用为将前端页面发送的请求进行路由分配,而在Struts中,会有一个Config.xml进行路径配置工作,在此框架中进行优化、简化,通过Action调用Service然后返回数据到页面,SpringMVC就是一个中转站。但在MVC中起着至关重要的作用,可以将代码进行彻底的逻辑分层,可SpringMVC的出现是Servlet的进一步升级优化[17]

Mybatis:MyBatis作为ORM框架,是处理数据库层Dao的逻辑处理。在最初都是JDBC进行声明调用,手动调用配置,通过Statement进行处理增删改查,后来逐步优化为Hibernate框架,作为升级,Hibernate的优势明显可以集成多种数据库,不依赖于某种数据库,这样在数据库进行更改或者替换的时对代码没有任何影响。且采用Hql语句,符合Java的面向对象理念,而后来逐步发现Hibernate框架较为沉重,配置较为复杂,在中小型项目的开发中,消耗较大。因此Mybatis的出现最大化的框架优势,MyBatis中的Mapper.xml中配置SQL语言,且进行模块话,增加利用度,降低重复度,XML只需Dao中的Mapper进行配置。然后注入到项目中即可完成,简易方便,且特别在集成MySQL数据库时更为方便。在性能方面,无论是二级缓存的配置,还是Redis缓存配置,都较易集成,因此MyBatis在ORM的选择中更加受欢迎。

2.4  MySQL数据库

MySQL服务器作为目前最主流的高效率数据库,MySQL作为操作最简洁SQL最简单的数据库,便于很多小型项目的选择。数据库中很重要的核心为事务,事务能够保证数据的原子性和一致性,避免了数据的脏读。如若执行SQL失败,数据立马回滚。事务具有的四大ACID特性:(1) 一致性 保证数据的一致。(2) 原子性 以最小的单位进行执行,成功与否都是一个执行整体。(3) 持久性 SQL执行成功即保存到数据库不会再进行改变。(4) 隔离性 在事务执行过程中不受其他干扰。此数据库采用插件式的存储优化引擎设计,根据不同的表的搜索条件设置不同的存储引擎,给一些操作频繁的表设计索引,查询快捷。MySQL主要存储字段类型为Int,Varchar,Double等,MySQL作为中小型数据库可以存储的数据大约为几百万左右,否则查询速率会减缓,MySQL的分页查询较为方便。可以使用Limit进行限定查询,MySQL可以作为存储的主从备份,依据二进制日志传输进行数据同步,且数据库依据第三范式进行设计,基于执行的原子性和一致性进行交互。且MySQL可以集成框架较多,可以基于Hibernate或者是MyBatis进行集成ORM框架,且MySQL的索引使用方便,便于查询,安装也更为方便[18]

2.5  Tomcat服务器

Tomcat主要作为Java开发的部署服务器,主要为应用war包的部署,此服务器可以应用与Windows或者是Linux平台,默认的访问端口为8080,启动端口为8005,关闭端口为8009,可以在Web.xml中进行调整修改,Tomcat主要成分为Webapps文件夹,将War包放到此文件夹后进行解压,将Java文件解压为可编译的class文件,将JSP文件或者是HTML文件进行编译,在输入地址栏Url后首先去服务器中寻找Action对应路径,然后进行对应文件查找,将数据进行返回到可浏览器进行描绘,浏览器进行响应。

2.6  JavaScript介绍

JavaScript也是一阵脚本语言,其核心目的是为了增加页面与后台的交互功能,它的核心思想也是面向对象,主要是用于描述前端Web的语言脚本,主要用于前端页面的事件驱动,简化服务端处理业务负担,JavaScript主要是处理页面数据跟页面显示,将数据能够有效的传递从而丰富客户端界面效果,Js还可以用作页面数据的校验,例如邮箱、数字、长度等显示,达到实时纠错效果,它的核心为ECMAScript,类似于一个规范标准,另外两组核心为浏览器对象模型、文档对象模型,Js可以直接处理标签,也可直接处理后台传回的数据,而Ajax作为前端的异步交互不刷新框架,将Js的交互作用彻底扩大。


3  系统需求分析

通过本章可以了解到本系统的大部分的业务需求,主要实现的功能有哪些,对应的相关解决方案及使用到的技术有了大体的了解,对本系统的需求从两方面进行分析,我们了解到主要包括功能性和非功能行分析,功能性需求分析根据不同的功能,从问题出发,到解决方案,以及为什么使用这种技术来解决,对本功能能够有个初步的了解,通过后面的章节进行逐一解决。非功能行分析涉及到性能、安全以及开发环境等方面,从系统的整体出发,结合当前自身的局限性,寻求最适合自己的解决方法。可行性分析为我们系统开发保驾护航,从各个方面入手分析,详细分析系统开发的可行性。

3.1  用户需求分析

本系统主要为两种用户角色,主要为管理员、药店售货员,依据用户的不同用户角色然后进入不同的操作界面。

(1)

药品类型管理:可以输入药品类型的基本信息进行新增,以便后续对药品进行分类,可以对药品类型进行编辑和分页查询。

药品添加:可以选择药品的类型,输入药品名称、单价和描述等进行新增,新增后直接保存到数据库

药品管理:可以对药店药品的信息进行分页查询,可以对药品进行信息编辑,可以对药品数量进行编辑

销售管理:进入销售页面可以填写药品的销售信息,选择药品、填写数量提交,可以查询药品的销售详细记录。

销售统计:可以对药品的销售记录进行统计,可以按照类型和时间进行统计

用户管理:管理员可以对平台的用户进行新增,可以分页查询用户信息。

(2)

系统功能流程图如下:

用户登录流程图,首先用户输入用户名、密码、选择用户角色,然后进行校验,校验成功后后台依据Role进行匹配跳转如图3.1所示:

图3.1  用户登录流程图

药品添加流程图,首先新增药品的类型,然后在新增界面,选择药品的类型,然后输入药品信息,若药品编号已存在则提示错误,否则保存成功,如图3.2所示:

图3.2  药品添加流程图

3.2  系统功能分析

根据功能模块梳理,系统用例图如图3.3所示:

图3.3  系统用例图

3.2.1  员工管理

(1) ① 功能描述

员工信息查询:点击个人信息查看。

员工信息编辑:编辑个人信息,保存信息。

② 用例描述

表3.1  员工信息查看用例表

描述

英文称呼

user_message

用例名称

员工信息查看

用例说明

员工信息查看

参与者

平台员工

前置条件

跳转到个人信息查看界面

使用流程叙述

个人信息显示不完整,跳转a1

错误流程原因

a1. 个人信息显示错误

后置条件

个人信息展示成功

表3.2  员工信息编辑用例表

描述

英文称呼

User_message_edit

用例名称

个人信息编辑

用例说明

个人信息编辑

参与者

平台员工

前置条件

个人信息编辑界面

使用流程叙述

编辑个人信息,数据保存失败跳转a1

错误流程原因

a1. 保存数据异常

后置条件

数据保存成功

(2) ① 功能描述

员工新增:将员工信息进行新增保存服务器。

员工信息查询展示:员工信息可以展示,可以进行查询。

② 用例描述

表3.3  员工新增用例表

描述

英文称呼

user_add

用例名称

员工新增

用例说明

员工新增

参与者

平台管理员

前置条件

跳转到员工新增界面

使用流程叙述

1. 填写员工新增,信息错误点击提交则跳转a1

2. 员工信息填写不完整,跳转a2

错误流程原因

a1. 员工信息错误

a2. 员工信息不全

后置条件

员工新增成功

表3.4  员工查询展示用例表

描述

英文称呼

user_list

用例名称

员工查询展示

用例说明

员工查询展示

参与者

平台管理员

前置条件

跳转到员工信息查询展示界面

使用流程叙述

1. 点击员工查询,若数据不显示则跳转a1

2. 点击员工查询分页页码,若数据不显示则跳转a1

错误流程原因

a1. 查询数据异常

后置条件

数据展示成功

3.2.2  药品类型管理

(1) 功能描述

药品类型新增:将药品类型新增信息新增保存服务器。

药品类型信息查询展示:药品类型信息可以展示,可以进行查询。

(2) 用例描述

表3.5  药品类型新增用例表

描述

英文称呼

type_add

用例名称

药品类型新增

用例说明

药品类型新增

参与者

平台管理员

前置条件

跳转到药品类型新增界面

使用流程叙述

1. 填写药品类型新增,信息错误点击提交则跳转a1

2. 药品类型信息填写不完整,跳转a2

错误流程原因

a1. 药品类型信息错误

a2. 药品类型信息不全

后置条件

药品类型新增成功

表3.6  药品类型查询展示用例表

描述

英文称呼

type_list

用例名称

药品类型查询展示

用例说明

药品类型查询展示

参与者

管理员

前置条件

药品类型信息查询展示界面

使用流程叙述

1. 点击药品类型查询,若数据不显示则跳转a1

2. 点击药品类型查询分页页码,若数据不显示则跳转a1

错误流程原因

a1. 查询数据异常

后置条件

数据展示成功

3.2.3  药品管理

(1) 功能描述

药品新增:将药品新增信息新增保存服务器。

药品信息查询展示:药品信息可以展示,可以进行查询。

(2) 用例描述

表3.7  药品新增用例表

描述

英文称呼

yaopin_add

用例名称

药品新增

用例说明

药品新增

参与者

平台老师

前置条件

跳转到药品新增界面

使用流程叙述

1. 填写药品信息,信息错误点击提交则跳转a1

2. 药品信息填写不完整,跳转a2

错误流程原因

a1. 药品信息错误

a2. 药品信息不全

后置条件

试题药品成功

表3.8  药品查询展示用例表

描述

英文称呼

yaopin_list

用例名称

药品查询展示

用例说明

药品查询展示

参与者

管理员

前置条件

药品信息查询展示界面

使用流程叙述

1. 点击药品查询,若数据不显示则跳转a1

2. 点击药品查询分页页码,若数据不显示则跳转a1

错误流程原因

a1. 查询数据异常

后置条件

数据展示成功

3.2.4  销售管理

(1) ① 功能描述

药品销售新增:将药品销售新增信息新增保存服务器。

药品销售信息查询展示:药品销售信息可以展示,可以进行查询。

② 用例描述

表3.9  药品销售新增用例表

描述

英文称呼

yaopin_sale_add

用例名称

药品销售新增

用例说明

药品销售新增

参与者

平台管理员

前置条件

跳转到药品销售新增界面

使用流程叙述

1. 填写药品销售新增,信息错误点击提交则跳转a1

2. 药品销售信息填写不完整,跳转a2

错误流程原因

a1. 药品销售信息错误

a2. 药品销售信息不全

后置条件

药品销售新增成功

表3.10  药品销售查询展示用例表

描述

英文称呼

sale_list

用例名称

药品销售查询展示

用例说明

药品销售查询展示

参与者

管理员

前置条件

药品销售信息查询展示界面

使用流程叙述

1. 点击销售查询,若数据不显示则跳转a1

2. 点击销售查询分页页码,若数据不显示则跳转a1

错误流程原因

a1. 查询数据异常

后置条件

数据展示成功

(2) ① 功能描述

药品销售统计信息查询展示:药品销售统计信息可以展示,可以进行查询。

②用例描述

表3.11  药品统计查询展示用例表

描述

英文称呼

sale_tongji

用例名称

药品销售统计查询展示

用例说明

药品销售统计查询展示

参与者

管理员

前置条件

药品销售统计查询展示界面

使用流程叙述

点击销售统计查询,若数据不显示则跳转a1

错误流程原因

a1. 查询数据异常

后置条件

数据展示成功

3.3  可行性分析

3.3.1  技术可行性

从技术的角度来看本系统使用的是基于SpringMvc、Spring、MyBatis,这些技术相对来说已经相对成熟,社会的使用度很广,在各大企业都存在广泛的应用,由于SSM框架相对于传统技术比较轻量级,上手方便,对项目的搭建非常的迅速开发周期相对较短;前端框架使用的JavaScript,是一款优秀的页面交互框架,如果开发上遇到一些难度,相信可以轻易的解决。JavaScript虽然是一个前端的框架,但却有着和后台框架很相似的特性,这也就是他为什么受开发者喜爱的原因。最核心的特点就是可以进行数据的双向绑定,各个功能进行模块化的封装,支持继承与依赖注入等特性。对于我这个后端出身的开发者来说上手比容易,相对于原生的一些前端技术来说更加的简单易懂。

3.3.2  法律可行性

在整个设计中采用的设计均为开源软件,Java作为强大的开发语言选择也更为合适,此设计中无论是需求点还是工具使用都无任何的盗用行为。

3.3.3  经济可行性

现在计算机的价格已经十分低廉,性能却有了很大的进步。而开发本系统对系统开发者来说,并不需要太高的成本支出,开发周期不需太长,而这个系统使用后所带来的效益是巨大的,节省了人力、物力、财力、资源,所以本系统在经济上是可行的。


4  系统总体设计

4.1  功能设计

此项目主要为两种用户角色,主要为管理员、药店售货员,依据用户的不同用户角色然后进入不同的操作界面。

管理员端:主要为平台基础信息的管理,包括药品所属类型的管理,药品的新增,药品的查询和编辑、入库等,管理员可以查看每条销售的情况,可以对药品的销售进行统计。可以新增和查看药店用户。

员工端:主要是负责药品的销售,用户即为药店销售员,可以对药品进行销售,可以查看销售信息。

系统功能模块图如图4.1所示:

图4.1  系统功能模块图

药品销售主要为管理员和员工登录后,都可以进行药品的销售页面,可以输入药品的数量,点击提交完成药品销售,将销售信息保存到数据库且返回到销售列表页面。药品销售状态图如图4.2所示:

图4.2  药品销售状态图

管理员登录后可以进入员工新增页面,可以输入员工的基本信息完成员工的新增,提交保存到数据库,保存完成后跳转到员工列表页面。管理员增添员工状态图如图4.3所示:

图4.3  管理员增添员工状态图

管理员登录后可以对药品信息进行新增,填写药品的基础信息完整新增,信息保存到数据库,保存成功后跳转到药品展示页。管理员增添药品状态图如图4.4所示:

图4.4  管理员增添药品状态图

4.2  数据库设计

在进行数据库表设计之前我们首先确定数据库的选择,Oracle和SQL Server广泛的使用在大型的软件上,而且Oracle需付费使用,两者虽然性能优秀、功能全面,但软件安装包较大,安装和配置都比较烦琐,不太适合此类小型应用软件的使用。

通过分析本系统采用的数据库为MySQL,因为MySQL不仅开源而且免费,一般数据量不大或者对数据的安全要求不高的情况基本都会使用MySQL,因为并不是每个企业或者公司都可以使用得起Oracle。

4.2.1  概念结构设计

药品类型实体,包括药品类型的名称、类型描述等信息。药品类型实体属性图如图4.5所示:

图4.5  药品类型实体属性图

药品实体,包括药品名称、所属类型,药品描述、药品单价、数量等信息。药品实体属性图如图4.6所示:

图4.6  药品实体属性图

员工实体,包括员工的登录名、密码和联系电话等信息。员工实体属性图如图4.7所示:

图4.7  员工实体属性图

管理员实体,包括管理员的登录名、密码等信息。管理员实体属性图如图4.8所示:

图4.8  管理员实体属性图

销售信息实体,包括销售的日期、销售药品编号、销售数量和金额等信息。销售信息实体属性图如图4.9所示:

图4.9  销售信息实体属性图

依据系统功能模块分析以及系统的实体图分析得到系统的总实体属性图如图4.10所示:

图4.10  系统总体E-R图

4.2.2  逻辑结构设计

本系统数据存储采用MySQL数据库,以下为表的数据库设计方案。

管理员信息表,存储后台管理员的基础信息,包含管理员平台登录用户名和密码等信息。如表4.1所示:

表4.1  管理员信息表

字段列名

字段类型

是否主键

字段说明

Id

Int(6)

管理员编号

AdminName

Varchar(30)

管理员登录名

AdminPassword

Varchar(50)

管理员密码

药品类型信息表,主要用于存储药品类型的名称和描述等。如表4.2所示:

表4.2  药品类型信息表

字段列名

字段类型

是否主键

字段说明

Id

Int(6)

药品类型编号

Typename

Varchar(30)

类型所属名称

BZ

Varchar(50)

类型备注

CreateDate

Date

创建时间

StateBZ

Varchar(20)

类型状态

药品信息表,存储药品的编号,药品的名称和库存,价格等信息。如表4.3所示:

表4.3  药品信息表

字段列名

字段类型

是否主键

字段说明

YP_Id

Int(8)

药品编号

YP_Name

Varchar(50)

药品名称

YP_ChangShang

Varchar(30)

生产地

YP_Price

Double

药品价格

YP_CreateDate

Date

创建时间

YP_Description

Varchar(100)

药品描述

TypeId

Int(4)

所属类型编号

YP_Countnum

Int(4)

药品总数

员工信息表,存储药品员工的基础信息,包含用户的名称和平台登录用户名和密码等信息。如表4.4所示:

表4.4  员工信息表

字段列名

字段数据

是否主键

字段说明

User_Id

Int(4)

用户编号

User_Name

Varchar(50)

登录名

Password

Varchar(50)

登录密码

User_TEL

Varchar(11)

联系电话

销售信息表,包含药品的信息、销售的数量和金额和销售时间等信息。如表4.5所示:

表4.5  销售信息表

字段列名

字段数据

是否主键

字段说明

Id

Int(4)

销售编号

YP_Id

Int(4)

药品名称

RiQi

Date

销售日期

Num

Int(4)

销售数量

Money

Double

金额


5  系统实现

5.1  数据库连接

在后端与数据库的连接交互时我们经常会用到数据库连接工具之前是JDBC连接,目前采用的是c3p0连接池,依据对数据库配置的引入,将URL和Driver驱动进行设计,首先通过加载驱动Driver,然后对URL进行链接操作,依据数据库和密码进行数据库链接,可以配置数据库链接时的编码Urf-8。

5.2  系统功能模块的实现

5.2.1  员工模块实现

系统主要分为两种用户角色,后台管理员跟药店售货员,管理员首先进入登录页面,输入用户名、密码通过Post进行提交到LoginController进行验证,通过FindByName进行校验。如果未根据Username查询到此用户则直接提示该账号不存在。如果根据Username查询到用户则,以查询到的User跟前台输入的Password进行匹配,匹配成功登录成功,否则提示用户名或者密码错误。如果没有账号,管理员登录后新增员工信息,填写个人基本信息,Username、Password、TEL等。然后提交到后台调用Add方法,首先进行校验查看是否此用户名已存在,若存在则提示该账号已有,不存在则保存到数据库,登录界面如图5.1所示:

图5.1  登录界面

首先对输入信息是否为空进行校验,然后依据用户名密码进行用户匹配查询登录。登录流程图如图5.2所示:

图5.2  登录流程图

管理员用户管理模块,主要为记录药店店员情况信息,通过填写个人的基本信息,将信息填写后通过Controller提交到后台,然后调用Service进行保存,保存后的员工信息可以进行平台登录,界面如图5.3所示:

图5.3  管理员用户管理页面

如果没有账号,则进行新增,填写员工用户基本信息,首先进入新增员工页面,输入用户名、密码通过Post进行提交到UserController进行验证,通过findByName进行校验,如果未根据Username查询到此用户则直接提示该账号不存在,首先进行校验查看是否此用户名已存在,若存在则提示该账号已存在,不存在则保存到数据库创建用户。

5.2.2  药品类型模块实现

药品类型模块,主要为管理员通过填写药品类型名称和描述等基本信息,进行药品新增,通过Post提交到TypeController,提交成功跳转到查询页面,通过FindByPage进行分页查询,界面如图5.4、5.5所示:

图5.4  药品类型管理页面

图5.5  药品类型新增页面

药品类型新增流程,输入类型名称进行校验,若名称已存在,则提示错误,否则成功保存到数据库。药品类型流程图如图5.6所示:

图5.6  药品类型流程图

5.2.3  药品管理模块实现

药品管理模块,主要为新增药品信息,通过填写药品的名称和生产产家等信息进行存储,可以通过Limit进行分页查询,在模糊搜索时,可以通过填写关键字QueryName然后提交到Controller,通过Like语句模糊对比,进行分页查询显示,界面如图5.7、5.8所示:

图5.7  药品管理页面

药品新增,对进货的药品在填写进货数量后,对药品库存进行更新。在管理员发现药品数量不足是,然后提醒采购员进行采购申请,制定关于不足药品的采购计划,然后进行药品采购,在采购完成后,平台人员要对药品依据不同的类型进行入库。药品人员主要负责药品数量不足时的采购,可以对采购的药品进行登记记录,可以对已采购回来的药品进行入库。

图5.8  药品新增页面

药品新增流程填写药品信息,校验是否已存在,药品新增流程图如图5.9所示:

图5.9  药品新增流程图

5.2.4  销售管理模块实现

药品销售模块,进入药品销售模块,然后填写销售数量,首先将信息填写后通过Controller提交到后台,首先通过FindById获取到所购买的药品,然后获取到药品的单价,然后单价乘以数量计算出金额,然后调用Service进行保存,在查询时通过Where条件语句进行查询,界面如图5.10所示:

图5.10  药品销售页面

销售流程为输入销售药品数据,提交到后台,将销售数量跟余量来对比,余量不足则提示错误,否则将销售记录保存。销售流程图如图5.11所示:

图5.11  销售流程图

销售统计界面,通过对药品的类型及销售的记录金额进行关联查询,通过Group By 进行分组设计,以类型进行归类查询,获取到不同药品的销售情况,界面如图5.12所示:

图5.12  销售统计页面


6  系统测试

在一个系统的开发中,从定义要开发的内容,到提出开发软件的需求,再到具体开发,最后到测试,会经历大概四个步骤。首先要确定我们开发的系统都有那些功能,在开发中会遇到什么问题,所提的功能是否符合标准,最后是否能够真正的开发成功,人们会觉得这个步骤是有用的。而到软件开发就更不用说了,也是必不可少的步骤。测试是检验一个系统的开发是否正确,以及开发是否能够正常运行。

6.1  测试目的

测试目的主要就是针对本系统进行系统测试,首先介绍了系统的搭建环境和开发环境,其次按照每个功能的需求进行测试,测试应该进行多次重复测试,以确保测试的真实性和有效性,避免出现测试的小概率事件,影响用户的使用舒适。最后,我们应该通过测试进行测试分析,分析系统的功能和系统的测试情况,针对不同问题进行处理与改进,避免系统在使用时出现问题。

本系统中测试分为几大模块,包括管理员登录,药品类型,药品管理,销售管理等。主要通过模块测试、黑盒测试、白盒测试进行分析,通过对模块逻辑的分析进行流程的测试。系统的测试环境在项目部署后,不同的浏览器来测试屏幕网页的自适应度,通过相同的浏览器不同的内核版本进行测试。首先安装JDK,然后安装测试服务器Tomcat,安装测试数据库MySQL,然后配置数据库,导入测试数据,从而搭建测试环境。

6.2  测试用例设计

(1) 登录模块测试

表6.1  登录模块测试

序号

测试内容

测试输入

预期输出

1

正确登录

输入正确用户名密码

成功登陆

2

用户名错误

输入错误用户户名

提示用户名错误

3

密码错误

输入错误密码

提示密码错误

(2) 药品类型模块测试

表6.2  药品类型模块测试

序号

测试内容

测试输入

预期输出

1

药品类型信息

输入药品类型信息完整

提示文件上传成功

2

标题和内容

输入标题和内容未填写

提示内容信息不完整

(3) 药品管理模块测试

表6.3  药品管理模块测试

序号

测试内容

测试输入

预期输出

1

药品信息

输入完整药品信息

药品提交成功

2

药品信息

输入不完整药品信息

提示药品数据信息错误

(4) 销售模块测试

表6.4  销售模块测试

序号

测试内容

测试输入

预期输出

1

药品的销售数量

输入正确药品的销售数量

提示销售信息提交成功

2

药品的销售数量

输入错误销售数量或者超出库存数量

提示库存不足

6.3  测试结果

当输入错误的用户名和密码时,界面如图6.1所示:

图6.1  登录错误测试

药品信息填写不完整时,界面如图6.2所示:

图6.2  药品管理错误测试

药品销售超出库存数量时,界面如图6.3所示:

图6.3  销售管理错误测试


结    论

本系统主要针对了药店管理软件进行了设计与开发,开发语言主要使用Java进行网站开发与实现的。在开发的过程中,不光需要对Java编程思想有深入的了解,还需要对Java语言进行熟练的使用。在开发完成本系统之后,我深刻的了解到,开发成功一个优良的系统是非常不容易的。在开发之前,要做好遇到问题能够冷静处理的状态,要做到虚心像老师和同学请教的心态,要做到能够准确查找相关资料的办法。在开发过程中,不断的磨练自己,使得对软件开发环境有着深刻的理解,对SSM框架有更深的认识,对Java语言有着灵活的使用。

在解决问题时,不断的强大自己,丰富自己的专业知识和解决办法的能力,让自己变得更专业。课题设计的药品管理系统完整主要是使用IDEA软件作为本课题的开发环境,使用Java语言作为本课题编写设计,采用Bootstrap样式框架,采用MySQL作为数据库存储。通过开发本系统我明白了,开发一个系统并非一件容易的事,需要每一个环节紧密相连。

在开发过程中,我明白了作为一个优秀的程序设计者,不但要了解对开发环境和开发语言的灵活使用度,还需要了解在开发过程中将会遇到的问题和遇到问题时,如何解答问题,了解开发中所需要使用的数据存储的数据库。 经过本次开发的药品销售管理系统,我明白了开发好一个专业的系统,需要专业知识的搭建。准备好前期所需要的知识,避免后期遇到困难时,导致程序终止开发。

在设计项目的过程中,发现项目实现需要缜密的逻辑思维、项目的宏观把控、功能实现的可行性以及具体界面的设计与排版。在编写实现项目功能模块的代码时,使用不同的软件工具以及技术思想,来实现功能的逻辑思维以及所需时间和呈现效率,其差异性明显。利用IntelliJ IDEA软件的过程中,软件工具本身自带代码优化以及智能代码审查功能为项目提供了巨大的帮助。从平时了解并掌握项目的部分操作到完整完成项目的开发,进一步加深知识的理解与运用。

在本系统的部分功能实现过程中,融合新知识的学习,既开阔了眼界,又清楚了解自己的喜好和专业方向。


参 考 文 献

[1]贾轩,王栋轩.基于SSM框架下用户注册登录界面的设计与实现[J].信息系统工程,2019(02):54. [2]孙珊珊,陈国库,曲志超,罗欣雨,李欣.以学科竞赛为主软件开发为辅的JSP课程实践研究[J].赤峰学院学报(自然科学版),2019,35(01):132-134. [3]黄友鹏.基于SSH框架的教学管理系统的设计与实现[J].科技风,2019(03):34. [4]龚兴平.基于JSP的汽车租赁管理系统的设计与实现[J].计算机产品与流通,2019(01):158-159. [5]吴向荣.“Java Web编程技术”课程教学方法研究[J].电脑知识与技术,2019,15(01):165-168.[6]苗连萍.基于B/S的CAD考试系统设计[J].信息与电脑(理论版),2018(23):83-84. [7]刘烨.高职JSP程序设计课程教学模块化探讨[J].农家参谋,2018(24):124. [8]洪惠群.基于Spring MVC框架的在线辅助教学系统的设计[J].曲靖师范学院学报,2018,37(06):49-52. [9]王惠.基于JSP的企业人事管理系统的设计与实现[J].电脑知识与技术,2018,14(33):75-77.

[10]陈娟.基于JSP的校园二手物品交易系统的设计与实现[J].计算机产品与流通,2018(11):140-141. [11]庄巧蕙.基于J2EE的电子商务平台的研究与构建[J].大庆师范学院学报,2018,38(06):59-63.[12]刘艳.基于UML的在线投稿系统的设计与实现[J].电子技术与软件工程,2018(21):47-49.[13]王东新,李欢欢.基于JSP的教育信息化平台开发[J].电子设计工程,2018,26(20):27-32.

[14]张学诚.Java WEB开发中的中文乱码问题解决方法[J].电脑知识与技术,2018,14(27):62-63.[15]崔欣欣,薄小永,彭丽蕊,周倩倩.基于JSP和Servlet技术的博客系统设计与实现[J].产业与科技论坛,2018,17(17):63-64. [16]林荣霞.基于JSP的冶金设备可用性空通知系统构建研究[J].中国金属通报,2018(08):46-47.[17]朱娜.基于JSP技术的图书管理系统的设计与实现[J].黑龙江科学,2018,9(16):11-13. [18]王卫,李天琦,汤伟,王海涛,施秀萍,杨铖.基于JSP技术项目开发中中文乱码问题研究[J].电脑编程技巧与维护,2018(08):38-61.

更多推荐