还剩8页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
毕业论文﹙设计﹚题目职工医院信息化管理系统学生姓名范蕊学号1109064014所在院系数学与计算机科学学院专业班级信息与计算科学1101班指导教师刘丽华完成地点陕西理工学院2015年6月12日职工医院信息化管理系统范蕊(陕西理工学院数学与计算机科学学院信息与计算科学专业信计1101班陕西汉中723000)指导教师刘丽华[摘要]由于我国居民医疗制度的逐渐改革与发展,手工作业已经不能满足时代的要求,因此现代医院必须要实现全面的信息化管理,以便高效的对医院进行管理,从而实现人力、物力资源的合理分配,同时也能为病人群体提供更优质的服务职工医院信息化管理系统通过网络高效准确地对医院工作进行管理,使得医院信息管理工作达到规范化、制度化、科学化系统在设计方面采用B/S模式,同时使用JSP技术进行基本页面的设计与功能实现,后台数据库选用SQLServer2000数据库本系统主要功能包括管理员管理、普通用户管理和患者用户管理系统后台功能包括挂号管理、床位分配管理、患者病状管理、患者开药管理、患者检查管理、出院管理等;前台功能包括患者登录、患者费用查询等该系统可以极大地提高医院工作人员的工作效率,它具有检索迅速、查找方便、可靠性高、存储量大和成本低等优点[关键词]B/S模式;JSP技术;SQLServer;信息化管理TheHospitalInformationManagementSystemFanRuiGrade11Class1InformationandcomputingscienceMajorMathematicsandComputingScienceDept.ShaanxiUniversityofTechnologyHanzhong723000ShaanxiTutor:LiuLihuaAbstract Becauseofourresidentsmedicalsystemreformanddevelopmentmanualworkcannotmeettheagerequirementssomodernhospitalmustinordertorealizethecomprehensiveinformationmanagementtoimprovetheefficiencyofthehospitalmanagementsoastorealizetherationalallocationofhumanandmaterialresourcesofandprovidebetterqualityofserviceforpatientgroups.Thehospitalmanagementsystemcanmanagethehospitalworkeffectivelyandaccuratelywhichmakesthemanagementofhospitalinformationworkstandardizedinstitutionalizedandscientific.ThesystemadoptsB/SmodeandtakesJSPtechnologyasessentialtoolsforthebasicpagedesignandfunctionrealizationandbackgrounddatabaseisdesignedbySQLServer2000database.Thissystemmainlyincludesadministratormanagementordinaryuser’smanagementandpatientuser’smanagement.Theback-officefunctioncontainsregistrationmanagementdistributionofbedmanagementthemanagementofpatientswithsymptomspatientmanagementpatientexaminationmanagementanddischargemanagement.Theforegroundfunctioncontainspatientloginandpatientfeeinquiry.Thissystemcangreatlyimproveworkingefficiencyofhospitalstaff.Ithastheadvantageofrapidretrievalconvenientsearchhighreliabilitylargememorycapacitygoodsecuritylonglifeandlowcost.KeyWords B/Smode;JSPTechnology;SQLServer;Informationmanagement目录TOC\o1-3\h\z\u1系统开发概述
11.1系统开发背景
11.2系统开发目的12可行性分析及总体设计
22.1可行性分析
22.
1.1技术可行性
22.
1.2经济可行性
22.
1.3社会可行性
22.
1.4运行可行性
22.2总体设计原则
32.3系统开发环境与开发模式
32.
3.1系统开发工具
32.
3.2系统设计模式43系统分析
43.1业务流程分析
43.2数据流图
53.3数据字典74系统总体设计
94.1系统功能设计
94.2系统数据库设计
94.
2.1概念结构设计
94.
2.2逻辑结构设计
134.
2.3数据关系图
134.
2.4数据库表设计145系统实现
165.1普通用户模块
165.
1.1登录模块
165.
1.2挂号管理模块
165.
1.3床位分配管理模块
175.
1.4患者病症管理模块
175.
1.5患者开药管理模块
175.
1.6修改密码模块
175.
1.7患者检查管理模块
185.
1.8添加药品模块
185.2管理员模块
195.
2.1添加系统用户模块
195.
2.2添加普通用户模块
195.
2.3添加病房模块
195.3患者模块206系统实现
206.1普通用户界面
206.
1.1登录模块界面
206.
1.2挂号管理模块界面
216.
1.3床位分配管理模块界面
216.
1.4患者病症管理模块界面
226.
1.5患者开药管理模块
226.
1.6修改密码模块
236.
1.7患者检查管理模块
236.
1.8添加药品模块
246.2管理员模块
256.
2.1添加系统用户模块
256.
2.2添加普通用户模块
256.
2.3添加病房模块
266.3患者模块267软件测试
277.1测试实例的研究与选择
277.2测试环境与测试条件
287.3实例测试
287.
3.1管理员创建普通用户测试
287.
3.2挂号管理员创建挂号用户测试
297.4测试结果308设计总结30参考文献31致谢32附录331系统开发概述
1.1系统开发背景随着社会经济的飞速发展,人们的生活水平有了很大的改善,但是同时也给人们的生活带来了很大的负面影响,各种各样的疾病开始产生并严重地摧残着人们的身体健康,因此医院要保护人类身体健康的重担也越来越大,单靠以传统的手工进行作业,不仅使得工作变得繁琐,工作效率低而且也极容易出现错误,这在给医院造成一些不必要损失的同时,也给病人带来了许多负面的作用伴随着计算机应用的普及和计算机科学技术的快速发展,人们也开始越来越多地利用计算机去解决一些实际问题那些依据手工进行计算,工作量大、效率低、易出错的大量数据完全可以用计算机来代替处理,这大大地减轻了管理人员的工作量,同时又可以给病人提供完整详细的数据,使得病人对药品费用的来龙去脉有个清晰的了解职工医院信息化管理系统的建立使得医院的管理更加规范化、系统化,查询的手段更加便捷化同时,医院信息化管理系统也是实现职工医院信息化管理系统现代化和信息化的重要内容
[1]近年来,随着来医院就诊病人数量的逐渐增加,人工书写数据已经不能很好处理如此庞大的数据为了更好的适应信息时代的高效性的要求,利用计算机来实现职工医院信息化管理系统工作的系统的诞生将成为必然基于对上述的认识,收集相关资料和数据,查阅有关文献及技术参数,对实际需求等方面进行了调研,发现目前所采用的手工记录的方法进行管理存在以下几个方面的弊端对象范围广,数据存储不易;不易存档,成千上万的信息和堆积如山的单据对管理人员来说是一个负担,需要大量的文档资料鉴于以上种种原因,职工医院的管理急需一种软件来代替手工操作来管理数据资料计算机技术在现代管理中的应用,使计算机成为领导者和管理人员应用现代技术的重要工具计算机辅助医院管理活动,可以极大地增强管理者采集、处理信息的能力,从而有利于管理者及时决策计算机系统能根据管理过程的变化情况,将原始数据、资料等进行加工、保存,管理人员可以在解决具体问题需要信息资料时,随时进行检索查询,了解整个职工医院信息化管理系统的动态情况,进行动态管理,从而有效的处理职工医院的管理工作,实现医院管理的自动化,提高效率
1.2系统开发目的医院信息化管理系统是在今天医疗事业的迅猛发展的前提下,以前的手工录入或早期的管理应用软件已逐渐不能满足用户的要求,而在这些问题当中,落后的医药管理已严重地影响医院工作人员的工作效率,基于以上的原因,从而提出了医院信息化管理系统的设计目标计算机应用于医院的日常管理,为医院的现代化带来了从未有过的动力和机遇,为医疗卫生领域的发展提供了无限的潜力采用计算机管理信息系统已成为医院管理科学化和现代化的标志,给医院带来了明显的经济效益和社会效益
[2]在完成了针对医院管理系统前期调查,同时与多位医院使用者进行了全面深入地探讨和分析的基础上,明确地提出所要开发的软件应具有的功能、性能与界面,使系统分析人员及软件开发人员能清楚地了解用户的需求,进而完善了未来的医疗管理和服务工作通过信息数据高度共享,在强大的数据库的支持下,将医院的全面管理水平和服务质量提升到更高层次医院信息化管理系统结合医院管理工作的特点,充分利用局域网、广域网、大型分布式数据库等先进的计算机技术,运用系统的理论与方法将医院各组成部分的信息处理过程综合成有机整体,及时而有效地为医院日常管理和发展提供决策依据,使医院信息管理工作尽快达到规范化、制度化、科学化的要求,并实现医院信息技术全电子无纸化和胶片管理的最终目标职工医院信息化管理系统的开发目的是使职工医院的医院信息化管理系统模式从手工记录转变成信息管理,为病房管理人员提供方便条件对职工医院的实际情况进行调研之后,进行详细的需求分析,对现有的管理模式进行改进,开发出一套新型的管理系统,从中领悟系统开发的思想,掌握系统开发的流程和方法随着医院信息系统的不断完善,医院的管理将越来越依赖于信息化的管理所以系统开发将围绕职工医院病房工作的实际情况,使之能迅速适应职工医院的需要职工医院信息化管理系统的实施的现实意义减少管理病房的工作人员;管理人员可以随时浏览查看,而且更加直观;改变了以前工资手工记录的方式,电脑录入更加方便快捷;实现了医院信息化管理系统的计算机化2可行性分析及总体设计
2.1可行性分析可行性分析也称为可行性研究,是在调查的基础上,针对新系统的开发是否具备必要性和可能性,对新系统的开发从技术、经济、社会等方面进行分析和研究,以避免投资失误,保证新系统的开发成功
[2]可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决下面将分别从技术、经济、社会三个方面对职工医院信息化管理系统的建设进行分析和研究
2.
1.1技术可行性根据职工医院提出的系统功能、性能及实现系统的各种约束条件,根据新系统目标来衡量所需的技术是否具备,本系统是一个数据库管理和查询的系统,现有的技术已较为成熟,硬件、软件的性能要求、环境条件等各项条件良好,估计利用现有技术条件应完全可以达到该系统的功能目标系统采用人机交互方式,界面美观友好,操作简单易行,信息查询灵活、方便,数据存储安全可靠,对用户输入的数据,进行严格的数据检验,尽可能避免人为错误同时,考虑给予的开发期限也较为充裕,预计系统是可以在规定期限内完成开发的由以上分析可知,职工医院信息化管理系统的开发在技术上是可行的
2.
1.2经济可行性软件的开发和实施必须要有经济的支持,然而开发系统所消耗的实际费用和系统运行后所能为企业产生的经济效益一直是软件开发所面临的重要问题所以估算出新系统的开发费用和今后系统的运行、维护费用,显得尤为重要而系统运行后给企业带来的实际经济效益也应该预先估算,并与之前估算出的实际开销费用相比较,来衡量软件的总体经济可行性例如,系统运行后可以提供哪些以前无法及时提供的信息,用户查询和使用信息的方便程度提高多少、速度增加了多少,对于管理人员进行决策提供了处理设施,并且拥有支持本系统的应用平台因此无需再投入资金购买其他设施系统的开发基于多少帮助等等职工医院具有信息化的本人对程序开发的实践学习而来,医院无需资金投入,并且软件开发过程投入的成本不高,因此开发经费完全可以接受由以上分析可知,职工医院信息化管理系统在经济上是可行的
2.
1.3社会可行性本系统的社会可行性主要从法律因素、用户使用可行性两方面进行研究1法律因素本系统是根据职工医院信息化管理系统的实际工作情况开发研制的,是通过大量的调研得出的,系统的软件设计是在独立的环境下完成的,无可供抄袭的软件产品完全遵照国家的药品管理条例进行软件的开发与使用2用户使用可行性本系统对用户的要求,除了需要具备在MicrosoftWindows平台上使用个人电脑的知识外,并不需要特别的技术能力使用系统的管理员,需要具备对Tomcat服务器的使用能力,在投入使用前,无需对操作系统的人员进行培训这样既减少投入成本又简化了操作环节由以上分析可知,本系统具有社会可行性
2.
1.4运行可行性随着计算机技术的飞速发展,计算机在企业管理中应用的普及,利用计算机实现企业人事管理很大程度上已经成为了社会发展的趋势计算机管理有着无法比拟的优点检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等
[1]这些优点能够极大地提高人事管理的效率,也是企业的科学化、正规化管理、与世界接轨的重要条件与此同时对于大部分医院来说,利用计算机帮助医院来管理,可以避免很多不必要的损失提高管理的高效性,而且不仅给医院带来先进的管理思想及方法、促进建立现代药品管理模式而且是适应现代企业制度要求、推动医院管理走向科学化、规范化的必要条件因此,每一位投资者为了自身的经济效率和未来前景都会极力支持系统的开发和推广,在经济和物力上给予较大的帮助经过以上分析,该系统在运行方面是可行的
2.2总体设计原则一个方便用户使用的软件应该具备软件体积小,操作界面友好,基本功能稳定,运行速度较快,通过计算机技术开发出客户端与服务器端,以便方便快捷清晰的进行数据管理以及信息的采集本系统为了设计、实现和后期维护的方便,以及系统用户使用的便利,所以必须采取一定的设计原则其主要设计原则有
[3]简单性在实现系统的功能的同时,尽量让系统操作简单易懂,这对于一个系统来说是非常重要的针对性本系统设计是针对职工医院及病房的需求定向开发设计,所以具有专业突出和很强的针对性实用性要求本系统能够满足医院管理人员、病人的需要,因此具有良好的实用性一致性页面整体设计风格以及命名规则的一致性整体页面布局和用图用色风格及变量、类名和其他元素的命名规则保持一致功能一致性完成同样的功能应该尽量使用同样的元素元素风格一致性界面元素的美观风格、摆放位置在同一个界面和不同界面之间都应该是一致的变量命名规则的一致性变量应该用统一的规则进行命名,做到任意变量均能从上下文推断其义先进性本系统采用JSP技术、SQLServer2000等被广泛采用系统开发技术和数据库,因此本设计具有良好的先进性,具体表现在其具有良好的可扩展性,可开发性系统根据用户的实际需求,在不违反现有法律法规的前提下设计而成,是一个完全依据需求设计的一个完整的医院管理信息系统并且本系统再设计过程中充分考虑日后的维护以及升级问题,在设计中留有多个接口以便日后升级使用本系统页面清淡典雅是一个十分符合医院工作环境的系统,其操作简单易懂,上手容易,但设计严谨,完全符合国家对医院的管理条例
[4]
2.3系统开发环境与开发模式
2.
3.1系统开发工具MyEclipse本系统使用MyEclipse作为代码的开发工具MyEclipse企业级工作平台(MyEclipseEnterpriseWorkbench,简称MyEclipse)是对EclipseIDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布以及应用程序服务器的整合方面极大的提高工作效率它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能MyEclipse是一个十分优秀的用于开发JavaJ2EE的Eclipse插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持十分不错MyEclipse目前支持JavaServletAJAXJSPJSFStrutsSpringHibernateEJB3JDBC数据库链接工具等多项功能可以说MyEclipse几乎囊括了目前所有主流开源产品的专属eclipse开发工具Dreamweaver采用Dreamweaver作为界面设计工具Dreamweaver是唯一提供RoundtripHTML、视觉化编辑与原始码编辑同步的设计工具它包含HomeSite和BBEdit等主流文字编辑器帧frames和表格的制作速度快的令您无法想像进阶表格编辑功能使您简单的选择单格、行、栏或作未连续之选取甚至可以排序或格式化表格群组,Dreamweaver支援精准定位,利用可轻易转换成表格的图层以拖拉置放的方式进行版面配置所见即所得Dreamweaver成功整合动态式出版视觉编辑及电子商务功能,提供超强的支援能力给Third-party厂商,包含ASP,Apache,BroadVision,ColdFusion,iCAT,Tango与自行发展的应用软体当您正使用Dreamweaver在设计动态网页时,所见即所得的功能,让您不需要透过浏览器就能预览网页梦幻样版和XMLDreamweaver将内容与设计分开,应用于快速网页更新和团队合作网页编辑建立网页外观的样版,指定可编辑或不可编辑的部份,内容提供者可直接编辑以样式为主的内容却不会不小心改变既定之样式您也可以使用样版正确地输入或输出XML内容全方位的呈现利用Dreamweaver设计的网页,可以全方位的呈现在任何平台的热门浏览器上对于cascadingstylesheets的动态HTML支援和鼠标换图效果,声音和动画的DHTML效果资料库可在Netscape和Microsoft浏览器上执行使用不同浏览器检示功能,Dreamweaver可以告知您在不同浏览器上执行的成效如何当有新的浏览器上市时,只要从Dreamweaver的网站在下载它的描述档,便可得知详尽的成效报告MicrosoftSQLServer本系统使用MicrosoftSQLServer2000数据库作为后台数据库,SQLServer2000系统具有强大的网上功能,可以在互联网上发布数据库中的数据在SQLServer2000系统中,允许用户简单的使用一些向导和工具把数据库的数据发布到网络上,并且可以根据需要来调度修改已经发布的数据在大家所了解数据库系统中,MicrosoftSQLServer2000,经过三十多年的发展,已经成为最重要的数据处理技术,被广泛应用到多种项目的开发与设计中,SQLServer2014能为要求最高的数据库应用提供关键业务所需性能内存驻留技术,性能最高可提升30倍;增强安全性与扩展性,连续5年漏洞数量业界最少软件及硬件合作伙伴使用多样化的工作负载进行了全新的性能测试,证明了采用开创性内存计算技术的SQLServer2014可以为那些对数据库有极高要求的应用程序提供符合需求的数据平台因此决定采用此数据库系统来完成职工医院信息化管理系统的设计
2.
3.2系统设计模式目前,在大多数B/S(Browser/Server)结构的Web应用中,浏览器直接通过HTML或者JSP的形式与用户交互,响应用户的请求
[5]虽然很直观,但是大多数管理信息系统操作的数据量都是惊人的,随着代码的增多会使JSP页面臃肿不堪,Web服务器的负荷过重因此,在中间层上采用基于模型视图控制器MVC,Model-View-Controller的设计模式
[6]Model层用来实现业务逻辑,View层用来显示用户界面,Controller层主要负责View层和Model层之间的控制关系具体实现时,把Servlet用作应用程序的控制器,把JSP文档作为视图,JavaBeans被用来表示模型所有的请求都被发送给作为控制器的Servlet,它接受请求,并根据请求信息将它们分发给适当的JSP来响应
[7]同时,Servlet还根据JSP的需求生成JavaBeans的实例并输出给JSP环境JSP可以通过直接调用方法或使用UseBean的自定义标签得到JavaBeans中的数据这种设计模式很好地实现了数据层与表示层的分离,使开发工作更加容易和迅速
[14]3系统分析
3.1业务流程分析在进行业务流程分析时,需要按照原有信息流动过程,逐个地调查分析所有环节的处理业务、处理内容、处理顺序和对处理时间的要求,弄清各个环节需要的信息、信息来源、流经去向、处理方法、计算方法、提供信息的时间和信息形态(报告、报单、屏幕显示)等
[4]业务流程分析可以帮助开发者了解该业务处理过程,发现和处理系统调查工作中的错误和疏漏业务流程分析是通过业务流程图来进行,即用一些规定的符号及连线来表示某个具体业务处理过程
[5]具体业务流程如图
3.1所示图
3.1业务流程图
3.2数据流图数据流程是指数据在系统中产生、传输、加工处理、使用、存储的过程
[6]数据流程分析是把数据在现行系统内部的流动抽象的独立起来,舍去了具体组织机构、信息载体、处理工具、物质、材料等,单从数据流动过程来考查实际业务的数据处理模式数据流程与数据流程分析是今后建立数据库系统和设计功能模块处理过程的基础描述数据流程的工具是数据流程图以及其附带的数据字典、处理逻辑等图表其中数据流程图是描述系统逻辑模型的主要工具,它以少数几种符号综合地反映出信息在系统中的流动、存储和传递[8在业务流程分析的基础上,对数据流进行了分析,从数据流动过程考察了实际业务的数据处理模式该系统的数据流图分为顶层、一层、二层现行的顶层数据流图如图
3.2所示���病人�普通病人�PO管理员相关信息管理信息本系统相关信息相关信息普通用户信息病人信息图
3.2顶层数据流图具体分析第一层数据流图,该层数据流图如图
3.3所示图
3.3第一层数据流图(普通用户)图
3.4第一层数据流图(管理员)图
3.5第一层数据流图(病人)由于论文的篇幅限制不能一一列举数据流图,只给出了部分数据流图,其他数据流图的画法基本一致
3.3数据字典通过对系统数据流的分析,接下来用数据字典描述数据流图中一些主要的数据元素条目、数据流、处理过程、数据存储和外部实体
[9]
(1)数据元素数据元素表包括数据的名称,即系统用户编号、数据的长度、有关的数据结构、数据的总编号、数据编号以及数据类型具体的数据元素条目表如表
3.1所示表
3.1数据元素数据元素条目名称系统用户编号说明系统用户的编号长度50有关数据结构系统用户信息表总编号1-101编号101数据类型离散
(2)数据结构数据结构数据的名称,即系统用户信息表、数据说明,即创建系统用户信息记录的数据、数据结构,其中数据结构包括编号、用户名、密码、权限、总编号、编号、数量等数据结构条目如表
3.2所示表
3.2数据结构数据结构条目名称系统用户信息表总编号2-01说明创建系统用户信息记录的数据编号01结构编号有关数据流、数据存储用户名P1系统用户管理、D1系统用户信息密码权限数量每年约200份
(3)数据流数据流中包括名称、数据说明、数据流来源、数据流去向、已经、包含的数据结构、总编号、编号以及流通量数据流的具体条目如表
3.3所示表
3.3数据流数据流条目名称修改密码总编号3-10说明将密码信息存储到用户信息存储编号10数据流来源P1系统用户管理数据流去向D1系统用户信息存储流通量10份/周包含的数据结构系统用户信息
(4)数据存储数据存储表格对普通用户的信息进行存储,其中存储的结构包括编号、用户名、密码、权限、总编号、标号以及信息量具体数据存储条目如表
3.4所示表
3.4数据存储数据存储条目名称普通用户信息总编号4-01说明存储普通用户信息结构标号D2编号用户名密码权限有关数据流D2-P2信息量400份/月
(5)处理过程处理过程即对患者出院的过程进行管理,具体包括输入数据、输出数据、出院信息、总编号和编号具体的过程条目如表
3.5所示表
3.5处理过程处理过程条目名称出院管理总编号5-15说明管理出院信息编号P10输入P10出院管理输出D10出院信息表处理将P10出院管理后的记录存储到出院信息表中
(6)外部实体外部实体条目包括系统用户的说明、输入数据流、输出数据流、总编号、编号和个数具体外部实体条目如表
3.6所示表
3.6外部实体外部实体条目名称系统用户总编号6-01说明系统用户编号001输入数据流个数1个输出数据流由于论文篇幅的限制,不在此一一列举,其他所有的数据字典条目都是根据数据流图绘制的4系统总体设计
4.1系统功能设计系统设计是一个把软件需求转换成用软件系统表示的过程通过对目标系统的分析和研究,做出了对职工医院信息化管理系统的总体规划,这是全面开发系统的重要基础在对职工医院信息化管理系统全面分析调查的基础上,制定出职工医院信息化管理系统的总体规划
[9]从数据流图出发,对数据流图进行分析,得出的层次化的模块结构图职工医院信息化管理系统功能模块图如图
4.1所示��职工医院信息化管理系统图
4.1职工医院信息化管理系统功能模块图
4.2系统数据库设计数据库是本系统的核心和基础
[10]它设计的好坏直接影响着整个系统的质量
[10]数据是一切系统设计的基础,通俗地说,数据库设计就像高楼大厦的根基一样,如果设计的不合理、不完善,将在系统开发过程中,甚至到后期的系统维护、功能变更和功能扩充时,引起较多问题,严重时甚至要重新设计,重做大量已完成工作
4.
2.1概念结构设计从数据需求分析中得出系统的实体属性图
(1)药品实体属性图图
4.2药品实体属性图此图表明当病人顺利挂号、就诊后,其主治医生根据其病情所开的药单在取药时,系统在此过程中应该包含的子信息为药品名、药品编号、药品单价、药品数量以及必须记录的病人编号
(2)管理员实体属性图图
4.3管理员实体属性图此图表明在系统中的管理员身份应该具备相应属性,如上图中用户名、密码、管理员编号以及权限名是此系统设计的管理员应有的属性,有了此属性管理员才能进行相应的职能管理
(3)普通用户实体属性图图
4.3普通用户实体属性图此图表明此用户实体图是针对一般医院工作人员进入系统进行职能工作的解释图表,对于一般医院工作人员,他进入系统之后可管理的有上图所示的子项目用户编号、用户名、密码等,他们运用这些属性来对所管的项目进行工作
(4)药品库存实体属性图图
4.4药品库存实体属性图此图表明患者进行诊断后根据医生开的药去药品管理员处取药,药品的属性包括药品规格、名称、药品编号、生产厂家、价格以及该药品的库存量
(5)检查实体属性图图
4.5检查实体属性图患者成功挂号后,经医生诊断后进行相应的身体检查,该检查所包含的信息如上图所示检查项目、病人编号、检查编号、价格和检查时间
(6)病人实体属性图图
4.6病人实体属性图成功挂号的患者都具有自己的属性,此图表明了病人具体属性,包括病人编号、真实姓名、密码、地址、性别、年龄、电话
(7)病房实体属性图图
4.7病房实体属性图成功挂号的患者进行诊断后根病情部分患者需要住院,需要住院的患者会被安排到相应的病房,此图表明了病房的具体属性,包括病房编号、床号、状态E-R模型的组成元素有实体、属性、联系E-R模型用E-R图表示实体是用户工环境中所涉及的事务,属性是对实体特征的描述
[11]1模型中的实体相当于实体集、一个表,而不是单个实体或表中的一行实体用矩形框表示,实体名称标注在矩形框内用菱形表示实体间的联系,菱形框内写上联系名,用无向边把菱形分别与有关实体相连接,在无向边旁标上联系的类型
[12]2属性是实体的性质用椭圆框表示,与实体之间用一条线相连表的主码是关键属性,关键属性项加下划线3各子系统模块中主键相同的字段之间存在着相互关联的关系4在程序中实现对他们的完整性和一致性控制从数据需求分析中得出系统的实体属性图,遵循三范式原则,对实体之间的依赖关系进行了整合,得出系统E-R图,如图
4.9所示图
4.8系统E-R图说明图中用矩形表示实体实体之间的关系用菱形表示,用无向边把菱形与有关实体连接,在边上标明联系的类型实体的属性用椭圆表示,并用无向边把实体与属性联系起来
4.
2.2逻辑结构设计对数据库中实现具体表的详细设计即各数据库表的字段名、类型、长度等信息进行了详细的描述,根据系统E-R图,系统数据逻辑结构设计如下
(1)管理员管理员编号,用户名,密码,权限名
(2)药品库存药品编号,药品名称,规格,生产厂家,价格,库存
(3)检查检查编号,病人编号,检查项目,价格,时间
(4)病房病房编号,病床号,状态
(5)病人挂号编号,真实姓名,密码,性别,年龄,电话,地址)
(6)药品药品编号,数量,单价,总价)
(7)普通用户用户编号,用户名,密码,姓名,年龄,性别,地址,电话,所属科室)
4.
2.3数据关系图管理员拥有管理员编号、用户名、密码和权限名等属性,通过他的权限对挂号员、药品管理员、医生、患者等普通用户进行管理普通用户中的护士等通过自己的用户名和密码等进行自己的只能管理药品管理员等可以通过自己的权限对药品的具体属性进行管理,比如药品编号、药品数量、药品单价等数据库中各数据之间的具体关系图如图
4.9所示图
4.9数据关系图
4.
2.4数据库表设计
(1)管理员信息表主要用于存贮管理员信息,管理员信息包括管理员编号,用户名,用户密码,权限名表结构如表
4.1所示表
4.1管理员信息表字段名类型长度说明IdInt4管理员编号(主键)Namevarchar30用户名Pwdvarchar20用户密码Statusvarchar20权限名
(2)药品库存信息表主要用于存放药品库存的基本信息,药品库存的基本信息包括药品编号,药品名称,药品规格,生产厂家,价格和库存表结构如表
4.2所示表
4.2药品库存信息表字段名类型长度说明IdInt4药品编号(主键)NameVarchar50药品名称NormVarchar50规格FactoryVarchar20生产厂家PriceFloat8价格StockInt4库存
(3)检查信息表检查信息表主要用来存放病房检查项目的基本信息,病房检查项目的基本信息包括检查编号,病人编号,检查项目,价格和时间表结构如表
4.3所示表
4.3检查信息表字段名类型长度说明IdInt4检查编号(主键)pat_idInt4病人编号(外键)ItemVarchar20检查项目PriceFloat8价格TimeDatetime8时间
(4)病房信息表病房信息表主要用来存放病房的基本信息,病房的基本信息包括病房编号,病床号和状态表结构如表
4.4所示表
4.4病房信息表字段名数据类型长度功能描述IdInt4病房编号(主键)Bed-idInt4病床号Statusvarchar20状态
(5)病人信息表病人信息表主要用来存放病人的基本信息病人的基本信息包括挂号编号,真实姓名,密码,年龄,性别,电话,地址表结构如表
4.5所示表
4.5病人信息表字段名数据类型长度功能描述IdInt4挂号编号(主键)Namevarchar20真实姓名Pwdvarchar20密码AgeInt4年龄Sexvarchar2性别Telvarchar20电话Addrvarchar50地址
(6)药品信息表药品信息表主要用于存放药品的信息药品的信息包括药品编号,病人编号,数量,单价,总价表结构如表
4.6所示表
4.6药品信息表字段名数据类型长度功能描述IdInt4药品编号(主键)pac_idInt4病人编号(外键)NumInt4数量PriceFloat8单价CountFloat8总价
(7)普通用户信息表普通用户信息表用于存放普通用户的基本信息普通用户的基本信息包括用户编号,用户名,密码姓名,年龄,性别,地址,电话,所属科室结构如表
4.7所示表
4.7普通用户信息表字段名数据类型长度功能描述IdInt4用户编号(主键)NameVarchar20用户名PwdVarchar20密码TruenameVarchar8姓名AgeInt4年龄SexVarchar2性别AddrVarchar100地址PhoneVarchar20电话StatusVarchar50所属科室5系统实现
5.1普通用户模块
5.
1.1登录模块不同身份的用户通过登录用户名和密码后台进行审核,如输入的用户名和密码正确则进入相应的管理模块执行相应的管理职能登录管理主要代码如下Stringname=request.getParametername;Stringpwd=request.getParameterpwd;Stringstatus=request.getParameterstatus;Stringtable=;Stringstr=name;ifstatus.equals0{table=admin;}elseifstatus.equals1{table=users;}elseifstatus.equals2{table=patient;str=id;}Stringsql=select*from+table+where+str+=+name+andpwd=+pwd+;Stringargs[]={idnamepwdstatus};Stringargs1[]={idpwdstatus};SelectBeansb=newSelectBean;ArrayListal=null;ifstatus.equals2{al=sb.selectRowargs1sql;al.add2111111;}else{al=sb.selectRowargssql;}ifal==null||al.size==0{responseText=1;}
5.
1.2挂号管理模块不同的普通用户分别具有不同的管理职责,挂号处通过登录用户名和密码可以进入挂号处管理模块,双击菜单中的挂号管理按钮后可对前来看病的病人进行挂号管理Stringargs[]={truenamesexagebirthdaynationidcardphoneaddress};Stringrow=;Stringval=;forinti=0;iargs.length;i++{ifi==args.length-1{row+=args[i];val+=+request.getParameterargs[i]+;}else{row+=args[i]+;val+=+request.getParameterargs[i]+;}}Stringsql=insertintopatient+row+values+val+;
5.
1.3床位分配管理模块普通用户中的护士通过输入用户名和密码登录系统后,双击菜单中的床位分配管理按钮进入床位分配管理模块对已经挂号的并需要住院的病人进行床位分配intresponseText=0;InsertUpdateDelBeanib=newInsertUpdateDelBean;Stringsickbed=request.getParametersickbed;Stringpatient=request.getParameterpatient;Stringsql=updatesickbedsetstates=1whereid=+sickbed;responseText=ib.insertANDupdateANDdelsql;sql=updatepatientsetsickbed=+sickbed+whereid=+patient;responseText=ib.insertANDupdateANDdelsql;
5.
1.4患者病症管理模块诊治医生对成功挂号的患者进行诊断,之后患者会在医生建议下进行相关的一些检查,此模块即对每位患者针对自身所进行的一些检查进行管理Stringargs[]={patientsymptom};Stringrow=;Stringval=;forinti=0;iargs.length;i++{ifi==args.length-1{row+=args[i];val+=+request.getParameterargs[i]+;}else{row+=args[i]+;val+=+request.getParameterargs[i]+;}}Stringsql=insertintosymptom+row+values+val+;
5.
1.5患者开药管理模块普通用户的医生身份通过输入用户名和密码登录系统,进入患者开药管理界面,可以浏览患者的使用药品的信息并管理患者开药信息intresponseText=0;InsertUpdateDelBeanib=newInsertUpdateDelBean;Stringpatient=request.getParameterpatient;Stringdrug=request.getParameterdrug;Stringsums=request.getParametersums;Stringsql=updatedrugsetstock=stock-+sums+whereid=+drug;responseText=ib.insertANDupdateANDdelsql;ifresponseText!=-1{AllBeanab=newAllBean;ArrayListdrugAll=ab.getDrugdrug;sql=insertintoprescribepatientdrugnamesumspricetotalvalues+patient++drug++drugAll.get1++sums++drugAll.get8++Integer.parseIntsums*Integer.parseIntdrugAll.get
8.toString+;
5.
1.6修改密码模块管理员、普通用户通过登录用户名和密码登录本系统后进入相应的管理模块,为了各层信息能得到保密,管理员、普通用户均可对自己的密码进行修改修改密码的主要代码如下response.setContentTypetext/html;charset=gb2312;request.setCharacterEncodinggb2312;Stringnewpwd=request.getParameternewpwd;HttpSessionsession=request.getSession;ArrayListadminlogin=ArrayListsession.getAttributeadminlogin;Stringtype=request.getParametertype;Stringsql=update+type+setpwd=+newpwd+whereid=+adminlogin.get0;InsertUpdateDelBeanib=newInsertUpdateDelBean;intresponseText=ib.insertANDupdateANDdelsql;PrintWriterout=response.getWriter;
5.
1.7患者检查管理模块普通用户医生通过输入用户名和密码登录本系统后双击患者检查管理按钮进入患者检查管理界面,可以对患者检查的信息进行管理患者检查管理模块实现的主要代码如下InsertUpdateDelBeanib=newInsertUpdateDelBean;Stringargs[]={patientitemprice};Stringrow=;Stringval=;forinti=0;iargs.length;i++{ifi==args.length-1{row+=args[i];val+=+request.getParameterargs[i]+;}else{row+=args[i]+;val+=+request.getParameterargs[i]+;}}Stringsql=insertintoinspect+row+values+val+;
5.
1.8添加药品模块普通用户中的药品管理员通过输入用户名和密码登录本系统双击菜单中的药品管理按钮进入添加药品模块,可以添加药品信息,对患者使用的药品进行管理添加药品的主要代码如下Stringrow=;Stringval=;forinti=0;iargs.length;i++{ifi==args.length-1{row+=args[i];val+=+request.getParameterargs[i]+;}else{row+=args[i]+;val+=+request.getParameterargs[i]+;}}Stringsql=insertintodrug+row+values+val+;responseText=ib.insertANDupdateANDdelsql;}iftype!=nulltype.equalsupdate{Stringid=request.getParameterid;Stringargs[]=namenormsapprovalfactoryingredienttreatdosageprice};Stringrow=;forinti=0;iargs.length;i++{ifi==args.length-1{row+=args[i]+=+request.getParameterargs[i]+;}else{row+=args[i]+=+request.getParameterargs[i]+;}
5.2管理员模块
5.
2.1添加系统用户模块后台管理员通过输入用户名和密码登录后双击系统用户管理可以添加新的管理员用户,双击普通用户管理按钮可以添加新的普通用户,双击患者用户管理添加新的患者用户,对所有的用户信息进行管理添加系统用户的主要代码如下Stringargs[]={patientsymptom};Stringrow=;Stringval=;forinti=0;iargs.length;i++{ifi==args.length-1{row+=args[i];val+=+request.getParameterargs[i]+;}else{row+=args[i]+;val+=+request.getParameterargs[i]+;}}Stringsql=insertintosymptom+row+values+val+;
5.
2.2添加普通用户模块管理员通过输入用户名和密码登录后进入管理员管理界面,双击菜单中的普通用户管理按钮可以添加新的普通用户,对所有的普通用户信息进行管理添加普通用户模块的主要代码如下ifadminlogin!=nulladminlogin.size!=0{closed=true;users=array.getUsers;ifadminlogin.get
3.equals管理员{type=admin;}else{type=users;}}Stringkeywords=request.getParameterkeywords;Validatev=newValidate;ifkeywords!=null!keywords.equals{users=array.getUsersSearchv.getUnicodekeywords;}
5.
2.3添加病房模块管理员通过输入用户名和密码登录本系统后双击菜单中的病房病床管理按钮可以查看病房的病床使用情况并添加新的病房床位使用信息添加病房模块实现的主要代码如下Stringtype=request.getParametertype;iftype!=nulltype.equalsward{Stringargs[]={numberofficesgradeprice};Stringrow=;Stringval=;forinti=0;iargs.length;i++{ifi==args.length-1{row+=args[i];val+=+request.getParameterargs[i]+;}else{row+=args[i]+;val+=+request.getParameterargs[i]+;}}Stringsql=insertintoward+row+values+val+;
5.3患者模块患者凭借挂号单通过登录用户名和密码登录本系统后双击菜单中的费用查询按钮,可以查看患者从住院以来的费用使用情况患者成功查看费用使用情况的主要代码如下tringname=request.getParametername;Stringpwd=request.getParameterpwd;Stringstatus=request.getParameterstatus;Stringtable=;Stringstr=name;ifstatus.equals0{table=admin;}elseifstatus.equals1{table=users;}elseifstatus.equals2{table=patient;str=id;}Stringsql=select*from+table+where+str+=+name+andpwd=+pwd+;Stringargs[]={idnamepwdstatus};Stringargs1[]={idpwdstatus};SelectBeansb=newSelectBean6系统实现
6.1普通用户界面
6.
1.1登录模块界面此模块主要功能是用于登录本系统,不同权限的用户登录本系统会进入不同的管理模块界面,因为在后台对该用户进行的判断,首先将从前台页面提交的用户名和密码进行接受,之后在后台进行处理,按照用户名在数据库中进行查询如果查到该用户则将该用户的权限和密码全都取出来分别赋给两个字符串变量,判断从数据库中读出的密码与登录时输入的密码是否配比上,若两个密码相同则根据权限的值进入相应的界面,否则输出密码错误若用户未被管理员分配好权限那么也是无法登录本系统的用户成功登录的界面如
6.1所示图
6.1登录界面
6.
1.2挂号管理模块界面不同的普通用户分别具有不同的职责,挂号处通过登录用户名和密码可以进入挂号处管理模块界面,双击菜单中的挂号管理按钮后可对前来看病的病人进行挂号管理通过输入患者姓名、选择患者性别、输入患者年龄,在出生日期栏选择相应的年份、月份、日期、输入患者民族、患者的身份证号、联系电话和家庭地址后点击挂号按钮即对患者进行成功挂号挂号界面如图
6.2所示图
6.2挂号界面
6.
1.3床位分配管理模块界面普通用户中的护士通过输入用户名和密码登录系统后,双击菜单中的床位分配管理按钮进入床位分配管理界面,床位分配管理员通过选择已经挂号患者的挂号单编号,点击分配按钮即可对已经挂号的并需要住院的病人进行床位分配床位分配界面如图
6.3所示图
6.3床位分配界面
6.
1.4患者病症管理模块界面普通用户中的医生输入用户名和密码登录系统后,进入患者病症管理界面,并对患者病症信息进行管理便于病人及病人家属对病人病情的了解,可以及时跟进患者的病况,通过点击添加新病状按钮进入添加患者新病状界面,通过选择患者姓名和填写有效期后点击添加即可成功添加某患者的新病状添加患者新病症的界面如图
6.4所示图
6.4患者病症管理界面
6.
1.5患者开药管理模块普通用户的医生身份通过输入用户名和密码登录系统,进入管理界面,可以浏览患者的使用药品的信息并管理患者开药信息,患者开药管理员通过点击患者开药按钮进入患者开药界面,通过输入患者姓名,所开药品名称、开药数量再点击添加按钮成功给患者进行开药患者开药的界面如图
6.5所示图
6.5患者开药管理界面
6.
1.6修改密码模块管理员、普通用户通过登录用户名和密码登录本系统即可进入各自身份的不同管理界面,但是为了保证各信息的安全,管理员、普通用户和患者需要对密码进行修改,进入管理界面后点击修改密码按钮即可进入密码修改界面,用户通过输入新密码并重复新密码后点击提交按钮便可成功修改自己的密码用户修改密码的界面如图
6.6所示图
6.6修改密码界面
6.
1.7患者检查管理模块普通用户医生通过输入用户名和密码登录本系统后双击患者检查管理按钮进入患者检查管理界面,可以对患者检查的信息进行管理,医生可通过输入患者姓名、患者所要进行的检查项目名称以及此项检查需要的费用额,再点击添加按钮即成功添加了患者的检查信息添加患者检查的界面如图
6.7所示图
6.7患者检查管理界面
6.
1.8添加药品模块普通用户中的药品管理员通过输入用户名和密码登录本系统后双击菜单中的药品管理按钮进入添加药品界面,药品添加管理员通过添加新药品的名称、规格、批准文号、生产厂家、药品主要成分、患者适应症状、药品用法用量以及药品的售价等,填写完再点击添加按钮即药品成功添加,从而药品添加管理员可以对患者使用的药品进行管理成功添加药品的界面如图
6.8所示图
6.8添加药品界面
6.2管理员模块
6.
2.1添加系统用户模块后台管理员通过输入用户名和密码登录后双击系统用户管理可以添加新的管理员用户,双击普通用户管理按钮可以添加新的普通用户,双击患者用户管理添加新的患者用户,通过填写新的用户名、密码以及重置密码进行新的系统用户的添加,再点击提交按钮即可添加新的系统用户,进而对所有的用户信息进行管理添加新的系统用户的界面如图
6.9所示图
6.9添加系统用户界面
6.
2.2添加普通用户模块管理员通过输入用户名和密码登录后进入管理员管理界面,双击菜单中的普通用户管理按钮可以添加新的普通用户,通过输入新的普通用户的用户名、密码、重复密码、真实姓名,选择性别、出生日期、填写省份证号码、联系电话、联系地址、邮政编码、电子邮箱以及从给出的五个身份中选出新添加普通用户身份,再点击添加按钮即可添加一个新的普通用户,从而对所有的普通用户信息进行管理添加普通用户界面如图
6.10所示图
6.10添加普通用户界面
6.
2.3添加病房模块管理员通过输入用户名和密码登录本系统后双击菜单中的病房病床管理按钮可以查看病房的病床使用情况,点击添加病房按钮,通过输入病房编号、所属科室,对病房档次进行选择以及输入病房的价格,之后再点击添加按钮即可添加一个新的病床,添加病房的界面如图
6.11所示图
6.11添加病房界面
6.3患者模块患者凭借挂号单通过登录用户名和密码登录本系统后双击菜单中的费用查询按钮,可以查看患者从住院以来的费用使用情况,包括患者使用病房的档次、价格、入院日期、出院日期、住院天数,以及患者在住院期间使用的药品名称、价格、开药的数量、开药的日期、开药的费用、患者检查的项目、价格、检查的日期以及患者的费用总合计,从而患者可以清楚了解到自己住院以来的具体情况,患者所能查看的信息界面如图
6.12所示图
6.12费用查询界面7软件测试经过前面对软件的需求分析、设计和编码等阶段的开发后,得到了源程序,开始进入到软件测试阶段然而,在测试之前的各阶段中都可能在软件产品中遗留下许多错误和缺陷,如果不及时找出这些错误和缺陷,并将其改正,这个软件产品就不能正常使用,甚至会导致巨大的损失目前,程序的正确性证明尚未得到根本的解决,因此软件测试仍是发现软件中错误和缺陷的主要手段测试是一项很艰苦的工作,其工作量约占软件开发总工作量的40%以上,特别对一些关系到人的生命安全的软件
7.1测试实例的研究与选择程序测试的主要方法分为两大类,白盒测试和黑盒测试白盒测试一种是以程序的内部逻辑结构为依据而设计测试用例的方法,因而又称结构测试或玻璃盒测试,将软件看成一个透明的白盒子,按照程序的内部结构和处理逻辑来选定测试用例,对软件的逻辑路径及过程进行测试,检查它与设计是否相符
[15]白盒测试就是要选取足够的测试用例,对源代码实行比较充分的覆盖,以便尽可能多地发现程序中的错误主要有两种方法一种称为逻辑覆盖法,另一种称为路径覆盖法黑盒测试也称功能测试,数据驱动测试等,它将待测对象堪称是一个黑盒子,在完全不考虑程序的内部结构和特性的情况下,只依据规格说明书检查程序的功能是否能正常使用黑盒测试主要是根据输入条件和输出条件的确定测试数据,来检查程序是否能产生正确的输出进行黑盒测试主要有下面几种方法等价分类法、边界值分析法、猜错法、因果图法
[16]本系统的测试综合了白盒测试、黑盒测试两种方法,但主要使用的是黑盒测试方法在测试当中遵循了“尽早地和不断进行测试”,“保证测试用例的完整性和有效性”原则通过测试达到以下测试目的
(1)功能检查检查功能是否争取,是否遗漏或实现不了应该实现的功能等
(2)接口检查检查能否正确地接受信息或输出信息
(3)数据检查检查数据结构或外部信息是否有(如数据文件)访问错误
(4)性能检查检查性能需求能否得到满足
(5)初始化、终止检查检查是否能进行正确地初始化或终止
7.2测试环境与测试条件处理器InterPentium166MX或更高内存1G硬盘250G操作系统WindowsX-P数据库SQLServer2000Web服务器Tomcat
5.
07.3实例测试
7.
3.1管理员创建普通用户测试测试方法期望结果测试结果使用有效的管理员身份登录医院信息化管理系统,进入后台单击菜单中的普通用户管理,正常显示普通用户列表,点击添加普通用户后显示添加普通用户资料填写所需资料点击添加,显示添加成功提示框,点击确定后返回普通用户列表,注销登录返回,输入刚才创建的普通用户登录密码成功显示新的普通用户登录成功,新增用户可通过输入用户名和密码进入管理界面测试结果与期望结果完全相同,测试成功
(1)若测试结果与期望结果一致,则表明管理员已经成功创建了一个普通用户,其中管理员成功登录界面如图
7.1图
7.1管理员登录界面
(2)管理员重新创建普通用户后,普通用户通过输入用户名和密码进行登录,成功登录界面如图
7.2所示图
7.2普通用户登录界面
7.
3.2挂号管理员创建挂号用户测试测试方法期望结果测试结果使用有效的挂号身份登陆医院信息化管理系统,单击菜单中的挂号管理进入挂号管理界面,显示已有的挂号名单,单击添加出现添加新患者的填写信息表,填写结束后点击挂号出现挂号成功提示,注销登录返回,输入刚才创建的挂号用户和密码患者可通过输入用户名(挂号编号)和密码进入患者管理界面,能查看患者相关收费信息测试结果与期望结果完全相同,测试成功
(1)若测试结果与期望结果一致,则表明挂号管理员已经成功对患者进行挂号,挂号管理员成功创建新的患者挂号界面如图
7.3所示图
7.3挂号界面
(2)当挂号管理员对患者成功挂号后,患者可通过输入自己的挂号编号和密码进入患者用户登录,新的挂号患者成功登录的界面如图
7.4所示图
7.4患者登录界面
7.4测试结果通过对系统的全面测试,所有测试条目都已经通过,实现了基本要求,系统可以正常运行8设计总结计算机技术的飞速发展带动了很多行业的发展,计算机带给我们最直观的价值就是减少了人力物力的投资,提高了工作质量和效率,从而提高了整个社会的生产力目前各大医院充分利用计算机资源和网络资源来提高自身的管理水平,而有关医院管理中的医院信息化管理系统工作是否要实现信息化、自动化也成为医院管理工作中争论的热点问题本文在分析职工医院信息化管理系统流程的基础上,用JSP和SQL2000数据库设计并完成职工医院信息化管理系统通过系统调试结果显示,本系统基本完成了功能需求在整个设计过程中,采用瀑布模型和结构化的设计方法本系统界面美观友好,操作方便,做出了自己的特色但由于时间仓促加上缺乏系统开发经验,系统在设计过程中不可避免地遇到了各种各样的问题,如1有些数据输入时没有及时的进行数据格式校验,不能保证数据绝对正确性2由于时间关系,系统功能实现不够完善,使用可能存在一些不方便本系统在实际使用过程中有可能出现一些问题,通过对系统的不断优化和完善,能够调试出真正符合职工医院实际情况的医院信息化管理系统,并整合所有相关管理信息系统,形成统
一、规范、科学、合理的职工医院信息化管理系统,提高管理水平职工医院信息化管理系统是典型的信息管理系统,其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面经过各方面的准备和分析,我使用了Myeclipse作为本软件的开发工具,辅以SQLServer2000数据库工具,利用其提供的各种面向对象的开发工具,对系统进行总体的设计分析选定了使用的工具以后开始对初始原型系统进行可行性分析其中分别从经济、技术及运行角度进行了比较具体的分析然后进行本系统的需求分析明确具体的工作是什么,并设计出具体的模块及实现方法再次就是对本系统的业务流程的分析和数据流程分析,为后续代码的编写奠定重要的基础当所有分析趋于完善的时候对程序进行了最终的代码编排最后通过对本软件的测试和不断改进、修正后,本软件的功能已经较为完整,基本实现了预计的功能通过此次毕业设计的锻炼,使我的专业知识得到了应用,并取得了很大的进步,通过软件工程的总体流程的设计,培养了我对软件设计的总体思路设计的能力当然在开发过程中还是有很多不足的地方,希望可以在今后的实际工作中进一步完善参考文献
[1]董保国温业兵.计算机在医院药品管理中的应用华南国防医学杂志[J]20102:102-
103.
[2]李敏珍.医院药品管理浅谈.安徽医药[J]20104:112-119
[3]聂存玲.医院药品管理存在的问题及对策[J].中国农村卫生事业管理2010464:47-52
[4]刘永勤.成人医院教学档案开发利用的现实意义[J].浙江档案20083:69-73
[5]薛鹤娟.基于WEB的大学选课系统分析[J].希望月报200711:156-162
[6]邱旭东刘文浩.基于JSP的MVC开发模式研究及应用[J].中国科学信息技术20101:12-
13.
[7]刘晓华.JSP应用开发详解[M].北京:电子工业出版社.
2009.
[8]万峰科技.JSP网站开发四酷全书[M].北京:电子工业出版社.
2010.
9.
[9]邱旭东刘文浩.基于JSP的MVC开发模式研究及应用[J].中国科学信息技术2010:12-
13.
[10]滕佳东.管理信息系统[M].沈阳:东北财经大学出版社20112:120-
128.
[11]甘仞初颜志军龙虹.信息系统分析与设计[M].北京:高等教育出版社
2009.
[12]王晓敏等.信息系统分析与设计[M].北京:清华大学出版社
2010.
[13]王璞.网页制作三剑客[M].北京:清华大学出版社.
2009.
[14]孙鑫.JavaWeb开发详解[M].北京:电子工业出版社
2007.
[15]ArtTaylor.JDBCDatabaseProgramingwithJ2EE[M].北京:电子工业出版社
20114.
[16]JimBudzynski.E-business:Modelforsuccessorfailure.AgriMarketing20103:380-384
[17]DannS.Moderninventoryanalysistechniques.AmJHealth-SystemPharmacists.20102:351-
355.
[18]荆丽萍于永生孙晓红.排序分析法在医院药品库存管理中的应用.药学实践杂志[J]20065:270-
274.
[19]张海藩.软件工程导论(第五版)学习辅导[M].北京:清华大学出版社
20099.致谢大学生活在这个时候即将划上一个句号但是对于我的人生道路来说,这仅仅是一个逗号,我将面对的是又一次征程的开始回忆过去,许许多多的事情浮现在脑海刚上大学时欢乐心情和兴奋的场景还历历在目一切都是那么新鲜,那么富有吸引力有快乐也有艰辛,有收获也有失落衷心感谢信息学院所有支持帮助过我的老师,谢谢你们多年来的关心和爱护同窗的友情同样难忘,你们与我共同走过了人生中不平凡的道路,给我留下了值得珍藏的美好记忆 最后,我要特别感谢指导教师刘丽华老师本论文是在她的悉心指导和热情帮助下完成的,老师认真负责的工作态度,严谨的治学精神和精深的理论水平都使我受益匪浅她无论在理论上还是在实践中,都给予我很大的帮助,使我专业技能的应用水平得到很大提高,这对于我以后的工作和学习都有益处值此论文完成之际,特别向指导老师表示衷心的感谢和崇高的敬意,谢谢她们细心而又耐心地辅导,使得我得以顺利的完成毕业设计开发工作,同时也要感谢其他帮助过我的老师和同学,他们在我成长过程中给予了我很大的帮助,在此一并表示感谢由于本人水平有限,加上时间紧促,本文一定有不少缺点和不足,恳请各位老师给予帮助和指正再次,要感谢身边的每一位同学,感谢大家帮助我解决了许多技术上和设计思想上的问题,帮助我提供解决问题的思路,在每一次和同学探讨后我的收获都很大,在这里再一次感谢他们,并希望每一位同学都能找到一份理想的工作附录
(1)管理员用户登录实现源代码packageutil;importjava.io.UnsupportedEncodingException;importjava.text.SimpleDateFormat;importjava.util.Date;publicclassValidate{*是否为数字和英文验证*publicintgetIntAndCharStringstr{charc;inti;fori=0;istr.length;i++{c=str.charAti;if!c=0c=9||c=ac=z||c=Ac=Z{break;}}//判断字符是否在某个区间ifistr.length{return-1;}else{return0;}}publicintgetIntStringstr{charc;inti;fori=0;istr.length;i++{c=str.charAti;if!c=0c=9{break;}}//判断字符是否在某个区间ifistr.length{return-1;}else{return0;}}publicbooleangetLawlessCharStringstr{booleanflag=false;charc;forinti=0;istr.length;i++{c=str.charAti;switchc{case:flag=true;break;case:flag=true;break;case:flag=true;break;case:flag=true;break;case:flag=true;break;}}returnflag;}publicStringhtmlspecialcharsStringstr{str=str.replaceAllamp;;str=str.replaceAlllt;;str=str.replaceAllgt;;str=str.replaceAll\quot;;returnstr;}publicStringgetUnicodeStringstr{ifstr!=null{try{returnnewStringstr.getBytesiso8859_1gb2312;}catchUnsupportedEncodingExceptione{//TODO自动生成catch块e.printStackTrace;returnstr;}}else{returnnull;}}publicStringgetGb2312Stringstr{ifstr!=null{try{returnnewStringstr.getBytesgb2312iso8859_1;}catchUnsupportedEncodingExceptione{//TODO自动生成catch块e.printStackTrace;returnstr;}}else{eturnnull;}}publicStringgetSystemDate{SimpleDateFormatdf=newSimpleDateFormatyyyy-MM-ddHH:mm:ss;Datedate=newDate;returndf.formatdate;}publicfloatgetRroundfloatfintprecision{intn=1;forinti=1;i=precision;i++{n*=10;}inttem=intf*n+
0.5;floatff=floattem/n;returnff;}}packageutil;importjava.sql.*;publicclassDBConn{static{try{Class.forNamecom.microsoft.jdbc.sqlserver.SQLServerDriver;}catchExceptionex{ex.printStackTrace;}}publicstaticConnectiongetConn{try{Connectionconn=DriverManager.getConnectionjdbc:microsoft:sqlserver://localhost:1433;databasename=db_yymzsasa;returnconn;}catchExceptionex{ex.printStackTrace;returnnull;}}publicstaticvoidcloseConnectionconnStatementstResultSetrs{ifrs!=null{try{rs.close;}catchSQLExceptionex{}}ifst!=null{try{st.close;}catchExceptionex{}}ifconn!=null{try{conn.close;}catchExceptionex{}}}}
(2)普通用户登录实现源代码packageservlet;importjava.io.IOException;importjava.io.PrintWriter;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importbean.InsertUpdateDelBean;publicclassWardSickbedServletextendsHttpServlet{/***Constructoroftheobject.*/publicWardSickbedServlet{super;}/***Destructionoftheservlet.br*/publicvoiddestroy{super.destroy;//Justputsdestroystringinlog//Putyourcodehere}/***ThedoGetmethodoftheservlet.br**Thismethodiscalledwhenaformhasitstagvaluemethodequalstoget.*@paramrequesttherequestsendbytheclienttotheserver*@paramresponsetheresponsesendbytheservertotheclient*@throwsServletExceptionifanerroroccurred*@throwsIOExceptionifanerroroccurred*/publicvoiddoGetHttpServletRequestrequestHttpServletResponseresponsethrowsServletExceptionIOException{doPostrequestresponse;}/***ThedoPostmethodoftheservlet.br**Thismethodiscalledwhenaformhasitstagvaluemethodequalstopost.*@paramrequesttherequestsendbytheclienttotheserver*@paramresponsetheresponsesendbytheservertotheclient*@throwsServletExceptionifanerroroccurred*@throwsIOExceptionifanerroroccurred*/publicvoiddoPostHttpServletRequestrequestHttpServletResponseresponsethrowsServletExceptionIOException{response.setContentTypetext/html;charset=gb2312;request.setCharacterEncodinggb2312;intresponseText=0;InsertUpdateDelBeanib=newInsertUpdateDelBean;Stringtype=request.getParametertype;iftype!=nulltype.equalsward{Stringargs[]={numberofficesgradeprice};Stringrow=;Stringval=;forinti=0;iargs.length;i++{ifi==args.length-1{row+=args[i];val+=+request.getParameterargs[i]+;}else{row+=args[i]+;val+=+request.getParameterargs[i]+;}}Stringsql=insertintoward+row+values+val+;responseText=ib.insertANDupdateANDdelsql;}iftype!=nulltype.equalssickbed{Stringargs[]={numberward};Stringrow=;Stringval=;forinti=0;iargs.length;i++{ifi==args.length-1{row+=args[i];val+=+request.getParameterargs[i]+;}else{row+=args[i]+;val+=+request.getParameterargs[i]+;}}Stringsql=insertintosickbed+row+values+val+;responseText=ib.insertANDupdateANDdelsql;}PrintWriterout=response.getWriter;out.printresponseText;out.close;}/***Initializationoftheservlet.br*@throwsServletExceptionifanerroroccurs*/publicvoidinitthrowsServletException{//Putyourcodehere}packageservlet;importjava.io.IOException;importjava.io.PrintWriter;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importbean.InsertUpdateDelBean;p/***Constructoroftheobject.*/publicSymptomServlet{super;}/***Destructionoftheservlet.br*/publicvoiddestroy{super.destroy;//Justputsdestroystringinlog//Putyourcodehere}/***ThedoGetmethodoftheservlet.br*Thismethodiscalledwhenaformhasitstagvaluemethodequalstoget.*@paramrequesttherequestsendbytheclienttotheserver*@paramresponsetheresponsesendbytheservertotheclient*@throwsServletExceptionifanerroroccurred*@throwsIOExceptionifanerroroccurredpublicvoiddoGetHttpServletRequestrequestHttpServletResponseresponsethrowsServletExceptionIOException{doPostrequestresponse;}*ThedoPostmethodoftheservlet.br*Thismethodiscalledwhenaformhasitstagvaluemethodequalstopost.*@paramrequesttherequestsendbytheclienttotheserver*@paramresponsetheresponsesendbytheservertotheclient*@throwsServletExceptionifanerroroccurred*@throwsIOExceptionifanerroroccurred*/publicvoiddoPostHttpServletRequestrequestHttpServletResponseresponsethrowsServletExceptionIOException{response.setContentTypetext/html;charset=gb2312;request.setCharacterEncodinggb2312;intresponseText=0;InsertUpdateDelBeanib=newInsertUpdateDelBean;Stringargs[]={patientsymptom};Stringrow=;Stringval=;forinti=0;iargs.length;i++{ifi==args.length-1{row+=args[i];val+=+request.getParameterargs[i]+;}else{row+=args[i]+;val+=+request.getParameterargs[i]+;}}Stringsql=insertintosymptom+row+values+val+;responseText=ib.insertANDupdateANDdelsql;PrintWriterout=response.getWriter;out.printresponseText;out.close;}/***Initializationoftheservlet.br**@throwsServletExceptionifanerroroccurs*/publicvoidinitthrowsServletException{//Putyourcodehere}}packageservlet;importjava.io.IOException;importjava.io.PrintWriter;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importbean.InsertUpdateDelBean;publicclassStockServletextendsHttpServlet{/***Constructoroftheobject.*/publicStockServlet{super;}/***Destructionoftheservlet.br*/publicvoiddestroy{super.destroy;//Justputsdestroystringinlog//Putyourcodehere}/***ThedoGetmethodoftheservlet.br**Thismethodiscalledwhenaformhasitstagvaluemethodequalstoget.**@paramrequesttherequestsendbytheclienttotheserver*@paramresponsetheresponsesendbytheservertotheclient*@throwsServletExceptionifanerroroccurred*@throwsIOExceptionifanerroroccurred*/publicvoiddoGetHttpServletRequestrequestHttpServletResponseresponsethrowsServletExceptionIOException{doPostrequestresponse;}/***ThedoPostmethodoftheservlet.br**Thismethodiscalledwhenaformhasitstagvaluemethodequalstopost.**@paramrequesttherequestsendbytheclienttotheserver*@paramresponsetheresponsesendbytheservertotheclient*@throwsServletExceptionifanerroroccurred*@throwsIOExceptionifanerroroccurred*/publicvoiddoPostHttpServletRequestrequestHttpServletResponseresponsethrowsServletExceptionIOException{response.setContentTypetext/html;charset=gb2312;request.setCharacterEncodinggb2312;intresponseText=0;InsertUpdateDelBeanib=newInsertUpdateDelBean;Stringargs[]={drugbatchsumsvalidity};Stringrow=;Stringval=;forinti=0;iargs.length;i++{ifi==args.length-1{row+=args[i];val+=+request.getParameterargs[i]+;}else{row+=args[i]+;val+=+request.getParameterargs[i]+;}}Stringsql=insertintostock+row+values+val+;responseText=ib.insertANDupdateANDdelsql;sql=updatedrugsetstock=stock++request.getParametersums+whereid=+request.getParameterdrug;ib.insertANDupdateANDdelsql;PrintWriterout=response.getWriter;out.printresponseText;out.close;}/***Initializationoftheservlet.br**@throwsServletExceptionifanerroroccurs*/publicvoidinitthrowsServletException{//Putyourcodehere}}packageservlet;importjava.io.IOException;importjava.io.PrintWriter;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjavax.servlet.http.HttpSession;publicclassRemoveServletextendsHttpServlet{/***Constructoroftheobject.*/publicRemoveServlet{super;}/***Destructionoftheservlet.br*/publicvoiddestroy{super.destroy;//Justputsdestroystringinlog//Putyourcodehere}/***ThedoGetmethodoftheservlet.br**Thismethodiscalledwhenaformhasitstagvaluemethodequalstoget.**@paramrequesttherequestsendbytheclienttotheserver*@paramresponsetheresponsesendbytheservertotheclient*@throwsServletExceptionifanerroroccurred*@throwsIOExceptionifanerroroccurred*/publicvoiddoGetHttpServletRequestrequestHttpServletResponseresponsethrowsServletExceptionIOException{doPostrequestresponse;}/***ThedoPostmethodoftheservlet.br**Thismethodiscalledwhenaformhasitstagvaluemethodequalstopost.**@paramrequesttherequestsendbytheclienttotheserver*@paramresponsetheresponsesendbytheservertotheclient*@throwsServletExceptionifanerroroccurred*@throwsIOExceptionifanerroroccurred*/publicvoiddoPostHttpServletRequestrequestHttpServletResponseresponsethrowsServletExceptionIOException{response.setContentTypetext/html;charset=gb2312;request.setCharacterEncodinggb2312;Stringmark=request.getParametermark;StringresponseText=;HttpSessionsession=request.getSession;ifmark!=nullmark.equalsusers{session.removeAttributeuserslogin;}ifmark!=nullmark.equalsadmin{session.removeAttributeadminlogin;}responseText=mark;PrintWriterout=response.getWriter;out.printresponseText;out.close;}/***Initializationoftheservlet.br**@throwsServletExceptionifanerroroccure*/publicvoidinitthrowsServletException{//Putyourcodehere}}packageservlet;importjava.io.IOException;importjava.io.PrintWriter;importjava.util.ArrayList;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjavax.servlet.http.HttpSession;importbean.InsertUpdateDelBean;publicclassPwdUpdateServletextendsHttpServlet{/***Constructoroftheobject.*/publicPwdUpdateServlet{super;}/***Destructionoftheservlet.br*/publicvoiddestroy{super.destroy;//Justputsdestroystringinlog//Putyourcodehere}/***ThedoGetmethodoftheservlet.br**Thismethodiscalledwhenaformhasitstagvaluemethodequalstoget.**@paramrequesttherequestsendbytheclienttotheserver*@paramresponsetheresponsesendbytheservertotheclient*@throwsServletExceptionifanerroroccurred*@throwsIOExceptionifanerroroccurred*/publicvoiddoGetHttpServletRequestrequestHttpServletResponseresponsethrowsServletExceptionIOException{doPostrequestresponse;}/***ThedoPostmethodoftheservlet.br**Thismethodiscalledwhenaformhasitstagvaluemethodequalstopost.**@paramrequesttherequestsendbytheclienttotheserver*@paramresponsetheresponsesendbytheservertotheclient*@throwsServletExceptionifanerroroccurred*@throwsIOExceptionifanerroroccurred*/publicvoiddoPostHttpServletRequestrequestHttpServletResponseresponsethrowsServletExceptionIOException{response.setContentTypetext/html;charset=gb2312;request.setCharacterEncodinggb2312;Stringnewpwd=request.getParameternewpwd;HttpSessionsession=request.getSession;ArrayListadminlogin=ArrayListsession.getAttributeadminlogin;Stringtype=request.getParametertype;Stringsql=update+type+setpwd=+newpwd+whereid=+adminlogin.get0;InsertUpdateDelBeanib=newInsertUpdateDelBean;intPrintWriterout=response.getWriter;out.printresponseText;out.close;}/***Initializationoftheservlet.br*@throwsServletExceptionifanerroroccure*/publicvoidinitthrowsServletException{//Putyourcodehere}}packageservlet;importjava.io.IOException;importjava.io.PrintWriter;importjava.util.ArrayList;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importbean.AllBean;importbean.InsertUpdateDelBean;publicclassPrescribeServletextendsHttpServlet{/***Constructoroftheobject.*/publicPrescribeServlet{super;}/***Destructionoftheservlet.br*/publicvoiddestroy{super.destroy;//Justputsdestroystringinlog//Putyourcodehere}/***ThedoGetmethodoftheservlet.br**Thismethodiscalledwhenaformhasitstagvaluemethodequalstoget.**@paramrequesttherequestsendbytheclienttotheserver*@paramresponsetheresponsesendbytheservertotheclient*@throwsServletExceptionifanerroroccurred*@throwsIOExceptionifanerroroccurred*/publicvoiddoGetHttpServletRequestrequestHttpServletResponseresponsethrowsServletExceptionIOException{doPostrequestresponse;}/***ThedoPostmethodoftheservlet.br**Thismethodiscalledwhenaformhasitstagvaluemethodequalstopost.**@paramrequesttherequestsendbytheclienttotheserver*@paramresponsetheresponsesendbytheservertotheclient*@throwsServletExceptionifanerroroccurred*@throwsIOExceptionifanerroroccurred*/publicvoiddoPostHttpServletRequestrequestHttpServletResponseresponsethrowsServletExceptionIOException{response.setContentTypetext/html;charset=gb2312;request.setCharacterEncodinggb2312;intresponseText=0;InsertUpdateDelBeanib=newInsertUpdateDelBean;Stringpatient=request.getParameterpatient;Stringdrug=request.getParameterdrug;Stringsums=request.getParametersums;Stringsql=updatedrugsetstock=stock-+sums+whereid=+drug;responseText=ib.insertANDupdateANDdelsql;ifresponseText!=-1{AllBeanab=newAllBean;ArrayListdrugAll=ab.getDrugdrug;sql=insertintoprescribepatientdrugnamesumspricetotalvalues+patient++drug++drugAll.get1++sums++drugAll.get8++Integer.parseIntsums*Integer.parseIntdrugAll.get
8.toString+;responseText=ib.insertANDupdateANDdelsql;}PrintWriterout=response.getWriter;out.printresponseText;out.close;}/***Initializationoftheservlet.br**@throwsServletExceptionifanerroroccurs*/publicvoidinitthrowsServletException{//Putyourcodehere}}。