Bootstrap

药品管理信息系统

药品管理信息系统

摘   要

药品管理信息系统用计算机管理药方药品管理的一种计算机应用技术的创新,在计算机还未普及之前药房药品管理都是由工作人员手工书写的方式来操作的.现在一般的药品都采用计算机智能化管理,采用计算机作为工具的实用的计算机药品库存管理程序来帮助管理员进行更有效的药品管理工作。药品管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两方面。对于前者要求建立起数据一致性和完整性强,数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。经过分析,我使用 Microsoft公司的 Visual C++开发工具,利用其提供的各种面向对象的开发工具,尤其是数据窗口这一能方便而简洁操纵数据库的智能化对象,首先在短时间内建立系统应用原型,然后,对初始原型系统进行需求迭代,不断修正和改进,直到形成用户满意的可行系统。因为本人能力有限,加上时间紧迫,所以设计出来的本系统可能功能比较简单,另外本系统是单机版,不能实现网络互联操作,这些都有待于我在以后的工作学习中进一步改进。

关键字:药品管理;MIS;Visual C++;数据库

Abstract

 Drug Management Information System computer management prescription drugs with a computer application management technology innovationnot on the computer before the popularity of  Pharmacy medicines management of drugs by staff members hand-written approach to the operation. Drugs are now generally intelligent use of computer management, computer as a tool for practical computer drug inventory management procedures to help administrators more effective medicines management. Pharmaceutical management system is a typical management information system (MIS), including the development of its background of the establishment and maintenance of the database as well as front-end application development issues. The former set up the requirements for data integrity and consistency of strong data security a good library. For the latter applications require full-featured and easy to use and so on. After analysis, we use Microsoft's Visual C++ development tools, provided by the use of a variety of object-oriented development tools, in particular, the data window can be simple and easy to manipulate intelligence database objects, first of all in a short period of time to establish systems Application of the prototype, and then, the initial prototype of the system needs iteration, constantly revised and improved customer satisfaction until the formation of a viable system. Because I have a limited capacity and the tight time frame, so designed the system function may be relatively simple, while the system is a stand-alone version of Internet network can not operate, which are to be in my future work to further improve learning.

KeywordsDrug Management, MIS, Visual C++, Database

目   录

药品管理信息系统

   

Abstract

1绪 论

1.1开发背景

1.2开发环境

1.2.1 Visual C++简介

1.3数据库介绍

1.3.1 SQL Server简述

1.4硬软件需求

1.4.1硬件要求

1.4.2软件要求

2需求分析

2.1需求分析的意义

2.2用户需求分析

2.2.1系统的可行性研究

2.2.2系统的详细调查

2.2.3系统的功能需求

2.2.4系统的性能需求

2.2.5系统各模块的详细需求

3系统设计

3.1系统功能简述

3.2数据库设计

3.2.1数据库概念结构设计

3.2.2数据库逻辑结构设计

4系统的实现

4.1登录界面设计

4.1.1用户验证部分代码

4.1.2设计思想

4.2系统主界面设计

4.3系统菜单设计

4.3.1药品信息模块的设计

4.3.2库存信息模块的设计

4.3.3销售信息模块的设计

4.3.4顾客信息模块模块的设计

4.3.5员工信息管理模块的设计

4.3.6数据库备份与恢复

5系统软件测试

5.1系统测试

5.1.1系统测试目的

5.1.2系统测试基本原则

5.1.3系统测试方法

5.2基础模块功能测试

5.2.1登录模块

5.2.2药品信息管理模块

5.2.3库存信息模块

5.2.4销售信息模块

5.2.5顾客信息模块

5.2.6员工信息模块

5.2.7数据备份与恢复模块

总    结

致    谢

参考文献

1绪论

1.1开发背景及意义

随着信息技术的进步和信息时代的来临,管理信息系统即MIS。在现代社会中变得越来越普及,它跨越了管理科学、系统科学、运筹学、统计学以及计算科学,从而形成一个纵横交错的系统。

20世纪,随着全球经济的蓬勃发展,众多的经济学家纷纷提出新的管理理论。20世纪中叶,西蒙提出管理依赖于信息和决策的思想。同时维纳也发表了控制论。1958年,比尔.盖尔在书中写到:管理将以较低的成本得到及时准确的信息,做到较好的控制 

 1985年,管理信息系统的创始人,明尼苏达大学的管理学教授Gordon B. David给管理信息系统下了一个比较完整的定义,即管理信息系统是一个利用计算机软硬件资源以及数据库的人—机系统。它能提供信息支持企业或者组织的运行、管理和决策功能。它全面说明了管理的目标,功能和组成,同时反映了管理信息系统在当时达到的水平。

计算机用于管理是现代化管理的需要,是管理现代化的必然,尤其对药品管理来说是相当重要的。如果依然采用手工管理方法,其工作效率低,错误多,不利于存储和管理。本系统改善了传统的管理方式,从而节约人力,物力,提高工作的效率,减轻药品管理人员的工作负担,使药品信息的管理简洁化、自动化、计算机化[1]

1.2开发环境

1.2.1 Visual C++简介

Visual C++是一个功能强大的可视化软件开发工具。自1993Microsoft公司推出Visual C++1.0后,随着其新版本的不断问世,Visual C++已成为专业程序员进行软件开发的首选工具。

  虽然微软公司推出了Visual C++.NET(Visual C++7.0),但它的应用的很大的局限性,只适用于Windows 2000,Windows XPWindows NT4.0。所以实际中,更多的是以Visual C++6.0为平台。

