
排序演示 vb课程设计论文.doc
23页南京工程学院课课程程设设计计报报告告((论论文文))题题 目目 排排序序演演示示 课课 程程 名名 称称 程程序序设设计计基基础础 ---VB 院院((系系、、部部、、中中心心)) 先先进进制制造造技技术术工工程程中中心心 专专 业业 机机械械制制造造及及其其自自动动化化 班班 级级 D机机加加工工091 学学 生生 姓姓 名名 钱钱丽丽 学学 号号 231090406 设设 计计 地地 点点 图图书书馆馆A307 指指 导导 教教 师师 黄黄陈陈蓉蓉 设设计计起起止止时时间间:: 2011 年年 1月月4 日日至至 2011 年年 1月月 6日日成绩2目目 录录 一一、、设设计计任任 务务·································· ····3 3 二二、、总总体体设设计计思思 路路······························4 4 三三、、画画出出程程序序总总体体框框 图图······················4 4 四四、、系系统统的的调调 试试···························· 6 6 五五、、收收获获体体 会会·································· ····8 8 六六、、源源代代 码码·································· ········9 9 七七、、主主要要参参考考资资 料料······························2 23 33一一、、设设计计任任务务(1) 程序启动后,显示主界面。
首先单击“产生10个随机数 ”按钮来产生10个随机数,并显示在 10个文本框中;然后选择一种“演示模式 ”和“排序方式 ” ,其中演示模式可以直接给出排序结果,也可以通过动画动态演示整个排序过程,排序方式可以按从小到大顺序,也可以按从大到小顺序排序2) 在主窗口的空白区单击鼠标右键,弹出快捷菜单从中选择“排序算法 ”命令,打开对话框,从中选择一种排序方式,单击不同排序方式时,“算法描述 ”中简要介绍了这种算法单击“确定”按钮返回到主窗口,主窗口中最上方框架控件的标题文字显示当前所选的排序算法3) 设置完毕,单击 “开始排序 ”按钮(此按钮在生成数据之前是不可用的),启动排序过程若选择了动画方式,红色背景的文本框表示当前正在比较的元素,黄色的代表已排序的元素,2个运动的文本框表示交换过程在排序过程中可以调节水平滚动条的位置来控制演示过程的速度排序结束后程序以消息框的形式报告数据交换的次数可以使用快捷菜单中的“将数据写入文件”命令将排序后的数据保存到“data.txt”中覆盖原有内容4) 选择窗口主菜单中的 “颜色设置 ”命令,主窗口扩大,底部显示 “颜色设置 ”框架,可以对 “文本背景色 ” 、 “文本前景色 ” 、“已排序元素色 ”和“交换结点色 ”进行设置。
再选择此命令,窗口恢复到原来的大小4((5)) 选择主菜单中的 “退出”命令可退出本程序,程序显示消息对话框予以确认2、、系系统统总总体体设设计计方方案案排序方法多重窗体窗体编辑器设计界面排 序演示 模块代码信息提示框编写代码3、、画画出出程程序序整整体体框框图图1 1. .快捷菜单52 2. .启启动动后后的的主主界界面面3 3. .确确认认退退出出对对话话框框4 4. .颜颜色色设设置置 65 5. .显显示示交交换换次次数数 6 6. .““排排序序算算法法选选择择 ””对对话话框框4、、系系统统的的调调试试1、问题:停止按钮不能使其在开始运行时候停止解决:利用了 Boolean(逻辑变量)定义了一个使程序停止的变量f,然后又定义了一个 Private Declare Sub Sleep Lib “kernel32“ (ByVal dwMilliseconds As Long) ,声明sleep函数,可以使程序暂停一段时间,最后用时钟( timer)来设定所需暂停的随机时间(s) 注意timer函数设置时的 interval值,以毫秒为单位, 1000ms=1s。
2、问题:消息对话框( msgbox)的形式,及 msgbox函数的返回值如何7的选取,设置解决:在对 “停止 ”按钮编码时,一开始未给 msgbox赋值,导致程序不起作用,后来赋值后,采用了msgbox函数里的vbyes与vbno,采用了if...then...else...但程序无法退出,最后只对 vbno做了代码编制,退出程序则采用了 “unload”函数,最后程序终于调试成功3、问题:动态演示如何演变,交换次数无法得到解决:采用timer函数,以时间来对它进行控制,也可以拖得滚动条来控制它动态演示时的速度演示代码: If a(k) > a(j) And Option1.Value ThenText1(k - 1).BackColor = yanse1 '''''''''''''''交换元素颜色Text1(j - 1).BackColor = yanse1DoEventsCall Sleep(1000) 调用了函数 sleeplinshi = a(j)a(j) = a(k)a(k) = linshijiaohuan = jiaohuan + 1Text1(k - 1).Text = a(k)Text1(j - 1).Text = a(j)Text1(k - 1).BackColor = yanse '''''''''''''已经排序的颜色Text1(j - 1).BackColor = yanseEnd IfIf a(k) a(10) ThenText2(0).Text = a(1)12Text2(1).Text = a(10)ElseText2(0).Text = a(10)Text2(1).Text = a(1)End IfFor i = 1 To 10k = a(i) + kNext iText2(2).Text = k / 10 End If ----------------------------------------------------------------------------------------- 动态演示结果: If Form1.Optdongtai.Value ThenIf Form2.Option1.Value ThenTimer1.Enabled = TrueElseIf Form2.Option2.Value ThenTimer1.Enabled = TrueElseIf Form2.Option3.Value ThenTimer1.Enabled = TrueElseIf Form2.Option4.Value ThenTimer1.Enabled = TrueEnd If End If End Sub 暂停运行命令: Private Sub Command4_Click() Dim i%, n%, s% f = False Timer1.Enabled = False Timer1.Interval = 1000 For i = 1 To n s = n + 1 Next i Sleep (n) End Sub 默认: Private Sub Command5_Click() Dim i% For i = 0 To 9 Combo1.Text = “蓝色 “ Combo2.Text = “绿色 “ Combo3.Text = “红色 “ Combo4.Text = “黄色 “ Text1(i).BackColor = vbBlue13Text1(i).ForeColor = vbGreen yanse = vbRed yanse1 = vbYellow Next End Sub 窗体启动的时候加载的程序: Private Sub Form_Load() Command3.Enabled = False Command4.Enabled = False Frame4.Visible = False Form2.Option1.Value = True End Sub 快捷菜单: 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 速度 Private Sub HScroll1_Change() Timer1.Interval = HScroll1.Smallchange End Sub 菜单退出的按钮: Private Sub mnu_end_Click() Unload Form1 Unload Form2 End Sub 显示设置按钮: Private Sub mnu_set_Click() If mnu_set.Checked = True ThenForm1.Height = Form1.Height + 1650Frame4.Visible = Truemnu_set.Checked = False ElseIf mnu_set.Checked = False ThenForm1.Height = Form1.Height - 1650mnu_set.Checked = True End If End Sub 写入数据: Private Sub shujuxie_Click() Dim i As Integer Open App.Path + “\data.txt“ For Output As #1 For i = 1 To 10Write #1, a(i); Next i Close #114End Sub 显示窗体 2: Private Sub suanfa_Click() Form2.Show End Sub 时间控件用来动态演示: Private Sub Timer1_Timer() Static k As Integer, j As Integer, linshi As Integer, jiaohuan As Integer, i As Integer Dim X As Integer, m As Single f = True If f = False ThenExit Sub End If If Form2.Option1.Value Then 比较法排序If k = 0 Thenk = 1j = 2End IfIf j = 11 Thenk = k + 1j = k + 1End IfIf a(k) > a(j) And Option1.Value Then 交换元素颜色Text1(k - 1).BackColor = yanse1Text1(j - 1).BackColor = yanse1DoEventsCall Sleep(1000)linshi = a(j)a(j) = a(k)a(k) = linshijiaohuan = jiaohuan + 1Text1(k - 1).Text = a(k)Text1(j - 1).Text = a(j)Text1(k - 1).BackColor = yanse 已经排序的元素颜色Text1(j - 1).B。












