医院药房信息管理系统的设计与开发

更新时间:2024-03-25 23:09:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

安徽大学 毕业设计(论文)说明书

摘要

随着计算机的普及,它在各行各业得到越来越广泛的应用,坊县医院正面临着信息时代的挑战。坊县医院信息管理的计算机化、网络化将是建设现代化医院必不可少的重要手段。为了紧跟时代发展的步伐和潮流,必须实现坊县医院全面的信息化管理,为病人提供现代化的服务,提高对病人的服务水平。

坊县医院药房信息管理系统主要由门诊系统、体检系统、药品管理系统这三个主要功能模块共同构成。本文叙述的是坊县医院药房信息管理系统中的一个子系统——药品管理系统,本系统采用了visual studio2008作为开发工具。它主要使用c#.NET以及SQL SEVER 2005数据库。

关键词:药品管理系统,SQL SEVER 2005, C#

共 55 页 第 1 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

安徽大学 毕业设计(论文)说明书

目 录

1 绪论 .................................................................................................................................. 4

1.1 系统开发背景概述 ............................................................................................. 4 1.2 系统开发的目的与意义 .................................................................................... 4 2系统需求分析.....................................................................................................................6

2.1 引言 ....................................................................................................................... 6 2.2 系统的需求分析 ................................................................................................. 6 2.3 系统基本功能描述 ............................................................................................. 8 2.3.1 主要功能 .............................................................................................................. 8 2.3.2 功能介绍 ......................................................................................................... 8 3 系统开发工具 ................................................................................................................. 9

3.1 C#概述 ................................................................................................................... 9 3.2系统数据库软件的介绍...................................................................................... 9 3.3 关于ADO.NET ....................................................................................................... 11 3.4 系统开发工具 Visual Studio简介 .............................................................. 12 5 系统总体设计 ............................................................................................................... 14

5.1 系统总体结构设计 ............................................................................................ 14 5.2 实体关系 .............................................................................................................. 14 5.3 数据库表的设计 ............................................................................................... 19 6 系统详细设计 ............................................................................................................... 30

6.1 系统界面设计 .................................................................................................... 30 6.2系统的模块描述................................................................................................. 31

6.2.1 用户登入模块 .......................................................................................... 31 6.2.2 修改密码模块 .......................................................................................... 32 6.2.3 增加用户的模块实现 ............................................................................. 33 6.2.4 医护人员信息查询模块的实现 ............................................................ 34 5.2.5 药品类别设置模块的实现 ..................................................................... 34 6.2.6 药品设置模块实现 .................................................................................. 35 7 软件测试和维护 ................................................................................................. 45 7.1 软件测试 ............................................................................................................ 45

7.1.1 软件测试的概念 .................................................................................. 45 7.1.2软件测试的目的 ..................................................................................... 45 7.1.3 软件测试的方法 .................................................................................... 46 7.1.4项目测试的过程 ..................................................................................... 47 黑盒测试过程 ....................................................................................................... 47 白盒测试过程 ....................................................................................................... 47 7.2 系统的维护 ........................................................................................................ 48 结束语 ................................................................................................................................ 49 致 谢 .................................................................................................................................. 49 参考文献 ............................................................................................................................ 50 附录 ..................................................................................................................................... 51

共 55 页 第 2 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

安徽大学 毕业设计(论文)说明书

1 绪论

1.1 系统开发背景概述

随着计算机技术的飞速发展,计算机在医院管理中应用的普及,利用计算机实现医院管理势在必行。对于坊县医院来说,利用计算机支持坊县医院高效率完成医院管理的日常事务,是适应现代医院管理制度要求、推动医院管理走向科学化、规范化的必要条件;计算机管理所无法比拟的优点检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高医院管理的效率,也是实现医院的科学化、正规化管理的重要条件。

随着坊县医院规模的扩建以及人数不断的增多,对各种药品的需求量在不断增加,同时医患人员的信息也在不断的增加和更新。为了更好的为病人提供优质的医疗服务,使医护人员能从繁忙的记账式管理中解放出来,充分发挥医护工作人员的工作潜力,因此坊县医院药房信息管理系统成为我们必然的选择,整个坊县医院药房信息管理系统是很庞大的,不是一个人短期内所能完成的,我做的仅仅是其中很小一部分的开发——药品管理系统。

本课题主要研究的是:用户管理其中包括用户登录、修改密码、增加用户、医护人员信息查询,药品管理其中包括药品分类信息查询、药品详细信息查询,药房药品库存统计,库存管理其中包括药房库存信息查询、药品入库、药品出库、失效药品查询、药品出库金额折线图形显示、药品出库数量折线图形显示。

1.2 系统开发的目的与意义

随着现代化社会的发展,世界贸易组织的加入,当今时代已成为信息化的社会。世界已进入在计算机信息管理领域中激烈竞争的时代。信息已成为继劳动力、土地、资本之后的又一大资源,谁控制的信息越多,谁利用信息资源的效率越高,谁就会在各方面的竞争中,占有一席之地,那么他就会更有优势,这一点已得到举世公认。

伴随着我国工业的迅猛发展,为了抓住机遇,在竞争中占得先机,作为管理企业的一个必不可少的重要环节—在线管理的信息化、计算机化也就迫在眉捷了。开发药品信息管理系统即有宏观上的意义,那就是顺应时代信息化、现代化潮流,提高效益,促进国民经济管理的结构优化;也有微观上的意义,那就是可以提高管理的现代化程序,加强管理的信息化手段,提高工作效率,增加单位效益。

电子计算机和通信技术的快速发展使人类已经逐渐地进入信息化社会。信息和材料、能源一样成为一种社会的基本生产资料,在人类的社会生产活动中发挥着重要的作用。同时人们对信息和数据的利用与处理也已进入自动化、网络化和社会化的阶段,因此,开发相关的管理信息系统已经成为各行各业的必要和必需了,管理信息系统作为一门边缘学科,集管理科学、信息科学、系统

共 55 页 第 3 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

安徽大学 毕业设计(论文)说明书

科学、现代通信技术和电子计算机技术于一体,可以解决企业或组织所面临的问题,对内来看,可以提高工作效率;对外来看,获得竞争优势。

现在的医院要能紧跟时代发展的步伐和潮流,适应医疗制度改革和社会医疗保险改革的需要,必须实现医院全面的信息化管理,树立良好的社会形象,为病人提供现代化的服务,提高对病人的服务水平,方便、准确、快捷地为病人提供医疗服务和医疗费用信息,进而增强病人对医院的信任和支持。使医院管理晋等升级,进入现代化管理。当前,医院还面临着越来越激烈的市场竞争、要想在竞争中取胜,也必须采用先进的管理方法和手段。一个规划周详、设计先进的药品信息管理系统是取得竞争胜利的必备手段。通过实现先进的计算机网络化管理,能为领导层的管理和决策及时提供可靠的数字依据,使管理更合理、更先进;减少人力、物力资源的浪费,降低成本;提高工作效率,提高管理效率;提高经济效益,从而提高医院的整体竞争力。在这样一个信息时代的洪流中,我们坊县医院也必须跟上时代前进的步伐,实现自身全面的信息化管理,最大力度为学校师生提供优质服务成为我们努力的方向和目标。

共 55 页 第 4 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

安徽大学 毕业设计(论文)说明书

2 系统需求分析

2.1 引言

需求分析与管理是IT项目软件生存周期中重要的一步,也是最关键的一步。只有通过IT项目需求分析与管理,才能将IT项目功能和性能研究清楚,并将其描述为具体的软件需求规格说明,进而建立软件开发的基础。

可行性研究是一种系统的投资决策的科学分析方法。项目可行性研究是指,在项目投资决策前,通过对项目有关工程技术、经济、社会等方面的条件和情况进行调查、研究分析,对各种可能的技术方案进行比较论证,并对投资项目建成后的经济效益和社会效益进行预测和分析以考察项目技术上的先进性和通用性,在经济上的合理性赢利性,以及建设的可能性和可行性,继而确定项目投资建设是否可行的科学分析方法。

2.2 系统的需求分析

管理信息系统是一门新兴的、集管理科学、信息科学、系统科学及计算机科学为一体的综合性学科,研究的是信息管理活动的全过程,以便有效的管理信息,提供各类管理决策信息,辅助企业进行现代化管理。

(1)用统一标准处理和提供信息,排除使用前后矛盾的不完整的数据。 (2)完整、及时提供在管理及决策中需要的数据。 (3)利用指定的数据关系分析数据,客观预测未来。

(4)系统运行在Windows平台上,需要有一个较好的图形用户界面,操作要求简单。