Visual C++6.0不仅是一个C++编译器,而且是一个基于Windows操作系统的可视化集成开发环境integrated development environment,IDEVisual C++6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。 这些组件通过一个名为Developer Studio的组件集成为和谐的开发环境。

Visual C++它大概可以分成三个主要的部分:

1. Developer Studio,这是一个集成开发环境,我们日常工作的99%都是在它上面完成的,再加上它的标题赫然写着“Microsoft Visual C++”,所以很多人理所当然的认为,那就是Visual C++了。其实不然,虽然Developer Studio提供了一个很好的编辑器和很多Wizard,但实际上它没有任何编译和链接程序的功能,真正完成这些工作的幕后英雄后面会介绍。我们也知 道,Developer Studio并不是专门用于VC的,它也同样用于VBVJVIDVisual Studio家族的其他同胞兄弟。所以不要把Developer Studio当成Visual C++, 它充其量只是Visual C++的一个壳子而已。这一点请切记!

2. MFC。从理论上来讲,MFC也不是专用于Visual C++Borland C++C++ BuilderSymantec C++同样可以处理MFC。同时,用Visual C++编写代码也并不意味着一定要用MFC,只要愿意,用Visual C++来编写SDK程序,或者使用STLATL,一样没有限制。不过,Visual C++本来就是为MFC打造的,Visual C++中的许多特征和语言扩展也是为MFC而设计的,所以用Visual C++而不用MFC就等于抛弃了Visual C++中很大的一部分功能。但是,Visual C++也不等于MFC

3. Platform SDK。这才是Visual C++和整个Visual Studio的精华和灵魂,虽然我们很少能直接接触到它。大致说来,Platform SDK是以Microsoft C/C++编译器为核心(不是Visual C++,看清楚了),配合MASM,辅以其他一些工具和文档资料。上面说到Developer Studio没有编译程序的功能,那么这项工作是由谁来完成的呢?是CL,是NMAKE,和其他许许多多命令行程序,这些我们看不到的程序才是构成 Visual Studio的基石。

1.3数据库介绍

1.3.1 SQL Server简述

SQL是英文Structured Query Language的缩写,意思为结构化查询语言。SQL语言的主要功能就是同各种数据库建立联系,进行沟通。按照ANSI(美国国家标准协会)的规定,SQL被作为关系型数据库管理系统的标准语言。SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。目前,绝大多 数流行的关系型数据库管理系统,如Oracle, Sybase, Microsoft SQL Server, Access等都采用了SQL语言标准。虽然很多数据库都对SQL语句进行了再开发和扩展,但是包括Select, Insert, Update, Delete, Create,以及Drop在内的标准的SQL命令仍然可以被用来完成几乎所有的数据库操作。

SQL Server

SQL Server 是一个关系数据库管理系统。它最初是由Microsoft Sybase 和Ashton-Tate三家公司共同开发的,于1988 年推出了第一个OS/2 版本。在Windows NT 推出后,MicrosoftSybase 在SQL Server 的开发上就分道扬镳了,Microsoft SQL Server 移植到Windows NT系统上,专注于开发推广SQL Server 的Windows NT 版本。Sybase 则较专注于SQL ServerUNIX 操作系统上的应用。

SQL Server 2000 是Microsoft 公司推出的SQL Server 数据库管理系统,该版本继承了SQL Server 7.0 版本的优点,同时又比它增加了许多更先进的功能。具有使用方便可伸缩性好与相关软件集成程度高等优点,可跨越从运行Microsoft Windows 98 的膝上型电脑到运行Microsoft Windows 2000 的大型多处理器的服务器等多种平台使用。

SQL Server 2005

SQL Server 2005 是一个全面的数据库平台,使用集成的商业智能 (BI) 工具提供了企业级的数据管理。SQL Server 2005 数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使您可以构建和管理用于业务的高可用和高性能的数据应用程序。

SQL Server 2005 数据引擎是本企业数据管理解决方案的核心。此外 SQL Server 2005 结合了分析、报表、集成和通知功能。这使您的企业可以构建和部署经济有效的 BI 解决方案,帮助您的团队通过记分卡、DashboardWeb services 和移动设备将数据应用推向业务的各个领域。

Microsoft Visual StudioMicrosoft Office System 以及新的开发工具包(包括 Business Intelligence Development Studio)的紧密集成使 SQL Server 2005与众不同。无论您是开发人员、数据库管理员、信息工作者还是决策者,SQL Server 2005 都可以为您提供创新的解决方案,帮助您从数据中更多地获益。  

1.4硬软件需求

1.4.1硬件要求

(1)CPU:至少Pentiums以上(建议使用Pentiums以上);

(2)显示器:彩色显示器;

(3)显卡:显存8M以上的图形加速卡;

(4)硬盘:Visual C++6.0版完全安装至少300MB, 建议使用10GB以上容量的硬盘;

(4)内存:32MB 以上的RAM(建议使用64MB以上);

1.4.2软件要求

 Visual C++ 6.0版及SQL Server 2005

2系统分析

2.1需求分析的意义

软件工程理论认为,在软件生命周期中,需求分析(Requirements Analysis)是最重要的一个阶段。软件需求分析的质量对软件开发的影响是深远的、全局性的,高质量需求对软件开发往往起到事半功倍的效果,所谓磨刀不误砍柴功。在后续阶段改正需求分析阶段产生的错误将付出高昂的代价。

