算法可视化演示软件开发毕业设计目录前言 (1)第一章绪论 (3)第一节课题背景 (3)第二节课题的目的与意义 (4)第三节论文结构 (4)第二章相关知识概述 (6)第一节 Java知识相关概述 (6)一、Java的发展史 (6)二、Java的主要特性 (6)三、JDK 平台相关信息 (7)第二节 Java图形界面技术概述 (8)一、 Java Swing相关概述 (8)二、容器和布局 (10)三、事件处理 (12)第三节相关算法的介绍 (13)一、冒泡排序 (13)二、插入排序 (15)三、选择排序 (17)四、二叉查找树 (18)第四节本章小结 (22)第三章需求分析 (24)第一节系统功能需求 (24)一、系统设计目标 (24)二、系统功能需求 (24)第二节系统运行环境 (25)第三节本章小结 (26)第四章系统设计 (27)第一节系统总体描述 (27)第二节模块设计 (28)一、算法模块设计 (28)二、界面模块设计 (30)第三节系统流程图 (34)第四节本章小结 (36)第五章系统实现 (38)第一节可视化主界面的实现 (38)第二节排序算法界面所实现的功能 (40)第三节二叉查找树可视化功能的实现 (44)第四节本章小结 (47)第六章系统测试 (48)第一节问题解决及测试结果 (48)一、遇到的问题 (48)二、解决的方法 (48)三、测试结果 (48)第二节本章小结 (56)结论 (58)致谢 (59)参考文献 (61)附录 (63)一、英文原文 (63)二、英文翻译 (75)前言可视化( Visualizations)计算机图形学和图像处理技术,将数据转换成图形或图像在屏幕上显示出来,并进行交互处理的理论、方法和技术。
此次设计算法可视化( Algorithm Visualizations)就是利用可视化技术将算法可视化[1]。
排序是计算机程序设计中的一种重要操作,其功能是一个数据元素(或者记录)的任意序列,从新排列成一个按关键字有序的序列。
在我们所学的数据结构中了解到了排序算法的原理,以及实现过程,但是不清楚它的具体过程是怎么样的。
算法的概念极为抽象,算法有时也枯燥难懂,所以很多时候就提不起学生的兴趣,此次的毕业设计所研究的就是在算法基础上结合图形界面动态的演示排序算法的具体实现过程,从一定程度上也可以提起学生的兴趣,让读者不仅从理论上理解它,更是从实践过程去接受知识,给学生更深的印象。
所要达到的目的是以生动、活泼、全新的教学系统,提供全新的环境提高学生的听课兴趣,增加学生的记忆。
并且本次毕业设计也选择了不同的排序算法,这样在演示的过程中,我们可以根据实现的复杂程度和执行速度等方面为该系统选择合适的排序算法,使之高效率运行,进而提高对排序算法的掌握程度[2]。
二叉树的算法、结构化查询语言等的研究对数据查询有着很重要的实际意义。
用二叉查找树的关系表的方法,可提高商品信息的查询效率。
此次毕业设计还选择了二叉树算法的动态演示,对研究二叉查找树是很有帮助,让大家更了解二叉查找树的实际意义,对研究更复杂的数据库关系打下了基础。
第一章绪论第一节课题背景随着社会和计算机技术的发展,如今,在可视化技术这个大家庭中不仅仅只有科学计算机可视化,它还包括了信息可视化、数据可视化、知识可视化等一系列的分支。
数据可视化有可能帮助人类在大量数据的分析和理解,并检测模式[3]。
近年来,各种可视化技术已经扩展到军事、医学、医学研究、经济、解释工程等各个领域。
其中有很多问题需要在以后的研究中加以解,从整体上来说,我国的可视化技术与世界先进水平还有很大的差距。
而算法可视化是研究其它更深层次领域的基础,因此在研究其它领域的可视化前,我们必须先搞清楚算法可视化这个概念。
由于数据结构中算法是算法可视化中最容易让读者理解和明白的算法,因此,此次设计主要以排序算法和二叉查找树的相关操作来研究。
排序在计算机辅助设计、计算机图形学、机器人、模式识别、基因排序学工程以及统计学等领域都具有广泛的应用,因此在排序的研究不仅有理论上的重要意义,而且有更大的实际应用价值。
又加上如今信息产业在快速的发展信息的流通量越来越大,这些信息数据不仅庞大而且杂乱无章,很难管理和查询,所以更加需要一种非常快捷而且有效的编排手段来整理这些数据信息,提高我们的工作效率。
第二节课题的目的与意义设计并实现直观、容易被理解的算法的动态演示系统,是课题研究的目的。
随着计算机技术的不断发展,人们提出了各种算法,算法可视化在计算机领域里有十分重要的意义,并且应用广泛。
在当今信息发达的时代,面对着海量的无序数据信息,如果没有一个规则来编排和查询,就会给我们的工作和信息带来很大的不方便,所以利用计算机的高速运行和计算能力,编写出一种合适的排序软件,是十分必要的。
并且在设计的过程中也能让学生更加的了解排序算法和实现过程,使他们在以后的学习和工作中能找到更加高效的排序系统,提高学习效果和工作效率。
第三节论文结构本次的论文共有六个章节,详细的阐述了算法可视化的具体实现:第一章,主要介绍了研究的背景、容、目的和意义。
第二章,简述相关的Java知识,进一步了解Java的发展史、特性,还介绍Java图形界面的相关知识和相关算的一些知识。
第三章,通过仔细研究,进行系统地需求分析。
第四章,明确项目模块,进行系统概要设计。
第五章,可视化算法的具体实现、及其功能。
第六章,系统测试,以及在做毕设的过程中遇到的问题,最后对本次毕设进行总结。
第二章相关知识概述第一节 Java知识相关概述一、Java的发展史Java是由Sun公司1995年5月开发的新一代面向对象编程语言(简称Java 语言)和Java平台的总称。
Java的正式推出是1995年,它是James Gosling 和同事们一起研发的,HotJava浏览器是用Java实现的,它(支持Java applet)显示了Java的魅力:动态的Web、跨平台、Internet计算。
它可以应用在各种不同的平台上,正逐步成为internet应用的主要开发语言。
此后,Java 不仅被广泛接受还推动了Web的快速发展,我们所用的一般的浏览器均支持Java applet。
另一方面,Java技术也一直在更新。
Java是由四个方面组成的:Java编程语言、Java类文件格式、Java虚拟机和Java应用程序接口(Java API)。
Java 技术具有突出的的平台移植性、高效性、通用性和安全性,它应广泛的用于数据中心、个人PC、移动、游戏控制台、互联网以及科学超级计算机,并且在全球拥有的开发者专业社群是最大的。
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔的前景[4]。
二、Java的主要特性Java的主要特性有平台无关性、安全性、面向对象特性、简单性、动态特性、多线程性、健壮性等特性[5]。
Java语言是体系结构中立的,是可移植的。
是解释型的,而且是高性能的,是动态的[6]。
Java语言的设计的其中一个目标就是要适应环境的动态变化。
能够把程序需要的类动态的载入到运行环境,同时所需要的类也可以通过网络载入。
这样对软件的升级很有用。
Java 中的类有一个运行时刻的表示,能进行运行时刻的类型检查。
Java语言的优良特性使得Java应用有很高的的可靠性和健壮性,同时应用系统维护的费用也相对减少了。
Java对对象技术的全面支持和Java平台嵌的API能减少应用系统的开发所需要的时间还能有效降低成本。
Java的编译一次,其随处可运行的特性使得它能够提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式。
尤其是Java企业应用编程接口(Java Enterprise APIs)为企业计算及电子商务应用系统提供了丰富的类库很相关技术。
Java语言是面向对象的,面向对象技术的基本特征主要有抽象性、封装性、继承性和多态性。
而在本次设计中主要涉及到的是Java Swing包。
三、JDK 平台相关信息本系统利用Java JDK作为开发平台,利用它的可视化界面和图形用户界面在硬件环境:PC兼容机,1G 存以及软件环境Microsoft Windows7操作系统(可以移植到大部分机器上)下一个演示不同的算法,利用Java编写的图形界面演示的动态交换过程。
JDK是Java开发工具包(Java development kit))的缩写,是整个Java 的核心,是一种用于构建在Java平台上发布的应用程序包括了Java运行环境(Java Runtime Envirement),一堆Java工具和Java基础的类库(rt.jar)。
不论什么Java应用服务器实质都是置了某个版本的JDK。
因此掌握JDK是学好Java的第一步。
最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如IBM公司开发的JDK,BEA公司的Jrocket,还有GNU组织开发的JDK等等。
其中IBM的JDK包含的JVM(Java Virtual Machine)运行效率要比Sun JDK包含的JVM高出许多。
而专门运行在x86平台的Jrocket在服务端运行效率也要比Sun JDK好很多。
但无论怎么说,我们都要需要先把Sun JDK掌握好。
JDK1.1及其以后的版本都支持委托模型。
在委托事件处理模型中,用户操作引发的事件对象仍然传递给相应的组件,但是为了接受事件并进行事件处理,组件必须注册一个事件处理程序,这种事件处理程序称为事件的监听程序(Listener)。
事件的监听程序可以定义在组件所在的类,也可以定义在其他的类里,而对事件的处理,则由组件委托给事件监听所在的类来完成。
第二节 Java图形界面技术概述一、 Java Swing相关概述在Java中设计图形界面程序时,通常选用AWT组件和Swing组件。
Java 的出现带来了抽象窗口工具(AWT),其设计目标是希望构建一个通用的GUI(图形用户界面)使得利用它编程的程序能够运行在所有平台上,以实现SUN你公司的口号“一次编写,随处运行”。
SUN公司推出了新的用户界面库:Swing,相对AWT来说,Swing功能更强大、使用更方便,它的出现是使得Java的图形用户上了一个台阶[7]。
Swing的关键在于一旦有了顶级容器,则其中所有构件都可以用Java编写,例如,将按钮(JButton)放入框架(JFrame)中时,本机操作系统不需要了解该按钮的任何信息,该按钮完全用Java编写且无同级组件,因而组件称为“轻”组件。
Swing具有以下几点优势:①丰富的组件类型:Swing提供了非常广泛的标准组件。
这些组件和SWT 一样丰富。
基于它良好的可扩展性,除了标准组件,Swing还提供了大量的第三方组件。