计算机毕业论文范文(计算机毕业设计论文分享)

35小吃技术网 推荐阅读 2022年06月14日19时15分06秒 226 0

计算机毕业论文范文(计算机毕业设计论文分享)

摘要

药店对药品信息和数据管理纷乱复杂,整理统计费力费时。要做好对企业的管理,企业就必须快速准确地获取自己企业单位的信息,这就要求及时统计数据并方便查看,以及对企业的数据信息进行维护。本软件是利用JavaServer Pages 2.0设计开发的药店药品信息管理系统,是药店信息系统的一个重要组成部分,可实现对药品信息的分类管理和数据分析,从而使信息整理快速、准确、简单,以便于销售部门给予统筹安排,从而提高与改进传统的管理方法,提高药店对药品的销售管理水平。本文所叙述的内容以及程序代码都是药店管理中的常见问题。

关键词: JavaServer Pages 2.0;药店信息系统;药品管理

Abstract

The 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

第一章 需求分析
-----------------------------------------------------------------------------2

1.1 药店企业信息化的客观形势
-----------------------------------------------------------2

1.2 药店企业信息化的现状
----------------------------------------------------------------3

1.3 可行性分析
---------------------------------------------------------------------------- 3

第二章 系统分析
---------------------------------------------------------------------------4

2.1 系统功能分析
--------------------------------------------------------------------------4

2.2 系统流程详细分析
---------------------------------------------------------------------6

2.3 数据库功能分析
------------------------------------------------------------------------7

2.4 外部接口分析
--------------------------------------------------------------------------9

2.5 性能需求
-------------------------------------------------------------------------------9

2.6 软件属性需求
--------------------------------------------------------------------------9

2.7 系统的目标
---------------------------------------------------------------------------10

2.8 系统设计的原则
----------------------------------------------------------------------11

第三章 详细设计
---------------------------------------------------------------------------11

3.1 数据库的设计
-------------------------------------------------------------------------11

3.2 详细设计及系统功能的实现
-----------------------------------------------------------14

第四章 开发难点及解决技巧
----------------------------------------------------------------21

4.1 如何在jsp中灵活地输入数据
---------------------------------------------------------21

4.2 如何保存表格中的数据
---------------------------------------------------------------22

4.3 如何动态统计表格中的求和项
--------------------------------------------------------22

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

计算机毕业论文范文(计算机毕业设计论文分享)-第1张图片


图2.1 药店的药品管理系统功能图

2 . 2 系统流程详细分析

医院及药店的药品管理系统所处理的信息较多,功能强大,其基于药品管理的系统流程如图2.2所示:

计算机毕业论文范文(计算机毕业设计论文分享)-第2张图片


图2.2 医院及药店的药品管理系统的系统流程图

2.3 数据库功能分析

随着数据管理规模一再扩大,数据量急剧增加,数据库在软件中有不可替代的作用,成为了软件生存的血液,根据软件工程和数据库原理的要求和设计初期的详细调研,对医院及药店的药品管理系统进行详细的数据库分析。

2.3.1 要求分析

医院及药店的药品管理系统是一个数据库管理系统,数据库设计的好坏直接影响着整个工程运行的好坏,在数据库系统分析和设计阶段多下一点功夫是值得的,根据对软件所做的系统分析和用户的要求,该系统是要对药品的基本信息进行添加、修改、删除和查询统计等操作,这样就需要有供应商数据库、库存数据库、客户基础信息数据库、操作员密码数据库、药品入库数据库、药品入库退货数据库、药品销售数据库、药品销售退货数据库等。通过以上的数据库来完成整个的药品信息的管理。

2.3.2 概要设计

根据数据库的要求分析,确定该管理系统应具有的数据实体和数据实体的属性。在医院及药店的药品管理系统中包括的实体对象有药品实体、供应商实体、客户实体、操作员实体等。其每个实体的属性关系如下:

1、 药品实体中主要包括商品名称、简称、批号、产地、规格、包装、单位、进价、库存等属性,该实体关系如图2.3所示

计算机毕业论文范文(计算机毕业设计论文分享)-第3张图片


图2.3 药品实体图

2.客户实体包括客户编号、客户全称、简称、地址、所属地区、联系人、电话、传真、尚余欠款、日期,其中编号是为每个固定顾客作的编号码,以便查找操作。其客户实体关系如图2.4所示:

计算机毕业论文范文(计算机毕业设计论文分享)-第4张图片