现在人们越来越认识到软件工程在软件开发中的重要作用。目前国内软件在开发中还没有对软件开发的过程进行明确规定,文档不完整,也不规范,软件项目的成功往往归功于软件开发组的一些杰出个人或小组的努力。这种依赖于个别人员上的成功并不能为全组织的软件生产率和质量的提高奠定有效的基础,只有通过建立全过程的改善,采用严格的软件工程方法和管理,并且坚持不懈地付诸实践,才能取得全组织的软件过程能力的不断提高,使软件开发更规范合理。

2.2用户需求分析

2.2.1系统的可行性研究

可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决,实质上是要进行一次大大压缩简化了的系统分析和设计的过程,也就是在较高层次上以较抽象的方式进行的系统分析和设计的过程.我们可以从以下三方面研究可行性:

1、技术可行性:用手工完成数据的录入相当复杂,此系统用一定的技术可完成自动操作。

2、经济可行性:使用本系统可以高效的节省时间,从而为用户赢利。

3、操作可行性:本系统的操作简单,适用于任何的用户。

通过初步调查分析,了解到现有的管理方式存在的问题,建立了药品管理信息系统的初步设想,进一步对系统的需求进行分析研究得到系统的目标如下[3]

按照信息管理系统开发的原理和方法,采用成熟的信息技术和手段,支持药品管理工作的全过程,减小管理的日常工作量,使信息易于保存、管理和查询,并且支持决策功能。根据现有的形式和不足,得出所要开发的药品管理信息系统主要分为六大模块:

1. 信息管理模块 2. 库存信息模块3. 销售信息模块 4. 顾客信息模块5. 员工信息模块 6.数据备份与恢复模块

通过对拟建系统的初步方案的分析得出:所要开发的系统主要是利用现有的条件,在配置相对较低的计算机设备来完成的。因此,新系统对机器设备的要求不高,在设备较高的机器中,新系统运行的会更稳定,更迅速,具有技术可行性。新系统开发完毕后,对操作人员来说,只要有过操作Windows xp的经历,都能够较顺利的操作。从总体的结构来说操作简洁,易于录入和查询信息,从而方便了用户。在经济可行性方面,药品管理也不必为新系统的开发使用购进任何特别设备。新系统运行后,会极大地提高整个药品管理过程的效率,大大节省了人力,物力,精力。

2.2.2系统的详细调查

为了对现行的药品管理的过程有一个更充分的了解,使所开发出来的新系统具有一定的实用性,有必要对现行的药品管理过程进行详细调查,通过对药品管理的实地考察,现行的药品管理过程致如下:

药店购入本软件后,应该将药品信息添加到初始化数据模块。然后有新药品购进后,首先要输入药品信息,药品信息变动后要更新信息,药品的信息通过查询的条件,可以查询出当前药品信息。对于药品的销售、药品的购进及顾客的退药信息,也要有记录。而且药店中的员工,也要统一的管理,利用员工信息管理模块,来添加销售人员信息,对于销售人员信息发生变化的,要及时更新信息。系统根据各项记录。

通过以上的调查分析,鉴于该系统比较庞大,在较短的时间内开发出来是不现实的。目前,只能依靠软件开发的原型法来首先开发一个简单的雏形,在以后的使用过程中逐步的完善其功能。

2.2.3系统的功能需求

1管理的及时性、方便性

本系统可以方便的,更好的管理药品信息,可以对药店店的药品、顾客、销售人员进行及时的管理,对其信息的修改及时的更新。

2查询灵活性

药品管理信息系统可以由管理员管理,其他用户可以实现查询功能,实现系统的灵活性。

3. 功能拓展性

本系统还增加了对记数据库的备份与恢复的模块,能够有效的避免药品信息在的丢失,方便管理人员对药品有效的管理,是损失达到最小。

2.2.4系统的性能需求

1. 实用性

考虑到要尽量满足各角色功能需求的前提下,又要适应各角色的工作特点,该系统做到简单、实用、人性化,实现了方便管理,轻松减负。

2. 可靠性

系统内输入的信息要求符合实际情况,以达到信息的可靠性,这是人为操作。软件本身的可靠性体现在对数据的操作,数据的操作基本以数据库后台操作来实现的,具有一定的封装。数据库有权限,可以有效的保护好数据库中的数据,具有一定的可靠性。

3. 简洁自动性

本系统改变原有手动管理药品信息的方式,变得自动化,使用起来轻松方便。

2.2.5系统各模块的详细需求

鉴于以上需求分析,初步总结出该系统中各模块的详细功能需求,如下图2.2系统功能模块说明所示

2.2 系统功能模块说明

3系统设计

3.1系统功能简述

基于以上的需求分析,总结出系统主要模块的功能如表3.1系统功能简述所示:

3.1 系统功能简述

编号

功能模块

功能描述

1

药品信息管理

药品的基本信息记录,包括生产厂家、供应商等信息

2

库存信息管理

对药品的库存进行记录

3

销售信息管理

对销售信息、报损、利润等信息进行记录和管理

4

顾客信息管理

对顾客的信息进行管理

5

员工信息管理

对员工信息的录入修改及查询

6

数据备份与恢复

对数据进行备份和恢复

3.2数据库设计

3.2.1数据库概念结构设计

根据以上的总体分析,得出系统的实体有:学生实体,课程实体,成绩实体,奖励实体,惩罚实体以及学籍变动实体各个实体具体的描述E-R图,如图3.7酒店信息E-R图所示:

                                                                   

                                                                    

           图3.1药品管理信息E-R

3.2.2数据库逻辑结构设计

