医药销售管理系统软件说明书样本.docx

上传人:b****8 文档编号:11031406 上传时间:2023-02-24 格式:DOCX 页数:36 大小:959.01KB
下载 相关 举报
医药销售管理系统软件说明书样本.docx_第1页
第1页 / 共36页
医药销售管理系统软件说明书样本.docx_第2页
第2页 / 共36页
医药销售管理系统软件说明书样本.docx_第3页
第3页 / 共36页
医药销售管理系统软件说明书样本.docx_第4页
第4页 / 共36页
医药销售管理系统软件说明书样本.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

医药销售管理系统软件说明书样本.docx

《医药销售管理系统软件说明书样本.docx》由会员分享,可在线阅读,更多相关《医药销售管理系统软件说明书样本.docx(36页珍藏版)》请在冰豆网上搜索。

医药销售管理系统软件说明书样本.docx

医药销售管理系统软件说明书样本

医药销售管理系统

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所示。

图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语言中标签及标签将页面提成3个某些,分别为页面头部、页面导航及内容页面,如图1.10所示。

图1.10页面布局

此种布局方式将每一种页面单独置于一种框架之中,其中“页面头部”和“页面导航”在登录之后是固定不变,对于顾客操作将在“内容页面”显示成果。

使用这种方式有点在于:

(1)避免了JSP页面中大量引用动作标签。

(2)避免浏览器重复加载“页面头部”及“页面导航”等同样内容,加快浏览器速度。

4配备文献

在编写代码之前,需要做某些准备工作,如项目环境搭建、项目所涉及到第三方类库支持、web.xml配备等。

在医药销售管理系统中,重要涉及到Struts框架、Hibernate框架及JFreeChart组件应用,因而在项目开发之前,需要添加其类库支持。

4.1配备web.xml

web.xml文献是Web项目配备文献,在医药销售管理系统中,此文献需要配备Struts框架、JFreeChart组件和过滤器等信息。

4.2配备struts-config.xml

Struts框架实现了MVC模式,web.xml和struts-config.xml文献是其两个重要配备文献,其中web.xml文献实现了Struts初始化加载,而struts-config.xml是它核心配备文献。

Struts-config.xml所做工作比较多,涉及ActionForm对象定义、顾客祈求和Action之间映射、异常解决等重要配备。

其中标签用于注册实例中所涉及到ActionForm对象,标签用于设立全局跳转,标签配备顾客祈求Action对象映射。

4.3配备hibernate.cfg.xml

Hibernate.cfg.xml文献是Hibernate配备文献,在项目中,此文献配备了数据库方言、数据库链接信息、自动建表属性和打印SQL语句等属性。

5实体及映射

Hibernate是一种ORM产品,它完全可以操作对象方式进行数据库操作,其实体对象与数据表之间通过映射文献建立映射关系。

因而,在医药销售管理系统中需要建立实体对象与数据表之间映射。

5.1药物实体映射

药物实体对象持久化类为Medicine类,此类封装了药物有关属性提供相应getXX()和setXXX()办法。

药物对象与药物类别对象为多对一关联关系,因此在Medicine类中加入了药物类别属性category,其关联关系通过映射文献Medicine.hbm.xml进行映射。

映射文献Medicine.hbm.xml将实体对象Medicine映射为tb_medicine表,主键生成方略采用自动生成方式。

此映射文献中,对于数据表某些字段还通过not-null、length、unique等属性映射字段属性,其中not-null用于映射字段非空属性、length用于映射字段长度、unique用于映射字段与否唯一。

映射后数据表如图1.11所示。

图1.11tb_medicine表

5.2药物类别实体映射

药物类别实体用于封装药物类别属性信息,其持久化类为Category类,与药物对象存在一对多关联关系。

药物对象与药物类别对象为多对一关联关系,但从药物类别一端来看,药物类别对象与药物对象又是一对多关系,因此程序中采用了多对一双向关联进行映射。

药物类别实体对象映射文献为Category.hbm.xml。

Category类所映射数据表为tb_category,其中标签用于映射药物类别实体与药物实体间一对多关联关系,此种映射方式将在药物数据表中添加categoryId字段。

映射后数据表tb_category如图1.12所示。

图1.12tb_categoy表

5.3销售明细实体映射

