基于C++的小型关系型数据库的设计与实现(程序代码+任务书+说明书+外文翻译+演示文稿)_第1页
基于C++的小型关系型数据库的设计与实现(程序代码+任务书+说明书+外文翻译+演示文稿)_第2页
基于C++的小型关系型数据库的设计与实现(程序代码+任务书+说明书+外文翻译+演示文稿)_第3页
基于C++的小型关系型数据库的设计与实现(程序代码+任务书+说明书+外文翻译+演示文稿)_第4页
基于C++的小型关系型数据库的设计与实现(程序代码+任务书+说明书+外文翻译+演示文稿)_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

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

文档简介

基于C+的小型关系型数据库的设计与实现摘要数据库是按一定结构组织的,各种应用相关的所有数据的集合。它包含了数据库管理系统处理的全部数据。其内容主要分为两个部分:一是物理数据库,记载了所有数据;二是数据字典,描述了不同数据之间的关系和数据组织的结构。数据库技术自产生以来,发展到今日已形成了坚实的理论基础和独特的数据处理技术,并获得了广泛的应用。数据库技术是信息社会的重要基础之一,是计算机科学领域中发展最为迅速的分支。关系型数据库是目前最流行的数据库系统。数据库管理系统已经成为软件产业的重要组成部分,是信息化过程中最重要的技术基础之一。我国要振兴软件产业,就必须发展自己的数据库软件产业。本系统运用计算机程序来实现关系型数据库的数据管理,建立一个模拟的关系型数据库,并能够解析SQL语句,并执行相应的数据操作。关键词:关系型数据库;数据库技术;系统设计iBasedontheC+ASmallRelationalDatabaseDesignandImplementationAbstractDatabaseisorganizedaccordingtocertainstructure,acollectionofalldatarelatedtoallkindsofapplication.Itcontainsadatabasemanagementsystemtodealwithallthedata.Themaincontentisdividedintotwoparts:oneisthephysicaldatabase,alldatarecorded;Second,datadictionary,describestherelationshipbetweenthedifferentdataanddatastructureoftheorganization.Databasetechnologysincetheproduce,developmenttothisdayithasformedasolidtheoreticalfoundationandtheuniquedataprocessingtechnology,andaccesstoawiderangeofapplications.Databasetechnologyisoneoftheimportantbasisofinformationsociety,isthemostrapiddevelopmentintheareaofcomputerscience.Arelationaldatabaseisbyfarthemostpopulardatabasesystem.Databasemanagementsystemhasbecomeanimportantpartofthesoftwareindustry,isoneofthemostimportanttechnologyintheprocessofinformatization.Totherevitalizationofsoftwareindustryinourcountry,itmustdevelopitsowndatabasesoftwareindustry.Thissystemusecomputerprogramstoimplementtherelationaldatabasedatamanagement,establishingasimulationoftherelationaldatabasesystem,andbeabletoparseSQLstatements,andperformthecorrespondingdataoperation.Keywords:arelationaldatabase;Databasetechnology;Systemdesign目录摘要.iAbstract.ii1绪论.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.2CMyAnylise类的实现.194.3.3CDBControl类的实现.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中文翻译.5301绪论1.1课题研究背景数据库(Databases,简称DB)是指长期保存在计算机的存储设备上、并按照某种模型组织起来的、可以被各种用户或者应用共享的数据的集合。数据库管理系统(DatabaseManagementSystems,简称DBMS)是指提供各种数据管理的服务的计算机软件系统,这种服务包括数据对象定义、数据存储和备份、数据访问和更新、数据统计和分析、数据的安全保护、数据库运行管理及数据库建立与维护等。数据库是依照某种数据模型组织起来并存放二级存储器中的数据集合。这种数据集合具有如下特点:尽可能不重复,以最优方式为某个特定组织的多种应用服务,其数据结构独立于使用它的应用程序,对数据的增、删、改、查由统一软件进行管理和控制。从发展的历史看,数据库是数据管理的高级阶段,它是由文件管理系统发展起来的。数据库是数据管理的最新技术,是计算机科学的重要分支之一。今天信息资源已经成为各个部门的重要财富,建立一个能够满足各级部门信息处理要求的,行之有效的信息系统已经成为一个企业或组织生存和发展的重要条件。因此作为信息系统核心和基础的数据库技术也将得到越来越广泛的应用,从小型的单项事务处理系统到大型的信息系统,从联机的事务处理到联机的分析处理,从一般企业管理到计算机的辅助设计与制造,计算机集成制造系统,电子政务,电子商务地理信息系统等,越来越新的应用领域采用数据库技术来存储和处理信息资源。数据库系统的出现使信息系统从加工数据的程序为中心转向围绕共享的数据库为中心的新阶段。这样既便于数据的集中管理,也有利于应用程序的研制与维护,提高了数据的利用率与相容性,提高了决策的可靠性。数据库已成为现代信息系统的重要组成部分。关系型数据库是目前应用最广泛的数据库,它通过提供完善的结构化查询语言(SQL)和功能强大的数据检索功能,被广泛的应用到各个方面的项目开发中。但因其与系统的关联紧密度很大,所以数据库本身的性能也是被大家所关注的主要问题之一,如何保证项目应用中使用高效的SQL语句,是保障数据库的服务性能的主要手段。目前关系型数据库是项目中使用的最常见的一种数据库,特别是商业产品中因其业务的实现比较复杂,对关系型数据库的依赖会更加的紧密。但关系型数据库的一个比较大的缺点就是它的扩展方面比较差,实施扩展的成本也是比较高。所以为了追求高的性能,就得保证与关系数据库的交互是高效的。除了对数据库表结构上进行较优的设计外,还需要确保在SQL语句的使用上,避免那些低效的编写方案。但对于如何保障SQL语句编写是高效的,在实施上就变得非常困难,单纯的通过人为保障的可行性比较低。所以能很好的使用高效SQL语言进行系统编写实现,可以很大程度上提升系统运行性能,确保商业产品可以更好的为商业用户提供服务。由于企业信息化的目的是要以现代信息技术为手段,对伴随着企业生产与经营过程而产生的数据进行收集、加工、管理以及利用,以改善企业的生产经营的整体效率,增强企业的竞争力。所以,作为常用的数据库之一的关系型数据库已经是企业信息化不可缺少的工具,是绝大部分企业信息系统的核心。纵观整个数据库行业的发展,三大数据库巨头公司纷纷推出自己的最新产品,数据库市场竞争日益加剧。从最新的IDC报告可以看出,在关系型数据库管理系统(RDBMS)的软件市场上,Oracle继续领先对手IBM与微软,但是微软在2006年取得1了更快的销售增长率1.2课题研究现状数据库,简单来说是本身可视为电子化的文件柜存储电子文件的处所,用户可以对文件中的数据进行新增、截取、更新、删除等操作。数据库指的是以一定方式储存在一起、能为多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。在经济管理的日常工作中,常常需要把某些相关的数据放进这样的“仓库”,并根据管理的需要进行相应的处理。数据库管理系统历经了30多年的发展演变,已经取得了相对辉煌的成就,发展成了内容丰富的学科之一,形成了总量达到数百亿美元的一个软件产业。根据GartnerDataquest公司的调查报告显示,2000年的国际数据库市场销售总额达到88亿美元,比1999年增长了10%。根据CCID的报告显示,2000年的中国数据库管理系统市场销售总额达到24.8亿元,比1999年增长了41.7%,占软件市场总销售额的10.8%。由此可见,数据库已发展成为一个巨大规模、迅速增长的市场。目前,软件市场上具有代表性的数据库产品有Oracle公司的Oracle与IBM公司的DB2以及微软的SQLServer等。在某种意义上,这些产品的特征也反映了当前数据库产业界的最高水平与发展趋势。目前,关系数据库技术依然是主流的数据库技术。关系数据库技术出现在20世纪70年代、经过80年代的发展,到了90年代已经相对成熟,在90年代初期曾经一度受到面向对象数据库的严峻挑战,但是软件市场最后还是选择了关系数据库。不管是Oracle公司的Oracle9i以及IBM公司的DB2、还是微软的SQLServer等都是关系型数据库。GartnerDataquest的报告显示了关系数据库管理系统(RDBMS)的市场份额已经最大,2000年RDBMS的市场份额占整个数据库市场的80%,这个比例比1999年增长15%。这组数据充分说明了RDBMS仍然是当今最为流行的数据库软件。1.3课题研究的意义关系数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。关系模型是由埃德加科德于1970年首先提出的,並配合“科德十二定律”。现如今虽然对此模型有一些批评意见,但它还是数据存储的传统标准。标准数据查询语言SQL就是一种基于关系数据库的语言,这种语言执行对关系数据库中数据的检索和操作。关系模型由关系数据结构、关系操作集合、关系完整性约束三部分组成。关系型数据库技术出现在20世纪70年代,经过80年代的发展到90年代已经比较成熟,在90年代初期曾一度受到面向对象数据库的巨大挑战,但是市场最后还是选择了关系数据库,而且关系型数据库有一个很好地安全性,一个关系数据库的访问权限,允许数据库的管理员的实施需要为基础的权限来访问数据库表中的数据。关系型数据库支持的概念,用户和用户权限,从而满足数据库的安全需求。关系相关的特权,如创建权限,授予特权,选择,插入,删除权限,授权不同的用户对数据库的相应的操作。关系型数据库的另外一个重要优势,包括其性能,功耗,并支持新的硬件技术的灵活性和能力,以满足所有类型的数据的需求。由于自身的优势和应用程序的数据存储和检索的操作中,已经彻底改变了关系型数据库的数据库管理系统。但是,许多商业数据库功能非常强大,相应的占用资源也很大,很多嵌入式设备无法移植,更重要的是嵌入式设备并不需要性能如此强大的数据库,所以设计简单而又高效的小型关系2型数据库迫在眉睫,使它在嵌入式等设备上能发挥巨大的优势!1.4本文主要研究工作和章节安排根据现有的知识水平只能做一些比较简单的关系型数据库设计与实现,本系统要实现的功能包括实现控制台命令词法分析,语法分析,语义响应;实现通过文件批处理命令。提高了输入效率;实现对表建立数据字典;为了提高数据字典的读取速度,对数据字典使用索引文件;实现记录的插入,删除,修改;实现数据字典索引文件查看以及数据字典文件查看;实现数据表文件查看。本文通过第一章绪论对数据库研究的背景和现状以及意义进行了阐述,分析了当今研究关系型数据库的必要性,在第二章介绍了需求分析,主要包括开发内容,基本功能需求,可行性分析与系统用例分析以及开发环境和核心技术以及开发语言的介绍。在第三章介绍了总体设计,主要包括总体设计原则和总体设计方案。在第四章介绍了用户前台模块设计,后台数据解析模块设计以及系统实现。在第五章介绍了系统的调试与测试,组要包括程序调试,测试概要以及系统测试用例。32需求分析2.1需求分析的任务从数据库设计的设计角度来看,需求分析的任务是对现实世界中要处理的对象进行详细的调查,明确用户的各种需要,在此基础上确定系统功能调查分析用户的活动:调查组织结构情况,调查用户业务活动的情况、收集和分析需求数据。确定系统边界:保护用户的信息需求、处理需求、安全性和完整性的需求等。信息需求:目标范围内涉及的所有实体、实体的属性以及实体间的联系等数据对象。处理需求:用户为了得到需求的信息而对数据进行加工处理的要求。安全性和完整性需求:在定义信息需求和处理需求的同时必须给出相应完全性和完整性约束收集各种需求数据后,对前面调查结果进行初步分析,确定哪些功能由计算机完成,哪些由人完成。由计算机完成的功能即是新系统应该实现的功能。2.2需求分析的方法包括自顶向下和自底向上两种方法。自顶向下的结构和方法是最简单实用的方法,采用逐层分解的方法,用数据流图是数据字典来描述系统。数据流图表达了数据和处理过程的关系。数据字典是对系统中数据的详细描述,是各类数据结构和属性的清单。它与数据流图互为注释。数据字典的内容:数据项、数据结构、数据流、数据存储、处理过程1、数据项:不可再分的数据单位。对数据项的描述。数据项描述=数据项名,含义说明,别名,数据类型,长度,取值范围,取值含义,与其他数据项的逻辑关系。2、数据结构:反映了数据之间的组合关系。一个数据结构可以由若干个数据项组成。数据结构描述=数据结构名,含义说明,组成。3、数据流:数据结构在系统内传输的路径。数据流描述=数据流名,说明,来源,去向,组成:数据结构,平均流量,高峰期流量。4、数据存储:数据结构停留或保存的地方。数据存储描述=名字,说明,编号,流入的数据流,流出的数据流,组成:数据结构,数据量,存取方式。5、处理过程:处理过程的具体处理逻辑一般用判定表或判定树来描述。处理过程描述=名字,说明,输入:数据刘,输出:数据刘,处理:简要说明。经过这个过程,需求分析人员应该已经了解了对象的组织结构,对象中的业务处理活动。明确了用户的信息要求(实体、属性、联系),处理要求(处理过程),安全性、完整性要求。然后按照自顶向下的需求分析方法,用数据流图和数据字典来描述这系统,分离用户完成功能和计算机完成功能,明晰系统功能。2.3主要开发内容关系数据库,是建立在关系数据库模型基础上的数据库,它借助于集合代数等概念与方法来处理数据库中的数据,同时它也是一个被组织成一组拥有正式的描述性的表格,这种形式的表格作用的实质是装载着数据项的特殊收集体,这些表格中的数据能够以许多不同的方式被存取或重新召集,而不需要重新组织数据库表格。关系数据库的定义造成原数据的一张表格或者造成表格、列、范围和约束的正式描述。每个表格(有时被称为一个关系)包含用列表示的一个或更多的数据种类。每行包含一个唯4一的数据实体,这些数据是被列定义的种类。当创造一个关系数据库的时候,用户能够定义数据列的可能值的范围与可能应用于那个数据值的进一步约束。而SQL语言是标准用户和应用程序到关系数据库的接口。它的优势是容易扩充,且在最初的数据库创造之后,一个新的数据种类能够被添加而不需要修改所有的现有的应用软件。在关系数据模型中,现实世界中的实体以及实体与实体之间的联系均可用关系来表示。从逻辑或者用户的观点来看,关系就是二维表。本系统主要是根据关系数据模型来创建数据库,实现数据库数据的增删改查。项目开发要求:(1)项目开发要规范统一,模块划分、代码编写等均按照命名规范文档;(2)程序执行速度快,数据安全。系统要具有良好的可扩展性;(3)用户界面简单明了,操作简单实用;(4)具有一定的鲁棒性,能够处理大部分异常。2.4基本功能需求作为关系型数据库,最基本的功能就是存储数据。该关系型数据库系统能够解析输入的标准SQL语句命令,并执行相关操作,实行数据库数据存储,查找,修改,删除。从关系型数据库的安全性来考虑,数据库系统需要进行用户管理,并进行权限设置。2.5可行性分析该阶段通过对系统目标的初步调研与分析,提出可行性方案并且进行论证。我们在这里主要从经济可行性、技术可行性、操作可行性等方面进行分析。2.5.1经济可行性开发该系统所需要的相关资料可以通过已存在的相关系统进行采集调查,所需要的其他应用软件、硬件系统也比较易于获得。因此,开发成本较低。所以,从经济的角度来看,该系统可行。2.5.2技术可行性技术可行性需要考虑现有的技术条件是否能够顺利的完成开发工作,软硬件配置是否满足开发的需求等。本系统用的是C+开发语言,调试相对简单,当前的计算机硬件配置也完全能满足开发的需求,因此在技术上是绝对可行的。软件方面:由于目前单机模式相对发展成熟,因此软件的开发平台成熟可行,它们速度快、容量大、可靠性能强、价格低,完全能够满足系统的需求。2.5.3操作可行性本系统使用命名规范的文档,程序执行速度快,数据安全,具有良好的可扩展性,用户界面简单明了,操作简单实用,由于当前信息化技术已经相当普及,各类操作人员水平都有相当的高度,所以在操作运行上是可行性的。综上所述,本系统的开发从经济上、从技术上、从操作上都是完全可靠的。2.6系统用例分析以下是小型关系型数据库的用户操作用例图。它包括了用户进行的创建表、插入数据、修改数据、查找数据、删除数据以及删除表,创建用户、规定用户身份以及用户权限。如图2-1所示:5图2-1用户操作用例图2.7开发平台及核心技术简介2.7.1开发环境本系统使用的是Microsoft的VisualC+6.0作为开发工具。VisualC+6.0,简称VC或者VC6.0,是微软推出的一款C+编译器,将“高级语言”翻译为“机器语言(低级语言)”的程序。VisualC+是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出VisualC+1.0后,随着其新版本的不断问世,VisualC+已成为专业程序员进行软件开发的首选工具。虽然微软公司推出了VisualC+.NET(VisualC+7.0),但它的应用的很大的局限性,只适用于Windows2000、WindowsXP和WindowsNT4.0。所以实际中,更多的是以VisualC+6.0为平台。VisualC+6.0不仅是一个C+编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrateddevelopmentenvironment,IDE)。VisualC+6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导ClassWizard等开发工具。这些组件通过一个名为DeveloperStudio的组件集成为和谐的开发环境。主要部分:DeveloperStudio,这是一个集成开发环境,我们日常工作的99%都是在它上面完成的,再加上它的标题赫然写着“MicrosoftVisualC+”,所以很多人理所当然的认为,那就是VisualC+了。其实不然,虽然DeveloperStudio提供了一个很好的编辑器和很多Wizard,但实际上它没有任何编译和链接程序的功能,真正完成这些工作的幕后英雄后面会介绍。我们也知道,DeveloperStudio并不是专门用于VC的,它也同样用于VB,VJ,VID等VisualStudio家族的其他同胞兄弟。所以不要把DeveloperStudio当成VisualC+,它充其量只是VisualC+的一个壳子而已。用户6MFC从理论上来讲,MFC也不是专用于VisualC+,BorlandC+,C+Builder和SymantecC+同样可以处理MFC。同时,用VisualC+编写代码也并不意味着一定要用MFC,只要愿意,用VisualC+来编写SDK程序,或者使用STL,ATL,一样没有限制。不过,VisualC+本来就是为MFC打造的,VisualC+中的许多特征和语言扩展也是为MFC而设计的,所以用VisualC+而不用MFC就等于抛弃了VisualC+中很大的一部分功能。但是,VisualC+也不等于MFC。PlatformSDK,这才是VisualC+和整个VisualStudio的精华和灵魂,虽然我们很少能直接接触到它。大致说来,PlatformSDK是以MicrosoftC/C+编译器为核心(不是VisualC+,看清楚了),配合MASM,辅以其他一些工具和文档资料。上面说到DeveloperStudio没有编译程序的功能,那么这项工作是由谁来完成的呢?是CL,是NMAKE,和其他许许多多命令行程序,这些我们看不到的程序才是构成VisualStudio的基石。MicrosoftVisualC+6.0使用方法:打开MicrosoftVisualC+6.0后,选择:文件|新建,在打开的对话框中选择“工程”,在选择“Win32ConsoleApplication”-填写“工程名称”-选择“位置”-“确定”,然后在选择:文件|新建,在打开的对话框中选择“文件”,在选择“C+Sourcefile”-填写“文件名称”-“确定”,这样就建好了一个.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+编译器集合在MicrosoftVisualStudio2013软件里面,包含C+(支持面向对象程序设计的大型语言),Visualbasic(支持名面向对象程序设计的语言),Java(适用网络的语言),C#,J#,.net。其中,VC开发环境的版本已经升级至MicrosoftVisualC+2013,对C+的支持更加全面稳定,建议电脑性能好的可以使用此版本。2.7.2核心技术MFC(MicrosoftFoundationClasses)是微软基础类库的简称,是微软公司实现的一个c+类库,主要封装了大部分的windowsAPI函数,vc+是微软公司开发的c/c+的集成开发环境,所谓集成开发环境,就是说利用它你可以编辑,编译,调试,而不是使用多种工具轮换操作,灵活性较大。有时人们说vc呢也指它的内部编译器,集成开发环境必须有一个编译器内核,要不有什么用,例如DevC+其中一个编译器内核就是gcc。MFC除了是一个类库以外,还是一个框架,在vc+里新建一个MFC的工程,开发环境会自动帮助产生许多文件,同时它使用了mfcxx.dll。xx是版本,它封装了7mfc内核,所以你在你的代码看不到原本的SDK编程中的消息循环等等东西,因为MFC框架帮你封装好了,这样你就可以专心的考虑你程序的逻辑,而不是这些每次编程都要重复的东西,但是由于是通用框架,没有最好的针对性,当然也就丧失了一些灵活性和效率但是MFC的封装很浅,所以效率上损失不大,灵活性还可以,虽然也有很多缺陷,但还是一个比较好的东西。MFC,微软基础类(MicrosoftFoundationClasses),实际上是微软提供的,用于在C+环境下编写应用程序的一个框架和引擎,VC+是WinDOS下开发人员使用的专业C+SDK(SDK,StandardSoftWareDevelopKit,专业软件开发平台),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是WinAPI与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是面向对象程序设计与Applicationframework的完美结合,他将传统的API进行了分类封装,并且为你创建了程序的一般框架。MFCObject和WindowsObject的关系8MFC中最重要的封装是对Win32API的封装,因此,理解WindowsObject和MFCObject(C+对象,一个C+类的实例)之间的关系是理解MFC的关键之一。所谓WindowsObject(Windows对象)是Win32下用句柄表示的Windows操作系统对象;所谓MFCObject(MFC对象)是C+对象,是一个C+类的实例,这里MFCObject是有特定含义的,指封装WindowsObject的C+Object,并非指任意的C+Object。MFCObject和WindowsObject是不一样的,但两者紧密联系。以窗口对象为例:一个MFC窗口对象是一个C+CWnd类(或派生类)的实例,是程序直接创建的。在程序执行中它随着窗口类构造函数的调用而生成,随着析构函数的调用而消失。而Windows窗口则是Windows系统的一个内部数据结构的实例,由一个“窗口句柄”标识,Windows系统创建它并给它分配系统资源。Windows窗口在MFC窗口对象创建之后,由CWnd类的Create成员函数创建,“窗口句柄”保存在窗口对象的m_hWnd成员变量中。Windows窗口可以被一个程序销毁,也可以被用户的动作销毁。MFC窗口对象和Windows窗口对象的关系如图2-1所示。其他的WindowsObject和对应的MFCObject也有类似的关系。下面对MFCObject和WindowsObject作一个比较。有些论断对设备描述表(MFC类是CDC,句柄是HDC)可能不适用,但具体涉及到时会指出。从数据结构上比较:MFCObject是相应C+类的实例,这些类是MFC或者程序员定义的;WindowsObject是Windows系统的内部结构,通过一个句柄来引用;MFC给这些类定义了一个成员变量来保存MFCObject对应的WindowsObject的句柄。对于设备描述表CDC类,将保存两个HDC句柄。从层次上讲比较:MFCObject是高层的,WindowsObject是低层的;MFCObject封装了WindowsObject的大部分或全部功能,MFCObject的使用者不需要直接应用WindowsObject的HANDLE(句柄)使用Win32API,代替它的是引用相应的MFCObject的成员函数。从创建上比较:MFCObject通过构造函数由程序直接创建;WindowsObject由相应的SDK函数创建。MFC中,使用这些MFCObject,一般分两步:首先,创建一个MFCObject,或者在STACK中创建,或者在HEAP中创建,这时,MFCObject的句柄实例变量为空,或者说不是一个有效的句柄。然后,调用MFCObject的成员函数创建相应的WindowsObject,MFC的句柄变量存储一个有效句柄。当然,可以在MFCObject的构造函数中创建相应的Windows对象,MFC的GDI类就是如此实现的,但从实质上讲,MFCObject的创建和WindowsObject的创建是两回事。从转换上比较:可以从一个MFCObject得到对应的WindowsObject的句柄;一般使用MFCObject的成员函数GetSafeHandle得到对应的句柄。可以从一个已存在的WindowsObject创建一个对应的MFCObject;一般使用MFCObject的成员函数Attach或者FromHandle来创建,前者得到一个永久性对象,后者得到的可能是一个临时对象。从使用范围上比较:MFCObject对系统的其他进程来说是不可见、不可用的;而WindowsObject一旦9创建,其句柄是整个Windows系统全局的。一些句柄可以被其他进程使用。典型地,一个进程可以获得另一进程的窗口句柄,并给该窗口发送消息。对同一个进程的线程来说,只可以使用本线程创建的MFCObject,不能使用其他线程的MFCObject。从销毁上比较:MFCObject随着析构函数的调用而消失;但WindowsObject必须由相应的Windows系统函数销毁。设备描述表CDC类的对象有所不同,它对应的HDC句柄对象可能不是被销毁,而是被释放。当然,可以在MFCObject的析构函数中完成WindowsObject的销毁,MFCObject的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+的复杂性的影响,非常难于编写,即使能够使用的编译器也存在了大量的问题,10这些问题大多难于被发现。由于本身的复杂性,复杂的C+程序的正确性相当难于保证。2.7.4关系数据库模型简介关系数据库采用关系数据库模型,关系模型的数据结构是一种二维表格结构,二维表有行和列构成,称为关系数据表,表中每一列描述对像的一个属性,而表中每一行则是则是对一个对象的具体描述,表中的一行称作记录或行每一列称作字段或列。关系数据表中能够唯一标识一个对象的字段称为关键字,如果表中存在多个字段都能用来唯一标识表中的对象,可指定一个字段为表中的关键字,称为主关键字。关系模型的数据库支持的关系数据库的关系操作,最好用规范化的表。一个关系型数据库支持关系代数,从而支持集理论的相关操作。除了业务,即从数学组,并

温馨提示

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

评论

0/150

提交评论