在系统的数据库设计中,首先对系统的分析得到的数据库字典中的数据存储进行分析

3.2 MedicClass(药品类型)

字段号

字段名

数据类型

数据长度

1

classCode

varchar

20

2

className

varchar

30

3.3 MedicForm(药品剂型)

字段号

字段名

数据类型

数据长度

1

formCode

varchar

20

2

formName

varchar

20

3.4 ManuInfo(生产厂家信息)

字段号

字段名

数据类型

数据长度

1

manuCode

varchar

20

2

manuName

varchar

40

3

 manuAddress

varchar

70

4

manuPhone

numeric

15

5

 manuContact

varchar

10

6

  manuRemarks

varchar

120

3.5 SupplierInfo(供应商信息)

字段号

字段名

数据类型

数据长度

1

supplierCode

varchar

20

2

supplierName

varchar

40

3

supplierAddress

varchar

70

4

supplierPhone

numeric

15

5

   supplierRemarks

varchar

120

3.6 CustomerInfo(顾客信息)

字段号

字段名

数据类型

数据长度

1

customerCode

varchar

7

2

customerName

varchar

20

3

customerUnits

varchar

70

4

  customerAddress

varchar

70

5

customerPhone

numeric

15

6

7

8

customerFax

  customerZipCode

  customerRemarks

varchar

numeric

varchar

20

10

120

3.7 SalesManInfo(员工信息)

字段号

字段名

数据类型

数据长度

1

salesCode

varchar

7

2

salesName

varchar

20

3

   salesAddress

varchar

70

4

  salesPhone

numeric

15

5

   salesRemarks

varchar

120

3.8 Medicine(药品信息)

字段号

字段名

数据类型

数据长度

1

medicCode

 varchar

10

2

medicName

 varchar

20

3

medicChemicalName

 varchar

30

4

  medicBarCode

 numeric

15

5

medicSpeci

 varchar

10

6

7

8

9

10

11

12

12

14

medicUnit  medicLot

  classCode

formCode

manuCode

supplierCode

maxRetailPrice

minRetailPrice

medicRemarks

 varchar

 varchar

 varchar

money

 varchar

 varchar

money

money

varchar

10

20

20

20

20

20

120

3.9 DrugRecords(购药记录)

字段号

字段名

数据类型

数据长度

1

documentCode

varchar

2

medicCode

varchar

10

3

medicName

varchar

20

4

  supplierCode

varchar

20

5

dateStorage

datetime

6

7

8

9

10

11

ValidDate  

quantity

  medicLot

purchasePrice

retailPrice

SlottingNomber

Datetime

int

varchar

money

money

numeric

20

10

3.10 Stock(库存信息)

字段号

字段名

数据类型

数据长度

1

documentCode

int

2

medicCode

varchar

10

3

medicName

varchar

20

4

  supplierCode

varchar

20

5

dateStorage

datetime

6

7

8

9

10

11

ValidDate  

quantity

  medicLot

purchasePrice

retailPrice

SlottingNomber

datetime

numeric

varchar

money

money

numeric

10

20

10

3.11 ReportedLoss(报损信息)

字段号

字段名

数据类型

数据长度

1

documentsCode

int

2

medicCode

varchar

10

3

medicName

varchar

20

4

  medicLot

varchar

20

5

purchasePrice

money

6

7

8

9

10

11

12

retailPrice  

quantity

  sumPrice

lossDate

reason

stockCode

manuCode

money

int

money

datetime

varchar

int

varchar

120

20

3.12 SaleDrug(药品销售型)

字段号

字段名

数据类型

数据长度

1

documentCode

int

2

3

4

5

6

7

8

9

10

11

12

medicCode

customerCode

salesCode

purchasePrice

retailPrice

actualPrice

quantity

sumPrice

retailDate

stockCode

lot

varchar

varchar

varchar

money

money

money

int

money

datetime

int

varchar

10

7

7

20

3.13 ReturnInfo(退药信息)

字段号

字段名

数据类型

数据长度

1

documentCode

int

2

3

4

5

6

7

8

9

10

11

12

13

14

15

medicCode

customerCode

salesCode

purchasePrice

retailPrice

actualPrice

quantity

sumPrice

retailDate

stockCode

lot

returnDate

reason

saleDocu

varchar

varchar

varchar

money

money

money

int

money

datetime

int

varchar

datetime

varchar

int

10

7

7

20

120

3.14 UserInfo(系统用户)

字段号

字段名

数据类型

数据长度

1

userID

varchar

8

2

userPassword

varchar

6

4系统的实现

友好的系统用户界面是系统成败的关键,用户操作的方便是很关键的,对于用户,界面就是系统本身。用户关心的主要问题是:能否有效的,方便的,更好的使用软件,而不是系统内部的算法或数据结构。从这个角度出发,本系统主要设计了友好的、易于操作的用户界面。下面简单的介绍一下本系统中设计的人机界面:

4.1登录界面设计

数据库系统的用户的权限是数据库的安全措施之一,它保证了非授权用户的非法进入,而破坏数据库的信息,使那些权限较低的用户不能来修改数据库的信息。使操作人员各尽其责,责权分明。该窗口是在后台有一用户管理的用户表,登陆时访问该数据表的内容,验证用户名是否正确,正确后并验证用户的权限而登陆。在此设计的过程中是通过一个密码框来实现数据的录入的,以免其他用户看见操作员的密码,保证系统的安全性,如图4.1系统登陆验证窗口所示:

4.1 系统登陆验证窗口

如果密码输入不正确,则提示错误,如图4.2所示:

4.2 密码错误提示窗口

图4.3连续3次输入出错

在上面的用户一栏中需要输入用户的用户名,下面的文本框是输入密码的文本框,以星号显示,输入后按Enter键或点击登陆按钮即可进入系统,点击取消退出系统的登陆。

4.1.1用户验证部分代码

CLoginDlg dlg;

CString strSQL;

CUserInfo rd;

while(count<3)

{

if(dlg.DoModal()==IDOK)

{

count++;

strSQL.Format("select * from UserInfo where userID='%s' and userPassword='%s'",dlg.m_UserName,dlg.m_UserPswd);

rd.Open(CRecordset::forwardOnly,strSQL);

if(rd.GetRecordCount()==0)

{

rd.Close();

if(count==3)

{

AfxMessageBox("输错3次,自动退出!");

exit(0);

}

AfxMessageBox("用户名或密码错误!");

continue;

}

else

{

AfxMessageBox("成功登录!");

rd.Close();

EndDialog(dlg,0);

break;

}    

}

else

  exit(0);

}

4.1.2设计思想

密码验证部分的程序流程图如图4.1、4.2、4.3所示:

用户根据不同用户的名称输入相应的密码,密码正确后可进入系统主界面,对系统进行操作。当用户前两次输入错误时,系统将提示“用户名或密码错误!”并等待重新输入。当第三次输入错误时会提示“输错3次,自动退出!”,退出整个系统。

4.3密码确认窗口的程序流程图

密码验证部分是系统设计过程中的最关键的一部分,如果稍有疏忽便使得非法用户进入系统,更改重要的信息,破坏整个系统。带来的损失是不可估计的,因而在开发数据库时必须把好这一关,这是作为一个开发者必须做到的一点,是每个开发数据库管理信息系统的人员对每个用户的承诺。从而保证了用户的信息安全性[6]

4.2系统主界面设计

进入系统后的主界面如图4.4窗口主界面所示:

4.4窗口主界面

4.3系统菜单设计

在本系统中主要包括4个主菜单:初始化数据、管理、查询、数据库备份恢复等。为了方便用户的使用在主窗口中是按照模块的划分来设计菜单的,这样清晰明了,操作便捷[5]。设计的菜单如图4.5菜单设计所示:

4.5菜单设计

下面就4个不同的菜单中应用的不同技术个别予以介绍:

4.3.1药品信息模块的设计

药品信息管理模块主要实现对药品信息的管理方便及时的让管理人员了解药品的信息,包括添加、修改、删除以及退出四个部分,用户可以根据自己的需要进行选择。本模块主要是帮组管理人员初始药品基本信息,可以及时的对所有药品的信息进行操作,以便得知药品的全部信息,满足操作者的需求。

首先介绍添加基本资料窗体:

通过该窗体用户可以添加药品的基本信息, 用户也可以点击添加后保存,取消将不保存。这里主要实现了对表的信息录入,实现了对表的信息删除。在输入药品信息之前要对药品的类型、剂型、生产厂家和供应商信息进行初始化。本界面应用到了List Control、Button、EditBox控件。

窗口界面如图4.6药品基本情况录入窗口所示:

4.6药品基本情况录入窗口

4.3.2库存信息模块的设计

库存信息模块主要实现对药品的管理,包括两种方式进去库存和修改库存,当药品入库时,可以选择A、B两种方式进入库存,修改时点击修改库存可进入到修改库存界面,用户可以根据实际的需要进行选择。

其中应用到了Button件的使用。

窗口界面如图4.7入住基本情况录入窗口所示:

4.7选择进入库存方式窗口

点击方式A进入库存按钮出现如图4.8所示

4.8A方式进入库存窗口

方式A进入库存主要实现当添加的药品批号等不同的药品时进行入库,点击入单将要入库的药品将显示到下面的ListControl控件中,同时激活登记入库删除入单和新单按钮。删除入单可以去除入ListControl中的条目,当空间中的条目为零时,登记入库、删除入单和新单按钮将处于未被激活状态。登记入库把数据保存到数据库中,同时入单、删除入单和登记入库按钮处于未被激活状态。新单可以新建一个入库单,同时激活入单按钮并使登记入库、删除入单和新单按钮处于未被激活状态。本界面用到了ListControl、Button、EditBox、DateTimePicker等控件。

处理按钮激活与未被激活关键代码如下:

m_StockButton.EnableWindow(FALSE);

m_NewDocuButton.EnableWindow(TRUE);

m_DocuButtong.EnableWindow(FALSE);

m_DeleteDocuButton.EnableWindow(FALSE);

 方式B进入库存与方式A进入库存类似,不过要求进入库存的药品是库存中已经存在的,批号及药品编码必须相同否则就用方式A进入库存。

 药品报损功能,对药品因意外或过期等原因引起药品失效而进行的处理,同时修改库存中相应药品的数量。因为是报损,所以相较销售开单只需要输入报损药品的编号、批号和数量、报损原因。

 报损查询,对已经报损的药品进行不同条件的查询。方便管理人员对报损情况的掌握。

库存盘点,是管理人员能够掌握药品的库存量。同时可以对库存进行不同条件的查询,对零库存和过期药品进行处理。

4.3.3销售信息模块的设计

销售信息管理模块主要实现药品销售信息管理,包括药品销售开单、顾客退药、销售查询、退药查询、进销售情况统计、销售利润查询等子功能,此功能能够使药品管理人员方便快捷的了药品的销售信息,也为药品的定期结算提供了可靠的依据。用户可以根据自己的需要进行选择。

