VB课程设计报告 14.docx
《VB课程设计报告 14.docx》由会员分享,可在线阅读,更多相关《VB课程设计报告 14.docx(7页珍藏版)》请在冰豆网上搜索。
![VB课程设计报告 14.docx](https://file1.bdocx.com/fileroot1/2022-12/16/8704155b-169c-475a-8602-04c7895413f5/8704155b-169c-475a-8602-04c7895413f51.gif)
VB课程设计报告14
沈阳航空航天大学
课程设计
学号__
班级_____
姓名____
指导教师_____
2011年3月12日
沈阳航空航天大学
课程设计任务书
学院:
机电工程学院专业:
机械设计制造及其自动化班级:
04060101
学号:
2010040601034题目:
“冒泡法”排序的动漫演示
一、课程设计时间
2012年3月5~9日(第一周),共计一周,20学时。
二、课程设计内容
用控件数组技术实现动画,演示用冒泡法对数组(18,12,16,10,11,19)由小到大排序,元素变换的完整过程。
要求:
准备换值的2个元素,使用明显颜色,闪烁效果。
三、课程设计要求
程序质量:
✧贯彻事件驱动的程序设计思想。
✧用户界面友好,功能明确,操作方便;可以增加其它功能或修饰。
✧代码应适当缩进,并给出必要的注释,以增强程序的可读性。
课程设计说明书:
✧课程结束后,上交课程设计说明书和源程序。
课程设计说明书的内容参见提供的模板。
四、指导教师和学生签字
指导教师:
______学生签名:
_____
五、成绩
六、教师评语
目录
需求分析4
设计分析4
技术要点5
主要界面截图6
总结7
完整的源程序8
参考文献12
一.需求分析
题目要求用“冒泡法”对一组数据进行由小到大排序,并且动画演示排序过程中元素变换的过程。
也就是表示,比较相邻两个数大小和交换过程要可见,并用明显的颜色来区分正在比较的两个数字。
颜色的变换、数字的交换实现了动画的效果.
二.设计分析
1·基本原理:
“冒泡法”排序——使用Label,Timer控件。
分别用来进行数组的输入和控制程序的运行。
2·总体设计思想:
(1)从第一个元素开始,对数组中两辆相邻的元素比较,Label(0)与Label
(1)比较,若为逆序,则Label(0)与Label
(1)交换;然后Label
(1)与Label
(2)比较,···,直到最后Label(N-1)与Label(N)比较,这时一轮比较完毕,一个最大的数“沉底”,成为数组中的最后一个元素Label(N),一些较小的数如同气泡一样“上浮”一个位置。
(2)然后对Label(0)与Label(N-1)的N个数进行同
(1)的操作,次最大的数放入Label(N-1)元素内,完成第二轮排序;一次类推,进行N轮排序后,所有的数均有序。
排序结束。
三.技术要点
1.用Timer的interval属性的运用控制程序的运行。
2.多个Timer控件的共同运用
3.按冒泡法的排序规则大数沉底小数上浮,大的数不断后移,达到数字由小到大排列;
4.用蓝色和红色两个明显颜色区分相邻的两个数,比较的两个数凹凸变换达到动画的效果。
5.当数字大小顺序排列结束后弹出对话框提示您程序运行结束。
四.主要界面截图
图1冒泡法排序主界面
五.总结
这次课设我的题目是用冒泡法排序一组数据,通过这次课设我了解了Timer控件的用法,用Timer控件来控制程序的运行次数,用第三变量来进行大小数的交换,最后还用到Msgbox弹出对话框来提示排序结束。
在课设过程中,我遇到了很多问题,例如:
多个Timer空间的配合使用,如何设定时间间隔来控制程序运行速度等等。
通过老师的指点,自己查阅资料,与同学之间交流讨论,不断试运行程序,我解决了困难,顺利的完成了这次课设。
同时我也知道了VB程序的博大精深,它在生活中各个方面都能发挥巨大的作用,所以,学好VB对我们以后的社会生活会有很多的帮助。
总而言之,这次VB课程设计让我受益匪浅,学习到很多以前弄不懂的知识,与此同时,老师的谆谆教导,同学朋友的热心帮助,自己不断的努力,使我在这段时间感触颇深。
这次的课设作业叫我懂得了很多,以后希望有更多的机会,来多多实践自己。
六.完整的源程序
PrivateSubCommand1_Click()
Label1(0).Caption=18
Label1
(1).Caption=12
Label1
(2).Caption=16
Label1(3).Caption=10
Label1(4).Caption=11
Label1(5).Caption=19
EndSub
PrivateSubCommand2_Click()
Timer1.Enabled=True
Timer2.Enabled=True
Timer3.Enabled=True
Timer4.Enabled=True
EndSub
PrivateSubcommand3_click()
End
EndSub
PrivateSubform_load()
Timer1.Enabled=False
Timer2.Enabled=False
Timer3.Enabled=False
Timer4.Enabled=False
Timer5.Interval=200
EndSub
PrivateSubTimer1_Timer()
Statica%'定义交换控制下标
Ifa=5Then
a=0
EndIf
Label1(a).BackColor=vbGreen
Label1(a+1).BackColor=vbGreen'改变欲交换的两个元素的背景颜色变成绿色
IfLabel1(a).Caption>Label1(a+1).CaptionThen
Label1(a).BorderStyle=1:
Label1(a+1).BorderStyle=1'使欲交换的两个元素的样式改变
EndIf
a=a+1
Timer2.Enabled=True
Timer1.Enabled=False
EndSub
PrivateSubtimer2_timer()
Statici%,j%
Ifi=5Then
i=0
EndIf
IfVal(Label1(i).Caption)>Val(Label1(i+1).Caption)Then
j=Label1(i).Caption:
Label1(i).Caption=Label1(i+1):
Label1(i+1)=j'按顺序交换两个元素,使大的一个在后面
Label1(i).BackColor=vbBlue
Label1(i+1).BackColor=vbBlue'使交换中的元素的颜色变成蓝色
EndIf
i=i+1
Timer3.Enabled=True
Timer2.Enabled=False
EndSub
PrivateSubTimer3_Timer()
Staticc%
Ifc=5Then
c=0
EndIf
IfLabel1(c).CaptionLabel1(c).BorderStyle=0:
Label1(c+1).BorderStyle=0
Label1(c).BackColor=vbYellow
Label1(c+1).BackColor=vbYellow'使交换后的元素的颜色变为黄色
EndIf
c=c+1
Timer1.Enabled=True
Timer3.Enabled=False
EndSub
PrivateSubTimer4_Timer()
Dimk%,l%
Fork=0To4
IfLabel1(k).Captionl=l+1'确定最大一个元素排在最后一位
EndIf
Nextk
Ifl=5Then
Timer1.Enabled=False
Timer2.Enabled=False
Timer3.Enabled=False
Timer4.Enabled=False
Fori=0To5
Label1(i).BackColor=vbGreen
Nexti
MsgBox"冒泡法演示结束"
EndIf
EndSub
PrivateSubtimer5_timer()
Callmymove
EndSub
Submymove()
Label2.MoveLabel2.Left+100
IfLabel2.Left>Form1.WidthThenLabel2.Left=0
EndSub
参考文献
[1]龚沛曾.《VisualBasic程序设计教程》.北京:
高等教育出版社,2007.3
[2]沈炜,杨世锡《VisualBasic编程从基础到实践》,北京:
电子工业出版社,2005.9