医药销售管理系统软件说明书.docx
《医药销售管理系统软件说明书.docx》由会员分享,可在线阅读,更多相关《医药销售管理系统软件说明书.docx(37页珍藏版)》请在冰豆网上搜索。
医药销售管理系统软件说明书
医药销售管理系统
1系统分析
随着计计算机技术的不断发展,应用软件迅速普及,大到厂矿校企,小到图书、餐饮、医药管理等,随处都可看到它的身影。
在以往依靠人工为主的医药销售管理方面,计算机和计算机系统逐步唱起了主角,凭借省时、省力、低误差等优点,从根本上改变了医药管理的传统模式,节省了物理资源,提高了工作效率。
1.1开发背景
XX医药抄手坐落于XX小区内,多年来本着经济、实惠、高质量服务的宗旨,赢得了小区百姓的信赖,药品供应量非常大。
面对庞大的信息量,经常出现统计失误、药量供应不足的情况,医药超市经理决定使用一套合理、有效、使用的管理系统,对医药超市进行统一的管理。
笔者受医药超市经理委托,开发一个医药销售管理系统,其宗旨是实现医药超市管理的系统化、规范化、实用化,对药品进行统一管理。
1.2需求分析
在日常医药管理中,面对众多的药品和众多不同需求的顾客,每天都会产生大量的数据信息。
以传统的手工方式来处理这些信息,操作比较繁琐,且效率低下。
此时,一套合理、有效、实用的医药销售管理系统就显得十分必要。
利用其提供的药品查询、统计功能,可以进行高效的管理,更好地为顾客服务。
笔者通过对医药超市的实地考察,从经营者和消费者的角度出发,以高效管理、快速满足消费者为原则,要求本系统具有以下特点。
★具有良好的系统性能、友好的用户界面。
★较高的处理效率,便于用户使用。
★采用成熟的技术开发,全系统具有较高的技术水平和较长的生命周期。
★对销售信息进行统计排行
★尽可能地简化药品管理员的重复工作,提高工作效率。
2系统设计
2.1系统目标
根据医药超市的管理要求,指定医药销售管理系统目标如下。
★灵活的人机交互界面,操作简单方便、界面简洁美观。
★系统提供中、英文语言,实现国际化
★药品分类管理,并提供类别统计功能。
★实现各种查询,如多条件查询、模糊查询等。
★提供创建管理员账户及修改口令功能。
★可对系统销售信息进行统计分析。
★系统运行稳定、安全可靠。
2.2系统功能结构
医药销售管理系统提供了四大功能,分别为“基本信息管理”、“进货/需求管理”、“药品管理”、“系统管理”,具体结构如图1.1所示
图1.1医药销售管理系统功能结构图
2.3系统流程图
医药销售管理系统流程如图1.2所示。
管理员登录
图1.2医药销售管理系统流程图
3软件架构
在开发项目前,首先要对软件的结构进行设计,也称之为软件架构。
此过程是对软件整体结构的设计,如软件的逻辑分层结构、结构的实现、数据库等,特别是在Java的大型项目中,还需要设计出程序中的包结构及接口等,非常复杂,需要程序员进行全面的考虑。
对于医药销售管理系统的整体涉及如下:
3.1逻辑分层结构设计
医药销售管理系统由4层结构组成,并遵循MVC结构进行设计。
4层结构分别为表示层、业务逻辑层、持久层与数据库层,如图1.3所示。
图1.3逻辑分层
其中,表示层与业务逻辑层均由Struts框架组成,表示层用于提供程序与用户交互的界面,项目中主要通过JSP、ActionForm及Struts标签库进行展现;业务逻辑层用于处理程序中的各种业务逻辑,项目中通过Struts框架的中央控制器及Action对象对业务请求进行处理;持久层由Hibernate框架组成,负责应用程序与关系型数据库之间的操作;数据库层为应用程序所使用的数据库,本实例中为MySQL数据库。
对于4层结构的具体实现如图1.4所示。
医药销售管理系统
视图
JSP、ActionForm、Struts标签
控制器
Action、struts-config.xml
持久化
HibernateAPI、
Hibernate.cfg.xml
MySQL数据
图1.4逻辑分层实现
3.2系统文件夹组织结构
规范系统的整体架构是一个项目开发的标准,特别是在团队开发项目中,在编写代码之前,必须定制好项目的系统文件夹组织结构,以使程序条理清晰,利于后期的项目整合。
在Java项目中可以将不同作用、功能相类似的文件放置于同一个包中,这样既可以保证团队开发的一致性,又可以将系统的整体结构规范化。
创建完系统中可能用到的文件夹或Java包之后,在开发时只需将所创建的类文件或资源文件保存到相应的文件夹即可。
医药销售管理系统的文件夹组织结构如图1.5所示。
图1.5医药销售管理系统的文件夹组织结构
3.3实体对象设计
在应用Hibernate框架的项目中,实体对象的确立是其中的关键。
实体对象与数据库中的数据表相对应,并通过O/R映射建立实体与数据库的联系,Hibernate完全通过操作实体来操作数据库,所以首先要确定项目中的实体对象。
在医药销售管理系统中,实体对象及关系如图1.6所示。
图1.6医药销售管理系统中的实体对象及其关系
从图1.6中可以看到,药品实体对象为Medicine类,药品类别实体对象为Category类,销售明细实体为SellDetail类,操作用户实体为User类,这4个实体对象为医药销售管理系统的核心实体对象,它们所对应的映射文件均为“类名+hbm.xml”文件。
其中,药品信息与药品类别为多对一关联关系,一个类别中包含多个药品对象;药品信息与销售明细为一对多关联关系,多个销售明细对应一个药品对象;销售明细与用户之间为多对多的关联关系,多个销售明细信息对应多个操作用户。
3.4定义ActionForm
ActionForm是简单的JavaBean,主要用来保存用户所输入的表单数据,Action要获取这些数据需要通过ActionForm对象进行传递。
ActionForm对表单的数据进行了封装,在JSP页面与Action对象中提供了交互访问的方法。
在使用过程中,可通过继承org.apache.struts.action.ActionForm对象来创建需要的ActionForm对象,项目中所涉及到的ActionForm对象如图1.7所示。
图1.7项目中所涉及到的ActionForm对象
3.5持久层结构设计
持久层结构通过Hibernate框架进行设计。
由于Hibernate对不同对象的增、删、改、查等操作具有一定的共性,如添加数据使用save()方法、删除数据使用delete()方法等,项目中将这些具有共性的操作抽取出来,封装成一个类,其他数据库操作对象可继承此类来拥有这些方法,从而减少程序中的多余代码,如图1.8所示。
图1.8持久层结构
SupperDao类为所有数据库操作对象的父类,在此类中定义了对数据库进行操作的常用方法,具体方法及说明如表1.1所示。
表1.1SupperDao方法及说明
方法
说明
save()
用于保存一个对象
saveOrUpdate()
用于保存或更新一个对象
delete(Objectobj)
用于删除一个对象,入口参数为Object类型
findByHQL()
通过HQL语句查询数据,入口参数为String类型的HQL语句
deleteByHQL()
通过HQL语句删除数据,入口参数为String类型的HQL语句
uniqueResult()
单值检索数据,入口参数hql为HQL查询语句、where为查询条件
findPaging()
分页查询数据,入口参数hql为HQL查询语句、offset为结果集的起始位置、length为返回结果集的条目数、where为查询条件
这些方法均为数据库操作的常用方法,所以将其封装在单独的一个类中,对于各个对象的数据库相关操作,可通过继承此类来获取这些常用方法。
其子类对象有CategoryDao类、MedicineDao类、SellDao类、UserDao类,其功能分别介绍如下。
CategoryDao类:
药品类别数据库操作对象,用于封装与药品类别相关的数据库操作方法。
MedicineDao类:
药品信息数据库操作对象,用于封装与药品信息相关的数据库操作方法。
SellDao类:
药品销售数据库操作对象,用于封装与药品销售相关的数据库操作方法。
UserDao类:
用户数据库操作对象,用于封装与管理员及系统相关的数据库操作方法。
3.6业务层结构设计
业务层结构主要通过Struts框架进行设计,由Struts的中央控制器对各种操作请求进行控制,并通过相应的Action对其进行业务处理,项目中所用到的Action对象及关系如图1.9所示。
图1.9Action对象及关系
Action、DispatchAction与LookUpDispatchAction为Struts封装的Action对象,具有不同的特点及作用,项目中通过继承这几个对象实现对不同业务请求的处理。
除这3个对象外,图1.9中其余的Action对象均为自定义的Action对象。
在这些自定义的Action对象中,LanguageAction与LoginAction用于处理国际化语言及用户登录操作。
由于二者不涉及过多的业务逻辑,它们都直接继承于Action对象。
BaseAction对象与DeleteAction对象为重要的Action对象,二者都继承了DispatchAction对象。
项目中封装这两个对象的目的在于简化程序中的业务逻辑、提高程序的安全性。
在这两个对象中均对用户登录身份做出了严格的验证,其子类对象通过继承不必再考虑用户登录的安全问题,而更专注于业务逻辑,同时通过继承还可以减少程序的代码量。
其中BaseAction对象的子类及作用如表1.2所示。
表1.2BaseAction对象的子类及其作用
子类
作用
SellAction
封装药品销售的相关操作,处理封装药品销售请求
SystemAction
封装系统相关操作,处理系统级的请求
CategoryAction
封装药品类别相关操作,处理药品类别相关操作
MedicineAction
封装药品信息相关操作,处理封装药品信息的相关请求
RequireAction
封装药品需求及库存相关操作,处理药品需求相关请求
DeleteAction对象继承了LookUpDispatchAction对象,此类通过重写getKeyMethodMap()方法对数据进行批量删除操作,其子类对象及其作用如表1.3所示。
表1.3DeleteAction对象的子类及其作用
子类
作用
DeleteMedicineAction
封装药品信息删除操作,用于批量删除药品信息
DeleteReqMedAction
封装药品需求信息删除操作,用于批量删除药品需求信息
3.7页面结构设计
医药销售管理系统的页面结构采用框架进行设计,通过HTML语言中的