第11章数据结构课程实训
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第11章 数据结构课程实训
2011年5月11日星期三
1
第11章 目 录
• 11.1 系统设计的要求 • 11.2 文件的包含处理 • 11.3 数据结构课程实训任务书
本章的主要目的是指导学生以本书精选的、难度适当的60个左右的典型 算法为基础,组装一个数据结构实验系统。在此基础上,指导学生扩充自主 设计的其它算法,完成一个数据结构实训课题。通过本章学习,可以复习数 据结构的基本算法,学习数据结构实验系统开发的全过程,了解系统设计的 一般要求;掌握文件包含处理的基本方法;提高程序编写和程序调试的能力。
11.1 系统设计的要求
1.系统总体设计 系统总体设计包括系统总体结构设计;计算机系统配置方案的设计等。
其中,系统总体结构设计包括整个系统分成几个模块,各个模块选择多少个 算法,整体上要达到什么样的目标等。 计算机系统配置包括硬件和软件两个方面。在硬件上选择何种类型的计算机 及必要的外围设备;在软件上采用何种操作系统和程序设计语言等。
对于本章的数据结构实验系统而言,由于使用的是C(或C++)语言, 所以对硬件的要求比较低,一般的微型计算机或笔记本电脑都可以胜任。至 于软件,可以使用Windows各种版本的操作系统和Microsoft Visual C++等 系统软件。
2. 系统详细设计 系统详细设计包括逻辑结构设计、存储结构设计和算
各担负一定的局部功能,互相配合,共同完成整个系统的功能。
• 每个上一层的模块又可以进一步分解成更为简单(具体)的下一层模块,
越下层的模块,其功能越具体,越单一。
模块化的层次结构具有简明性,设计者容易思考,阅读者容易理解。只 要保证每个模块能完成其自身的功能,尽量减少模块之间的联系,整个系统 的正确性和可修改性就可以得到保证。另外,模块化的设计方法也使系统的 可扩充性得到了保证。
(3)上层模块分解为下层模块的三种结构形式 结构化程序设计是采用科学化、标准化的规定所设计、编写的程序,它
既是一种自上而下的程序设计方法,也是一种模块化的程序设计方法。
顺序结构(Sequence Construct) 在顺序结构的程序处理中,一组语句序列,只有一个入口和一个出口。
选择结构(Selection Construct) (a)单分支选择结构:IF (表达式) 语句 (b)两分支选择结构:
无论多么复杂的系统,都可以分解为三种基本形式的组合。大部分程序设 计语言都支持这三种结构形式。
2.模块分解的规则
模块的分解应使每个模块相对独立,因此使模块内部自身联系紧密, 模块外部相互之间的信息联系尽可能减少,是设计物理模型的两项基本原 则。
若以本教材第二章至第九章各子系统,作为数据结构实验系统的第一 层模块,其结构如图11-1所示。
法设计;用户界面设计;以及用何种程序设计语言实现等。 对于数据的逻辑结构、存储结构和算法在前面各章已经有了 详细的介绍,所以,这里主要考虑的是用户界面的设计,比 如采用什么样的菜单,如何设计人机交互的信息等等。
3. 系统调试和维护 系统调试的方法和常规的调试手段是每个学习计算机
技术的学生必须掌握的,我们所以增加这一章的内容主要目 的也是要加强学生编写程序和调试程序的能力。另外一个好 的系统还必须考虑其运行以后的可维护性,也就是系统的修 改、扩充、维护是否方便。
IF(表达式) 语句1 ELSE 语句序列2 (c)多分支选择结构(SWITCH 或CASE等)
循环结构(Iteration Construct) (a)直到型循环
直到型循环先执行循环体的程序,然后再判断是否要继续执行。这种循环 结构至少使循环体内的程序执行一次。 (b)当型循环
当型循环首先判断循环条件是否成立,如果条件成立,则执行循环体内的 语句序列;如果条件不成立,则结束循环。由于是先判断后执行,所以循环体 内的语句序列也可能一次也不执行。
1Fra Baidu bibliotek.1.1 系统总体结构设计
1.结构化设计的基本思想
(1)模块化程序的设计思想
• 将系统按一定规则构造成相对独立的模块,每个模块完成一个独立功能,是模
块化设计的基本思想。
• 模块化主要目的是将一个复杂系统划分为一些具有特定功能的模块,使整个
系统设计、测试、维护更加简单。
• 从逻辑上看,模块就是处理功能,给它一定的输入信息,它能对之进行加工
以此类推,完成整个模块的设计。并且各模块功能要求相对独立,这 对将来系统维护、和系统扩充将是十分有利的。假定系统中选用和设计的 算法是完全独立的,那么在VC++环境中开发一个下拉式的菜单,然后通过 下拉式菜单去调用这些算法将是十分方便的。
11.1.2 系统详细设计
1.用户界面设计 (1)菜单设计
(2)人机对话设计 当程序进行到一定阶段时,系统通过显示屏幕向用户提出一个问题,等
在数据结构教材中,每一章又有很多算法,在系统设计时就要进行分 析、筛选,以确定系统中选用各章的那些算法。有时,在一个小节中就有 多个算法,以查找子系统为例,其第二层的模块结构,如图11-2 所示。
在第二层的二叉排序树中还包含有许多重要的算法,于是我们可以 进一步分解为更为深入的第三层模块,如图 11-3 二叉排序树子系统。
处理,并输出结果信息。
• 从物理上看,它是可用名字来表示的一组程序。模块的功能应当简单明确,
易于理解,模块之间的联系应尽可能减少。
• 可以共用某些模块。 • 给每一个模块一个固定的编号或命名,以便整个系统的整合和系统的维护。
(2)自顶向下,逐步求精的设计方法
系统划分模块的工作应按层次进行:
• 把整个系统看作一个模块,然后按功能分解成若干第一层模块,每个模块
通过屏幕显示下一步程序可能执行的方向和目标,用户根据屏幕提示,指 定一个所期望的执行方向,这种方式好象在菜单上点菜一样,称为菜单方式。 早期的选择式菜单设计。
随着面向对象的程序设计软件的出现,下拉式的菜单已成为当前菜单设计 的主流,人们只要在菜单开发工具上,按照屏幕的提示,经过简单的操作就能 完成功能完善的菜单设计。本书从锻炼学生编程的基本能力出发,在数据结构 实验系统的菜单设计中仍然使用比较原始的选择式菜单。
2011年5月11日星期三
1
第11章 目 录
• 11.1 系统设计的要求 • 11.2 文件的包含处理 • 11.3 数据结构课程实训任务书
本章的主要目的是指导学生以本书精选的、难度适当的60个左右的典型 算法为基础,组装一个数据结构实验系统。在此基础上,指导学生扩充自主 设计的其它算法,完成一个数据结构实训课题。通过本章学习,可以复习数 据结构的基本算法,学习数据结构实验系统开发的全过程,了解系统设计的 一般要求;掌握文件包含处理的基本方法;提高程序编写和程序调试的能力。
11.1 系统设计的要求
1.系统总体设计 系统总体设计包括系统总体结构设计;计算机系统配置方案的设计等。
其中,系统总体结构设计包括整个系统分成几个模块,各个模块选择多少个 算法,整体上要达到什么样的目标等。 计算机系统配置包括硬件和软件两个方面。在硬件上选择何种类型的计算机 及必要的外围设备;在软件上采用何种操作系统和程序设计语言等。
对于本章的数据结构实验系统而言,由于使用的是C(或C++)语言, 所以对硬件的要求比较低,一般的微型计算机或笔记本电脑都可以胜任。至 于软件,可以使用Windows各种版本的操作系统和Microsoft Visual C++等 系统软件。
2. 系统详细设计 系统详细设计包括逻辑结构设计、存储结构设计和算
各担负一定的局部功能,互相配合,共同完成整个系统的功能。
• 每个上一层的模块又可以进一步分解成更为简单(具体)的下一层模块,
越下层的模块,其功能越具体,越单一。
模块化的层次结构具有简明性,设计者容易思考,阅读者容易理解。只 要保证每个模块能完成其自身的功能,尽量减少模块之间的联系,整个系统 的正确性和可修改性就可以得到保证。另外,模块化的设计方法也使系统的 可扩充性得到了保证。
(3)上层模块分解为下层模块的三种结构形式 结构化程序设计是采用科学化、标准化的规定所设计、编写的程序,它
既是一种自上而下的程序设计方法,也是一种模块化的程序设计方法。
顺序结构(Sequence Construct) 在顺序结构的程序处理中,一组语句序列,只有一个入口和一个出口。
选择结构(Selection Construct) (a)单分支选择结构:IF (表达式) 语句 (b)两分支选择结构:
无论多么复杂的系统,都可以分解为三种基本形式的组合。大部分程序设 计语言都支持这三种结构形式。
2.模块分解的规则
模块的分解应使每个模块相对独立,因此使模块内部自身联系紧密, 模块外部相互之间的信息联系尽可能减少,是设计物理模型的两项基本原 则。
若以本教材第二章至第九章各子系统,作为数据结构实验系统的第一 层模块,其结构如图11-1所示。
法设计;用户界面设计;以及用何种程序设计语言实现等。 对于数据的逻辑结构、存储结构和算法在前面各章已经有了 详细的介绍,所以,这里主要考虑的是用户界面的设计,比 如采用什么样的菜单,如何设计人机交互的信息等等。
3. 系统调试和维护 系统调试的方法和常规的调试手段是每个学习计算机
技术的学生必须掌握的,我们所以增加这一章的内容主要目 的也是要加强学生编写程序和调试程序的能力。另外一个好 的系统还必须考虑其运行以后的可维护性,也就是系统的修 改、扩充、维护是否方便。
IF(表达式) 语句1 ELSE 语句序列2 (c)多分支选择结构(SWITCH 或CASE等)
循环结构(Iteration Construct) (a)直到型循环
直到型循环先执行循环体的程序,然后再判断是否要继续执行。这种循环 结构至少使循环体内的程序执行一次。 (b)当型循环
当型循环首先判断循环条件是否成立,如果条件成立,则执行循环体内的 语句序列;如果条件不成立,则结束循环。由于是先判断后执行,所以循环体 内的语句序列也可能一次也不执行。
1Fra Baidu bibliotek.1.1 系统总体结构设计
1.结构化设计的基本思想
(1)模块化程序的设计思想
• 将系统按一定规则构造成相对独立的模块,每个模块完成一个独立功能,是模
块化设计的基本思想。
• 模块化主要目的是将一个复杂系统划分为一些具有特定功能的模块,使整个
系统设计、测试、维护更加简单。
• 从逻辑上看,模块就是处理功能,给它一定的输入信息,它能对之进行加工
以此类推,完成整个模块的设计。并且各模块功能要求相对独立,这 对将来系统维护、和系统扩充将是十分有利的。假定系统中选用和设计的 算法是完全独立的,那么在VC++环境中开发一个下拉式的菜单,然后通过 下拉式菜单去调用这些算法将是十分方便的。
11.1.2 系统详细设计
1.用户界面设计 (1)菜单设计
(2)人机对话设计 当程序进行到一定阶段时,系统通过显示屏幕向用户提出一个问题,等
在数据结构教材中,每一章又有很多算法,在系统设计时就要进行分 析、筛选,以确定系统中选用各章的那些算法。有时,在一个小节中就有 多个算法,以查找子系统为例,其第二层的模块结构,如图11-2 所示。
在第二层的二叉排序树中还包含有许多重要的算法,于是我们可以 进一步分解为更为深入的第三层模块,如图 11-3 二叉排序树子系统。
处理,并输出结果信息。
• 从物理上看,它是可用名字来表示的一组程序。模块的功能应当简单明确,
易于理解,模块之间的联系应尽可能减少。
• 可以共用某些模块。 • 给每一个模块一个固定的编号或命名,以便整个系统的整合和系统的维护。
(2)自顶向下,逐步求精的设计方法
系统划分模块的工作应按层次进行:
• 把整个系统看作一个模块,然后按功能分解成若干第一层模块,每个模块
通过屏幕显示下一步程序可能执行的方向和目标,用户根据屏幕提示,指 定一个所期望的执行方向,这种方式好象在菜单上点菜一样,称为菜单方式。 早期的选择式菜单设计。
随着面向对象的程序设计软件的出现,下拉式的菜单已成为当前菜单设计 的主流,人们只要在菜单开发工具上,按照屏幕的提示,经过简单的操作就能 完成功能完善的菜单设计。本书从锻炼学生编程的基本能力出发,在数据结构 实验系统的菜单设计中仍然使用比较原始的选择式菜单。