摘要药店对药品信息和数据治理庞杂庞大,整理统计艰苦费时。要做好对企业的治理,企业就必须快速准确地获取自己企业单元的信息,这就要求实时统计数据并利便检察,以及对企业的数据信息举行维护。
本软件是使用JavaServer Pages 2.0设计开发的药店药品信息治理系统,是药店信息系统的一个重要组成部门,可实现对药品信息的分类治理和数据分析,从而使信息整理快速、准确、简朴,以便于销售部门给予统筹摆设,从而提高与革新传统的治理方法,提高药店对药品的销售治理水平。本文所叙述的内容以及法式代码都是药店治理中的常见问题。
关键词: JavaServer Pages 2.0;药店信息系统;药品治理AbstractThe Medicine Store information and the datas are chaotic and complex,and the reorganization of the statistics was full of trouble and consumed time.To speed up enterprise’s management,the enterprise must be quickly accurately gains oneself enterprise unit the information,which requests promotion of statistical datas and the convenience examination,as well as carries on the maintenance to enterprise’s data message.This software is designed by Java Server Pages 2.0,which develops the hospital drugs information management system and is a store information system important constituent.To realize Medicine Store information classified management and the data analysis,thus causes the information to reorganize quickly and accurately is simple,by advantageous for the correlation department to give the overall plan arrangement,thus the enhancement improves tradition management,and raises the business management level.This article narrates the content which is the frequently asked as well as the procedure code all are in the hospital drugs management.Key words :JavaServer Pages 2.0; Medicine Store information system;drugs management目 录绪论-----------------------------------------------------------------------------------------1第一章 需求分析-----------------------------------------------------------------------------21.1 药店企业信息化的客观形势 -----------------------------------------------------------21.2 药店企业信息化的现状 ----------------------------------------------------------------31.3 可行性分析---------------------------------------------------------------------------- 3第二章 系统分析 ---------------------------------------------------------------------------42.1 系统功效分析--------------------------------------------------------------------------42.2 系统流程详细分析---------------------------------------------------------------------62.3 数据库功效分析------------------------------------------------------------------------72.4 外部接口分析--------------------------------------------------------------------------92.5 性能需求-------------------------------------------------------------------------------92.6 软件属性需求--------------------------------------------------------------------------92.7 系统的目的---------------------------------------------------------------------------102.8 系统设计的原则----------------------------------------------------------------------11第三章 详细设计---------------------------------------------------------------------------113.1 数据库的设计-------------------------------------------------------------------------113.2 详细设计及系统功效的实现-----------------------------------------------------------14第四章 开举事点及解决技巧----------------------------------------------------------------214.1 如何在jsp中灵活地输入数据---------------------------------------------------------214.2 如何生存表格中的数据---------------------------------------------------------------224.3 如何动态统计表格中的求和项--------------------------------------------------------224.4 如何实现数据的模糊查询-------------------------------------------------------------22结论----------------------------------------------------------------------------------------23致谢----------------------------------------------------------------------------------------25参考文献-----------------------------------------------------------------------------------25绪论随着我国市场经济的生长和人们对药店产物需求的迅速增加,药店行业正处于一个高速生长的时期。行业的快速生长一定导致竞争的加剧,要想在猛烈的市场竞争中钻营生长,客观上要求企业必须增强内部治理,提高运营效率。而我国大部门药店企业虽然谋划实现了专业化,可是从信息机制上还没有挣脱陈旧的销售模式,企业内部没有形成完善、有效的激励和约束的信息化治理机制,企业生长的动力不足,从而影响了企业的连续、稳定、快速的生长。
同时,我国药店谋划形式正在向团体化、连锁化生长。在这一生长历程中,旧的企业治理模式已不适应新型的社会主义市场经济的要求,而新的企业治理模式正在被广泛探讨、研究之中。这其中,如何使用现代信息技术使企业拥有快速、高效的市场反映能力和高度的效率,已是许多药店谋划企业特别体贴的问题。
再者,由于药店产物种类繁多、谋划模式特殊、业务量大,单凭手工记账已很难适应事情的需要。药店作为关系到人们康健的特殊行业,国家对药店行业又有一些差别于其他行业的治理政策,这些都加大了治理的难度。新修订的《中华人民共和国药品治理法》划定,药品谋划企业必须根据《药品谋划质量治理规范》(简称GSP)的要求从事药品谋划。
实现药品谋划企业对物质流、资金流和信息流的实时监控、动态治理,最大水平地缩短药品生意业务时间,降低药品生意业务成本及企业治理成本,大大提高事情效率和经济效益。这就把药店的信息化治理摆上日程,药店急需一套既能够有效治理药品,又能够实时提供足够市场信息的药店治理信息系统。如何尽快建设和完善现代企业的信息化治理机制问题,已成为药品谋划企业生长的关键所在。盘算机基于语言基础融合了强大的数据库开发能力是一种很是好的数据开发工具。
事实证明,盘算机编程语言在人为档案治理体系的应用,使数据治理更现代化,自动化,智能化。减轻了人工治理的事情量,使其变得更具有条理性,科学性,为解决药店治理行业的种种问题做出了庞大的孝敬。为此,借这次结业设计的时机,我对中国医科大学隶属第一临床医院的药品治理做了全面细致的观察和用户需求分析,明确所要开发的系统应该具有的功效、性能、界面,清楚地相识了用户的要求,使用Microsoft公司推出的强大的应用法式开发工具JavaServer Pages,联合有关治理规范和实际调研,举行了对中国医科大学隶属第一医院药房用于日常药品治理的软件--“医院及药店的药品治理系统”的开发。
该系统具有操作简朴、稳定、宁静和友好的用户界面等特点。为此,借这次结业设计的时机,我对中国医科大学隶属第一临床医院的药品治理做了全面细致的观察和用户需求分析,明确所要开发的系统应该具有的功效、性能、界面,清楚地相识了用户的要求,使用Microsoft公司推出的强大的应用法式开发工具JavaServer Pages,联合有关治理规范和实际调研,举行了对中国医科大学隶属第一医院药房用于日常药品治理的软件——“医院及药店的药品治理系统”的开发。该系统具有操作简朴、稳定、宁静和友好的用户界面等特点。
第一章 需求分析随着社会生长的日新月异,盘算机的广泛应用已成为社会生产力生长的重要标志。21世纪是一个信息时代,信息技术正影响着国民经济的各个领域。而且药店处置惩罚数据的日趋庞大和对信息的准确要求、快速等因素的存在,使得盘算机及相应的治理软件在医院及药店治理中的应用成为一定趋势。
凭据软件工程学的要求,开发软件首先要举行需求分析,下面就中国医科大学隶属第一医院药房药品治理系统的开发举行需求分析,以确定该软件的规模、规模、总体要求以及所需要的硬件情况和支持软件,凭据用户的情况确定该软件对操作的要求,以及待开发软件总体上的约束和限制。1 . 1 药店企业信息化的客观形势1、我国已经加入了WTO,面临即将进驻中国,拥有雄厚国际资本,先进谋划理念,优质服务意识的外国药品谋划企业,民族药品谋划企业要想在与狼共舞中生存、驻足、生长,必须在治理上与国际接轨,接纳盘算机信息化治理手段势在必行。2、药品质量关乎人民公共生命康健,国家药监局正在强力推行GSP认证达标事情,以加大行业羁系力度,2004年底是企业GSP达标的最后时间表,绝大多数企业将在今年通过,而要到达这一尺度从客观上讲离不开盘算机软件的强有力支持。
3、药品作为特殊商品有其相对独立的流通体系,这一流通体系的信息化事情需要有能够支持其特殊属性的专业化盘算机软件为其服务。4、竞争日趋猛烈,药品营销市场逐步规范,降价风潮迭起,利润空间缩小,接纳盘算机信息化治理,“向治理要效益”已经提上药品谋划企业治理者们的议事日程。1 . 2 药店企业信息化的现状1、我国药品谋划企业信息化起步较晚,最近两三年才刚刚开始,受地域经济水平差异影响,生长状况也不平衡。2、绝大多数企业只是局部接纳了治理软件,尚未实现真正的面向企业全局的信息化治理,谋划治理上存在着这样或那样的毛病,不具备足够的优势来迎接日趋猛烈的国际、海内市场竞争挑战。
3、少数率先步入信息化的企业使用的大多是在通用治理软件基础上修改出来的非专业化软件,对药店企业谋划治理特点的针对性不够。1.3 可行性分析1.3.1 技术可行性该软件的开发只需在Windows操作系统下举行,使用JavaServer Pages举行开发,在盘算机上只需安装一般的处置惩罚软件和一些支持软件,不需要大型的系统软件和应用软件来支持。
1.3.2 经济可行性举行该软件的开发经费和投资较少,开发只需一台能运行和安装windows操作系统以及JavaServer Pages以上的盘算机,需要的支持软件较少,软件投入应用时也不需要很高设置的盘算机设备和网络的安装,软件的运行寿命比力长,成本较低,所以开发该系统具有经济可行性。1.3.3 运行可行性该系统的研制和开发充实思量用户的业务往来、治理流程和人员素质等方面的因素,从而能够满足使用的要求。窗口操作简朴,直观,易于掌握。
是具有运行可行性的。经上述的需求分析分析,系统的研制和开发具有可行性。
第二章 系统分析2.1 系统功效分析软件系统分析是软件生存周期中重要的一步,也是关键一步。凭据对中国医科大学隶属第一临床学院药店药品治理系统所作的系统分析,根据软件工程学开发软件的要求,对医院及药店的药品治理系统的全部功效和所需数据库举行详细分析,分析时接纳结构化分析方法,自顶向下、逐层剖析问题。
通过对该治理系统举行的系统分析确定系统应具有的功效。在科学技术迅速生长的今天,人们所处置惩罚的信息已不能用简朴的手工记载来到达实际的要求,信息的数字化和信息量的日趋庞大,给手工记载带来了不少的贫苦与错误。当今的药店界也存在着所处置惩罚数据的庞大和不易人工记载的问题,经由一段时间的观察与研究,医院及药店的药品治理系统应具有如下功效模块:(1).日常业务部门:包罗入库业务,销售业务,入库退货业务和销售退货业务。
(2).库存治理部门:包罗库存盘货,库存查询和价钱治理。(3).查询统计部门:包罗入库查询,销售查询,入库退货查询和销售退货查询等信息的治理。(4).基础信息治理部门:包罗客户治理和供应商治理。
(5).系统设置部门:包罗数据库的初期建账,用户的密码设置,数据库数据备份和数据库的数据恢复等功效。(6).全面自动化治理,可以随时掌握药品的库存和销售情况。(7).能够快速准确的处置惩罚药品的入库、销售、盘货变价等多种业务模式。
(8).系统维护宁静、利便、可靠,而且能够满足实用性、先进性的要求。确定的该软件系统的结构如图2.1所示。图2.1 药店的药品治理系统功效图2 . 2 系统流程详细分析医院及药店的药品治理系统所处置惩罚的信息较多,功效强大,其基于药品治理的系统流程如图2.2所示:图2.2 医院及药店的药品治理系统的系统流程图2.3 数据库功效分析随着数据治理规模一再扩大,数据量急剧增加,数据库在软件中有不行替代的作用,成为了软件生存的血液,凭据软件工程和数据库原理的要求和设计初期的详细调研,对医院及药店的药品治理系统举行详细的数据库分析。2.3.1 要求分析医院及药店的药品治理系统是一个数据库治理系统,数据库设计的优劣直接影响着整个工程运行的优劣,在数据库系统分析和设计阶段多下一点功夫是值得的,凭据对软件所做的系统分析和用户的要求,该系统是要对药品的基本信息举行添加、修改、删除和查询统计等操作,这样就需要有供应商数据库、库存数据库、客户基础信息数据库、操作员密码数据库、药品入库数据库、药品入库退货数据库、药品销售数据库、药品销售退货数据库等。
通过以上的数据库来完成整个的药品信息的治理。2.3.2 提要设计凭据数据库的要求分析,确定该治理系统应具有的数据实体和数据实体的属性。在医院及药店的药品治理系统中包罗的实体工具有药品实体、供应商实体、客户实体、操作员实体等。
其每个实体的属性关系如下:1、 药品实体中主要包罗商品名称、简称、批号、产地、规格、包装、单元、进价、库存等属性,该实体关系如图2.3所示图2.3 药品实体图2.客户实体包罗客户编号、客户全称、简称、地址、所属地域、联系人、电话、传真、尚余欠款、日期,其中编号是为每个牢固主顾作的编号码,以便查找操作。其客户实体关系如图2.4所示:图2.4 客户实体图3、供应商实体包罗供应商编号、供应商全称、简称、地址、所属地域、联系人、联系人电话、传真、电话、尚余欠款等属性。其供应商实体关系如图2.5所示。
图2.5 供应商实体经由上面的数据库实体模型分析后,确定该系统应具有的数据表主要有:供应商基础信息数据表、库存数据表、客户基础信息数据表、密码数据表、入库数据表、入库退单数据表、销售数据表、销售退货数据表。2.4 外部接口分析2.4.1 用户界面接纳Windows的通用图形界面,对用户友好,且对鼠标和键盘提供支持,界面的设计应遵循如下规则:1.界面要具有一致性,界面规范遵循 Windows软件界面的规范;2.提供简朴的错误处置惩罚;3.提供信息反馈,用多种信息提示用户当前软件运行状态、软件界面元件的功效;4.操作可逆,其行动可以是单个的操作,或者是一个相对独立的操作序列;5.显示启动画面,画面简练明快,富有现代气息,不能太过花哨;6.应遵循国家关于盘算机词汇的尺度,用词应当精练准确,没有歧义,图形的意义清朗。2.4.2 故障处置惩罚正常使用时不应堕落,若运行时遇到不行恢复的系统错误,也必须保证数据库完好无损。
2.5 性能需求1、数据准确度查询时应保证查全率,所有相应域包罗查询关键字的记载都应能查到。查询时应保证查准率,查到的记载应与给定的单项或组合查询条件完全匹配。2、时间特性一般操作的响应时间应在1~2秒内,对数据的导入和导出也应在可接受的时间内完成。3、适应性满足小我私家使用的需求。
对前面提到的运行情况要求不应存在难题。2 . 6 软件属性需求1、正确性要求公布的软件到达用户的预期目的,运行时基本无错误。2、可靠性在一般条件下,应不出故障。
3、效率对于浏览、查询、增加、删除、更新和密码设置的一般操作,要求实时响应,在1~2秒内。4、完整性要求能在发生意外(如掉电)的情况下,保证不丢失数据。
5、易使用性要求能只管为用户的使用提供利便,软件的界面切合现在盛行的界面规范。6、可维护性要求该软件在运行中发现错误时,能快速、准确对其举行定位、诊断和修改。7、可测试性设计时尽可能淘汰测试该软件的各项功效所需的事情量。
8、复用性设计时应接纳模块化的方法举行设计,对系统内各模块接口尽可能到达高内聚、低耦合的水平,以提高各模块的复用性。9、宁静保密性要求提供身份验证,只允许通过身份验证的用户使用该软件。10、可明白性对于该软件提供的种种菜单下令,各信息提示,应易于用户明白。
11、可移植性要求该软件在未来能易于向种种窗口操作系统上移植。2.7 系统的目的凭据开端的观察和征询用户的意见,最后确定医院及药店的药品治理系统的目的如下:1、操作简朴利便。2、提供友好的界面。
3、提供药品出、入库的功效。4、实现基本信息维护功效。5、简朴账务治理。
6、信息查询与药品盘货。7、提供重要数据备份的功效等。2 . 8 系统设计的原则在举行较详细的观察和征询用户的开端要求之后,在设计的历程中本着以下几点来开发和完善此系统:1、正确性 所有的下令按钮实现正确的功效,满足用户的需求。
2、可用性 软件基本结构、实现方式、操作方法必须使一个非盘算机专业人员能够利便、正确的使用。3、完整性 实现当前药店药品治理的要求。4、界面友好 设计出的软件要雅观大方、操作利便简朴。
5、为了利便用户使用,应只管淘汰键盘的操作,发挥鼠标的作用。6、系统的稳定性 要制止不注意所在击鼠标而发生意想不到的效果,或发生法式的错误,保证操作人员正常的事情。7、淘汰执行一个功效的步骤,并只管灵活,不要实现流程过深,而且应只管能在任何界面中回到主界面,防止泛起不能继续执行的现象。
第三章 详细设计在明确了用户需求以后,凭据软件工程学的要求对该系统举行软件设计,确定了该软件所具有的全部功效和开发方案。该药店药品治理系统的功效模块包罗日常业务、库存治理、查询统计、基础信息治理、系统设置、GSP专项信息等。
3.1 数据库的设计数据库系统是在文件系统的基础上生长而来的,履历了条理数据库、网状数据库、关系数据库三个阶段。由于关系数据库接纳人们比力容易明白和接受的二维表格来组织数据,生长迅速,已成为数据库产物的主流。本系统的前端开发是使用JSP技术,通过JavaBeans举行逻辑控制和数据库毗连,尔后台数据库接纳的是SQLServer2000。
SQLServer2000数据库治理系统是一项全面完整的数据库与分析产物。SQLServer2000很是容易学习、使用,先容、学习资料比力多,SQLServer2000全面支持Web功效的数据库解决方案,与此同时,SQLServer2000还在可伸缩性与可靠性方面保持着多项基准测试纪录,而这两方面特性又都是企业数据库系统在猛烈市场竞争中克敌致胜的关键所在。无论以应用法式开发速度还是以事务处置惩罚运行速度来权衡,SQLServer2000都堪称最为快捷的数据库系统。对比SQLServer2000和其他的大型数据库治理系统,SQLServer2000 具有可靠的宁静性,较快的存储速度,高度的兼容性,简朴易用,应用SQLServer2000作为后台数据库为系统的开发提供了强有力的支持,并对以后软件的运行提供了坚实的基础,因此,我们接纳了SQLServer2000作为后台数据库。
1、密码表(ma):包罗操作员和密码;主要用来生存操作员及操作员密码。其各个字段类型设置和字段长度设置见附录A表(3-4)所示。
2、入库表(rk):包罗商品名称、简称、批号、产地、规格、包装、单元、数量、进价、金额、备注、供应商、日期、经手人、票号,用来生存商品入库的详细信息。其各个字段类型设置和字段长度设置见附录A表(3-5)所示。
3、销售表(xsd):包罗商品名称、批号、产地、规格、包装、单元、数量、单价、金额、备注、客户、日期、经手人、票号,用来生存商品销售的详细信息。其各个字段类型设置和字段长度设置见附录A表(3-7)所示。医院及药店的药品治理系统的数据库E-R图如图 3.1所示:图3.1 数据库E-R图库存实体中是药品的相关信息,包罗商品名称、产地和批号,他和其他表的关系全部为1对多关系,入库单,销单,入库退单,销售退单都和它有主外键的关系。供应商和客户这两个实体也是作为引用实体存在的,供应商和入库单实体和入库退单实体发生关系,客户和销售单和销售退单发生1对多关系。
3 . 2 详细设计及系统功效的实现经由上述的需求分析和系统分析以及数据库的设计,确定医院及药店的药品治理系统的全部功效和所需数据库,下面凭据软件工程学对系统详细设计的任务要求,对该软件举行详细的设计及功效实现。在此历程中接纳结构化的设计方法,来改善控制结构,降低法式的庞大度,从而提高法式的可读性、可测试性、可维护性。3.2.1 软件结构该软件顶层数据流图如图3.2所示。
图3.2 顶层数据流图3.2.2 各模块设计凭据对医院及药店的药品治理系统所做的需求分析和系统分析,来实现医院及药店的药品治理系统的全部功效的设计。在此历程中接纳模块化的设计方法,凭据面向工具的设计要求,将系统剖析成一个个独立的模块,从而完成详细的设计。
医院及药店的药品治理系统是使用强大的jsp开发工具Myeclipse5.0完玉成部的开发历程。Myeclipse不停推出它的种种新版本。
它在继续以前版本优点的基础上,又新增加了诸多功效和特性,它速度快,具有强大且容易使用的可视化开发情况。1.登录窗体的设计(1)、功效:用于操作者身份验证。可以选择操作员,支持鼠标和键盘操作。
操作员和密码验证乐成后,进入主界面。操作员错误或密码错误提醒并返回错误点。
输入三次错误的密码,系统自动退出。登陆模块的界面设计如图3.3所示:图3.3 登陆界面(2)、实现历程:在“医院及药店的药品治理系统”工程中,添加一个新jsp页面,命名为login.jsp。2. 主界面的设计(1)、功效:主要是提供各项功效模块的入口。
可以选择主界面的菜单,挪用相应法式,举行相应操作。显示开发者信息、系统日期和时间。(2)、实现历程及部门关键代码:在页面上添加一个text文本框、一个password框和一个button按钮。
其代码实现历程请参考附录B中的代码1。(3)、说明:为提高代码的效率,法式中使用自界说函数来取代一些在多个法式中频繁使用的代码,如下面的md5、filter、common等函数。3. 入库单模块的设计(1)、功效:法式启动后,选择“日常业务”菜单下的“入库单”项,将进入入库单模块。在入库单模块中主要实现如下功效:完成药品入库事情。
自动生成入库票号。系统将自动统计入库品种、入库数量、入库金额。
入库单界面设计如图3.4所示:图3.4 入库单设计(2)、在窗体中添加6个text文本框、1个button按钮等。(3)、并花样化单价和总金额(保留两位小数)。附录B中的代码3实现了以下功效:在入库单模块中,单击“生存”按钮,将首先检测是否录入了商品信息,如果录入了商品信息,将使用循环语句将商品信息生存到入库单rkd表中,并更新相应的库存商品信息。
生存乐成后,清空入库数据,焦点转移到“挂号”按钮上。4. 库存查询模块设计(1)、功效:法式启动后,选择“库存治理”菜单下的“库存查询”项,将进入库存查询模块。在库存查询模块汇总主要实现如下功效:选择字段查询库存商品信息,可模糊查询。(2)、在窗体中添加1个text文本框,1个button按钮。
5. 库存盘货模块设计(1)、功效:法式启动后,选择“库存治理”菜单下的“检察库存”项,将进入库存盘货模块。在库存盘货模块中主要实现盘货库存商品信息。(2)、在窗体中添加1个text文本框、1个button按钮。
6. 入库查询模块设计(1)、功效:法式启动后,选择“查询统计”菜单下的“入库查询”项,将进入入库查询模块。在入库查询模块中主要实现如下功效:按任意时间段、任意字段、查询入库商品信息。可以删除入库商品信息。7.销售查询模块设计(1)、主要功效:法式启动后,选择“查询统计”菜单下的“销售查询”项,将进入销售查询模块。
在销售查询模块中主要实现如下功效:按任意时间段、任意字段查询商品销售信息。可以删除商品销售信息。
销售查询界面设计如图3.5所示:图3.5 销售查询界面(2)、在页面中添加1个text文本框、1个button按钮。8.供应商治理模块设计(1)、法式启动后,选择“基础信息治理”菜单下的“供应商治理”项,将进入供应商治理模块。在供应商治理模块中主要时间如下功效:完成供应商基本信息的录入、生存、修改、删除。
选择任意字段、任意条件查询供应商基本信息。通过卡片式、列表式两种方式检察供应商基本信息。9.密码设置模块设计法式启动后,选择“系统设置”菜单下的“密码设置”项,将进入密码设置模块。
在密码设置模块中主要实现设置完成操作员密码的修改、生存。第四章 开举事点及解决技巧4.1 如何在jsp中灵活地输入数据Text文本框、textarea文本域是两种html文本输入框,该控件提供了输入界面,处置惩罚数据相当灵活,具有只读数据绑定、文本自动换行等功效。4.2 如何生存表格中的数据运用循环语句,将表格中的数据一条一条地生存。如果在不知道循环内需要执行几多次语句时,可以用while循环。
否则,在知道要执行几多次循环的条件下最好使用for循环。与while循环差别,For循环使用一个计数器变量,每重复一次循环之后,计数器变量的值就会增加或者淘汰。
4.3 如何动态统计表格中的求和项在举行销售单、入库单等一些票据的录入时,经常需要系统自动盘算合计数量、合计金额,即整个票据的所有商品的合计数量、合计金额。还是使用循环语句。下面是以入库单为例的盘算合计入库数量、合计入库金额的关键语句:For(int i=0;i<list.size();i++)Sum+=Integer.parsent(list.get(i).toString().trim());}4.4 如何实现数据的模糊查询模糊查询是多种查询方式中的一种,也是比力常用的一种查询方式。在模糊查询汇总用到了Like语句:ResultSet rs = "select * from 表 where ((kc.简称 like " + 列名 + ")While(Rs.next()){System.out.println(rs.getString(1));}结论本文从应用的角度叙述了医院及药店的药品信息自动化治理的实现方法。
随着国家对药店卫生制度的革新的深入以及WTO的加入,药店已经面临市场化、社会化的竞争,革新的导向决议了药店要在优质、高效、低耗的模式下,充实使用系统的现代化治理手段实现资源设置的最优化。革新的重要基础是要对药店各流程岗位举行业务流程重组,建设完整的适应盘算机收集和分析的治理体系。
以往的药店药品治理事情主要由手工方式举行操作的,存在着事情繁琐、操作堕落等一系列的毛病。而且手工治理中往往泯灭了很大的人力和时间,却又难以到达很高的精度。因此,为了利便药店药品的治理和减轻药品治理上的事情肩负,提高事情效率和精度,该系统使用Microsoft公司的强大的开发工具JavaServer Pages开发了这套药店药品治理系统,希望本系统能给药店销售领域的治理带来一些有益的资助。
在文中论述了医院及药店的药品治理系统的详细设计历程。文中根据软件工程的要求来设计和开发治理软件的。而且凭据国家药监局GSP治理规范要求,联合药品谋划企业特点,参照多家典型药品谋划企业的实际运营履历,举行全面治理,实现药品谋划企业对物质流、资金流、信息流和质量治理全历程的实时监控、动态治理,最大水平地缩短药品生意业务时间,降低药品生意业务成本及企业治理成本,大大提高事情效率和经济效益。
该软件基本到达了现代药店药品治理的要求,能够对药店举行全方位的治理,其界面友好,操作简朴易学,运行速度快,具有很高的宁静性。文中所先容的软件在预警和统计方面有奇特之处,是值得其它治理软件的开发所借鉴。
由于本人水平有限和时间的匆匆,软件系统中可能还存在隐藏着的“BUG”和一些业务操作的不合理,论文中泛起缺点和错误再所难免,还请列位向导、老师和同学品评平指正。以便日后的进一步完善和二次的开发。致谢在近四个月的设计和论文写作历程中,我联合了大学里学过的许多基础知识和专业知识,较好的解决了设计历程中泛起的问题,较顺利的完成了此次结业设计任务。
在这段设计和论文的写作历程中,获得了列位老师和同学的鼎力大举支持和资助,特别是论文导师李芳老师在前期调研、系统计划、系统设计、软件开发以及后期论文的写作等方面给予了细致的指导,其他老师及系里的向导在设计的历程中也给予了鼎力大举的资助和眷注,在这里表现诚挚的谢意。参考文献[1] 刘圣才 李春葆编著,JavaServer Pages法式设计导学, 清华大学出书社[2] 吴雁 萧风 编著,JavaServer Pages 入门.提高.实战 人民邮电出书社[3] 吴德胜 齐晓亮 肖仁华 编著,JavaServer Pages 数据库实用法式实际100例 人民邮电出书社[4] 求是科技 编著,JavaServer Pages 数据库开发技术与工程实践 人民邮电出书社[5] 林陈雷 郭安源 葛晓东 编著,JavaServer Pages 教育信息化系统开发实例导航 人民邮电出书社[6] 龚沛曾 陆慰民 杨志强 编著,JavaServer Pages法式设计教程[7] 李振格 主编,JavaServer Pages入门与提高 清华大学出书社[8] (美)Dean Leffingwell Don Widrig 著 蒋慧 林东 等译 软件需求治理统一方法 机械工业出书社附录代码1、在入库、销售等模块中,均使用了java.sql类包里的方法:import java.sql.ResultSet;import java.sql.SQLException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Calendar;import java.util.List;import com.util.Constant;import com.util.DBO;public class AdminBean {private List list;private ResultSet rs = null;private int EVERYPAGENUM = 2;private int count = -1;private int qq = 0;private String sql="select count(*) from adminlog";private String sql2="select * from adminlog order by id desc ";//声明时间变量String date=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Calendar.getInstance().getTime());//分页查询登陆日志public void setEVERYPAGENUM(int EVERYPAGENUM){this.EVERYPAGENUM=EVERYPAGENUM;}public int getMessageCount() { //获得信息总数DBO dbo=new DBO();dbo.open();try {rs = dbo.executeQuery(sql);rs.next();count = rs.getInt(1);return count;} catch (SQLException ex) {ex.printStackTrace();return -1;} finally {dbo.close();}}public int getPageCount() { //获得共几多页(凭据每页要显示几条信息)if (count % EVERYPAGENUM == 0) {return count / EVERYPAGENUM;} else {return count / EVERYPAGENUM + 1;}}public List getMessage(int page) { //获得每页要显示的信息DBO dbo=new DBO();dbo.open();List list = new ArrayList();try {rs = dbo.executeQuery(sql2);for (int i = 0; i < (page - 1) * EVERYPAGENUM; i++) {rs.next();}for (int t = 0; t < EVERYPAGENUM; t++) {if (rs.next()) {qq++;List list2=new ArrayList();list2.add(rs.getInt("id"));list2.add(rs.getString("username"));list2.add(rs.getString("password"));list2.add(rs.getString("logintime"));list2.add(rs.getString("loginip"));list2.add(rs.getString("useros"));list2.add(rs.getString("ok"));list.add(list2);} else {break; //淘汰空循环的时间}}return list;} catch (SQLException ex) {ex.printStackTrace();return null;} finally {dbo.close();}}//治理员登录 更新登录次数 写登录日志public int adminLogin(String username,String md5password,String password,String loginip,String useros){String sql = "select * from admin where username = '"+username+"' and isuse='1'";String sql2 = "insert into adminlog(username,password,logintime,loginip,useros,ok) values('"+username+"','"+md5password+"','"+date+"','"+loginip+"','"+useros+"','true')";String sql3 = "insert into adminlog(username,password,logintime,loginip,useros,ok) values('"+username+"','"+password+"','"+date+"','"+loginip+"','"+useros+"','false')";String sql4 = "update admin set logintimes = logintimes+1 where username = '"+username+"' ";DBO dbo = new DBO();String pwd;dbo.open();try{rs = dbo.executeQuery(sql);if(rs.next()){pwd = rs.getString("password");if(pwd.trim().equals(md5password)){dbo.executeUpdate(sql2);dbo.executeUpdate(sql4);return Constant.SUCCESS;}else{dbo.executeUpdate(sql3);return Constant.PASSWORD_ERROR;}}else{dbo.executeUpdate(sql3);return Constant.NAME_ERROR;}}catch(Exception e){e.printStackTrace();return Constant.SYSTEM_ERROR;}finally{dbo.close();}}//查询治理员信息public List getAdminInfo(String username){String sql = "select * from admin where username='"+username+"' ";DBO dbo = new DBO();dbo.open();list = new ArrayList();try{rs = dbo.executeQuery(sql);rs.next();list.add(rs.getString("username"));list.add(rs.getInt("flag"));list.add(rs.getInt("logintimes"));list.add(date);list.add(rs.getString("quanxian"));return list;}catch(Exception e){e.printStackTrace();return list;}finally{dbo.close();}}//admin edit passwordpublic int editPassword(String username,String oldpwd,String newpwd){String sql="select * from admin where username = '"+username+"' and password = '"+oldpwd+"'";String sql2="update admin set password = '"+newpwd+"' where username = '"+username+"'";DBO dbo = new DBO();dbo.open();try{rs = dbo.executeQuery(sql);if(rs.next()){int i = dbo.executeUpdate(sql2);if(i == 1){return Constant.SUCCESS;}else{return Constant.SYSTEM_ERROR;}}else{return Constant.PASSWORD_ERROR;}}catch(Exception e){e.printStackTrace();return Constant.SYSTEM_ERROR;}finally{dbo.close();}}//add managerpublic int addManager(String username,String password,String type,String isuse){String sql = "insert into admin(username,password,creattime,flag,isuse,logintimes,quanxian) values('"+username+"','"+password+"','"+date+"','"+type+"','"+isuse+"','0','111')";String sql2 = "select * from admin where username = '"+username+"'";DBO dbo = new DBO();dbo.open();try{rs = dbo.executeQuery(sql2);if(rs.next()){return Constant.SAME_NAME;}else{int i = dbo.executeUpdate(sql);if(i == 1)return Constant.SUCCESS;else return Constant.SYSTEM_ERROR;}}catch(Exception e){e.printStackTrace();return Constant.SYSTEM_ERROR;}finally{dbo.close();}}//update managerpublic int updateManager(String username,String password,String type,String isuse){String sql;if(password.equals("")){sql = "update admin set flag = '"+type+"' ,isuse = '"+isuse+"' where username = '"+username+"'";}else{sql = "update admin set password = '"+password+"' ,flag = '"+type+"' ,isuse = '"+isuse+"' where username = '"+username+"'";}DBO dbo = new DBO();dbo.open();try{int i = dbo.executeUpdate(sql);if(i == 1)return Constant.SUCCESS;else return Constant.SYSTEM_ERROR;}catch(Exception e){e.printStackTrace();return Constant.SYSTEM_ERROR;}finally{dbo.close();}}//get all managerpublic List getAllManager(){String sql = "select * from admin where flag !='1' order by id asc";DBO dbo = new DBO();list = new ArrayList();dbo.open();try{rs = dbo.executeQuery(sql);while(rs.next()){List list2 = new ArrayList();list2.add(rs.getInt(1));list2.add(rs.getString(2));list2.add(rs.getString(4));list2.add(rs.getInt(5));list2.add(rs.getInt(6));list2.add(rs.getInt(7));list.add(list2);}return list;}catch(Exception e){e.printStackTrace();return list;}finally{dbo.close();}}//delete managerpublic int delManager(int id){String sql = "delete from admin where id = '"+id+"'";DBO dbo = new DBO();dbo.open();try{int i = dbo.executeUpdate(sql);if(i == 1)return Constant.SUCCESS;else return Constant.SYSTEM_ERROR;}catch(Exception e){e.printStackTrace();return Constant.SYSTEM_ERROR;}finally{dbo.close();}}//delete login notepublic int delLog(int id[]){DBO dbo=new DBO();dbo.open();try{for(int i = 0;i<id.length;i++){dbo.executeUpdate("delete from adminlog where id = '"+id[i]+"'");}return Constant.SUCCESS;}catch(Exception e){e.printStackTrace();return Constant.SYSTEM_ERROR;}finally{dbo.close();}}}package com.bean;import java.sql.ResultSet;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Calendar;import java.util.List;import com.util.Constant;import com.util.DBO;/**** @author Administrator**/public class AfficheBean {private ResultSet rs;private List list;private String date=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Calendar.getInstance().getTime());//增加public int addAffiche(String title,String content,String adder,String ifhide){String sql = "insert into affiche (title,content,addtime,adder,ifhide) " +"values ('"+title+"','"+content+"','"+date+"','"+adder+"','"+ifhide+"')";DBO dbo = new DBO();dbo.open();try{int i = dbo.executeUpdate(sql);if(i == 1){return Constant.SUCCESS;}else{return Constant.SYSTEM_ERROR;}}catch(Exception e){e.printStackTrace();return Constant.SYSTEM_ERROR;}finally{dbo.close();}}// update affichepublic int updateAffiche(int id,String title,String content,String adder,String ifhide){String sql = "update affiche set title = '"+title+"',content='"+content+"',addtime='"+date+"'," +"adder='"+adder+"',ifhide='"+ifhide+"' where id = '"+id+"' ";DBO dbo = new DBO();dbo.open();try{int i = dbo.executeUpdate(sql);if(i == 1){return Constant.SUCCESS;}else{return Constant.SYSTEM_ERROR;}}catch(Exception e){e.printStackTrace();return Constant.SYSTEM_ERROR;}finally{dbo.close();}}//delete affichepublic int delAffiche(int id[]){DBO dbo = new DBO();dbo.open();try{for(int i = 0;i<id.length;i++){dbo.executeUpdate("delete from affiche where id = '"+id[i]+"'");}return Constant.SUCCESS;}catch(Exception e){e.printStackTrace();return Constant.SYSTEM_ERROR;}finally{dbo.close();}}//open.close affichepublic int hideAffiche(int id){String sql = "update affiche set ifhide='1' where id='"+id+"'";String sql2 = "update affiche set ifhide='0' where id='"+id+"'";String sql3 = "select ifhide from affiche where id='"+id+"'";DBO dbo = new DBO();dbo.open();try{rs = dbo.executeQuery(sql3);rs.next();int i = rs.getInt(1);if(i == 1){int flag = dbo.executeUpdate(sql2);if(flag == 1)return Constant.SUCCESS;elsereturn Constant.SYSTEM_ERROR;}else{int flag = dbo.executeUpdate(sql);if(flag == 1)return Constant.SUCCESS;elsereturn Constant.SYSTEM_ERROR;}}catch(Exception e){e.printStackTrace();return Constant.SYSTEM_ERROR;}finally{dbo.close();}}// get one affiche to updatepublic List getOneAffiche(int id){String sql = "select * from affiche where id = '"+id+"'";DBO dbo = new DBO();list = new ArrayList();dbo.open();try{rs = dbo.executeQuery(sql);while(rs.next()){list.add(rs.getInt(1));list.add(rs.getString(2));list.add(rs.getString(3));list.add(rs.getString(4));list.add(rs.getString(5));list.add(rs.getString(6));}return list;}catch(Exception e){e.printStackTrace();return list;}finally{dbo.close();}}//首页显示所有public List getAllAffiche(){String sql = "select id,content,addtime from affiche where ifhide='1' order by addtime desc ";DBO dbo = new DBO();list = new ArrayList();dbo.open();try{rs = dbo.executeQuery(sql);while(rs.next()){List list2=new ArrayList();list2.add(rs.getInt(1));list2.add(rs.getString(2));list2.add(rs.getString(3));list.add(list2);}return list;}catch(Exception e){e.printStackTrace();return list;}finally{dbo.close();}}public List getAllAfficheManage(){String sql = "select id,title,addtime,adder,ifhide from affiche order by addtime desc ";DBO dbo = new DBO();list = new ArrayList();dbo.open();try{rs = dbo.executeQuery(sql);while(rs.next()){List list2=new ArrayList();list2.add(rs.getInt("id"));list2.add(rs.getString("title"));list2.add(rs.getString("addtime"));list2.add(rs.getString("adder"));list2.add(rs.getInt("ifhide"));list.add(list2);}return list;}catch(Exception e){e.printStackTrace();return list;}finally{dbo.close();}}public int addVote(String title,String ifhide ,String item1,String item2,String item3,String item4,String item5,String item6,String tick1,String tick2 ,String tick3 ,String tick4,String tick5,String tick6 ){String sql = "insert into vote ( title, ifhide , item1, item2, item3, item4,item5,item6,tick1, tick2 , tick3 , tick4,tick5,tick6,addtime ) " +"values( '"+title+"', '"+ifhide+"' , '"+item1+"', '"+item2+"', '"+item3+"', '"+item4+"','"+item5+"','"+item6+"','"+tick1+"', '"+tick2+"' ," +" '"+tick3+"' , '"+tick4+"' , '"+tick5+"' , '"+tick6+"' , '"+date+"' )";DBO dbo = new DBO();dbo.open();try{if(ifhide.equals("1")){dbo.executeUpdate("update vote set ifhide='0' ");}int flag = dbo.executeUpdate(sql);if(flag == 1)return Constant.SUCCESS;elsereturn Constant.SYSTEM_ERROR;}catch(Exception e){e.printStackTrace();return Constant.SYSTEM_ERROR;}finally{dbo.close();}}// 修改 public int updateVote(int id,String title,String ifhide ,String item1,String item2,String item3,String item4,String item5,String item6,String tick1,String tick2 ,String tick3 ,String tick4,String tick5,String tick6 ){String sql = "update vote set title='"+title+"', ifhide='"+ifhide+"' , item1='"+item1+"', item2='"+item2+"'," +" item3='"+item3+"', item4='"+item4+"',item5='"+item5+"',item6='"+item6+"',tick1='"+tick1+"', tick2='"+tick2+"' ,tick3='"+tick3+"' , " +"tick4='"+tick4+"',tick5='"+tick5+"',tick6='"+tick6+"' where id='"+id+"'";DBO dbo = new DBO();dbo.open();try{if(ifhide.equals("1")){dbo.executeUpdate("update vote set ifhide='0' ");}int flag = dbo.executeUpdate(sql);if(flag == 1)return Constant.SUCCESS;elsereturn Constant.SYSTEM_ERROR;}catch(Exception e){e.printStackTrace();return Constant.SYSTEM_ERROR;}finally{dbo.close();}}// 删除public int delVote(int id){String sql = "delete from vote where id='"+id+"'";DBO dbo = new DBO();dbo.open();try{int flag = dbo.executeUpdate(sql);if(flag == 1)return Constant.SUCCESS;elsereturn Constant.SYSTEM_ERROR;}catch(Exception e){e.printStackTrace();return Constant.SYSTEM_ERROR;}finally{dbo.close();}}//查询某个public List getVote(int id){String sql = "select * from vote where id='"+id+"' ";DBO dbo = new DBO();list = new ArrayList();dbo.open();try{rs = dbo.executeQuery(sql);while(rs.next()){list.add(rs.getInt(1));list.add(rs.getString(2));list.add(rs.getString(3));list.add(rs.getString(4));list.add(rs.getString(5));list.add(rs.getString(6));list.add(rs.getString(7));list.add(rs.getString(8));list.add(rs.getString(9));list.add(rs.getString(10));list.add(rs.getString(11));list.add(rs.getString(12));list.add(rs.getString(13));list.add(rs.getString(14));list.add(rs.getString(15));list.add(rs.getString(16));}return list;}catch(Exception e){e.printStackTrace();return list;}finally{dbo.close();}}// 查询所有public List getAllVote(){String sql = "select * from vote order by id desc ";DBO dbo = new DBO();list = new ArrayList();dbo.open();try{rs = dbo.executeQuery(sql);while(rs.next()){List list2 = new ArrayList();list2.add(rs.getInt(1));list2.add(rs.getString(2));list2.add(rs.getString(3));list2.add(rs.getString(4));list2.add(rs.getString(5));list2.add(rs.getString(6));list2.add(rs.getString(7));list2.add(rs.getString(8));list2.add(rs.getString(9));list2.add(rs.getString(10));list2.add(rs.getString(11));list2.add(rs.getString(12));list2.add(rs.getString(13));list2.add(rs.getString(14));list2.add(rs.getString(15));list2.add(rs.getString(16));list.add(list2);}return list;}catch(Exception e){e.printStackTrace();return list;}finally{dbo.close();}}public List getVote(){String sql = "select * from vote where ifhide='1' ";DBO dbo = new DBO();list = new ArrayList();dbo.open();try{rs = dbo.executeQuery(sql);while(rs.next()){list.add(rs.getInt(1));list.add(rs.getString(2));list.add(rs.getString(3));list.add(rs.getString(4));list.add(rs.getString(5));list.add(rs.getString(6));list.add(rs.getString(7));list.add(rs.getString(8));list.add(rs.getString(9));list.add(rs.getString(10));list.add(rs.getString(11));list.add(rs.getString(12));list.add(rs.getString(13));list.add(rs.getString(14));list.add(rs.getString(15));list.add(rs.getString(16));}return list;}catch(Exception e){e.printStackTrace();return list;}finally{dbo.close();}}// open.close votepublic int hideSurvey(int id){String sql = "update vote set ifhide='1' where id='"+id+"'";String sql2 = "update vote set ifhide='0' where id='"+id+"'";String sql3 = "select ifhide from vote where id='"+id+"'";DBO dbo = new DBO();dbo.open();try{rs = dbo.executeQuery(sql3);rs.next();int i = rs.getInt(1);if(i == 1){int flag = dbo.executeUpdate(sql2);if(flag == 1)return Constant.SUCCESS;elsereturn Constant.SYSTEM_ERROR;}else{int flag = dbo.executeUpdate(sql);if(flag == 1)return Constant.SUCCESS;elsereturn Constant.SYSTEM_ERROR;}}catch(Exception e){e.printStackTrace();return Constant.SYSTEM_ERROR;}finally{dbo.close();}}public int addVote(int id,String item){String sql = "update vote set "+item+"="+item+"+1 where id='"+id+"'";DBO dbo = new DBO();dbo.open();try{int flag = dbo.executeUpdate(sql);if(flag == 1)return Constant.SUCCESS;elsereturn Constant.SYSTEM_ERROR;}catch(Exception e){e.printStackTrace();return Constant.SYSTEM_ERROR;}finally{dbo.close();}}public int addMemAff(String content,String type){String sql = "insert into memaff(content,type,addtime) values('"+content+"','"+type+"','"+date+"')";DBO dbo = new DBO();dbo.open();try{int flag = dbo.executeUpdate(sql);if(flag == 1)return Constant.SUCCESS;elsereturn Constant.SYSTEM_ERROR;}catch(Exception e){e.printStackTrace();return Constant.SYSTEM_ERROR;}finally{dbo.close();}}public List getAllMemAff(){String sql = "select * from memaff order by id desc ";DBO dbo = new DBO();list = new ArrayList();dbo.open();try{rs = dbo.executeQuery(sql);while(rs.next()){List list2 = new ArrayList();list2.add(rs.getInt(1));list2.add(rs.getString(2));list2.add(rs.getString(3));list2.add(rs.getString(4));list.add(list2);}return list;}catch(Exception e){e.printStackTrace();return list;}finally{dbo.close();}}///删除 public int delMemAff(int id){String sql = "delete from memaff where id='"+id+"'";DBO dbo = new DBO();dbo.open();try{int flag = dbo.executeUpdate(sql);if(flag == 1)return Constant.SUCCESS;elsereturn Constant.SYSTEM_ERROR;}catch(Exception e){e.printStackTrace();return Constant.SYSTEM_ERROR;}finally{dbo.close();}} public List getAllMemAff(String type){String sql = "select content,addtime from memaff where type='"+type+"' order by id desc ";DBO dbo = new DBO();list = new ArrayList();dbo.open();try{rs = dbo.executeQuery(sql);while(rs.next()){List list2 = new ArrayList();list2.add(rs.getString(1));list2.add(rs.getString(2));list.add(list2);}return list;}catch(Exception e){e.printStackTrace();return list;}finally{dbo.close();}}}。
本文来源:天博综合体育官方app下载-www.jhh2o.com
QQ:683845051
手机:13920913820
电话:0193-352567262
邮箱:admin@jhh2o.com
地址:安徽省芜湖市惠农区攀视大楼275号