第10章 数据结构实验系统开发及说明

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
10.2.1 主调函数的设计与实现 下面我们新建一个C源程序文件,在里面使用 文件包含命令将前面各头文件包含进去,再 编写菜单来实现对各子模块的调用。 因为要使用菜单进行选择,所以设一个循环 变量ch用来判断进行哪一操作。在循环体中 用switch来选择进行哪个操作,再进入下一级 的子菜单。
10.2 系统实现
10.2 系统实现
• 在调试主调过程中,如果直接将所有的头文件都包含到实验系统主函 数时,若程序有太多问题就不容易找到出现问题的地方(每个文件没 错误,连在一起有错误,极有可能是多个文件中有相同文件名、相同 的类型定义或相同的函数名造成的错误)。所以在调试整个系统时, 要先将文件包含命令只添加一个头文件(某一章的源程序)。 • 例如,开始调试线性表的功能,在主调函数中将文件包含命令 #include "linklist.h"加到主函数中,然后在主函数的switch中,只保留 case 1后面的linklist()函数,其它case项先用注释屏蔽掉。然后运行 主函数,看线性表的模块功能是否正常,如果出现问题系统会在屏幕 下方提示问题出现在这个文件哪些行,打开线性表的头文件linklist.h 中去查找修改错误,直至调通为止。然后再加入下一个模块的文件包 含命令,再将对应的case项恢复,继续调试,直到所有模块全部调通 。这样整个数据结构实验系统就完成了编码和调试工作。 • 这样,就完成了整个系统的编码、调试工作。读者可将书中没加入到 该系统的各函数自行加入到该系统中,完成编码和调试工作,以加深 对数据结构各部分知识的理解与掌握。
10.1 系统设计
数据结构实验系统中包含的所有函数如表10-2所示。读者 可自行将书中所有函数都加到本系统中。
10.1 系统设计
通过这些文件包含命令,我们将各章原来的main函数改为各个子函数, 然后我们设计出主调函数,在主调函数中调用这些子函数,即完成了 该实验系统的任务。
10.2 系统实现
10.1 系统设计
10.1 系统设计
• 在数据结构教材中,每一章又有很多算法,在系 统设计时就要进行分析、筛选,以确定系统中选 用各章的哪些算法。有时,在一个小节中就有多 个算法,以线性表子系统为例,其第二层的模块 结构如图10-2 所示。
10.1 系统设计
• 以此类推,完成整个模块的设计。并且各 模块功能要求相对独立,这对将来系统维 护、和系统扩充将是十分有利的。假定系 统中选用和设计的算法是完全独立的,那 我们设计一个菜单,通过选择菜单来执行 各模块是十分方便的。
10.1 系统设计
• 说明如下: • (1)一个include命令只能指定一个被包含的文件。 要包含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的内容,且 file2.h也不必使用:#include "file3.h"命令了。
10.2 系统实现
当添加完所有文件,再运行主函数即可。 (2)在C/C++实验系统环境下。如使用的是《 C/C++实验系统》这个软件,我们就需要将这个主 函数和多个模块的头文件放到一个文件夹中,然后 设置文件运行的路径才能正常运行该程序。设置方 法为:选择“工具”菜单中的“选项”,打开“选 项”面板,在“我的程序文件夹”中单击“设置” 按钮,打开系统文件路径设置,选择这些源程序所 在的文件夹,单击“确定”按钮即可,如图10-3所 示。该系统可到网上下载或是在本书的配套资源包 中获取。
10.2 系统实现
10.2.3 实训报告 1.实训报告题目名称 数据结构实验系统 2.系统包括的各章基本算法 如10.1.2节中表10-2中的所有算法,有能力的读者也可将本书的其他算 法自行加到本系统中。 3.要求 (1)整个系统全部采用菜单控制。 (2)一级菜单为各章的名称,二级菜单为每章的算法(需要的话,还可 以在二级菜单之下建立三级菜单)。 (3)系统全部采用中文提示的人机交互方式工作。 (4)完成程序设计和程序调试。 (5)撰写课程设计报告。
主函数设计如下:
10.2 系统实现
10.2 系统实现
因为每章都已经将程序运行结果截屏,所以整个系统的运行结 果这里就不再重复了,由读者自行验证即可。
10.2 系统实现
10.2.2 调试运行系统 1.调试步骤 程序在运行过程中因为是多个文件运行,所以需要设置文件 所在的路径。 (1)在VC++6.0环境下。如果使用的是VC++6.0环境,需 要先设置一个项目,然后将这些头文件和主函数文件都加到 该项目中。将这些文件添加到项目的方法如下: 打开该项目,选择菜单中的“项目”菜单,再选择“添加” 子菜单中的“file(文件)”命令,在弹出的对话框中选择要 添加的文件路径和文件名,单击“确定”按钮,该文件就被 添加到这个项目中了。如果想添加多个文件到项目中重复以 上步骤即可。
10.2 系统实现
图10-3 《C/C++实验系统》设置多文件路径
10.2 系统实现
2.几点说明 (1)重复定义的常量。因为各章的头文件中有原来在每章中学习时定义 的各个最大值MAXSIZE常量,现在我们将各章程序合并为一个程序,如 果再保留原来的多个同名常量定义就会出现问题,所以可以将多个头文 件中的MAXSIZE常量定义保留一个即可。 (2)相同的类型定义。如果前面各章中有相同的类型定义,则会出现类 型定义问题。因此要将每章中结点的类型定义名改为不一样名字即可( 尤其是读者自行将本书中不在本系统的其它算法添加到本系统时,要注 意这个问题)。 (3)将原来每章的源程序改名为同名的头文件(.h)后,还要将其中的 main函数都改为与文件名同名的函数名,该函数无参数,即为主函数中 调用的函数名。 (4)分步骤调试程序。首先调试每章的各程序到无错误为止,调试时注 意每个函数分别调试,直到整个程序全部通过,然后再来调试运行主调 函数。
10.1 系统设计
10.1.2 系统中的文件包含 1.什么是文件包含 文件的包含处理是指一个源文件可以将另一 个源文件的全部内容包含进来,即将另外的 文件包含到本文件之中。C语言提供了 #include命令来实现“文件包含”的操作。其一 般形式为: #include "文件名" 或 #include <文件名>
10.1 系统设计
2.对“数据结构实验系统”进行文件包含 设本书前述各章的子系统分别命名为:linklist.h、 linkstack.h、linkqueue.h、string.h、btree.h、 graph.h、search.h、sort.h,现在我们用这八个子 系统为基础来组成一个数据结构的实验系统。因为 在C语言中只允许有一个主函数,所以在组成整个 系统前,我们必须把原来各子系统的主函数进行改 名,表10-1是各章子系统的函数名和头文件名的对 照表。
10.1 系统设计
(3)在一个被包含文件中又可以包含另一个被包含的文件,即文 件包含是可以嵌套的。 (4)在#include命令中,文件名可以用双引号或尖括号括起来。 两者的区别是: 用尖括号(如#include <file2.h>)形式时,系统到存放库函数的 头文件所在的目录中寻找要包含的文件,这种方式称为标准方式 用双引号(如#include "file2.h")形式时,系统先在用户当前目录 寻找要包含的文件,若找不到,再按标准方式查找。 (5)被包含文件(file2.h)与其所在的文件(即用#include命令 的源文件file1.cpp)在预编译后,已成为同一个文件。所以,如果 在file2.h中有全局静态变量,它也在file1.cpp文件中有效,不必另 外声明。
10.1 系统设计 10.1.1 系统模块设计规则 模块的分解应使每个模块相对独立,因此使模块内 部自身联系紧密,模块外部相互之间的信息联系尽 可能减少,是设计物理模型的两项基本原则。我们 选取本教材中各章里典型的算法,经过简单修改, 最后合成整个数据结构实验系统。 若以本教材第2章至第9章各子系统,作为数据结构 实验系统的第一层模块,其结构如图10-1所示。
第10章 数据结构实验系统开发及说明
本章内容
10.1 系统设计
10.2 系统实现
10.ห้องสมุดไป่ตู้ 系统设计
学习完了数据结构整本书内容,我们选取 本书各章中难度适当的典型算法为基础,组 装成一个数据结构实验系统。通过本系统的 开发,让学生了解如何将多个功能模块组合 成为一个应用程序的过程。
10.1 系统设计
10.2 系统实现
4.实训(课程设计)报告要求 (1)“数据结构实验系统”设计的意义和作用。 (2)系统总框图(把自主设计的算法反映出来)。 (3)完成系统菜单的设计(可以用选择式菜单,也可以使用菜单设计工具)。 (4)完成程序设计(除了教材提供的实验中算法,必须扩充若干自主设计的算 法)。 (5)列出全部模块和算法名称(包括扩充的自主设计算法)的对照表。 (6)调试程序(包括系统调试步骤、程序调试中碰到的问题及解决方法)。 (7)程序源代码(自主扩充和自主设计的算法)。 (8)对自主设计的算法进行时间复杂度和空间复杂度的分析。 (9)操作举例(主要针对自主设计的算法,把输入数据及程序运行结果写到报 告中)。 (10)参考文献。
10.2 系统实现
10.2 系统实现
10.2 系统实现
相关文档
最新文档