冒泡法排序的动画演示.docx

上传人:b****5 文档编号:4448395 上传时间:2022-12-01 格式:DOCX 页数:10 大小:147.06KB
下载 相关 举报
冒泡法排序的动画演示.docx_第1页
第1页 / 共10页
冒泡法排序的动画演示.docx_第2页
第2页 / 共10页
冒泡法排序的动画演示.docx_第3页
第3页 / 共10页
冒泡法排序的动画演示.docx_第4页
第4页 / 共10页
冒泡法排序的动画演示.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

冒泡法排序的动画演示.docx

《冒泡法排序的动画演示.docx》由会员分享,可在线阅读,更多相关《冒泡法排序的动画演示.docx(10页珍藏版)》请在冰豆网上搜索。

冒泡法排序的动画演示.docx

冒泡法排序的动画演示

沈阳航空航天大学

课程设计

学号2009040301001

班级94030101

姓名邓冉冉

指导教师刘学平

2010年3月18日

沈阳航空航天大学

课程设计任务书

学院:

航宇专业:

飞行器制造工程班级:

94030101

学号:

2009040301001题目:

“冒泡法”排序的动画演示

一、课程设计时间

2011年3月7日~11日(第1周),共计1周。

二、课程设计内容

用控件数组技术实现动画演示,用冒泡法对一组数据(例如:

18,12,16,10,11,19,13,19)由小到大排序,演示排序过程中元素变换的完整过程。

要求:

排序过程中欲交换值的2个元素,使用明显颜色、闪烁效果。

三、课程设计要求

程序质量:

✧贯彻事件驱动的程序设计思想。

✧用户界面友好,功能明确,操作方便;可以增加其它功能或修饰。

✧代码应适当缩进,并给出必要的注释,以增强程序的可读性。

课程设计说明书:

✧课设结束后,上交课程设计说明书和源程序。

课程设计说明书的内容参见提供的模板。

四、指导教师和学生签字

指导教师:

________学生签名:

________

五、成绩

六、教师评语

目录

一、需求分析4

二、设计分析4

三、关键技术6

四、总结10

五、完整的源程序11

六、参考文献14

一、需求分析

冒泡法是对一组数据进行大小排序的方法,用控件数组技术实现动画演示

演示,演示排序过程中元素变换的完整过程。

要求:

1排序过程中欲交换值的2个元素,使用明显颜色、闪烁效果。

2用控件数组技术实现冒泡法排序的动画演示。

3要求冒泡法排序的演示过程必须完整,准确。

二、设计分析

(1)基本原理:

整体运用控件数组技术,引入一组随机数组,进行图形操作,并将随机数组作为图形操作的坐标参数值,运用延时函数制作闪烁效果,形象进行数组的比较与排序。

(2)总体设计:

图1总体设计

(3)详细设计:

图2详细设计

(4)界面设计:

图3界面设计

三、关键技术

(1)对变量进行生声明:

OptionExplicit

Dima(1To6)AsInteger‘引入一维数组,声明变量属性

Dimb(1To6,1To3)AsInteger‘引入二维数组,声明变量属性

Dimi,j,m,k,nAsInteger

Dimx0,y0,x1,y1,rAsInteger

(2)运用控件数组技术,先生成一组随机数组:

程序如下

PrivateSubCommand1_Click(IndexAsInteger)‘命令按钮click事件

SelectCaseIndex

Case0'生成数组

Label1.Caption=""

Fori=1To6‘数组含六个元素

Randomize‘避免生成重复数数组

m=Int(Rnd*10+1)'生成随机数组

Forj=i-1To1Step-1'检验是否有重复数据

Ifa(j)=mThen

m=Int(Rnd*10+1)

EndIf

Nextj

a(i)=m

Label1.Caption=Label1.Caption&""&a(i)

Nexti

(3)进行图像操作,画圆,数组元素为圆半径