(5)系统应该有良好的构架和可扩展性,以便医院根据实际情况进行补充与修改。

对一个医护人员来讲,医院药房库存药品种类齐全、数量繁多,每天药品入出存数量动态变化,数据时刻处于动态更新之中,这给他们对药品的检索过程带来不便,甚至是返回错误的数据。药品到医院后,所需要的一般流程如下所示。

数据流图简称DFD,是SA方法中用于表示系统逻辑模型的一种工具。它以图形的方式描述数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型。数据流图有四种基本图形符号:“→”箭头表示数据流;“○”圆或椭圆表述加工;“=”双杠表示数据存储;“”方框表示数据的源点或终点。图4-3和图4-4简单的画出了该系统的数据流图。

共 55 页 第 5 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

安徽大学 毕业设计(论文)说明书

图2.2.1 0层数据流图

操作员 药品 管理 系统 数据库

图2.2.2 1层数据流图

合法用户 用户管理 操作员 登陆 检测合 法输入 合法用户 药品管理 合法用户 库存管理 理 数 据 库 为适应医疗信息管理发展的需要,开发基于C/S结构的医院药品库存管理系统。该系统应具有以下功能:

(1)药品的基本信息明细到数据库中。 (2)能够对药品的类别和详细信息进行检索 (3)及时反映库存中药品的动态变化。 (4)记录药品入出库的情况。

(5)对于每月药品入出库的金额信息进行图形化统计。 医院药品库存管理系统的数据库服务器要求:

数据库服务器作为整个系统的核心,运行系统最为关键的应用,存储整个系统最为重要的生产数据。因此,数据库服务器要有强大的CPU和I/O处理能力,足够的内外存储容量和高可靠性;数据库服务器系统应代表当代计算机技术的较高水平,并具有长远的生命周期和易扩充性,能适应医院信息电子化现在及未来的需要,并且具有最佳的性能价格比。

数据库服务器系统应遵循开放系统标准,具有良好的用户界面,拥有丰富的应

共 55 页 第 6 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

安徽大学 毕业设计(论文)说明书

用集成工具,具有分布处理能力和应用程序的可移植性和互操作性。数据库服务器系统还应能支持多种先进的数据库管理系统。总体来说,数据库服务器系统的选择需充分考虑到:

①高性能

所采用的数据库服务器必须吞吐量大,响应时间快。具体表现在具有很高的实时联机事务处理能力及快速的I/O通道。

②高可靠性和可用性

选择高可靠性硬件、软件和网络设备,具有高可靠性的保证措施,具有错误的自动识别、自动纠错和恢复的能力,如冗余供电系统、自动再引导、散热控制、内存自动纠错和RAID

支持及双机互相备份等,保证系统不会停机。 ③开放性

选择开放性好的硬件、软件和网络系统,保证系统之间的可连接性、互操作性、应用可移植性及其将来的扩充。可支持各种标准的外部设备。

④先进灵活性

选择的设备必须是当今世界较先进的,同时要考虑到未来国内外发展方向。至少在5年内技术不落后。

⑤安全性

系统必须具有较高的安全级别,对本信息系统而言,它所涉及的数据来自医院各个部门,包括技术数据、技术信息,涉及到医院利益。所以保证数据的安全性和一致性是十分重要的。

⑥支持先进的数据库管理系统

选用的数据库管理系统应是先进的、并被广泛应用的、支持基于C/S结构、支持海量数据库、支持图形和多媒体数据,具有较高的安全级别和保证数据完

整性、一致性的策略,管理简便等。数据库开发工具功能完备。

2.3 系统基本功能描述

2.3.1 主要功能

基本信息: 医护人员登录、医护人员基本信息查询、修改密码、增加用户。

药品管理: 药品类别信息查询,药品详细信息明细,药房药品库存统计。 库存管理:药品入库、药品出库、失效药品查询、药品出库金额折线图形显示、药品月出库数量折线图形显示。

2.3.2 功能介绍

1.基本信息

共 55 页 第 7 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

安徽大学 毕业设计(论文)说明书

医护人员登录:输入用户名和密码。

医护人员基本信息查询:医护人员姓名,权限,新增。 修改密码:修改登录用户密码。

增加用户:输入用户的基本信息添加注册新用户。 2.药品管理

药品类别查询:查询各种药品的类别。

药品详细信息查询:查询某种药品的详细信息如:生产厂商、有效期、售价、规格等详细信息。

药房药品库存统计:通过药品类别、批号、名称等条件查询坊县医院药房库存中药品的详细信息,并对即将过期的药品进行黄色显示报警,对已过期的药品进行红色显示报警

3.库存管理

药品入库:记录入库药品的基本信息更新入库表和入库日志表,同时入库存,查询最近入库的药品信息。

药品出库:记录出库药品的基本信息更新出库表和出库日志表,同时减库存,查看最近出库的药品。

失效药品查询:可以查询到任意日期截止的失效药品。

药品出库折线图形显示:将每月出库的药品金额以折线图形显示出来。 药品月出库数量折线图形显示:将每月出库的各种药品数量以折线图形显示出来。

共 55 页 第 8 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

安徽大学 毕业设计(论文)说明书

3 系统开发工具

3.1 C#概述

C#(读做C-sharp)编程语言是由微软公司的Anders Hejlsberg和 Scott Willamette领导的开发小组专门为.NET平台设计的语言,它可以使程序员移植到.NET上。这种移植对于广大的程序员来说是比较容易的,因为C#从C,C++和Java发展而来,它采用了这三种语言最优秀的特点,并加入了它自己的特性。C#是事件的驱动的,完全面向对象的可视化编程语言,我们可以使用集成开发环境来编写C#程序。使用IDE,程序员可以方便的建立,运行,测试和调试C#程序,这就将开发一个可用程序的时间减少到不用IDE开发时所用时间的一小部分。使用IDE迅速建立一个应用程序的过程称为快速反映开发。

1、 泛型:在我看来,泛型就是通过将数据类型参数化从而实现了代码的更为灵活的复用,泛型的出现使得C#能够使用同一段代码来操作多种数据类型。泛型无疑是C#2.0最重大的改进,它的出现赋予了C#代码更强的类型安全,更好的复用,更高的效率和更清晰的约束。

2、 匿名方法:匿名方法允许我们将代码直接与委托实例相关联,使委托实例化工作更加直观和方便。在我看来,这只是C#又多了一种语法格式而已,不再像以前必须将方法名传给委托实例,而是又多了一种选择。

3、 迭代器:迭代器允许我们更加方便的编写用于foreach语句的类型。在我看来,迭代器的出现只不过是改进了1.0中不便的可用foreach语句类型的编写限制,简化了一些接口。

4、 局部类型:局部类型允许我们将一个类的代码分别写在不同的cs文件中。最典型的应用就是使用VS2005创建Form文件时,VS会自动将系统生成的代码与用户代码分开。局部类型通过partial关键字来声明。

5、 空属类型:空属类型是一种像int?一样可以为空的变量类型。本质上是一种泛型的应用,是System .Nullable<>的一种类型实例化。

6、 静态类:静态类是只用于包含静态成员的类型,它既不能实例化,亦不能被继承。

使用.NET开发医院药品信息管理系统的优越性

自从美国微软公司推出的.NET以来,.NET技术在业界得到极大的认同,并在短时间内得到迅速的推广,越来越多的人转移到这个平台上来。而C#在.NET中,扮演着举足轻重的角色。.NET框架主要是由他的实现。因此,C#在.NET中具有先天的优势。也能很好的实现此管理系统的所有功能。

3.2系统数据库软件的介绍

建立一个数据库我们有多种选择,现在市场上有各种各样的数据库,而且每一种数据库都有其自身的特点,不能说哪一种更好,只能在其中寻找一种能

共 55 页 第 9 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

安徽大学 毕业设计(论文)说明书

更好地适应系统需求、更好地满足用户的要求以及适应开发人员的习惯。在本系统中,作为坊县医院的药品信息管理,它所产生和处理的数据量也不太大。因此,没有必要使用像Access和Oracle这样的大型数据库。Microsoft Office中的SQL数据库在计算机上的应用比较普及,是开发中小型数据库系统的比较理想的选择,所以,在本系统中我选择了SQL数据库。

