《数据结构算法演示系统毕业设计论文.docx》由会员分享,可在线阅读,更多相关《数据结构算法演示系统毕业设计论文.docx(22页珍藏版)》请在优知文库上搜索。
1、数据结构算法演示系统DataStructureDemonstrationSystem目录目录I摘要VABSTRACTVI前言1第1章绪论21.1.课题研究背景21.2国内计算机辅助教学的现状21.3计算机辅助教学的发展趋势41.4系统建设的目的4本章小结5第2章需求分析62.1功能性需求分析62.1.1系统需求62.1.2识别参与者和用例72.1.3用例的事件流描述92.2非功能性需求分析182. 2.1设计思想182. 2.2可行性分析19本章小结20第3章系统详细设计212.1 系统总体结构图212.2 静态结构模型213. 2.1定义系统对象类213. 2.2定义用户界面类253. 2.
2、3建立类图313. 3动态行为模型31本章小结39第4章系统实现404. 1多线程简介404.1.1线程、多线程概念404.1.2实现多线程的方法404.2动态算法演示模板424.3算法演示的多线程设计434.3.1源代码同步演示的实现444.3.2动画的同步实现454.3.3算法中变量值的同步实现45本章小结45结论46总结与体会47谢辞48参考文献49附录一5055附录二DataStructureDemonstrationSystemABSTRACT,I,issystemtakesQinghuaUniversitypub1.ishinghousepub1.icationC1.anguage
3、versionDaiaStruc1.urefc1.asamainsource,reasonab1.ychoosespartofa1.gorithmsintheDataStructureandcarriesoninthesystemorganica1.1.ycombinations,formstheoptimizeddynamicdemonstrationsystem.Itmayadaptthereadersdifterentdemandstothea1.gorithmdata-inandcontro1.modestheproccssexecution,anddemonstratesinthea
4、1.gorithmimp1.ementationonthecomputerscreenthedata1.ogica1.organizationeitherthememorystructurechangeconditionorthestackchangeconditioninterecursiona1.gorihnimp1.ementation.WithC#mu1.tithrcad.theDataStructureCAIcanprovidea“treeinone”p1.atform.onwhicha1.gorithmanimation,sourcecodeandvariab1.eva1.ueca
5、nbeexecutedandshownsynchronous1.y.Keywords:Datastructures.Dynamicdemonstration,C#.Mu1.thrcad.Synchronous前言数据结构是计.算机专业的核心课程,对各类犯怯的理解则是课程教学的重点和难点,算法动态演示作为辅助教学过程的手段则可以有效帮助学生更快的理解、掌握算法。数据结构对后续课程的学习极其或要。但该课程涉及大地的概念、定义、模型和算法,显得很抽象和深奥。在教学过程中,如果能加以计铝机辅助教学,可.以提高教学效果,所以编写这样的程序不仅有助学习数据结构,同时也大大增强/学生的学习兴趣,提离学生的编
6、程能力。这是因为,一方面利用算法演示系统的生动性和直观性,使教学内容条理化和形象化,降低了对知识理解的难度:另方面,由于演示系统的趣味性和交互性,有利r激发学生浓厚的学习兴趣,使其愿学、乐学.可视化是演示系统应该具备的要求。本系统采用C#多线程技术来实现数据结构.算法的算法动态演示设计,提供及源代码跟踪、变星跟踪、模拟动态效果“三合”的算法演示同步平台。第1章绪论数据结构是计算机专业的核心课程,重点培养学生在对数据分析组织与程序设计算法思想上的综合能力。算法是数据结构的主要内容,也是数据结构教学的点和难点。但在数据结构的教学过程中,使用传统的静态课件或“粉箔+黑板”教学形式很难将算法的执行过程
7、动态地演示出来,影响r教学效果.G数据结构算法动态演示设计是使用专业编程技术实现算法的动态展示,使学生更直观的从算法的设计思想、程序运行描述、程序运行结果同步跟踪展示等全方位的了解算法,使学生能主动积极地学习和掌握应用这些算法.1.I课题研究背景随着现代科学技术的迅猛发展,计尊机技术己渗透到各个领域,成为各行业必不可少的工具,特别是InICrne1.技术的推广和信息裔速公路的建立,使IT产业在市场竞争中越发显示由其独特的优势,步入数字化时代,有巨大的数据信息等待着加工处理和传输,这将现实的许多东西都进入虚拟的世界当中,这都需耍计算机技术的支持司样的,学院的教学手段也在逐步信息化,这使得计算机辅
8、助教学CAI的出现成为一种必然的趋势。90年代以来,随若多媒体和In1.erne1.网络的出现,计算机教仔已步入一个全新的阶段,计算机辅助教学CAI作为一种先进的教学手段正逐步渗透于各类院校的各个学科.E数据结构不仅是大学计算机专业的核心课程之一,也是非计算机专业的主要选修课程之一。该课程涉及大量的概念、数据结构和党法,理论性强又较为抽象,尤其是对算法描述的执行过程的理解是难点和重点。在课堂教学上,大量的算法不可能也无法一一详述,运用计算机辅助教学系统一一G数据结构舞法动态演示系统B可以使教学内容化静为动,调动学生的学习兴趣:变难为易,提高学生学习兴趣:使学生御学于乐,培养学生的学习兴趣,与此
9、同时,利用计算机辅助教学还可以满足学生的学习兴趣。它已成为激发学生兴趣的新方法、新手段。1.2国内计算机辅助教学的现状从上述分析,可以看出系统至少有7个重要的类:顺序表(Sq1.iSt)、链表(Iink1.ist)、二叉树遍历(OEe门Tee)、二叉树线索化(ThreTree)、林夫曼树(HUfFmanCode)、拓扑排序(TopoSon)、内部持序(Sort),接若要确定这些类的属性和方法。1)类sq1.isttransfer(string:str.sq1.ist:&1.):void该函数方法将字符串转化为数组存放。ins_sq1.ist(sq1.ist:&1.char:x.inti):vo
10、id该操作是顺序表进行插入,以线性表.插入字符和位置作为参数.1.c1._sq1.ist(sq1.ist:&1.,inti):void该操作是顺序表进行删除,以线性表,删除的位置作为参数。2)类Iink1.is1.crt_!ink1.ist(int:n.Iink1.isi:&1.):void创建一个单链表,以链表元素个数和链表作为参数.insJink1.is1.(1.ink1.isi:&1.,char:x.inti):void该操作是旋表进行插入,以涟表,插入字符和位置作为参数。de1.jink1.ist(sq1.ist:&1.,inti):void该操作是他表进行削除,以徒表,删除的位置作为
11、参数,3)类Orderrreepre-Order(bt:bitree):void该操作是对二叉树进行先序遍历。in-Order(bt:hitree):void该操作是对二叉树进行中序遍历。Post_Ordcr(bt:bitrcc):void该操作是对二叉树进行后序遍历.4)类ThrCTrCCPre_Thre(bi:bitree):void该操作是对二叉树进行先序线索化。in_Thrc(bt:bitrec):void该操作是对二叉树进行中序线索化。PoS1.Thre(bt:bitree):void该操作是对二叉树进行后序线索化。5)类HUfrmanCOdeHUffmanCoding(HIiffm
12、anTrcc&HT,HufTmaneOdC&HC.int*w.i11tn):void该操作用于创建赫夫曼树和孀夫曼树褊码。6)类TopoSortTopOIOgiCa1.SOn(A1.GRAPHG):VOid该操作用于拓扑排序。7)类Sor1.ShcIISorKinta(.intn):void该操作用于希尔排序。QuickSrt(inta11,int1.cft,intright):void该操作用于快速排序。8)类bitreeCrt-Trcc(bt:bitree):void该操作用于创建二叉树。由于每一个算法的演示都要这些操作,因此把它抽象出一个类出来。类名为DCmonStration。9)类D
13、emonstration在确定类Demonstration的屈性和方法时,应考虑如下需求:可以显示C语言编写的核心代码在显示时,应提供C语言编写的核心代码,因此,提供这个功能的操作定义应该如下:ShoWeode(Str:string):void可以显示变动态画面在显示时,应提供动态画面,因此,提供这个功能的操作定义应该如卜.:ShowDemon():void可以显示变量在显示时,应提供变量,因此,提供这个功能的操作定义应该如卜丁ShowB1.(str:string):void可以显示算法设计思想在显示时,应提供算法设计思想,因此,提供这个功能的操作定义应该如下:ShowThink(str:st
14、ring):void可以返回上一级菜单根据这个需求,定义如下操作:Retuni():void可以重新设置数据根据这个需求,定义如下操作:SCIDa1.a(Str:string):void可以恢纪到演示的开始根据这个需求,定义如下操作:RcStart():void可以暂停正在执行的系统可以将暂仰了的系统继续执行可以跟踪代码可以跟踪变量上述4个需求涉及到C#中线程部分,在定义系统类的时候就不多说了。因为在实现部分(第4章)会详细说明。3. 2.2定义用户界面类用户与系统需要交互,一个用户友好的系统通常采用直观的图形化界面,因此需要定义系统的用户界面类。通过对系统的不断分析和细化,可识别出如下界面类
15、以及类的属性和方法。4)“演示二叉树线索化的时序图,如图3,9所示:图3.9演示二叉树线索化”的时序图本章小结本章节主要是进一步对系统的功能性需求分析,将用户的需求逐步转化为代码,从设汁者的角度来设计系统,画出了系统中的静态结构模型和动态行为模型.静态结构模型主要实现了定义系统对象类、定义用户界面类和建立类图。动态行为模型采用时序图来实现.,具体的线程设计如Et2:pub1.icc1.ass/X1.gorithm1.1.iread/JfJf1.定义线ft.A1.gorithmThread.类成员变域声明处pub1.icAIgorithniThrcadOW构造函数体J类A1.gori1.hmThrCa