Case1‘生成图形

Form1.Picture1.DrawWidth=4‘定义线宽

Form1.Picture1.DrawStyle=6定义线形

x0=-15:

y0=40‘圆心坐标初始值

x1=x0

Fori=1To6

Picture1.ForeColor=QBColor(9)‘圆的颜色为蓝色

Picture1.FillColor=QBColor(9)

x1=x1+30:

b(i,1)=x1'将坐标值与半径设为二维数组

y1=40:

b(i,2)=y1

r=a(i)*1.5:

b(i,3)=r

Picture1.Circle(x1,y1),r‘画圆

Nexti

图4生成图形

(4)引入延时函数制作闪烁效果,将进行比较的两个数颜色改变,并进行位置变换,并建立标准模块对函数进行声明:

Case2‘动画演示

Fori=1To5‘进行i-1次比较

Forj=1To6-i

Calldelay(n)‘制作闪烁效果,引入延时函数

delay(0.5)‘延时0.5秒

Picture1.ForeColor=vbRed‘将进行比较的两个圆变为红色

Picture1.FillColor=vbRed

Picture1.Circle(b(j,1),b(j,2)),b(j,3)

Picture1.Circle(b(j+1,1),b(j+1,2)),b(j+1,3)

delay(0.5)

Picture1.ForeColor=QBColor(9)‘再将其变为蓝色

Picture1.FillColor=QBColor(9)

Picture1.Circle(b(j+1,1),b(j+1,2)),b(j+1,3)

Picture1.Circle(b(j,1),b(j,2)),b(j,3)

Ifa(j)>a(j+1)Then‘如果大小次序不对

m=a(j):

a(j)=a(j+1):

a(j+1)=m‘交换元素

delay

(1)

Picture1.ForeColor=&HC0FFC0‘将进行比较的两个圆擦除

Picture1.FillColor=&HC0FFC0

Picture1.Circle(b(j,1),b(j,2)),b(j,3)

Picture1.Circle(b(j+1,1),b(j+1,2)),b(j+1,3)

m=b(j+1,3):

b(j+1,3)=b(j,3):

b(j,3)=m

Picture1.ForeColor=QBColor(9)‘将半径r交换,重新画圆画圆

Picture1.FillColor=QBColor(9)

Picture1.Circle(b(j+1,1),b(j+1,2)),b(j+1,3)

Picture1.Circle(b(j,1),b(j,2)),b(j,3)

EndIf

Nextj

Nexti

Fork=1To6‘排序结束后

Label2.Caption=Label2.Caption&""&a(k)‘在label2中显示正确的排序

Nextk

Module1‘模块1

PublicSubdelay(ByValnAsSingle)'n表示需要延时的时间

Dimtm1AsSingle,tm2AsSingle‘tm1,tm2代表延时前后的系统时间

tm1=Timer

Do

tm2=Timer

Iftm2-tm1>nThenExitDo‘若系统时间差大于n

DoEvents‘将控制权交给操作系统

Loop

EndSub

图5动画演示

(5)操作结束,清空全部内容:

Case3'清空

Label1.Caption=""

Picture1.Cls‘清除图形

Label2.Caption=""

Case4‘结束

End

EndSelect

EndSub

四、总结

这次课设我的题目是冒泡法的动画演示,通过这次课设让我了解了什么是冒泡法排序,也让我了解了VB如何运用进行动画的制作。

在本次课设中,我受益匪浅,不仅仅将VB限制于课本上的理论知识,更让我有机会对学过的知识进行实际上的应用,将冒泡法进行动画演示这道题对于我来说并不是很容易,在解决这道题的时候遇到了很多问题,我通过多种途径解决了解决了遇到的问题,在老师与同学的耐心帮住下,我终于完成了这道题的变成,在一次次的遇到并解决问题的过程中,我得到了锻炼并有所收获。