首先介绍销售开单窗体 

通过该窗体用户可以添加药品的销售基本信息,用户可以点击入单后将售药信息添加到ListControl控件中,取出入单将删除ListControl控件中的条目,登记入库将售药信息保存到数据库,退出将不保存。这里主要实现了对表的信息录入,实现了对表的信息删除。在本界面中,入单、去除入单和登记入库按钮也能够处于激活和未激活状态。其中应用到了ListControl、EditBox、Button等控件。

销售基本情况录入设计

窗口界面如图4.9销售基本情况录入窗口所示:

4.9销售基本情况录入窗口

销售查询,通过此功能,工作人员能够准确的掌握药品的销售情况。

进销售情况统计,对一定时间段、一定药品等的销售情况进行统计。能够对进销售药品的总数量和总金额有一个完全的掌握。

4.3.4顾客信息模块模块的设计

顾客信息管理模块主要实现顾客信息管理,用户可以根据系统给定的一个或者几个条件来完成查询,查询结果可以清晰的显示出来,方便管理人员对顾客管理,为顾客提供方便快捷的服务。

通过该窗体用户可以查看、添加、修改、删除顾客基本信息,如图4.11点击添加进行顾客信息录入,修改进行修改顾客信息,查询进行顾客信息查询,删除列表中的信息。其中应用到了ListControl、EditBox、Button等控件。

窗口界面如图4.10所示

4.10客户信息窗口

4.3.5员工信息管理模块的设计

员工信息管理模块主要实现对员工信息管理包括添加、查询、修改、删除、退出一级显示全部六个按钮用户可以根据自己的需要进行选择。

首先介绍录入基本资料窗体 

通过该窗体用户可以添加员工的基本信息,用户可以点击添加后保存,退出将不保存,清空文本框中的数据。这里主要实现了对表的信息录入,实现了对表的信息删除。其中应用到了ListControl、Button、EditBox等控件的使用。

员工信息情况录入设计

窗口界面如图4.11员工信息情况录入窗口所示:

4.11员工信息情况录入窗口

4.3.6数据库备份与恢复

数据库备份与恢复功能是为了增强此系统的安全性。为了避免数据在出现了大的错误后,能够尽快的回复丢失数据和减小损失而加入的功能。在添加、修改、删除了数据或是有业务发生时及时备份数据,能够避免不必要的损失。

数据库备份窗口界面如4.12所示:

4.12数据库备份窗口

通过该窗体用户可对现有数据进行备份,用户可以点击开始备份进行数据备份,退出将不备份。其中应用到了TreeView、Button、EditBox控件。

备份数据库关键代码如下:

CDatabase   db;  

CString   strSQL;   

db.Open("MedicStore");  

strSQL.Format("backup database MedicStore to disk='%s'",m_Path);  

db.ExecuteSQL(strSQL);

db.Close();

数据库恢复窗体与备份窗体类似,在此窗体上用户可以进行数据库的恢复,用户可以点击开始恢复,此时弹出确认对话框,确定是否真的要进行恢复,退出将不恢复数据库。其中用到了TreeView、Button、EditBox控件。

5系统软件测试

5.1系统测试

5.1.1系统测试目的

测试的目的就是希望能以最少的人力和时间发现潜在的各种错误和缺陷。应根据开发各阶段的需求、设计等文档或程序的内部结构精心设计测试用例,并利用这些实例来运行程序,以便发现错误。信息系统测试应包括软件测试、硬件测试和网络测试。硬件测试、网络测试可以根据具体的性能指标来进行,此处所说的测试更多的是指软件测试。

5.1.2系统测试基本原则

在设计有效测试试用版软件之前,软件测试工程师必须了解软件测试的基本原则:

1、所有的测试都应追溯到用户需求。正如我们所知:软件测试的目标在于揭示错误。而最严重的错误(从用户角度来看)是那些导致程序无法满足需求的错误。

2、应该在测试工作真正开始前的较长时间内就进行测试计划。测试计划可以在需求模型一完成就开始,详细的测试用例定义可以在设计模型被确定后立即开始。因此,所有测试应该在任何代码产生前就进行计划和设计。

3、Pareto原则应用于软件测试。简单地讲,Pareto原则暗示着测试发现的错误中的80%很可能起源于程序模块中的20%。当然,问题在于如何孤立这些有疑点的模块并进行彻底的测试。

4、测试应从“小规模”开始,逐步转向“大规模”。最初的测试通常把焦点放在单个程序模块上,进一步测试的焦点则转向在集成的模块簇中寻找错误,最后在整个系统中寻找错误。

5、穷举测试是不可能的。甚至一个大小适度的程序,其路径排列的数量也非常大。因此,在测试中不可能运行路径的每一种组合。然而,充分覆盖程序逻辑,并确保程序设计中使用的所有条件是有可能的。

6、为了达到最佳效果,应该由独立的第三方来构造测试。“最佳效果”指最有可能发现错误的测试(测试的主要目标),所以创建系统的软件工程师并不是构造软件测试的最佳人选。

5.1.3系统测试方法