销售明细用于描述药物销售时详细状况,如销售时间、销售人员、销售数量等。

这些信息十分重要,需要记录到数据库中,实例中将其封装为SellDetail类。

为了以便查看销售明细总额信息,在SellDetail类中加入了sellTotal()属性,此属性并不进行数据表映射,它只有一种与之相应get()办法,在此办法中通过单价与数量运算对sellTotal进行赋值,并将其返回。

销售明细实体映射文献为SellDetail.hbm.xml,此映射文献中映射了两个多对一关联关系,分别为与药物对象多对一关系及操作顾客间多对一关系。

销售明细实体映射数据表为tb_selldetail。

在映射文献SellDetail.hbm.xml中,通过两个标签分别映射与药物对象及操作顾客多对一关联关系,并配备了级联操作类型为save-update。

映射后数据表构造如图1.13所示。

图1.13tb_selldetail表

5.4顾客实体映射

在医药销售管理系统中,顾客实体用于封装管理员基本信息,如登录顾客名、密码等属性,其类名为User。

User类中属性相对较少,其映射过程也相对简朴。

其映射文献为User.hbm.xml。

顾客实体所映射数据表为tb_user,其构造如图1.14所示。

图1.14tb_user表

6公共类设计

在Java程序开发中,如果一种功能重复被调用,则可将该功能抽取出来封装为一种类作为公共类,在需要此功能地方通过此类进行实现。

公共类实质是代码重用一种方式,在面向对象开发模式中经常使用它来简化程序中代码,提高程序可读性。

下面是医药销售管理系统找那个公共类设计。

6.1Hibernate过滤器

在没有使用Spring管理Hibernate状况下,对Hibernate管理依然存在一定难度,特别是在J2EE开发中,线程安全、SessionFactory对象、Session对象、Hibernate缓存及延迟加载等是程序设计中难题,管理不当将会对程序导致极为严重影响。

在医药销售管理系统中,将SessionFactory对象、Session对象置于过滤器中,由过滤器对其进行管理,从而解决了这些问题。

在Web项目中,以普通方式使用Hibernate将无法解决Hibernate延迟加载,如图1.15所示。

当有一种业务祈求查询数据时,一方面要启动Session对象,然后Hibernate对数据进行查询。

在关闭Session对象,最后通过JSP页面来显示数据。

在这一过程中,如果查询数据时使用了延迟加载,当JSP页面显示数据信息时,Hibernate将抛出异常信息,由于此时Session对象已经关闭,Hibernate不能再对数据进行操作。

图1.15普通方式

通过过滤器管理HibernateSession对象则可以避免此问题,其实现过程如图1.16所示。

图1.16Hibernate过滤器

在Web容器启动时,过滤器被初始化,它将执行init()办法,在后续操作中不会再次被执行;而当容器关闭时,过滤器将执行destroy()办法。

这两个办法正好符合SessionFactory对象生命周期,在运营期间只执行一次操作,可用于实例化及销毁SessionFactory对象。

对于Session对象关闭操作,可以在业务逻辑解决结束后、response祈求转发大View层之迈进行。

实例将其封装在HibernateFilter类中,此类继承了Filter类,它是一种过滤器。

为了保证线程安全性,实例中将Session对象存储与ThreadLocal对象中,当用到一种Session对象时,一方面从ThreadLocal中获取,在无法获取状况下才会启动一种新Session对象。

同步,为了保证Session对象能在resopnse祈求转发到View层之前被关闭,实例采用了try…finally语句对Session对象进行关闭。

6.2SupperDao类

SupperDao类为项目中所有数据库操作类父类,此类封装了数据库操作惯用办法。

在此类中,由于Hibernate对数据操作都需要用到Session接口,类中定义了一种protected类型Session对象,为其子类提供了以便。

save()办法及savaOrUpdate()办法都用于保存一种对象,其入口参数均为Object类型。

其中saveOrUpdate()办法比save()办法更智能某些,可以依照实体对象中标记值来判断保存还是更新操作。

SupperDao类中使用这两个办法对实体对象进行保存及更新操作。

删除操作办法为delete(),入口参数为Object类型,此办法通过Session接口delete()办法进行实现。

SupperDao类为项目中所有数据库操作类父类,在设计时应当考虑全面。

