




已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Vb课程设计题 目 排序演示 专 业 自动化 学 生 姓 名 王 亮 学 号 2012118064 指 导 教 师 王福林 目 录一、设计任务3二、总体设计思路4三、画出程序总体框图4四、系统的调试 6 五、收获体会8六、源代码9 七、主要参考资料23一、设计任务 (1)程序启动后,显示主界面。首先单击“产生10个随机数”按钮来产生10个随机数,并显示在10个文本框中;然后选择一种“演示模式”和“排序方式”,其中演示模式可以直接给出排序结果,也可以通过动画动态演示整个排序过程,排序方式可以按从小到大顺序,也可以按从大到小顺序排序。 (2)在主窗口的空白区单击鼠标右键,弹出快捷菜单。从中选择“排序算法”命令,打开对话框,从中选择一种排序方式,单击不同排序方式时,“算法描述”中简要介绍了这种算法。单击“确定”按钮返回到主窗口,主窗口中最上方框架控件的标题文字显示当前所选的排序算法。 (3)设置完毕,单击“开始排序”按钮(此按钮在生成数据之前是不可用的),启动排序过程。若选择了动画方式,红色背景的文本框表示当前正在比较的元素,黄色的代表已排序的元素,2个运动的文本框表示交换过程。在排序过程中可以调节水平滚动条的位置来控制演示过程的速度。排序结束后程序以消息框的形式报告数据交换的次数。可以使用快捷菜单中的“将数据写入文件”命令将排序后的数据保存到“data.txt”中覆盖原有内容。 (4)选择窗口主菜单中的“颜色设置”命令,主窗口扩大,底部显示“颜色设置”框架,可以对“文本背景色”、“文本前景色”、“已排序元素色”和“交换结点色”进行设置。再选择此命令,窗口恢复到原来的大小。 (5)选择主菜单中的“退出”命令可退出本程序,程序显示消息对话框予以确认。2、 系统总体设计方案排序方法多重窗体窗体编辑器设计界面排 序演示模块代码信息提示框编写代码3、 画出程序整体框图 1.快捷菜单 2.启动后的主界面 3.确认退出对话框 4.颜色设置 5.显示交换次数 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函数的返回值如何的选取,设置。 解决:在对“停止”按钮编码时,一开始未给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(10) Then Text2(0).Text = a(1) Text2(1).Text = a(10) Else Text2(0).Text = a(10) Text2(1).Text = a(1) End If For i = 1 To 10 k = a(i) + k Next i Text2(2).Text = k / 10End If-动态演示结果:If Form1.Optdongtai.Value Then If Form2.Option1.Value Then Timer1.Enabled = True ElseIf Form2.Option2.Value Then Timer1.Enabled = True ElseIf Form2.Option3.Value Then Timer1.Enabled = True ElseIf Form2.Option4.Value Then Timer1.Enabled = True End IfEnd IfEnd Sub暂停运行命令:Private Sub Command4_Click()Dim i%, n%, s%f = FalseTimer1.Enabled = FalseTimer1.Interval = 1000For i = 1 To ns = n + 1Next iSleep (n)End Sub默认:Private Sub Command5_Click()Dim i%For i = 0 To 9Combo1.Text = 蓝色Combo2.Text = 绿色Combo3.Text = 红色Combo4.Text = 黄色Text1(i).BackColor = vbBlueText1(i).ForeColor = vbGreenyanse = vbRedyanse1 = vbYellowNextEnd Sub窗体启动的时候加载的程序:Private Sub Form_Load()Command3.Enabled = FalseCommand4.Enabled = FalseFrame4.Visible = FalseForm2.Option1.Value = TrueEnd Sub快捷菜单:Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)If Button = 2 Then Form1.PopupMenu youjianEnd Sub速度Private Sub HScroll1_Change()Timer1.Interval = HScroll1.SmallchangeEnd Sub菜单退出的按钮:Private Sub mnu_end_Click()Unload Form1Unload Form2End Sub显示设置按钮:Private Sub mnu_set_Click()If mnu_set.Checked = True Then Form1.Height = Form1.Height + 1650 Frame4.Visible = True mnu_set.Checked = FalseElseIf mnu_set.Checked = False Then Form1.Height = Form1.Height - 1650 mnu_set.Checked = TrueEnd IfEnd Sub写入数据:Private Sub shujuxie_Click()Dim i As IntegerOpen App.Path + data.txt For Output As #1For i = 1 To 10 Write #1, a(i);Next iClose #1End Sub显示窗体2:Private Sub suanfa_Click()Form2.ShowEnd Sub时间控件用来动态演示:Private Sub Timer1_Timer()Static k As Integer, j As Integer, linshi As Integer, jiaohuan As Integer, i As IntegerDim X As Integer, m As Singlef = TrueIf f = False Then Exit SubEnd IfIf Form2.Option1.Value Then 比较法排序 If k = 0 Then k = 1 j = 2 End If If j = 11 Then k = k + 1 j = k + 1 End If If a(k) a(j) And Option1.Value Then 交换元素颜色 Text1(k - 1).BackColor = yanse1 Text1(j - 1).BackColor = yanse1 DoEvents Call Sleep(1000) 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(10) Then Text2(0).Text = a(1) Text2(1).Text = a(10) Else Text2(0).Text = a(10) Text2(1).Text = a(1) End If For X = 1 To 10 m = a(X) + m Next X Text2(2).Text = m / 10End Ifj = j + 1 选择法排序ElseIf Form2.Option2.Value Then k = k + 1 linshi = a(k + 1) i = k + 1 If Option1.Value Then For j = k + 1 To UBound(a) If linshi a(j) Then linshi = a(j) i = j End If Next j If a(k) a(i) Then Text1(k - 1).BackColor = yanse1 Text1(i - 1).BackColor = yanse1 DoEvents Sleep (1000) linshi = a(i) a(i) = a(k) a(k) = linshi Text1(k - 1).Text = a(k) Text1(i - 1).Text = a(i) jiaohuan = jiaohuan + 1 Text1(k - 1).BackColor = yanse Text1(i - 1).BackColor = yanse End If End If If Option2.Value Then For j = k + 1 To UBound(a) If linshi a(j) Then linshi = a(j) i = j End If Next j If a(k) a(10) Then Text2(0).Text = a(1) Text2(1).Text = a(10) Else Text2(0).Text = a(10) Text2(1).Text = a(1) End If For X = 1 To 10 m = a(X) + m Next X Text2(2).Text = m / 10 End IfElseIf Form2.Option3.Value Then 插入法排序 i = i + 1 For j = 1 To i If a(i) a(j) And Option2.Value Then Text1(i - 1).BackColor = yanse1 Text1(j - 1).BackColor = yanse1 DoEvents Sleep (1000) linshi = a(i) For k = i To j + 1 Step -1 a(k) = a(k - 1) Next k a(j) = linshi Text1(i - 1).BackColor = yanse Text1(j - 1).BackColor = yanse jiaohuan = jiaohuan + 1 For X = j To i Text1(X - 1).Text = a(X) Next X End If Next j If i = 10 Then i = 0 j = 0 k = 0 Timer1.Enabled = False MsgBox Frame1.Caption & 排序结束 & 交换次数为: & jiaohuan & 次, vbOKOnly + vbInformation, 系统提示 jiaohuan = 0 If a(1) a(10) Then Text2(0).Text = a(1) Text2(1).Text = a(10) Else Text2(0).Text = a(10) Text2(1).Text = a(1) End If For X = 1 To 10 m = a(X) + m Next X Text2(2).Text = m / 10 End IfElseIf Form2.Option4.Value Then 冒泡法排序 j = j + 1 If j = 10 - k Then k = k + 1 j = 1 End If If a(j) a(j + 1) And Option1.Value Then Text1(j - 1).BackColor = yanse1 Text1(j).BackColor = yanse1 DoEvents Sleep (1000) linshi = a(j + 1) a(j + 1) = a(j) a(j) = linshi jiaohuan = jiaohuan + 1 Text1(j - 1).Text = a(j) Text1(j).Text = a(j + 1) Text1(j - 1).BackColor = yanse Text1(j).BackColor = yanse End If If a(j) a(10) Then Text2(0).Text = a(1) Text2(1).Text = a(10) Else Text2(0).Text = a(10) Text2(1).Text = a(1) End If For X = 1 To 10 m = a(X) + m Next X Text2(2).Text = m / 10 End IfEnd IfEnd SubPrivate Sub wenjiandu_Click() 从文件中读取数据Dim i As IntegerOpen App.Path + data.txt For Input As #1For i = 1 To 10 Input #1, a(i) Text1(i - 1).Text = a(i) Next i Command3.Enabled = True Command4.Enabled = TrueEnd Sub比较法排序Private Function bijiao(paixu() As Integer) As IntegerDim k As Integer, j As Integer, linshi As Integerjiaohuan = 0For k = 1 To UBound(paixu) - 1 If Option1.Value Then For j = k To UBound(paixu) If paixu(k) paixu(j) Then linshi = paixu(j) paixu(j) = paixu(k) paixu(k) = linshi End If Next j ElseIf Option2.Value Then For j = k To UBound(paixu) If paixu(k) paixu(j + 1) Then linshi = paixu(j + 1) paixu(j + 1) = paixu(j) paixu(j) = linshi End If Next j ElseIf Option2.Value Then For j = 1 To UBound(paixu) - k If paixu(j) paixu(j) Then linshi = paixu(j) m = j End If Next j If paixu(k) paixu(m) And Option1.Value Then linshi = paixu(m) paixu(m) = paixu(k) paixu(k) = linshi End If If Option2.Value Then linshi = paixu(k + 1) m = k + 1 For j = k + 1 To UBound(paixu) If linshi paixu(j) Then linshi = paixu(j) m = j End If Next j If paixu(k) paixu(m) Then linshi = paixu(m) paixu(m) = paixu(k) paixu(k) = linshi End If End IfNext kEnd Function插入法排序:Private Function charu(paixu() As Integer) As IntegerDim i As Integer, j As Integer, k As Integer, linshi As IntegerFor i = 1 To UBound(paixu) For j = 1 To i If paixu(i) paixu(j) And Option2.Value Then linshi = paixu(i) For k = i To j + 1 Step -1 paixu(k) = paixu(k - 1) Next k paixu(j) = linshi End If Next jNext iEnd Function窗体2的源代码:Option ExplicitPrivate Sub Command1_Click()Form2.Visible = FalseEnd SubPrivate Sub Option1_Click()Text1.Text = Text1.Text = 所谓比较法就是:第一轮从a(1)开始,一次讲A(1)与其后的所有元素逐个进行比较,如果其后的某一个元素比A(1)小,则将两者对调,这样第一轮结束后A(1)中保留的是10个元素中最小的值。然后从A(2)开始进行第二轮比较。Form1.Frame1.Caption = 比较法排序End SubPrivate Sub Option2_Click()Text1.Text = Form1.Frame1.Caption = 选择法排序Text1.Text = 先找出A(2)-A(10)中最小的数,然后与A(1)进行比较,如果比A(1)小则对换;再将A(3)-A(10)最小的数与A(2)比较,以此类推。每次都是从A(I+1)-A(10)中找最小的值与A(I)比较,如果比A(I)小则交换。End SubPrivate Sub Option3_Click()Text1.Text = Form1.Frame1.Caption = 插入法排序Text1.Text = 开始时A(1)的值不变,将A(2)根据大小顺序插入A(1)前或A(1)后;将A(3)根据大小插入到已排序的A(1)和A(2)之前,之间或之后,将A(i)插入到A(1)到A(i-1)中,以此类推。End SubPrivate Sub Option4_Click()Text1.Text = Form1.Frame1.Caption = 冒泡法排序Text1.Text = 依次比较相邻的两个数A(i-1)和A(i)(i=2 to 10),如果A(i-1)A(i),则交换2个元素值。这样一轮下来,A(10)为最大的数;在比较A(i-1)和A(i)(i=2 to 9),比较完毕后,A(9)即为次大值,以此类推。End Sub七、主要参考资料 1、Visual Basic课程设计 王栋主编 北京:清华大学出版社,20042、 Visual Basic 程序设计简明教程(第二版) 龚沛曾主编. 北京:高等教育出版社,2003 3、Visual Basic 实验指导与测试(第二版) 龚沛曾主编北京:高等教育出版社,2003 4、Visual Basic 课程设计题目精选. 王栋主编 南京:东南大学出版社 ,2003源程序代码模块:Option ExplicitPublic Declare Sub Sleep Lib kernel32 (ByVal dwMilliseconds As Long)颜色设置:Private Sub Combo1_Click()Dim i As IntegerSelect Case Combo1.ListIndexCase 0 For i = 0 To 9 Text1(i).BackColor = vbBlue Next iCase 1 For i = 0 To 9 Text1(i).BackColor = vbGreen Next iCase 2 For i = 0 To 9 Text1(i).BackColor = vbRed Next iCase 3 For i = 0 To 9 Text1(i).BackColor = vbYellow Next iEnd SelectEnd SubPrivate Sub Combo2_Click()Dim i As IntegerSelect Case Combo2.ListIndexCase 0 For i = 0 To 9 Text1(i).ForeColor = vbBlue Next iCase 1 For i = 0 To 9 Text1(i).ForeColor = vbGreen Next iCase 2 For i = 0 To 9 T
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年区块链行业区块链技术发展与商业应用前景研究报告
- 2025年共享出行行业技术应用与市场前景研究报告
- 2025年纺织服装行业可再生纤维材料应用前景研究报告
- 2025年生物科技产业创新药研发技术与市场前景分析研究报告
- 2025年生物科技领域市场前景研究报告
- 2025年互联网行业人工智能技术在互联网应用的前景研究报告
- 2025年互联网+长租公寓行业研究报告及未来发展趋势预测
- 2025年汽车智能驾驶行业发展前景展望报告
- 宜宾市2025四川宜宾高新公用事业服务有限公司第二次招聘聘用人员50人笔试历年参考题库附带答案详解
- 国家事业单位招聘2025自然资源实物地质资料中心第二批招聘9人笔试历年参考题库附带答案详解
- 医院搬迁服务投标方案(技术标)
- 《排污许可管理条例》解读
- 高中心理健康北师大版高中上册第课从容面对学习新起点从容面对学习新起点
- 2022年安徽公务员申论考试真题及答案-B卷
- 实验室制度上墙牌
- GB/T 33363-2016预应力热镀锌钢绞线
- GB/T 27696-2011一般起重用4级锻造吊环螺栓
- GB/T 10781.1-2021白酒质量要求第1部分:浓香型白酒
- 2023-瑞幸咖啡vi手册
- 高中必修人教A版高中数学必修1指数函数一 完整版课件PPT
- 法律谈判实务完整版课件全套教学ppt教程
评论
0/150
提交评论