医药管理系统结构设计需求分析论文

医药管理系统结构设计需求分析论文

ID:6289530

大小:2.73 MB

页数:88页

时间:2018-01-09

上传者:U-254
医药管理系统结构设计需求分析论文_第1页
医药管理系统结构设计需求分析论文_第2页
医药管理系统结构设计需求分析论文_第3页
医药管理系统结构设计需求分析论文_第4页
医药管理系统结构设计需求分析论文_第5页
资源描述:

《医药管理系统结构设计需求分析论文》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

医药管理系统医药管理系统结构设计需求分析论文绪论计划1.开发背景XX医药超市为XX小区提供药品,多年来本着经济、实惠、高质量服务的宗旨,赢得了小区居民的信赖。由于经营有方,该超市的供应量非常大。面对每天庞大的信息量,经常出现统计失误、药量供应不足的情况。于是,医药超市经理决定使用一套合理、有效、实用的管理系统,对医药超市进行统一管理。笔者受医药超市经理委托,开发一个医药管理系统,其开发宗旨是实现医药超市管理的系统化、规范化、实用化,对药品进行统一管理。2.编写目的编写本系统的成员有三人,在校期间通过学校的培养,具有了初级编写代码的能力,通过老师的指导,着手进行编写本系统,此系统的素材是在网上找到的,通过结合教材上的知识,完成需求分析、详细设计等环节。通过此次编写项目的经历,我们学到了很多项目开发方面的知识,这对我们以后在实际工作中将会有极大的帮助。 医药管理系统3.计划任务一.工作任务分解第一阶段:文档设计(2011-10-25—2011-11-8)1、需求分析、数据库设计文档(2011-10-25—2011-11-1)2、详细设计文档(2011-11-2—2011-11-8)备注:人员分配:需求分析、详细文档设计由李超负责;数据库设计文档由贾磊负责。第二阶段:代码设计(2011-11-9—2011-11-22)1、前台界面设计(2011-11-9—2011-11-14)2、后台功能代码设计(2011-11-15—2011-11-22)备注:人员分配:药品管理、进货管理管理模块由贾磊负责;基本信息管理、进货/需求管理模块由李超负责;前台界面设计、系统管理模块由于世聪负责。人员分配:第三阶段:软件测试(2011-11-23—2011-11-29)备注: 医药管理系统人员分配:软件测试由李超负责。一.甘特图第一章、可行性分析1.1、技术可行性分析在医药超市的管理中经常出现以下情况:1.由于信息量较大,经常出现售出药品统计结果与金额不匹配的情况。2.完全以传统的手工方式管理,浪费大量的纸张,切不能对药品进行快速查询。3.只能通过现场清点药品了解库存信息。4.很难对销售信息、销售排行等信息进行统计。 医药管理系统因此,在医药超市的管理中,无论是从消费者的角度还是从经营者的角度来看,采用计算机管理系统都具有一定的必要性,以少量的人力资源、高效的工作效率、最低的误差进行管理,将使医药超市的经营更上一层楼。1.2、环境可行性分析(硬件、软件)1.2.1、硬件环境此系统需要的最低硬件配置为:CPU:P43.2GHz。内存:2GB以上。硬盘空间:160GB.此外能支持WindowsXPProfessional、win7运行时基本配置的硬件设备都能满足医药超市办公管理系统的正常运行。1.2.2、软件环境操作系统:Windows2003、WindowsXPProfessional、win7等系统。数据库:MySQL5.0数据库1.2.3、开发环境操作系统:win7系统。开发工具:Tomcat6.0服务器、MySQL5.0数据库、Myplise9.1及IE,谷歌,火狐等浏览器。 医药管理系统1.3、经济可行性分析医药进销存管理是医药管理工作中不可缺少的一部分,面对众多的药品和众多不同需求的顾客,每天都会产生大量的数据信息,以传统的手工方式来处理这些信息,操作比较繁琐,且效率地下。而一个成功的医药管理系统应提供快递的药品查询功能,能够快速的统计药品信息、销量信息等,从而对药品进行高效的管理以满足消费者的需求。这样既可以大大减少人员的浪费,也从管理方面减轻了工作人员的工作难度。第二章、需求分析2.1、系统任务和功能分析我们通过对医药超市的简单的实地考察和对医药超市工作人员的沟通,从经营者和消费者的角度出发,以高效管理、快速满足消费者为原则,总结出,要求本系统具有以下的特点:1.具有良好的系统性能、友好的用户界面。2.较高的处理效率,便于使用和维护。3.采用成熟的技术开发,全系统具有较高的技术水平和较长的生命周期。4.对销售信息进行统计排行。 医药管理系统5.系统尽可能地简化药品管理员的重复工作,提高工作效率。2.2、E-R图设计2.2.1实体属性图1、药品(medicine)图2-2-1-12、药品类别(category)图2-2-1-2 医药管理系统3、销售明细(selldetail)图2-2-1-34、用户(user)图2-2-1-4 医药管理系统2.2.2实体关系图图2-2-22.3、数据流图 医药管理系统2.3.2顶层数据流图图2-3-2 医药管理系统2.3.2第一层数据流图1.药品管理数据流图图2-3-2-1 医药管理系统2.系统管理数据流图图2-3-2-22.3.3第二层数据流图1.销售员数据流图 医药管理系统图2-3-3-12.销售管理数据流图图2-3-3-23.系统管理数据流图图2-3-3-34.销售员管理数据流图图2-3-3-4 医药管理系统2.4、用例图2.4.1、销售员用例图图2-4-1销售员用例图 医药管理系统2.4.2、管理员用例图图2-4-2管理员用例图 医药管理系统第三章总体设计3.1系统总体结构图图3-1系统整体结构图3.2逻辑分层结构设计(系统设计模式)医药管理系统由四层结构组成,并遵循MVC结构进行设计。4层结构分别为表示层、业务逻辑层、持久层与数据层。 医药管理系统图3-2-1逻辑分层其中表示层与业务逻辑层均由Struts框架组成,表示层用于提供程序与用户之间交互的页面,项目中主要通过JSP、ActionForm及Struts标签库进行展现:业务逻辑层用于处理程序中的各种业务逻辑,项目中通过Struts框架的中央控制器及Action对象对业务请求进行处理;持久层由Hibernate框架组成,它负责应用程序与关系型数据库之间的操作;数据库层为应用程序所使用的数据库,本实例中为MySQL数据库。对于四层结构的具体实现如下图:图3-2-2逻辑分层具体表现 医药管理系统3.3数据库设计3.3.1数据表结构1、用户信息表(tb_user)字段名中文类型长度主键外键是否空默认值约束备注id用户编号int4是否用户编username用户名称varchar50用户名称Password密码Varchar50密码CreatTime创建时间datetime0创建时间表3-3-3-1用户信息表2、药品信息表(tb_medicine)字段名中文类型长度主键外键是否空默认值约束备注id编号int4是否用户编号medNo药品编码varchar50用户名称name药品名称varchar50密码factoryAdd出厂地址varchar50出厂地址description描述信息varchar50描述信息price单价int20单价medCount库存数量int20库存数量reqCount需求数量int20需求数量photoPath图片varchar50图片categoryId所属类别int20是所属类别表3-3-3-2药品信息表 医药管理系统3、药品类别信息表(tb_category)字段名中文类型长度主键外键是否空默认值约束备注id编号int4是否编号name类别名称varchar50类别名称description描述信息Varchar50描述信息creatTime创建时间datetime0创建时间表3-3-3-3药品类别信息表4、销售明细信息表(tb_selldetail)字段名中文类型长度主键外键是否空默认值约束备注id编号int4是否用户编号sellName药品名称varchar50用户名称sellPrice价格varchar50密码sellCount数量int20数量userId操作人员int20是操作人员medId药品int20是药品sellTime时间datetime0时间count总额int20总额表3-3-3-4销售明细信息表 医药管理系统3.3.2数据表的关系图图3-3-2数据表关系图 医药管理系统3.3.3连接数据的方式本系统采用Hibernate框架连接数据库MySQL5.5。通过Hibernate的框架完成了项目的DAO文件,并且运用了Struts控制操作数据库数据。3.4系统整体状态图(画面迁移图)图3-4-1系统状态图 医药管理系统图3-4-2系统整体状态图 医药管理系统3.5系统顺序图(时序图)图3-5-1系统顺序图(1) 医药管理系统图3-5-2系统顺序图(2) 医药管理系统第四章详细设计4.1总体类图图4-1-1总体类图 医药管理系统图4-1-2系统属性类图 医药管理系统4.2药品管理类图4.2.1药品管理类图图4.2.1药品管理类图 医药管理系统4.2.1药品管理属性类图图4.2.2药品管理属性类图 医药管理系统4.2.3药品类属性列表类属性属性名说明编号idint类型药品名称nameString类型药品编码medNoint类型出场地址factoryAddString类型描述descriptionString类型价格priceint类型药品数量medCountint类型需求数量reqCountint类型图片photoString类型时间createTimeDate类型药品类别categoryIdint类型表4-2-1 医药管理系统4.2.4药品类方法列表类方法返回值类型说明setId()void设置IdgetId()int获取IdsetName()void设置namegetName()String获取namesetMedNo()void设置medNogetMedNo()String获取medNosetFactoryAdd()void设置FactoryAddgetFactoryAdd()String获取FactoryAddsetDescription()void设置descriptiongetDescription()String获取descriptionsetPrice()void设置pricegetPrice()int获取pricesetMedCount()void设置medCountgetMedCount()int获取medCountsetReqCount()void设置reqCountgetReqCount()int获取reqCountsetPhoto()Void设置photogetPhoto()String获取photosetCreateTime()Void设置createTimegetCreateTime()Date获取createTime 医药管理系统setCategoryId()Void设置categoryIdgetCategoryId()Int获取categoryId表4-2-24.2.5药品批量删除图4-2-3药品实现批量删除实现原理图4.2.6药品管理类方法列表(MedicineAction)类方法返回值类型说明add()ActionForward添加药品update()ActionForward修改药品findMedicineByMedId()ActionForward根据medId查询药品paging()ActionForward分页查询药品信息view()ActionForward查看药品详细信息edit()ActionForward编辑药品信息query()ActionForward 医药管理系统多条件查询,分页显示查询结果blurQuery()ActionForward模糊查询canSellMeds()ActionForward浏览可以购买的药品QueryMedCount()ActionForward查询库存表4-2-34.3药品类别管理类图4.3.1药品类别管理类图图4-3-1药品类别管理类图 医药管理系统4.3.2药品类别管理属性类图图4-3-2药品类别属性类图 医药管理系统4.3.3药品类别属性列表类属性属性名说明编号Idint类型药品类别名称nameString类型描述descriptionint类型出场地址createTimeString类型表4-3-1药品类别属性列表4.3.4药品类别类方法列表类方法返回值类型说明setId()void设置IdgetId()int获取IdsetName()void设置namegetName()String获取namesetDescription()void设置DescriptiongetDescription()String获取Description 医药管理系统setCreateTime()void设置CreateTimegetCreateTime()String获取CreateTime表4-3-2药品类别方法列表4.3.5药品类别管理类方法列表(CategoryAction)类方法返回值类型说明add()ActionForward添加或修改类别findAll()ActionForward查询所有类别edit()ActionForward编辑类别delete()ActionForward删除类别paging()ActionForward分页显示类别findCategoryAndCound()ActionForward统计药品类别数量表4-3-2药品类别管理类方法列表 医药管理系统4.4药品进货/需求管理类图4.4.1药品进货、需求管理类图图4-4-1药品进货、需求管理类图 医药管理系统4.4.2药品进货、需求管理属性类图图4-4-2药品进货、需求属性类图 医药管理系统4.4.3药品销售类属性列表类属性属性名说明编号Idint类型名称sellNameString类型单价sellPriceint类型数量sellCountint类型厂家FactoryAddString类型总额Totalint类型日期sellTimeDate类型药品idmedIdint类型表4-4-1药品销售类属性列表4.4.4药品销售类方法列表类方法返回值类型说明setId()Void设置IdgetId()Int获取IdsetSellName()Void设置sellNamegetSellName()String获取sellName 医药管理系统setSellPrice()Void设置sellPricegetSellPrice()Int获取sellPricesetSellCount()Void设置SellCountgetSellCount()Int获取SellCountsetFactoryAdd()Void设置factoryAddgetFactoryAdd()String获取factoryAddsetTotal()Void设置totalgetTotal()Int获取totalsetSellTime()Void设置sellTimegetSellTime()Date获取sellTimesetMedId()Void设置medIdgetMedId()int获取medId表4-4-3药品销售类方法列表4.4.5药品需求类方法列表(RequireAction)类方法返回值类型说明edit()ActionForward编辑需求药品add()ActionForward添加需求药品update()ActionForward更新需求药品 医药管理系统findMedcineByMedNo()ActionForward根据MedNo查询paging()ActionForward分页查询meded()ActionForward更新药品进货完成blurQuery()ActionForward模糊查询,分页显示表4-4-4药品需求类方法列表4.5药品销售管理类图4.5.1药品销售管理类图图4.5.1药品销售管理类图 医药管理系统4.5.2药品销售类属性类图图4.5.2药品销售属性类图 医药管理系统4.5.3药品销售管理类方法列表(SellAction)类方法返回值类型说明order()ActionForward向购物车中添加药品add()ActionForward选购药品buy()ActionForward结账购物车中的药品paging()ActionForward分页查询销售明细deleteOrder()ActionForward删除指定的药品blurQuery()ActionForward模糊查询,分页显示clear()ActionForward清空订单today()ActionForward查询指定销售明细sequence()ActionForward销售排行findByMeId()ActionForward根据销售药品ID查询销售信息表4.5.1药品销售管理类方法列表 医药管理系统4.6系统管理类图4.6.1系统用户管理类图图4-6-1系统用户管理类图 医药管理系统4.6.2系统管理类图图4-6-2系统用户管理属性类图 医药管理系统图4-6-3系统用户属性类图 医药管理系统4.6.3系统用户类属性列表(UserForm)类属性属性名说明编号Idint类型用户名usernameString类型密码passwordString类型原密码oldPasswordString类型确认密码rePasswordString类型创建时间createTimeDate类型表4-6-1系统用户属性列表4.6.4系统用户管理方法列表(SystemAction)类方法返回值类型说明unspecified()ActionForward如果没有传递参数,默认调用此方法userExit()ActionForward用户退出userAdd()ActionForward添加用户userFind()ActionForward查找所有用户userDelete()ActionForward删除用户userEdit()ActionForward编辑用户 医药管理系统modifyPassword()ActionForward修改密码Initialization()ActionForward系统初始化表4-6-2系统用户管理方法列表4.7存储过程设计4.7.1.存储过程列表描述 过程方法名称数据类型说明unspecified()ActionForward如果没有传递参数,默认调用此方法userExit()ActionForward用户退出userAdd()ActionForward添加用户userFind()ActionForward查找所有用户userDelete()ActionForward删除用户userEdit()ActionForward编辑用户modifyPassword()ActionForward修改密码Initialization()ActionForward系统初始化 表4-7-1存储过程列表 医药管理系统4.7.2.存储过程具体算法描述 存储过程只能将cursor数据类型用于OUTPUT参数。如果为某个参数指定了cursor数据类型,也必须指定VARYING和OUTPUT参数。如果为某个参数指定了VARYING关键字,则数据类型必须是cursor,并且必须指定OUTPUT关键字。 说明cursor数据类型不能通过数据库API(例如OLEDB、ODBC、ADO和DB-Library)绑定到应用程序变量上。因为必须先绑定OUTPUT参数,应用程序才可以执行存储过程,所以带有cursorOUTPUT参数的存储过程不能通过数据库API调用。只有将cursorOUTPUT变量赋值给Transact-SQL局部cursor变量时,才可以通过Transact-SQL批处理、存储过程或触发器调用这些过程。 对于只进游标,如果存储过程完成后,游标位于第一行的前面,则整个结果集将返回给调用批处理、存储过程或触发器。返回时,游标将位于第一行的前面。 对于只进游标,如果存储过程完成后,游标的位置超出最后一行的结尾,则为调用批处理、存储过程或触发器返回空结果集。 说明 医药管理系统空结果集与空值不同。 对于可滚动游标,在存储过程执行结束时,结果集中的所有行均会返回给调用批处理、存储过程或触发器。返回时,游标保留在过程中最后一次执行提取时的位置。 对于任意类型的游标,如果游标关闭,则将空值传递回调用批处理、存储过程或触发器。如果将游标指派给一个参数,但该游标从未打开过,也会出现这种情况。 说明关闭状态只有在返回时才有影响。例如,可以在过程中关闭游标,稍后再打开游标,然后将该游标的结果集返回给调用批处理、存储过程或触发器。 MySQL启动时可以自动执行一个或多个存储过程。这些存储过程必须由系统管理员创建,并在sysadmin固定服务器角色下作为后台过程执行。这些过程不能有任何输入参数。 对启动过程的数目没有限制,但是要注意,每个启动过程在执行时都会占用一个连接。如果必须在启动时执行多个过程,但不需要并行执行,则可以指定一个过程作为启动过程,让该过程调用其它过程。这样就只占用一个连接。 在启动时恢复了最后一个数据库后,即开始执行存储过程。若要跳过这些存储过程的执行,请将启动参数指定为跟踪标记4022。如果以最低配置启动MySQL(使用-f标记),则启动存储过程也不会执行。有关更多信息,请参见跟踪标记。 若要创建启动存储过程,必须作为sysadmin固定服务器角色的成员登录,并在master数据库中创建存储过程。 医药管理系统第五章测试5.1功能测试概述在MyEclipse9.1环境下搭建项目,将项目MedicineManager项目导入,单击鼠标右键,选择“运行方式”/MyEclopseServerApplication命令,此时MyEclipse将项目自动部署并运行。在Web服务器启动成功后,MyEclipse将通过内置的浏览器(MyEclipseWebBrowser)打开项目中的主页面,登录成功将进入系统,这样就开始了系统的测试,5.2功能测试目的验证功能测试范围内的系统功能是否满足业务的需求。应用系统是否实现了经过各方确认过的约定的功能和性能指标要求。用户对应用系统的使用方式满意,确实方便了用户,提高了用户的效率,达到了系统的设计目标。应用系统经过功能测试,能稳定的运行,达到上线正式运行的各项要求5.3功能测试范围1.具有良好的系统性能、友好的用户界面。2.较高的处理效率,便于用户的使用和维护。3.采用成熟的开发技术,全系统具有较高的技术水品和较长的生命周期。 医药管理系统4.对销售信息进行统计排行。5.系统尽可能的简化药品管理员的重复工作,提高工作效率。5.4功能测试工作流程:1.测试人员分功能、分模块测试发现的问题,并提出修改建议。2.测试人员记录整理安监业务人员提出的问题。3.测试人员针对案件业务人员提出的问题进行交流沟通。4.测试人员对已理解的问题进行汇总,并区分优先级。提交产品组分析讨论和处理。5.问题修改完成后,提交给测试人员进行验证测试。6.测试人员对验证通过的问题提交给安监业务人员。7.安监业务人员针对测出的问题进行确认测试。5.5功能测试工作流程图: 医药管理系统 医药管理系统图5-5功能测试工作流程图附录1:packagecom.lyq.dao;importjava.util.List;importcom.lyq.persistence.Category;importcom.lyq.util.HibernateFilter;/***药品类别数据库操作类*@authorLiYongQiang*/publicclassCategoryDaoextendsSupperDao{/***根据id查询类别*@paramid*@returnCategory*/publicCategoryloadCategory(intid){Categoryc=null;try{session=HibernateFilter.getSession();//获取Session对象session.beginTransaction();//开启事物//加载类别信息c=(Category)session.load(Category.class,newInteger(id));session.getTransaction().commit();//提交事物}catch(Exceptione){e.printStackTrace();//打印异常信息session.getTransaction().rollback();//回滚事物}returnc;}/***查询所有类别*@returnList*/publicListfindAllCategory(){Listlist=null; 医药管理系统try{session=HibernateFilter.getSession();//获取Session对象session.beginTransaction();//开启事物list=session.createQuery("fromCategoryc")//创建Query对象.list();//获取结果集session.getTransaction().commit();//提交事物}catch(Exceptione){e.printStackTrace();//打印异常信息session.getTransaction().rollback();//回滚事物}returnlist;}/***统计药品类别及数量*@return*/publicListfindCategoryAndCount(){Listlist=null;try{session=HibernateFilter.getSession();//获取Session对象session.beginTransaction();//开启事物//内连接查询语句Stringhql="selectc.name,count(*)fromMedicinemjoinm.categorycgroupbyc";list=session.createQuery(hql)//创建Query对象.list();//获取结果集session.getTransaction().commit();//提交事物}catch(Exceptione){e.printStackTrace();//打印异常信息session.getTransaction().rollback();//回滚事物}returnlist;}}packagecom.lyq.dao;importcom.lyq.persistence.Medicine;importcom.lyq.util.HibernateFilter;/***药品数据库操作类* 医药管理系统*@authorLiYongQiang*/publicclassMedicineDaoextendsSupperDao{/***查询药品信息**@paramid*@returnMedicine*/publicMedicineloadMedicine(intid){Medicinemed=null;try{session=HibernateFilter.getSession();//获取Session对象session.beginTransaction();//开启事物//加载药品信息med=(Medicine)session.load(Medicine.class,newInteger(id));session.getTransaction().commit();//提交事物}catch(Exceptione){e.printStackTrace();//打印异常信息session.getTransaction().rollback();//回滚事物}returnmed;}/***通过fetch同时抓取药品和类别**@paramid*@returnMedicine*/publicMedicineloadMedicineAndCategory(intid){Medicinemed=null;try{session=HibernateFilter.getSession();//获取Session对象session.beginTransaction();//开启事物//HQL查询语句Stringhql="selectafromMedicineajoinfetcha.categorybwherea.id="+id;med=(Medicine)session.createQuery(hql)//创建Query对象.uniqueResult();//单值检索session.getTransaction().commit();//提交事物}catch(Exceptione){ 医药管理系统e.printStackTrace();//打印异常信息session.getTransaction().rollback();//回滚事物}returnmed;}/***根据medNo查询**@parammedNo*@returnMedicine*/publicMedicinefindMedicineByMedNo(StringmedNo){Medicinemed=null;try{session=HibernateFilter.getSession();//获取Session对象session.beginTransaction();//开启事物//HQL查询语句Stringhql="fromMedicinedwhered.medNo=?";med=(Medicine)session.createQuery(hql)//创建Query对象.setParameter(0,medNo)//对HQL动态赋值.uniqueResult();//返回单个对象session.getTransaction().commit();//提交事物}catch(Exceptione){e.printStackTrace();//打印异常信息session.getTransaction().rollback();//回滚事物}returnmed;}}packagecom.lyq.dao;importjava.util.ArrayList;importjava.util.List;importcom.lyq.persistence.SellDetail;importcom.lyq.persistence.SellSeq;importcom.lyq.util.HibernateFilter;/***药品销售数据库操作类*@authorLiYongQiang*/ 医药管理系统publicclassSellDaoextendsSupperDao{/***保存销售明细*@paramsdSellDetail对象*/publicvoidsaveSellDetail(SellDetailsd){try{session=HibernateFilter.getSession();//获取Session对象session.beginTransaction();//开启事物session.save(sd);//保存销售信息session.getTransaction().commit();//提交事物}catch(Exceptione){e.printStackTrace();//打印异常信息session.getTransaction().rollback();//回滚事物}}/***查询销售排行*@returnList*/publicListsellSeq(){Listlist=null;try{session=HibernateFilter.getSession();//获取Session对象session.beginTransaction();//开启事物//HQL查询语句Stringhql="selects.sellName,sum(s.sellPrice),sum(s.sellCount),"+"m.idfromSellDetailsjoins.medm"+"groupbymorderbysum(s.sellCount)desc";Listtemp=session.createQuery(hql)//创建Query对象.setFirstResult(0)//起始位置.setMaxResults(10)//偏移量.list();//获取结果集if(temp!=null&&temp.size()>0){list=newArrayList();for(inti=0;i0){for(inti=0;i0){for(inti=0;i0){//从session之中获取User对象Useru=(User)request.getSession().getAttribute("user");if(u!=null){//用户不能删除自身账号if(uf.getId()!=u.getId()){UserDaodao=newUserDao();dao.deleteByHQL("deletefromUseruwhereu.id="+uf.getId());}else{//删除自身返回错误信息ActionMessageserrors=newActionMessages();errors.add("",newActionMessage("user.delete.error"));this.saveErrors(request,errors);returnmapping.findForward("error");}}}returnmapping.findForward("userFind");}//编辑用户publicActionForwarduserEdit(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse)throwsException{UserFormuf=(UserForm)form;if(uf.getId()>0){UserDaodao=newUserDao();Useruser=dao.loadUser(uf.getId());BeanUtils.copyProperties(uf,user); 医药管理系统}returnmapping.findForward("userEdit");}//修改密码publicActionForwardmodifyPassword(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse)throwsException{UserFormuf=(UserForm)form;if(uf!=null){//从session之中获取User对象Useruser=(User)request.getSession().getAttribute("user");//确认两次密码是否一致if(user!=null&&uf.getOldPassword().equals(user.getPassword())){if(uf.getPassword().equals(uf.getRePassword())){UserDaodao=newUserDao();user.setPassword(uf.getPassword());dao.saveOrUpdate(user);}}else{//密码错误ActionMessageserrors=newActionMessages();errors.add("",newActionMessage("user.oldpassword.error"));this.saveErrors(request,errors);returnmapping.findForward("error");}}returnmapping.findForward("userFind");}//初始化publicActionForwardinitialization(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse)throwsException{UserDaodao=newUserDao();//初始化数据dao.initialization();request.getSession().invalidate();ActionForwardforward=newActionForward("/login.jsp",true);returnforward;} 医药管理系统}packagecom.lyq.struts.action;importjava.text.SimpleDateFormat;importjava.util.ArrayList;importjava.util.Date;importjava.util.List;importjava.util.Map;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjavax.servlet.http.HttpSession;importorg.apache.struts.action.ActionForm;importorg.apache.struts.action.ActionForward;importorg.apache.struts.action.ActionMapping;importorg.apache.struts.action.ActionMessage;importorg.apache.struts.action.ActionMessages;importcom.lyq.dao.MedicineDao;importcom.lyq.dao.SellDao;importcom.lyq.persistence.Medicine;importcom.lyq.persistence.SellDetail;importcom.lyq.persistence.User;importcom.lyq.struts.form.SellDetailForm;/***销售Action类*@authorLiYongQiang*/publicclassSellActionextendsBaseAction{//向购物车中添加药品publicActionForwardorder(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse)throwsException{//获取SellDetailFormSellDetailFormsdf=(SellDetailForm)form;if(sdf!=null&&sdf.getSellPrice()>0&&sdf.getMedId()>0){MedicineDaomedDao=newMedicineDao();//加载药品信息Medicinemed=medDao.loadMedicine(sdf.getMedId()); 医药管理系统//如果购买的数量小于库存数量,进行错误处理if(med.getMedCount()0){MedicineDaomedDao=newMedicineDao();Medicinemed=medDao.loadMedicine(sdf.getId());sdf.setMedId(med.getId());sdf.setSellName(med.getName());sdf.setSellPrice(med.getPrice());sdf.setSellCount(1);sdf.setFactoryAdd(med.getFactoryAdd());}returnmapping.findForward("add");}//结账购物车中的药品publicActionForwardbuy(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse)throwsException{HttpSessionsession=request.getSession();//获取购物车中所有药品Listlist=(List)session.getAttribute("order");if(list!=null&&list.size()>0){try{SellDaodao=newSellDao();MedicineDaomedDao=newMedicineDao();//获取当前操作员(用户)Useruser=(User)request.getSession().getAttribute("user");//通过循环进行结账for(inti=0;i=sCount){SellDetailsd=newSellDetail();sd.setSellCount(sdf.getSellCount());sd.setSellName(sdf.getSellName());sd.setSellPrice(sdf.getSellPrice());sd.setSellTime(newDate());sd.setMed(med);sd.setUser(user);//保存销售明细dao.saveSellDetail(sd); 医药管理系统//更新库库存信息med.setMedCount(dCount-sCount);medDao.saveOrUpdate(med);}else{ActionMessageserrors=newActionMessages();ActionMessagemessage=newActionMessage("drug.drugCount.error","");errors.add("",message);this.saveErrors(request,errors);returnmapping.findForward("error");}}}finally{session.removeAttribute("order");session.removeAttribute("sum");}}returnmapping.findForward("paging");}//分页查询销售明细publicActionForwardpaging(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse)throwsException{//获取当前页码StringcurrPage=request.getParameter("currPage");Stringaction=request.getContextPath()+"/sell/sell.do?command=paging";Stringhql="fromSellDetailsorderbys.sellTimedesc";//分页查询Mapmap=this.getPage(hql,recPerPage,currPage,action,null);//将结果集放到request中request.setAttribute("list",map.get("list"));//将结果集放到分页条中request.setAttribute("pagingBar",map.get("bar"));returnmapping.findForward("findAllSuccess");}//删除购物车中指定的药品publicActionForwarddeleteOrder(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse)throwsException{//获取id 医药管理系统Stringid=request.getParameter("id");if(id!=null&&!id.isEmpty()){HttpSessionsession=request.getSession();//获取购物车Listorder=(List)session.getAttribute("order");Listlist=null;if(order!=null){//获取总额doublesum=((Double)session.getAttribute("sum")).doubleValue();//创建新的购物车对象list=newArrayList();for(inti=0;i0){request.setAttribute("list",list);}returnmapping.findForward("sequence");}//根据销售药品id查询销售信息publicActionForwardfindByMedId(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse)throwsException{Stringid=request.getParameter("id");//获取当前页码StringcurrPage=request.getParameter("currPage");Stringaction=request.getContextPath()+"/sell/sell.do?command=findByMedId";Stringhql="fromSellDetails";Object[]where=null;if(id!=null&&!id.isEmpty()){hql+="wheres.med.id=?orderbys.sellTimedesc"; 医药管理系统action+="&id="+id;where=newObject[]{Integer.getInteger(id)};}//分布查询Mapmap=this.getPage(hql,recPerPage,currPage,action,where);//将结果集放到request中request.setAttribute("list",map.get("list"));//将结果集放到分页条中request.setAttribute("pagingBar",map.get("bar"));returnmapping.findForward("findAllSuccess");}}packagecom.lyq.struts.action;importjava.io.FileOutputStream;importjava.io.OutputStream;importjava.text.SimpleDateFormat;importjava.util.Date;importjava.util.List;importjava.util.Map;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importorg.apache.commons.beanutils.BeanUtils;importorg.apache.struts.action.ActionForm;importorg.apache.struts.action.ActionForward;importorg.apache.struts.action.ActionMapping;importorg.apache.struts.upload.FormFile;importcom.lyq.dao.CategoryDao;importcom.lyq.dao.MedicineDao;importcom.lyq.persistence.Category;importcom.lyq.persistence.Medicine;importcom.lyq.struts.form.MedicineForm;/***药品需求Action类*@authorLiYongQiang*/publicclassRequireActionextendsBaseAction{//编辑需求药品publicActionForwardedit(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse)throwsException{ 医药管理系统MedicineFormdf=(MedicineForm)form;if(df.getId()>0){MedicineDaodao=newMedicineDao();Medicinemed=dao.loadMedicine(df.getId());BeanUtils.copyProperties(df,med);df.setCategoryId(med.getCategory().getId());}//获取药品类别信息CategoryDaodao=newCategoryDao();Listcs=dao.findAllCategory();request.setAttribute("cs",cs);returnmapping.findForward("medSave");}//添加需求药品publicActionForwardadd(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse)throwsException{Medicinemed=null;MedicineFormdf=(MedicineForm)form;if(df.getReqCount()==0){df.setReqCount(1);}MedicineDaomedDao=newMedicineDao();//需求已存在,更新数量if(df.getId()>0){med=medDao.loadMedicine(df.getId());//更新需求量intreqCount=med.getReqCount();med.setReqCount(df.getReqCount());}else{//需求不存在,添加需求med=newMedicine();BeanUtils.copyProperties(med,df);CategoryDaocd=newCategoryDao();Categorycategory=cd.loadCategory(df.getCategoryId());med.setCategory(category);}//上传FormFilephoto=df.getPhoto();if(photo!=null&&photo.getFileSize()>0){StringrealPath=this.getServlet().getServletContext().getRealPath("/upload");System.out.println(realPath);//将文件上传至服务器中指定的文件下 医药管理系统try{Stringfname=photo.getFileName();//获取上传文件名称if(fname.indexOf(".")!=-1){StringendWith=fname.substring(fname.lastIndexOf("."),fname.length());SimpleDateFormatsdf=newSimpleDateFormat("yyyyMMddHHmmssSSS");fname=sdf.format(newDate())+endWith;}//向服务器中写入文件OutputStreamout=newFileOutputStream(realPath+"/"+fname);//创建写入服务器地址的输出流对象out.write(photo.getFileData());out.flush();out.close();med.setPhotoPath(fname);}catch(Exceptione){e.printStackTrace();}}medDao.saveOrUpdate(med);returnmapping.findForward("addSuccess");}//更新需求信息publicActionForwardupdate(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse)throwsException{MedicineFormdf=(MedicineForm)form;Medicinemed=null;if(df.getId()>0){MedicineDaodao=newMedicineDao();med=dao.loadMedicine(df.getId());BeanUtils.copyProperties(df,med);}returnmapping.findForward("medUpdate");}//根据medNo查询publicActionForwardfindMedicineByMedNo(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse)throwsException{MedicineFormdf=(MedicineForm)form; 医药管理系统Medicinemed=null;//查询需求中是否存在if(df!=null&&df.getMedNo()!=null){MedicineDaodao=newMedicineDao();med=dao.findMedicineByMedNo(df.getMedNo());}if(med!=null){//查到信息//request.setAttribute("med","med");BeanUtils.copyProperties(df,med);returnmapping.findForward("medUpdate");}else{CategoryDaocd=newCategoryDao();Listlist=cd.findByHQL("fromCategory");request.setAttribute("cs",list);returnmapping.findForward("medSave");}}//分页查询publicActionForwardpaging(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse)throwsException{//获取当前页码StringcurrPage=request.getParameter("currPage");Stringaction=request.getContextPath()+"/require/require.do?command=paging";Stringhql="fromMedicinedwhered.reqCount>0ord.medCount<=0";//分页查询Mapmap=this.getPage(hql,recPerPage,currPage,action,null);//将结果集放到request中request.setAttribute("list",map.get("list"));//将结果集放到分页条中request.setAttribute("pagingBar",map.get("bar"));returnmapping.findForward("findAllSuccess");}//更新药品进货完成publicActionForwardmeded(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse)throwsException{MedicineFormdf=(MedicineForm)form;//获取MedicineFormMedicinemed=null;if(df.getId()>0){ 医药管理系统MedicineDaodao=newMedicineDao();//实例化MedicineDaomed=dao.loadMedicine(df.getId());//加载药品信息if(med!=null){//更新药品数量med.setMedCount(med.getMedCount()+med.getReqCount());med.setReqCount(0);//更新药品需求dao.saveOrUpdate(med);//更新药品对象}}returnmapping.findForward("addSuccess");}//模糊查询,分页显示publicActionForwardblurQuery(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse)throwsException{//获取关键词StringkeyWord=request.getParameter("keyWord");//获取当前页码StringcurrPage=request.getParameter("currPage");Stringaction=request.getContextPath()+"/require/require.do?command=blurQuery";Stringhql="fromMedicinedwhered.reqCount>0";Object[]where=null;//转码if(currPage!=null&&!currPage.isEmpty()){keyWord=newString(keyWord.getBytes("iso-8859-1"),"gbk");}if(keyWord!=null&&!keyWord.isEmpty()){keyWord="%"+keyWord+"%";hql+="whered.namelike?ord.medNolike?ord.factoryAddlike?ord.descriptionlike?";action+="&keyWord="+keyWord;where=newObject[]{keyWord,keyWord,keyWord,keyWord};}//分页查询Mapmap=this.getPage(hql,recPerPage,currPage,action,where);//将结果集放到request中request.setAttribute("list",map.get("list"));//将结果集放到分页条中request.setAttribute("pagingBar",map.get("bar"));returnmapping.findForward("findAllSuccess");} 医药管理系统}packagecom.lyq.struts.action;importjava.io.FileOutputStream;importjava.io.OutputStream;importjava.text.SimpleDateFormat;importjava.util.Date;importjava.util.List;importjava.util.Map;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importorg.apache.commons.beanutils.BeanUtils;importorg.apache.struts.action.ActionForm;importorg.apache.struts.action.ActionForward;importorg.apache.struts.action.ActionMapping;importorg.apache.struts.upload.FormFile;importcom.lyq.dao.CategoryDao;importcom.lyq.dao.MedicineDao;importcom.lyq.persistence.Category;importcom.lyq.persistence.Medicine;importcom.lyq.struts.form.MedicineForm;importcom.lyq.util.QueryUtil;importcom.lyq.util.StringUtil;/***药品Action类*@authorLiYongQiang*/publicclassMedicineActionextendsBaseAction{//添加药品publicActionForwardadd(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse)throwsException{Medicinemed=null;//获取MedicineFormMedicineFormdf=(MedicineForm)form;MedicineDaodao=newMedicineDao();if(df.getMedCount()==0){ 医药管理系统df.setMedCount(1);}med=newMedicine();BeanUtils.copyProperties(med,df);CategoryDaocd=newCategoryDao();Categorycategory=cd.loadCategory(df.getCategoryId());med.setCategory(category);//上传图片FormFilephoto=df.getPhoto();if(photo!=null&&photo.getFileSize()>0){StringrealPath=this.getServlet().getServletContext().getRealPath("/upload");//将文件上传至服务器中指定的文件下try{Stringfname=photo.getFileName();//获取上传文件名称if(fname.indexOf(".")!=-1){//获取文件的扩展名StringendWith=fname.substring(fname.lastIndexOf("."),fname.length());//用当前的时间生成文件名称SimpleDateFormatsdf=newSimpleDateFormat("yyyyMMddHHmmssSSS");fname=sdf.format(newDate())+endWith;}//创建写入服务器地址的输出流对象OutputStreamout=newFileOutputStream(realPath+"/"+fname);out.write(photo.getFileData());//将文件写入到服务器out.flush();out.close();//将文件名称保存到数据库med.setPhotoPath(fname);}catch(Exceptione){e.printStackTrace();}}dao.saveOrUpdate(med);returnmapping.findForward("addSuccess");}//添加药品publicActionForwardupdate(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse)throwsException{//获取MedicineForm 医药管理系统MedicineFormdf=(MedicineForm)form;MedicineDaodao=newMedicineDao();//药品已存在,更新药品数量Medicinemed=dao.loadMedicine(df.getId());intmedCount=med.getMedCount();med.setMedCount(medCount+df.getMedCount());returnmapping.findForward("addSuccess");}//根据medNo查询药品publicActionForwardfindMedicineByMedNo(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse)throwsException{//获取MedicineFormMedicineFormdf=(MedicineForm)form;Medicinemed=null;//查询药品if(df!=null&&df.getMedNo()!=null){MedicineDaodao=newMedicineDao();med=dao.findMedicineByMedNo(df.getMedNo());}//如果药品存在,更新数量,否则添加新药if(med!=null){BeanUtils.copyProperties(df,med);request.setAttribute("med","med");returnmapping.findForward("medUpdate");}else{CategoryDaocd=newCategoryDao();Listlist=cd.findByHQL("fromCategory");request.setAttribute("cs",list);returnmapping.findForward("medSave");}}//分页查询药品信息publicActionForwardpaging(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse)throwsException{//获取页码StringcurrPage=request.getParameter("currPage");//构建action地址Stringaction=request.getContextPath()+"/baseData/med.do?command=paging";//HQL查询语句Stringhql="fromMedicine"; 医药管理系统//分页查询,返回Map对象Mapmap=this.getPage(hql,recPerPage,currPage,action,null);//将结果集放到request中request.setAttribute("list",map.get("list"));//将结果集放到分页条中request.setAttribute("pagingBar",map.get("bar"));returnmapping.findForward("findAllSuccess");}//查看药品详细信息publicActionForwardview(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse)throwsException{Stringid=request.getParameter("id");Medicinemed=null;//根据id查询药品信息if(id!=null&&!"".equals(id)){MedicineDaodao=newMedicineDao();med=dao.loadMedicineAndCategory(Integer.parseInt(id));}request.setAttribute("med",med);returnmapping.findForward("view");}//编辑药品信息publicActionForwardedit(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse)throwsException{//获取MedicineFormMedicineFormdf=(MedicineForm)form;Medicinemed=null;//根据id查询药品if(df.getId()>0){MedicineDaodao=newMedicineDao();med=dao.loadMedicineAndCategory(df.getId());BeanUtils.copyProperties(df,med);df.setCategoryId(med.getCategory().getId());}//获取类别信息CategoryDaocategoryDao=newCategoryDao();Listcs=categoryDao.findByHQL("fromCategory");request.setAttribute("cs",cs);returnmapping.findForward("medSave");} 医药管理系统//多条件查询,分页显示结果publicActionForwardquery(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse)throwsException{//获取MedicineFormMedicineFormdf=(MedicineForm)form;StringcurrPage=request.getParameter("currPage");//构造查询ActionStringaction=request.getContextPath()+"/baseData/med.do?command=query";//构造HQL语句及分页条件MapmapQuery=QueryUtil.queryMedicine(df,currPage,action);Stringhql=(String)mapQuery.get("hql");action=(String)mapQuery.get("action");Object[]where=(Object[])mapQuery.get("where");//分页查询Mapmap=this.getPage(hql,recPerPage,currPage,action,where);//将结果集放到request中request.setAttribute("list",map.get("list"));//将结果集放到分页条中request.setAttribute("pagingBar",map.get("bar"));returnmapping.findForward("findAllSuccess");}//模糊查询publicActionForwardblurQuery(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse)throwsException{//获取关键词StringkeyWord=request.getParameter("keyWord");//获取当前页StringcurrPage=request.getParameter("currPage");Stringhql="fromMedicined";Object[]where=null;Stringaction=request.getContextPath()+"/baseData/med.do?command=blurQuery";//转码if(currPage!=null&&!currPage.isEmpty()){keyWord=StringUtil.encodeZh(keyWord);}if(keyWord!=null&&!keyWord.isEmpty()){action+="&keyWord="+StringUtil.encodeURL(keyWord); 医药管理系统keyWord="%"+keyWord+"%";hql+="whered.namelike?ord.medNolike?ord.factoryAddlike?ord.descriptionlike?";where=newObject[]{keyWord,keyWord,keyWord,keyWord};}//分页查询Mapmap=this.getPage(hql,recPerPage,currPage,action,where);//将结果集放到request中request.setAttribute("list",map.get("list"));//将结果集放到分页条中request.setAttribute("pagingBar",map.get("bar"));returnmapping.findForward("findAllSuccess");}//浏览可买的药品publicActionForwardcanSellMeds(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse)throwsException{//HQL查询条件Stringhql="fromMedicinedwhered.medCount>0";//获取当前页StringcurrPage=request.getParameter("currPage");Stringaction=request.getContextPath()+"/baseData/med.do?command=canSellMeds";//分页查询Mapmap=this.getPage(hql,recPerPage,currPage,action,null);//将结果集放到request中request.setAttribute("list",map.get("list"));//将结果集放到分页条中request.setAttribute("pagingBar",map.get("bar"));returnmapping.findForward("canSellMeds");}//查询库存publicActionForwardQueryMedCount(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse)throwsException{//获取查询数量Stringcount=request.getParameter("count");//获取查询类型(>、<、=)Stringtype=request.getParameter("type");//获取当前页 医药管理系统StringcurrPage=request.getParameter("currPage");Object[]where=null;Stringhql="fromMedicined";Stringaction=request.getContextPath()+"/require/require.do?command=blurQuery";if(count!=null&&type!=null){//构造条件if(type.equals("0")){hql="fromMedicinedwhered.medCount=?";}elseif(type.equals("1")){hql="fromMedicinedwhered.medCount>?";}elseif(type.equals("-1")){hql="fromMedicinedwhered.medCount

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