SQL Server 2005 简称是“结构化查询语言(Structured Query Language)”,最早的是IBM的圣约瑟研究实验室为其关系数据库管理系统SYSTEM R开发的一种查询语言,它的前身是SQUARE语言。SQL语言结构简洁,功能强大,简单易学,所以自从IBM公司1981年推出以来,SQL语言,得到了广泛的应用。如今无论是像Oracle,Sybase,Informix,SQL server这些大型的数据库管理系统,还是像Visual Foxporo,PowerBuilder这些微机上常用的数据库开发系统,都支持SQL语言作为查询语言。

Structured Query Language包含4个部分: 数据查询语言DQL-Data Query Language SELECT

据操纵语言DQL-Data Manipulation Language INSERT, UPDATE, DELETE

数据定义语言DQL-Data Definition Language CREATE, ALTER, DROP

数据控制语言DQL-Data Control Language COMMIT WORK, ROLLBACK

WORK

SQL的优点:

SQL广泛地被采用正说明了它的优点。它使全部用户,包括应用程序员、DBA管理员和终端用户受益非浅。

1.非过程化语言

SQL是一个非过程化的语言,因为它一次处理一个记录,对数据提供自动导航。SQL允许用户在高层的数据结构上工作,而不对单个记录进行操作,可操作记录集。所有SQL 语句接受集合作为输入,返回集合作为输出。SQL的集合特性允许一条SQL语句的结果作为另一条SQL语句的输入。 SQL不要求用户指定对数据的存放方法。 这种特性使用户更易集中精力于要得到的结果。所有SQL语句使用查询优化器,它是RDBMS的一部分,由它决定对指定数据存取的最快速度的手段。查询优化器知道存在什么索引,哪儿使用合适,而用户从不需要知道表是否有索引,表有什么类型的索引。 2.统一的语言

SQL可用于所有用户的DB活动模型,包括系统管理员、数据库管理员、 应用程序员、决策支持系统人员及许多其它类型的终端用户。基本的SQL 命令只需很少时间就能学会,最高级的命令在几天内便可掌握。 SQL为许多任务提供了命令,包括:

共 55 页 第 10 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

安徽大学 毕业设计(论文)说明书

查询数据

在表中插入、修改和删除记录 建立、修改和删除数据对象 控制对数据和数据对象的存取 保证数据库一致性和完整性

以前的数据库管理系统为上述各类操作提供单独的语言,而SQL将全部任务统一在一种语言中。

3.是所有关系数据库的公共语言

由于所有主要的关系数据库管理系统都支持SQL语言,用户可将使用SQL的技能从一个RDBMS转到另一个。所有用SQL编写的程序都是可以移植的。SQL是PostgreSQL(和大多数其它关系型数据库)用做查询语言的语言。它是可以移植的,并且容易学习使用。但是所有SQL语句都必须由数据库服务器独立地执行。这就意味着客户端应用必须把每条查询发送到数据库服务器,等待它处理这个查询,接收结果,做一些运算,然后给服务器发送另外一条查询。所有这些东西都会产生进程间通讯,并且如果客户端在另外一台机器上甚至还会导致网络开销。如果使用了 PL/pgSQL,那么可以把一块运算和一系列查询在数据库服务器里面组成一个块,这样就拥有了过程语言的力量并且简化SQL的使用,因而节约了大量的时间,因为用不着付出客户端/服务器通讯的过热。通过使用PL/pgSQL,应用可以获得可观的性能提升。

3.3 关于ADO.NET

ADO.NET是一组用于和数据源进行交互的面向对象类库。通常情况下,数据源是数据库,但它同样也能够是文本文件、Excel表格或者XML文件。

ADO.NET允许和不同类型的数据源以及数据库进行交互。然而并没有与此相关的一系列类来完成这样的工作。因为不同的数据源采用不同的协议,所以对于不同的数据源必须采用相应的协议。一些老式的数据源使用ODBC协议,许多新的数据源使用OleDb协议,并且现在还不断出现更多的数据源,这些数据源都可以通过.NET的ADO.NET类库来进行连接。

ADO.NET提供与数据源进行交互的相关的公共方法,但是对于不同的数据源采用一组不同的类库。这些类库称为Data Providers,并且通常是以与之交互的协议和数据源的类型来命名的。如图3.1描述了在程序中利用ADO访问数据库的流程。

共 55 页 第 11 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

安徽大学 毕业设计(论文)说明书

图3.1 ADO访问数据

3.4 系统开发工具 Visual Studio简介

Visual Studio 是一套完整的开发工具集,用于生成 ASP.NET Web 应用程序、XML Web Services、桌面应用程序和移动应用程序。Visual Basic、Visual C++、Visual C# 和 Visual J# 全都使用相同的集成开发环境 (IDE),利用此 IDE 可以共享工具且有助于创建混合语言解决方案。另外,这些语言利用了 .NET Framework 的功能,通过此框架可使用简化 ASP Web 应用程序和 XML Web Services 开发的关键技术。

共 55 页 第 12 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

安徽大学 毕业设计(论文)说明书

5 系统总体设计

系统设计是系统开发过程中的另一个重要阶段,在这一阶段中将根据前一阶段逻辑分析的结果,在系统分析报告的基础上,按照逻辑模型的要求,科学合理地进行新系统的设计。系统设计包含两个方面:首先是总体结构设计,其实是具体物理模型的设计。这个阶段的主要目标是将反映用户信息需求的系统逻辑方案转换成可以事实的基于计算机的物理方案,并为下一阶段的系统事实提供必要的技术资料。 系统设计的依据如下: (1) 系统分析阶段的成果

(2) 现行计算机软硬件技术、数据库技术等

(3) 现行信息管理与信息技术的标准、规范等有关法律制度 (4) 用户要求

(5) 系统运行环境条件

我们采用结构化设计的方法来实现系统总体功能,提高系统的各项指标,即将整个系统合理的划分成各个功能模块,正确地处理模块之间和模块内部的联系以及它们之间的调用关系和数据联系,定义各模块的内部结构,通过对模块的设计和模块之间关系的系统来实现整个系统的功能。

5.1系统总体结构设计

系统设计是信息开发过程中的另一个重要阶段,在这一阶段中将根据前一阶段逻辑分析的结果,在系统分析报告的基础上,按照逻辑模型的要求,科学合理地进行新系统的设计。系统设计包含两个方面:首先是总体结构设计,其实是具体物理模型的设计。这个阶段的主要目标是将反映用户信息需求的系统逻辑方案转换成可以事实的基于计算机的物理方案,并为下一阶段的系统事实提供必要的技术资料。

系统设计的依据如下: (1) 系统分析阶段的成果

(2) 现行计算机软硬件技术、数据库技术等

(3) 现行信息管理与信息技术的标准、规范等有关法律制度 (4) 用户要求

(5) 系统运行环境条件

我们采用结构化设计的方法来实现系统总体功能,提高系统的各项指标,即将整个系统合理的划分成各个功能模块,正确地处理模块之间和模块内部的联系以及它们之间的调用关系和数据联系,定义各模块的内部结构,通过对模块的设计和模块之间关系的系统来实现整个系统的功能。

模块设计的主要方法是结构化方法,主导思想是以系统的逻辑功能设计和数据

共 55 页 第 13 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

安徽大学 毕业设计(论文)说明书

流关系为基础,采用“自顶向下,逐步求精”的设计方法,将本系统分解为功能明确,易于修改,大小适中的模块结构。

系统的功能结构图分析如下:

医护人员登录 基本信息 药品管理 库存管理 用户登录 医护人员基本信息查询 修改密码 增加用户 图5.1 系统的功能结构图

药品类别查询 药品详细信息查询 药房库存统计 药品入出库管理 失效药品查询 药品出库金额/数量图形显示 5.2实体关系

实体关系图简记E-R图是指以实体、关系、属性三个基本概念概括数据的基本结构,从而描述静态数据结构的概念模式。利用实体关系图我们可以很容易看出各者之间的关系,也可以让数据库的建立更加简单。如图4-1所示为总体E-R图,以下实体的属性将在下面进行进一步的描述。

供应商m供应n库存n入库1药品1出库n库存图4.1 总体E-R图

n管理m医护人员共 55 页 第 14 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

安徽大学 毕业设计(论文)说明书

1用户:属性主要包括用户名,密码,编号,用户权限和科室。用户名和密码主要是用户用来登录的,编号是标识管理员唯一性的属性,完全与业务逻辑无关,在数据库表中设置编号为顺序自动增加的。我们可以有多个用户对不同的员工进行操作,所以用户和员工之间是多对多的关系,用户的实体关系图如图4.1.1所示

密码 编号 用户 权限 用户名 图4.1.1 用户信息实体图

2.医护人员:医护人员的属性包括编号、医生编号、医生姓名、科室、性别、身份证、生日、工作时间、电话号码、级别等等。如图4.1.2所示:

编号 医生编号 医生姓名 性别 员工 科室 级别 身份证号 工作时间 出生日期 电话号码

图4.1.2 医护人员信息实体图

3. 科室:科室的属性有科室号,科室名称,科室负责人,部门联系人,部门联系号码,编号,其中编号是标识科室的唯一属性,它在数据库表中的编号为顺序自动增加的。员工和科室之间是多对一的关系,如图4.1.3所示:

共 55 页 第 15 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

安徽大学 毕业设计(论文)说明书

4药品:药品的属性有编号、药品编码、药品名称、药品类别、药品类别编号、药品规格、单位、医保类别、最小库存数量、录入人员、录入日期。自动编号是标识药品的唯一属性,药品和药品信息之间是一对一的关系,如图4.1.4所示:

科室号 科室号 科室负责人 部门联系人 科室 部门联系号码 科室名称 图4.1.3科室部门信息实体图

药品编码 编号 药品名称 药品类别 药品 医保类别 药品规格 单位 录入人员 录入日期 最小库存量 图4.1.4 药品信息实体图

5.入库信息:编号、药品编码、药品名称、药品规格、单位、批号、药品类别、进价、比例、售价、入库数量、金额、最终数量、入库日期、有效期、产地、供应商、医保类别、最小库存数量、GMP认证、批准文号、入库单号、录入人员、录入日期。自动编号是它的主键。药品和它之间是一对多的关系。 如图4.1.5所示:

共 55 页 第 16 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

安徽大学 毕业设计(论文)说明书

单位 批号 药品类别 药品名称 进价 金额 售价 比例最终数量 有效期 入库单号 医保类别 GMP认证 产地 批准文号 入库日期 入库信息 供应商 编号 药品规格 入库数量 药品编码 录入人员 录入日期

图4.1.5 入库信息实体图

6.出库信息:编号、药品编码、药品名称、药品规格、单位、批号、药品类别、售价、出库数量、金额、入库日期、出库日期、有效期、产地、供应商、医保类别、GMP认证、批准文号、出库单号、出纳员、出库日期。自动编号是它的主键。药品和它之间是一对多的关系。如图4.1.6所示:

共 55 页 第 17 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

安徽大学 毕业设计(论文)说明书

单位 批号 药品类别 药品名称 编号 药品规格 出库数量 出库信息 售价 出库日期 出库单号 医保类别 GMP认证 入库日期 产地 批准文号 供应商 药品编码 金额 有效期 出纳员 出库日期 图4.1.6 出库信息实体图

7.供应商:编号、供应号、供应商、供应商地址、供应商联系人、供应商号码、供应商等级,其中供应号是它的主键,它和药品之间是多对多的关系。如图4.1.7所示:

供应商号码 供应号 编号 供应商 供应商地址 供应商 供应商等级

图4.1.7 供应商信息实体图

供应商联系人 共 55 页 第 18 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

安徽大学 毕业设计(论文)说明书 5.2 数据库表的设计

5.2.1 用户登录表Sys_UserLogin

包括Id 编号、Userid用户编号、UsereName登录名、UserName用户名、PassWord密码、UserRole 用户权限、DepartName科室等字段构成。

其中ID编号唯一确定一个用户登入。

表4.2.1用户登录表

名称 数据类型 int char char char nvarchar char nvarchar 数据长度 4 10 10 10 15 5 15 是否为空 否 是 是 是 是 是 是 键 主键 ID(编号) Userid(用户编号) UsereName(登录名) UserName(用户名) PassWord(密码) UserRole(用户权限) DepartName(部门名称) 5.2.2 医护人员信息表Sys_Doctor

包括Id 编号、DoctorId医生编号、DoctorName医生姓名、DepartName科室、Sex性别、Certification身份证、Birthday生日、WorkTime工作时间、Phone电话号码、Rank级别字段构成。

其中ID编号唯一确定一个医护人员信息。

表4.2.2 医护人员信息表

共 55 页 第 19 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

安徽大学 毕业设计(论文)说明书

名称 数据类型 int char char char char nvarchar char char nvarchar nvarchar 数据长度 4 10 10 10 2 20 10 10 20 20 是否为空 否 是 是 是 是 是 是 是 是 是 键 主键 Id(编号) DoctorId(医生编号) DoctorName(医生姓名) DepartName(科室) Sex(性别) Certification(身份证) Birthday(生日) WorkTime(工作时间) Phone(电话号码) Rank(级别) 5.2.3 科室表Sys_DepartMent

包括Id 编号、DepartId科室号、DepartName 科室名称、DepartLeader科室负责人、DepartLinker部门联系人、DepartPhone部门联系号码等字段构成。

其中ID编号为主键。

表4.2.3 科室表

名称 数据类型 int char nvarchar nvarchar 数据长度 4 10 15 10 是否为空 否 是 是 是 键 主键 Id(编号) DepartId(科室号) DepartName (科室名) DepartLeader(科室负责人) 共 55 页 第 20 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

安徽大学 毕业设计(论文)说明书

DepartLinker(部门联系人) DepartPhone部门联系号码 nvarchar nvarchar 10 15 是 是 5.2.4 药品供应商表Sys_Supplier

包括I_ID 编号、SuppId供应号、SuppName供应商、SuppAddress供应商地址、SuppLinker供应商联系人、SuppPhone供应商号码、SuppRank供应商等级等字段构成。

其中SuppId编号唯一确定一个药品供应商。

表4.2.4 药品供应商表

名称 数据类型 int int nvarchar nvarchar char nvarchar 数据长度 4 4 50 50 10 20 是否为空 是 否 是 是 是 是 键 主键 I_ID(编号) SuppId(供应号) SuppName(供应商) SuppAddress(供应商地址) SuppLinker(供应商联系人) SuppPhone(供应商号码) 5.2.5领料部门表Drug_UseDept

包括:I_id编号、UseDeptId领料部门号、UseDeptName领料部门名称。 其中I_id编号为主键。

共 55 页 第 21 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

安徽大学 毕业设计(论文)说明书

表4.2.5 领料部门表

名称 数据类型 int char nvarchar 数据长度 4 6 20 是否为空 否 是 是 键 主键 I_id(编号) UseDeptId(领料部门编号) UseDeptName(领料部门名称) 5.2.6 医保类型表Drug_MedicareType

包括:I_id编号、MedicareType医保类型、MedicareTypeId 医保类型编号。

其中I_id编号为主键。

表4.2.6 医保类型表

名称 数据类型 int char nvarchar 数据长度 4 4 6 是否为空 否 是 是 键 主键 I_id(编号) MedicareType(医保类型) MedicareTypeId (医保类型编号) 5.2.7药品单位表Drug_Unit

包括:I_id编号、Unit单位、UnitId单位编号。 其中I_id编号为主键。

表4.2.7 药品单位表

名称 数据类型 int char nvarchar 数据长度 4 4 4 是否为空 否 是 是 键 主键 I_id(编号) Unit(单位) UnitId(单位编号) 共 55 页 第 22 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

安徽大学 毕业设计(论文)说明书

5.2.8药品类别表Drug_Class

包括:I_ID编号、DrugClassName药品类别名称、DrugClassId药品类别编码、

其中I_ID编号为主键。

表4.2.8 药品类别表

名称 数据类型 nvarchar 数据长度 50 是否为空 是 键 DrugClassName (药品类别名称) DrugClassId (药品类别编号) I_ID编号 nvarchar 50 是 Int 4 否 主键 5.2.9药品表Drug

包括:ID编号、DrugCode药品编码、DrugName药品名称、DrugClass药品类别、DrugClassId药品类别编号、DrugKind药品规格、Unit单位、MedicareType医保类别、MinEndAmount最小库存数量、Maker 录入人员、MakeDate录入日期。

其中ID编号为主键。

表4.2.9 药品表

名称 数据类型 INT nvarchar nvarchar nvarchar nvarchar 数据长度 4 50 50 20 20 是否为空 否 是 是 是 是 键 主键 ID编号 DrugCode(药品编码) DrugName(药品名称) DrugClass(药品类别) DrugClassId(药品类别编号) 共 55 页 第 23 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

安徽大学 毕业设计(论文)说明书

DrugKind(药品规格) Unit(单位) MedicareType(医保类别) MinEndAmount(最小库存数量) Maker (录入人员) MakeDate(录入日期) char datetime 10 8 是 是 numeric 9(18,2) 是 nvarchar char char 50 5 6 是 是 是 5.2.10药品库存表Drug_Stock