图2.4 客户实体图

3、供应商实体包括供应商编号、供应商全称、简称、地址、所属地区、联系人、联系人电话、传真、电话、尚余欠款等属性。其供应商实体关系如图2.5所示。

计算机毕业论文范文(计算机毕业设计论文分享)-第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所示:

计算机毕业论文范文(计算机毕业设计论文分享)-第6张图片


图3.1 数据库E-R图

库存实体中是药品的相关信息,包括商品名称、产地和批号,他和其他表的关系全部为1对多关系,入库单,销单,入库退单,销售退单都和它有主外键的关系。

供应商和客户这两个实体也是作为引用实体存在的,供应商和入库单实体和入库退单实体发生关系,客户和销售单和销售退单发生1对多关系。

3 . 2 详细设计及系统功能的实现

经过上述的需求分析和系统分析以及数据库的设计,确定医院及药店的药品管理系统的全部功能和所需数据库,下面根据软件工程学对系统详细设计的任务要求,对该软件进行详细的设计及功能实现。在此过程中采用结构化的设计方法,来改善控制结构,降低程序的复杂度,从而提高程序的可读性、可测试性、可维护性。

3.2.1 软件结构

该软件顶层数据流图如图3.2所示。

计算机毕业论文范文(计算机毕业设计论文分享)-第7张图片


图3.2 顶层数据流图

3.2.2 各模块设计

根据对医院及药店的药品管理系统所做的需求分析和系统分析,来实现医院及药店的药品管理系统的全部功能的设计。在此过程中采用模块化的设计方法,根据面向对象的设计要求,将系统分解成一个个独立的模块,从而完成具体的设计。

医院及药店的药品管理系统是使用强大的jsp开发工具Myeclipse5.0完成全部的开发过程。Myeclipse不断推出它的各种新版本。它在继承以前版本优点的基础上,又新增加了诸多功能和特性,它速度快,具有强大且容易使用的可视化开发环境。

1.登录窗体的设计

(1)、功能:用于操作者身份验证。可以选择操作员,支持鼠标和键盘操作。操作员和密码验证成功后,进入主界面。操作员错误或密码错误提醒并返回错误点。输入三次错误的密码,系统自动退出。登陆模块的界面设计如图3.3所示:

计算机毕业论文范文(计算机毕业设计论文分享)-第8张图片


图3.3 登陆界面

(2)、实现过程:在“医院及药店的药品管理系统”工程中,添加一个新jsp页面,命名为login.jsp。

2. 主界面的设计

(1)、功能:主要是提供各项功能模块的入口。可以选择主界面的菜单,调用相应程序,进行相应操作。显示开发者信息、系统日期和时间。

(2)、实现过程及部分关键代码:在页面上添加一个text文本框、一个password框和一个button按钮。其代码实现过程请参考附录B中的代码1。

(3)、说明:为提高代码的效率,程序中使用自定义函数来代替一些在多个程序中频繁使用的代码,如下面的md5、filter、common等函数。

3. 入库单模块的设计

(1)、功能:程序启动后,选择“日常业务”菜单下的“入库单”项,将进入入库单模块。在入库单模块中主要实现如下功能:完成药品入库工作。自动生成入库票号。系统将自动统计入库品种、入库数量、入库金额。入库单界面设计如图3.4所示:

计算机毕业论文范文(计算机毕业设计论文分享)-第9张图片


图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所示:

计算机毕业论文范文(计算机毕业设计论文分享)-第10张图片


图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 (i网nt 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 password

public 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 manager

public 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 manager

public 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 manager

public 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 manager

public 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 note

public 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 affiche

public 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 affiche

public 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 affiche

public 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;

else

return Constant.SYSTEM_ERROR;

}

else{

int flag = dbo.executeUpdate(sql);

if(flag == 1)

return Constant.SUCCESS;

else

return Constant.SYSTEM_ERROR;

}

}catch(Exception e){

e.printStackTrace();

return Constant.SYSTEM_ERROR;

}finally{

dbo.close();

}

}

// get one affiche to update

public 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;

else

return 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;

else

return 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;

else

return 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.o网pen();

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 vote

public 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;

else

return Constant.SYSTEM_ERROR;

}

else{

int flag = dbo.executeUpdate(sql);

if(flag == 1)

return Constant.SUCCESS;

else

return 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;

else

return 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;

else

return 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;

else

return 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();

}

}

}