《基于JSP的医药管理系统设计与实现计算机专业毕业论文.doc》由会员分享,可在线阅读,更多相关《基于JSP的医药管理系统设计与实现计算机专业毕业论文.doc(47页珍藏版)》请在三一办公上搜索。
1、XXXX大学毕业论文基于JSP的医药管理系统设计与实现专业名称: 计算机科学与技术 班 级: 200804 学生姓名: XXX 指导教师: XXX 完成时间: 2012年4月 摘要随着科学技术的发展和人们生活水平的提高,人们对于医药产品的需求迅速增加,管理药品信息成为制药行业的各项工作中不可缺少的一部分。本医药管理系统是为了管理药品信息而设计的。以前的数据处理要用手工操作,工作量大,出错率高,出错后也不易更改。而本医药管理系统使用起来,效率高,速度快,也方便使用和修改。根据实际需求,本医药管理系统是在Windows XP操作系统环境下,以MyEclipse 8.6为前台开发工具,采用JSP技术
2、,用MySQL Server 5.0为后台数据库开发工具来实现的。主要实现医药管理、类别管理、购买药品、销售管理、进货/需求管理和系统管理等功能。本医药管理系统首先输入和存储一些基本的数据资料,例如本系统中的药品信息和销售信息、进货/需求信息,对于这些信息和数据能方便的进行添加、修改、查询和删除。其次,为了方便管理者管理数据,对各种数据进行统计,如统计库存信息,销售信息和进货/需求信息等。关键词 医药管理系统;药品信息管理;JSP技术ABSTRACTWith the development of science and technology and peoples living standar
3、ds improve, the demand for pharmaceutical products increased rapidly, the management of drug information has become an indispensable part of the work of the pharmaceutical industry.The management system of the medicine is designed to manage drug information. The previous data processing to use manua
4、l operation, a heavy workload, error rate, error is not easy to change. The use of the pharmaceutical management system, high efficiency, fast, easy to use and modify.According to the actual needs of the pharmaceutical management system is in the Windows XP operating system environment, the MyEclips
5、e 8.6 development tools for the front, using JSP technology, MySQL Server 5.0 back-end database development tools. Medical management, category management, buying drugs, sales management, purchase / demand management and system management functions.Management system of the medicine first enter and s
6、tore some of the basic data, such as drug information and sales information in this system, purchase / demand for such information and data can easily add, modify, query and delete. Secondly, in order to facilitate management of data managers, a variety of data statistics, such as statistical invent
7、ory information, sales information, and purchase / demand information.Keywords Pharmaceutical management system; information management; JSP technology目 录1 绪论11.1 系统开发背景11.2 系统开发意义11.3 文章内容安排12 系统开发环境和开发工具简介32.1 系统开发环境32.2 系统开发工具简介32.2.1 MySQL数据库介绍32.2.2 JSP技术概述33 系统需求分析53.1 可行性分析53.1.1 技术可行性53.1.2
8、经济可行性53.2 系统功能需求53.3 数据流图64 系统总体设计84.1 系统结构设计84.1.1 逻辑分层结构设计94.1.2 定义ActionForm94.1.3 持久层结构设计104.1.4 业务层结构设计114.1.5 页面结构设计114.2 数据库设计124.2.1 实体对象设计124.2.2 数据库表结构124.2.3 数据库E-R图145 系统详细设计175.1 公共类设计185.1.1 Hibernate过滤器185.1.2 SuperDao类195.1.3 BaseAction类205.1.4 DeleteAction类215.1.5 字符串工具类225.2 系统登陆模块
9、设计235.3 医药管理模块设计245.3.1 药品对象持久层设计265.3.2 药品信息的添加与修改265.3.3 分页查看所有药品275.3.4 查看药品详细信息275.3.5 查询药品285.3.6 高级查询285.3.7 查看库存295.4 类别管理模块设计305.4.1 药品类别持久层设计305.4.2 药品类别的添加305.4.3 分页查看类别信息315.4.4 类别的修改与删除315.4.5 药品类别统计315.5 购买药品模块设计325.5.1 购买药品335.5.2 查看选购335.6 销售管理模块设计345.6.1 查看明细和今日明细355.6.2 日期查询355.6.3
10、销售排行355.7 进货/需求管理模块设计365.8 系统管理模块设计37结 论40致 谢41参考文献42基于JSP的医药管理系统设计与实现1 绪论1.1 系统开发背景当今时代是飞速发展的信息时代。在各行各业中都离不开信息的处理,这正是计算机被广泛用于信息管理系统的原因。计算机的最大好处在于利用它能够进行信息管理。使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。尤其对于复杂的信息管理,计算机能够充分的发挥它的优越性。计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。随着我国市场经济的蓬勃发展和人们对医药产品需求的迅速增加,医药行业正处于一个高速发
11、展的时期。行业的快速发展必然导致竞争的加剧,想要在激烈的市场竞争中谋求发展,客观上要求企业必须加强内部管理,提高运营效率。另外,由于医药产品种类繁多,销售模式特殊,业务量大,单凭手工管理已很难适应工作的需要。医药作为一个关系人们健康的特殊行业,国家对医药行业又有一些不同于其他行业的管理政策,这些都加大了管理的难度。如何尽快建立和完善现代企业的信息管理机制问题,已成为医药企业发展的关键所在。1.2 系统开发意义根据实际情况和系统的开发背景来看,开发本医药管理系统的意义在于:能够集中处理药品的进销存业务,提供快速的药品查询功能、快速的统计药品信息、销量信息,对药品进行高效的管理以满足管理者和消费者
12、的需求。1.3 文章内容安排本文主要阐述了本医药管理系统的整体开发过程。介绍了系统的开发环境以及开发工具,对于设计思想和设计流程也做出了全面的叙述,在数据库各个数据表之间的具体关联方面也做出了详细说明,并且具体剖析了系统各个功能的实现过程以及详细设计过程。具体内容安排如下:第一章:介绍系统的开发背景和开发意义,以及文章的内容安排;第二章:介绍系统开发的硬件环境和软件环境,以及开发工具和核心技术;第三章:对系统进行需求分析,主要对系统进行可行性分析,明确系统要实现的目标和所完成的功能;第四章:完成系统的详细设计,包括系统功能结构图,业务流程图以及数据库的E-R图;第五章:完成系统的详细实现,包括
13、公共类的设计和各个模块的设计。2 系统开发环境和开发工具简介2.1 系统开发环境硬件平台:CPU:2.00GHz内存:2G软件平台:操作系统:Windows XP数据库:MySQL Server 5.0开发工具:MyEclipse 8.6开发工具包:JDK 1.6JSP服务器:Tomcat 7.0浏览器:IE 82.2 系统开发工具简介2.2.1 MySQL数据库介绍MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16号被Sun公司收购。而2009年,SUN又被Oracle收购。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而
14、不是将所有数据放在一个大仓库内。这样就增加了速度并提高了灵活性。SQL是用于访问数据库的最常用标准化语言。MySQL软件采用了GPL(GNU通用公共许可证)。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。2.2.2 JSP技术概述JSP技术使用Java编程语言编写XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和
15、容易。Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。JSP与JavaServlet一样,是在服务器端执行的,通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。Java Servlet是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servle
16、t和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。自JSP推出后,众多大公司都支持JSP技术的服务器,如IBM、Oracle、Bea公司等,所以JSP迅速成为商业应用的服务器端语言。3 系统需求分析3.1 可行性分析可行性分析是在进行初步调查后所进行的对系统开发的必要性和可能性的研究,所以也称为可行性研究。所谓可行性应该包括必要性和可能性两个方面。没有必要性的项目是不应该进行的。一般地,软件领域的可行性分析主要考虑两个因素:技术可行性和经济可行性。3.1.1 技术可行性根据系统目标来衡量所需的技术是否具备,本医药管理
17、系统是一个数据库管理和查询的系统,软件技术方面采用的是 Microsoft Windows XP Professional版的操作系统,MySQL Server 5.0为后台数据库开发工具, MyEclipse 8.6集成开发工具。JDK 1.6开发工具包,Tomcat 7.0服务器,IE 8浏览器以及JSP技术,能够实现本医药管理系统,以满足用户需求。3.1.2 经济可行性医药进销存管理已成为医药管理工作中不可缺少的部分,开发一个医药管理系统具有很强的经济价值。本医药管理系统提供快速的药品查询功能、快速的统计药品信息、销售信息等,对药品进行高效的管理以满足管理者的需求。所以,本医药管理系统在
18、经济型上有很强的实际价值。3.2 系统功能需求根据实际情况分析,本医药管理系统的应具有主要功能包括:(1) 医药管理:添加药品、查看药品、高级查询、查看库存;(2) 类别管理:添加类别、查看类别、类别统计;(3) 购买药品:选购药品、查看选购;(4) 销售管理:查看明细、今日明细、日期查询、销售排行;(5) 进货/需求管理:添加进货、查看进货;(6) 系统管理:添加管理员、查看所有管理员、修改密码、系统初始化、退出系统。3.3 数据流图数据流程图(Data Flow Diagram,简称DFD)是数据流程分析所使用的主要工具之一,是组织中信息运动的抽象,是管理信息系统逻辑模型的主要形式。这个模
19、型不涉及硬件、软件、数据结构与文件组织,它与对系统的物理描述无关,只是用一种图形及与此相关的注释来表示系统的逻辑模型,即所开发的系统在管理信息处理方面要做什么。医药管理系统零层数据流图如图3-1所示。P医药管理系统F1药品信息F2药品类别信息F3药品销售信息F4用户信息D1 药品信息表D2 药品类别信息表D3 销售明细信息表D4 用户信息表图3-1 医药管理系统零层数据流图F1.1药品信息添加F1.2药品信息删除 F1.3药品信息修改 医药管理P1F1.4药品信息查询 D1 药品信息表医药管理系统一层数据流图如图3-2、图3-3、图3-4、图3-5所示。图3-2 医药管理系统一层数据流图F2.
20、1药品类别信息添加F2.2药品类别信息删除 F2.3药品类别信息修改 类别管理P2F2.4药品类别信息统计 D2 药品类别信息表2 药品类别信息表D1 P医药管理系统信息F3.1购买药品信息添加F3.2购买药品信息删除 F3.3药品销售信息查询 销售管理P3F3.4药品销售信息统计 D3 销售明细信息表2 药品类别信息表D1 P医药管理系统信息图3-3 医药管理系统一层数据流图F4.1用户信息添加F4.2用户信息删除 F4.3用户信息修改 系统管理P4D4 用户信息表2 药品类别信息表D1 P医药管理系统信息图3-4 医药管理系统一层数据流图图3-5 医药管理系统一层数据流图4 系统总体设计4
21、.1 系统结构设计在开发项目之前,首先要对软件的结构进行设计,也称之为软件架构,此过程是对软件的整体结构的设计。如软件的逻辑分层结构、结构的实现、数据库等等,特别是在Java的大型项目中,还需要设计出程序中包结构及接口等,非常复杂,需要程序员进行全面的考虑。对于医药管理系统的整体设计:逻辑分层结构设计、定义ActionForm、持久层结构设计、业务层结构设计、页面结构设计以及数据库设计。系统功能结构图如图4-1所示。医药管理系统医药管理类别管理购买药品销售管理进货/需求管理系统管理添加药品查看药品高级查询查看库存添加类别查看类别类别统计选购药品查看选购查看明细今日明细日期查询销售排行添加进货查
22、看进货添加管理员查看管理员修改密码系统初始化退出系统图4-1 系统功能结构图4.1.1 逻辑分层结构设计遵循MVC结构进行分析,医药管理系统可分为四层结构,分别为表示层、业务逻辑层、持久层与数据库层,四层结构图如图4-2所示。医药管理系统表示层(Struts框架)业务逻辑层(Struts框架)持久层(Hibernate框架)数据库层(MySQL数据库)图4-2 四层结构图对于四层结构的具体实现如图4-3所示。视图JSP/ActionFormStruts标签控制器Actionstruts-config.xml持久化Hibernate APIhibernate.cfg.xml医药管理系统MySQL
23、数据库图4-3 四层结构实现图4.1.2 定义ActionFormActionForm是简单的JavaBean,它主要用来保存用户所输入的表单数据,ActionForm要获取这些数据需要通过ActionForm对象进行传递。AcitonFomr对表单数据进行了封装,在Jsp页面与Action对象中提供了交互访问的方法。在使用过程中,可通过继承org.apache.struts.ActionForm对象来创建需要的ActionForm对象,项目中所涉及到的ActionForm对象如图4-4所示。ActionFormcom.lyq.struts.formUserFormSellDetailForm
24、CategoryFormMedicienForm用户销售明细类别药品图4-4 ActionForm对象图4.1.3 持久层结构设计持久层结构通过Hibernate框架进行设计,由于Hibernate对不同对象的增、删、改、查操作都具有一定的共性,如添加数据使用sava()方法、删除数据使用delete()方法等,项目中将这些具有共性的操作抽取出来,封装成一个类,其他数据库操作对象可继承此类来拥有这些方法,从而减少程序中的多余代码,持久层结构设计图如图4-5所示。com.lyq.daoSupperDaosave(in obj:Object):voidsaveOrUpdate(in obj:Obj
25、ect):voiddelete(in obj:Object):voidfindByHQL(in hql:String):ListdeleteByHQL(in hql:String):voiduniqueResult(in hql:String,in where:Object):ObjectfindPaging(in hql:String,in offset:int,in length:int,in where:Object):ListCategoryDaoMedicineDaoSellDaoUserDao图4-5 持久层结构设计图4.1.4 业务层结构设计业务层结构主要通过Stuts框架进行设
26、计,由Struts的中央控制器对各种请求操作进行控制,并通过相应的Action对其进行业务处理,项目中所用到的Action对象及关系如图4-6所示。ActionDispatchActioncom.lyq.struts.actionLoginActionRequireActionSellActionBaseActionLookupDispatchActionCategoryActionSystemActionMedicineActionDeleteActionDeleteReqMedActionDeleteMedicineAction图4-6 Action对象关系图4.1.5 页面结构设计医药管
27、理系统的页面结构采用框架进行设计,通过HTML语言中的呃标签及标签将页面分成三个部分,分别为页面头部、页面导航及内容页面,页面结构图如图4-7所示。页面头部页面导航页面内容图4-7 页面结构图4.2 数据库设计数据库设计的内容是:对于一个确定的环境,进行符合应用语义的逻辑设计,以及提供一个确定存贮结构和物理设计,建立实现系统目标,并能有效存取数据和数据模型。其主要任务是设计出能满足各种应用要求的数据模型。4.2.1 实体对象设计在使用Hibernate框架的项目中,实体对象的确立是项目中的关键,实体对象与数据库中的数据表相对应,并通过O/R映射建立实体与数据库的联系,Hibernate完全通过
28、操作实体来操作数据库,所以首先要确定项目中的实体对象。在医药管理系统中,实体对象及其关系如图4-8所示。com.lyq.persistence销售明细药品信息药品类别用户CategoryMedicineSellDetail多对一一对多多对一UserSellDetail.hbm.xmlUser.hbm.xmlMedicine.hbm.xmlCategory.hbm.xml图4-8 实体对象关系图4.2.2 数据库表结构本系统的数据库表设计主要包括:用户信息表、药品信息表、药品类别信息表、销售明细信息表。(1) 用户信息表(tb_user),如表4.1所示。表4.1 用户信息表字段名数据类型长度是
29、否主键允许空描述idinteger是否自动编号usernamevarchar50否否用户名passwordvarchar50否否密码createTimedatetime否是创建时间(2) 药品信息表(tb_medicine),如表4.2所示。表4.2 药品信息表字段名数据类型长度是否主键允许空描述idinteger是否自动编号medNovarchar100否否药品编码Namevarchar200否否药品名称factoryAddvarchar200否是出厂地址descriptionmediumtext否是药品描述pricedouble否否药品单价medCountinteger否是药品数量reqC
30、ountinteger否是需求数量photoPathvarchar255否是药品图片categoryIddatetime否是类别编号(3) 药品类别信息表(tb_category),如表4.3所示。表4.3 药品类别信息表字段名数据类型长度是否主键允许空描述idinteger是否自动编号namevarchar100否否类别名称descriptiontext否是类别描述createTimedatetime否是创建时间(4) 销售明细信息表(tb_selldetail),如表4.4所示。表4.4 药品销售信息表字段名数据类型长度是否主键允许空描述idinteger是否自动编号sellNamevar
31、char200否否药品名称sellPricedouble否否药品单价sellCountinteger否否销售数量sellTimedatetime否否销售时间medidinteger否是药品编号useridinteger否是用户编号4.2.3 数据库E-R图(1) 根据实际需求和设计规划得出的实体有:用户实体、药品实体、类别实体、销售明细实体,各实体的属性图如图4-9、图4-10、图4-11、图4-12所示。用户用户名密码创建时间图4-9 用户实体属性图药品药品编码药品名称药品数量药品单价出厂地址药品描述药品类别药品图片需求数量图4-10 药品实体属性图类别类别名创建时间类别描述图4-11 类别
32、实体属性图销售明细药品编码药品名称药品单价销售数量销售时间操作员销售金额图4-12 销售明细实体属性图(2) 各实体之间的关系E-R图如图4-13所示。N药品类别用户销售明细管理MNM1NN添加销售管理管理MMN图4-13 各实体关系E-R图5 系统详细设计在编写代码之前,需要对项目做出一些准备工作,如项目环境的搭建、项目所涉及到的第三方类库的支持、web.xml的配置等。在医药进销存管理系统中,主要涉及到Struts框架Hibernate框架及JFreeChart组件的应用,因此在开发项目之前,需要添加他们的类库支持。(1) 配置web.xml,主要代码如下:actionorg.apache
33、.struts.action.ActionServletaction*.do(2) 配置struts-config.xml,主要代码如下:(3) 配置hibernate.cfg.xml,主要代码如下:org.hibernate.dialect.MySQLDialectjdbc:mysql:/localhost:3306/db_database25rootrootcom.mysql.jdbc.Driverupdatetrue5.1 公共类设计在Java程序开发中,如果一个功能反复被调用,可以将这个功能抽取出来封装为一个类做为公共类,在需要此功能的地方通过继承此类进行实现。公共类实质是代码的重用的
34、一种方式,在面向对象的开发模式中,经常被使用,它可以简化程序中的代码提高程序的可读性,医药管理系统中的公共类设计如下。5.1.1 Hibernate过滤器在Web项目中,以普通方式使用Hibernate将无法解决Hibernate延迟加载,如下图所示。当有一个业务请求查询数据时,首先要开启Session对象,然后Hibernate对数据进行查询,再关闭Session对象,然后通过Jsp页面来显示数据。在这一过程中,如果查询数据时使用了延迟加载,当Jsp页面显示数据信息时,Hibernate将抛出异常信息,因此此时Session已经关闭,Hibernate不再对数据进行操作。通过过滤器管理Hib
35、ernate的Session对象则可以避免此问题。主要代码如下:public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException try chain.doFilter(request, response); finallySession session = (Session)threadLocal.get();if(session != null)if(session.isOpen()session.close
36、();threadLocal.remove();public static Session getSession() Session session = (Session)threadLocal.get();if (session = null) session = factory.openSession();threadLocal.set(session);return session;5.1.2 SuperDao类SuperDao类为项目中所有数据库操作的父类,此类中封装了数据库操作的常用方法。在此类中,由于Hibernate对数据的操作都需要用到Session接口,此类中定义了一个pro
37、tected类型的Session对象,为其子类提供方便。主要代码如下:public class SupperDao protected Session session = null;public void save(Object obj)try session = HibernateFilter.getSession();session.beginTransaction();session.save(obj);session.getTransaction().commit(); catch (Exception e) e.printStackTrace();session.getTransac
38、tion().rollback();public void delete(Object obj)try session = HibernateFilter.getSession();session.beginTransaction();session.delete(obj);session.getTransaction().commit(); catch (Exception e) e.printStackTrace();session.getTransaction().rollback();5.1.3 BaseAction类BaseAction类是业务层有一个超类对象,它继承了Struts的DispatchAction类,同时还为子类对象提供公用方法。Struts的DispatchAction类继承Action类,此类在处理请求时首先要执行execute()方法,然后通过控制器再转发到相应的方法进行业务处理,如果对系统 中涉及到的Action都编写一个验证方法,程序代码的重负性太高,则不能体现出面向对象的设计模式,所以将其单独封装BaseAction类中,此类通过重写Action类的execute()方法对用户身份进行验证。主要代码如下:public clas