包括:ID编号、DrugCode药品编码、DrugName药品名称、DrugClass药品类别、PiHao批号、DrugKind药品规格、Unit单位、InPrice进价、Ratio比例、OutPrice售价、MedicareType医保类别、MinEndAmount最小库存数量、Producer产地、SupName供应商、GMP GMP认证、ApprovalNo批准文号、InTime入库日期、ExpiryDate有效期、EndAmount最终数量。

其中ID编号为主键。

表4.2.10药房库存表

名称 数据类型 INT nvarchar nvarchar nvarchar nvarchar nvarchar char 数据长度 4 50 50 20 50 50 5 是否为空 否 是 否 是 是 是 是 键 主键 ID编号 DrugCode(药品编码) DrugName(药品名称) DrugClass(药品类别) PiHao(批号) DrugKind(药品规格) Unit(单位) 共 55 页 第 24 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

安徽大学 毕业设计(论文)说明书

InPrice(进价) OutPrice(售价) Producer(产地) SupName(供应商) EndAmount(最终数量) InTime(入库日期) ExpiryDate(有效期) Producer(产地) EndAmount(最终数量) numeric numeric nvarchar nvarchar numeric datetime datetime nvarchar numeric … (18,2) (18,2) 20 20 (18,2) 8 8 20 (18,2) … 是 是 是 是 是 是 是 是 是 … … … 5.2.11 药品入库表Drug_In

包括:ID编号、DrugCode药品编码、DrugName药品名称、DrugKind药品规格、Unit单位、PiHao批号、DrugClass药品类别、InPrice进价、Ratio比例、OutPrice售价、InAmount入库数量、TotaLPrice金额、EndAmount最终数量、InDate入库日期、ExpiryDate有效期、Producer产地、SupName供应商、MedicareType医保类别、MinEndAmount最小库存数量、GMP GMP认证、ApprovalNo批准文号、InvoiceNo入库单号、Maker录入人员、MakeDate录入日期、

其中ID编号为主键

表4.2.11药品入库表

名称 数据类型 INT nvarchar nvarchar 数据长度 4 50 50 是否为空 否 是 否 键 主键 ID编号 DrugCode(药品编码) DrugName(药品名称) 共 55 页 第 25 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

安徽大学 毕业设计(论文)说明书

DrugClass(药品类别) PiHao(批号) DrugKind(药品规格) Unit(单位) InPrice(进价) OutPrice(售价) InAmount(入库数量) TotaLPrice(金额) InDate(入库日期) … nvarchar nvarchar nvarchar char numeric numeric numeric numeric datetime … 20 50 50 5 (18,2) (18,2) (18,2) (18,2) 8 … 是 是 是 是 是 是 是 是 是 … … 5.2.12 药品入库日志表Drug_InDuty

包括:Id编号、BillId 单号、InvoiceNo入库单号、Maker录入人员、MakeDate录入日期、TotaLPrice金额、InDate入库日期

其中Id编号为主键

表4.2.12药品入库日志表

名称 数据类型 INT nvarchar numeric datetime nvarchar char 数据长度 4 50 9(18,2) 8 50 10 是否为空 否 是 是 是 是 是 键 主键 Id(编号) BillId (单号) TotaLPrice(金额) InDate(入库日期) InvoiceNo(入库单号) Maker (录入人员) 共 55 页 第 26 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

安徽大学 毕业设计(论文)说明书

MakeDate(录入日期) datetime 8 是 5.2.13 药品出库表Drug_OutDuty

包括:ID编号、DrugCode药品编码、DrugName药品名称、DrugKind药品规格、PiHao批号、DrugClass药品类别、Unit单位、OutPrice售价、OutAmount出库数量、TotaLPrice金额、InDate入库日期、OutDate出库日期、ExpiryDate有效期、Producer产地、SupName供应商、MedicareType医保类别、GMP GMP认证、ApprovalNo批准文号、BillId出库单号、Maker出纳员、MakeDate出库日期。

其中ID编号为主键。

表4.2.13药品出库表

名称 数据类型 INT nvarchar nvarchar nvarchar nvarchar nvarchar char numeric numeric numeric datetime datetime nvarchar 数据长度 4 50 50 20 50 50 5 9(18,2) 9(18,2) 9(18,2) 8 8 20 是否为空 否 是 否 是 是 是 是 是 是 是 是 是 是 键 主键 ID编号 DrugCode(药品编码) DrugName(药品名称) DrugClass(药品类别) PiHao(批号) DrugKind(药品规格) Unit(单位) OutPrice(售价) OutAmount(出库数量) TotaLPrice(金额) InDate(入库日期) ExpiryDate(有效期) Producer(产地) 共 55 页 第 27 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

安徽大学 毕业设计(论文)说明书

SupName(供应商) MedicareType(医保类别) GMP( GMP认证) ApprovalNo(批准文号) BillId(出库单号) Maker (出库员) MakeDate(出库日期) char nvarchar nvarchar char datetime 2 50 50 10 8 是 是 是 是 是 nvarchar char 50 6 是 是 5.2.14 药品出库日志表Drug_OutDuty

包括:Id编号、BillId出库单号、Maker出纳员、TotaLMoney金额、OutDate出库日期、OutKind出库去向、State状态、State状态编号

产地、SupName供应商、MedicareType医保类别、GMP GMP认证、ApprovalNo批准文号、InvoiceNo入库单号、Maker出纳员、MakeDate出库日期、

其中ID编号为主键

共 55 页 第 28 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

安徽大学 毕业设计(论文)说明书

表4.2.14药品出库日志表

名称 数据类型 INT varchar numeric datetime char char char int 数据长度 4 20 9(18,2) 8 10 10 6 4 是否为空 否 否 是 是 是 是 是 是 键 主键 Id(编号) BillId (出库单号) TotaLMoney(金额) OutDate(出库日期) OutKind出库去向 Maker (录入人员) State(状态) StateNo状态编号 备注:相关的字段在不同的表中仍然使用了同样的字段名用来标志他们的相关性。

共 55 页 第 29 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

安徽大学 毕业设计(论文)说明书

6 系统详细设计

6.1 系统界面设计

界面设计是为了满足软件专业化标准化的需求而产生的对软件的使用界面进行美化优化规范化的设计分支。具体包括软件启动封面设计,软件框架设计,按钮设计,面板设计,菜单设计,标签设计,图标设计,滚动条及状态栏设计,安装过程设计,包装及商品化。在设计的过程中有较多注意的关键问题。

这是一个越来越注重包装的社会,一切具有魅力的事物总让人无法抗拒。这就是为什么出色的外观设计对于服装、电子、日用品、食品等等几乎所有商品的销售与推广,都起着举足轻重的作用的原因。软件行业也不例外,外观靓丽,用户浏览起来赏心悦目,这对软件产品的销售无疑起着巨大的推动作用。

世界上成功的软件公司都非常重视软件界面的美化设计,因此,他们深刻了解在激烈的市场竞争中,仅仅有强大的功能是远远不够的,好的界面设计和用户体验会为产品增色不少,我们看微软的win2000,winXP等等哪一个不是界面设计精良,易用;我们再看看国内做得很成功的金山词霸的界面,从金山词霸3.0到金山词霸2001的界面设计变化堪称经典。

我们在界面设计保持了界面的一致性,既包括实用实用标准的控件,也指实用相同的信息表现方法,如在字体、标签风格、颜色、术语、显示错误信息等方面保持了一致。我们应尽量做到界面美观实用,人性化,富有创造性。美丽的界面能够让用户比较容易接受我们的软件,对我们的软件实施和推广带来了极大的方便。

本着友好、易用的原则,本系统的主界面由菜单和工作区组成,在屏幕的上方为主菜单区,显示本系统功能模块的主菜单。图示如下:

共 55 页 第 30 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

安徽大学 毕业设计(论文)说明书

图6.1 菜单

当用户通过菜单选择了所要进行的工作后,系统进入相应的处理功能,这时整个处理活动将在屏幕的中间区域——工作区进行。当用户的需求得到满足并将信息处理完毕后,系统将自动返回到进入处理之前的原始菜单显示状态。有以下几点设计原则:

1、界面友好,对输入的信息一目了然,对错误的输入有提示信息。 2、应尽量增加键盘快捷键,便于用户的操作,加强可操作性。

6.2系统的模块描述

6.2.1 用户登入模块

主要完成用户登录的功能,将用户名录入登陆口中。如果医护人员想要查看医院药品的基本信息,就必须登录。登录时必须正确填写用户名和密码。如果没有用户名或密码不正确,则不能完成登录界面与主界面之间的连接。输入已经存在的用户名和正确的密码,点击确定按钮,就会连接到数据库,如果数据正确,就会连接到系统的主界面,如果输入有误,则不能完成与主界面的连接。单击“退出”按钮,则会退出本系统。

