为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

天气信息管理系统—计算机毕业设计(论文)

2018-09-13 50页 doc 176KB 49阅读

用户头像

is_266065

暂无简介

举报
天气信息管理系统—计算机毕业设计(论文)天气信息管理系统—计算机毕业设计(论文) 天气信息管理系统 摘要 随着经济的发展和社会的进步,不同地方的人们交流越来越密切,各地的天气情况越来越受到人们的普遍关注,该系统数据主要依据为各地准确的天气资料,包括:时间、温度、湿度、风力、风向、降水量等。并且该系统客户端可以及时、准确地把数据转换成信息发送给服务器端,方便于管理员的管理。它不但有强大的数据库支持,可以满足大量的数据存储,而且友好的用户界面可以方便用户进行每一步的操作。 本系统是基于C/S的网络管理系统。查询数据后可生成统计全年或单月的RTF表格。RTF格式就...
天气信息管理系统—计算机毕业设计(论文)
天气信息管理系统—计算机毕业(论文) 天气信息管理系统 摘要 随着经济的发展和社会的进步,不同地方的人们交流越来越密切,各地的天气情况越来越受到人们的普遍关注,该系统数据主要依据为各地准确的天气资料,包括:时间、温度、湿度、风力、风向、降水量等。并且该系统客户端可以及时、准确地把数据转换成信息发送给服务器端,方便于管理员的管理。它不但有强大的数据库支持,可以满足大量的数据存储,而且友好的用户界面可以方便用户进行每一步的操作。 本系统是基于C/S的网络管理系统。查询数据后可生成统计全年或单月的RTF表格。RTF格式就非常流行的字处理系统格式,许多优秀的以数据为基础的管理系统都可以将数据转化成RTF表格形式,以方便以后排版和打印。在生成数据曲线图后,本系统可以响应鼠标移动事件,进行区域判断,可方便用户查询图上的信息。 关键字:天气,曲线图,网络,RTF报表 目 录 第一章 绪论 ……………………………………………………1 1 1.1 项目的开发背景 …………………………………………… 2 1.2 该系统所具备的几大突出特点 …………………………… 2 第二章 开发工具简介 ………………………………………… 2 2.1 UML简要概述 …………………………………………… 2 2.1.1 UML简介……………………………………………… 2 2.1.2 UML概念域…………………………………………… 3 2.1.3 UML的内容…………………………………………… 4 2.2 C/S结构的数据库应用……… ……………………………… 7 2.3 VC++与数据库的连接 ……………………………………… 8 2.4 用VC++中的Csocket实现网络通信 ………………………9 第三章 系统分析…………………………………………………10 3.1系统的初步调查………………………………………………10 3.2系统详细调查…………………………………………………11 3.2.1系统的功能需求 ………………………………………11 3.2.2系统的运行环境 ……………………………………… 11 3.4 数据流图 …………………………………………………… 11 第四章 系统设计………………………………………………… 15 4.1软件的总体结构设计…………………………………………15 4.2数据库设计……………………………………………………15 4.2.1数据库概念设计…………………………………………15 4.2.2实体—联系图……………………………………………16 4.2.数据库表设计………………………………………………19 4.2.数据库的实现 ……………………………………………21 4.3 详细设计………………………………………………………22 第五章 系统实施 ………………………………………………… 27 5.1相关技术与开发环境的选择………………………………… 27 5.2程序设计……………………………………………………… 29 第六章 系统的测试与维护…………………………………… 33 6.1系统测试……………………………………………………… 33 6.2系统的维护…………………………………………………… 36 第七章 总结…………………………………………………… 37 参考文献………………………………………………………… 38 附录……………………………………………………………… 39 致谢……………………………………………………………… 43 第一章 绪论 1.1 项目的开发背景 21世纪是信息技术高速发展的世纪,在这个崭新的世纪中,随着现代科学技术的飞速发展,大量的信息技术产品如雨后春笋般地不断涌现出来且被人们所接受。现在人类的工作、学习、生活等无一能离开信息技术。总而言之,信息技术已溶入了人类生活的点点滴滴。可以说,信息技术的出现改变了世界,也改变了人类的生活。 本论文研究的是天气信息管理系统,它就是在信息技术的基础上所研究和开发的。它集信息技术及时、快速、准确的特点于一身,充分地发挥出效率高的特点。该管理系统适用于对天气信息有一定要求的场所,例如:航空公司、旅行社等地方,所以该管理系统应用范围广泛,具有一定的使用价值。 1.2 该系统所具备的几大突出特点: 1.2.1 使用灵活 在该管理系统中,不但设置了命令按钮,而且还设置了菜单和快捷键可以让用户在任何一个界面利用它们进行进一步相关的操作。这样不仅就为用户的操作提供了多种的使用方法,而且还为用户的操作提供了很大的方便。 1.2.2. 以曲线图的方式描述数据 该管理系统不但具有列表显示数据和文本显示某一条数据的功能,而且还有利用曲线图描述数据的功能。每条直观、生动的曲线分别用不同的颜色来表示不同的数据,其中,每一条曲线又代表着不同时期的数据,使用户不用再面对枯燥、乏味的数字,把用户从成天面对杂乱无章数字的尴尬境地中解脱出来。这样,以另外一种方式描绘数据的方法可以达到更好的效果。 1.2.3 批量的数据导入与导出 可以文本文件格式对数据执行批量导入或到处数据库操作,方便了用户之间的信息交流。也可将数据生成RTF报表格式,方便用户查看或打印。 1.2.3 将数据信息生成RTF报表格式 目前RTF格式是最流行的字处理文件格式,许多优秀的基于数据信息的管理系统都可将数据转换为RTF格式,以方便以后的排版和打印。本系统也可生成全年或单月的RTF表格形式。 第二章 开发工具简介 2.1 UML简要概述 2.1.1 UML简介 UML(Unified Modeling Language)是面向对象的建模语言,是面向对象技术领域的重要成果。标准建模语台UML融合了Booch, OMT(ObjectModeling Technique)和OOSE(Object-Oriented Software Engineering)等方法中的基本概念,集众家之长,并对现有的应用范围进行扩展。 统一建模语言(UML)又是一个通用的可视化建模语言,用于对软件进行描述、可视化处理、构造和建立软件系统制品的文档。它记录了对必须构造的系统的决定和理解,可用于对系统的理解、设计、浏览、配置、维护和信息控制。UML适用于各种软件开发方法、软件生命周期的各个阶段、各种应用领域以及各种开发工具,UML是一种总结了以往建模技术的经验并吸收当今优秀成果的标准建模方法。UML包括概念的语义,表示法和说明,提供了静态、动态、系统环境及组织结构的模型。它可被交互的可视化建模工具所支持,这些工具提供了代码生成器和报表生成器。UML标准并没有定义一种标准的开发过程,但它适用于迭代式的开发过程。它是为支持大部分现存的面向对象开发过程而设计的。 UML描述了一个系统的静态结构和动态行为。UML将系统描述为一些离散的相互作用的对象并最终为外部用户提供一定的功能的模型结构。静态结构定义了系统中的重要对象的属性和操作以及这些对象之间的相互关系。动态行为定义了对象的时间特性和对象为完成目标而相互进行通信的机制。从不同但相互联系的角度对系统建立的模型可用于不同的目的。 UML还包括可将模型分解成包的结构组件,以便于软件小组将大的系统分解成易于处理的块结构,并理解和控制各个包之间的依赖关系,在复杂的开发环境中管理模型单元。它还包括用于显示系统实现和组织运行的组件。 UML不是一门程序设计语言,可以使用代码生成器工具将UML模型转换为多种程序设计语一言代码,或使用反向生成器工具将程序源代码转换为UML. UML不是一种可用于定理证明的高度形式化的语言,这样的语言有很多种,但它们通用性较差,不易理解和使用。UML是一种通用建模语言。对于一些专门领域,例如用户图形界面(GUI)设计、超大规模集成电路(VLSI)设计、基于规则的人工智能领域,使用专门的语言和工具可能会更适合些。 UML是一种离散的建模语言,不适合对诸如工程和物理学领域中的连续系统建模。它是一个综合的通用建模语言,适合对诸如由计算机软件、固件或数字逻辑构成的离散系统建模。 UML是在多种面向对象建模方法的基础上发展起来的建模语言,主要用于软件密集型系统的建模。 2.1.2 UML概念域 UML的概念和模型可以分成以下几个概念域: 1)静态结构 任何一个精确的模型必须首先定义所涉及的范围,即确定有关应用、内部特性及其相互关系的关键概念。UML的静态组件称为静态视图。静态视图用类构造模型来表达应用,每个类由一组包含信息和实现行为的离散对象组成。对象包含的信息被作为属性,它们执行的行为被作为操作。多个类通过泛化处理可以具有一些共同的结构。子类在继承它们共同的父类的结构和行为的基础上增加了新的结构和行为。对象与其它对象之间也具有运行时间连接,这种对象与对象之间的关系被称为类间的关联。一些元素通过依赖关系组织在一起,这些依赖关系包括在抽象级上进行模型转换、模板参数的捆绑、授予许可以及通过一种元素使用另一种元素等。另一类关系包括用例和数据流的合并。静态视图主要使用类图。静态视图可用于生成程序中用到的大多数数据结构声明。在UML视图中还要用到其它类型的元素,比如接口、数据类、用例和信号等,这些元素统称为类元,它们的行为很像在每种类元上具有一定限制的类。 2)动态行为 有两种方式对行为建模。一种是根据一个对象与外界发生关系的生命历史;另一种是一系列相关对象之间当它们相互作用实现行为时的通信方式。孤立对象的视图是状态机— 当对象基于当前状态对事件产生反应,执行作为反应的一部分的动作,并从一种状态转换到另一种状态时的视图。状态机模型用状态图来描述。 相互作用对象的系统视图是一种协作,一种与语境有关的对象视图以及他们相互之间的链,通过数据链对象间存在着消息流。视图将数据结构、控制流和数据流在一个视图中统一起来。协作和互操作用顺序图和协作图来描述。对所有行为视图起指导作用的是一组用例,每一个用例描述了一个用例参与者或系统外部用户可见的一个功能。 3)实现构造 UML模型既可用于逻辑分析又可用于物理实现。某些组件代表了实现。构件是系统中物理上的可替换的部分,它按照一组接口来设计并实现。它可以方便地被一个具有同样规格说明的构件替换。节点是运行时间计算资源,资源定义了一个位置。它包括构件和对象。部署图描述了在一个实际运行的系统中节点上的资源配置和构件的排列以及构件包括的对象,并包括节点内容的可能迁移。 4)模型组织 计算机能够处理大型的单调的模型,但人力不行。对于一个大型系统,建模信息必须被划分成连贯的部分,以便工作小组能够同时工作在不同部分上。即使是一个小系统,人的理解能力也要求将整个模型的内容组织成一个个适当大小的包。包是UML模型通用的层次组织单元,它们可以用于存储、访问控制、配置管理以及构造包含可重用的模型单元库。包之间的依赖关系是对包的组成部分之间的依赖关系的归纳。系统整个构架可以在包之间施加依赖关系。因此,包的内容必须符合包的依赖关系和有关的构架要求。 5)扩展机制 UML具有一定的扩展能力,能够满足大多数对UML扩充的需求而不改变语言的基础部分。版类是一种新的模型元素,与现有的模型元素具有相同的结构,但是加上了一些附加限制,具有新的解释和图标。代码生成器和其他的工具对它的处理过程也发生了变化。标记值是一对任意的标记值字符串,能够被连接到任何一种模型元素上并代表任何信息,如项目管理信息、代码生成指示信息和版类所需要的值。标记值用字符串代表。约束是用某种特定语言(如程序设计语台)的文本字符串表达的条件专用语言或自然语一言。UML提供了一个表达约束的语台,名为OCL。与所有其他扩展机制一样,必须小心使用这些扩展机制,因为有可能形成一些别人无法理解的方言。但这些机制可以避免语台基础发生根本性变化。 2.1.3 UML的内容 UML中的各种组件和概念之间没有明显的划分界限,但为方便起见,我们用视图来划分这些概念和组件。在最上一层,视图被划分成三个视图域:结构分类、动态行为和模型管理。 结构分类描述了系统中的结构成员及其相互关系。类元包括类、用例、构件和节点。类元为研究系统动态行为奠定了基础。类元视图包括静态视图、用例视图和实现视图。 动态行为描述了系统随时间变化的行为。行为用从静态视图中抽取的瞬间值的变化来描述。动态行为视图包括状态机视图、活动视图和交互视图。 模型管理说明了模型的分层组织结构。包是模型的基本组织单元。特殊的包还包括模型和子系统。模型管理视图跨越了其他视图并根据系统开发和配置组织这些视图。 1)静态视图 静态视图对应用领域中的概念以及与系统实现有关的内部概念建模。静态视图主要是由类及类间相互关系构成,这些相互关系包括:关联、泛化和各种依赖关系,如使用和实现关系。一个类是应用领域或应用解决方案中概念的描述。类图是以类为中心来组织的,类图中的其它元素或属于某个类或与类相关联。静 态视图用类图来实现,因为它以类为中心,所以称为类图。在类图中类用矩形框来表示,它的属性和操作分别列在分格中。关系用类框之间的连线来表示,不同的关系用连线上和连线端头处的修饰符来区别。 2)用例视图 用例视图(use case view)是被称为参与者(Actor)的外部用户所能观察到的系统功能的模型图。’用例是系统中的一个功能单元,可以被描述为参与者与系统之间的一次交互作用。用例模型的用途是列出系统中的用例和参与者,并显示哪个参与者参与了哪个用例的执行。 用例也可以有不同的层次。用例可以用其他更简单的用例进行说明。在交互视图中,用例作为交互图中的一次协作来实现。 3)交互视图 交互视图描述了执行系统功能的各个角色之间相互传递消息的顺序关系。类元是对在系统内交互关系中起特定作用的一个对象的描述,这使它区别于同类的其他对象。交互视图显示了跨越多个对象的系统控制流程。交互视图可用两种图来表示:顺序图和协作图,它们各有不同的侧重点。 顺序图表示了对象之间传送消息的时间顺序。顺序图可以用来进行一个场景说明----即一个事务的历史过程。顺序图的一个用途是用来表示用例中的行为顺序。当执行一个用例行为时,顺序图中的每条消息对应了一个类操作或状态机中引起转换的触发事件。 协作图对在一次交互中有意义的对象和对象间的链建模。协作图的一个用途是表示一个类操作的实现。协作图可以说明类操作中用到的参数和局部变量以及操作中的永久链。当实现一个行为时,消息编号对应了程序中嵌套调用结构和信号传递过程。 顺序图和协作图都可以表示各对象间的交互关系,但侧重点不同。顺序图用消息的几何排列关系来表达消息的时间顺序,各角色之间的相关关系是隐含的。协作图用各个角色的几何排列图形来表示角色之间的关系,并用消息来说明这些关系。 4) 状态机视图 状态机视图是一个类对象所可能经历的所有历程的模型图。状态机由对象的各个状态和连接这些状态的转换组成。每个状态对一个对象在其生命期中满足某种条件的一个时间段建模。当一个事件发生时,它会触发状态间的转换,导致对象从一种状态转化到另一新的状态。与转换相关的活动执行时,转换也同时发生。状态机用状态图来表达。 状态图可用于描述用户接口、设备控制器和其他具有反馈的子系统。它还可用于描述在生命期中跨越多个不同性质阶段的被动对象的行为,在每一阶段该 对象都有自己特殊的行为。 5) 活动视图 活动图是状态机的一个变体,用来描述执行算法的工作流程中涉及的活动。活动状态代表了一个活动:一个工作流步骤或一个操作的执行。活动图描述了一组顺序的或并发的活动。活动视图用活动图来体现。这个例子说明了活动图的用途是对人类组织的现实世界中的工作流程建模。对事物建模是活动图的主要用途,但活动图也可对软件系统中的活动建模。活动图有助于理解系统高层活动的执行行为,而不涉及建立协作图所必须的消息传送细节。用连接活动和对象流状态的关系流表示活动所需的输入输出参数。 6)物理视图 物理视图对应用自身的实现结构建模,例如系统的构件组织和建立在运行节点上的配置。这类视图提供了将系统中的类映射成物理构件和节点的机制。物理视图有两种:实现视图和部署视图。 实现视图为系统的构件建模型— 构件即构造应用的软件单元— 还包括各构件之间的依赖关系,以便通过这些依赖关系来估计对系统构件的修改给系统可能带来的影响。 实现视图用构件图来表现。构件图表示了系统中的各种构件。在个别系统的实际物理配置中,可能有某个构件的多个备份。 部署视图描述位于节点实例上的运行构件实例的安排。节点是一组运行资源,如计算机、设备或存储器。这个视图允许评估分配结果和资源分配。部署视图用部署图来表达。 7) 模型管理视图 模型管理视图对模型自身组织建模。一系列由模型元素(如类、状态机和用例)构成的包组成了模型。一个包(package)可能包含其他的包,因此,整个模型实际上可看成一个根包,它间接包含了模型中的所有内容。包是操作模型内容、存取控制和配置控制的基本单元。每一个模型元素包含于包中或包含于其他模型元素中。 模型是从某一观点以一定的精确程度对系统所进行的完整描述。从不同的视角出发,对同一系统可能会建立多个模型,例如有系统分析模型和系统设计模型之分。模型是一种特殊的包。子系统是另一种特殊的包。它代表了系统的一个部分,它有清晰的接口,这个接口可作为一个单独的构件来实现。 模型管理信息通常在类图中表达。 8) 扩展组件 UML包含三种主要的扩展组件:约束、版类和标记值。约束是用某种形式化语言或自然语言表达的语义关系的文字说明。版类是由建模者设计的新的模型元 素,但是这个模型元素的设计要建立在U砒已定义的模型元素基础上。标记值是附加到任何模型元素上的命名的信息块。 这些组件提供了扩展UML模型元素语义的方法,同时不改变UML定义的元模型自身的语义。使用这些扩展组件可以组建适用于某一具体应用领域的UML用户定制版本。 2.2 C/S结构的数据库应用 最简单的C/S体系结构的数据库应用,由两部分组成,即客户应用程序和数据库服务器程序。二者可分别称为前台程序与后台程序。运行数据库服务器程序的机器,称为应用服务器,一旦服务器程序被启动,就随时等待响应客户程序发来的请求;客户程序运行在用户自己的电脑上,对应于服务器电脑,可称为客户电脑。当需要对数据库中的数据进行任何操作时,客户程序就自动地寻找服务器程序,并向其发出请求,服务器程序根据预定的规则作出应答,送回结果。 在典型的C/S数据库应用中,数据的储存管理功能,是由服务器程序独立进行的,并且通常把那些不同的(不管是已知还是未知的)前台应用所不能违反的规则,在服务器程序中集中实现,例如访问者的权限,编号不准重复、必须有客户才能建立定单这样的规则。所有这些,对于工作在前台程序上的最终用户,是“透明”的,他们无须过问(通常也无法干涉)这背后的过程,就可以完成自己的一切工作。在客户服务器架构的应用中,前台程序可以变的非常“瘦小”,麻烦的事情,都交给了服务器和网络。在C/S体系的下,数据库真正变成了公共、专业化的仓库,受到独立的专门管理。 在这个案例中,已经确定的需求,就是建立一个集中、统一的数据库,实现更新、查询、导入数据和输入报表。访问者分布在不同的IP地址。每一处典型的同时访问人数,一般在10人以下。两处都有机会更新数据库中的数据。理想的情况下当然是两处的数据随时保持一致,但在特别关键的信息可以随时通过电话、传真等方式直接交换的情况下,两地的信息每隔一天交换更新一次,是可以接受的,这也就是目前的实际情况,从业务人员的立场上,尚没有提出在这个周期上作出戏剧性的改变的要求。针对当前的已经明确的需求,作出如下讨论: 采用C/S架构,选择适当的数据库平台,可以实现数据库数据的真正“统一”,分布于两地的数据同步完全交由数据库系统去管理,逻辑上,两地的操作者都直接访问同一个数据库。它的有效实现,有这样一些问题: 如果需要建立“实时”的数据同步,就必须在两地间建立实时的通讯连接,保持两地的数据库服务器在线运行,这需要高昂的投资和复杂的技术支持,高的维护成本。 对于本例的应用要求和环境,采用基于网络文件服务器开发非C/S结构的应用,也完全可以满足,虽然C/S结构下的多用户应用可以更好(比如更完善的 用户共享特性,用户管理,以及更好地平衡服务器与客户机之间的负荷,大幅度降低网络传输的负荷等),但就用户立场而言,采用C/S结构方便了用户对软件的操作。 2.3 VC++与数据库的连接 1)ODBC(Open DataBase Connectivity) ODBC是客户应用程序访问关系数据库时提供的一个统一的接口,对于不同的数据库,ODBC提供了一套统一的API,使用应用程序可以应用所提供的API来访问任何提供了ODBC驱动程序的数据库,并且,ODBC已经成为一种准,目前所有的关系数据库都提供了ODBC驱动程序,这使ODBC的应用非常广泛,基本上可用于所有的关系数据库。但由于ODBC只能用于关系数据库,使得利用ODBC很难访问对象数据库及其他非关系数据库。 由于ODBC是一种底层的访问技术,因此,ODBC API可以使客户应用程序能够从底层设置和控制数据库,完成一些高层数据库技术无法完成的功能,但开发效率效低。 2)MFC ODBC(Microsoft Foundation Classes ODBC) 直接使用ODBC API编写应用程序需要编制大量代码,Visual C++提供了MFC ODBC类,其中封装了ODBC API,因此,使用MFC来创造ODBC的应用程序非常简便。 3)DAO(Data Access Object) DAO提供了一种通过程序代码创建和操作数据库的机制。多个DAO构成一个体系结构,在这个结构中,各个DAO对象协同工作。MFC DAO是微软公司提供的用于访问Microsoft Jet数据库文件(*.mdb)的强有力的数据库开发工具,它通过DAO的封装,向程序提供了DAO丰富的操作数据库手段。 4)OLE DB(Object Link and Embedding DataBase) OLE DB是Visual C++开发数据库应用中提供的新技术,它基于COM接口。因此,OLE DB对所有的文件系统包括关系数据库和非关系数据库都提供了统一的接口。这些特性使得OLE DB技术比传统的数据库访问技术更加优越。 与ODBC技术相似,OLE DB属于数据库访问技术中的底层接口。直接使用OLE DB来设计数据库应用程序需要编写大量的代码。Visual C++6.0中提供了ATL模板,用于设计OLE DB数据应用程序和数据提供程序。 5)ADO(ActiveX Data Object) ADO技术是基于OLE DB的访问接口,它继承了OLE DB技术的优点,并且,ADO对OLE DB的接口作了封装,定义了ADO对象,使程序开发得到简化。ADO技术属于数据库访问的高层接口。 2.4 用VC++中的CSocket类实现网络的通讯 WinSock提供了对TCP(传输控制协议)的支持,通过TCP协议我们可以与指定IP地址的主机建立,同时利用建立的连接可以双向的交换数据。利用CSocket操纵有连接数据交换很简单,但是在有连接的通信中必需有一方扮演服务器的角色等待另一方(客户方)的连接请求,所以服务器方需要建立一个监听套接口,然后在此套接口上等待连接。当连接建立后会产生一个新的套接口用于通信。而客户方在创建套接口后只需要简单的调用连接函数就可以创建连接。对于有连接的通信不论是数据的发送还是发送与接收的顺序都是有保证的。 第三章 系统分析 3.1系统的初步调查 在系统分析阶段,我们的焦点是“做什么”,而不是“怎么做”:不是具体地解决 问题,而是准确地确定“为了解决这个问题,目标系统必须什么” 。 用户了解他们所面对的问题,知道必须做什么,但是通常不能完整、准确地表达出他们的要求,更不知道怎样利用计算机来解决他们的问题;软件开发人员知道怎样使用软件实现人们的要求,但是对特定用户的具体要求并不完全清楚。因此在系统分析阶段必须和用户密切配合,充分交流信息,以得出经过用户确认的系统逻辑模型。 需求是技术无关(technology independent)的。在需求阶段讨论技术是没有任何意义的。技术的实现细节是在后面的分析、设计阶段需要考虑的事情。而在业务建模阶段,不但要保证需求的技术无关性,还要保证你的需求不要深入细节。分析一个系统, 首先就要了解需要开发的系统是一个什么样的系统, 用客户(或是我们自己)需要一个什么样的系统进行说明,力求完整。并对系统的发展可扩充性进行描述。 3.1.1 浅谈开发天气信息管理系统的意义 随着经济的发展和社会的进步,不同地方的人们交流越来越密切,各地的天气情况越来越受到人们的普遍关注,例如民航飞行越来越多,密度越来越大。然而,飞机在着陆、起飞或在空中飞行,都受到气象条件的制约,所以及时并准确了解了解各地区天气情况是很必要的。 而气象数据的信息化,计算机化是上述问题的唯一途径。本系统恰是为了减轻工作人员负担,提高工作效率而研制开发的。 3.1.2天气信息管理系统实施的特点及注意事项 由于天气信息管理系统管理的是所有与天气相关的数据,信息量大,变化频繁,内部关联性较弱,数据的采集、确认、更新和检查都比较困难。因此,实施工作尤为困难。为了最大限度的利用本系统进行信息管理,需要特别注意以下4点: (1)培训管理员。要想使天气信息管理系统真正地发挥应有的效用,必须通过培训转变人们的思维方式和行为方式,学会通过系统来进行科学的管理。 (2)明确基础上的实施目标。要明确整个项目的实施和目标,明确需要采集的数据及保留的历史信息。 (3)测试软件功能。由于天气信息管理系统需处理的信息关系非常复杂,而且要有服务器的构架问题,所以在初期要进行软件功能的测试和网络连接测试, 以确保日后使用。 (4)建立科学的程序性文件。天气信息管理系统的特点是信息量大、变化频繁、采集和确认困难而且无内联关系。采用计算机系统来管理天气信息要求数据的采集、更新能够完整、准确和及时。两者之间的矛盾就要通过建立必要的科学程序性文件才能为系统的实施和正常运行提供有效的保证。 3.2系统详细调查 3.2.1系统的功能需求 基于以上的开发目标,系统开发的范围确定如下:本系统只涉及气象信息的管理部分,不包括对数据如何进行测量的内容。本息同提供强大的查询功能。可进行不同类型查询,提供多种索引;本系统提供记录的添加,删除、查询和绘制曲线图等功能。而且可以按月或者按年生成数据报表。同时应实现服务器端和客户端的网络连接通信功能。 3.3.2系统的运行环境 硬件环境: 处理器1GHZ以上,推荐采用INTEL公司的Pentium 4 1.8GHZ处理器; 内存在128M以上,推荐采用256M DDR 内存; 支持TCP/IP 以太网 软件环境: 操作系统:Windows 98 以上。 数据库系统:Access2000 辅助工具:Visal C++ 6.0 3.3 数据流图 数据流图描绘系统的逻辑模型,图中没有任何物理元素,只是描绘信息在系统中流动和处理情况。因为数据流图是逻辑系统的图形表示,即使不是专业的计算机技术人员也容易理解,所以是极好的通信工具。此外设计数据流图纸需要考虑系统必须完成的基本逻辑功能,完全不需要考虑如何具体地实现这些功能。 画数据流图的基本目的是利用它作为交流信息的工具。分析员把他对现有系统的认识或对目标系统的设想用数据流图描绘出来,供有关人员审查确认。由于在数据流图中通常仅仅使用四种基本符号,而且不包括任何有关物理实现的细节,因此,绝大多数用户都可以理解和评价它。 从数据流图的基本目标出发,可以考虑在一张数据流图中包括多少个元素合适的问题。一些调查表明,如果一张数据流图包含的处理多于5,9个,人们就难于领会它的含义了。因此数据流图应该分层,并且把功能及数据流图细化后得 到的处理超过9个时,应采用划分图的方法,也就是把每个主要功能都细化一张数据流分图,而原有的功能级数据流图用来描绘系统的整理逻辑概貌。 首先,分析系统的总体情况,划分系统边界,识别系统的数据来源和去处,确定外部实体,得出系统的顶层数据流程图;然后划分出几个主要的信息管理功能,并明确各功能之间的联系,绘制出数据流程图。 -1所示。 数据流程图的符号说明见图3 外部实体 处理 数据流 数据存储 图3-1 数据流程图的符号说明 服务器端功能模块数据流程图,见图3-2所示。 客户端功能模块的数据流程图,见图3-3所示。 操作员 员 P1 服务器端界面 P2 P3 P4 导入数据模块 查询模块 生成图表模块 F1 服务器端数据库 图3-2 服务器端数据流程图 操作员 P5 客户端界面 P6 P7 P8 P9 导入数据 添加数据 查询数据 生成图表 F2 客户端数据库 图3-2 客户端数据流程图 各模块的主要功能 1( 添加操作员信息 将添加的操作员基本信息(包括照片)存入客户端的数据库中,要求照片以二进制的形式存入数据库。在添加数据信息对话框中,当选择操作员ID是,要求将从数据库中读出的二进制数据转化为位图,画在在对话框上。 2(查询数据 服务器端管理员可以根据不同的城市名和时间段来进行分类查询。客户端管理员只能查询本地的数据信息。 3(添加数据 客户端管理员添加数据到本地服务器的同时,本系统自动将数据添加到远程服务器端,便于以后的查询分析。 4(利用曲线图显示数据 该功能是把数字显示数据的方式转换成以曲线图显示数据的方式。用户可以根据不同的城市查看到不同时间段的温度和湿度曲线图。 5(批量导入、导出数据 可将查询后的数据已批量形式导出为文本文件格式,再将该文件通过网络传送到服务器端,最后服务器端可再将此文本文件导入到服务器端数据库,以实现批量数据的远程传输。 6(将查询后的数据生成RTF表格形式 RTF格式就非常流行的字处理系统格式,许多优秀的以数据为基础的管理系统都可以将数据转化成RTF表格形式,以方便以后排版和打印。本系统也可生成统计全年或单月的RTF表格。 第四章 系统设计 4.1软件的总体结构设计 通常程序中的一个模块完成一个适当的子功能。应该把模块组织成良好的层次系统,顶层模块调用它的下层模块以实现程序的完整功能,每个下层模块在调用更下层的模块,从而完成程序的一个子功能,最下层的模块完成最具体的功能。用例图是UML中描述整体结构图的工具,一般用例的描述使用用例描述文字框架,描述包括:用例的名称,使用者,前提条件,执行结果,用例的主业务流,分支业务流,相关扩展用例,特殊需要等信息,遵循一定的准则进行描述。本系统使用者分别是服务器端操作员,和客户端操作员,各自完成不同模块的功能。 本系统的用例图如图4-1所示。 天气信息管理系统 导入数据 导入数据 编辑数据 查询数据 查询数据 客户端服务器端 点 数据曲线图 生成数据表 数据曲线图 图4-1 用例图 4.2数据库设计 4(2(1数据库概念设计 数据库的建立首先需要选择数据库模型,在数据库的发展历史中,先后经历了网状模型和层次模型关系模型的时代,目前正在向对象模型发展。然而,当今最为成熟并商业化的数据库还是关系模型的数据库。本章对数据库模型进行了 介绍,最后对使用数据访问对象进行观测数据库的访问进行了描述。在数据库系统开始设计的时候,应该尽量考虑全面,尤其应该仔细考虑用户的各种需求,避免浪费不必要的人力和物力。 语义描述:概念设计阶段与具体的DBMS(数据库管理系统)无关,不考虑数据与操作之间的关系,仅从概念上明确地描述数据与数据之间的关系。即采用一定的形式来综合的表示数据库概念结构。概念结构独立于数据库逻辑结构,也独立特定的DBMS,其主要特点是: 能充分反映现实世界,包括实体之间的联系,能满足用户对数据处理的要求,是现世界的一个真实模型。 易于理解,从而可以和不熟悉计算机的用户交换意见。用户的积极参与是数据库设计成功与否的关键。 易于更动。当现实世界改变,容易修改和扩充。 因此概念结构是各种数据模型的共同基础,它比数据模型更独立于机器,人而更加稳定。 气现信息管理系统的概念设计描述如下: 1)月天气信息描述数据和年天气信息描述数据之间具有从属关系,多个月数据从属一个年数据。 2)日天气信息描述数据和月天气信息描述数据之间具有从属关系,多个日数据从属一个月数据。 3)操作员信息和日天气信息数据是选择关系,一个操作员对应多个日天气信息数据。 4.2.2 实体—联系图 在系统的数据库设计中,先要对系统分析得到的数据字典中的数据存储进行分析,分析各数据存储之间的关系,然后才能得出系统的关系模式。可以采用E-R图的方法来进行数据结构分析。E-R设计方法是一种通过E-R图来描述现实世界信息结构的设计方法。E-R图由实体、属性、联系三部分组成。E-R图的符号说明如图4-2所示。 实体 属性 实体间的关系 图4-2 E-R图符号说明 在本系统的数据流程图中,系统边界已经很清楚了,所以可直接根据它设计 本系统的E-R图,不必要先设计分的E-R图了,再合并总的E-R图了。所图4-3所 示。 Time name temperatur ID eh age humidity n 1 Every operator gather Day weathe r windpow passworphoto er d winddirecti on rainfa ll Operator_ID 图 4-3 系统E-R图 气象观测信息管理系统中所涉及到的主要实体集及其属性如下: EveryDay(time,temperature,humidity,weather,windpower,winddirecti on,rainfall,operator_ID); Operator(operator_ID,password,name,age,photo); AVyear(year,AVtemperture,AVhumidity,Sumrainfall); AVmonth(year,month,AVtemperate,AVhumidity,Sumrainfall); E-R图向关系模型的转化要解决的问题是如何将实体和实体间的联系转换 为关系模式,如何确定这些关系模式的属性和码。一个好的数据库产品不等于就 有一个好的应用系统,如果不能设计一个合理的数据库模型,不仅会增加客户端 和服务器程序的编程和维护的难度,而且将会影响系统实际运行的性能。一般来 讲,在一个MIS系统分析、设计、测试和试运行阶段,因为数据量较小,设计 人员和测试人员往往只注意到功能的实现,而很难注意到性能的薄弱之处,等到 系统投入实际运行一段时间后,才发现系统的性能在降低。数据库设计是建立数 据库及其应用系统的核心和基础,它要求对于指定的应用环境,构造出较优的数据库模式,建立起数据库应用系统,并使系统能有效地存储数据,满足用户的各种应用需求。 所以归纳的具体的原则如下: 1)进行化设计,尽可能的减少数据重复。 合理的数据库表的设计应该是在满足需求的前提下,使数据库的重复量最小,就尽量按照关系数据库系统理论方法去设计一个数据库,减少数据的重复。 2)结构设计与操作设计想结合。 在设计数据库结构时,有时为了编程实现的简捷和思路的清晰,往往故意增加一些多余的数据。这虽然有悖于传统的关系数据库理论,但是考虑到选择机器型号和档次等因素,如果增加的多余不会明显增加存储空间和降低处理效率,并且对编程实现有很大帮助,往往可以采用这种方法。 3)数据结构的相对稳定性,可以作为新或者是旧系的传统转换依据。 无论采用何种方法或手段去处理日常事物,都应该能完成响应的功能,决不会因为采用了计算机而丢失了必要功能,或彻底改变了原有的工作流程和模式。计算机系统的建立是在原系统充分调研的基础上的,它既不能脱离原系统的大框架,也不是简单的重复和替代。所以数据库表结构设计应保证数据的相对稳定,这样才能考虑在新的数据结构下的业务处理方式。 对于实体间的联系我们分不同的情况讨论: 1)一个实体型转换为一个关系模式。实体的属性就是关系的属性。实体的码就是关系的码。 2) 一个联系转化为一个关系模式,与该联系相连的各实体的码以及联系的属性转化为关系的属性,该关系的码则有三种情况: 联系为1:1,则每个实体的码均是该关系的后选码。 联系为1:n,则关系的码为n端实体的码。 联系为m:n,则关系的码为诸实体码的组合。 一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。 如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,每个实体的码均是该关系的候选码。 如果与某一端对应的关系模式合并,则需要在该关系模式的属性中加入另一个关系模式的码和联系本身的属性。 一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。 如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系 本身的属性均转换为关系的属性,而关系的码为n端实体的码。 如果与n端对应的关系模式合并,则在n端实体对应模式中加入1端实体所对应关系模式的码,以及联系本身的属性。而关系的码为n端实体的码。 一个m:n联系转换为一个关系模式。与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性。而关系的码为各实体码的组合。 4.2.3数据库表设计 一个好的数据库产品不等于就有一个好的应用系统,如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器程序的编程和维护的难度,而且将会影响系统实际运行的性能。一般来讲,在一个MIS系统分析、设计、测试和试运行阶段,因为数据量较小,设计人员和测试人员往往只注意到功能的实现,而很难注意到性能的薄弱之处,等到系统投入实际运行一段时间后,才发现系统的性能在降低…数据库设计是建立数据库及其应用系统的核心和基础,它要求对于指定的应用环境,构造出较优的数据库模式,建立起数据库应用系统,并使系统能有效地存储数据,满足用户的各种应用需求。 所以归纳的具体的原则如下: (1)进行规范化设计,尽可能的减少数据重复。 合理的数据库表的设计应该是在满足需求的前提下,使数据库的重复量最小,就尽量按照关系数据库系统理论方法去设计一个数据库,减少数据的重复。 (2)结构设计与操作设计想结合。 在设计数据库结构时,有时为了编程实现的简捷和思路的清晰,往往故意增加一些多余的数据。这虽然有悖于传统的关系数据库理论,但是考虑到选择机器型号和档次等因素,如果增加的多余不会明显增加存储空间和降低处理效率,并且对编程实现有很大帮助,往往可以采用这种方法。 (3)数据结构的相对稳定性,可以作为新或者是旧系的传统转换依据。 无论采用何种方法或手段去处理日常事物,都应该能完成响应的功能,决不会因为采用了计算机而丢失了必要功能,或彻底改变了原有的工作流程和模式。计算机系统的建立是在原系统充分调研的基础上的,它既不能脱离原系统的大框架,也不是简单的重复和替代。所以数据库表结构设计应保证数据的相对稳定,这样才能考虑在新的数据结构下的业务处理方式。 基于以上三条设计原则,本系统中关于数据库表结构设计如表4-1至表4-4所示。 表 4-1 年平均信息表 字段名称 数据类型 字段长度 字段属性 是否为主键 作用 必填字段 year 4 字符串 是 年份数据 是 AVtemperture 4 整型 否 年平均温度 否 AVhumidity 4 整型 否 年平均湿度 否 Sumrainfall 4 整型 否 年平均降水量 否 表 4-2月平均信息表 字段名称 数据类型 字段长度 字段属性 是否为主键 作用 必填字段 year 4 整型 是 年份数据 是 Month 4 整型 是 月份数据 是 AVtemperture 4 整型 否 月平均温度 否 AVhumidity 4 整型 否 月平均湿度 否 Sumrainfall 4 整型 否 月平均降水量 否 表 4-3操作员信息表 字段名称 数据类型 字段长度 字段属性 是否为主键 作用 必填字段 ID 10 字符串 是 操作员ID号 是 Password 10 字符串 否 密码 否 Name 12 字符串 否 姓名 否 Age 4 整型 否 年龄 否 Photo 1024 OLE对象 否 照片文件 否 表 4-4基本信息表 字段名称 数据类型 字段长度 字段属性 是否为主键 作用 必填字段 Time 4 字符串 是 时间数据 是 Temperature 4 整型 否 温度数据 否 Humidity 4 整型 否 湿度数据 否 Windpower 4 字符串 否 风力数据 否 Winddirection 8 字符串 否 风向数据 否 Rainfall 4 整型 否 降雨量数据 否 Operator-ID 10 字符串 否 操作员ID号 否 4.2.4 数据库的实现 本系统采用Access作为数据库引擎,其主要原因是考虑到现在的大多数办公室应用系统软件均支持Access数据库,所以只要应用于格式符合的计算机系统上即可运行,并且由于Access与VC皆是微软公司开发出来的软件,所以它们之间的兼容性非常好,容易配合使用。 Access2000 就是关系数据库开发工具,数据库能汇集各种信息以供查询、存储和检索。Access 的优点在于它能使用数据表示图或自定义窗体收集信息。数据表示图提供了一种类似于 Excel 的电子表格,可以使数据库一目了然。另外,Access 允许创建自定义报表用于打印或输出数据库中的信息。Access也提供了数据存储库,可以使桌面数据库文件把数据库文件置于网络文件服务器,与其他网络用户共享数据库。Access 是一种关系数据库工具,关系数据库是已开发的最通用的数据库之一。 Microsoft 公司开发的Access 2000使运行于Windows系列平台之上关系数据库管理系统,通过各种数据库对相对数据进行控制和管理。不论创建的独立桌面数据库适用于个人、部门还是整个企业,它都可以为管理和共享数据生成易于使用的数据库。它不仅具有众多传统数据库管理软件具备的功能,同时还进一步增强了与Internet的集成。 Access2000 就是关系数据库开发工具,数据库能汇集各种信息以供查询、存储和检索。Access 的优点在于它能使用数据表示图或自定义窗体收集信息。数据表示图提供了一种类似于 Excel 的电子表格,可以使数据库一目了然。另外,Access 允许创建自定义报表用于打印或输出数据库中的信息。Access也提供了数据存储库,可以使桌面数据库文件把数据库文件置于网络文件服务器,与其他网络用户共享数据库。Access 是一种关系数据库工具,关系数据库是已开发的最通用的数据库之一。 全新的数据库窗口:Microsoft Access 2000 在数据库窗口商大有改进,提高了新用户的友好性,并增强与其它Office程序的共享性。数据库窗口类似于Outlook的界面,由工具栏、功能组切换按钮以及显示页面三部分组成。 快速访问常用文件夹:Microsoft Access 2000 的“打开”和“保存”对话框经过重新设计,对话框右侧新增一列常用文件夹。用户在打开或保存数据库文件时,能够快速访问特定的目标文件夹。在“打开”和“保存”对话框工具栏中也新增了一个与浏览器窗口功能相同的“后退”按钮,单击该按钮可以快速的返回到上次访问的文件夹或磁盘位置。 数据库转换:在Microsoft Access 2000 中,用户不但可以打开以前的数据库,而且可以把以前版本的数据库转化为2000的版本,甚至可以把2000的版本保存为以前的版本,使不同的软件用户可以更方便的共享数据库。 名称自动改正:使用旧版本的用户也会发现,原来尊再的连接不再有效时,更改表或字段名称会出现错误。“名称自动更正”功能自动解决用户重命名数据库对象时产生的关联影响,这些名称更改被职能的传给相关对象,用户可以非常容易的处理这些对象。 新的条件格式:Access 用户在创建窗体或报表过程中,有时需要数据所代表的值设置窗体或表中某字段的格式。Access 2000中的条件格式允许用户根据此数据库中的数据来设置窗体或报表中的控件格式。 字数据表:在 Access 2000中利用了子数据表可以查看与当前表相关的数据,而不只是查看数据表的单个记录源,自数据表允许用户浏览数据表视图中的分级数据。 数据访问页:Access 2000 提供的数据访问也允许用户通过简单,快捷的方法创建绑定数据的HTML格式的Web页,将数据库应用程序扩展到Internet网,有助于更快更有效的共享数据库中的数据。 数据库组成:Access 数据库是Windows 以及 Windows NT 平台上常用的关系型数据库管理系统,主要由表、查询、窗体、报表、数据访问页、宏以及模块中数据对象组成。不同数据库对象在数据库中起着不同的作用,灵活的使用一个数据库对象可以是数据库的功能更强大,管理更方便。 综上所述,Access 作为关系数据库开发具备了许多优点,可以在一个数据包中同时拥有桌面数据库的便利和关系数据库的强大功能。 4.3 详细设计 客户端使用的基本模块包括:添加操作员模块,添加数据模块,导入数据模块,查询数据模块,观察数据曲线图模块,生成RTF报表模块。 服务器端使用的基本模块包括:导入数据模块,查询数据模块,观察数据曲线图模块。 UML中交互视图描述了执行系统功能的各个角色之间相互传递消息的顺序关系。类元是对在系统内交互关系中起特定作用的一个对象的描述,这使它区别于同类的其他对象。交互视图显示了跨越多个对象的系统控制流程。交互视图可用两种图来表示:顺序图和协作图,它们各有不同的侧重点。顺序图和协作图都可以表示各对象间的交互关系,但侧重点不同。顺序图用消息的几何排列关系来表达消息的时间顺序,各角色之间的相关关系是隐含的。本系统采用顺序图来分析各个模块。顺序图表示了对象之间传送消息的时间顺序。顺序图可以用来进行一个场景说明----即一个事务的历史过程。顺序图的一个用途是用来表示用例中 的行为顺序。当执行一个用例行为时,顺序图中的每条消息对应了一个类操作或状态机中引起转换的触发事件。下面对各主要模块进行顺序图设计。 1(查询数据模块顺序图,如图4-4所示。 登录界面 数据库 打开查询对话框 筛选数据信息 读数据库中信息 返回数据信息 退出系统 图4-4 查询数据模块顺序图 2(客户端添加数据模块顺序图,如图4-5所示。 登录界面 数据库 Client操作员 输入操作员名及密码 不是已存在的操作员 添加新操作员 添加一天的数据 添加数据错误 [添加数据正确] 数据成功存入 图4-5 客户端添加数据模块顺序图 3(生成曲线图模块顺序图,如图4-6所示。 登录界面 数据库 图形处理 打开查询对话框 输入查询信息 筛选出数据信息 将信息存入数组中 在视图中绘出曲线图形 退出系统 4-6 曲线图模块顺序图 4(数据生成RTF表格模块。 根据查询条件,可将全年或单月的数据写入RTF表格的文件中。不同格式的文件都有他自己的特定格式,所一本系统专门设计一个类,以实现特定的RTF格式的写入。该类的描述如图4-7所示。 RTF报表类 + WriteDefault_Head():void 功能:写RTF文件头。 + WriteDefault_Tail():void 功能:写RTF文件尾。 + WriteSingleLine(char *pszLine,const int &AlignType):void 功能:写普通文本数据。 参数: pszLine:要写入的字符数据。 AlignType:文字的对齐方式。 + WriteTableHead(const int &Col,int * pWidth):void 功能:写表头数据。 参数: Col:表格的列数。 pWidth:每一列的宽度组成该数组。 + WriteContent(const int &countnt ,CString *pStringList):void 功能:写表格内容。 参数: countnt: 表格的列数。 pStringList:每一列的内容。 + WriteTableTail():void 图4-7 RTF表格类图 5(源代码见附录。 第五章 系统设计 5.1 相关技术与开发环境的选择 5.1.1 VC++6.0开发环境 Mircrosoft Visual C++ 6.0(简称VC++ 6.0),是微软可视化编程套件 Visual Studio 98中的重要组成部分。这套功能强大的Windows应用程序开发系统是由Microsoft C/C++演化而来的。从Microsoft C/C++ 8.0开始改称为Visual C++,以至发展到今天的Visual C++ 6.0。 由于同时微软的产品,Visual平台是当前Windows应用开发系统中与Windows平台本身支持最彻底的开发平台。Visual C++6.0包含了支持Windows 95.Windows NT 4.0以及Windows 98的Win32 SDK文档,即人们可以在Visual C++环境下使用Windows SDK的SDK文档提供的API来进行Windows应用程序的开发。Visual C++ 6.0采用的是32位编程方式,也就是说其生成的程序是在像Windows 95 Windows NT4.0和Windows 98等这样的32位操作系统下运行的。VC++ 6.0继承了其以前版本的最主要的技术。它提供了一系列可视化编程的工具,如AppWizard和ClassWizard等。它们使Windows内在的复杂的运行机制,通过微软基础类库MFC,使Windows编程更为简单易学。 下面对MFC作一介绍:如果你曾经使用过传统的windows编程方法开发应用程序,你会深刻地体会到,即使是开发一个简单的windows应用程序也需要对windows的编程原理有很深刻的认识,同时也要手工编写很多的代码。因为程序的出错率几乎是随着代码长度的增加呈几何级数增长的,这就使得调试程序变得非常困难。所以传统的windows编程是需要极大的耐心和丰富的编程经验的。 近几年来,面向对象技术无论是在理论还是实践上都在飞速地发展。面向对 概念,它把现实世界中的气球、自行车等客观实象技术中最重要的就是“对象”的 体抽象成程序中的“对象”。这种“对象”具有一定的属性和方法,这里的属性指对象本身的各种特性参数。如气球的体积,自行车的长度等,而方法是指对象本身所能执行的功能,如气球能飞,自行车能滚动等。一个具体的对象可以有许多的属性和方法,面向对象技术的重要特点就是对象的封装性,对于外界而言,并不需要知道对象有哪些属性,也不需要知道对象本身的方法是如何实现的,而只需要调用对象所提供的方法来完成特定的功能。从这里我们可以看出,当把面向对象技术应用到程序设计中时,程序员只是在编写对象方法时才需要关心对象本身的细节问题,大部分的时间是放在对对象的方法的调用上,组织这些对象进行协同工作。 MFC的英文全称是Microsoft Fundation Classes,即微软的基本类库,MFC 的本质就是一个包含了许多微软公司已经定义好的对象的类库,我们知道,虽然我们要编写的程序在功能上是千差万别的,但从本质上来讲,都可以化归为用户界面的设计,对文件的操作,多媒体的使用,数据库的访问等等一些最主要的方面。这一点正是微软提供MFC类库最重要的原因,在这个类库中包含了一百多个程序开发过程中最常用到的对象。在进行程序设计的时候,如果类库中的某个对象能完成所需要的功能,这时我们只要简单地调用已有对象的方法就可以了。我们还可以利用面向对象技术中很重要的“继承”方法从类库中的已有对象派生出我们自己的对象,这时派生出来的对象除了具有类库中的对象的特性和功能之外,还可以由我们自己根据需要加上所需的特性和方法,产生一个更专门的,功能更为强大的对象。当然,你也可以在程序中创建全新的对象,并根据需要不断完善对象的功能。 正是由于MFC编程方法充分利用了面向对象技术的优点,它使得我们编程时极少需要关心对象方法的实现细节,同时类库中的各种对象的强大功能足以完成我们程序中的绝大部分所需功能,这使得应用程序中程序员所需要编写的代码大为减少,有力地保证了程序的良好的可调试性。 最后要指出的是MFC类库在提供的对象的各种属性和方法都是经过谨慎的编写和严格的测试,可靠性很高,这就保证了使用MFC类库不会影响程序的可靠性和正确性。 此外,VC++6.0还具有其它技术特点:如通过ActiveX技术来支持Internet编程,支持ODBC数据库编程等。Visual C++的最大特色就是提供对面向对象技术的支持,它利用类把大部分与用户界面设计有关的Windows API函数封装起来,通过MFC(Microsoft Foundation Class)类库的方式提供给开发人员,大大提高了程序代码的重用性。 Visual C++贯穿了面向对象的程序设计思想,是一种面向对象的集成开发软件,它最突出的特性就是封装性、继承性和多态性。 1)封装性 对象的封装性是指将对象的属性(数据内容)和作用于这些属性上的操作封装在—起,对象的使用者只通过它提供的接口(类声明)使用这个对象。对象的内部是被保护起来的,它的使用是通过发送消息—即调用公有成员函数完成的。 2)继承性 继承性指的是一个新类可以从现有的类中派生出来,新类具有父类中所有的特性,直接继承了父类的方法和数据,新类的对象可以调用该类及父类的成员变量和成员函数( 3)多态性 多态性就是当不同对象收到相同的消息时产生不同的动作。利用多态性,发送一般形式的消息,而将所有实现的细节留给接收消息的对象去解决。 在计算机技术日益发展的今天,开发数据库程序已经成为计算机应用的一个重要领域。如今,各种数据库开发工具层出不穷,而 Visual C++ 以其完美的界面、方便的操作、强大的功能在各种数据库开发工具中独树一帜。作为微软公司的重点产品,Visual C++具有其它数据库开发工具所无法比拟的优势。微软公司刚推行 Visual C++ 时说过,只有你想不到的,没有它做不到的。它易学易用,因此得到了广大软件开发人员及计算机爱好者的青睐。它是一种完全面向对象和可视化开发工具。 5.1.2前台与后台的数据绑定 本系统采用Data控件建立数据绑定控件和数据提供者之间的连接。 微软的JET数据库引擎提供了与数据库打交道的途径,我们是通过它以及Visual Basic 来访问数据库并对其进行各种操作。Visual Basic、Access以及其他微软的软件产品都是通过共用JET数据库引擎,从而给用户提供了丰富的数据类型。Data 控件在数据库中的信息与将信息显示给用户看的Visual Basic程序之间架起了一座桥梁。我们可以设置Data控件的各个属性,告诉它要调用那个数据库的哪个部分。 为了减少代码的编写,在设计时事先都设置好了,主要设置的是:DatabaseName(要连接数据的名字)和RecordSource(记录源:即数据库中的某一张二维表)。 5.2程序设计(相关代码见附录) 1)客户端添加数据模块: 1.功能 客户端管理员添加数据到本地服务器的同时,同时系统自动将数据添加到远程服务器端,便于以后的查询分析。 2.设计方法 系统用ADO技术连接数据库,将输入的信息存入本地数据库中,并是用CSocket类实现与服务器的网络连接,将信息以指定格式发送到数据库中。 3.模块对应的窗体如图5-1所示。 图 5-1 2)查询数据模块: 1(功能 服务器端管理员可以根据不同的城市名和时间段来进行分类查询。客户端管理员只能查询本地的数据信息。 2(设计方法 根据管理员选择的查询条件,用SQL语句对数据库进行筛选,最后在GridData数据表格控件中显示查询信息。 3.模块对应的窗体如图5-2所示。 图 5-2 3)生成曲线图模块 1.功能 该功能是把数字显示数据的方式转换成以曲线图显示数据的方式。用户可以根据不同的城市查看到不同时间段的温度和湿度曲线图。绘制图形后,可以在视图中移动鼠标位置,当鼠标移到某一数据点上时,系统自动会在光标旁边弹出一文本框,显示该点的具体信息,最大程度的方便用户查询。 2.设计方法 以时间为X轴,以温度和湿度为Y轴,用GDI在视图窗口中绘制曲线图。当在视图中移动鼠标时,实时遍历时间数组,判断鼠标点的位置是否为图形中数据点的位置,如果是:根据时间数据从温度和湿度数组中找到该点的具体信息,最后以文本框的形式弹出,当鼠标指向另一个点时,系统自动关闭上一个文本框,并删除该文本框句柄。 3.模块对应的窗体如图5-3所示。 图 5-3 4)数据生成RTF表格 1.功能 根据查询条件,可将全年或单月的数据写入RTF表格的文件中。 2.设计方法 不同格式的文件都有他自己的特定格式,所一本系统专门设计一个类,以实现特定的RTF格式的写入。 3.模块对应的窗体如图5-4所示。 图 5-4 5)添加操作员信息 1.功能 添加操作员的基本信息存入数据库中。 2.设计方法 该模块主要难点是以二进制为基础的照片数据的读取与写入,系统以二进制的形式将信息存入数据库。在添加数据信息对话框中,当选择操作员ID是,要求将从数据库中读出的二进制数据转化为位图,画在在对话框上。 3.模块对应的窗体如图5-5所示。 图 5-5 第六章 系统的测试与维护 6.1 系统测试 6.1.1什么是软件测试及其意义 软件测试就是在受控制的条件下对系统或应用程序进行操作并评价操作的结果。也就是说,如果用户面对着应用程序的 A 界面,在使用硬件 B 的时候做 C 操作,那么 D 结果应该出现。所谓受控制的条件应该包括正常条件和非正常条件。应该故意地去促使错误的发生,也就是事情在不该出现的时候出现或者在应该出现的时候没有出现。从本质上说,软件测试是“探测”。 软件测试的意义: 在开发大型软件系统的过程中,面对错综复杂的问题,人们的主观认识不可能完全符合客观事实。与工程密切相关的各类人员之间的通信和配合也不可能完美无缺,因此,在软件生命周期的每个阶段都不可避免地出现错误。我们力求在每个阶段结束之前通过严格的技术审查,尽可能早的发现并纠正这些错误,但是经验表明这样的审查不可能纠正所有的错误,此外在编码过程中还不可避免地引入新的错误。如果软件投入生产性运行之前,还没有发现并纠正软件中的大部分错误,则这些错误迟早会在生产中暴露出来,那时不仅改正这些错误的代价过高,而且往往会造成很恶劣的后果。测试的目的就是在软件投入生产性运行之前,尽可能多地发现错误。目前,软件测试仍然是保证软件质量的关键步骤。 软件测试在生命周期中分为两个阶段。单元测试和综合测试。单元测试由编写者自己完成,此时编写者和测试者是同一个人。综合测试是软件生命周期的一个独立的阶段,通常有专门的测试人员完成这项工作。 6.1.2软件测试的方法及步骤 (一)软件测试的方法 软件测试有两种方法:白盒法和黑盒法 如果知道了产品应该具有的功能,可以通过测试来检测是否每个功能都能实现,这种测试方法叫作黑盒测试法;如果知道产品的内部工作过程,可以通过测试来检验是否按照规格说明说的正常运行,这个方法叫白盒测试法。 对于软件而言,黑盒测试法是把程序看成一个黑盒子,完全不考虑程序的内部结构和处理过程。也就是说黑盒测试是在程序的接口进行测试,它只检查程序的功能是否按照规格说明说的说明正常运行,程序是否能恰当的接受输入数据,产生正确的输出信息,并且保持外部信息的完整性。黑盒测试又称为功能测试。与黑盒测试法相反,白盒测试法是把程序看成是装在一个透明的白盒子里。也就是完全了解程序的结构和处理过程,这种方法按照程序内部的逻辑测试程序,检 验程序中的每条通路是否能按预定的要求正确工作,白盒测试又称为结构测试。 粗看起来,不论采用上述那种测试方法,只要对每一种可能的情况都进行测试,就可以得到完全正确的程序。包含所有可能情况的测试成为穷尽测试,对于实际程序而言,穷尽测试通常是不可能做到的。使用黑盒测试法为了做到穷尽测试,至少对所有输入数据的各种可能值的排列组合都进行测试,但是,由此得到的应该测试的情况,数字往往达到实际上根本无法测试的程度。实践表明,用无效的输入数据比有效的输入数据进行测试往往能发现更多的错误。使用白盒测试法和使用黑盒测试法一样也不可能做到穷尽测试。 因为不能做到穷尽测试,所以软件测试不可能发现程序中的所有错误。也就是所通过测试并不能证明程序是完全正确的。但是,我们的目的是要通过测试保证软件爱你的可靠性,因此,必须仔细设计测试方案,力争用尽可能少的测试发现尽可能多的错误。 (二)软件测试的步骤 当设计工作完成以后,就应该着手测试的准备工作了,一般来讲,由一位对整个系统设计熟悉的设计人员编写测试大纲,明确测试的内容和测试通过的准则,设计完整合理的测试用例,以便系统实现后进行全面测试。 在实现组将所开发的程序经验证后,提交测试组,由测试负责人组织测试,测试一般可按下列方式组织: (1)首先,测试人员要仔细阅读有关资料,包括规格说明、设计文档、使用#说明书#及在设计过程中形成的测试大纲、测试内容及测试的通过准则,全面熟悉系统,编写测试计划,设计测试用例,作好测试前的准备工作。 (2)为了保证测试的质量,将测试过程分成几个阶段,即:代码审查、单元测试、集成测试和验收测试。 (3)代码会审是由一组人通过阅读、讨论和争议对程序进行静态分析的过程。会审小组由组长,2,3名程序设计和测试人员及程序员组成。会审小组在充分阅读待审程序文本、控制流程图及有关要求、规范等文件基础上,召开代码会审会,程序员逐句讲解程序的逻辑,并展开热烈的讨论甚至争议,以揭示错误的关键所在。实践表明,程序员在讲解过程中能发现许多自己原来没有发现的错误,而讨论和争议则进一步促使了问题的暴露。例如,对某个局部性小问题修改方法的讨论,可能发现与之有牵连的甚至能涉及到模块的功说明、模块间接口和系统总结构的大问题,导致对需求定义的重定义、重设计验证,大大改善了软件的质量。 (4)单元测试: 单元测试集中在检查软件设计的最小单位-模块上,通过测试发现实现该模块的实际功能与定义该模块的功能说明不符合的情况,以及编码的错误。由于模 块规模小、功能单一、逻辑简单,测试人员有可能通过模块说明书和源程序,清楚地了解该模块的I/O条件和模块的逻辑结构,采用结构测试(白盒法)的用例,尽可能达到彻底测试,然后辅之以功能测试(黑盒法)的用例,使之对任何合理和不合理的输入都能鉴别和响应。高可靠性的模块是组成可靠系统的坚实基础。 (5)集成测试: 集成测试是将模块按照设计要求组装起来同时进行测试,主要目标是发现与接口有关的问题。如数据穿过接口时可能丢失;一个模块与另一个模块可能有由于疏忽的问题而造成有害影响;把子功能组合起来可能不产生预期的主功能;个别看起来是可以接受的误差可能积累到不能接受的程度;全程数据结构可能有错误等。 (6)验收测试: 验收测试的目的是向未来的用户表明系统能够像预定要求那样工作。经集成测试后,已经按照设计把所有的模块组装成一个完整的软件系统,接口错误也已经基本排除了,接着就应该进一步验证软件的有效性,这就是验收测试的任务,即软件的功能和性能如同用户所合理期待的那样。 经过上述的测试过程对软件进行测试后,软件基本满足开发的要求,测试宣告结束,经验收后,将软件提交用户。 (三)在开发本系统时,为了使系统能够稳定运行,对本系统进行了有针对性的全面测试,采用的方式是: 1.菜单项测试:为了保证每一项下拉菜单能够正确实现系统设计的功能,我把该企业有关的所有基础数据,基本上全部输入到本系统中,并对每一个菜单项反复进行了增加,删除,修改等操作,从而保证了菜单级功能的正确实现。 2.数据跟踪:完成菜单项测试后,我又对系统内的每一项数据进行了跟踪。 3.综合测试:在以上测试的基础上对系统功能进行了整体的测试,依次来检验系统功能是否符合系统设计的要求。 5.1.3 功能测试 软件开发过程中,先对主要功能进行测试。之后每完成一个小功能,都对其进行测试,通过后对下一个小功能进行测试。在测试过程中发现很多问题,如对数据库操作时输入类型不匹配,数据长度过长,有些字段不可为空等。还有定义的全局变量与局部变量冲突等等。都一一进行了纠正。由于能力有限不能发现并纠正所有的漏洞和错误之处。还有待改正。 在开发人事管理信息系统的时候,为了使系统能够稳定运行,对系统进行了测试: 1.查询功能测试:为了保证系统的每一项功能都可能顺利执行,尤其是查询 功能的执行,特别进行各项查询方式的不同索引确保各种查询方式可查询到正确记录。 2.数据曲线图验证:因为图形生成后,因为点很多,并不容易进行验正。应当将数据做成有一定规律的,比如等差或等比的,这样可以清楚的看到图形中的错误。 3.报表输出测试:RTF报表是Word字处理系统的的一种格式,但不同板本的格式有着很大不同,要保证报表适应于不同的版本,就必须进行严格的测试。 5.2系统的维护 软件维护是软件生命周期的最后一个阶段,它处于系统投入生产并运行以后的时期中。因此不属于系统开发过程。 所谓维护就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。因为软件测试不可能暴露出一个大型软件系统中所有潜藏的错误,所以必然会有第一项维护活动:在试用期间,用户必然会发现程序错误,并且把他们遇到的问题报告给维护人员,我们把诊断和改正错误的过程称为改正性维护。适应性维护,也就是为了和变化了的环境是当地配合而进行的修改软件的活动,是既必要又经常地维护活动。 在实用软件的过程中用户往往提出增加新功能或修改已有功能的建议,还可能提出一般性的改进意见。为了满足这类要求,需要进行完善性维护。这项维护活动通常占软件维护工作的大部分。当为了改进未来的可维护性或可靠性,或为了给未来的改进奠定更好的基础和修改软件,做的维护通常称为预防性维护。 系统的维护主要包括四个方面: 1)程序的维护:指的是修改部分或全部程序,这种维护往往是在条件发生变化或原系统的效率低的情况下进行的。 2)数据文件的维护:指的是按照用户的要求对数据文件进行不定期的修改。 3)代码的维护:随着系统的发展和变化,可能会出现旧的代码不能适应新的要求的问题,因此,有必要变更代码,予以维护。 4)硬件的维护:指的是对系统所使用的设备进行维护。 第七章 总结 气象观测数据处理系统是一个实际的项目。针对目前气象观测人员缺乏、工作强度大、工作质量不高等一些问题,目的是降低观测人员的工作强度,提高工作效率;减少人为差错,提高工作质量。希望气象观测数据处理系统能够在实际观测工作中使用。 最重要的是,通过近三个月的设计、调试使我深深体会到此次毕业设计的重要性和学习VC的乐趣,这次的毕业设计使体会到理论联系实践的重要性和必要性。同时,我也感受到Visual C++ 6.0 和Access 2000 的功能之强大,事件处理的灵活性和高效性。 在本次设计中,我学到了很多知识,在技术方面,进一步掌握了VC的各种编程方法及技巧,包括ADO与数据库的连接技术和GDI绘图等工具的使用方法。从而对VC等面向对象编程语言的使用方法有了进一步的了解。同时,由于本软件使用的是Access 2000数据库进行开发的。对它的使用环境和方法都有了进一步的了解。在非技术方面,得到了很多有关软件开发上的宝贵经验,了解到在软件开发过程,我们不仅需要具备扎实的专业知识,还需要具备团体合作精神,同时要能够快速掌握新的知识并能运用到实际编程中去。在软件开发过程中,要具备周密严谨的开发思想。 当然,一次软件系统的开发并不能代表什么,通过这次毕业设计我也了解到了自身的不足和缺陷,知道了要编出一个好的软件不但要有扎实的基础,还要有严谨的编程思想和与他人的合作精神。令我深深的了解到自己的知识是多么的贫乏,这给了我继续奋斗下去的目标,而这次设计的成功则给予了我不断向前进取的信心。 在以后的工作中,要不断学习新的知识,提高专业技能,以适应社会软件业的不断发展。 参考文献 [1] 范玉顺等.《工作流管理技术基础》.第1版, 北京:清华大学出版社, 2001 [2] 范玉顺, 吴澄. 工作流管理技术研究与产品现状及发展趋势. 计算机集成制造系统CIMS, 2000, 6(1):1-7 [3] 赵卫东, 黄丽华, 蔡斌. 工作流过程模型研究. 系统工程理论方法应用, 2002, 11 (3):212-217 [4] 李红臣, 史美林. 工作流模型及其形式化描述. 计算机学报, 2003, 26(11):1456-1463 [5] 夏长虹, 陈文博. 工作流系统过程建模与应用生成环境研究. 计算机工程, 2003,29 (5):59-61 [6] 牛军钰, 赵宏, 赵大哲. 基于Petri网的工作流建模方法. 控制与决策, 1999, 14(增 刊):521-525 [7] 黄世秀, 高飞, 胡小华. 基于工作流的电子政务系统. 合肥工业大学学报(自然科学版), 2004, 27(2):140-143 [8] 赵刚, 杨宗凯. 基于工作流和Web技术的OA系统设计. 计算机工程与应用, 2002.09:235-238 [9] GAO Chun-ming, XIAO Wei, CHEN Yue-xin, LI Zhu-chao. A Evaluation Management Information System Based on Workflow. Jour Nat Scie Hunan Norm Uni, Dec. 2001; Vol. 24 No. 4:25-28 [10]Jiang Hao, Dong Yisheng, Luo Junzhou. Research on Petri Net Based Modeling and Analyzing Methods for Workflow Process. Journal of Southeast University(English Edition), Dec. 2000; Vol. 16 No. 2:66-68 [11] Albir S. UML in a nutshell.O'Reilly, 1998 [12] Booch G, Rumbaugh J, Jacobson. The Unified Modeling LanguageUser Guide. Addison一 Wesley,1999 [13] Booch G,Rumbaugh J,Jacobson.TheUnified Software Development Process. Addison一 Wesley, 1999 [14] Booch G, Rumbaugh J,Jacobson. The Unified Modeling LanguageReference Manual. Addison一Wesley, 1999 [15] Rosenberg D, Scott K. Use Case Driven Object Modeling with UMLAddison一Wesley,1999 [16] D'Souza D, Wills A. Object Components, Frameworks withUML. Addison-Wesley,1999 [17] Rational Rose Reference Manual. Rational SoftwareCorporation, 2000. [18] 中文UML网站 附录 天气信息管理系统程序部分源代码: //写RTF格式的类 #ifndef RTF_H #define RTF_H //#include #include "stdio.h" #define ALIGN_LEFT 0x01 #define ALIGN_MIDDLE 0x02 #define ALIGN_RIGHT 0x03 class RTFDoc { public: RTFDoc(); RTFDoc(CString strFileName); ~RTFDoc(); public: void WriteDefaultHead(); void WriteDefaultTail(); void WriteSingleLine(char *pszLine,const int &AlignType); void WriteTableHead(const int &Col,int *pWidth); void WriteContent(const int &countnt,CString *pStringList); void WriteTableTail(); protected: FILE *m_pRTFFile; }; #endif RTFDoc::RTFDoc() { } RTFDoc::RTFDoc(CString strFileName) { m_pRTFFile=fopen(strFileName,"w"); } RTFDoc::~RTFDoc() { if(m_pRTFFile) fclose(m_pRTFFile); } void RTFDoc::WriteDefaultHead() { if(m_pRTFFile) { char *pszTitle="{\\rtf1\\ansi\\ansicpg936\\deff0\\deflang1033\\deflangfe2052{\\fonttbl{\\f0\\fmodern\\f prq6\\fcharset134 \\'cb\\'ce\\'cc\\'e5;}}"; fprintf(m_pRTFFile,"%s\r\n",pszTitle); pszTitle="\\viewkind4\\uc1"; fprintf(m_pRTFFile,"%s\r\n",pszTitle); } } void RTFDoc::WriteDefaultTail() { if(m_pRTFFile) { char *pszTitle="\\par}"; fprintf(m_pRTFFile,"%s",pszTitle); } } void RTFDoc::WriteSingleLine(char *pszLine,const int &AlignType) { if(m_pRTFFile) { CString strLine=""; strLine+="\\pard\\lang2052\\kerning0\\f0\\fs18"; //对齐方式 if(AlignType==ALIGN_RIGHT) strLine += "\\qr\\lang2052 "; if(AlignType==ALIGN_MIDDLE) strLine += "\\qc\\lang2052 "; if(AlignType==ALIGN_LEFT) strLine += "\\lang2052 " ; strLine += pszLine; strLine += " \\par"; fprintf(m_pRTFFile,"%s\r\n",strLine); } } void RTFDoc::WriteTableHead(const int &Col,int *pWidth) { if(m_pRTFFile) { int m=0; char *pszTitle="\\trowd\\trgaph108\\trleft-108\\trbrdrt\\brdrs\\brdrw10 \\trbrdrl\\brdrs\\brdrw10\\trbrdrb\\brdrs\\brdrw10\\trbrdrr\\brdrs\\brdrw10\\clbrdrt\\brdrw15\\brdrs\ \clbrdrl\\brdrw15\\brdrs\\clbrdrb\\brdrw15\\brdrs\\clbrdrr\\brdrw15\\brdrs"; fprintf(m_pRTFFile,"%s\n",pszTitle); for(m=0;m
/
本文档为【天气信息管理系统—计算机毕业设计(论文)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索