1、人工测试

    人工测试指的是采用人工方式进行测试,目的是通过对程序静态结构的检查,找出编译时不能发现的错误。经验证明,组织良好的人工测试可以发现程序中的编码和逻辑设计错误。

    人工测试又称为代码审查,其内容包括检查代码和设计是否一致,检查代码逻辑表达是否正确和完整,检查代码结构是否合理等。主要有3种方法。

    (1)个人复查:指程序员本人对程序进行检查。由于心理上的原因和思维惯性的影响,对自己的错误一般不容易发现,对功能理解的错误更不可能纠正。因此,这种方法主要针对小规模程序,效率不高。

    (2)抽查:通常3—5人组成测试小组,测试人员应是有参加该项目开发的有经验算机的角色,将一批带有代表性的测试数据沿程序的逻辑走一遍,监视程序的执行人工检测程序很慢,只能选择少量简单的例子。

    (3)会审:测试人员的构成与抽查类似。在会审之前,测试人员应该充分阅读资料,比如系统分析说明书、系统设计说明书、源程序等。有经验的测试人员列出尽多的典型错误。在会审时,由编程人员逐句讲解程序,测试人员逐个审查、提问。通种这种方式,往往可能使编程人员发现自己以前没有意识到的错误,使问题暴露。会审结束,将发现的问题登记、分析、归类。

    代码复审应该在被测软件编译成功之后,编译都没通过的软件当然谈不上复审。复审期间,应保证有足够的时间,让测试小组对问题进行充分的讨论,这样才能有效提高效率,避免出错。

    2、机器测试

    机器测试是把设计好的测试用例作用于被测程序,比较测试结果和预期结果是一致,如果不一致,就说明可能存在错误。机器测试只能发现错误的症状,但无法对问题进行定位。

    机器测试分为黑盒测试和白盒测试两种。

    1)黑盒测试

    黑盒测试也称为功能测试。将软件看成黑盒子在完全不考虑软件的内部结构性的情况下,测试软件的外部特性。进行黑盒测试主要是为了发现以下几类错误:

    (1)是否有错误的功能或遗漏的功能;     

    (2)界面是否有误,输入是否被正确接收,输出是否正确;

    (3)是否有数据结构或外部数据库访问错误;

    (4)性能是否能够接受;

    (5)是否有初始化或终止性错误。

    2)白盒测试     

    自盒测试也称为结构测试。将软件看成透明的白盒,根据程序的内部结构和逻辑设计测试用例,对程序的路径和过程进行测试,检查是否满足设计的需要。其原则是:

    (1)程序模块中的所有独立路径至少执行一次;

(2)在所有的逻辑判断中,取“真”和取“假”的两种情况至少都能执行一次;

(3)每个循环都应在边界条件和一般条件下各执行一次;

    (4)测试程序内部数据结构的有效性等。

5.2基础模块功能测试

5.2.1登录模块

1.测试目的

否正确判断用户登陆信息,并跳转到相应页面。

2.测试用例

5.1登录模块测试用例

操作

操作描述

数据

期望结果

实际结果

1

输入正确的密码

密码:ww

显示登陆窗口

显示登陆窗口

2

输入正确的密码

密码:wwa

显示登陆窗口并提示:用户名或密码不对

显示登陆窗口并提示:用户名或密码不对

3.测试结论

能正确识别用户身份,并跳转到相应页面。

5.2.2药品信息管理模块

1.测试目的

      能否准确的录入药品基本情况并对其查询,修改和删除

2.测试用例

     输入要操作的信息并选择类别,期望结果是能搜索出相关的内容及并对进行一些操作,实际结果是完成相关的操作内容。

3.测试结论

        实现了各个部分的操作功能

5.2.3库存信息模块

1.测试目的

         能否正确的录入药品库存信息情况及查询、修改和删除

2.测试用例

输入要录入的,期望结果是能很好的录入,实际结果是各个操作都达到预期效果

3.测试结论

实现了各个部分的操作功能

5.2.4销售信息模块

1.测试目的

能否正确的对顾客购药信息进行录入

2.测试用例

5.2课程管理模块测试用例

操作

操作描述

期望结果

实际结果

1

输入顾客的购药信息

成功录入顾客的购药记录

录入信息成功

3.测试结论

该模块基本能正常运行,一些相关操作基本完成

5.2.5顾客信息模块

1.测试目的

能否正确的进行顾客信息的录入、修改、查询和删除

2.测试用例

录入顾客信息,期望结果是能很好的录入和查询,实际结果是各个操作都达到预期效果

3.测试结论

基本实现了各个部分的功能

5.2.6员工信息模块

1.测试目的

能否正确的进行员工信息的录入、修改、查询和删除

2.测试用例

录入员工信息,期望结果是能很好的录入和查询,实际结果是各个操作都达到预期效果

3.测试结论

   基本实现了各个部分的功能

5.2.7数据备份与恢复模块

1.测试目的

能否正确的进行数据的备份与恢复

2.测试用例

对数据进行备份,期望结果是能得到备份文件并能够恢复数据,实际结果是各个操作都达到预期效果

3.测试结论

   基本实现了各个部分的功能

结束语:进入系统管理员,对数据进行操作,其模块功能可以顺利通过。

总  结

通过这次毕业设计,我对软件工程的整个过程有了深刻的了解。对每个步骤的设计细节也有了更明确的认识。意识到软件工程中每个步骤都是不可缺少的,软件工程中虽然有些过程看起来很微不足道,但在整个系统中却起着很大的作用。同时也认识到测试工作的重要性,只有在测试中才能发现系统中的错误及不足,通过改正这些错误才能使系统中的各个功能更加完善,更加贴近用户,更加人性化。对黒盒、白盒等测试方法也有了进一步的了解,通过在实际设计中的运用更加了解了各测试方法的具体应用。

