毕业设计(论文)-基于C++的小型关系型数据库的设计与实现.doc_第1页
毕业设计(论文)-基于C++的小型关系型数据库的设计与实现.doc_第2页
毕业设计(论文)-基于C++的小型关系型数据库的设计与实现.doc_第3页
毕业设计(论文)-基于C++的小型关系型数据库的设计与实现.doc_第4页
毕业设计(论文)-基于C++的小型关系型数据库的设计与实现.doc_第5页
已阅读5页,还剩39页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

太原理工大学毕业设计(论文)用纸基于C+的小型关系型数据库的设计与实现摘 要数据库是按一定结构组织的,各种应用相关的所有数据的集合。它包含了数据库管理系统处理的全部数据。其内容主要分为两个部分:一是物理数据库,记载了所有数据;二是数据字典,描述了不同数据之间的关系和数据组织的结构。数据库技术自产生以来,发展到今日已形成了坚实的理论基础和独特的数据处理技术,并获得了广泛的应用。数据库技术是信息社会的重要基础之一,是计算机科学领域中发展最为迅速的分支。关系型数据库是目前最流行的数据库系统。数据库管理系统已经成为软件产业的重要组成部分,是信息化过程中最重要的技术基础之一。我国要振兴软件产业,就必须发展自己的数据库软件产业。本系统运用计算机程序来实现关系型数据库的数据管理,建立一个模拟的关系型数据库,并能够解析SQL语句,并执行相应的数据操作。关键词: 关系型数据库;数据库技术;系统设计全套设计加扣 3012250582Based on the C + + A Small Relational Database Design and ImplementationAbstract Database is organized according to certain structure, a collection of all data related to all kinds of application.It contains a database management system to deal with all the data.The main content is divided into two parts: one is the physical database, all data recorded;Second, data dictionary, describes the relationship between the different data and data structure of the organization.Database technology since the produce, development to this day it has formed a solid theoretical foundation and the unique data processing technology, and access to a wide range of applications.Database technology is one of the important basis of information society, is the most rapid development in the area of computer science.A relational database is by far the most popular database system.Database management system has become an important part of the software industry, is one of the most important technology in the process of informatization.To the revitalization of software industry in our country, it must develop its own database software industry.This system use computer programs to implement the relational database data management, establishing a simulation of the relational database system, and be able to parse SQL statements,and perform the corresponding data operation. Keywords: a relational database;Database technology;System designii目 录摘 要iAbstractii1 绪论11.1 课题研究背景11.2 课题研究现状21.3 课题研究的意义21.4 本文主要研究工作和章节安排32 需求分析42.1 需求分析的任务42.2 需求分析的方法42.3 主要开发内容42.4 基本功能需求52.5 可行性分析52.5.1 经济可行性52.5.2 技术可行性52.5.3 操作可行性52.6 系统用例分析52.7 开发平台及核心技术简介62.7.1 开发环境62.7.3 开发语言简介102.7.4 关系数据库模型简介102.7.5 关系数据库模型的设计、实现与维护简介113 总体设计133.1 关系型数据库的设计过程133.2 总体设计原则133.2.1 实用性原则133.2.2 可扩展性与可维护性原则133.2.3 安全性原则133.2.4 用户界面设计原则133.3 总体设计方案143.3.1 系统模块关系与划分143.3.2 开发技术、开发工具和开发环境154 详细设计164.1 用户前台模块设计164.1.1 登录界面设计164.1.2 主窗口设计164.2 后台数据解析模块设计164.3 系统实现174.3.1 登录与主界面的实现174.3.2 CMyAnylise类的实现194.3.3 CDBControl类的实现205 系统调试与测试295.1 程序调试295.2 测试概要295.2.1 测试的重要性及目的305.2.2 测试的步骤305.3 系统的测试用例305.3.1 登录与注册的测试315.3.2 建表的测试325.3.3 插入数据的测试335.3.4 删除数据的测试345.3.5 更新数据的测试355.3.6 查找数据的测试355.3.7 删除表的测试36结 论38参考文献39致 谢40外文原文41中文翻译531 绪论 1.1 课题研究背景 数据库(Databases,简称DB)是指长期保存在计算机的存储设备上、并按照某种模型组织起来的、可以被各种用户或者应用共享的数据的集合。数据库管理系统(Database Management Systems,简称DBMS)是指提供各种数据管理的服务的计算机软件系统,这种服务包括数据对象定义、数据存储和备份、数据访问和更新、数据统计和分析、数据的安全保护、数据库运行管理及数据库建立与维护等。数据库是依照某种数据模型组织起来并存放二级存储器中的数据集合。这种数据集合具有如下特点:尽可能不重复,以最优方式为某个特定组织的多种应用服务,其数据结构独立于使用它的应用程序,对数据的增、删、改、查由统一软件进行管理和控制。从发展的历史看,数据库是数据管理的高级阶段,它是由文件管理系统发展起来的。数据库是数据管理的最新技术,是计算机科学的重要分支之一。今天信息资源已经成为各个部门的重要财富,建立一个能够满足各级部门信息处理要求的,行之有效的信息系统已经成为一个企业或组织生存和发展的重要条件。因此作为信息系统核心和基础的数据库技术也将得到越来越广泛的应用,从小型的单项事务处理系统到大型的信息系统,从联机的事务处理到联机的分析处理,从一般企业管理到计算机的辅助设计与制造,计算机集成制造系统,电子政务,电子商务地理信息系统等,越来越新的应用领域采用数据库技术来存储和处理信息资源。数据库系统的出现使信息系统从加工数据的程序为中心转向围绕共享的数据库为中心的新阶段。这样既便于数据的集中管理,也有利于应用程序的研制与维护,提高了数据的利用率与相容性,提高了决策的可靠性。数据库已成为现代信息系统的重要组成部分。关系型数据库是目前应用最广泛的数据库,它通过提供完善的结构化查询语言(SQL)和功能强大的数据检索功能,被广泛的应用到各个方面的项目开发中。但因其与系统的关联紧密度很大,所以数据库本身的性能也是被大家所关注的主要问题之一,如何保证项目应用中使用高效的SQL语句,是保障数据库的服务性能的主要手段。目前关系型数据库是项目中使用的最常见的一种数据库,特别是商业产品中因其业务的实现比较复杂,对关系型数据库的依赖会更加的紧密。但关系型数据库的一个比较大的缺点就是它的扩展方面比较差,实施扩展的成本也是比较高。所以为了追求高的性能,就得保证与关系数据库的交互是高效的。除了对数据库表结构上进行较优的设计外,还需要确保在SQL语句的使用上,避免那些低效的编写方案。但对于如何保障SQL语句编写是高效的,在实施上就变得非常困难,单纯的通过人为保障的可行性比较低。所以能很好的使用高效SQL语言进行系统编写实现,可以很大程度上提升系统运行性能,确保商业产品可以更好的为商业用户提供服务。由于企业信息化的目的是要以现代信息技术为手段,对伴随着企业生产与经营过程而产生的数据进行收集、加工、管理以及利用,以改善企业的生产经营的整体效率,增强企业的竞争力。所以,作为常用的数据库之一的关系型数据库已经是企业信息化不可缺少的工具,是绝大部分企业信息系统的核心。纵观整个数据库行业的发展,三大数据库巨头公司纷纷推出自己的最新产品,数据库市场竞争日益加剧。从最新的IDC报告可以看出,在关系型数据库管理系统(RDBMS)的软件市场上,Oracle继续领先对手IBM与微软,但是微软在2006年取得了更快的销售增长率1.2 课题研究现状 数据库,简单来说是本身可视为电子化的文件柜存储电子文件的处所,用户可以对文件中的数据进行新增、截取、更新、删除等操作。数据库指的是以一定方式储存在一起、能为多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。在经济管理的日常工作中,常常需要把某些相关的数据放进这样的“仓库”,并根据管理的需要进行相应的处理。数据库管理系统历经了30多年的发展演变,已经取得了相对辉煌的成就,发展成了内容丰富的学科之一,形成了总量达到数百亿美元的一个软件产业。根据Gartner Dataquest公司的调查报告显示,2000年的国际数据库市场销售总额达到88亿美元,比1999年增长了10%。根据CCID的报告显示,2000年的中国数据库管理系统市场销售总额达到24.8亿元,比1999年增长了41.7%,占软件市场总销售额的10.8%。由此可见,数据库已发展成为一个巨大规模、迅速增长的市场。目前,软件市场上具有代表性的数据库产品有Oracle公司的Oracle与IBM公司的DB2以及微软的SQL Server等。在某种意义上,这些产品的特征也反映了当前数据库产业界的最高水平与发展趋势。 目前,关系数据库技术依然是主流的数据库技术。关系数据库技术出现在20世纪70年代、经过80年代的发展,到了90年代已经相对成熟,在90年代初期曾经一度受到面向对象数据库的严峻挑战,但是软件市场最后还是选择了关系数据库。不管是Oracle公司的Oracle 9i以及IBM公司的DB2、还是微软的SQL Server等都是关系型数据库。Gartner Dataquest的报告显示了关系数据库管理系统(RDBMS)的市场份额已经最大,2000年RDBMS的市场份额占整个数据库市场的80%,这个比例比1999年增长15%。这组数据充分说明了RDBMS仍然是当今最为流行的数据库软件。1.3 课题研究的意义 关系数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。关系模型是由埃德加科德于1970年首先提出的,並配合“科德十二定律”。现如今虽然对此模型有一些批评意见,但它还是数据存储的传统标准。标准数据查询语言SQL就是一种基于关系数据库的语言,这种语言执行对关系数据库中数据的检索和操作。关系模型由关系数据结构、关系操作集合、关系完整性约束三部分组成。关系型数据库技术出现在20世纪70年代,经过80年代的发展到90年代已经比较成熟,在90年代初期曾一度受到面向对象数据库的巨大挑战,但是市场最后还是选择了关系数据库,而且关系型数据库有一个很好地安全性,一个关系数据库的访问权限,允许数据库的管理员的实施需要为基础的权限来访问数据库表中的数据。关系型数据库支持的概念,用户和用户权限,从而满足数据库的安全需求。关系相关的特权,如创建权限,授予特权,选择,插入,删除权限,授权不同的用户对数据库的相应的操作。关系型数据库的另外一个重要优势,包括其性能,功耗,并支持新的硬件技术的灵活性和能力,以满足所有类型的数据的需求。由于自身的优势和应用程序的数据存储和检索的操作中,已经彻底改变了关系型数据库的数据库管理系统。但是,许多商业数据库功能非常强大,相应的占用资源也很大,很多嵌入式设备无法移植,更重要的是嵌入式设备并不需要性能如此强大的数据库,所以设计简单而又高效的小型关系型数据库迫在眉睫,使它在嵌入式等设备上能发挥巨大的优势!1.4 本文主要研究工作和章节安排根据现有的知识水平只能做一些比较简单的关系型数据库设计与实现,本系统要实现的功能包括实现控制台命令词法分析,语法分析,语义响应;实现通过文件批处理命令。提高了输入效率;实现对表建立数据字典;为了提高数据字典的读取速度,对数据字典使用索引文件;实现记录的插入,删除,修改;实现数据字典索引文件查看以及数据字典文件查看;实现数据表文件查看。 本文通过第一章绪论对数据库研究的背景和现状以及意义进行了阐述,分析了当今研究关系型数据库的必要性,在第二章介绍了需求分析,主要包括开发内容,基本功能需求,可行性分析与系统用例分析以及开发环境和核心技术以及开发语言的介绍。在第三章介绍了总体设计,主要包括总体设计原则和总体设计方案。在第四章介绍了用户前台模块设计,后台数据解析模块设计以及系统实现。在第五章介绍了系统的调试与测试,组要包括程序调试,测试概要以及系统测试用例。2 需求分析 2.1 需求分析的任务从数据库设计的设计角度来看,需求分析的任务是对现实世界中要处理的对象进行详细的调查,明确用户的各种需要,在此基础上确定系统功能调查分析用户的活动:调查组织结构情况,调查用户业务活动的情况、收集和分析需求数据。确定系统边界:保护用户的信息需求、处理需求、安全性和完整性的需求等。信息需求:目标范围内涉及的所有实体、实体的属性以及实体间的联系等数据对象。 处理需求:用户为了得到需求的信息而对数据进行加工处理的要求。安全性和完整性需求:在定义信息需求和处理需求的同时必须给出相应完全性和完 整性约束收集各种需求数据后,对前面调查结果进行初步分析,确定哪些功能由计算机完成,哪些由人完成。由计算机完成的功能即是新系统应该实现的功能。2.2 需求分析的方法 包括自顶向下和自底向上两种方法。 自顶向下的结构和方法是最简单实用的方法,采用逐层分解的方法,用数据流图是数据字典来描述系统。数据流图表达了数据和处理过程的关系。数据字典是对系统中数据的详细描述,是各类数据结构和属性的清单。它与数据流图互为注释。 数据字典的内容:数据项、数据结构、数据流、数据存储、处理过程 1、数据项:不可再分的数据单位。对数据项的描述。数据项描述=数据项名,含义说明,别名,数据类型,长度,取值范围,取值含义,与其他数据项的逻辑关系。 2、数据结构:反映了数据之间的组合关系。一个数据结构可以由若干个数据项组成。数据结构描述=数据结构名,含义说明,组成。 3、数据流:数据结构在系统内传输的路径。数据流描述=数据流名,说明,来源,去向,组成:数据结构,平均流量,高峰期流量。 4、数据存储:数据结构停留或保存的地方。数据存储描述=名字,说明,编号,流入的数据流,流出的数据流,组成:数据结构,数据量,存取方式。 5、处理过程:处理过程的具体处理逻辑一般用判定表或判定树来描述。处理过程描述=名字,说明,输入:数据刘,输出:数据刘,处理:简要说明。 经过这个过程,需求分析人员应该已经了解了对象的组织结构,对象中的业务处理活动。明确了用户的信息要求(实体、属性、联系),处理要求(处理过程),安全性、完整性要求。然后按照自顶向下的需求分析方法,用数据流图和数据字典来描述这系统,分离用户完成功能和计算机完成功能,明晰系统功能。2.3 主要开发内容 关系数据库,是建立在关系数据库模型基础上的数据库,它借助于集合代数等概念与方法来处理数据库中的数据,同时它也是一个被组织成一组拥有正式的描述性的表格,这种形式的表格作用的实质是装载着数据项的特殊收集体,这些表格中的数据能够以许多不同的方式被存取或重新召集,而不需要重新组织数据库表格。关系数据库的定义造成原数据的一张表格或者造成表格、列、范围和约束的正式描述。每个表格(有时被称为一个关系)包含用列表示的一个或更多的数据种类。 每行包含一个唯一的数据实体,这些数据是被列定义的种类。当创造一个关系数据库的时候,用户能够定义数据列的可能值的范围与可能应用于那个数据值的进一步约束。而SQL语言是标准用户和应用程序到关系数据库的接口。它的优势是容易扩充,且在最初的数据库创造之后,一个新的数据种类能够被添加而不需要修改所有的现有的应用软件。在关系数据模型中,现实世界中的实体以及实体与实体之间的联系均可用关系来表示。从逻辑或者用户的观点来看,关系就是二维表。本系统主要是根据关系数据模型来创建数据库,实现数据库数据的增删改查。项目开发要求: (1)项目开发要规范统一,模块划分、代码编写等均按照命名规范文档;(2)程序执行速度快,数据安全。系统要具有良好的可扩展性;(3)用户界面简单明了,操作简单实用;(4)具有一定的鲁棒性,能够处理大部分异常。 2.4 基本功能需求 作为关系型数据库,最基本的功能就是存储数据。该关系型数据库系统能够解析输入的标准SQL语句命令,并执行相关操作,实行数据库数据存储,查找,修改,删除。从关系型数据库的安全性来考虑,数据库系统需要进行用户管理,并进行权限设置。2.5 可行性分析该阶段通过对系统目标的初步调研与分析,提出可行性方案并且进行论证。我们在这里主要从经济可行性、技术可行性、操作可行性等方面进行分析。2.5.1 经济可行性 开发该系统所需要的相关资料可以通过已存在的相关系统进行采集调查,所需要的其他应用软件、硬件系统也比较易于获得。因此,开发成本较低。所以,从经济的角度来看,该系统可行。2.5.2 技术可行性 技术可行性需要考虑现有的技术条件是否能够顺利的完成开发工作,软硬件配置是否满足开发的需求等。本系统用的是C+开发语言,调试相对简单,当前的计算机硬件配置也完全能满足开发的需求,因此在技术上是绝对可行的。软件方面:由于目前单机模式相对发展成熟,因此软件的开发平台成熟可行,它们速度快、容量大、可靠性能强、价格低,完全能够满足系统的需求。2.5.3 操作可行性本系统使用命名规范的文档,程序执行速度快,数据安全,具有良好的可扩展性,用户界面简单明了,操作简单实用,由于当前信息化技术已经相当普及,各类操作人员水平都有相当的高度,所以在操作运行上是可行性的。综上所述,本系统的开发从经济上、从技术上、从操作上都是完全可靠的。2.6 系统用例分析以下是小型关系型数据库的用户操作用例图。它包括了用户进行的创建表、插入数据、修改数据、查找数据、删除数据以及删除表,创建用户、规定用户身份以及用户权限。如图2-1所示:用 户图2-1用户操作用例图2.7 开发平台及核心技术简介2.7.1 开发环境本系统使用的是Microsoft的Visual C+ 6.0作为开发工具。Visual C+ 6.0,简称VC或者VC6.0,是微软推出的一款C+编译器,将“高级语言”翻译为“机器语言(低级语言)”的程序。Visual C+是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出Visual C+1.0后,随着其新版本的不断问世,Visual C+已成为专业程序员进行软件开发的首选工具。虽然微软公司推出了 Visual C+.NET(Visual C+7.0),但它的应用的很大的局限性,只适用于Windows 2000、Windows XP和Windows NT4.0。所以实际中,更多的是以Visual C+6.0为平台。Visual C+6.0不仅是一个C+ 编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrated development environment,IDE)。Visual C+6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。这些组件通过一个名为Developer Studio的组件集成为和谐的开发环境。主要部分:Developer Studio,这是一个集成开发环境, 我们日常工作的99%都是在它上面完成的,再加上它的标题赫然写着“Microsoft Visual C+”,所以很多人理所当然的认为,那就是Visual C+了。其实不然,虽然Developer Studio提供了一个很好的编辑器和很多Wizard,但实际上它没有任何编译和链接程序的功能,真正完成这些工作的幕后英雄后面会介绍。我们也知道,Developer Studio并不是专门用于VC的,它也同样用于VB,VJ,VID等Visual Studio家族的其他同胞兄弟。所以不要把Developer Studio当成Visual C+, 它充其量只是Visual C+的一个壳子而已。MFC从理论上来讲,MFC也不是专用于Visual C+,Borland C+,C+Builder和Symantec C+同样可以处理MFC。同时,用Visual C+编写代码也并不意味着一定要用MFC,只要愿意,用Visual C+来编写SDK程序,或者使用STL,ATL,一样没有限制。不过,Visual C+本来就是为MFC打造的,Visual C+中的许多特征和语言扩展也是为MFC而设计的,所以用Visual C+而不用MFC就等于抛弃了Visual C+中很大的一部分功能。但是,Visual C+也不等于MFC。Platform SDK,这才是Visual C+和整个Visual Studio的精华和灵魂,虽然我们很少能直接接触到它。大致说来,Platform SDK是以Microsoft C/C+编译器为核心(不是Visual C+,看清楚了),配合MASM,辅以其他一些工具和文档资料。上面说到Developer Studio没有编译程序的功能,那么这项工作是由谁来完成的呢?是CL,是NMAKE,和其他许许多多命令行程序,这些我们看不到的程序才是构成Visual Studio的基石。Microsoft Visual C+ 6.0使用方法:打开Microsoft Visual C+ 6.0后,选择:文件|新建,在打开的对话框中选择“工程”,在选择“Win32 Console Application”-填写“工程名称”-选择“位置”-“确定”,然后在选择:文件|新建,在打开的对话框中选择“文件”,在选择“C+Source file”-填写“文件名称”-“确定”,这样就建好了一个.cpp文件。然后你在.cpp文件中写入你的c+语言代码就可以了。代码写好以后你看一下工具里有一个图标,依次点,编译,连接,运行就可以了。换句话说VC+是Windows平台上的C+编程环境,MFC借助C+的优势为Windows开发开辟了一片新天地,同时也借助ApplicationWizzard使开发者摆脱离了那些每次都必写基本代码,借助ClassWizard和消息映射使开发者摆脱了定义消息处理时那种混乱和冗长的代码段。利用C+的封装性开发者可以更容易理解和操作各种窗口对象;利用C+的派生性开发者可以减少开发自定义窗口的时间和创造出可重用的代码;利用虚拟性可以在必要时更好的控制窗口的活动。而且C+本身所具备的超越C语言的特性都可以使开发者编写出更易用,更灵活的代码。由于C+是由C语言发展起来的,也支持C语言的编译。6.0版本是使用最多的版本,很经典。最大的缺点是对于模版的支持比较差。现在最新补丁为SP6,推荐安装,否则易出现编译时假死状态和有些功能不可用的情况。同时,6.0版本对windows7和windows8的兼容性较差。现在的最新版C+编译器集合在Microsoft Visual Studio 2013软件里面,包含C+(支持面向对象程序设计的大型语言),Visual basic(支持名面向对象程序设计的语言),Java(适用网络的语言),C#,J#,.net。其中,VC开发环境的版本已经升级至Microsoft Visual C+ 2013,对C+的支持更加全面稳定,建议电脑性能好的可以使用此版本。2.7.2 核心技术MFC(MicrosoftFoundationClasses)是微软基础类库的简称,是微软公司实现的一个c+类库,主要封装了大部分的windows API函数,vc+是微软公司开发的c/c+的集成开发环境,所谓集成开发环境,就是说利用它你可以编辑,编译,调试,而不是使用多种工具轮换操作,灵活性较大。有时人们说vc呢也指它的内部编译器,集成开发环境必须有一个编译器内核,要不有什么用,例如DevC+其中一个编译器内核就是gcc。 MFC除了是一个类库以外,还是一个框架,在vc+里新建一个MFC的工程,开发环境会自动帮助产生许多文件,同时它使用了mfcxx.dll。xx是版本,它封装了mfc内核,所以你在你的代码看不到原本的SDK编程中的消息循环等等东西,因为MFC框架帮你封装好了,这样你就可以专心的考虑你程序的逻辑,而不是这些每次编程都要重复的东西,但是由于是通用框架,没有最好的针对性,当然也就丧失了一些灵活性和效率但是MFC的封装很浅,所以效率上损失不大,灵活性还可以,虽然也有很多缺陷,但还是一个比较好的东西。MFC,微软基础类(Microsoft Foundation Classes),实际上是微软提供的,用于在C+环境下编写应用程序的一个框架和引擎,VC+是WinDOS下开发人员使用的专业C+ SDK(SDK,Standard SoftWare Develop Kit,专业软件开发平台),MFC就是挂在它之上的一个辅助软件开发包,MFC作为与VC+血肉相连的部分(注意C+和VC+的区别:C+是一种程序设计语言,是一种大家都承认的软件编制的通用规范,而VC+只是一个编译器,或者说是一种编译器+源程序编辑器的IDE,WS,PlatForm,这跟Pascal和Delphi的关系一个道理,Pascal是Delphi的语言基础,Delphi使用Pascal规范来进行Win下应用程序的开发和编译,却不同于Basic语言和VB的关系,Basic语言在VB开发出来被应用的年代已经成了Basic语言的新规范,VB新加的Basic语言要素,如面向对象程序设计的要素,是一种性质上的飞跃,使VB既是一个IDE,又成长成一个新的程序设计语言),MFC同BC+集成的VCL一样是一个非外挂式的软件包,类库,只不过MFC类是微软为VC+专配的,MFC是Win API与C+的结合,API,即微软提供的WinDOS下应用程序的编程语言接口,是一种软件编程的规范,但不是一种程序开发语言本身,可以允许用户使用各种各样的第三方(如我是一方,微软是一方,Borland就是第三方)的编程语言来进行对WinDOS下应用程序的开发,使这些被开发出来的应用程序能在WinDOS下运行,比如VB,VC+,Java,Dehpi编程语言函数本质上全部源于API,因此用它们开发出来的应用程序都能工作在WinOS的消息机制和绘图里,遵守WinDOS作为一个操作系统的内部实现,这其实也是一种必要,微软如果不提供API,这个世上对Win编程的工作就不会存在,微软的产品就会迅速从时尚变成垃圾,上面说到MFC是微软对API函数的专用C+封装,这种结合一方面让用户使用微软的专业C+ SDK来进行Win下应用程序的开发变得容易,因为MFC是对API的封装,微软做了大量的工作,隐藏了好多程序 阅读会员限时特惠 7大会员特权立即尝鲜开发人员在Win下用C+ MFC编制软件时的大量内节,如应用程序实现消息的处理,设备环境绘图,这种结合是以方便为目的的,必定要付出一定代价(这是微软的一向作风),因此就造成了MFC对类封装中的一定程度的的冗余和迂回,但这是可以接受的。最后要明白MFC不只是一个功能单纯的界面开发系统,它提供的类绝大部分用来进行界面开发,关联一个窗口的动作,但它提供的类中有好多类不与一个窗口关联,即类的作用不是一个界面类,不实现对一个窗口对象的控制(如创建,销毁),而是一些在WinDOS(用MFC编写的程序绝大部分都在WinDOS中运行)中实现内部处理的类,如数据库的管理类等,学习中最应花费时间的是消息和设备环境,对C+和MFC的学习中最难的部分是指针,C+面向对像程序设计的其它部分,如数据类型,流程控制都不难,建议学习数据结构C+版。MFC是微软封装了的API。什么意思呢?windows作为一个提供功能强大的应用程序接口编程的操作系统,的确方便了许多程序员,传统的win32开发(直接使用windows的接口函数API)对于程序员来说非常的困难,因为,API函数实在太多了,而且名称很乱,从零构架一个窗口动辄就是上百行的代码。MFC是面向对象程序设计与Application framework的完美结合,他将传统的API进行了分类封装,并且为你创建了程序的一般框架。MFC Object和Windows Object的关系MFC中最重要的封装是对Win32 API的封装,因此,理解Windows Object和MFC Object (C+对象,一个C+类的实例)之间的关系是理解MFC的关键之一。所谓Windows Object(Windows对象)是Win32下用句柄表示的Windows操作系统对象;所谓MFC Object (MFC对象)是C+对象,是一个C+类的实例,这里MFC Object是有特定含义的,指封装Windows Object的C+ Object,并非指任意的C+ Object。MFC Object 和Windows Object是不一样的,但两者紧密联系。以窗口对象为例:一个MFC窗口对象是一个C+ CWnd类(或派生类)的实例,是程序直接创建的。在程序执行中它随着窗口类构造函数的调用而生成,随着析构函数的调用而消失。而Windows窗口则是Windows系统的一个内部数据结构的实例,由一个“窗口句柄”标识,Windows系统创建它并给它分配系统资源。Windows窗口在MFC窗口对象创建之后,由CWnd类的Create成员函数创建,“窗口句柄”保存在窗口对象的m_hWnd成员变量中。Windows窗口可以被一个程序销毁,也可以被用户的动作销毁。MFC窗口对象和Windows窗口对象的关系如图2-1所示。其他的Windows Object和对应的MFC Object也有类似的关系。下面对MFC Object和Windows Object作一个比较。有些论断对设备描述表(MFC类是CDC,句柄是HDC)可能不适用,但具体涉及到时会指出。从数据结构上比较:MFC Object是相应C+类的实例,这些类是MFC或者程序员定义的;Windows Object是Windows系统的内部结构,通过一个句柄来引用;MFC给这些类定义了一个成员变量来保存MFC Object对应的Windows Object的句柄。对于设备描述表CDC类,将保存两个HDC句柄。从层次上讲比较:MFC Object是高层的,Windows Object是低层的;MFC Object封装了Windows Object的大部分或全部功能,MFC Object的使用者不需要直接应用Windows Object的HANDLE(句柄)使用Win32 API,代替它的是引用相应的MFC Object的成员函数。从创建上比较:MFC Object通过构造函数由程序直接创建;Windows Object由相应的SDK函数创建。MFC中,使用这些MFC Object,一般分两步:首先,创建一个MFC Object,或者在STACK中创建,或者在HEAP中创建,这时,MFC Object的句柄实例变量为空,或者说不是一个有效的句柄。然后,调用MFC Object的成员函数创建相应的Windows Object,MFC的句柄变量存储一个有效句柄。当然,可以在MFC Object的构造函数中创建相应的Windows对象,MFC的GDI类就是如此实现的,但从实质上讲,MFC Object的创建和Windows Object的创建是两回事。从转换上比较:可以从一个MFC Object得到对应的Windows Object的句柄;一般使用MFC Object的成员函数GetSafeHandle得到对应的句柄。可以从一个已存在的Windows Object创建一个对应的MFC Object; 一般使用MFC Object的成员函数Attach或者FromHandle来创建,前者得到一个永久性对象,后者得到的可能是一个临时对象。从使用范围上比较:MFC Object对系统的其他进程来说是不可见、不可用的;而Windows Object一旦创建,其句柄是整个Windows系统全局的。一些句柄可以被其他进程使用。典型地,一个进程可以获得另一进程的窗口句柄,并给该窗口发送消息。对同一个进程的线程来说,只可以使用本线程创建的MFC Object,不能使用其他线程的MFC Object。从销毁上比较:MFC Object随着析构函数的调用而消失;但Windows Object必须由相应的Windows系统函数销毁。设备描述表CDC类的对象有所不同,它对应的HDC句柄对象可能不是被销毁,而是被释放。当然,可以在MFC Object的析构函数中完成Windows Object的销毁,MFC Object的GDI类等就是如此实现的,但是,应该看到两者的销毁是不同的。2.7.3 开发语言简介C+是在C语言的基础上开发的一种集面向对象编程、泛型编程和过程化编程于一体的编程语言。应用较为广泛,是一种静态数据类型检查的,支持多重编程的通用程序设计语言。它支持过程化程序设计,数据抽象,面向对象设计,制作图标等多种程序设计风格。最新正式标准C+11于2011年8月12日公布。C+设计成静态类型、和C同样高效且可移植的多用途程序设计语言。C+的优点:C+设计成静态类型、和C同样高效且可移植的多用途程序设计语言。C+设计直接的和广泛的支持多种程序设计风格(程序化程序设计、资料抽象化、面向对象程序设计、泛型程序设计)。C+设计无需复杂的程序设计环境。C+语言简洁灵活,运算符的数据结构丰富、具有结构化控制语句、程序执行效率高,而且同时具有高级语言与汇编语言的优点,与其它语言相比 ,C语言具有可以直接访问物理地址的优点,与汇编语言相比又具有良好的可读性的可移植性。总得来说,C+语言的主要特点表现在两个方面,一是尽量兼容C,二是支持面向对象的方法。它操持了C的简洁、高效的接近汇编语言等特点,对C的类型系统进行了改革的扩充,因此C+比C更安全,C+的编译系统能检查出更多的类型错误。另外,由于C语言的广泛使用,因而极大的促进了C+的普及和推广。C+语言最有意义的方面是支持面向对象的特征。虽然与C的兼容使得C+具有双重特点,但他在概念上完全与C不同,更具面向对象的特征。出于保证语言的简洁和运行高效等方面的考虑,C+的很多特性都是以库(如STL)或其他的形式提供的,而没有直接添加到语言本身里。C+引入了面向对象的概念,使得开发人机交互类型的应用程序更为简单、快捷。很多优秀的程序框架包括Boost、Qt、MFC、OWL、wxWidgets、WTL就是使用的C+。C+语言支持面向对象的程序设计,支持函数重载、运算符重载、以及动态联编;C+语言 支持抽象数据类型,与C相比提供了更好的类型检查机制,提供了更好的结构化程序设计技术;C+语言与其他面向对象的程序设计语言相比,最重要的优点是程序的执行效率高;C+保持与C的完全兼容,现有的C源代码不经修改就可以为C+所用,C程序员仅需要学习其新特性即可。C+的缺点:C+由于语言本身过度复杂,甚至使人们难于理解其语义。C+的编译系统受到C+的复杂性的影响,非常难于编写,即使能够使用的编译器也存在了大量的问题,这些问题大多难于被发现。由于本身的复杂性,复杂的C+程序的正确性相当难于保证。2.7.4 关系数据库模型简介关系数据库采用关系数据库模型,关系模型的数据结构是一种二维表格结构,二维表有行和列构成,称为关系数据表,表中每一列描述对像的一个属性,而表中每一行则是则是对一个对象的具体描述,表中的一行称作记录或行每一列称作字段或列。关系数据表中能够唯一标识一个对象的字段称为关键字,如果表中存在多个字段都能用来唯一标识表中的对象,可指定一个字段为表中的关键字,称为主关键字。关系模型的数据库支持的关系数据库的关系操作,最好用规范化的表。一个关系型数据库支持关系代数,从而支持集理论的相关操作。除了业务,即从数学组,并交差和笛卡尔积,关系数据库也支持选择,项目,关系连接和除法运算。这些操作是独一无二的。关系型数据库到关系型数据库支持的动态视图中的一个重要概念。在关系数据库中,视图是没有的物理架构的一部分,它是动态的。因此,改变表中的数据改变由视图所示的数据。视图可以子集数据,加入和简化的多重关系,动态地隐藏复杂的数据,减少数据的存储需求。关系型数据库使用SQL,这是一个很容易和人类可读的语言。SQL指令是在纯的指令,它可以付诸实施的数据库的形式。再设计关系数据库的表结构时,如果不存在可作为关键字的字段,可增加一个字段作为关键字的字段,用于唯一标识该行,大部分数据库管理系统允许在建立表时生成一个自动增加的类型的字段,每当表增加一行时,有数据库管理系统自动生成该字段的内容,保证其唯一性。数据库的完整性,是指数据库中数据的正确性和一致性。数据完整性由数据完整性规则来维护。为了维护数据库数据的正确性和一致性,在对关系数据库进行插入,修改和删除操作时必须遵循三类完整性规则。(1)实体完整性规则:要求主关键字不能为空值,否则主关键字起不到唯一标识表中对象的作用。(2)引用完整性规则:不允许引用不存在的对象。(3)用户定义的完整性规则:这是针对某一具体数据的约束条件,有应用环境决定。2.7.5 关系数据库模型的设计、实现与维护简介(1)逻辑数据库设计逻辑数据库设计从两个角度进行数据库开发。首先,将概念数据模型变换成基于关系数据库理论的标准表示方法关系。然后像设计信息系统的每个计算机程序(包括程序的输入和输出格式)那样,对数据库支持的事务、报表、显示和查询进行详细的检查。在这个所谓的自底向上的分析中,精确地验证数据库中需要维护的数据和在每个事务、报表等等中需要的那些数据的性质。对于每个单独的报表、事务等等的分析都要考虑一个特定的、有限制的但是完全的数据库视图。当报表、事务等被分析时有可能根据需要而改变概念数据模型。尤其在大型的项目中,不同的分析人员和系统开发者的团队可以独立地工作在不同的程序或程序集中,他们所有工作的细节直到逻辑设计阶段才可能会显示出来。在这种情况下,逻辑数据库设计阶段必须将原始的概念数据模型和这些独立的用户视图合并或集成到一个全面的设计中。在进行逻辑信息系统设计时也可以确定额外的信息处理需求,此时这些新的需求必须集成到前面确定的逻辑数据库设计中。逻辑数据库设计的最后一步是根据为生成结构良好的数据规格说明而确定的规则,将组合的、协商后的数据规格说明转换成基本的或原子的元素。对当今的大部分数据库而言,这些规则来自关系数据库理论和称作规范化的过程。这一步的结果是产生管理这些数据的、不引用任何数据库管理系统的完整的数据库描述图。在完成逻辑数据库设计后,开始确定详细的计算机程序的逻辑和维护、报告数据库内容所需的查询。(2)物理数据库设计和定义物理数据库设计和定义阶段决定计算机存储器(通常是磁盘)中数据库的组织,定义数据库管理系统的物理结构,概述处理事务的程序,产生期望的管理信息和决策支持的报表。本阶段的目标是设计能够有效、安全地管理所有数据处理的数据库,因此物理数据库设计需紧密结合物理信息系统其他方面的设计,包括程序、计算机硬件、操作系统和数据通信网络。(3)数据库实现数据库实现阶段编写、测试和安装处理数据库的程序。设计人员可以使用标准的编程语言(如COBOL、C或Visual Basic)、专用的数据库处理语言(如SQL),或专用的非过程化语言来编程,以产生固定格式的报表、显示结果,可能还包括图表。在实现阶段,还要完成所有的数据库文档,培训用户,为信息系统(和数据库)的用户安装程序。最后一步是利用现存的信息源(遗留应用中的文件和数据库以及现在需要的新数据)加载数据。加载数据的第一步经常是将数据从现存的文件和数据库中转到一种中间的格式(如二进

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论