在课设中,我们不但可以直接纠正自己的错误,而且完成后特别让人感到有成就感,并且还不容易遗忘。

也就是这么一点点成就感的一点点的累积,让我感到其实学习VB也不是那么枯燥。

同时我也了解了VB的出现是一场技术革命,它在生活中各个方面都能发挥巨大的作用,所以,学好VB是社会发展的需要。

五、完整的源程序

OptionExplicit

Dima(1To6)AsInteger

Dimb(1To6,1To3)AsInteger

Dimi,j,m,k,nAsInteger

Dimx0,y0,x1,y1,rAsInteger

PrivateSubCommand1_Click(IndexAsInteger)

SelectCaseIndex

Case0‘生成数组

Label1.Caption=""

Fori=1To6

Randomize

m=Int(Rnd*10+1)‘生成随机数组

Forj=i-1To1Step-1‘检验是否有重复数据

Ifa(j)=mThen

m=Int(Rnd*10+1)

EndIf

Nextj

a(i)=m

Label1.Caption=Label1.Caption&""&a(i)

Nexti

Case1‘生成图形

Form1.Picture1.DrawWidth=4

Form1.Picture1.DrawStyle=6

x0=-15:

y0=40

x1=x0

Fori=1To6

Picture1.ForeColor=QBColor(9)‘画圆

Picture1.FillColor=QBColor(9)

x1=x1+30:

b(i,1)=x1‘将坐标值与半径设为二维数组

y1=40:

b(i,2)=y1

r=a(i)*1.5:

b(i,3)=r

Picture1.Circle(x1,y1),r

Nexti

Case2‘动画演示

Fori=1To5

Forj=1To6-i

Calldelay(n)‘制作闪烁效果

delay(0.5)

Picture1.ForeColor=vbRed‘将进行比较的两个圆变为红色

Picture1.FillColor=vbRed

Picture1.Circle(b(j,1),b(j,2)),b(j,3)

Picture1.Circle(b(j+1,1),b(j+1,2)),b(j+1,3)

delay(0.5)

Picture1.ForeColor=QBColor(9)‘再将其变为蓝色

Picture1.FillColor=QBColor(9)

Picture1.Circle(b(j+1,1),b(j+1,2)),b(j+1,3)

Picture1.Circle(b(j,1),b(j,2)),b(j,3)

Ifa(j)>a(j+1)Then

m=a(j):

a(j)=a(j+1):

a(j+1)=m‘交换元素

delay

(1)

Picture1.ForeColor=&HC0FFC0‘将进行比较的两个圆擦除

Picture1.FillColor=&HC0FFC0

Picture1.Circle(b(j,1),b(j,2)),b(j,3)

Picture1.Circle(b(j+1,1),b(j+1,2)),b(j+1,3)

m=b(j+1,3):

b(j+1,3)=b(j,3):

b(j,3)=m

Picture1.ForeColor=QBColor(9)‘将半径r交换,画圆

Picture1.FillColor=QBColor(9)

Picture1.Circle(b(j+1,1),b(j+1,2)),b(j+1,3)

Picture1.Circle(b(j,1),b(j,2)),b(j,3)

EndIf

Nextj

Nexti

Fork=1To6

Label2.Caption=Label2.Caption&""&a(k)‘显示正确的排序

Nextk

Case3‘清空

Label1.Caption=""

Picture1.Cls

Label2.Caption=""

Case4‘结束

End

EndSelect

EndSub

六、参考文献

[1]龚沛曾.《VisualBasic程序设计教程》.北京:

高等教育出版社,2007

[2]高春燕.《VisuaBasic程序开发范例宝典》.北京:

人民邮电出版社,2009

[3]郑海春谢维成主编《visualbasic6.0编程及实例分析教程》清华大学出版社2007年4月

[4]夏邦贵刘凡馨.《Visualbasic数据库开发经典实例精解》.北京:

北京机械工业出版社,2005

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 面试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1