开发此药品管理信息系统所进行的分析与设计的过程,是对大学学习的总结过程,更是进一步学习和探索的过程。在这个过程中,我对管理信息系统的分析与设计思想有了更深刻的认识,对Visual C++6.0语言和SQL Server 2005数据库有了进一步的了解和掌握,对信息管理系统的分析与设计过程有了切身的认识和体会,并在学习和实践过程中增长了知识、丰富了经验。

1对开发信息管理系统的体会

信息管理系统的开发是一项复杂的系统工程,必须严格地按照系统规划、系统分析、系统设计、系统实施、系统运行与评价的开发程序规范来进行。作为一个实际课题,只有做了充分的准确的系统分析,才能高效率实现各个功能模块。透彻的系统分析会使系统的结构层次清唽,更有助于程序逻辑结构的实现。因为在开发系统前,只有把系统开发的目标明确出来,做到心中有数,这样在以后的设计中才会顺利,可节省不必要的时间与精力。

2结构化查询语言(SQL)的应用

系统开发过程中应用了结构化查询语句(SQL),在大部分事务处理应用中,SQL语句被集成到使用常用的编程语言(如CCobolJava或者Visual C++)编写的应用程序中[8],应用SQL语句可以直接从数据库中检索所需要的数据而不必通过数据窗口进行数据的检索。应用SQL能够实现许多强大的功能,而数据窗口在这方面的能力较弱。SQL 提取数据较方便,其提供的命令功能很强大,而且用SQL编写的程序较灵活,移植性,通用性较好。

3、Visual C++6.0的使用体会

我选择的Visual C++6.0的原因是Visual C++6.0不仅具有良好的人机交互界面而且是我最熟悉的一款编程软件,它开发速度快捷,是一款优秀的编程工具。Visual C++6.0提供可视化的开发环境,使用者可以像搭积木一样构建出程序的界面,而且Visual C++6.0提供丰富的控件组,省去了自己编写代码实现这些效果的麻烦,可以把更多的精力放在程序功能的实现上。在设计过程中,我对此语言的切身体会:

1) Visual C++6.0是面向对象事件驱动的编程语言,它的基本出发点是通过结构对象并组合对象的方式来实现应用程序的。而对象是一种数据和程序的组合体,它包含了传统的数据结构及处理数据的有关过程和函数;

2) Visual C++6.0提供了数据访问技术,使我们更能方便灵活的控制和操纵数据库为数据的安全奠定了基础;

3) VC设计图形化的界面非常轻松,而且界面也非常细腻、漂亮,增加了我们设计的水平

4、ODBC数据库存取技术的使用体会

ODBC(Open Database Connectivity,开放数据库互连)是微软公司开放服务结构(WOSAWindows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。这些API利用 SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS,不直接与DBMS打交道,所有的数据库操作由对应的DBMSODBC驱动程序完成。也就 是说,不论是FoxProAccess , MYSQL还是Oracle数据库,均可用ODBC API进行访问。由此可见,ODBC的最大优点是能以统一的方式处理所有的数据库。

致  谢

毕业设计是本科学习阶段一次非常难得的理论与实际相结合的机会,通过这次比较完整的给药品管理信息系统设计,我摆脱了单纯的理论知识学习状态,和实际设计的结合锻炼了我的综合运用所学的专业基础知识,解决实际问题的能力,同时也提高我查阅文献资料、设计手册、设计规范及其他专业能力水平,而且通过对整体的掌控,对局部的取舍,以及对细节的斟酌处理,都使我的能力得到了锻炼,经验得到了丰富,并且意志力,抗压能力及耐力也都得到了不同程度的提升。这是我们都希望看到的也正是我们进行毕业设计的目的所在。

虽然毕业设计内容繁多,过程繁琐但我的收获却丰富。我是随着设计的不断深入而不断熟悉并学会应用的。和老师的沟通交流更使我对设计有了新的认识也对自己提出了新的要求,通过这次毕业设计让我了解许多课本中学不到的知识,这与精心指导是分不开,为此我感谢学校领导和老师对我的辛勤教导,感谢陪伴我渡过大学生活的同学们,也感谢一直支持我、鼓励我、供我完成大学学业的父母。在我即将走向社会之际,更是深感责任的重大,为此,我更会牢记师长们的教诲,认认真真地做事,坦坦荡荡地做人,把所学、所掌握的所有知识技能,全部用到工作之中,不辜负师长们对我的谆谆教诲

本次设计是在指导老师的亲切关怀和老师的细心指导下完成的。无论从论文的选题,研究计划的安排和具体的研究内容以及论文的撰写直至论文定稿的全过程给予了精心的指导和严格的要求,在此表示诚挚的谢意!

参考文献

[1] 李宣东,李存珠.软件工程概论[M].南京:大学计算机系出版,2001,32-34。

[2] 梁普选.Visual C++程序设计与实践[M].北京:清华大学出版社,2005,8-1。

[3] 张立新.Visual C++ 6.0 信息管理系统开发[M]. 北京:人民邮电出版社,2005,4-1。

[4] 侯俊杰.深入浅出MFC(第二版)[M].武汉:华中科技大学出版社, 2001,1-2

[5] 钱能.C++ 程序设计教程[M].北京:清华大学出版社,1999,4-1。

[6] 王珊,萨师宣.数据库系统概论[M].北京:高等教育出版,2005,4-1。

[7] 罗斌.Visual C++ 2005 数据库开发经典案例[M]. 北京:水利水电出版社,2008,3-1

;