共 55 页 第 31 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

安徽大学 毕业设计(论文)说明书

图6.2.1 用户登录界面

连接数据库的具体代码实现如下: //指定连接字符串

string sqlstr = \Catalog=Hospital_EMR2005;User ID=sa;Password=123456\//实例化SqlConnection对象并进行返回

SqlConnection myconn = new SqlConnection(sqlstr); return myconn;

6.2.2 修改密码模块

主要的用途就是:医护人员可以修改自己的密码,使用户根据需要设置简便易记忆的密码,同时能防止因密码泄露而对系统的安全性带来危害和影响,这在一定程度上对系统的安全性加以了保护。

图6.2.2修改密码

更新用户登入表中用户登入密码的具体代码实现如下: string str = \

共 55 页 第 32 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

安徽大学 毕业设计(论文)说明书

textRealPassWord.Text.Trim()

+ \myoperate.getcom(str);//执行Update语句

6.2.3 增加用户的模块实现

主要思想:在主窗口的基本信息栏中,用户管理的下拉框下选择增加用户来实现,该增加用户窗口最主要的功能是用来登录入药品管理系统时,管理员可根据需要添加新的登录用户并设置其基本信息,同时也方便我们查询已存在医护人员的一些基本登录信息,图示如下:

图6.2.3 增加用户

对用户登入表操作增加用户部分代码实现如下:

SqlDataReader sqlread = myoperate.getread(\用户编

号,Userename 用户登入名,Username 用户姓名,Password 密码,UserRole 用户权限,DepartName 所属部门 from Sys_Userlogin \TxtUserename.Text.Trim() + \//读取SqlDataReader sqlread.Read();

查询并显示已存在医护人员信息的部分代码实现如下: //获取医护人员信息

共 55 页 第 33 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

安徽大学 毕业设计(论文)说明书

DataSet mydataset = myoperate.getds (\用户编号,Userename 用户登入名,Username 用户姓名,Password 密码,UserRole 用户权限,DepartName 所属部门 from Sys_Userlogin where Userename like '\

TxtUserName.Text.Trim() + \TxtUserName.Text.Trim() + \用户信息表\this.DGVUser.DataSource = mydataset.Tables[0];

6.2.4 医护人员信息查询模块的实现

主要功能是根据输入医护人员的编号或者姓名对其一些基本信息进行查询,同时在表格中显示其相应的具体信息。图示如下:

图6.2.4医护人员信息查询

查询医护人员信息的部分代码实现如下:

//获取医护人员信息

DataSet mydataset = myoperate.getds(\DoctorId 医护编号,DoctorName 医护姓名,sex 性别,Certification 身份证,BirthDay 出生日期,WorkTime 工作时间,DepartName 科室,Phone 联系方式,Rank 医护职称 from Sys_Doctor where DoctorId like '\like '\医护人员信息表\this.DGVDoc.DataSource = mydataset.Tables[0];

5.2.5 药品类别设置模块的实现

药品类别设置模块的主要功能是具体查看药品的总类别,以及各类别下的子类别,它以树形和图表的形式显示出来,简明清晰。同时还可以根据需要增

共 55 页 第 34 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

安徽大学 毕业设计(论文)说明书

加或者删除某些药品类别。图示如下:

图6.2.5药品类别设置

查询药品分类信息的部分代码实现如下:

string sqll = \'\

SqlDataReader sqlread = myoperate.getread(sqll); sqlread.Read();//读取SqlDataReader if (sqlread.HasRows) {

string sqlsr = \药品类别 from Drug_Class

where( DrugClassId like'\+ sqlread[\+ \+ \

DataSet myds1 = myoperate.getds(sqlsr, \药品名称\ DGVDrugClass.DataSource = myds1.Tables[\药品名称\ }

6.2.6 药品设置模块实现

药品设置的实现:根据树形目录中所选择的药品的类别,可以查询其所对应的药品详细信息。同时根据用户输入的药品名,可以查看该药品的详细信息。同时可以使用户根据需要新增某类别下的药品,也可以删除某类别中的药品。图示如下:

共 55 页 第 35 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

安徽大学 毕业设计(论文)说明书

图6.2.6药品设置

查询药品信息的部分代码实现如下:

string sqll = \编码, DrugName 药品名称, DrugClass 药品类别, DrugKind 规格, Unit 单位, MedicareType 医保类别,MinEndAmount 最小库存量, Maker 录入者, MakeDate 录入日期 from Drug where DrugCode like '\textDrugCode.Text.Trim() + \ DataSet myds1Drug = myoperate.getds(sqll, \dGVDrug.DataSource = myds1Drug.Tables[\保存药品信息的部分代码实现如下:

//先删除后增加 //删除

myoperate.getcom(\

dGVDrug.CurrentRow.Cells[\药品类别\ //增加

for (int i = 0; i < dGVDrug.RowCount - 1; i++

{ myoperate.getcom(\DrugClassId, DrugKind ,Unit, MedicareType,MinEndAmount, Maker, MakeDate) \+

\+ dGVDrug.Rows[i].Cells[\编码\+ \ + dGVDrug.Rows[i].Cells[\药品名称\ + dGVDrug.Rows[i].Cells[\药品类别\ + dGVDrug.Rows[i].Cells[\药品类别\ + dGVDrug.Rows[i].Cells[\规格\ + dGVDrug.Rows[i].Cells[\单位\ + dGVDrug.Rows[i].Cells[\医保类别\

共 55 页 第 36 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

安徽大学 毕业设计(论文)说明书

+ dGVDrug.Rows[i].Cells[\最小库存量\

+ dGVDrug.Rows[i].Cells[\录入者\

+ dGVDrug.Rows[i].Cells[\录入日期\

5.2.7 药房药品库存统计模块的实现

药品设置的实现:根据树形目录中所选择的药品的类别,可以查询其所对应的药房库存药品的详细信息。同时也可根据用户输入的药品名称和批号,可以查看库存中国该药品的详细信息。图示如下:

图6.2.7药房药品库存统计

查询库存药品信息的部分代码实现如下:

//标记有效期

if (DataGridView1.Rows[i].Cells[\有效期\ {

DateTime dt = new DateTime();

dt = Convert.ToDateTime(DataGridView1.Rows[i].Cells[\有效期\

TimeSpan ts = dt - DateTime.Now;

if (DateTime.Compare(dt, DateTime.Now) < 0) {

DataGridView1.Rows[i].DefaultCellStyle.BackColor = Color.Red; }

else if (ts.Days < 90) {

DataGridView1.Rows[i].DefaultCellStyle.BackColor = Color.Yellow; } }

共 55 页 第 37 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

安徽大学 毕业设计(论文)说明书

6.2.8 药品购买信息录入模块的实现

根据用户需要选择药品去向、销售公司,用户可以输入药品名称来检索药品,选中要录入的药品按回车键或双击后相应的信息,会自动填入入库药品录入栏中对于的各项,同时也根据用户需要填写数量、有效期等信息。同时可根据入库单号来查询已入库的药品信息。

图示如下:

图6.2.8药品购买信息录入

在本模块和后面的药品调拨模块中,涉及到了对数据库的更新,删除等一系列操作,在此我主要用到了一些存储过程来帮我们完成这些相应操作。 存储过程(Stored Procedure)是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。它存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其它强大的编程功能。存储过程在创建时即在服务器上进行编译,所以执行起来比单个SQL语句快。

因此采用存储过程这种方式来解决问题是由它的一些优点决定的: 1.建立过程不会很耗系统资源,因为过程只是在调用才执行。

2.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。

共 55 页 第 38 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

安徽大学 毕业设计(论文)说明书

3.存储过程可以用于降低网络流量,存储过程代码直接存储于数据库中,所以不会产生大量T-sql语句的代码流量。

4.当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。 5.存储过程可以重复使用,可减少数据库开发人员的工作量

6.可维护性高,更新存储过程通常比更改、测试以及重新部署程序集需要较少的时间和精力。

7.代码精简一致,一个存储过程可以用于应用程序代码的不同位置。 8.增强安全性:

a、通过向用户授予对存储过程(而不是基于表)的访问权限,它们可以提供对特定数据的访问;

b、提高代码安全,防止 SQL注入(但未彻底解决,例如,将数据操作语言--DML,附加到输入参数);

下面介绍本模块一些主要存储过程的实现代码:

实现退库UpdateDrugIn的存储过程主要代码如下所示:

declare cur cursor for select

DrugCode,DrugKind,PiHao,InAmount,DrugId,DrugName,

DrugeName,Unit, InPrice, Ratio, OutPrice, Producer, SupName, DrugClass, MedicareType, ApprovalNo,GMP, InDate,

ExpiryDate,PharmacyName from Drug_In where InvoiceNo=ltrim(rtrim(@invoiceno)) order by

DrugCode,DrugKind,PiHao

open cur /*逐一获取药品编号、规格、批号、数量...*/ fetch next from cur into

@drugcode,@drugkind,@pihao,@sumsl,@drugid,@drugname,@drugename,@unit,@inprice,@ratio,@outprice,@producer,@supname,@drugclass,@medicaretype,@approvalno,@gmp,@intime,@expirydate,@pharmacyname while

@@fetch_status = 0 begin set @drugcode=ltrim(rtrim(@drugcode)) set @drugkind=ltrim(rtrim(@drugkind)) set @pihao=ltrim(rtrim(@pihao)) set @outprice=ltrim(rtrim(@outprice)) set @approvalno=ltrim(rtrim(@approvalno)) set @supname=ltrim(rtrim(@supname)) if exists (select DrugCode,DrugKind,PiHao,ApprovalNo from Drug_Stock where DrugCode = ltrim(rtrim(@drugcode)) and

DrugKind=ltrim(rtrim(@drugkind)) and PiHao=ltrim(rtrim(@pihao)) and OutPrice=ltrim(rtrim(@outprice)) and

ApprovalNo=ltrim(rtrim(@approvalno)) and

SupName=ltrim(rtrim(@supname)))

共 55 页 第 39 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

安徽大学 毕业设计(论文)说明书

/*更新结存*/ begin update Drug_Stock set EndAmount = EndAmount+@sumsl where DrugCode = ltrim(rtrim(@drugcode)) and

DrugKind=ltrim(rtrim(@drugkind)) and PiHao=ltrim(rtrim(@pihao)) and OutPrice=ltrim(rtrim(@outprice)) and

ApprovalNo=ltrim(rtrim(@approvalno)) and

SupName=ltrim(rtrim(@supname)) end else if not exists (select DrugCode,DrugKind,PiHao,ApprovalNo from Drug_Stock where DrugCode = ltrim(rtrim(@drugcode)) and

DrugKind=ltrim(rtrim(@drugkind)) and PiHao=ltrim(rtrim(@pihao)) and OutPrice=ltrim(rtrim(@outprice)) and

ApprovalNo=ltrim(rtrim(@approvalno)) and

SupName=ltrim(rtrim(@supname))) /*新增条目*/ begin /*通过参数提取当前游标所在行的值,添加到库存表*/ INSERT INTO Drug_Stock (DrugId, DrugCode, DrugName, DrugeName, DrugKind, PiHao,Unit, InPrice, Ratio,

OutPrice,EndAmount ,Producer, Supname, DrugClass, MedicareType, ApprovalNo, GMP, InTime, ExpiryDate, PharmacyName)

values( @drugid,@drugcode,@drugname,@drugename,@drugkind,@pihao,@unit,@inprice,@ratio,@outprice,@sumsl,@producer,@supname,@drugclass,@medicaretype,@approvalno,@gmp,@intime,@expir

ydate,@pharmacyname)end /*获取下一药品编号、规格、批号、数量...*/ end close cur

deallocate cur

6.2.9 药品调拨模块的实现

首先点击录入按钮,将会生成本次出库的药品单号,可选择领料部门,在药品名称方框中输入要查询的库存药品,同时键入回车键,将在库存药品中显示库存中药品的一些详细信息,选中所要调拨的药品按下回车或是双击该药品,此药品讲进入出库药品栏中,填写该药品的数量,按回车将会自动生成此次出库的总金额,同时在出库药品框的下方药费合计方框中,将显示此次出库药品的总金额,点击保存此药品讲进入出库表中,出库状态表中的状态字段设置为出库,同时执行减药品库存表中减库存数量操作。也可以点击删除按钮删除此出库药品栏中选中的药品,或者是在保存进入出库表后,点击退药按钮,将此次出库药品从出库表中的状态字段设置为退库,同时执行加库存操作。图示如下:

共 55 页 第 40 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

安徽大学 毕业设计(论文)说明书

图6.2.9药品调拨

实现退药TuiYao的存储过程主要代码如下所示:

declare cur cursor for select

DrugCode,DrugKind,PiHao,ApprovalNo,OutAmount from Drug_Out where BillId=ltrim(rtrim(@billid)) order by DrugCode

open cur fetch next from cur into

@drugcode,@drugkind,@pihao,@approvalno,@sumsl /*逐一获取药品编号、批号、数量*/ while

@@fetch_status = 0 begin set @drugcode=ltrim(rtrim(@drugcode)) set @drugkind=ltrim(rtrim(@drugkind)) set @pihao=ltrim(rtrim(@pihao)) set @approvalno=ltrim(rtrim(@approvalno)) /*更新结存*/ update Drug_Stock set EndAmount = EndAmount-@sumsl where

DrugCode = ltrim(rtrim(@drugcode)) and DrugKind=ltrim(rtrim(@drugkind))

and PiHao=ltrim(rtrim(@pihao))and ApprovalNo=ltrim(rtrim(@approvalno)) fetch next from cur into

@drugcode,@drugkind,@pihao,@approvalno,@sumsl /*获取下一药品编号、批号、数量*/

end close cur deallocate cur 实现更新库存UpdateDrugStock的存储过程主要:

declare cur cursor for select

DrugCode,DrugKind,PiHao,ApprovalNo,OutAmount from Drug_Out where

共 55 页 第 41 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

安徽大学 毕业设计(论文)说明书

BillId=ltrim(rtrim(@billid)) order by DrugCode open cur

fetch next from cur into @drugcode,@drugkind,@pihao,@approvalno,@sumsl /*逐一获取药品编号、批号、数量*/ while @@fetch_status = 0 begin set @drugcode=ltrim(rtrim(@drugcode)) set @drugkind=ltrim(rtrim(@drugkind)) set @pihao=ltrim(rtrim(@pihao)) set @approvalno=ltrim(rtrim(@approvalno)) /*更新结存*/ update Drug_Stock set EndAmount = EndAmount-@sumsl where

DrugCode = ltrim(rtrim(@drugcode)) and DrugKind=ltrim(rtrim(@drugkind))

and PiHao=ltrim(rtrim(@pihao))and ApprovalNo=ltrim(rtrim(@approvalno)) fetch next from cur into @drugcode,@drugkind,@pihao,@approvalno,@sumsl /*获取下一药品编号、批号、数量*/ end close cur deallocate cur

6.2.10 药品有效期模块的实现

可选择查看失效药品的种类,同时可选择查看到某个日期截止的失效药品信息。图示如下:

图6.2.10失效药品查询

6.2.11 月出库药品数量统计模块

对于某年每月的药品出库数量进行统计并以折线图形界面的形式显示出来。主要研究目的是:通过对各月份某种药品的出库数量,我们可以研究某些疾病如流感的发病高峰期,及时做好预防和库存药品补充的工作。

其界面图如下:

共 55 页 第 42 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

安徽大学 毕业设计(论文)说明书

图6.2.11月出库金额统计

具体使用到得一些画图函数如下所示: Bitmap bmap=new Bitmap(500,500) /定义图像大小;

bmap.Save(stream,imagecodecinfo) /将图像保存到指定的输出流; Graphics gph /定义或创建gdi绘图对像; PointF cpt /定义二维平面中x,y坐标; DrawString(string,font,brush,ponitf)

/用指定的brush和font对像在指定的矩形或点绘制指定的字符串; DrawLine(pen,ponit,ponit) /用指定的笔(pen)对像绘制指定两点之间直线; DrawPolygon(pen,ponit[]) /用指定的笔(pen)对像绘制指定多边形,比如三角形,四边形等等;

FillPolygon(brush,ponit[]) /用指定的刷子(brush)对像填充指定的多边形; DrawEllipse(pen,x,y,width,height) /用指定的笔绘制一个边框定义的椭圆; FillEllipse(brush,x,y,width,height) /用指定的刷子填充一个边框定义的椭圆; DrawRectangle(pen,x,y,width,height) /用指定的笔绘制一个指定坐标点、宽度、高度的矩形;

DrawPie(pen,x,y,width,height,startangle,sweepangle) /用指定的笔绘制一个指定坐标点、宽度、高度以及两条射线组成的扇形;

共 55 页 第 43 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

安徽大学 毕业设计(论文)说明书

6.2.12 月出库药品金额统计模块

对于某年每月的药品出库金额总数进行统计并以折线图形界面的形式显示出来。其界面图如下:

图6.2.12月出库金额统计

共 55 页 第 44 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

安徽大学 毕业设计(论文)说明书

7 软件测试和维护

7.1 软件测试

7.1.1 软件测试的概念

随着软件应用领域越来越广泛,其质量的优劣也日益受到人们的重视。质量保证也是软件开发的重要关卡,软件测试工作是软件质量保证的基本手段之一。 软件测试就是在软件交付用户使用或投入运行前,对软件需求规格说明、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。软件测试是为了发现错误而执行程序的过程。软件测试在软件生命周期中横跨两个阶段:通常在编写出每一个模块之后就需要对它做必要的测试(称为单元测试)。编码和单元测试属于软件生命周期中的同一个阶段。在结束这个阶段后对软件系统还要进行各种综合测试,如集成测试、系统测试、性能测试和配置测试等,这是软件生命周期的另一个独立阶段,即测试阶段。

软件测试的基本原则:

(1)尽早地、不断地进行软件测试。

(2)设计测试用例时,要给出测试的预期结果。 (3)开发小组和测试小组分开。

(4)要设计非法输入的测试用例。

(5)在对程序修改之后要进行回归测试。 (6)程序中尚未发现的错误的数量往往与在该段程序中已发现的错误的数来那个成正比。

7.1.2软件测试的目的

1、测试的最终目的是为了避免错误的发生,确保应用程序能够正常高效的运行; 2、好的测试用例在于发现至今未发现的错误; 3、成功的测试是发现了至今未发现的错误的测试;

4、好的测试工程师应该做到不仅发现问题,还能够帮助开发人员分析问题. 换言之,测试的目的是想以最少的时间和人力,系统地找出软件中潜在的各种错误和缺陷。如果我们成功地实施了测试,我们就能够发现软件中的错误。测试的附带收获是,它能够证明软件的功能和性能与需求说明相符合。实施测试收集到的测试结果数据为可靠性分析提供了依据。测试不能表明软件中不存在错误,它只能说明软件中存在错误。

大量统计资料表明,软件测试的目的是为了发现尽可能多的缺陷,不是为了说明软件中没有缺陷。其次成功的测试在于发现了迄今尚未发现的缺陷。所以测试人员的职责是设计这样的测试用例,它能有效地揭示潜伏在软件里的缺陷。

共 55 页 第 45 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

安徽大学 毕业设计(论文)说明书

7.1.3 软件测试的方法

黑盒测试:黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。黑盒测试方法主要有等价类划分、边值分析、因—果图、错误推测等,主要用于软件确认测试。“黑盒”法着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。

白盒测试:白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。“白盒”法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。“白盒”法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。

7.1.4项目测试的过程 黑盒测试过程

运行程序后进入登录窗体,输入用户名和密码以后进入主界面,在主界面中点击菜单栏进入各功能模块,对其的一些查看、修改、增加、删除等功能按钮进行测试,经测试各模块基本功能均能实现要求。。

白盒测试过程

在这么多测试当中,选取药品信息模块的测试来进行具体分析。在测试的过程中出现保存错误,错误提示如下所示:

分析可能出错的原因有数据库连接错误、SQL语句出错、字符转换出错。通过对代码设置中断,查看SQL语句,将其放于数据库中执行,看结果是否正确,发现SQL语句出错,通过修改SQL语句,保存成功。如下所示:

共 55 页 第 46 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

安徽大学 毕业设计(论文)说明书

经过反复测试,系统完成后运行添加、修改、查询等功能均正常。此系统仍存在许多缺陷,但是通过该系统设计达到了系统设计目的意义,基本掌握了软件开发的主要步骤,了解了各环节在开发时要注意的问题,从方便用户的角度出发,去考虑开发出好的软件。另外,在设计过程中也逐渐提高了软件开发技能和编程技能。因此本设计虽然较粗糙,但是从学习的角度上看,非常有意义。

7.2 系统的维护

维护阶段的关键任务是,通过各种必要的维护活动使系统持久地满足用户的需要。

通常有四类维护活动:

改正性维护,也就是诊断和改正在使用过程中发现的软件错误。 适应性维护,即修改软件以适应环境的变化。

完善性维护,即根据用户的要求改进或扩充软件使它更完善。 预防性维护,即修改软件为将来的维护活动预先做准备。

共 55 页 第 47 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

安徽大学 毕业设计(论文)说明书

结束语

毕业设计是我们将所学理论知识形成系统的一个锻炼的好机会,也是学校和老师检验我们学习成果的一个方法。通过这几个月的学习和实践,在老师的指导下设计并基本实现了药品信息管理系统的功能,期间我查阅了大量的资料,学到了不少知识。在此过程中我掌握了程序设计的步骤,同时也对C#.NET和SQL有了更深的了解和掌握。根据指导老师提出的对毕业设计的具体要求,在老师的指导下,终于编写完坊县医院药品管理系统这个小应用程序,但由于实践经验不足、对药品信息管理的了解还不够充分,本系统还有许多的不足之处。如只能实现简单的统计功能,药品信息管理中的一些详细的细节还不够完整。

在设计的过程中,我也遇到了很多的困难,一开始对数据库的一系列操作还不够清楚,通过老师指导以及上网查询一些资料最终得到解决,同时在入出库单号的自动生存,树形目录的生成,数据的折线显示,以及实现库存药品动态变化的一些存储过程的编写时也遇到了一定的困难。通过编写这个程序让我学会了很多以前不会的东西,也让我对所学的知识有了更深一步的了解,同时更重要的是让我大学四年来所学的东西得到了最充分的运用。在这次次软件过程中,让我感受最深的是:要作好一个软件,开发者除了必须具备优秀的编程理论知识外,还应具有很强的实践能力,要能充分了解系统需求,优化设计,最终实现。并且要有很好的人际沟通能力,这样才能集思广益,将自己和他人的看法意见很好的融合在一起,从而使系统更加的符合人们的要求。

在整个过程中,我学到了新知识,增长了见识。在今后的日子里,我仍然要不断地充实自己,争取在所学领域有所作为。 我想这是一次意志的磨练,是对我实际能力的一次提升,也会对我未来的学习和工作有很大的帮助。

共 55 页 第 48 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

安徽大学 毕业设计(论文)说明书

致 谢

通过这次毕业设计,我从中受到了很大的教育和启迪,在系统设计过程中用到了很多以前上课时学的知识,尤其是老师上课教给我们的一些分析问题、解决问题的方法和思路,在这次项目中都得到了很好的运用,使我在这些方面能够很快有所领会。

首先我衷心感谢我的指导老师,我从老师身上学到了很多东西。季老师认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我获益非浅。他无论在理论上还是在实践中,都给与我无私帮助和悉心的教导,使我的毕业设计得以顺利地按时完成。整个毕业设计的完成凝聚着导师的辛勤汗水,导师严谨的治学态度和求实、进取的工作作风无不鞭策着作者不断努力探索,奋发向上,他敏锐的洞察力和孜孜不倦的教诲使作者受益匪浅,并将受益终身。值此论文即将完成之际,作者谨向导师致以衷心的感谢和崇高的敬意!

由于本人水平有限,文中难免会有不尽人意之处,在此希望各位老师和读者给予批评指正,不胜感激!

共 55 页 第 49 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

安徽大学 毕业设计(论文)说明书

参考文献

[1] 刘韬,骆娟,何旭洪编著.Sql2005 数据库系统开发实例导航.北京:人民邮

电出版社,2007

[2] 王晟.《数据库开发经典案例解析》.北京:清华大学出版社,2005 [3] 闪四清.《SQL SERVER 实用简明教程》. 北京:清华大学出版社,2007. [4] 萨师煊,王珊. 数据库系统概论(第三版).北京:高等教育出版社,2008 [5] 李代平. 软件工程(2版),北京:清华大学出版社,2008 [6] 王小科.C#开发实战宝典 ,北京: 清华大学出版社, 2010

[7] 李佳,付强,丁宁等编著.C#开发技术大全,北京:清华大学出版社,2009 [8] Simon Robinson,Ollie Cornes著,康博译.《C#高级编程》,北京:清华大学出

版社.2006.

[9] James A.O Brien. Introduction to Information Systems, 北京:高等教育出版社,2002

共 55 页 第 50 页

本文来源:https://www.bwwdw.com/article/g6u8.html

Top