封面
医药管理信息系统
摘 要 软件测试是软件工程的重要组成部分,测试工作的质量直接影响软件产品的生命力。黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息的完整性。黑盒测试方法主要有等价类划分、边值分析、因—果图、错误推测等,主要用于软件确认测试。
现代企业管理的基本思想就是把企业作为一个有机的整体,从整体优化的角度出发,通过运用科学的管理思想、方法和计算机技术,把整个企业经营过程中的各种相关信息,按照客观规律实行高度的集成,为企业经营和科学决策提供大量、有效的信息;同时在此基础上,通过对企业供、销、财、物各个环节实行科学的规划、组织、控制和管理,使他们在经营过程中得以协调有序,合理配置,并充分发挥作用,达到最大限度的降低库存量,减少资金的占用,缩短周转周期,降低经营成本,增强企业的市场竞争能力和应变能力。进而达到提高企业的管理水平及经济效益的目的。
关键词:VC,ACCESS,数据库,软件工程,医药管理信息系统
Abstract The software testing is the software engineering important component , the mass testing a job has direct impact to software product life-force. The secret box testing also says the function testing or the data drive tests , it is function having in what known number product responds to , come to check if every function can be put into use regularly, when testing by testing , look upon procedure as a black basin being able to not open up, under the situation of not considering procedure inner structure and inside characteristic property completely, the surveyor carries out a testing in procedure interface , its god of the earth examines that procedure function if the specifications regulation is regular according to needing specification is put into use, If procedure can receive the entering number saw but produce correct output information appropriatly, and.
The modern business management basic thought is the enterprise took an
organic whole, the angle which optimizes from the whole embarks,through the utilization science management thought, the method and the computer technology, manages the entire enterprise in the process each kind of related information, according to the objective law implementation high integration, provides, the effective information massively for the enterprise management and the macro-scientific policy-making; Meanwhile in this foundation, through to the enterprise for, sells, the wealth, the thing each link implementation science plan, the organization, the control and the management, enables them in the management process in a coordinated and orderly way, the reasonable disposition, and the full display function, achieved maximum limit reduces the reserve, reduces the fund taking, reduces the turnover cycle, reduces the cost of operation, the enhancement enterprise's market competition ability and the strain capacity. Then achieved enhances the enterprise the management level and the economic efficiency goal.
Keyword: VC,ACCESS,Database, Software Engineering,
Medicine Management Information System
目 录
- 1 -第1章 绪论
- 1 引言
- 2 管理信息系统的发展及应用
- 2 管理信息系统的概念和定义
- 3 管理信息系统的发展历史
- 4 管理信息系统的发展趋势
- 6 本课题的目的和意义
- 7 -第2章 数据库技术
- 7 数据库基础
- 7 数据库基本概念
- 8 数据模型
- 9 数据库系统体系结构
- 11 关系数据库
- 11 关系数据模型的数据结构
- 12 数据完整性
- 13 关系操作和关系代数
- 15 查询优化
- 18 关系数据库设计理论
- 21 关系数据库语言SQL
- 24 -第3章 医药管理信息系统设计
- 25 医药管理信息系统设计的任务与内容
- 27 医药管理信息系统设计方法与步骤
- 28 医药管理信息系统总体设计
- 32 开发平台简介
- 34 -第4章 医药管理信息系统测试分析
- 34 测试阶段的划分
- 36 测试类型的划分
- 37 测试模式和测试工作流程
- 41 测试文档
- 41 编写目的及项目背景
- 41 任务概述
- 42 测试准备及人员
- 43 测试用例
- 46 测试记录报告
- 47 -致谢
- 47 -参考文献
- 49 -附录1 外文原文
- 62 -附录2 外文翻译
第1章 绪论
引言
信息系统是一个人造系统,它由人、硬件、软件和数据资源组成,目的是
及时、正确地收集、加工、储存、传递和提供信息,实现组织中各项活动的管
理、调节和控制。
管理信息系统(management information system,MIS)是一个由人、计算机等
组成的能进行信息收集、传递、储存、加工、维持和使用的系统。管理信息系
统能实测企业的各种运行情况;利用过去的数据预测未来;从企业全局出发辅
助企业进行决策;利用信息控制企业的行为;帮助企业实现其规划目标。
管理信息系统是现代管理方法与手段相结合的系统。尤其是在企业管理信
息系统中,计算机系统与现代管理方法的结合才能使系统在管理中发挥作用。
20世纪50年代中期,计算机作为强有力的数据处理工具与手段,开始在企业
管理中应用。管理信息系统的目的是要使各级管理人员在计算机系统支持下,
从各种繁琐的日常事务中解脱出来,以便好地投入到决策工作中去。现代管理
方法很多,但都离不开数据和信息,而且要采用数学方法对决策问题进行求解,
为此,还必须进行大量数据处理。如果只有方法而没有相应的手段,仅仅依靠
人工是难以实现的,因而,现代管理方法必须以计算机的应用为基础,二者的
结合可谓相辅相成、缺一不可。管理系统是一个企业单位不可缺少的部分,它的
内容对于各类生产企业的决策者和管理者来说都至关重要,所以企业管理信息
系统应该能够为用户提供充足的信息和快捷的数据处理手段。对企业的各类信
息及数据进行处理,做到数据管理及分析,为企业管理者提供一个适用的管理
工具。
管理信息系统的发展及应用
管理信息系统的概念和定义
管理信息系统就是我们常说的MIS(Management Information System), 在强
调管理,强调信息的现代社会中它变得越来越重要、越来越普及。MIS是一门
新的学科,它跨越了若干个领域,比如管理科学、系统科学、运筹学、统计学
以及计算机科学。在这些学科的基础上,形成信息收集和加工的方法,从而形
成一个纵横交织的系统。
20世纪,随着全球经济的蓬勃发展,众多经济学家纷纷提出了新的管理理
论。20世纪50年代,西蒙提出管理依赖于信息和决策的思想。同时期的维娜
发表了控制论,他认为管理是一个控制过程。1958年,盖尔写到:“管理将以
较低的成本得到及时的、准确的信息,做到较好的控制”。这个时期,计算机开
始用于会计工作。数据处理一词已经出现。
1970年,Walter 给刚刚出现的管理信息系统一词下了一个定义:
“以口头或书面的形式,在合适的时间向经理、职员以及外界人员提供过去的、
现在的、预测未来的有关企业内部及其环境的信息,以帮助他们进行决策”。在
这个定义里强调了用信息支持决策,但并没有强调应用模型,没有提到计算机的应用。
1985年,管理信息系统的创始人,名尼苏达大学的管理学教授Gordon
给了管理信息系统一个较为完整的定义,即“管理信息系统是一个利
用计算机软硬件资源以及数据库的人-机系统。它能提供信息支持企业或组织的
运行、管理和决策功能。” 这个定义全面的说明了管理信息系统的目标、功能
和组成,而且反映了管理信息系统在当时达到的水平。
管理信息系统的发展历史
管理信息系统在初级阶段是统计系统,所研究的内容是数量数据间表面的
规律,它可以把数据分成较相关和较不相关的组,然后把数据转换为信息。
第二阶段是数据更新系统,其典型代表是美国航空公司于20世纪50年代
建成的SABRE预约订票系统。它设有1008个订票点,可以存取600000个旅
客记录和27000个飞行段记录。它的操作比较复杂,在任何“点”都可以查到
某一航班是否有空座位。但从概念上来讲,它只是一个数据更新系统,比如它
不能告诉你以现在的售票速度何时票将售完,从而采取补救措施。因而它也是
管理信息系统的低级阶段。
第三阶段是状态报告系统,它可以分成生产状况报告、服务状态报告和研
究状态报告等系统。比如生产状况报告系统,它的典型代表是IBM公司的生产
管理系统。众所周知,IBM公司是世界上最大的计算机公司,1964年它生产出
中型计算机IBM360,使计算机的水平提高了一个台阶,但同时组织生产的管
理工作却大大复杂化了,一台计算机又超过15000个不同的部件,每个部件又
有若干个元件,加之IBM的工厂遍及美国各地,不同的订货有不同的部件和不
同的元件,必须指出什么工厂什么设备生产什么元件,因此不仅生产复杂,装
配、安装和运输都十分复杂。为了保证生产以及其他环节的顺利进行,必须要
有一个以计算机为基础的生产状态报告系统。因此同年IBM建立了先进管理系
统AAS,它能进行450个业务的操作。1968年,公司又建立了公用制造信息系
统CMIS,运行很成功,过去需要15周的工作,该系统只用3周就可以完成。状
态报告系统还有一种形式是数据处理系统,它用来处理日常业务和生产报告,
重点在于将手工作业自动化,提高效率和节省人力。数据处理系统一般不能提
供决策信息。
最后的阶段是决策支持系统,它是用来辅助决策的信息系统。该系统可以
计划、分析方案,审查解答和求解的误差。它应有较好的人-机对话方式,可以
和不怎么熟悉计算机的人员通话。它一般包括一些模型用以产生决策信息,但
不强调全面的管理功能。
管理信息系统的发展趋势
近20年间,国外大公司出现了3种变化:
抓管理着重于建立MIS系统,使管理技术走向成熟。
信息是决策的依据,MIS随时为经理提供信息服务。
经理通过MIS使其经营计划和具体的业务活动联系在一起。
由于以上的变化。MIS应用得到了迅速的发展。不仅大中型企业普遍建立
了自己的MIS,一些小型企业也不例外,普遍建立了公用数据网络,如电子邮件、
电子数据交换等,尤其是近年来INTERNET的飞速发展,INTRANET技术的
应用,为企业MIS提供了良好的支持环境。
从国际技术发展趋势看,20世纪90年代出现了几种全新的管理技术:
1.企业过程重组(BPR)
一个企业应该重视对时间、产品质量、生产成本和技术服务等几个部分的
管理,把目前的机构和过程重新组合,做到功能集成化、运营过程化、机构组
织扁平化。
2.智能化决策支持系统(IDDS)
充分考虑了企业高层人员的要求和工作特点,将把中层管理人员的服务转
向为经理的决策服务。
3.精量生产(LP)
应用准时生产、全面质量管理、并行工程等技术,最大限度的缩短产品设
计和生产周期、提高产品质量、降低再制品库存,并在生产中提倡团队精神,
以满足客户不断变化的需求。
4.灵捷制造(AM)
一种有远见的企业管理模式,其特点是职工素质高,组织机构精简、多功
能小组效率高、信息存放灵活、响应客户要求迅速。
管理理信息系统的发展对企业管理的影响:
管理信息系统的发展对企业和企业管理的变革产生了和正在产生着深远的
影响。管理信息系统可以辅助决策,特别是战略决策,它的好坏直接影响到企
业的生存和发展。MIS正在促使管理方法由定性和定量相结合的方向发展。这
表现在管理中运用预测和各种数学模型来定量分析企业中的问题。过去管理问
题难以进行试验,而MIS则可以结合管理需要,提供充分的数据,为管理模拟
创造条件。
随着MIS的发展,许多企业把分散的信息集中起来成立了直属经理的信息
系统部,信息系统部的负责人一般为副经理级。企业的权力集中到高级管理人
员手中以后,似乎使许多科室的工作减少了,因此有人预言,中层管理将消失。
实际上,再现阶段用了信息系统后中层管理不仅没有减少,反而稍有增加。这
是因为,虽然中下层管理人员从繁琐的事务性工作中解脱出来,但需要他们用
更多的精力去分析研究工作,进一步提高管理决策水平。随着MIS的发展,企
业对高技术人才的需求不断增加,而能力不足者将逐步被淘汰。这就迫使人们
通过学习、培训,不断提高个人素质。随着通讯、网络和文档传输系统的发展,
企业职员可以在远地或家中上班。美国兰克·施乐公司(Rank Zerox)的网上办公
系统,已经使该公司大大节省了开支,工作效率明显上升,为提高办公人员的
创造性创造了优越的条件。
目前许多国家正在酝酿一种更先进的制造业战略,成为敏捷制造企业。它
完全根据用户需求来组织设计与生产,可以通过信息流调动不同地域的企业为
同一个产品进行大协作,通过对机器的重新编程和对资源、人员的重新组织,
构成了一个新的制造系统,使得生产成本与批量几乎无关。敏捷制造企业与用
户建立一个完全崭新的战略依存关系,将会引起产业结构的又一次革命。
管理信息系统正在朝着自适应、自学习的方向发展,也就是能更好的模拟人的
决策过程。西方某些企业家梦想完善的MIS是包治企业百病的灵丹妙药;但也
有人说,过多的依赖MIS会导致管理上的失败。了解MIS对企业的影响,有
利于我们在开发和研究工作中,使企业的组织机构、管理体制和管理方法更好
的与MIS的发展相适应,建立更有效的MIS。
本课题的目的和意义
随着业务量的增大,各种各样的资料也层出不穷。这样就造成了:
1、资料量大,员工、药品等录入时的工作负荷重,效果低。
2、资料的录入过程中,时常会出现错误,增加了业务成本。
3、对资料进行查询时,需要手工翻阅大量的资料档案,大大降低了查询效
率,而且查询的结果不尽如人意。
以上缺点直接和间接地降低了的工作效率,最终影响了业务的开展。
本课题所研究内容是软件生存期(Software life cycle)中的一个重要阶段,是软件质量保证的关键步骤。通俗地讲,软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码进行最终复审的活动。1983年IEEE提出的软件工程术语中给软件测试下的定义是:“使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别”。这个定义明确指出:软件测试的目的是为了检验软件系统是否满足需求。
从用户的角度来看,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,所以软件测试应该是“为了发现错误而执行程序的过程”。或者说,软件测试应该根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误或缺陷。
第2章 数据库技术
信息技术是管理信息系统的基础,只有把信息技术和管理结合起来,才能真
正发挥管理信息系统的作用。一般地信息技术是计算机硬件技术,软件技术及通
信技术的总称。
从实际活动中采集来的原始数据只有经过加工处理 ,才能为人们提供有用
的信息,因此数据处理就显得甚为重要。数据库设计是管理信息系统的核心内容。
数据库基础
数据库基本概念
数据库系统是指在计算机系统中引入数据库后的系统,一般由数据库、数据
库管理系统、应用系统、数据库管理员和用户构成。应当指出的是,数据库的建
立、使用和维护等工作只靠一个DBMS远远不够,还要有专门的人员来完成,这些
人被称为数据库管理员。
在一般不引起混淆的情况下常常把数据库系统简称为数据库。
数据库技术是应数据管理任务的需要而产生的。
随着计算机技术的发展,其应用远远地超出了这个范围。在应用需求的推动
下,在计算机硬件,软件发展的基础上,数据管理技术经历了人工管理、文件系
统、数据库系统三个阶段。
与人工管理和文件系统相比,数据库系统的特点主要有以下几个主面:
数据的结构化;
数据的共享性高,冗余度低,易扩充;
数据独立性高;
数据由DBMS统一管理和控制。
目前,数据库己经成为现代信息系统的不可分离的重要组成部分。具有数百
万甚至数十亿字节信息的数据库己经普遍存在于科学技术、工业、农业、商业、
服务业和政府部门的信息系统。20世纪80年代后不公在大型机上,在多数微机
上也配置了DBMS,使数据库技术得到了更加广泛的应用和普及,是计算机领域
中发展最快的技术之一[1]。
数据模型
根据数据模型的不同,DBMS可以分成层次型、网状型、关系型等。
满足下面两个条件的基本层次联系的集合为层次模型:
1) 有且只有一个结点没有双亲结点,这个结点称为根结点
2) 根以外的其它结点有且只有一个双亲结点
其优点:层次数据模型简单,对具有一对多的层次关系的部门描述自然、
直观,容易理解;性能优于关系模型,不低于网状模型;层次数据模型提供了
良好的完整性支持。缺点:多对多联系表示不自然;对插入和删除操作的限制
多;查询子女结点必须通过双亲结点;层次命令趋于程序化。
网状模型条件:
1) 允许一个以上的结点无双亲
2) 一个结点可以有多于一个的双亲结点
其特点有:描述更加直接;存取效率高;DDL、DML复杂
关系模型主要是用二维表格结构表达实体集,用外键表示实体间联系。关
系模型是由若干个关系模式组成的集合。关系模式相当于前面提到的记录类型,
它的实例称为关系,每个关系实际上是一张二维表格。
关系模型和层次、网状模型的最大判别是用关键码而不是用指针导航数据,
表格简单用户易懂,编程时并不涉及存储结构,访问技术等细节。关系模型是
数学化模型。但其存取路径对用户透明导致查询效率往往不如非关系数据模型,
为提高性能,必须对用户的查询请求进行优化,增加了开发数据库管理系统的
难度。SQL语言是关系数据库的标准化语言,已得到了广泛的应用。
典型的关系数据库系统:ORACLE、SYBASE、DB/2、COBASE、PBASE、
EasyBase、OpenBase
数据库系统体系结构
站在最终用户的角度看,数据库系统体系结构分为集中式、分布式、
C/S(客户/服务器)和并行结构。
集中式数据库体系结构:将DBMS软件、所有用户数据和应用程序放在一
台计算机(作为服务器)上,其余计算机作为终端通过通信线路向服务器发出
数据库应用请求,这种网络数据库应用系统称为集中式数据库体系结构。
客户/服务器(C/S)式DBS是在客户/服务器计算机网络上运行的DBS,
这个计算机网络中,有一些计算机扮演客户,另一些计算机扮演服务者(即客户
机/服务器)。客户/服务体系结构的关键在于功能的分布。一些功能放在客户机
(前端机)上运行,另一些功能则放在服务器(后端机)上执行。
分布式数据库是将分散存储在计算机网络中的多个节点上的数据库在逻辑
上统一管理。它是建立在数据库技术与网络技术发展的基础之上的。最初的数
据库一般是集中管理的,随着网络的扩大,增加了网络的负荷,对数据库的管
理也困难了。分布式则可克服这些缺点。分布式数据库可供地理位置分散的用
户共享彼此的数据资源。
并行结构数据库系统:是多个物理上连在一起的CPU,而分布式系统是多
个地理上分开的CPU。各个承担数据库服务责任的CPU划分它们自身的数据,
通过划分的任务以及通过每秒兆位级的高速网络通信完成事务查询。
站在数据库管理系统的角度看,数据库系统体系结构一般采用三级模
式结构:外模式、概念模式和内模式构成。
概念模式,亦称模式。是数据库的总框架。描述数据库中关于目标存储的
逻辑结构和特性,基本操作和目标与目标及目标与操作的关系和依赖性,以及
对数据的安全性、完整性等方面的定义。所有数据都按这一模式进行装配。概
念模式由概念模式描述语言DDL来进行描述。
外模式,亦称子模式。是数据库用户的数据视图。它属于概念模式的一部
分,描述用户数据的结构、类型、长度等。所有的应用程序都是根据外模式中
对数据的描述而不是根据概念模式中对数据的描述而编写的。在一个外模式中
可以编写多个应用程序,但一个应用程序只能对应一个外模式。根据应用的不
同,一个概念模式可以对应多个外模式,外模式可以互相覆盖。外模式由外模
式描述语言SDDL进行具体描述。
内模式亦称存储模式。是对数据库在物理存储器上具体实现的描述。它规
定数据在存储介质上的物理组织方式、记录寻址技术,定义物理存储块的大小,
溢出处理方法等。与概念模式相对应。内模式由数据存储描述语言DSDL进行
描述。
图2-1 数据库系统的三级模式结构
关系数据库
关系数据模型的数据结构
关系 (Relation) : 一个关系对应一张表
元组 (Tuple) :表中的一行
属性 (Attribute): 表中的一列,给每一列取一个名称即属性名
主码(Key):表中可唯一确定一个元组的某个属性组。
域(Domain):属性的取值范围
分量(Component):元组中的一个属性值
关系模式 (Relation Schema):对关系的描述
实体及实体间联系的表示:
实体型:直接用关系(表)表示
属性:用属性名表示
一对一联系:隐含在实体对应的关系中
一对多联系:隐含在实体对应的关系中
多对多联系:直接用关系表示
图2-2学生-课程数据库
数据完整性
数据完整性是指保证数据正确的特性,包括实体完整性、域完整性和参照
完整性等。
实体完整性与主关键字
实体完整性是保证表中记录惟一的特性,即在一个表中不允许有重复的记
录。如果一个字段的值或几个字段的值能够惟一标识表中的一条记录,则这样
的字段称为候选关键字。在一个表上可能会有几个具有这种特性的字段或字段
的组合,这时从中选择一个作为主关键字。
实体完整性规则规定基本关系的所有主属性都不能取空值,而不仅是主码,
整体不能取空值。
域完整性与约束规则
以前所熟知的数据类型的定义属于域完整性的范畴。比如对数值型字段,
通过指定不同的宽度说明不同范围的数值数据类型,从而可以限定字段的取值
类型和取值范围。但这些对域完整性还远远不够,还可以用一些域约束规则来
进一步保证域完整性。域约束规则也称作字段有效性规则,在插入或修改字段
值时被激活,主要用于数据输入正确性的检验。
参照完整性与表之间的关联
参照完整性与表之间的联系有关,它的大概含义是:当插入、删除或修改
一个表中的数据时,通过参照引用相互关联的另一个表中的数据,来检查对表
的数据操作是否正确。假如一个职工记录由仓库号、职工号和工资三个字段构
成,当插入一条这样的记录时,如果没有参照完整性检查,则可能会插入一个
并不存在的仓库的职工记录,这时插入的记录肯定是错误的。如果在插入仓库
的职工记录之前,能进行参照完整性检查,检查指定职工记录的仓库号在仓库
表中是否存在,则可以保证插入记录的合法性。
为了建立参照完整性,必须首先建立表之间的联系。最常见的联系类型是
一对多的联系,在关系数据库中通过连接字段来体现和表示联系。连接字段在
父表中一般是主关键字,在子表中是外部关键字。如果一个字段或字段的组合
不是本表的关键字,而是另一个表的关键字,则这样的字段称为外部关键字。
关系操作和关系代数
关系代数使用数学符号的表达式来描述数据查询的过程和方法。关系代数
的作用对象为关系,并返回关系结果。
关系代数的运算可分为两类:
传统的集合运算,如并、交、差、广义笛卡尔积。这类运算将关系看成元
组的集合,其运算是以关系的行为单位来进行的。
专门的关系运算,如选择、投影、连接、除。这类运算表达了实用系统中
应用最普遍的查询操作。
上述两类运算的运算对象是关系,运算结果也是关系。
传统的集合运算
传统的集合运算包括四种运算:并(∪)、交(∩)、差(—)、广义笛卡尔
积(X)。
1. 并(Union)
设关系R和关系S具有相同的目n,且相应的属性取自同一个域。则关系
R和关系S的并记为R∪S,其结果仍为n目关系,由属于R或属于S的元组
组成。
2. 交(Intersection)
设关系R和关系S具有相同的目n,且相应的属性取自同一个域。关系R
和关系S的交记为R∩S,结果仍为n目关系,由既属于R又属于S的元组组成。
3. 差(Difference)
设关系R和关系S具有相同的目n,且相应的属性取自同一个域。定义关
系R和关系S的差记为R-S,其结果仍为n目关系,由属于R而不属于S的元
组组成。
4. 笛卡尔积(Extended Cartesian Product)
两个分别为n元和m元的关系R和S的广义笛卡尔积R×S是一个 (n×
m)元组的集合。元组的前n个分量是R的一个元组,后m个分量是S的一个
元组,若R有K1个元组,S有K2个元组,则R×S有K1×K2个元组。记为
R×S。
专门的关系运算
专门的关系运算包括四种运算即选择(σ)、投影(Π)、连接(∞)和除
法(÷),是关系数据库数据维护、查询、统计等操作的基础。
l.选择(Selection)
设有关系R, 在关系R中求取满足给定条件F的元组组成新的关系的运
算称为选择。记作σF(R)。
其中F是一个条件表达式,其值为“真”或“假”。σF(R)是从关系R中
选取使条件表达式F为真的元组。这是以行为处理单位进行的运算。F是由常
量、变量及算术比较符{ >,≥,<,≤,=,≠ }和逻辑运算符( ∧,∨, ┓ )
等构成。
2.投影(Projection)
设有关系R,在关系R中求指定的若干个属性列组成新的关系的运算称作
投影,记作ΠA(R)。 其中A为欲选取的属性列列名的列表。这是以列作为处
理单位进行的运算。
3.连接(Join)
从两个分别为n, m目的关系R和S的广义笛卡尔积中选取满足给定条件
F的元组组成新的关系称为R和S的连接,记作R∞FS(F=A θ B)。其中A
和B分别为R和S上度数相等且可比的属性列,θ是算术比较符(>,≥,<,
≤,=,≠)。
4.除(Division)
给定关系R(x,y)与S(z)其中x,y,z为属性集(也可为单属性),R
中的y和S中的z是同名的属性(集)也可以有不同的属性名, 但必须出自相
同的域集。在求解R÷S时,对R按x的值的分组,然后检查每一组,如某一
组中的y包含S中全部的z,则取该组中的x的值作为关系P中的一个元组, 否
则不取。R÷S的商等于关系P。
查询优化
数据库系统是管理信息系统的核心,基于数据库的联机事务处理(OLTP)
以及联机分析处理(OLAP)是银行、企业、政府等部门最为重要的计算机应用之
一
从大多数系统的应用实例来看,查询操作在各种数据库操作中所占据的比
重最大,而查询操作所基于的SELECT语句在SQL语句中又是代价最大的语
句。举例来说,如果数据的量积累到一定的程度,比如一个银行的账户数据库
表信息积累到上百万甚至上千万条记录,全表扫描一次往往需要数十分钟,甚
至数小时。如果采用比全表扫描更好的查询策略,往往可以使查询时间降为几
分钟,由此可见查询优化技术的重要性。
许多程序员在利用一些前端数据库开发工具(如PowerBuilder、Delphi等)
开发数据库应用程序时,只注重用户界面的华丽,并不重视查询语句的效率问
题,导致所开发出来的应用系统效率低下,资源浪费严重。因此,如何设计高
效合理的查询语句就显得非常重要。本文以应用实例为基础,结合数据库理论,
介绍查询优化技术在现实系统中的运用。
分析问题
许多程序员认为查询优化是DBMS(数据库管理系统)的任务,与程序员
所编写的SQL语句关系不大,这是错误的。一个好的查询计划往往可以使程序
性能提高数十倍。查询计划是用户所提交的SQL语句的集合,查询规划是经过
优化处理之后所产生的语句集合。DBMS处理查询计划的过程是这样的:在做
完查询语句的词法、语法检查之后,将语句提交给DBMS的查询优化器,优化
器做完代数优化和存取路径的优化之后,由预编译模块对语句进行处理并生成
查询规划,然后在合适的时间提交给系统处理执行,最后将执行结果返回给用
户。在实际的数据库产品(如Oracle、Sybase等)的高版本中都是采用基于代价
的优化方法,这种优化能根据从系统字典表所得到的信息来估计不同的查询规
划的代价,然后选择一个较优的规划。虽然现在的数据库产品在查询优化方面
已经做得越来越好,但由用户提交的SQL语句是系统优化的基础,很难设想一
个原本糟糕的查询计划经过系统的优化之后会变得高效,因此用户所写语句的
优劣至关重要。系统所做查询优化我们暂不讨论,下面重点说明改善用户查询
计划的解决方案。
解决问题
1.合理使用索引
索引是数据库中重要的数据结构,它的根本目的就是为了提高查询效率。
现在大多数的数据库产品都采用IBM最先提出的ISAM索引结构。索引的使用
要恰到好处,其使用原则如下:
在经常进行连接,但是没有指定为外键的列上建立索引,而不经常连接的
字段则由优化器自动生成索引。
在频繁进行排序或分组(即进行group by或order by操作)的列上建立索
引。
在条件表达式中经常用到的不同值较多的列上建立检索,在不同值少的列
上不要建立索引。比如在雇员表的“性别”列上只有“男”与“女”两个不同
值,因此就无必要建立索引。如果建立索引不但不会提高查询效率,反而会严
重降低更新速度。
如果待排序的列有多个,可以在这些列上建立复合索引(compound index)。
使用系统工具。另外,当数据库表更新大量数据后,删除并重建索引可以
提高查询速度。
2.避免或简化排序
应当简化或避免对大型表进行重复的排序。当能够利用索引自动以适当的
次序产生输出时,优化器就避免了排序的步骤。以下是一些影响因素:
索引中不包括一个或几个待排序的列;
group by或order by子句中列的次序与索引的次序不一样;
排序的列来自不同的表。
为了避免不必要的排序,就要正确地增建索引,合理地合并数据库表(尽
管有时可能影响表的规范化,但相对于效率的提高是值得的)。如果排序不可避
免,那么应当试图简化它,如缩小排序的列的范围等。
3.消除对大型表行数据的顺序存取
在嵌套查询中,对表的顺序存取对查询效率可能产生致命的影响。比如采
用顺序存取策略,一个嵌套3层的查询,如果每层都查询1000行,那么这个查
询就要查询10亿行数据。避免这种情况的主要方法就是对连接的列进行索引。
例如,两个表:学生表(学号、姓名、年龄……)和选课表(学号、课程号、
成绩)。如果两个表要做连接,就要在“学号”这个连接字段上建立索引。
还可以使用并集来避免顺序存取。
4.避免相关子查询
一个列的标签同时在主查询和where子句中的查询中出现,那么很可能当
主查询中的列值改变之后,子查询必须重新查询一次。查询嵌套层次越多,效
率越低,因此应当尽量避免子查询。如果子查询不可避免,那么要在子查询中
过滤掉尽可能多的行。
5.避免困难的正规表达式
MATCHES和LIKE关键字支持通配符匹配,技术上叫正规表达式。但这
种匹配特别耗费时间。
另外,还要避免非开始的子串。
6.使用临时表加速查询
把表的一个子集进行排序并创建临时表,有时能加速查询。它有助于避免
多重排序操作,而且在其他方面还能简化优化器的工作。
7.用排序来取代非顺序存取
非顺序磁盘存取是最慢的操作,表现在磁盘存取臂的来回移动。SQL语句
隐藏了这一情况,使得我们在写应用程序时很容易写出要求存取大量非顺序页
的查询。
有些时候,用数据库的排序能力来替代非顺序的存取能改进查询。
关系数据库设计理论
函数依赖的定义:
如果关系R的两个元组在属性A1,A2,… An上一致(也就是,两个元
组在这些属性所对应的各个分量具有相同的值),则它们在另一个属性B上也
一致。那么,我们就说在关系R中属性B函数依赖于属性A1A2…An。称 “A1,
A2,…,An函数决定B”。A1A2…An称为决定因素。
关系的键码 :
如一个或多个属性的集合{A1,…,An}满足如下条件,称该集合为关系
R的键码:
1.这些属性函数决定该关系的所有其它属性。
2. {A1,…,An}的任何真子集都不能函数决定R的所有其它属性,键码
必须是最小的。
模式设计
设计关系数据库模式时,特别是从面向对象的ODL设计或从E/R设计直
接向关系数据库模式转换时,很容易出现的问题是冗余性,即一个事实在多个
元组中重复。造成这种冗余的最常见的原因是,企图把一个对象的单值和多值
特性包含在一个关系中。
关系的键码函数决定该关系的所有其它属性。由于键码能唯一确定一个元
组,所以,也可以说关系的键码函数决定该关系的所有属性。一个关系中的所
有属性都函数依赖于该关系的键码。不同的属性在关系模式中所处的地位和扮
演的角色是不同的。把键码所在的属性称为主属性,而把键码属性以外的属性
称为非主属性。
不同的属性对键码函数依赖的性质和程度是有差别的。有的属于直接依
赖,有的属于间接依赖(通常称为传递依赖)。当键码由多个属性组成时,有
的属性函数依赖于整个键码属性集,而有的属性只函数依赖于键码属性集中的
一部分属性。
解决的途径
部分依赖和传递依赖有一个共同之处,这就是,二者都不是基本的函数依
赖,而都是导出的函数依赖:
部分依赖是以对键码的某个真子集的依赖为基础
传递依赖的基础则是通过中间属性联系在一起的两个函数依赖。
解决的途径——消除关系模式中各属性对键码的冗余的依赖。
由于冗余的依赖有部分依赖与传递依赖之分,而属性又有主属性与非主属
性之别,把解决的途径分为几个不同的级别,以属于第几范式来区别。
范式就是符合某一种级别的关系模式的集合。
目前主要有六种范式:第一范式、第二范式、第三范式、BC范式、第四
范式和第五范式。第一范式需满足的要求最低,在第一范式基础上满足进一步
要求的为第二范式:
1NF 2NF 3NF BCNF 4NF 5NF
通过分解把属于低级范式的关系模式转换为几个属于高级范式的关系模式
的集合,这一过程称为规范化。
第一范式(1NF)
如果一个关系模式R的所有属性都是不可分的基本数据项,则这个关系属
于第一范式。
在任何一个关系数据库系统中,第一范式是对关系模式的一个最起码的要
求。不满足第一范式的数库模式不能称为关系数据库。
第二范式(2NF)
若关系模式R属于第一范式,且每个非主属性都完全函数依赖于键码,则
R属于第二范式。
第二范式就是不允许关系模式中的非主属性部分函数依赖于键码。
第三范式(3NF)
若关系模式R属于第一范式,且每个非主属性都不传递依赖于键码,则R
属于第三范式。这里应说明一点:属于第三范式的关系模式必然属于第二范式。
因为可以证明部分依赖蕴含着传递依赖。
4. BC范式(BCNF)
若关系模式R属于第一范式,且每个属性都不传递依赖于键码,则R属于
BC范式。通常BC范式的条件有多种等价的表述:每个非平凡依赖的左边必须
包含键码;每个决定因素必须包含键码。
BC范式既检查非主属性,又检查主属性。当只检查非主属性时,就成了
第三范式。满足BC范式的关系都必然满足第三范式。
模式分解的原则
主要涉及两个原则:
无损连接(Lossless Join)
如果对新的关系进行自然连接得到的元组的集合与原关系完全一致,则称
为无损连接。无损连接反映了模式分解的数据等价原则。
2. 保持依赖(Preserve Dependency)
如果分解后总的函数依赖集与原函数依赖集保持一致,则称为保持依赖。
保持依赖反映了模式分解的依赖等价原则。依赖等价保证了分解后的模式
与原有的模式在数据语义上的一致性。
图2-3各种范式及规范化
关系数据库语言SQL
一、SQL概述
1、SQL发展历程
SQL从1970年美国IBM研究中心的发表论文到1974年Boyce
和Chamberlin把SQUARE语言改为SEQUEL语言,到现在还在不断完善和
发展之中,SQL(结构式查询语言)虽然名为查询,但实际上具有定义、查询、
更新和控制等多种功能。
2、SQL数据库的体系结构
SQL数据库的体系结构也是三级结构,但术语与传统关系模型术语不同,
在SQL中,关系模式称为"基本表",存储模式称为"存储文件",子模式称为
"视图",元组称"行",属性称"列"。
SQL数据库体系的结构要点如下:
(1)一个SQL数据库是表的汇集。
(2)一个SQL表由行集构成,行是列的序列,每列对应一个数据项。
(3)表或者是基本表,或者是视图。基本表是实际存储在数据库中的表,
视图由是由若干基本表或其他视图构成的表的定义。
(4)一个基本表可以跨一个或多个存储文件,一个存储文件也可存放一个
或多个基本表。存储文件与物理文件对应。
(5)用户可以用SQL语句对表进行操作,包括视图和基本表。
(6)SQL的用户可以是应用程序,也可以是终端用户。
3、SQL的组成
SQL由四部分组成:
(1)数据定义:SQL DDL。定义SQL模式,基本表、视图和索引。
(2)数据操纵:SQL DML。包括数据查询和数据更新(增、删、改)。
(3)数据控制:包括对基本表和视图的授权、完整性规则的描述,事务控
制等。
(4)数据查询
二、SQL的数据定义
1、SQL模式的创建和撤消:
SQL模式的创建可简单理解为建立一个数据库,定义一个存储空间,其
句法是:
CREAT SCHEMA <模式名> AUTHORIZATION <用户名>
撤消SQL模式的句法为:
DROP SCHEMA <模式名> [CASCADE|RESTRICT]
方括号中的选项参数CASCADE表示连锁方式,执行时将模式下所有基
本表、视图、索引等元素全部撤消。RESTRICT表示约束式,执行时必须在
SQL模式中没有任何下属元素时方可撤消模式。
2、SQL提供的基本数据类型
数值型:包括 integer、smallint、real、double precision 、float(n),numeric(p,d)
字符串型:char(n)、varchar(n),前者是定长,后者为变长串
位串型:bit(n),bit varying(n),同上。
时间型:date、time。
3、基本表的创建、修改和撤消
基本表的创建:
CREAT TABLE SQL 模式名 基本表名
(列名,类型,……完整性约束...)
完整性约束包括主键子句(PRIMARY KEY)、检查子句(CHECK)和外键子
句(Foreign KEY).
基本表结构的修改
ALTER TABLE 基本表名 ADD/DROP(增加/删除) 列名 类型名(增加时
写出)
删除时有子句 [CASCADE|RESTRICT],前者为连锁删除,后者为约束删
除,即没有对本列的任何引用时才能删除。
基本表的撤消
DROP TABLE 基本表名 [CASCADE|RESTRICT]
4、视图的创建和撤消
创建:CREAT VIEW 视图名(列名表) AS SELECT 查询语句
撤消:DROP VIEW 视图名
5、索引的创建和撤消
创建:CREAT [UNIQUE] INDEX 索引名 ON 基本表名(列名表
[ASC|DESC])
撤消:DROP INDEX 索引名
三、SQL的数据查询
1. SELECT-FROM-WHERE句型
SELECT 列名表(逗号隔开) FROM 基本表或视图序列 WHERE 条件表
达式
在这里,重点要掌握条件表达式中各种运算符的应用,如=,>,<,<>等算
术比较运算符、逻辑运算符AND、OR、NOT、集合成员资格运算符:IN,
NOT IN,以及嵌套的SELECT语句的用法要特别注意理解。针对课本的例题
和课后习题进行掌握。
在查询时,SELECT语句可以有多种写法,如联接查询、嵌套查询和使用
存在量词的嵌套查询等。最好都掌握,但是起码应能写出一种正确的查询语句。
2. SELECT 语句完整的句法:
SELECT 列名表(逗号隔开)
FROM 基本表或视图序列
[WHERE 条件表达式] (此为和条件子句)
[GROUP BY 列名序列] (分组子句)
[HAVING 组条件表达式] (组条件子句)
[ORDER BY列名[ASC|DESC]..] (排序子句)
四、SQL的数据更新
1、数据插入:
INSERT INTO 基本表名(列名表)
VALUES(元组值) 或
INSERT INTO 基本表名(列名表)
SELECT 查询语句
其中元组值可以连续插入。用查询语句可以按要求插入所需数据。
2、数据删除:
DELETE FROM 基本表名 [WHERE条件表达式]
3、数据修改:
UPDATE 基本表名
SET 列名=值表达式,[列名=值表达式...]
[WHERE 条件表达式]
4、对视图的更新:
我们知道,对视图的查询是和基本表相同的,但是更新操作则受到下列三
条规则的限制:
如果视图是从多个基本表使用联接操作导出的,则不允许更新。
如果导出的视图使用了分组和聚合操作,也不允许更新。
如果视图是从单个基本表使用选择和投影操作导出的,并且包括了基本表
的主键或某个候选键,则可以执行操作。(这就相当于在基本表上操作)。
第3章 医药管理信息系统设计
根据对用户的调查和用户对系统的要求,针对手工操作时的主要矛盾,解
决方案如下:
药品销售中遇到的问题:
1.过去手工销售时,由于医药商品种类繁多,几万种商品的管理相当困难。
2.由于客户量大,每天前台销售开票、收款要求速度较快,采用手工开票
不但效率低,而且开票过程中很容易开错药品。
3.由于不能及时掌握库存药品情况,经常开库存没有的药品。
4.手工开票时,经常出现算错账的情况,给企业造成了很大损失。
解决办法:
1.强化基础数据管理,在药品销售时,通过自动提示窗口,即可显示药品
列表,选择客户所要购买的药品。
2.为提高开票效率,采用表单式商品录入,销售过程通过键盘和自动提示
窗口可快速销售商品。开票过程中的计算、统计完全由程序自动执行。
3.在库存提示中将显示商品库存情况,如果操作员输入数量超过库存数量
将提示。
4.计算全部由程序计算,统计。
库存管理中遇到的问题:
1.在手工管理库存时,由于药品种类繁多,放置位置杂乱,库管很难将药
品的库存情况及时有效掌握。经常出现这样的情况,滞销的药品进了不少,畅
销的药品却没及时补进。这必然造成药品积压,由于库存药品占用了大量资金,
严重影响了企业资产的活力,同时也带来了库存管理等一系列问题。
2.手工管理库存时,要查询某类药品库存情况很难。
解决办法:采用现代库存方法有效控制库存。
1.影响库存的因素是多方面的。根据每种药品的销售情况制定库存上下限
可有效管理库存。每天系统将需要补进的商品列表预警,提示管理者及时进货。
2.可按不同字段、不同条件查询商品的库存信息,并支持模糊查询及在查
询结果中查询。
医药管理信息系统设计的任务与内容
“医药综合管理系统”以医药经营企业为应用对象,结合医药企业当前和
未来发展的管理需求开发设计的综合医药管理系统。该系统主要由基础信息管
理、销售管理、库存管理、财务管理组成。各部分功能如下:
基础信息管理:药品信息管理、员工信息管理、供应商信息管理、客户信
息管理。
销售管理:销售登记、销售退货、销售查询、销售退货查询。
库存管理:库存盘点、库存查询、仓库管理。
财务管理:日结算管理、月结算管理、供应商往来账、客户往来账。
主要模块介绍:
1.主程序界面
主程序也是程序控制的核心,操作权限、程序功能调用等都要通过主程
序调用实现。本程序通过菜单、工具栏两种方式调用系统。
2.销售登记
销售登记是医药管理系统中的重要部分,可以高效地完成医药商品的销售
工作。本模块支持鼠标和键盘两种输入方式;支持多种结算方式;单击单元格,
弹出智能提示窗口,实现销售数据的快速录入;提供金额自动统计功能;删除
当前行显示的销售信息;打印、预览当前显示的销售单。
3.销售查询
销售查询是销售管理模块的重要组成部分。销售查询模块设有两个选项卡,
其中【销售信息管理】选项卡记载销售商品的基本信息;【销售信息查询】选项
卡可按不同字段、不同条件对销售的商品信息进行查询,支持模糊查询及在查
询结果中查询。
4.药品信息管理
药品信息管理是录入药品信息的基础模块,是进行入库、销售及其他操作
的基础。本模块设有两个选项卡,其中【药品信息管理】选项卡完成添加、修
改、删除等操作,而【药品信息查询】选项卡可按不同字段、不同条件对药品
的基本信息进行查询,同时支持模糊查询及在查询结果中查询。
5.客户往来账
客户往来账是医药进销存管理系统的重要组成部分,该模块的主要功能是
按用户自定义时间段查询客户往来账信息,并可完成客户往来明细账打印操作。
医药管理信息系统设计方法与步骤
医药管理信息系统数据库设计:
1. 需求分析阶段:准确了解并分析用户对系统的需要和要求,弄清系统要
达到的目标和实现的功能。
2. 概念结构设计阶段:对用户需求进行综合、归纳和抽象,形成一个独立
于具体计算机和DBMS的概念模型。
3. 逻辑结构设计阶段:将概念结构转换为DBMS所支持的数据模型,并
将其性能进行优化。
4. 数据库物理设计阶段:为逻辑数据模型选取一个最适合应用环境的物理
结构,包括数据存储结构和存取方法。
5. 数据库实施阶段:运用DBMS提供的数据操作语言和宿主语言,根据
数据库的逻辑设计和物理设计的结果建立数据库、编制与调试应用程序、组织
数据入库并进行系统试运行。
6. 数据库运行和维护阶段:不断地对其结构性能进行评价、调整和修改。
医药管理信息系统总体设计
1. 系统功能分析
确定系统要完成的各种数据管理及其它功能;将确定的系统功能分类,并
确定类每类功能中包括细节功能。
2. 系统模块设计
根据系统功能分析对系统功能进行模块化处理,得出系统功能模块及其结
构图。
3. 开发与运行环境的选择
包括系统运行所使用的操作系统、应用系统开发工具及数据库管理系统。
4. 系统实现过程分析
设计出需要的数据库,包括各个基本表和相互联系的详细结构;采用先模
块后集成的方式实现各功能模块,.最后进行设计和调试。
医药管理信息系统总体设计
根据对用户的业务调查和用户提出的具体要求,结合计算机管理的特点,设计系统功能如下:
1. 基础信息管理
基础信息管理主要由药品信息、员工信息、供应商信息、客户信息四部分
组成。药品信息主要完成药品编号、药品名称、药品简称、剂型、货位、产地、
规格、单位、商标、批准文号、进价、批发价、零售价、批号、保质期、货源
等信息的设置。
员工基础信息的建立,可以达到如下目标:
记录员工的职务及聘用日期等详细信息。
按不同字段、不同条件查询员工基础信息,同时支持模糊查询。
供应商信息主要完成供应商编号、名称、简称、地址、所在地区、邮
编、电话、传真、联系人、联系人电话、银行、账号、纳税人、E-mail信息的
设定,可以达到如下目标:
记录供应商的各种联系方式及联系人。
记录供应商银行账户信息。
按不同字段、不同条件查询供应商基础信息,同时支持模糊查询。
客户信息主要完成客户编号、名称、简称、地址、所在地区、邮编、
电话、传真、联系人、联系人电话、银行、账号、纳税人、E-mail信息的
设置,可以达到如下目标:
记录客户的各种联系方式及联系人。
记录客户银行账户信息。
完成客户基础信息的设定,以备其他模块随时调用。
按不同字段、不同条件查询客户的基础信息,同时支持模糊查询。
2. 销售管理
销售管理主要由销售登记、销售退货、销售查询、销售退货查询4部分组
成。
销售登记完成药品销售工作。主要达到如下目标:
自动生成17位数的销售登记票号。
支持5种结算方式。
完成药品批量销售工作,付款方式可采用现金与支票,并可挂账。
销售采用表式录入,可一次录入多种药品。单击单元格,弹出自动提示窗
口,完成销售信息的快速录入。按【Enter】键,该药品信息将自动录入表格,
只需输入销售信息(系统自动计算药品金额),按【Enter】键即可销售下一种
药品。
自动计算药品销售金额。
删除当前显示的药品销售信息。
打印、预览当前显示的销售单。
销售退货完成药品销售退货开票工作。主要达到如下目标:
自动生成17位数的销售退货票号。
退货方式可采用多种结算方式。
销售退货采用表式录入,可一次录入多种药品。
自动计算药品销售退货金额。
删除当前显示的销售退货药品。
打印、预览当前显示的退货单。
销售退货查询通过条件查询药品的销售退货信息。主要达到如下目标:
按不同字段、不同条件查询药品的销售信息,同时支持模糊查询。
支持在查询结果中做进一步的细致查询操作。
以页框和列表两种方式显示查询结果。
完成指定药品销售单据的退货操作。
3. 库存管理
库存管理主要由库存盘点、库存查询、库存管理3部分组成。
库存盘点可分类盘点库存商品。根据库存情况提出补货与进货申请,
提出积压商品处理意见。主要达到如下目标:
自动生成17位数的库存盘点票号。
完成库存盘点操作。
删除当前显示的库存盘点信息。
打印、预览当前显示的库存盘点单。
库存查询可设置多种查询条件对库存进行查询,支持模糊查询。主要
达到如下目标:
可按不同字段、不同条件查询库存商品信息,同时支持模糊查询。
支持在查询结果中做进一步的细致查询操作。
提供库存上下限预警功能。
库存管理增加、修改、删除仓库的基础信息。
4. 账务管理
账务管理主要由日结算管理、月结算管理、供应商往来账、客户往来账4
部分组成。
日结算管理对当天销售、进货、利润的基本情况进行统计结算,不会
对账目做任何改动。每天只允许做一次日结算。主要达到如下目标:
完成日结算操作。
查看日结信息。
打印、预览日结单据。
月结算管理对本月内销售、进货、利润的基本情况进行统计结算,不
会对账目做任何改动。每月只允许做一次月结。若本月中用户曾做过一次月结,
那么本次月结结果将覆盖上一次的结果。每月的月结必须在月内进行。主要达
到如下目标:
完成月结算操作。
查看月结信息。
打印、预览月结单据。
供应商往来账完成供应商往来账的查询及打印预览操作。主要达到如
下目标:
按照用户自定义时间段查询供应商往来账。
自动计算应付款及欠款。
打印、预览供应商往来账。
客户往来账完成客户往来账的查询及打印预览操作。
按照用户自定义时间段查询客户往来账。
自动计算应收款及欠款。
打印、预览客户往来账。
医药管理信息系统结构图
开发平台简介
本系统用Visual C++ 作为前台开发工具,Microsoft Access做后台数据
库开发,做成C/S模式。
关于VC的说明
Visual C++ 自诞生以来,一直是Windows环境下最主要的应用开发系统之
一。Visual C++不仅是C++语言的集成开发环境,而且与Win32紧密相连,所
以,利用Visual C++开发系统可以完成各种各样的应用程序的开发,从底层软
件直到上层直接面向用户的软件。
何谓Visual C++ ?“Visual”指的是开发图形用户界面(GUI)的方法,不
需编写大量代码去描述界面元素的外观和位置,而只要把预先建立的对象加到
屏幕上即可。如果已使用过诸如Paint之类的绘图程序,实际上就已经掌握了
创建用户界面的必要技巧。“C++”指的是C++语言,C++是既适合于作为系统
描述语言,也适合于编写应用软件的既面向对象又面向过程的一种混合型程序
设计语言,它是在C语言的基础之上发展起来的。
数据访问特性允许对包括Microsoft Access和其他企业数据库在内的大部
分数据库格式建立数据库和前端应用程序,以及可调整的服务器端部件。
关于Microsoft Access
Access使用标准的SQL(Structured Query Language,结构化查询语言)
作为它的数据库语言,从而提供了强大的数据处理能力和通用性,使其成为一
个功能强大而且易于使用的桌面关系型数据库管理系统和应用程序生成器。
一个Access数据库中可以包含表、查询、窗体、报表、宏、模块以及数据
访问页。不同于传统的桌面数据库(dbase、 FoxPro、Paradox), Access数
据库使用单一的*.mdb文件管理所有的信息,这种针对数据库集成的最优化文
件结构不仅包括数据本身,也包括了它的支持对象。
此外,Access 还利用Office套件共享的编程语言VBA(Visual Basic for
Application)进行高级操作控制和复杂的数据操作。
运行环境:
1) 推荐配置:
CPU: Intel Pentium 以上
内存:64M
硬盘:100M空闲空间
2) 支持软件:
操作系统: Windows2000 ,WindowsXP
第4章 医药管理信息系统测试分析
测试阶段的划分
1、设计阶段
核心工作是对软件产品功能说明书进行检查,软件产品功能说明书是对软件产品最终需要实现的功能的描述。编写软件测试计划。
2、单元测试阶段
单元测试完成对软件最小的结构的测试,一般用来验证模块的功能属性,它利用设计文档作为指导,主要使用白盒测试技术;但也可以测试其它项目,如性能、可用性等等,可使用“黑盒”或“白盒”方法进行。在单元测试中,检查出模块内部的错误是单元测试的主要工作。该阶段的测试工作,由编程组内部人员进行交叉测试(避免编程人员测试自己的程序)。
单元测试过程:一般认为单元测试应紧接在编码之后,当源程序编制完成并通过复审和编译检查,便可开始单元测试。测试用例的设计应与复审工作相结合,根据设计信息选取测试数据,将增大发现上述各类错误的可能性。在确定测试用例的同时,应给出期望结果。
提高模块的内聚度可简化单元测试,如果每个模块只能完成一个,所需测试用例数目将显著减少,模块中的错误也更容易发现。
3、集成测试阶段
时常有这样的情况发生,每个模块都能单独工作,但这些模块集成在一起之后却不能正常工作。主要原因是,模块相互调用时接口会引入许多新问题。例如,数据经过接口可能丢失;一个模块对另一模块可能造成不应有的影响;几个子功能组合起来不能实现主功能;误差不断积累达到不可接受的程度;全局数据结构出现错误,等等。集成测试是组装软件的系统测试技术,按设计要求把通过单元测试的各个模块组装在一起之后,进行集成测试以便发现与接口有关的各种错误。
4、确认测试阶段
确认测试的目的是向未来的用户表明系统能够像预定要求那样工作。经集成测试后,已经按照设计把所有的模块组装成一个完整的软件系统,接口错误也已经基本排除了,接着就应该进一步验证软件的有效性,这就是确认测试的任务,即软件的功能和性能如同用户所合理期待的那样。
5、系统测试阶段
计算机软件是基于计算机系统的一个重要组成部分,软件开发完毕后应与系统中其它成分集成在一起,此时需要进行一系列系统测试。包括恢复测试、安全测试、强度测试和性能测试等。在系统测试之前,软件工程师应完成下列工作:(1) 为测试软件系统的输入信息设计出错处理通路;
(2) 设计测试用例,模拟错误数据和软件界面可能发生的错误,记录测试结果,为系统测试提供经验和帮助;
(3) 参与系统测试的规划和设计,保证软件测试的合理性。
系统测试应该由若干个不同测试组成,目的是充分运行系统,验证系统各部件是否都能工作并完成所赋予的任务。
6、回归测试(复测)阶段
回归测试就是漏洞修复完成后再对软件进行测试,以确保软件没有产生“回归”或因修复而变得更糟,这种测试一般要重新运行最初发现问题的原始测试程序。有关回归测试有两个焦点:有没有产生新的漏洞,修复是否确实使缺陷消除。
回归测试的过程:有了测试用例库的维护方法和回归测试包的选择策略,回归测试可遵循下述过程进行:识别出软件中被修改的部分。从原基线测试用例库中排除所有不再适用的测试用例,确定那些对新的软件版本依然有效的测试用例。如果必要,生成新的测试用例集,用于测试原来测试用例集无法充分测试的部分依据一定的策略选择测试用例测试被修改的软件。 进行测试,并记录测试结果到测试报告,分析测试报告,修正和测试工作,完成测试产品提交配置
测试类型的划分
1、功能测试:对软件功能进行的测试,主要检查软件功能是否实现了软件功能说明书(软件需求)上的功能要求。
2、界面测试:对软件的用户界面进行的测试,主要检查用户界面的美观度、统一性、易用性等方面的内容。
3、数据处理测试:对软件数据接口进行的测试,主要检查软件数据处理中输入、处理、输出数据过程。
4、流程测试:按操作流程进行的测试,主要有业务流程、数据流程、逻辑流程、正反流程,检查软件在按流程操作时是否能够正确处理。
5、极限测试:在软件的极限条件下进行的测试,主要有对数据的极限值、边界值操作,对软件进行致命操作等。
6、并发测试:在网络环境、并发环境、多用户条件下对软件进行的测试。
7、安全测试:对软件安全性方面的测试,主要检测软件中加密、解密、数据备份、恢复、病毒检测等问题。
8、性能测试:对软件整体性能的测试,测试内容有适应性、健壮性、可恢复性、灾难恢复能力等
9、安装测试:在不同PC条件、操作系统、模拟客户机等条件下进行软件的安装测试,主要检查软件打包或发布之后存在的问题。
测试模式和测试工作流程
V型模型,实现测试与软件开发的同步进行。如下图:
测试—开发工作流程:
测试工作流程:
测试流程:
密码更改示意图
测试文档
编写目的及项目背景
测试文档编写是为了更好的确定和明确需求,减少以后可能重复的设计编码,最好的满足客户需求,也作为设计文档、测试文档的依据。
一般来说,软件测试是对软件规格说明、软件设计和编码的最后复审,目的是在软件产品交付之前尽可能的发现软件中潜伏的错误。这是软件开发中非常关键的步骤。 本文讨论的测试是指在软件开发完成之后,验收方对软件的功能和性能进行验收、评价的过程。其目的旨在验证项目承担方所提交的软件在功能和性能等方面有没有达到合同的要求。其基本方法就是按照一定的测试方案逐项检验软件的各项功能,并对其现象和结果进行详细的记录、分析,从而得出评价结论。该项目是武汉科技大学2007届毕业生毕业设计所需。
任务概述
该测试主要测试了医药信息管理系统的登录界面帐号密码的输入情况;基本信息模块的药品信息、员工信息、供应商信息、客户信息;销售管理模块的销售登记、销售查询、销售退货登记、销售退货查询;库存管理模块的库存查询和库存管理;帐务管理模块的客户往来账记录和收据打印。
测试方法选取了黑盒测试和等价类划分测试。
黑盒测试:黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。在测试地,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。
测试等价类划分: 是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例
测试准备及人员
模块已编写完毕,数据库基本表已建立,BDE驱动程序已配置。
硬件环境:CPU:P4 Northwood 主板:Intel 865PT主板 内存:512M 硬盘:迈拓80G 7200转 2M缓存 网络:512k电信ADSL(家庭用,有独立IP)
软件环境:Windous XP SP2美化版
医药管理信息系统安装软件
安装医药信息管理系统软件并运行该软件。
负责测试人员:左大富。
测试用例
测试项目:
1.应用程序自动获取数据库信息并与它建立关联:将应用程序及.\db目录下的数据库文件移到硬盘的其它地方,系统自动检测到数据库
2.浏览数据表及记录的修改、删除:在系统管理/数据表操作中点击某一个按钮打开新窗口,全部记录以表格形式显示,可直接对记录操作,返回后,数据写回数据库
3.新建数据表:新添加一个药品名称,LCXX表中会插入相应记录,同时.\db目录下出现以药品命名的.db文件,表明表已建立
4.状态信息及提示:鼠标滑过窗体上的控件,有相应信息提示。
5.登录界面测试:
用例
登录界面测试
项目名称
医药信息管理系统
开发人员
杨文涛
模块名称
用户登陆
用例作者
左大富
参考信息
无
测试类型
功能测试
设计日期
2007-5
测试人员
左大富
测试方法
手工、黑盒
测试日期
2007-5
用例描述
该用例用来测试在登陆界面用户能否正常登陆;若出现错误的信息系统将给出正确的提示信息;
前置条件
存在正确的用户名和密码;登陆页面正常装载;
编号
测试项
操作步骤
数据
预期结果
实际结果
结果比较说明
1
界面检视
界面正常装载后,检视页面是否符合规范
页面title是否正确;
页面的默认焦点是否控制在用户名输入框中;
TAB键能否控制;
未登陆状态下,页面的其他按钮(非登陆/重置按钮)不可选或选择无效
页面title正确;
默认焦点控制在用户名输入框中;
TAB键正常控制
2
用户登陆
输入正确的用户名和正确的密码
用户名:mrkj
密 码:111
正常登陆,转入对应的系统页面
用户名:mrkj
密 码:111
直接车键(Enter)进行登陆
正常登陆,转入对应的系统页面
输入正确的用户名和正确的密码,但未区分大小写
用户名:Mrkj
密码:111
区分大小写,显示出错信息,不能正常登陆
输入正确的用户名和错误的密码
用户名:mrkj
密 码:32k
出现密码错误的提示并清空输入框
输入错误的用户名和正确的密码
用户名:jiew11
密 码:111
出现用户名不存在或错误的提示并清空输入框
输入错误的用户名和错误的密码
用户名:jiew11
密 码:32k
出现用户名不存在或密码错误的提示并清空输入框
不输入用户名和密码/或均为空格,直接点击登陆(submit)
用户名:
密码:
出现“请输入用户名、密码”的提示框
只输入用户名,密码为空/或为空格
用户名:mrkj
密码:
出现“请输入密码”提示框
用户名为空/或为空格,只输入密码
用户名:
密码:111
出现“请输入用户名”提示框
3
用户重置或取消(reset/cancel)
输入用户名或密码;
点击重置或取消;
用户名:jiew11
密 码:32k
清空输入框
6.快捷键测试用例:
登录时 Tab键 、Enter键、Esc键以及模块里面自定义快捷键的测试
测试项
操作步骤
数据
预期结果
实际结果
界面检视
界面正常装载后,检视页面是否符合规范
页面title是否正确;
页面的默认焦点是否控制在用户名输入框中;
未登陆状态下,页面的其他按钮(非登陆/重置按钮)不可选或选择无效
Enter键能否控制;
Esc键能否控制;
TAB键能否控制;
页面title正确;
默认焦点控制在用户名输入框中;
TAB键正常控制
测试记录报告
经测试此医药管理系统能很好的完成用户登录;入库出库药品信息的输入、查询、删除和修改;销售模块中的销售登记、销售查询、销售退货、销售退货查询;库存管理员可随时对仓库药品信息进行增加、删除和修改操作;以及公司的来往帐目查询和账单打印预览功能。
致谢
经过半年的忙碌和工作,本次毕业设计已经接近尾声,作为一个本科生的毕业设计,由于经验的匮乏,难免有许多考虑不周全的地方,如果没有导师的督促指导,以及一起工作的同学们的支持,想要完成这个设计是难以想象的。
在这里首先要感谢我的导师房莉教员。房教员平日里工作繁多,但在我做毕业设计的每个阶段,从开题到查阅资料,设计草案的确定和修改,中期检查,后期详细设计,装配草图等整个过程中都给予了我悉心的指导。我的设计较为复杂烦琐,但是房教员仍然细心地纠正图纸中的错误。除了敬佩房教员的专业水平外,他的治学严谨和科学研究的精神也是我永远学习的榜样,并将积极影响我今后的学习和工作。
其次还要感谢大学四年来所有的老师,为我们打下机械专业知识的基础;同时还要感谢所有的同学们,正是因为有了你们的支持和鼓励。此次毕业设计才会顺利完成。
参考文献
[1] 软件测试 作者:(美)Paul 出版社:机械工业出版社 出版日期:2003年7月 ISBN:711112166
[2] 有效软件测试(软件工程实践丛书) 作者:Elfriede Dustin出版社:清华大学出版社 出版日期:2003年8月ISBN:730206945
[3] 软件测试自动化 作者:(美)Daniel Bruce 出版社:机械工业出版社 出版日期:2003年10月 ISBN:711112818
[4] 嵌入式软件测试 作者:[美]布鲁克曼 著,张君施等 译 出版社:电子工业出版社 出版日期:2004-1-1 ISBN:7505393685
[5] 实用软件测试过程(软件工程技术丛书) 作者:沃特金斯 著,贺红卫等 译 出版社:机械工业出版社 出版日期:2004-1-1 ISBN:7111126424
[6] 系统的软件测试 作者:[美]克雷格 著,杨海燕等 译 出版社:电子工业出版社 出版日期:2003-10-1 ISBN:7505391771
[7] 软件测试求生法则 作者:(美)派瑞,(美)莱斯 著,周震 译 出版社:清华大学出版社 出版日期:2004-2-1 ISBN:7302075328
[8] Glenford Art of Software :John wiley Press,-170.
[9] Bill complete Guide to Software ,NewYork:John Wilely Press,-190.
[10] Edward Kit. Software Testing in the Real World. London:Pearson Education,-88.
[11] Daniel ,Bruce Enough Software Test Automation..NewYork:Pearson Education,-91.
[12] Paul . Software Testing -A Craftsman's Approach. 2,Florida:CRC Press,-296.
[13] 软件过程管理(中文版) 作者:Watts 出版社:清华大学出版社 出版日期:2003年4月 ISBN:730206166
[14]《实用软件测试指南》 作者:James A. Whittaker 出版社:电子工业出版社 出版日期:2003
[15]《软件测试过程改进》 作者:Edward Kit 出版社:机械工业出版社
出版日期:2003
附录1 外文原文
COLOR SYSTEM OVERVIEW
In the age of office automation and electronic imaging, office documents are being processed, transported, and displayed in a variety of ways. The scope of document processing is enormous; it encompasses page layout, document length, collation, simplex/duplex, color, image quality, finishing, and binding. If the office system is networked, then another dimension of network-related issues-protocol, file format, page description language, compression/decompression, job management, error handling, user interface, and device driver-has to be addressed. Digital color-imaging systems process electronic information from various sources; images may come from a local-area network, a remote-sensing device, different color workstations, or a local scanner. After processing, a document is usually compressed and transmitted to several places via a computer network for viewing, editing, or printing. Moreover, the trend in the industry is moving toward an open environment. This means that various devices such as scanners, computers, workstations, modems, and printers from multiple vendors are assembled into one system. Implementations should be based on public-domain technology rather than proprietary standards. This will allow vendors equal access to the market for system components and give users the widest choice in selecting components. It is a vastly large task to enable the communication of all system components regardless of differences in the operating system, file format, page description language, and information content. Ideally, the exchange should not cause information loss or alteration. A closer look at a document may reveal that it consists of different types of images, primarily text, graphs, and pictorial images. These all have different image characteristics and representations such as ASCII (American Standard Code for Information Interchange) for text, vector for graphs, and raster for pictorial images. Each type of image and its associated attributes like the font, font size, halftone, gray level, resolution, and color have to be dealt with differently. In such a complex environment, there is no doubt that many compatibility problems occur when an image is acquired, transmitted, displayed, and rendered. ?
With the fast development of Internet technology, large volumes of data in the form of electronic documents from the Web. For the purposes of data integration and data exchange, more and more existing sources, such as relational databases, support public XML export, and increasing amount of public and private data is described in a semi-structured way. A number of issues need to be addressed when we integrate data from different sources, including heterogeneous and duplicate data, multiple divisions and partners, and changes. ? Data heterogeneity results from the use of different information management systems to store data and each system has its own data structure and access methods. Relational database management systems benefit from the universal acceptance of Structured Query Language (SQL) as the primary means of getting answers whilst document and email repositories are generally accessed using text search engines with varying interfaces and capabilities. Because these systems were not designed with interoperability in mind, each must generally be accessed using source-specific applications or application programming interfaces (APIs). ? Another difficulty in data integration is data duplication-different systems represent the same piece of data in different ways. For example, customers may be identified by name in one database, but by account number in a second repository, may identify the same customer by email address. Frequently a required piece of information is derived from multiple data points. Data integration is further complicated when customers do business with multiple divisions within a large company, or with other partners. Similarly, answering questions about the state of a company's supply chain requires access to vendor and distributor information sources. Doing business electronically across the firewall gives rise to security and data ownership issues. Finally, data integration has to deal with different types of changes; change in business requirements and strategies, in IT systems, mergers and acquisitions, and new product launches. This demands that a data integration solution be sufficiently flexible and adaptable. One possible solution for the data integration problems mentioned above is to provide an XML Web services break down the barriers between different computing platforms, development environments and communications networks, allowing organizations to work together electronically without the expense and delay of agreeing on semantics, schema, interfaces, and other application integration. XML provides the flexibility for handling data with differing structures. As XML is becoming the principal medium for data exchange over the Web and for information integration in general, increasing amounts of public and private data are described in XML. XML data is usually defined in a tree or graph based, self-describing object instance model (Boncz and Kersten, 1999). However, semi-structured data is incompatible with the flat structure of relational database tables, and so the growth of XML data requires new and complex query optimization techniques. Creating XML files with a text editor would be a lot easier if you didn't have to close all those HTML tags. First you have to add the XML declaration and the root opening and closing HTML tags. Next, you start adding element opening and closing tags one at a time. Of course, once you have the initial sequence completed you can just copy and paste to repeat the required elements. After doing this hundreds of times you'll be looking for a faster way to create XML files. Some XML editors will automatically add the closing tag after you have finished typing the opening tag but, you still have to type the brackets around the opening tag. I kept thinking this process should be easier. So, I came up with a solution that allows you to create XML files without using HTML tags. This console application will create an XML file based on user input. Just enter the file name, how many element fields you want, and the name of each field. Optionally, you can include a data type separated by a comma after the field name. You can just enter the field name because the data type is not required. The structure of the XML file that is created will be compatible with the .NET Dataset and can be easily added to a database. In addition to creating the XML file, an XSL file and HTML file are also created. The HTML file uses client side JavaScript to transform the XML file using the XSL file. This provides an easy way to view the new XML file by displaying it in a table layout. The download includes both the source code and the already compiled application. You can start using the executable right away or customize it to meet your needs. All you will need is the .NET Framework and a text editor, like Notepad, to build this application. Improving ASP Performance with Data Caching One of the nicest features of is the ability to cache page content. This can be used to substantially reduce load on a website's database - which is an obvious attraction if the site uses Microsoft's Access to store data rather than SQL Server. Unfortunately there is no built in caching system in classic ASP, but it is easy to build one by using the Application object to store data. When to use ASP Caching. Caching is most useful for data that changes - but not too often. For example an e-commerce store could display a list of popular products, or an information site could display a list of press releases. Don't forget that it is also possible to build functionality into the admin part of the site so that the cache would be flushed if new content is added to the database. That way the website administrator would not have to wait until the cache timed out in order for new content to appear on the website. Remember that data stored in Application variables is visible by all the users of the website。
Get Personal with Whidbey G. Andrew Duthie
Graymad Enterprises Inc.
October 2003 Applies to:Microsoft Whidbey Microsoft Visual Basic .NET Summary: Learn how to reduce development time and how to code with personalization and membership in the upcoming version of , code name "Whidbey" (after the code name for the upcoming release of Microsoft Visual Studio .NET). Configure the Provider With both personalization and membership, the first step is configuring the provider that you will use to store the personalization or membership data. Though you can create the Microsoft Access or Microsoft SQL Server database and add the necessary configuration elements manually, the easier way is to use the Web Site Administration tool, shown in Figure 1. Note that to configure an application successfully, you must be logged in using an account with administrator rights (you also can launch Microsoft Visual Studio .NET with an administrator-level account using Run As... and launch the Web Site Administration tool from the button in Solution Explorer). The Web Site Administration tool provides the means to configure personalization and membership features (the Membership data store is configured using the Security tab), as well as reports and data-access features. To create an Access .mdb file for storing personalization data, you need to open the Web Site Administration tool; the file, named , will be created automatically in a folder named DATA. Although not enabled in the build of Visual Studio against which this article was written, the Web Site Administration tool contains an entire section devoted to configuring personalization settings. In a later section, I'll walk you through adding the necessary configuration sections by hand. You configure the provider to use for membership services using the Security tab of the Web Site Administration tool, shown in Figure 3. The easiest way to configure the membership provider is to select the Security Setup Wizard. I'll walk you through this process momentarily. At this point, the membership database will be created, and the necessary configuration elements will be added to the file. All you need to do from here is add users to the database (which you can do using the Web Site Administration tool, or the membership APIs), set authorization restrictions on pages as desired, and create a login page. It is important to note that the database structure that is created for both personalization and membership is the same, so you can (and for efficiency's sake, should) use the same provider for both personalization and membership. That said, it is possible to use a different provider for personalization than for membership, and vice-versa, if you prefer. In addition to the built-in Access and SQL Server providers, you can create your own custom providers and configure your applications to use these providers. So, if you already have a user-credential database that you're not willing to part with, allows you to use that and still get the benefits that membership services provide. Note that at the time of this writing, the actual means for creating custom providers could undergo some changes still, so I'll save a demonstration of creating custom providers for a future article. How's the Data Stored Use Server Explorer to see how data is stored in . Just create a database connection to and drag tables from the connection to a page in your site. Visual Studio will create a GridView control and bind it to an AccessDataSource control (note that the worker process must have read-write permissions on the folder containing the database for this to work). If you have difficulty browsing pages in the application, close the connection in Server Explorer before browsing the pages. Add Personalization and Membership Support Enough with the theory; let's get to an example already. I'll walk you through configuring personalization and membership to use the Access provider; adding a user to the membership database; adding personalization properties; and using those properties from a page, both for anonymous and logged-in users. Fire up your copy of Visual Studio and create a new Web site. Once you have the site created and loaded into the IDE, click the Web Site Administration tool button in the Solution Explorer window (again, see Figure 2). Next, click the Security tab, ensure that the Security Setup Wizard radio button is selected, and click Next. Step one is simply informational, so once you've read it, click Next (you may need to scroll to see the button). In step two, ensure that the From the Internet radio button is selected and then click Next. Note that the "From the Internet" setting will configure the application to use forms authentication, and the "From a local area network" setting will configure the application to use Windows authentication (which means that users will not need to log in to your application explicitly). In step three, click Next to use the file that is created automatically by the Web Site Administration tool. Then skip step four by clicking Next again. In step five, add at least one user for testing purposes. If you want to add more than one user, check the Add Another User check box once you've filled in all required fields, and then click Next. Otherwise, just fill in the required fields and click Next. Step six of the wizard allows you to create access rules to allow or deny access to all or part of your application based on user or role names. For now, just click Next. You can always add rules later. Finally, click Finish to exit the Wizard. The database has been created, and a file with the necessary elements has been added to your Web Site. This file contains provider elements for membership and role management. These elements are added automatically by the Security Setup wizard, when the membership data store is created. Personalization and Membership: What do they mean Personalization and membership enable you to control access to your application, as well as to store and retrieve information about users of your application, including anonymous users. You can customize the appearance and behavior of your application based on this information, and you even can allow users to store profile information, such as a shopping cart, while browsing anonymously, and later easily migrate that information to their personal profiles when they log in. Personalization allows you to store profile information about users of your application in a persistent data store. Personalization supports a pluggable data-provider layer and a set of APIs for storing and retrieving profile information in a strongly typed fashion. Personalization allows you to specify one or more arbitrary properties to be stored in a user's profile. You can specify the type of each property (which can be a system type or a user-defined type or custom class), as well as whether the property is tracked for anonymous users, whether the property is read-only or read-write, and more. Personalization also can be integrated with membership services to provide a unified solution for user management, login, and profile-information storage. By default, the personalization system associates profile information with the identity with which the user authenticates, accessible through . If you are using membership services for user-credential management, then any time a user logs into your application, his or her membership identity automatically will be stored in , and all profile information associated with that identity will be available to the application. Support for storing profile information for anonymous users is not enabled by default and requires adding an element to the file for the application, as well as specifically making each desired property available for anonymous users. Membership describes the set of technologies, including (as with personalization) a back-end provider for storing data; a set of APIs for managing users and logins, and so on; and controls that allow you to add user-credential storage and related functionality to your application with no lines of code. User credentials are stored in a back-end membership database specified by the data provider you configure in . Whidbey ships with Access, and SQL Server providers are available out of the box. Once membership is configured, and users are added to the membership data store, adding login functionality to the application can be as simple as dragging a single control to a page in the application. The login controls (Login, LoginView, LoginStatus, LoginName, and PasswordRecovery) contain all of the logic necessary to validate credentials and perform any necessary redirection, and so on, and are designed to integrate with membership. Add Personalization Properties To demonstrate personalization, next I'll show you how to add some property definitions and store and retrieve them from a page. One of the properties will allow the user to choose a page theme that will be used whenever the user visits. Themes are a new feature of Whidbey that allow you to modify the look and feel of an entire site with a simple configuration setting or a few lines of code. Open and add the following, directly after the element: The element is required in order to allow anonymous access to any personalization properties. The personalization section contains two properties, both of which use the allowAnonymous attribute to enable the properties to be tracked for users who are not logged in. The first property, Theme, does not specify a type, so it will be treated as a string. The second property, FavoriteColors, specifies the StringCollection class as its type. Any attempt to store data that is not compatible with the StringCollection class in this property will result in an exception being thrown. The serializeAs attribute allows the StringCollection to be stored in the database as an XML string. Create a new Web Form in the project called . Then, switch to Design view and add the controls, with their properties set as specified, shown in Figure 5. Table 1. Properties to be assigned to the controls added in the preceding example step Control Properties DropDownList ID = Themes Button ID = SetTheme Text = Set Theme TextBox ID = textFavColor Button ID = AddColor Text = Add Color ListBox ID = listFavColors Select the DropDownList control and in the Properties window, scroll down to and select the Items property. Click the ellipsis button to open the Collection Editor. Add two items, one with the text and value set to BasicBlue and one set to SmokeAndGlass, and then click OK. Double-click the Set Theme button and add the following code to the event handler: = Add the following event handler to the Server Code window: Sub Page_PreInit(ByVal sender As Object, _ ByVal e As ) If = "" Then If ("Themes") "" Then = ("Themes") End If Else = End If End Sub This code is required to set the page's theme, which must be set in the Page_PreInit event or earlier. The code checks to see whether a theme is already set for the user's personalization profile and uses that theme. If no theme exists, the code checks to see if the user has submitted the page with a new theme choice and, if so, uses the new theme. Otherwise, no theme will be applied. Switch back to Design view and double-click the Add Color button. Add the following code to the event handler: Dim FaveColor As String = _ () Dim FaveColors As New _ (FaveColor) DisplayFavoriteColors() Add the following subroutine just below the AddColor_Click handler: Sub DisplayFavoriteColors() = () End Sub Add the following line to the Page_Load event handler (if necessary, switch to Design view and double-click an empty area of the page to add the Page_Load handler): DisplayFavoriteColors() Now, save the page. Test the Personalization Settings Browse the page, select a theme from the DropDownList control and click Set Theme. You should see the theme applied to the controls. Next, type the name of a color in the text box and click Add Color. The color will be added to the list box, which is populated from the profile. After applying a theme and adding a couple of colors, the page should look similar to Figure 5. Up to this point, the personalization information is being stored exclusively for anonymous users. But what if you want to take the information that's already been saved for an anonymous user and migrate it to a specific profile for a user when he or she logs in Here's how: Add a file to the Web site by right-clicking the site in Solution Explorer, selecting Add New Item, and choosing the Global Application Class template. Then, add the following code to : Sub Personalization_MigrateAnonymous (sender As Object, _ e As PersonalizationMigrateEventArgs) = _ ().Theme = _ ().FavoriteColors End Sub In Design view, add a Login control and a LoginName control (found on the Security tab of the toolbox) to , below the other controls, then save and browse the page. When the page is first displayed, no user name will be displayed by the LoginName control, and the page will display any properties you previously had set while browsing anonymously. Log in using the account credentials you added when configuring the membership database. The LoginName control will display your user ID now, and the Theme and FavoriteColors properties have been migrated to the profile for your logged-in account. Note that if you log in and then log out again, a new anonymous identity is created, and any personalization for the previous anonymous identity is no longer displayed.
附录2 外文翻译
图像系统简介
在办公室自动化和电子图像年代中,办公文件以多种方式正被处理,传送和显示。文件处理的范围是巨大的;它包含页面布局规划,文件长度,校刊,单面或双面印刷,颜色,图像质量,终结和装订。如果用网络连接办公系统,那么另外有关网络协议的规格,文件形式,页面描述语言,压缩/解压,工作管理,错误操作 ,用户接口,和设备驱动,这些都必须被编址保存。数字彩色图像系统处理来自各种不同的来源电子数据;图像可能来自本地局域网,或者遥感设备,或者是不同的彩色工作站,亦或者是一个本地扫描仪。经过处理,一份文件通常被压缩,经由计算机网络传送到一些地方,继续检视,编辑,印刷。另外,现在工业越来越趋向于开放环境。这就意谓着那些来自各种设备(例如,扫描仪,计算机,工作站,调制解调器和打印机等)的文件汇集到一个系统之内。执行过程的落实应该以公共流通技术为基础,而非专有的标准。这将会为系统元件进入到市场保持公平,并且拓宽了使用者选择范围。促使不同的系统成份的沟通,在无论是不同的操作系统,文件格式,页描述语言还是数据内容,这将是一个巨大的任务。理想的说,交换不应该引起数据损失或变更。关注一份文件它所组成的不同类型图像,主要文本,点阵图像和矢量图形。这些全部有不同图像特性和表现,例如?ASCII( American Standard Code for Information Interchange 美国信息交换标准代码),矢量图形和光栅图像。每个类型的图像和其相关属性,比如字型,字体大小,照相铜版,灰度级,分辨率和颜色必须被分开处理。在如此的一个复杂的环境中,毫无疑问,当获得,传输,显示一个图像的时候,就会发生许多相容性的问题。 随着网络技术的飞速发展,存在了大量以电子文档形式的数据。为了数据整合和数据交换,越来越多已经存在的来源,例如,关系数据库,支援公共的XML输出,和逐渐增加的大量的公众和私人的数据,都以半构成的方式被描述。当我们整合来自不同的来源数据的时候,许多的争议都是需要被演说的。包括混杂和备份数据,多样的区分和合伙,以及变化。 数据的不统一性起因于不同的数据管理系统使用的储存数据方式,而且每个系统有它的自己数据结构和存取方法。关系数据库管理系统获益于全世界对于SQL(Structured Query Language )的接受程度,例如得到文档响应的主要方法和电子邮件的存取,通常都要和本文搜寻引擎一起使用来改变接口和功能。因为这些系统并不是由于主观的相互操作性而被设计。 在数据整合中的另一种困难是数据备份-不同的系统以不同的方式展现相同的数据。举例来说,用户可能通过在一个数据库中的名字而被识别,但是用户帐户数据存储在另一个储器中,也同样可以通过电子邮件地址识别用户。通常,一个所需的数据起源于多样的取值点。当用户在与一家大型企业中的多样的部门,或者与其他的合伙人进行商业活动的时候,数据整合将更为复杂。与此类似,回答关于公司的供应链状态的问题,则需要从卖主和经销人信息来源。跨越防火墙做电子生意会引起安全和数据所有权问题争议。最后,数据整合必须处理不同的类型变化;在生意需求和策略中改变,在IT系统,合并,获得 ,和新的产品启动。这就要求一个数据综合解决的办法要足够灵活和适合。 之前所提到的能够解决数据整合问题的方法之一,就是提供一个XML网络服务,分类剖析不同的计算机操作平台,开发环境和相连网络,允许组织不用花费费用和时间在决定语言结构,框架,接口和其他延迟的消除问题的解决上。 XML提供给处理数据不一致结构的灵活性。因此XML在Web上的数据交换技术逐渐成为主要媒介,而且总体上综合信息,随之,大量的公共和私人的数据都在用XML语言描述。XML数据通常定义基于为树形或曲线图,自我描述反对例证模型(Boncz 和 Kersten,1999)。然而 ,半结构化的数据与相关的数据库表格的单调结构不能并存,因此XML数据的发展需要更新和更复杂质问优化技术。 用一个文本编辑器创建XML文件将会是比较容易的,你不用关心所有的那些未完整的HTML标签。首先你必须增加XML声明打开脚本,同时关闭 HTML标签。然后,你开始同时添加元素打开和关闭的标签。当然,一旦你的初始序列完成,你能够重复扶植和粘贴所必需的元素。在做这数百次之后,你将寻找一种更快的方法建立XML文件。一些XML编辑器将会在你输入开始标签之后自动地增加结束标签, 但是, 你仍然必须在开始标签旁输入括号。我一直在考虑这个过程应该可以更容易。因此,我提出允许你不使用 HTML 标签而产生XML文件的解决方法。 这操纵台应用将建立一个基于用户输入的XML文件。仅仅是输入文件名称,你想要多少个要素字段,以及每一个字段的名字。你也可以包含数据类型,并且在字段名用逗号分开。如果数据类型没有要求,你也可以仅输入字段名称。由此创建的XML文件的结构将与.NET相容并且很容易被增加到数据库。 除了建立XML文件之外,一个XSL文件和HTML文件也被同时创建。HTML文件使用客户端JavaScript通过XSL文件解释XML文件。这提供一种在表格里展示布局时察看新XML文件的方法。 下载包括源码和已经编辑的应用。你能够马上开始使用可执行文件或者定制它们以满足你的需要。你所需要的是. NET框架和一个文本编辑器,象记事本一样,去建造这种应用环境。 的最好的特征之一就是隐藏页内容的能力。这能用来实质上减少一个网站的数据库上的负荷-是什么吸引站点使用微软的Access去存储数据而不是SQL服务器。令人遗憾的是,隐藏功能并没有在优秀的ASP系统建造中,但是通过使用物体存储数据来建造隐藏功能是很容易的。 什么时候使用ASP隐藏。隐藏对于变更的数据非常有用,但不是经常使用。 例如一家电子商务商店能展示受欢迎的产品的目录,或者一个信息网站展示新闻发布的目录。
不要忘记,也有可能建立官能度到管理部分,以便更新数据库的内容,高速缓存将被冲洗。站点管理者不必等待的那路高速缓存调节在外为了新内容在站点上出现。要记得,储存在应用变量过程中的数据对于站点的全部用户来说都是可见的
个性化定制 Whidbey
G. Andrew Duthie
Graymad Enterprises Inc.
2003 年 10 月
适用于:Microsoft Whidbey Microsoft Visual Basic .NET 摘要:了解如何在即将发布的代号为 "Whidbey"(与即将发布的 Microsoft Visual Studio .NET 代号一致)的 版本中减少开发时间,以及如何使用个性化定制和成员身份进行编码. 配置提供程序 要使用个性化定制和成员身份,第一步是配置将用于存储个性化定制或成员身份数据的提供程序.虽然您可以创建 Microsoft Access 或 Microsoft SQL Server 数据库并手动添加必要的配置元素,但更简单的方法是使用 Web 站点管理工具,如图 1 所示.请注意,要成功配置应用程序,您必须使用具有管理员权限的帐号登录(您也可以通过 Run As… 使用管理员级别的帐号启动 Microsoft Visual Studio .NET,并从 Solution Explorer 中的按钮启动 Web 站点管理工具.). Web 站点管理工具提供了一些方法,用于配置个性化定制和成员身份功能(成员身份数据的存储使用 Security 选项卡来配置)以及报表和数据访问功能.要创建用于存储个性化数据的 文件,您需要开启 Web 站点管理工具;名为 的文件将在名为 DATA 的文件夹中自动创建.尽管在本文针对的 Visual Studio 版本中未启用,但 Web 站点管理工具包含一个完整的部分,专门用于配置个性化设置.在后面的小节中,我将一步步引导您手动添加必要的配置部分. 您可以使用 Web 站点管理工具的 Security 选项卡来配置提供程序,以用于成员身份服务,如图 3 所示.配置成员身份提供程序的最简单方法是选择 Security Setup Wizard.稍后我将引导您完成此过程. Web 站点管理工具的 Security 选项卡提供了一个向导,便于设置成员身份数据存储区,还提供了一组管理工具,用于在创建数据存储区之后进行修改. 现在,将创建成员身份数据库,并向 文件中添加必要的配置元素.此处您需要做的只是向数据库添加用户(您可以使用 Web 站点管理工具或成员身份 API 来完成),根据需要在页面上设置授权限制以及创建登录页面. 请注意,为个性化定制和成员身份创建的数据库结构是相同的,因此可以(考虑到效率,您应该)对个性化定制和成员身份使用相同的提供程序,这一点很重要.也就是说,如果愿意,您可以对个性化定制使用与成员身份不同的提供程序,反之亦然. 除了内置 Access 和 SQL Server 提供程序,您还可以创建自己的自定义提供程序,并配置您的应用程序以使用这些提供程序.因此,如果您已经拥有用户凭据数据库且不想放弃, 可允许您使用该数据库并同时享受成员身份服务提供的好处.请注意,在撰写本文档时,创建自定义提供程序的实际方法可能还会经历一些更改,因此我将为将来的文章保存一个创建自定义提供程序的演示. 数据是如何存储的 使用 Server Explorer 查看数据如何存储在 中.只需创建一个到 的数据库连接,并把表从连接拖动到您站点的页面中.Visual Studio 将创建一个 GridView 控件,并将它绑定到 AccessDataSource 控件(请注意,要使它工作, 辅助进程必须对包含数据库的文件夹拥有读写权限).如果您在浏览应用程序中的页面时有困难,请在浏览页面之前于 Server Explorer 中关闭连接. 本指南的范围 有了足够的理论依据,让我们马上看一个示例.我将引导您配置个性化定制和成员身份以使用 Access 提供程序;向成员身份数据库添加用户;添加个性化定制属性;并将页面上的这些属性用于匿名用户和已登录用户. 启动您的 Visual Studio 副本,并创建一个新 Web 站点.创建站点并将该站点载入 IDE 后,单击 Solution Explorer 窗口中的 Web Site Administration tool 按钮(再次参见图 2). 然后,单击 Security 选项卡,确保选中 Security Setup Wizard 单选按钮,并单击 Next.第一步仅显示信息,因此阅读之后请单击 Next(可能需要滚动才能看到按钮).在第二步中,确保选中 From the Internet 单选按钮,然后单击 Next.请注意,"From the Internet" 设置将配置应用程序使用 窗体身份验证,"From a local area network" 设置将配置应用程序使用 Windows 身份验证(这意味着用户将无需明确登录到应用程序).在第三步中,单击 Next 以使用 Web 站点管理工具自动创建的 文件.然后再次单击 Next 跳过第四步.在第五步中,至少添加一个用户用于测试目的.如果您想添加多个用户,请在填写完所有必需的字段后,选中 Add Another User 复选框,然后单击 Next.否则,只需填写必需的字段并单击 Next.向导的第六步允许您创建访问规则,以根据用户或角色名允许或拒绝对所有或部分应用程序的访问.目前,只需单击 Next.您可以在以后随时添加规则.最后,单击 Finish 以退出向导.数据库已经创建,并且带有必要元素的 文件已添加到您的 Web 站点中.该 文件包含用于成员身份和角色管理的提供程序元素.在创建成员身份数据存储区时,这些元素由安全性设置向导自动添加. 个性化定制和成员身份:它们表示什么 个性化定制和成员身份使您能够控制对您应用程序的访问,以及存储和检索有关您应用程序用户(包括匿名用户)的信息.您可以根据这些信息自定义应用程序的外观和行为,甚至可以允许用户在匿名浏览时存储配置文件信息(例如购物车),并在他们以后登录时轻松地将那些信息迁移到他们的个人配置文件中 个性化定制允许您将有关您应用程序用户的配置文件信息存储在持久性数据存储区中.个性化定制支持可接插式数据提供程序层,以及一组以强类型风格存储和检索配置文件信息的 API.个性化定制可让您指定一个或多个要存储在用户配置文件中的任意属性.您可以指定每个属性的类型(它可以是系统类型,用户定义的类型或自定义类),以及是否跟踪匿名用户的属性,该属性是只读还是可读写,等等. 个性化定制还可以与成员身份服务集成,以便为用户管理,登录和配置文件信息存储区提供统一的解决方案.默认情况下, 个性化定制系统将配置文件信息与用户用来进行身份验证的标识相关联,该标识可通过 访问.如果您使用 成员身份服务进行用户凭据管理,则无论何时用户登录您的应用程序,他/她的成员身份标识将自动存储在 中,并且应用程序可以使用与该标识关联的所有配置文件信息.默认情况下,不支持存储匿名用户的配置文件信息,且需要向应用程序的 文件添加元素,还需要明确地让每个所需的属性对匿名用户可用. 成员身份描述了一套技术,包括(与个性化定制一样)用于存储数据的后端提供程序,一组用于管理用户和登录的 API 以及一些控件(这些控件使您能够在不使用代码行的情况下就为应用程序添加用户凭据存储区及相关功能)等等. 用户凭据存储在一个后端成员身份数据库中,该数据库由您在 中配置的数据提供程序指定. Whidbey 配套带有 Access,并且 SQL Server 提供程序可以单独使用.一旦配置了成员身份并向成员身份数据存储区中添加了用户,只需将单个控件拖到应用程序的页面上,即可为应用程序添加登录功能. 登录控件(Login,LoginView,LoginStatus,LoginName 和 PasswordRecovery)包含验证凭据和执行任何需要的重定向等所需的所有逻辑,并设计为与成员身份集成. 添加个性化定制属性 为了说明个性化定制,接着我将为您演示如何添加一些属性定义,以及如何从页面存储和检索它们.其中一个属性将允许用户选择页面主题,用户在任何时候访问该页面时都将使用此主题.主题是 Whidbey 的一个新功能,它可让您只用一个简单的配置设置或几行代码就能修改整个站点的外观和感觉. 打开 并将以下代码直接添加到 元素的后面: 元素是允许匿名访问任何个性化定制属性所必需的.个性化定制部分包含两个属性,这两个属性都使用 allowAnonymous 属性来允许跟踪未登录用户的属性.第一个属性 Theme 未指定类型,所以被视为字符串.第二个属性 FavoriteColors 指定它的类型为 StringCollection 类.若尝试将与 StringCollection 类不兼容的数据存储在这个属性中,将导致引发异常.serializeAs 属性可让 StringCollection 作为 XML 字符串存储在数据库中. 在项目中创建一个名为 的新 Web 窗体.然后,切换到设计视图并添加控件,并按指定方式设置它们的属性,如图 5 所示. 表 1. 要分配给先前示例步骤中添加的控件的属性 控件 属性 DropDownList ID = Themes Button ID = SetTheme Text = Set Theme TextBox ID = textFavColor Button ID = AddColor Button Text = Add Color Text = Add Color ListBox ID = listFavColors 选择 DropDownList 控件,并在属性窗口中向下滚动以选择 Items 属性.单击省略号按钮,打开集合编辑器.添加两项,其中一项的文本和值设置为 BasicBlue,另一项设置为 SmokeAndGlass,然后单击 OK.双击 Set Theme 按钮,并将以下代码添加到事件处理程序中: = 将以下事件处理程序添加到服务器代码窗口中: Sub Page_PreInit(ByVal sender As Object, _ ByVal e As ) If = "" Then If ("Themes") "" Then = ("Themes") End If Else = End If End Sub 设置页面主题时需要此代码,页面主题必须在 Page_PreInit 事件期间或之前设置.此代码会检查是否已为用户的个性化配置文件设置了主题,并会使用该主题.如果主题不存在,此代码会检查用户是否已提交了包含新主题选项的页面,如果是,则使用新主题.否则,将不应用主题. 切换回设计视图并双击 Add Color 按钮.将以下代码添加到事件处理程序中: Dim FaveColor As String = _ () Dim FaveColors As New _ (FaveColor) DisplayFavoriteColors() 将以下子例程直接添加在 AddColor_Click 处理程序的下面: Sub DisplayFavoriteColors() = () End Sub 将以下行添加到 Page_Load 事件处理程序中(如果需要,请切换到设计视图并双击页面的空白区域以添加 Page_Load 处理程序): DisplayFavoriteColors() 现在,保存页面 测试个性化设置 浏览页面,从 DropDownList 控件中选择一个主题并单击 Set Theme.您将看到应用于控件上的主题.下一步,在文本框中键入颜色名并单击 Add Color.颜色将被添加到列表框中,该列表框是从配置文件填充的.应用主题并添加几种颜色后,页面应类似于图 5. 到此为止,个性化定制信息可为匿名用户单独存储.但是如果您想将已经为匿名用户保存的信息取出来,并在用户登录后将该信息迁移到他/她的特定配置文件中,该怎么办 方法如下:通过在 Solution Explorer 中右击站点将一个 文件添加到 Web 站点中,选择 Add New Item,并选择 Global Application Class 模板.然后,将以下代码添加到 中: Sub Personalization_MigrateAnonymous (sender As Object, _ e As PersonalizationMigrateEventArgs) = _ ().Theme = _ ().FavoriteColors End Sub 在设计视图中,将一个 Login 控件和一个 LoginName 控件(位于工具箱的 Security 选项卡上)添加到 中其他控件的下面,然后保存并浏览该页面.当页面第一次显示时,LoginName 控件将不显示任何用户名,并且页面将显示您先前在匿名浏览时设置的所有属性.使用您在配置成员身份数据库时添加的帐号凭据登录.现在,LoginName 控件将显示您的用户 ID,并且 Theme 和 FavoriteColors 属性也已迁移到您登录帐号的配置文件中.请注意,如果登录后再注销,系统将创建一个新的匿名标识,并且以前匿名标识的任何个性化定制都不再显示.
PAGE - 4 -