课程设计(论文)-“冒泡法”排序的动画演示.doc_第1页
课程设计(论文)-“冒泡法”排序的动画演示.doc_第2页
课程设计(论文)-“冒泡法”排序的动画演示.doc_第3页
课程设计(论文)-“冒泡法”排序的动画演示.doc_第4页
课程设计(论文)-“冒泡法”排序的动画演示.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

沈 阳 航 空 航 天 大 学 课程设计 学 号 : 班 级 : 9姓 名 : 指导教师 : 2011年 7 月 4 日沈阳航空航天大学设计用纸沈阳航空航天大学课程设计任务书学院:机电工程学院 专业:机械设计制造及其自动化 班级:94060114学号:25 题目:“冒泡法”排序的动画演示一、课程设计时间2011年6月27日7月1日。二、课程设计内容用控件数组技术实现动画演示,用冒泡法对一组随机数据(8个)由小到大排序,演示排序过程中元素变换的完整过程。要求:排序过程中欲交换值的2个元素,使用明显颜色、闪烁效果,并要有延时,延时时间可在界面手动设置。排序过程可以随时停止和继续。三、课程设计要求程序质量: 贯彻事件驱动的程序设计思想。 用户界面友好,功能明确,操作方便;可以增加其它功能或修饰。 代码应适当缩进,并给出必要的注释,以增强程序的可读性。课程设计说明书: 课设结束后,上交课程设计说明书和源程序。课程设计说明书的内容参见提供的模板。四、指导教师和学生签字指导教师: 学生签名: 五、成绩六、教师评语目 录一、需求分析3二、设计分析3三、技术要点3四、总结3五、完整的源程序3六、参考文献3一、需求分析题目要求用“冒泡法”对一组数据进行由小到大排序,并且动画演示排序过程中元素变换的过程。也就是表示,比较相邻两个数大小和交换值得过程要可见,并用明显的颜色来区分正在比较的两个数字。颜色的变换、数字的交换实现了动画的效果。二、设计分析(1)基本原理:冒泡法”排序使用label控件数组,多个timer控件。分别用来进行数组的输入和控制程序的运行。(2)总体设计:从数组第一个数开始,对数组中两个相邻的数比较,即a(0)与a(1)比较,若为逆序,则a(0)与 a(1)交换;然后a(1) 与a(2)比较,直到最后a(n-1) 与a(n)比较,这时一轮比较完毕,一个最大的数“沉底 ”,成为数组中的最后一个元素a(n),一些较小的数如同气泡一样“上浮”一个位置。然后对a(0) 与a(n-1)的n个数进行同(1)的操作,次最大的数放入a(n-1)元素内,完成第二轮排序;依次类推,进行n轮排序后,所有的数均有序。排序结束。三、技术要点(1)产生随机数,并对标签数组赋值private sub command1_click()dim a(9) as integer, n as integerfor n = 1 to 10a(n - 1) = int(n * 10 * rnd + 8 - n) 产生随机数label1(n - 1).caption = a(n - 1) 对个标签赋值next ntimer1.enabled = truetimer2.enabled = falsetimer3.enabled = falsetimer4.enabled = truecommand1.enabled = falsecommand2.enabled = truecommand3.enabled = falsecommand4.enabled = trueend sub图1产生随机数,并对标签数组赋值(2)正在比较的两个数标签颜色分别为红色和绿色static a as integer, b as integerif a = 9 thena = 0: b = b + 1end ifif a + 1 val(label1(i + 1).caption) thenlabel1(i).borderstyle = 1: label1(i + 1).borderstyle = 1 逆序的两个数标签显示边框 j = label1(i).caption: label1(i).caption = label1(i + 1): label1(i + 1) = j 将逆序的两个数调换位置 label1(i).backcolor = qbcolor(14) 改变顺序的两个标签颜色改变label1(i + 1).backcolor = qbcolor(14)end ifi = i + 1timer3.enabled = truetimer2.enabled = falseend sub图3两个label交换数字后颜色变为黄色(4)排序过程中可对时间间隔手动修改private sub command5_click()timer1.interval = val(text1.text)timer2.interval = val(text1.text)timer3.interval = val(text1.text)timer4.interval = val(text1.text)end sub(5)排序结束后,显示对话框private sub timer4_timer()dim k as integer, l as integer, t as integerfor k = 1 to 9if label1(k - 1).caption = label1(k).caption then 对8个数据进行比较 l = l + 1end ifnext kif l = 9 then 10个数据从小到大排列timer1.enabled = falsetimer2.enabled = falsetimer3.enabled = falsetimer4.enabled = falsecommand1.enabled = truecommand2.enabled = falsemsgbox 冒泡法演示结束end 程序结束end ifend sub图4排序结束后,显示对话框四、总结这次课设我的题目是“冒泡法”排序的动画演示。通过这次课设,我加深了对控件数组和多个timer的控制理解,并能熟练地使用它们。在课设过程中,我遇到了重重困难,例如:多个timer控件的配合使用,如何设定时间间隔来控制程序运行速度等等。通过老师的指点,自己查阅资料,与同学之间交流讨论,不断试运行程序,我解决了困难,顺利的完成了这次课设。在课设过程中我认识到重要的不是我们把程序做出来,而是我们思考、编程的过程。这个过程对于锻炼我们的思维,熟练编程过程和方法有着重要作用,对于我们日后工作则更重要。在课设过程中,我想了很多方法对自己的程序做进一步的改进,虽然有的成功了,有的失败了。这次课设也让我认识到了vb在生活实践中的广泛应用。我认识到学好vb对我以后的学习工作有很大的帮助,也我明白了一个道理:只会书本上理论知识而没有实践,在千变万化的实际问题面前你永远都会感到力不从心;没有理论的指导而一味的空想得到的设计永远只会是妄想。所以在今后的学习中,我要学以致用,积极地把自己的所学运用在实际问题的解决上,来培养自己的实践能力,也只有这样我才能够成为一名为社会所需的合格的大学生。五、完整的源程序private sub command1_click()dim a(9) as integer, n as integerfor n = 1 to 10a(n - 1) = int(n * 10 * rnd + 8 - n) 产生随机数label1(n - 1).caption = a(n - 1) 对个标签赋值next ntimer1.enabled = truetimer2.enabled = falsetimer3.enabled = falsetimer4.enabled = truecommand1.enabled = falsecommand2.enabled = truecommand3.enabled = falsecommand4.enabled = trueend subprivate sub command2_click()timer1.enabled = false 冒泡法排序暂停timer2.enabled = falsetimer3.enabled = falsetimer4.enabled = falsecommand3.enabled = truecommand4.enabled = trueend subprivate sub command3_click()timer1.enabled = true 冒泡法排序继续timer2.enabled = falsetimer3.enabled = falsetimer4.enabled = truecommand1.enabled = falsecommand2.enabled = truecommand4.enabled = trueend subprivate sub command4_click()end 程序结束end subprivate sub command5_click()timer1.interval = val(text1.text)timer2.interval = val(text1.text)timer3.interval = val(text1.text)timer4.interval = val(text1.text)end subprivate sub form_load()timer1.enabled = falsetimer2.enabled = falsetimer3.enabled = falsetimer4.enabled = falsecommand1.enabled = truecommand2.enabled = falseend subprivate sub timer1_timer()static a as integer, b as integerif a = 9 thena = 0: b = b + 1end ifif a + 1 val(label1(i + 1).caption) thenlabel1(i).borderstyle = 1: label1(i + 1).borderstyle = 1 逆序的两个数标签显示边框 j = label1(i).caption: label1(i).caption = label1(i + 1): label1(i + 1) = j 将逆序的两个数调换位置 label1(i).backcolor = qbcolor(14) 改变顺序的两个标签颜色改变label1(i + 1).backcolor = qbcolor(14)end ifi = i + 1timer3.enabled = truetimer2.enabled = falseend subprivate sub timer3_timer()static c as integerif c = 9 thenc = 0end ifif label1(c).caption = label1(c + 1).caption thenlabel1(c).borderstyle = 0: label1(c + 1).borderstyle = 0 符合从小到大顺序的标签不显示边框 label1(c).backcolor = &h8000000f 符合从小到大顺序的标签颜色不变label1(c + 1).backcolor = &h8000000fend ifc = c + 1timer1.enabled = truetimer3.enabled = falseend subprivate sub timer4_timer()dim k as integer, l as integer, t as integerfor k = 1 to 9if label1(k - 1).caption = label1(k).caption then 对10个数据进行比较 l = l + 1end ifnext kif l = 9 then 10个数据从小到大排列timer1.enabled =

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论