资源描述
南 阳 理 工 学 院 本科生毕业设计(论文)学院(系): 软件学院 专 业: 软件工程 学 生: 胡晓波 指导教师: 张枫 完成日期 2011 年 04 月南阳理工学院本科生毕业设计(论文)动态排序算法演示软件设计动态演示的实现Sorting algorithms dynamic demonstration of software designthe realization of dynamic demonstration总 计 : 20 页毕业设计(论文)表 格 : 14 个插 图 : 10 幅南 阳 理 工 学 院 本 科 毕 业 设 计(论文)动态排序算法演示软件设计动态演示的实现Sorting algorithms dynamic demonstration of software designthe realization of dynamic demonstration学 院(系): 软 件 学 院 专 业: 软 件 工 程 学 生 姓 名: 胡 晓 波 学 号: 68107183 指 导 教 师(职称): 张 枫(讲师) 评 阅 教 师: 完 成 日 期: 2011-4-1 南阳理工学院 Nanyang Institute of Technology动态排序算法演示软件设计动态排序算法演示软件设计动态演示的实现软件工程 胡晓波摘 要不管在现实世界还是在软件设计中,排序都是一种非常普遍的应用。排序算法是数据结构这门课程核心内容之一。它是计算机程序设计、数据库、操作系统、编译原理及人工智能等的重要基础,广泛的应用于信息学、系统工程等各种领域。学习排序算法是为了将实际问题中所涉及到的对象在计算机中对它们进行处理。该演示系统可以通过操作把数据结构中的主要排序常见的排序算法(有冒泡排序、选择排序、直接插入排序、希尔排序、快速排序、归并排序等)表示出来。系统具有两种模式:单步演示,用于教学和认知排序过程;统计模式,可以生成大规模数据验证各种算法的时间性能。并且在单步演示模式下,可以统计数据交换的次数。关键词数据结构;排序算法;动态演示Sorting algorithms dynamic demonstration of software designthe realization of dynamic demonstrationSoftware Engineering Major HU Xiao-boAbstract: Sorting is a very popular application, whether in the real world or the design of software. Sorting algorithm is one of the most important core contents in course of data structure. Sorting algorithm which is widely used in information science, systems engineering and other areas is the important basic of computer program design,database,operating systems,complier theory, artificial intelligence and etc. The purpose of learning Sorting algorithm is to process the objects involved in practical problem in computer. This demo system can display the main sorting algorithm which contains bubble sort, selection sort, straight insertion sort, shells sort, quick sort and merging sort in data structure by operation. The system has two modes which contain teaching mode which is used to teach and learn the process of sort and statistical mode which can generate large sums of data to test the time performance of various sort algorithms. And the system can also count the number of exchange in the statistical mode.Key words: Data structure; sorting algorithm; dynamic demonstration目录1 绪论11.1 研究背景及意义11.1.1 研究背景11.1.2 研究目的和意义11.2 研究现状11.3 本文主要内容22 需求及技术分析22.1 任务概述22.1.1 预期目标22.1.2 条件与限制22.2 功能需求22.2.1 功能描述22.2.2 功能模块图32.3 模块功能与处理流程32.4 功能需求与程序的关系62.5 内部排序算法62.6 Flash动画技术72.6.1 Flash动画原理72.6.2 Flash cs3简介82.6.3 ActionScript83 系统设计83.1 数据定义83.2 程序流程图83.3 系统结构设计83.3.1 单步演示模式83.3.2 统计模式103.4 接口设计103.4.1 用户接口103.4.2 外部接口103.4.3 内部接口104 系统实现104.1 AS实现排序算法104.1.1 直接插入排序演示104.1.2 希尔排序演示104.1.3 直接选择排序演示114.1.4 冒泡排序演示114.1.5 快速排序演示114.1.6 归并排序演示114.2 动画制作步骤114.3 接口实现124.3.1 显示统计数据124.3.2 图表统计124.4 界面设计144.4.1 主界面144.4.2 教学模式动画演示144.4.3 统计模式动画演示155 系统说明165.1 系统综述165.2 用户界面原型175.3 尚未解决的问题176 运行与测试17结束语18参考文献19致谢205动态排序算法演示软件设计1 绪论1.1 研究背景及意义1.1.1 研究背景排序是计算机程序设计中的一种重要操作。排序算法是在整个计算机科学与技术领域上广泛被使用的术语。不管在现实世界还是在软件设计中,排序都是一种非常普遍的应用。排序算法是数据结构这门课程中的主要内容之一。排序算法是计算机程序设计、数据库、操作系统、编译原理及人工智能等的重要基础,广泛的应用于信息学、系统工程等各种领域1。排序算法应用广泛,也是算法教学的必备课程和基础课程,学生对一些主要的排序算法的理解程度很大程度决定了学生的基本算法的分析,设计能力。当前国内的排序算法教学大多还是老师口述和板书,教学过程复杂,空洞,学生理解起来也枯燥,抽象,并且对各种算法的适应场合混淆不清。排序算法演示软件有助于加深学生对排序算法的理解,和分析能力,也有助于老师的教学。1.1.2 研究目的和意义在研究各种算法的过程中,对其特点、效率、适用性等在不同的数据集上做全面的分析和比较,并以动态演示的方式展示一些经典排序算法运行过程,目的有以下五个方面:做算法的对比研究,培养研究能力;开发一个独立的软件,培养程序设计和软件开发能力;初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;提高综合运用所学的理论知识和方法独立分析和解决问题的能力;为教学服务,研究结果可对抽象的数据结构的教学有一定的辅助作用。排序是一种非常普遍的操作,而排序的方法又非常的多,有的方法还比较复杂,不仅教师讲授困难,学生理解起来也有一定难度。把各种排序方法用动态可视化的形式展现出来,不仅可以提高教师教学质量,也加深学生对排序过程的理解,具有很大的应用价值。通过完成该课题,可以加强对知识的分析和理解,培养综合运用知识解决实际问题的能力,提高的实践操作技能。1.2 研究现状排序是计算机科学中最重要的研究问题之一,它在计算机图形、计算机辅助设计、机器人、模式识别及统计学等领域具有广泛的应用。由于它固有的理论上的重要性,2000年它被列为对科学和工程计算的研究与实践影响最大的10大问题之一。其应用早已不局限于简单的数值计算,而涉及到问题的分析、数据结构框架的设计以及插入、删除、排序、查找等复杂的非数值处理和操作2。排序算法的学习就是为以后利用计算机资源高效地开发非数值处理的计算机程序打下坚实的理论、方法和技术基础。1.3 本文主要内容排序的方法很多,但是就其全面性能而言,很难提出一种被认为是最好的方法,每一种方法都有各自的优缺点,适合在不同的环境下使用。如果排序中依据的不同原则对内部排序方法进行分类,则大致可分为直接插入排序、直接选择排序、冒泡排序、希尔排序、快速排序、堆排序六类3。本文描述了整个系统的分析设计过程,一个对几种内部排序算法进行比较,并用不同的测试数据进行测试比较的演示系统。比较的指标为关键字的比较次数和关键字的移动次数。最后用图表数据汇总,从而对这些内部排序算法进行性能分析。系统具有两种模式:单步演示,用于教学和认知排序过程;统计模式,可以生成大规模数据验证各种算法的时间性能。并且在单步演示模式下,可以统计数据交换的次数。2 需求及技术分析2.1 任务概述2.1.1 预期目标运用软件工程思想,遵守开发流程,严格执行测试标准,开发出一套符合需求的教学软件产品。利用图形界面动态展示各种排序算法的工作过程,排序过程和对应伪代码同步显示,过程可控制:暂停,返回,数据生成等。算法操作过程的动态可视化,系统的两种模式:单步演示模式,统计模式。单步演示模式:用于教学和认知排序过程,在此模式下,用户选择一种排序算法,对一串数字的排序过程动态显示出来。用户再选择使用的排序算法,然后系统会动态的呈现整个算法的执行过程即该算法的交换过程并附以伪代码,供用户的教学和认知。同时在交换的过程中统计交换次数。统计模式:在此模式下,用户输入一串数字或者选择生成一串随机数字,成为待排序的一串数字,在该模式下生成各种排序算法的交换次数和执行时间。2.1.2 条件与限制硬件环境:客户PC机,主频1.8GHZ以上,内存512M以上,硬盘80G以上软件环境:Win XP,VC6.0,Adobe Flash CS32.2 功能需求2.2.1 功能描述(1)系统可以对各种内部排序的方法进行动态可视化的演示;(2)系统具有两种模式:单步演示,用于教学和认知排序过程;统计模式,可以生成大规模数据验证各种算法的时间性能;(3)要求实现的排序算法有:直接插入排序,Shell排序,表插入排序,冒泡排序,快速排序,选择排序,堆排序等;(4)在单步演示模式下,可以统计数据交换的次数。2.2.2 功能模块图图2-1 功能模块图2.3 模块功能与处理流程各模块功能及处理流程如下表所示表2-1 选择系统模式模块编号模块名称模块标识1选择系统模式Welcome Interface输 入处 理输 出系统模式编号判断输入系统模式界面表2-2 选择教学模式模块编号模块名称模块标识2选择教学模式Educational Mode输 入处 理输 出排序算法编号依据输入判断相应算法的排序过程和交换次数表2-3 选择统计模式模块编号模块名称模块标识3选择统计模式Statistics Mode输 入处 理输 出排序算法编号调用相应的统计程序交换次数和交换时间表2-4 随机数生成模块编号模块名称模块标识4随机数生成Product Random Number输 入处 理输 出数据规模n调用随机数生成程序数据规模为n的随机数txt文件表2-5 数据统计模块编号模块名称模块标识5数据统计Statistic Data输 入处 理输 出模块3的输出图表表示输入数据的处理生成图表表2-6 数据保存模块编号模块名称模块标识6数据保存Save Data输 入处 理输 出模块3输出文件写入Txt格式文件表2-7 直接插入排序演示模块编号模块名称模块标识7直接插入排序演示StraightInsertionSort输 入处 理输 出待排序数组演示排序过程交换次数表2-8 希尔排序演示模块编号模块名称模块标识8希尔排序演示ShellSort输 入处 理输 出无演示排序过程无表2-9 归并排序演示模块编号模块名称模块标识9归并排序演示MergeSort输 入处 理输 出待排序数组演示排序过程无表2-10 冒泡排序演示模块编号模块名称模块标识10冒泡排序演示BubbleSort输 入处 理输 出待排序数组演示排序过程交换次数表2-11 快速排序演示模块编号模块名称模块标识11快速排序演示QuickSort输 入处 理输 出待排序数组演示排序过程交换次数表2-12 直接选择排序演示模块编号模块名称模块标识12直接选择排序演示StraightSelectionSort输 入处 理输 出待排序数组演示排序过程交换次数表2-13 堆排序演示模块编号模块名称模块标识13堆排序演示HeapSort输 入处 理输 出待排序数组演示排序过程交换次数2.4 功能需求与程序的关系本条用一张如下的矩阵图说明各项功能需求的实现同各块程序的分配关系:统计程序统计程序随机数生成程序数据格式转换文件读写随机数生成数据导出数据保存 统计交换次数执行时间计算图表生成表2-14 功能需求与程序的关系2.5 内部排序算法排序就是将记录按关键字递增(递减)的次序排列起来,形成新的有序序列。内排序是指在排序过程中,所有元素调到内存中进行的排序。内排序是排序的基础。内排序效率用比较次数来衡量。按所用策略不同,内排序又可分为插入排序、选择排序、交换排序、归并排序及基数排序等几大类。冒泡排序(Bubble Sort),首先将第一个记录的关键字和第二个记录的关键字进行比较,若为逆序,则将两个记录交换之,然后比较第二个记录和第三个记录的关键字。以此类推,直至第n-1个记录和第n个记录的关键字进行过比较为止。上述过程称做第一趟冒泡排序,其结果使得关键字最大的记录被安置到最后一个记录的位置上。然后进行第二趟冒泡排序,对前n-1个记录进行同样操作,其结果是使关键字次大的记录被安置到第n-1个记录的位置上。选择排序(Selection Sort),第一趟,从n个记录中找出关键码最小的记录与第一个记录交换;第二趟,从第二个记录开始的n-1个记录中再选出关键码最小的记录与第二个记录交换;如此,第i趟,则从第i个记录开始的n-i+1个记录中选出关键码最小的记录与第i个记录交换,直到整个序列按关键码有序。直接插入排序(Straight Insertion Sort)是一种最简单的排序方法,它的基本操作是将一个记录插入到已排好序的有序表中,从而得到一个新的、记录数增1的有序表。希尔排序(Shells Sort),先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为d1的倍数的记录放在同一个组中。现在各组内进行直接插入排序;然后,取第二个增量d2.该方法的实质上是一种分组插入方法。堆排序(Heap Sort),n个关键字序列k1,k2,kn称为堆,当且仅当该序列满足如下性质(简称为堆性质):(1)kik2i且kik2i+1或(2)kik2i且kik2i+1。若将此序列所存储的向量R1.n看作是一棵完全二叉树的存储结构,则堆实质上是满足如下性质的完全二叉树:树中任一非叶结点的关键字均不大于(或不小于)其左右孩子(若存在)结点的关键字。根结点的关键字是堆里所有结点关键字中最小者的堆称为小根堆;根结点的关键字是堆里所有结点关键字中最大者的堆称为大根堆。快速排序(Quick Sort)是对起泡排序的一种改进。它的基本思想是,通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。归并排序(Merging Sort)是又一类不同的排序方法。“归并”的含义是将两个或两个以上的有序表组合成一个新的有序表4。2.6 Flash动画技术Flash是由美国的 Macromedia 公司推出的一款多媒体动画制作软件,它是一种创作工具,设计人员和开发人员可使用它来创建演示文稿、应用程序和其他允许用户交互的内容。Flash 可以包含简单的动画、视频内容、复杂演示文稿和应用程序以及介于它们之间的任何内容。通常,使用 Flash 创作的各个内容单元称为应用程序,即使它们可能只是很简单的动画。也可以通过添加图片、声音、视频和特殊效果,构建包含丰富媒体的 Flash 应用程序5。2.6.1 Flash动画原理Flash动画的制作过程主要有,输入和编辑起始和终止关键帧;计算和生成中间帧;定义和显示运动路径;交互式给画面上色;产生一些特技效果;实现画面与声音的同步;控制运动系列的记录等,其中自动计算生成中间帧就是Flash的精髓了。2.6.2 Flash cs3简介Flash软件可以实现多种动画特效,动画都是由一帧帧的静态图片在短时间内连续播放而造成的视觉效果,是表现动态过程、阐明抽象原理的一种重要媒体。尤其在医学CAI课件中,使用设计合理的动画,不仅有助于学科知识的表达和传播,使学习者加深对所学知识的理解,提高学习兴趣和教学效率,同时也能为课件增加生动的艺术效果,特别对于以抽象教学内容为主的课程更具有特殊的应用意义6。2.6.3 ActionScriptActionScrip是针对Adobe Flash Player运行时环境的编程语言,它在Flash内容和应用程序中实现了交互性、数据处理以及其它许多功能。Flash使用ActionScript给动画添加交互性。在简单动画中,Flash按顺序播放动画中的场景和帧,而在交互动画中,用户可以使用键盘或鼠标与动画交互。例如,可以单击动画中的按钮,然后跳转到动画的不同部分继续播放;可以移动动画中的对象;可以在表单中输入信息等等。使用ActionScript可以控制Flash动画中的对象,创建导航元素和交互元素,扩展Flash创作交互动画和网络应用的能力7。3 系统设计3.1 数据定义输入数据:由于大多数排序算法的时间开销主要是关键字之间的比较和记录的移动,算法的执行时间不仅依赖于问题的规模,还取决于输入实例中数据的状态。所以对于输入数据,我们采用由用户输入记录的个数和选择数据规模。输出数据:输入关键字分别用直接插入排序,直接选择排序,冒泡排序,shell排序,快速排序,堆排序这些排序方法进行排序,输出关键字的比较次数和移动次数,以及统计不同数据规模的交换次数。3.2 程序流程图程序流程如图3-1所示3.3 系统结构设计系统分为两种模式:单步演示(教学)模式,统计模式。系统结构如图3-2所示3.3.1 单步演示模式用于教学和认知排序过程,在此模式下,用户选择一种排序算法,对一串数字的排序过程动态显示出来。用户再选择使用的排序算法,然后系统会动态的呈现整个算法的图3-1 程序流程图排序算法动态演示系统教学模式统计模式插入排序演示希尔排序演示选择排序演示冒泡排序演示快速排序演示归并排序演示选择数据规模显示统计数据图3-2 软件结构图执行过程即该算法的交换过程,供用户的教学和认知。同时在交换的过程中统计交换次数。单步演示包括直接插入排序、希尔排序、直接选择排序、冒泡排序、快速排序、归并排序等六个演示模块。3.3.2 统计模式在此模式下,用户可选择不同大小的数据规模,进行排序计算,并生成各种排序算法的交换次数和执行时间,以柱状图表示出来。统计模式包括数据规模选择和显示统计数据,可供选择的数据规模有50,500,5000,10000,20000个。3.4 接口设计3.4.1 用户接口图形用户界面,用户点击功能按钮,系统做出相应的响应。3.4.2 外部接口Flash软件调用可执行程序的API接口。3.4.3 内部接口各个模块之间功能相对独立,程序在逻辑上没有联系。各模块之间的数据联系通过对文件的读写来实现。4 系统实现4.1 AS实现排序算法4.1.1 直接插入排序演示直接插入排序实现: 1.从第一个元素开始,该元素可以认为已经被排序 2.取出下一个元素,在已经排序的元素序列中从后向前扫描 3.如果该元素(已排序)大于新元素,将该元素移到下一位置 4.重复步骤3,直到找到已排序的元素小于或者等于新元素的位置 5.将新元素插入到该位置中 6.重复步骤2 4.1.2 希尔排序演示增量的选择将影响希尔排序的效率。但是无论怎样选择增量,最后一定要使增量为1,进行一次直接插入排序。但它相对于直接插入排序,由于在子表中每进行一次比较,就可能移去整个经性表中的多个逆序,从而改善了整个排序性能。希尔排序算是一种基于插入排序的算法,所以对数据有序敏感。4.1.3 直接选择排序演示选择排序是这样实现的: 1.首先在未排序序列中找到最小元素,存放到排序序列的起始位置 2.然后,再从剩余未排序元素中继续寻找最小元素,然后放到排序序列末尾。 3.以此类推,直到所有元素均排序完毕。 4.1.4 冒泡排序演示冒泡排序是这样实现的: 1. 首先将所有待排序的数字放入工作列表中。 2. 从列表的第一个数字到倒数第二个数字,逐个检查:若某一位上的数字大于他的下一位,则将它与它的下一位交换。 3. 重复2号步骤(倒数的数字加1。例如:第一次到倒数第二个数字,第二次到倒数第三个数字,依此类推.),直至再也不能交换。 4.1.5 快速排序演示快速排序使用分治法策略来把一个序列分为两个子序列8。 步骤为:1. 从数列中挑出一个元素,称为 基准(pivot), 2. 重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分割之后,该基准是它的最后位置。这个称为分割(partition)操作。 3. 递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。 递回的最底部情形,是数列的大小是零或一,也就是永远都已经被排序好了。虽然一直递回下去,但是这个演算法总会结束,因为在每次的迭代(iteration)中,它至少会把一个元素摆到它最后的位置去。4.1.6 归并排序演示归并排序的算法就是二分法。 分解:将n个元素分解成各含一半元素的子序列。 解决:用归并排序法对两个子序列递归地排序。 合并:合并两个已排序的子序列排序结果。 在对子序列排列时,当其长度为1时递归结束,因为单个元素被认为是已排好序的合并排序的.合并排序的关键步骤在于合并目前产生的两个已排好序的子序列:Ap.q和Aq+1r,将它们合并成一个已排好序的子序列 Ap.r。4.2 动画制作步骤1.新建Flash文件,设置文档大小和背景色;2.创建影片剪辑和元件;3.创建图层,添加输入文本、动态文本和按钮;4.创建代码层,插入关键帧;5.为按钮和关键帧添加动作;6.测试影片;7.发布,生成swf动画和对应html文件。4.3 接口实现4.3.1 显示统计数据在VC+6.0下,运用C语言的文件操作将计算结果保存在tmp.txt文件里;在Flash CS3 Action Script下用exec独立播放器命令加载fscommand下生成的.exe文件,实现选择数据规模后排序的计算;加载fscommand下的tmp.txt文件,设置动态文本的变量名为tmp.txt中变量的名称,从而显示统计次数,并且动态文本长度自适应统计次数的大小。4.3.2 图表统计绘制矩形,以动态文本的顶点为起始坐标,并以实例名为变量确定末尾坐标,控制动态矩形长度的变化,实现以图表形式对各种排序算法交换次数的统计和对比。/加载fscommand下的tmp.txt文件loadVariables(fscommand/tmp.txt, _root);/设置动态文本的自适应大小insert._width=insert.textWidth;insert.autoSize=left;/实例化一个LV对象var shiyan_lv = new LoadVars();/载入外部文本shiyan_lv.load(fscommand/tmp.txt);/载入成功后shiyan_lv.onLoad = function(chenggong) if (chenggong) _root.createEmptyMovieClip(hk, 1); /使用创建命令在舞台上创建一个名字叫 hk的影片剪辑实例,深度为 1 with (hk) /使用 with命令设置 hk的各个属性 beginFill(0x5EE8F7, 85); /开始填充这个 hk实例,颜色为黑色,透明度为 85 lineStyle(1, 0x5EE8F7, 100); /设置这个实例的边框粗细为1,颜色为灰色,透明度为100moveTo(insert._x, insert._y); /设置绘制线条的起点坐标 lineTo(insert._x+400, insert._y); lineTo(insert._x+400, insert._y+23); lineTo(insert._x, insert._y+22); lineTo(insert._x, insert._y); /结束绘制,将在舞台上绘制出一个 300*100 大小的矩形。 endFill(); /结束填充,与 beginFill()命令对应。 with (hk) /使用 with命令设置 hk的各个属性 beginFill(0x2915EA, 85); /开始填充这个 hk实例,颜色为黑色,透明度为 85 lineStyle(1, 0x2915EA, 100); /设置这个实例的边框粗细为 1,颜色为灰色,透明度为 100moveTo(bubble_sort._x, bubble_sort._y); /设置绘制线条的起点坐标 lineTo(bubble_sort._x+(400*(bubble/insert_sort), bubble_sort._y); lineTo(bubble_sort._x+(400*(bubble/insert_sort), bubble_sort._y+23); lineTo(bubble_sort._x, bubble_sort._y+23); lineTo(bubble_sort._x, bubble_sort._y); endFill(); else /加载失败给予提示 trace(加载失败); ;4.4 界面设计4.4.1 主界面提供用户选择演示模式,对教学模式和统计模式的选择,如图4-1所示图4-1 系统主界面4.4.2 教学模式动画演示该模块能够提供对用户选择的算法进行单步演示的功能,如图4-2所示图4-2 教学模式选择一种排序演示,进入该演示界面,在用户按照提示输入一组待排序的数据后,开始演示过程(以直接插入排序为例),如图4-3所示图4-3 排序演示4.4.3 统计模式动画演示该模块能演示选择不同数据规模后的交换次数统计情况,如图4-4所示图4-4 统计模式选择一个数据规模,进行排序计算如图4-5所示图4-5 排序计算选择显示统计数据,显示上一次排序计算的统计数据,如图4-6所示图4-6 数据规模为50的统计数据5 系统说明5.1 系统综述系统名称:排序算法动态演示系统系统组成:1.单步演示模式(教学模式)A 直接插入排序演示B 希尔排序演示C 直接选择排序演示D 冒泡排序演示E 快速排序演示F 归并排序演示2.统计模式A选择数据规模B显示统计数据本软件主要应用于排序算法课堂上教学,选择数组经常使用排序算法中的一种动态演示,并输入待排序的一组数组,即可进行该排序算法的演示过程;能选择对50、500、5000、10000、20000个数据进行各种排序算法需要时间比较,比较结果通过表格和柱状图显示出来。5.2 用户界面原型用户界面:采用Windows的通用图形界面,对用户友好,且必须对鼠标键盘提供支持,界面设计应遵循:1. 尽量保持一致性:界面规范应遵循MS Windows软件界面的规范。2. 设计完整得对话过程:系统每次对话都应有明确的次序:开始、中间处理、结束。3. 提供简单的错误处理机制。4. 提供信息反馈:信息提示用户当前软件运行状态,软件界面元件的功能。5. 操作可逆:其动作可以是单个的操作,或者是一个相对独立的操作序列9。5.3 尚未解决的问题测试数据并不完善,由于数据规模有限,没有计算出算法的确切执行时间。随即数的生成理论上可以取更大规模的数据以获得更多的测试数据,但由于计算机性能及内存限制,并不能进行更深入的性能测试。6 运行与测试不深入代码细节测试软件等的方法称为动态黑盒测试。测试员输入数据、接受输出、检验结果。动态黑盒测试常被称为行为测试,因为测试的是软件在使用过程中的实际行为10。以在教学模式排序算法动态演示功能模块中出错处理为例:系统运行时,需要人机交互实现用户所需演示功能。在用户使用时,有时需要输入指定数据。否则,无法执行排序,比较功能。在系统设计时,充分考虑了用户操作的各种可能情况,容错性较好。下面简单介绍该系统出错处理的设计。在演示模式下,需要用户输入一组数据(有个数限制,而且某些需要一定的次序,如从小到大),并以半角逗号隔开,如果用户未输入任何数据,或者输入数据格式不正确,直接执行下一步操作时,系统会出现操作提示,如图5-1所示图5-1 操作提示在统计模式下,每选择一个数据规模进行统计计算后,需要再点击一次“显示统计数据”,方可显示该数据规模的统计数据;如果不选择计算,那么显示的统计数据就是系统最后一次的统计数据。结束语排序算法是计算机程序设计、数据库、操作系统、编译原理及人工智能等的重要基础,广泛应用于信息学、系统工程等各个领域。学习排序算法是为了将实际问题中涉及的对象在计算机中进行处理。本毕业论文对插入排序、直接选择排序、冒泡排序、希尔排序、快速排序、堆排序等基本排序算法的动态演示进行分析和设计。通过几个月的学习和实践,在老师和同学的帮助下我完成了排序算法动态演示系统。通过毕业设计的锻炼,学到了很多东西:巩固和加深了对数据结构的理解;培养了我选用参考书,查阅手册及文献资料的能力,培养独立思考,深入研究,分析、解决问题的能力;通过实际编译系统的分析设计,编程调试,掌握应用软件的分析方法和工程设计方法;能够按要求编写毕业设计报告书,能正确阐述设计和实验结果,正确绘制系统和程序框图;通过毕业设计,培养了我严肃认真的工作作风,逐步建立正确的生产观念、经济观念和全局观念。毕业设计是把我们所学的理论知识进行系统的总结并应用于实践的良好机会,有利于加强我们用只是理论来分析实际问题的能力,进而加强了我们对知识认识的实践度,巩固了我们的理论知识,深化了对知识的认识,并为走向社会打下一个良好的基础。参考文献1美 Thomas H.Cormen Charles E.Leiserson Ronald L.Rivest Clifford Stein,算法导论,机械工业出版社,2006.9:712张晓莉、刘振鹏等,数据结构与算法,机械工业出版社,2008.4:2433黄刘生编著,数据结构,经济科学出版社,2010.1:2584严蔚敏,吴伟民主编,数据结构(C语言版),清华大学出版社,2008:263-2925吴志华,邱军虎主编,Flash CS3动画制作一点通,科学出版社,2009:23-666毕靖、张琨、成晓静编著,Flash CS3中文版从入门到精通,电子工业出版社,2008.5:5-127蒋国强编著,ActionScript完全自学手册,机械工业出版社,2008.10:168塞奇威克,算法-(C实现)基础数据结构排序和搜索,中国电力出版社,2003.11:186-2249(美)普雷斯曼,软件工程:实践者的研究方法,机械工业出版社,2007.1:134-13610美Ron Patton著,软件测试(原书第二版),机械工业出版社,2009.8:42-59致谢在这次毕业设计过程中我们遇到许多问题和麻烦。例如:论文设计思路不明确,排序软件无法实现动态演示,论文排版不够合理等。在得到了张枫老师多次殷切的帮助和指导下,不断指引我们纠正错误,并教育我们要思路开阔,发散思维,考虑问题全面别致,并指导我们阅读相关的资料和书籍,不断完善自己的程序,才能使得这次毕业设计顺利的进行下去。在张老师的身上我更是学到了严谨的学术作风和做研究不怕苦要有韧性的精神。另外,在整个程序分析和设计过程中,多亏得到我的队友徐雷的帮助,给我及时指出错误,帮助我修正并提出许多宝贵富有建设性的意见。还有感谢大家网学习论坛以及百度网友对于我提出问题的解答。在此对张老师和同学们以及热心的网友们表示衷心的感谢!21
展开阅读全文