冒泡法排序的动画演示.docx
- 文档编号:4448395
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:10
- 大小:147.06KB
冒泡法排序的动画演示.docx
《冒泡法排序的动画演示.docx》由会员分享,可在线阅读,更多相关《冒泡法排序的动画演示.docx(10页珍藏版)》请在冰豆网上搜索。
冒泡法排序的动画演示
沈阳航空航天大学
课程设计
学号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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 冒泡 排序 动画 演示