版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2011年5月11日星期三1第11章 目 录 11.1 系统设计的要求系统设计的要求 11.2 文件的包含处理文件的包含处理 11.3 数据结构课程实训任务书数据结构课程实训任务书 本章的主要目的是指导学生以本书精选的、难度适当的本章的主要目的是指导学生以本书精选的、难度适当的60个左右的典型个左右的典型算法为基础,组装一个数据结构实验系统。在此基础上,指导学生扩充自主算法为基础,组装一个数据结构实验系统。在此基础上,指导学生扩充自主设计的其它算法,完成一个数据结构实训课题。通过本章学习,可以复习数设计的其它算法,完成一个数据结构实训课题。通过本章学习,可以复习数据结构的基本算法,学习数据结构
2、实验系统开发的全过程,了解系统设计的据结构的基本算法,学习数据结构实验系统开发的全过程,了解系统设计的一般要求;掌握文件包含处理的基本方法;提高程序编写和程序调试的能力。一般要求;掌握文件包含处理的基本方法;提高程序编写和程序调试的能力。1系统总体设计系统总体设计 系统总体设计包括系统总体结构设计;计算机系统配置方案的设计等。系统总体设计包括系统总体结构设计;计算机系统配置方案的设计等。其中,系统总体结构设计包括整个系统分成几个模块,各个模块选择多少个算其中,系统总体结构设计包括整个系统分成几个模块,各个模块选择多少个算法,整体上要达到什么样的目标等。法,整体上要达到什么样的目标等。计算机系统
3、配置包括硬件和软件两个方面。在硬件上选择何种类型的计算机及计算机系统配置包括硬件和软件两个方面。在硬件上选择何种类型的计算机及必要的外围设备;在软件上采用何种操作系统和程序设计语言等。必要的外围设备;在软件上采用何种操作系统和程序设计语言等。 对于本章的数据结构实验系统而言,由于使用的是对于本章的数据结构实验系统而言,由于使用的是C(或(或C+)语言,)语言,所以对硬件的要求比较低,一般的微型计算机或笔记本电脑都可以胜任。至于所以对硬件的要求比较低,一般的微型计算机或笔记本电脑都可以胜任。至于软件,可以使用软件,可以使用Windows各种版本的操作系统和各种版本的操作系统和Microsoft
4、Visual C+等系等系统软件。统软件。2. 系统详细设计系统详细设计 系统详细设计包括逻辑结构设计、存储结构设计和算系统详细设计包括逻辑结构设计、存储结构设计和算法设计;用户界面设计;以及用何种程序设计语言实现等。法设计;用户界面设计;以及用何种程序设计语言实现等。对于数据的逻辑结构、存储结构和算法在前面各章已经有了对于数据的逻辑结构、存储结构和算法在前面各章已经有了详细的介绍,所以,这里主要考虑的是用户界面的设计,比详细的介绍,所以,这里主要考虑的是用户界面的设计,比如采用什么样的菜单,如何设计人机交互的信息等等。如采用什么样的菜单,如何设计人机交互的信息等等。3. 系统调试和维护系统调
5、试和维护 系统调试的方法和常规的调试手段是每个学习计算机系统调试的方法和常规的调试手段是每个学习计算机技术的学生必须掌握的,我们所以增加这一章的内容主要目技术的学生必须掌握的,我们所以增加这一章的内容主要目的也是要加强学生编写程序和调试程序的能力。另外一个好的也是要加强学生编写程序和调试程序的能力。另外一个好的系统还必须考虑其运行以后的可维护性,也就是系统的修的系统还必须考虑其运行以后的可维护性,也就是系统的修改、扩充、维护是否方便。改、扩充、维护是否方便。11.1.1 系统总体结构设计系统总体结构设计1结构化设计的基本思想结构化设计的基本思想(1 1)模块化程序的设计思想)模块化程序的设计思
6、想 将系统按一定规则构造成相对独立的模块,每个模块完成一个独立功能,是模将系统按一定规则构造成相对独立的模块,每个模块完成一个独立功能,是模块化设计的基本思想。块化设计的基本思想。 模块化主要目的是将一个复杂系统划分为一些具有特定功能的模块,使整个模块化主要目的是将一个复杂系统划分为一些具有特定功能的模块,使整个系统设计、测试、维护更加简单。系统设计、测试、维护更加简单。 从逻辑上看,模块就是处理功能,给它一定的输入信息,它能对之进行加工从逻辑上看,模块就是处理功能,给它一定的输入信息,它能对之进行加工处理,并输出结果信息。处理,并输出结果信息。 从物理上看,它是可用名字来表示的一组程序。模块
7、的功能应当简单明确,从物理上看,它是可用名字来表示的一组程序。模块的功能应当简单明确,易于理解,模块之间的联系应尽可能减少。易于理解,模块之间的联系应尽可能减少。 可以共用某些模块。可以共用某些模块。 给每一个模块一个固定的编号或命名,以便整个系统的整合和系统的维护。给每一个模块一个固定的编号或命名,以便整个系统的整合和系统的维护。(2 2)自顶向下,逐步求精的设计方法)自顶向下,逐步求精的设计方法 系统划分模块的工作应按层次进行:系统划分模块的工作应按层次进行: 把整个系统看作一个模块,然后按功能分解成若干第一层模块,每个模块把整个系统看作一个模块,然后按功能分解成若干第一层模块,每个模块各
8、担负一定的局部功能,互相配合,共同完成整个系统的功能。各担负一定的局部功能,互相配合,共同完成整个系统的功能。 每个上一层的模块又可以进一步分解成更为简单(具体)的下一层模块,每个上一层的模块又可以进一步分解成更为简单(具体)的下一层模块,越下层的模块,其功能越具体,越单一。越下层的模块,其功能越具体,越单一。 模块化的层次结构具有简明性,设计者容易思考,阅读者容易理解。只要模块化的层次结构具有简明性,设计者容易思考,阅读者容易理解。只要保证每个模块能完成其自身的功能,尽量减少模块之间的联系,整个系统的正保证每个模块能完成其自身的功能,尽量减少模块之间的联系,整个系统的正确性和可修改性就可以得
9、到保证。另外,模块化的设计方法也使系统的可扩充确性和可修改性就可以得到保证。另外,模块化的设计方法也使系统的可扩充性得到了保证。性得到了保证。(3 3)上层模块分解为下层模块的三种结构形式)上层模块分解为下层模块的三种结构形式 结构化程序设计是采用科学化、标准化的规定所设计、编写的程序,它结构化程序设计是采用科学化、标准化的规定所设计、编写的程序,它既是一种自上而下的程序设计方法,也是一种模块化的程序设计方法。既是一种自上而下的程序设计方法,也是一种模块化的程序设计方法。顺序结构(顺序结构(Sequence ConstructSequence Construct) 在顺序结构的程序处理中,一组
10、语句序列,只有一个入口和一个出口。在顺序结构的程序处理中,一组语句序列,只有一个入口和一个出口。选择结构(选择结构(Selection ConstructSelection Construct)(a a)单分支选择结构:)单分支选择结构:IF IF (表达式)(表达式) 语句语句(b b)两分支选择结构:)两分支选择结构: IFIF(表达式)(表达式) 语句语句1 ELSE 1 ELSE 语句序列语句序列2 2 (c c)多分支选择结构()多分支选择结构(SWITCH SWITCH 或或CASECASE等)等)循环结构(循环结构(Iteration ConstructIteration Con
11、struct)(a a)直到型循环)直到型循环 直到型循环先执行循环体的程序,然后再判断是否要继续执行。这种循环直到型循环先执行循环体的程序,然后再判断是否要继续执行。这种循环结构至少使循环体内的程序执行一次。结构至少使循环体内的程序执行一次。(b b)当型循环)当型循环 当型循环首先判断循环条件是否成立,如果条件成立,则执行循环体内的当型循环首先判断循环条件是否成立,如果条件成立,则执行循环体内的语句序列;如果条件不成立,则结束循环。由于是先判断后执行,所以循环体语句序列;如果条件不成立,则结束循环。由于是先判断后执行,所以循环体内的语句序列也可能一次也不执行。内的语句序列也可能一次也不执行
12、。 无论多么复杂的系统,都可以分解为三种基本形式的组合。大部分程序设无论多么复杂的系统,都可以分解为三种基本形式的组合。大部分程序设计语言都支持这三种结构形式。计语言都支持这三种结构形式。2 2模块分解的规则模块分解的规则 模块的分解应使每个模块相对独立,因此使模块内部自身联系紧密,模模块的分解应使每个模块相对独立,因此使模块内部自身联系紧密,模块外部相互之间的信息联系尽可能减少,是设计物理模型的两项基本原则。块外部相互之间的信息联系尽可能减少,是设计物理模型的两项基本原则。 若以本教材第二章至第九章各子系统,作为数据结构实验系统的第一层若以本教材第二章至第九章各子系统,作为数据结构实验系统的
13、第一层模块,其结构如图模块,其结构如图11-111-1所示。所示。在数据结构教材中,每一章又有很多算法,在系统设计时就要进行分析、在数据结构教材中,每一章又有很多算法,在系统设计时就要进行分析、筛选,以确定系统中选用各章的那些算法。有时,在一个小节中就有多个算筛选,以确定系统中选用各章的那些算法。有时,在一个小节中就有多个算法,以查找子系统为例,其第二层的模块结构,如图法,以查找子系统为例,其第二层的模块结构,如图11-2 11-2 所示。所示。 在第二层的二叉排序树中还包含有许多重要的算法,于是我们可以在第二层的二叉排序树中还包含有许多重要的算法,于是我们可以进一步分解为更为深入的第三层模块
14、,如图进一步分解为更为深入的第三层模块,如图 11-3 11-3 二叉排序树子系统。二叉排序树子系统。 以此类推,完成整个模块的设计。并且各模块功能要求相对独立,这以此类推,完成整个模块的设计。并且各模块功能要求相对独立,这对将来系统维护、和系统扩充将是十分有利的。假定系统中选用和设计的对将来系统维护、和系统扩充将是十分有利的。假定系统中选用和设计的算法是完全独立的,那么在算法是完全独立的,那么在VC+环境中开发一个下拉式的菜单,然后通过环境中开发一个下拉式的菜单,然后通过下拉式菜单去调用这些算法将是十分方便的。下拉式菜单去调用这些算法将是十分方便的。 11.1.2 系统详细设计系统详细设计
15、1用户界面设计用户界面设计 (1)菜单设计)菜单设计 通过屏幕显示下一步程序可能执行的方向和目标,用户根据屏幕提示,指通过屏幕显示下一步程序可能执行的方向和目标,用户根据屏幕提示,指定一个所期望的执行方向,这种方式好象在菜单上点菜一样,称为菜单方式。早定一个所期望的执行方向,这种方式好象在菜单上点菜一样,称为菜单方式。早期的选择式菜单设计。期的选择式菜单设计。 随着面向对象的程序设计软件的出现,下拉式的菜单已成为当前菜单设计随着面向对象的程序设计软件的出现,下拉式的菜单已成为当前菜单设计的主流,人们只要在菜单开发工具上,按照屏幕的提示,经过简单的操作就能完的主流,人们只要在菜单开发工具上,按照
16、屏幕的提示,经过简单的操作就能完成功能完善的菜单设计。本书从锻炼学生编程的基本能力出发,在数据结构实验成功能完善的菜单设计。本书从锻炼学生编程的基本能力出发,在数据结构实验系统的菜单设计中仍然使用比较原始的选择式菜单。系统的菜单设计中仍然使用比较原始的选择式菜单。 (2)人机对话设计)人机对话设计 当程序进行到一定阶段时,系统通过显示屏幕向用户提出一个问题,等当程序进行到一定阶段时,系统通过显示屏幕向用户提出一个问题,等待用户回答待用户回答“是是”或或“否否”,然后根据用户的回答,决定程序下一步的走向。,然后根据用户的回答,决定程序下一步的走向。 例如:例如: 还要继续演示吗(还要继续演示吗(
17、Y/N)?)? 用户只要按照屏幕提示回答用户只要按照屏幕提示回答“Y”或或“N”,就能控制程序的方向。,就能控制程序的方向。(3)输入设计)输入设计 在计算机处理过程中,数据输入是用户与计算机的重要接口。信息处理在计算机处理过程中,数据输入是用户与计算机的重要接口。信息处理的基本原则是:按正确的程序,用正确的操作,去处理正确的数据。只有遵的基本原则是:按正确的程序,用正确的操作,去处理正确的数据。只有遵循这一原则才能获得正确的信息。因此,保证数据正确性的关键就是要保证循这一原则才能获得正确的信息。因此,保证数据正确性的关键就是要保证输入的正确性。这就要求:输入的正确性。这就要求: 在进行输入设
18、计时,对用户的输入数据进行必要的提示,比如:请输入在进行输入设计时,对用户的输入数据进行必要的提示,比如:请输入10个整数;个整数; 对输入的数据的正确性进行必要的确认;对输入的数据的正确性进行必要的确认; 有一定的容错能力,即使输入数据错误,应该能给出适当的提示,并允许有一定的容错能力,即使输入数据错误,应该能给出适当的提示,并允许改正错误,而不发生滚屏或死循环的现象。改正错误,而不发生滚屏或死循环的现象。 (4)输出设计)输出设计 输出设计的好坏,将直接影响系统的使用效果。因此,如何针对用户的输出设计的好坏,将直接影响系统的使用效果。因此,如何针对用户的特点和要求,以最适当的方式,输出最适
19、合需要的信息,是输出设计所要解特点和要求,以最适当的方式,输出最适合需要的信息,是输出设计所要解决的主要问题。决的主要问题。 比如:对于冒泡排序有单向冒泡和双向冒泡之分,从排序的结果来看是比如:对于冒泡排序有单向冒泡和双向冒泡之分,从排序的结果来看是一样的。如果输出设计使之能显示每一趟排序的结果,这对加深排序算法的一样的。如果输出设计使之能显示每一趟排序的结果,这对加深排序算法的理解,比较排序质量的优劣将是十分有益的。理解,比较排序质量的优劣将是十分有益的。 2处理过程设计处理过程设计 处理过程设计是对每一个模块的内部过程进行具体的描述,从而在程序处理过程设计是对每一个模块的内部过程进行具体的
20、描述,从而在程序编制阶段可以将这个描述直接翻译成用某种程序设计语言编写的程序。处理编制阶段可以将这个描述直接翻译成用某种程序设计语言编写的程序。处理过程设计的结果,对应用程序的质量起着决定性的作用,同时也是系统测试过程设计的结果,对应用程序的质量起着决定性的作用,同时也是系统测试和系统维护的重要依据。和系统维护的重要依据。 处理过程设计的工具很多,可以分为流程图(如程序流程图、处理过程设计的工具很多,可以分为流程图(如程序流程图、NS图),表格(决策树、决策表)和程序设计语言工具三类。这三类工具都能图),表格(决策树、决策表)和程序设计语言工具三类。这三类工具都能指明控制流程、处理功能、数据流
21、等实现细则。指明控制流程、处理功能、数据流等实现细则。1 1.1.3 系统调试和维护系统调试和维护 程序和系统调试的目的是发现程序和系统中的错误并及时予以纠正。程序和系统调试的目的是发现程序和系统中的错误并及时予以纠正。 1 程序调试程序调试 程序调试包括程序的语法调试和程序的逻辑检查。程序的调试除了采用程序调试包括程序的语法调试和程序的逻辑检查。程序的调试除了采用正常的数据外,还应该选用一些异常的和错误的数据,用来考验程序的正确正常的数据外,还应该选用一些异常的和错误的数据,用来考验程序的正确性。性。 具体检查内容如下:具体检查内容如下:(1)输入错误键值时,能否及时发出出错信息,并允许修改
22、;)输入错误键值时,能否及时发出出错信息,并允许修改;(2)输入错误数据时,能否及时检查出错误数据,并允许修改;)输入错误数据时,能否及时检查出错误数据,并允许修改;(3)操作失误时,能否及时发出警告信息,并允许改正。)操作失误时,能否及时发出警告信息,并允许改正。2 分调分调 由于系统是按处理功能分成模块的,一个处理功能由一个或一个以上的由于系统是按处理功能分成模块的,一个处理功能由一个或一个以上的程序构成,所以在单个程序调试成功以后,就可以进行分调。所谓分调是将程序构成,所以在单个程序调试成功以后,就可以进行分调。所谓分调是将一个功能内的所有程序按次序串联起来进行调试,相当于一个子系统的调
23、试。一个功能内的所有程序按次序串联起来进行调试,相当于一个子系统的调试。目的是保证模块内部控制关系的正确和数据内容的正确。目的是保证模块内部控制关系的正确和数据内容的正确。 3 总调总调(1)主控制和调度程序的调试)主控制和调度程序的调试 这部分程序的语句不多,主要是要求逻辑控制正确。调试时可以将所有这部分程序的语句不多,主要是要求逻辑控制正确。调试时可以将所有控制程序与各功能模块相连的接口用控制程序与各功能模块相连的接口用“短路短路”程序替代原来的功能模块。调程序替代原来的功能模块。调试的目的不是处理结果的正确性,而是控制来往通路和参数传递的正确性,试的目的不是处理结果的正确性,而是控制来往
24、通路和参数传递的正确性,发现并解决模块调度中的问题。发现并解决模块调度中的问题。(2) 程序总调程序总调 程序总调是将主控制调度程序和功能模块联结起来调试,对系统各种可程序总调是将主控制调度程序和功能模块联结起来调试,对系统各种可能的使用情况,进行可行性测试。能的使用情况,进行可行性测试。 4 编写文档编写文档 编写文档的内容主要包括:编写文档的内容主要包括: (1) 编写操作说明书;编写操作说明书; (2) 完成程序框图;完成程序框图; (3) 打印出源程序代码。打印出源程序代码。 5系统维护系统维护 系统完成以后,很少能一字不改的一直沿用下去。软件开发人员应该根系统完成以后,很少能一字不改
25、的一直沿用下去。软件开发人员应该根据外界环境的变更及时对系统进行维护。维护的内容包括:据外界环境的变更及时对系统进行维护。维护的内容包括:(1)程序的维护)程序的维护根据系统运行出现的问题改写一部分甚至全部程序,根据系统运行出现的问题改写一部分甚至全部程序,使系统日益完善。使系统日益完善。(2)系统的扩充)系统的扩充根据需要,扩充新的功能和新的模块。根据需要,扩充新的功能和新的模块。(3)根据软件和硬件的发展,使系统升级换代,完成更新设计。比如:把)根据软件和硬件的发展,使系统升级换代,完成更新设计。比如:把选择式菜单换成下拉式菜单,以图形界面的显示替代选择式菜单换成下拉式菜单,以图形界面的显
26、示替代DOS界面的显示等等。界面的显示等等。 应该指出的是,本节涉及的内容,并不仅仅局限于数据结构实验系统应该指出的是,本节涉及的内容,并不仅仅局限于数据结构实验系统的开发,而且也适用于一般系统的开发。的开发,而且也适用于一般系统的开发。11.2 文件的包含处理11.2.1 什么是文件包含什么是文件包含 文件的包含处理是指一个源文件可以将另一个源文件文件的包含处理是指一个源文件可以将另一个源文件的全部内容包含进来,即将另外的文件包含到本文件之中的全部内容包含进来,即将另外的文件包含到本文件之中。C(或(或C+)语言提供了)语言提供了#include命令来实现命令来实现“文件包文件包含含”的操作
27、。其一般形式为:的操作。其一般形式为: #include “文件名文件名” 或或 #include 图图11-4是是“文件包含文件包含”以前两个独立文件以前两个独立文件file1.cpp和和file2.h的示意图。其中图(的示意图。其中图(a)为文件)为文件file1.cpp,它有一个,它有一个#include 命令,然后还有其它内容的命令,以命令,然后还有其它内容的命令,以S1表示。图(表示。图(b)为另一个文件)为另一个文件file2.h,文件内容以,文件内容以S2 表表示。示。 在编译预处理时,要对在编译预处理时,要对#include#include命令进行命令进行“文件包含文件包含”处
28、处理,即将文件理,即将文件file2.hfile2.h的全部内容复制插入到的全部内容复制插入到#include #include 命令处,也就是将命令处,也就是将file2.hfile2.h的内容包含到的内容包含到 file1.cppfile1.cpp中,于是得到图中,于是得到图11-511-5所示的结果。在编译中,将所示的结果。在编译中,将“包含包含”以后的以后的file1.cppfile1.cpp作为一个源文件单位进行编译。作为一个源文件单位进行编译。 “文件包含文件包含”在程序设计中是十分有用的。例如,在程序设计在程序设计中是十分有用的。例如,在程序设计中 往 往 需 要 使 用 一 组
29、 固 定 的 符 号 常 量 , 如中 往 往 需 要 使 用 一 组 固 定 的 符 号 常 量 , 如 e = 2 . 7 1 8 ,pi=3.1415926等等,可以把这些宏定义命令组成一个文件,然后各,可以把这些宏定义命令组成一个文件,然后各人都可以用人都可以用#include命令将这些符号常量包含到自己的源文件中。命令将这些符号常量包含到自己的源文件中。这样,就可以不必定义这些符号常量,而直接进行引用,相当于这样,就可以不必定义这些符号常量,而直接进行引用,相当于工业上的标准零件,其作用是大大节省了程序设计人员的重复劳工业上的标准零件,其作用是大大节省了程序设计人员的重复劳动。动。【
30、例例11-111-1】 利用宏定义将程序中的利用宏定义将程序中的“输出格式输出格式”定义好,作为一个输出格式文定义好,作为一个输出格式文件件format.h,然后将它包含在一个然后将它包含在一个file.cpp的文件中。的文件中。 (1 1)format.h #define PR printf#define NL “n”#define D “%d”#define D1 D NL #define D2 D D NL #define D3 D D D NL #define D4 D D D D NL #define S “%s”(2 2) file.cpp #include “format.h”
31、main() int a,b,c,d ; char string =”上海上海东方明珠东方明珠”; a=1;b=2;c=3;d=4; PR(D1,a); PR(D2,a,b); PR(D3,a,b,c); PR(D4,a,b,c,d); PR(S,string); 程序运行后输出如下结果:程序运行后输出如下结果: 1 12 123 1234 上海东方明珠上海东方明珠 值得注意的是,在编译时以上两个文件并不是作为两个文件进行连接的,值得注意的是,在编译时以上两个文件并不是作为两个文件进行连接的,而是作为一个源程序编译,得到也只有一个目标文件。这种常用在文件头部被而是作为一个源程序编译,得到也只有
32、一个目标文件。这种常用在文件头部被包含的文件,称为头部(包含的文件,称为头部(head)文件,一般以)文件,一般以“h”为后缀名。为后缀名。 如果需要修改一些常数,不必修改每个程序,只需修改一个头文件就可以如果需要修改一些常数,不必修改每个程序,只需修改一个头文件就可以了。但是应当注意,被包含的文件修改以后,凡包含该文件的所有文件都必须了。但是应当注意,被包含的文件修改以后,凡包含该文件的所有文件都必须进行重新编译。这一点在程序调试中尤其值的注意。进行重新编译。这一点在程序调试中尤其值的注意。说明:说明:(1)一个)一个include命令只能指定一个被包含的文件。要包含命令只能指定一个被包含的
33、文件。要包含n个文件,必须用个文件,必须用n个个include命令。命令。(2)如果)如果file1.cpp包含包含 file2.h,而,而 file2.h中又要用到中又要用到file3.h 的内容,则可的内容,则可在在file1.cpp中用两个中用两个include命令分别包含命令分别包含file2.h和和file3.h,而且,而且 file3.h 必须必须出现在出现在file2.h之前。之前。定义如下:定义如下: #include “file3.h” #include “file2.h” 这样,这样,file1.cpp和和file2.h都可以使用都可以使用file3.h的内容,且的内容,且
34、file2.h也不必使用:也不必使用:#include “file3.h” 命令了。命令了。(3 3)在一个被包含文件中又可以包含另一个被包含的文件,即文件包含是可)在一个被包含文件中又可以包含另一个被包含的文件,即文件包含是可以嵌套的。以嵌套的。(4)在)在#include命令中,文件名可以用双引号或尖括号括起来。命令中,文件名可以用双引号或尖括号括起来。两者的区别是:两者的区别是: 用尖括号(如用尖括号(如#include )形式时,系统到存放库函数的头文件所)形式时,系统到存放库函数的头文件所在的目录中寻找要包含的文件,这种方式称为标准方式;在的目录中寻找要包含的文件,这种方式称为标准方
35、式; 用双引号(如用双引号(如#include “file2.h”)形式时,系统先在用户当前目录寻找要)形式时,系统先在用户当前目录寻找要包含的文件,若找不到,再按标准方式查找。包含的文件,若找不到,再按标准方式查找。(5)被包含文件()被包含文件(file2.h)与其所在的文件(即用)与其所在的文件(即用#include命令的源文件命令的源文件file1.cpp)在预编译后,已成为同一个文件。所以,如果在)在预编译后,已成为同一个文件。所以,如果在file2.h中有全局静中有全局静态变量,它也在态变量,它也在file1.cpp文件中有效,不必用另外声明。文件中有效,不必用另外声明。11.2.
36、2 如何对如何对“数据结构实验系统数据结构实验系统”进行文件包含?进行文件包含? 设本书前述各章的子系统分别命名为:线性表设本书前述各章的子系统分别命名为:线性表.h、栈、栈.h、队列、队列.h、串、串.h、数组和广义表数组和广义表.h.h、树、树.h、图、图.h、查找、查找.h、排序、排序.h,现在我们用八个子系统为基,现在我们用八个子系统为基础来组成一个数据结构的实验系统。因为在础来组成一个数据结构的实验系统。因为在C(或或C+)语言中只允许有一个主语言中只允许有一个主函数,所以在组成整个系统前,我们必须把原来各子系统的主函数进行改名。函数,所以在组成整个系统前,我们必须把原来各子系统的主
37、函数进行改名。表表1 11-1是各章子系统的函数名和头文件名的对照表:是各章子系统的函数名和头文件名的对照表:1 1.2.3 .2.3 数据结构实验系统主控模块数据结构实验系统主控模块 根据表根据表11-1的子系统与函数名的对照表,设计出如下的子系统与函数名的对照表,设计出如下“数据结构实验系统数据结构实验系统”的主控模块。只要在其中加入包含各子系统文件组成的头文件,就能方便的调用的主控模块。只要在其中加入包含各子系统文件组成的头文件,就能方便的调用各子系统的函数了。各子系统的函数了。 主控模块:主控模块: DS.cpp #include 线性表线性表.h #include 栈栈.h #inc
38、lude 队列队列.h #include 串串.h“#include “数组和广义表数组和广义表.h #include 树树.h #include 图图.h #include 查找查找.h #include 排序排序.hvoid main(void)int choice; char ch; ch=y; while(ch=y|ch=Y) printf(nnn);printf(“ntt 数 据 结 构 实 验 演 示 系 统 );printf(“ntt 主 菜 单 );printf(ntt*);printf(“ntt* 1-线 性 表 *);printf(“ntt* 2- 栈 *);printf(
39、“ntt* 3-队 列 *);printf(“ntt* 4- 串 *);printf(“ntt* 5-数组和广义表 *);printf(“ntt* 6-二 叉 树 *);printf(“ntt* 7- 图 *);printf(“ntt* 8-查 找 *);printf(“ntt* 9-排 序 *);printf(“ntt* 0-退 出 *);printf(ntt*);printf(ntt 请选择菜单号(0-9):); scanf(%d,&choice); getchar(); switch(choice) case 1: LineList(); break; case 2: Stack(); break; case 3: Queue(); break; case 4: String(); break;case 5:AGL();break; cas
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 齐齐哈尔医学院《债权法》2025-2026学年期末试卷
- 齐齐哈尔大学《中医护理》2025-2026学年期末试卷
- 苏州大学应用技术学院《金融学概论》2025-2026学年期末试卷
- 沈阳体育学院《材料科学与工程基础》2025-2026学年期末试卷
- 上海中侨职业技术大学《企业资源计划原理与实践》2025-2026学年期末试卷
- 上海体育大学《笔译》2025-2026学年期末试卷
- 苏州城市学院《法学概论》2025-2026学年期末试卷
- 上海政法学院《档案学》2025-2026学年期末试卷
- 沈阳体育学院《投资银行学》2025-2026学年期末试卷
- 石家庄人民医学高等专科学校《金融学概论》2025-2026学年期末试卷
- 2025钠离子电池正极材料研发突破与产业化进程报告
- 九江课件教学课件
- 化工培训课件
- 外墙蜘蛛人吊绳施工方案
- 输变电工程建设现行主要质量管理制度、施工与验收质量标准目录-2026年2月版-
- 工业机器人维护和保养课件
- 《数据标注实训(初级)》中职全套教学课件
- 医院放射科竞聘演讲
- 2026版高中汉水丑生生物-第一章第一节分离定律
- 傣族服饰课件
- 卵巢肿瘤教学查房的课件
评论
0/150
提交评论