HibernateHQL查询语言提供了更为灵活查询方式,在这个超类之中应当加入HQL操作办法,其中findByHQL()办法用于依照指定HQL查询语句查询成果集,deleteByHQL()办法用于依照指定HQL查询语句进行删除操作。

Hibernate单值检索在查询后返回单个对象,当返回成果包括多条数据时,Hibernate将抛出异常。

此种操作可用于查询单条数据,如聚合函数count()等。

在SupperDao类中,单值检索办法为uniqueResult()。

此办法入口参数为HQL查询语句及查询条件,其中查询条件为Object[]数组类型,用于装载查询语句中参数。

例如HQL语句“fromMedicinemwherem.id=?

”,此时即可通过参数where对其进行动态赋值。

分页查询在程序开发中经惯用到,不但以便查看,还可以减少成果集返回数量,提高数据访问效率。

使用Hibernate分页查询办法极为简朴,只需要传入几种参数即可,但在SupperDao类中对其进行了扩展,加入了HQL语句动态赋值,其办法名为findPaging()。

此办法入口参数有4个,其中参数hql为HQL查询语句,它容许传入参数中带有占位符“?

”HQL语句;参数offset为查询成果集对象起始位置;参数length为查询成果偏移量,也是返回数据条目数;参数where为查询条件,属于Object[]数组类型,用于装载HQL语句中参数。

通过上述这几种参数基本可以满足项目中所有分页查询,固然遇到特殊状况时,可以通过子类对象重写此办法。

6.3BaseAction类

BaseAction类是业务层,有一种超类对象,它继承了StrutsDispatchAction类,同步还为子类对象提供公用办法。

此类一方面定义了3个protected类型变量,分别用于设立每页记录数、本地语言信息及国际化消息资源。

StrutsDispatchAction类继承了Action类,此类解决祈求时一方面要执行execute()办法,然后通过控制器再转发到相应办法进行业务解决。

依照这一分析,可以在execute()办法中对顾客身份作出验证,其实现过程如图1.17所示。

图1.17顾客身份验证

如果对系统中涉及到Action均编写一种验证办法,则程序代码重复性太高,不能体现出面向对象设计模式,因此需将其单独封装在BaseAction类中,此类通过重写Action类execute()办法对顾客身份进行验证。

由于分页查询应用比较多,因此在业务层将其封装在BaseAction类中,通过getPage()办法进行实现,子类对象可以通过继承来获取此办法。

getPage()办法返回一种Map集合对象,该集合用于装载成果集及分页条。

其中,成果集对象为一页中所有数据集合,它是一种List对象;分页条为分页查询后在JSP页面所显示分页信息,如记录数、页码、上一页、下一页超链接等,它是一种String类型字符串。

getPage()办法入口参数有四个,其中参数hql为分页查询HQL语句,此语句不可以涉及select子句,它从from子句开始,可以传入带有占位符HQL,但需要通过查询条件参数where传递占位符值,当HQL语句没有参数时,where参数可以设立为null;参数recPerPage为每一页记录数;currPage为当前页码;action为分页所祈求Action地址。

getPage()办法提供这些参数目在于提高程序代码重用性,由于在医药销售管理系统中,通过这些参数,getPage()办法已满足所有分页查询,用到分页查询地方都调用了此办法。

此外,在其她项目中此办法重用价值也是非常高。

分页查询在业务层实现比较繁琐,由于在分页条中要考虑到国际化实现,因此在分页条中所有文字信息均通过MessageResources对象读取国际化资源文献来获取。

MessageResources对象是Struts中对象,此对象依照Locale信息读取相应国际化消息资源文献。

6.4DeleteAction类

公共类DeleteAction重要用于对项目中LookupDispatchAction祈求进行解决。

它继承了LookupDispatchAction类,重写了execute()办法对顾客身份作出验证,当顾客身份验证失败时将进行错误解决;同步,此类还重写了LookupDispatchAction类中getKeyMethodMap()办法,添加了两个按钮对象key。

6.5字符串工具类

在一种Web项目中,字符串是经常被操作对象。

为了简化程序代码及提高程序可读性,对于经惯用到字符串解决办法,可以封装一种字符串工具类对其进行操作。

例如JSP页面

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1