vb课程设计论文-排序演示
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Vb课程设计
题目排序演示
专业自动化
学生姓名
学号
指导教师
目录
一、设计任务 (3)
二、总体设计思路 (4)
三、画出程序总体框图 (4)
四、系统的调试 (6)
五、收获体会 (8)
六、源代码 (9)
七、主要参考资料 (23)
一、设计任务
(1)程序启动后,显示主界面。首先单击“产生10个随机数”按钮来产生10个随机数,并显示在10个文本框中;然后选择一种“演示模式”和“排序方式”,其中演示模式可以直接给出排序结果,也可以通过动画动态演示整个排序过程,排序方式可以按从小到大顺序,也可以按从大到小顺序排序。
(2)在主窗口的空白区单击鼠标右键,弹出快捷菜单。从中选择“排序算法”命令,打开对话框,从中选择一种排序方式,单击不同排序方式时,“算法描述”中简要介绍了这种算法。单击“确定”按钮返回到主窗口,主窗口中最上方框架控件的标题文字显示当前所选的排序算法。
(3)设置完毕,单击“开始排序”按钮(此按钮在生成数据之前是不可用的),启动排序过程。若选择了动画方式,红色背景的文本框表示当前正在比较的元素,黄色的代表已排序的元素,2个运动的文本框表示交换过程。在排序过程中可以调节水平滚动条的位置来控制演示过程的速度。排序结束后程序以消息框的形式报告数据交换的次数。可以使用快捷菜单中的“将数据写入文件”命令将排序后的数据保存到“data.txt”中覆盖原有内容。
(4)选择窗口主菜单中的“颜色设置”命令,主窗口扩大,底部显示“颜色设置”框架,可以对“文本背景色”、“文本前景色”、“已排序元素色”和“交换结点色”进行设置。再选择此命令,窗口恢复到原来的大小。
(5)选择主菜单中的“退出”命令可退出本程序,程序显示消息对话框予以确认。
二、系统总体设计方案
三、画出程序整体框图
1.快捷菜单
排序方法多重窗体窗体编辑器
设计界面
排
序
演
示
模块代码
信息提示框
编写代码
2.启动后的主界面
3.确认退出对话框
4.颜色设置
5.显示交换次数
6.“排序算法选择”对话框
四、系统的调试
1、问题:停止按钮不能使其在开始运行时候停止。
解决:利用了Boolean(逻辑变量)定义了一个使程序停止的变量f,然后又定义了一个Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) ,声明sleep函数,可以使程序暂停一段时间,最后用时钟(timer)来设定所需暂停的随机时间(s)。注意timer函数设置时的interval值,以毫秒为单位,1000ms=1s。
2、问题:消息对话框(msgbox)的形式,及msgbox函数的返回值如何的
选取,设置。
解决:在对“停止”按钮编码时,一开始未给msgbox赋值,导致程序不起作用,后来赋值后,采用了msgbox函数里的vbyes与vbno,采用了if...then...else...但程序无法退出,最后只对vbno做了代码编制,退出程序则采用了“unload”函数,最后程序终于调试成功。
3、问题:动态演示如何演变,交换次数无法得到。
解决:采用timer函数,以时间来对它进行控制,也可以拖得滚动条来控制它动态演示时的速度。
演示代码:If a(k) > a(j) And Option1.Value Then
Text1(k - 1).BackColor = yanse1 '''''''''''''''交换元素颜色
Text1(j - 1).BackColor = yanse1
DoEvents
Call Sleep(1000) 调用了函数sleep
linshi = a(j)
a(j) = a(k)
a(k) = linshi
jiaohuan = jiaohuan + 1
Text1(k - 1).Text = a(k)
Text1(j - 1).Text = a(j)
Text1(k - 1).BackColor = yanse '''''''''''''已经排序的颜色
Text1(j - 1).BackColor = yanse
End If
If a(k) < a(j) And Option2.Value Then
Text1(k - 1).BackColor = yanse1
Text1(j - 1).BackColor = yanse1
linshi = a(j)
a(j) = a(k)
a(k) = linshi
jiaohuan = jiaohuan + 1
DoEvents
Sleep (1000)
Text1(k - 1).Text = a(k)
Text1(j - 1).Text = a(j)
Text1(k - 1).BackColor = yanse
Text1(j - 1).BackColor = yanse
End If
If k = 9 Then
j = 0
k = 0
Timer1.Enabled = False
MsgBox Frame1.Caption & "排序结束" & "共用" & jiaohuan & "次", vbOKOnly + vbInformation, "系统提示"
4、问题:快捷菜单无法弹出。
解决:设计到了窗体编辑器,及弹出菜单所使用的方法PopupMenu。
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, x As Single, Y As Single)
If Button = 2 Then Form1.PopupMenu youjian '''右键弹出菜单
End Sub
五、收获体会
这是我进入大学以来第一次学习vb,第一次知道了什么是vb,第一次了解到了原来平时我们看到计算机上那些普普通通的小程序需要那么多的代码才能够运行起来,终于发现这其中的奥秘。
学习vb首先就是要对所有常用函数了如指掌,这样在编程的时候才能够很快想到并用对地方,做这个程序设计的一开始,简直是一头雾水,无从下手,后来经过翻书,查找资料,网上资料,等等...终于对所要编的程序有了一定的认识,在同学互相讨论的基础上,终于编出排序演示,但是还存在不足,在动态演示的时候,缺了正在交换文本框的动态形式,但是基本能运行起来,大致的符合了设计任务。
程序中所涉及的内容很多,有比较法排序,插入法排序,冒泡发排序,选择法排序,集合了所有的排序,以前对排序的编程就有点不理解,因为它很绕,真正理解它真的有点困难。还有一些我们vb书上第七章的一些窗体编辑器,快捷菜单的做法,定时器的编码,这些更加巩固了我对这些知识的理解,通过这几天对vb的深入研究,发