您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > 排序演示-vb课程设计论文
南京工程学院课程设计报告(论文)题目排序演示课程名称程序设计基础---VB院(系、部、中心)先进制造技术工程中心专业机械制造及其自动化班级D机加工091学生姓名钱丽学号231090406设计地点图书馆A307指导教师黄陈蓉设计起止时间:2011年1月4日至2011年1月6日成绩2目录一、设计任务···················3二、总体设计思路···············4三、画出程序总体框图···········4四、系统的调试··············6五、收获体会···················8六、源代码·····················9七、主要参考资料···············233一、设计任务(1)程序启动后,显示主界面。首先单击“产生10个随机数”按钮来产生10个随机数,并显示在10个文本框中;然后选择一种“演示模式”和“排序方式”,其中演示模式可以直接给出排序结果,也可以通过动画动态演示整个排序过程,排序方式可以按从小到大顺序,也可以按从大到小顺序排序。(2)在主窗口的空白区单击鼠标右键,弹出快捷菜单。从中选择“排序算法”命令,打开对话框,从中选择一种排序方式,单击不同排序方式时,“算法描述”中简要介绍了这种算法。单击“确定”按钮返回到主窗口,主窗口中最上方框架控件的标题文字显示当前所选的排序算法。(3)设置完毕,单击“开始排序”按钮(此按钮在生成数据之前是不可用的),启动排序过程。若选择了动画方式,红色背景的文本框表示当前正在比较的元素,黄色的代表已排序的元素,2个运动的文本框表示交换过程。在排序过程中可以调节水平滚动条的位置来控制演示过程的速度。排序结束后程序以消息框的形式报告数据交换的次数。可以使用快捷菜单中的“将数据写入文件”命令将排序后的数据保存到“data.txt”中覆盖原有内容。(4)选择窗口主菜单中的“颜色设置”命令,主窗口扩大,底部显示“颜色设置”框架,可以对“文本背景色”、“文本前景色”、“已排序元素色”和“交换结点色”进行设置。再选择此命令,窗口恢复到原来的大小。4(5)选择主菜单中的“退出”命令可退出本程序,程序显示消息对话框予以确认。二、系统总体设计方案三、画出程序整体框图1.快捷菜单排序方法多重窗体窗体编辑器设计界面排序演示模块代码信息提示框编写代码52.启动后的主界面3.确认退出对话框4.颜色设置65.显示交换次数6.“排序算法选择”对话框四、系统的调试1、问题:停止按钮不能使其在开始运行时候停止。解决:利用了Boolean(逻辑变量)定义了一个使程序停止的变量f,然后又定义了一个PrivateDeclareSubSleepLibkernel32(ByValdwMillisecondsAsLong),声明sleep函数,可以使程序暂停一段时间,最后用时钟(timer)来设定所需暂停的随机时间(s)。注意timer函数设置时的interval值,以毫秒为单位,1000ms=1s。2、问题:消息对话框(msgbox)的形式,及msgbox函数的返回值如何的7选取,设置。解决:在对“停止”按钮编码时,一开始未给msgbox赋值,导致程序不起作用,后来赋值后,采用了msgbox函数里的vbyes与vbno,采用了if...then...else...但程序无法退出,最后只对vbno做了代码编制,退出程序则采用了“unload”函数,最后程序终于调试成功。3、问题:动态演示如何演变,交换次数无法得到。解决:采用timer函数,以时间来对它进行控制,也可以拖得滚动条来控制它动态演示时的速度。演示代码:Ifa(k)a(j)AndOption1.ValueThenText1(k-1).BackColor=yanse1'''''''''''''''交换元素颜色Text1(j-1).BackColor=yanse1DoEventsCallSleep(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=yanseEndIfIfa(k)a(j)AndOption2.ValueThenText1(k-1).BackColor=yanse1Text1(j-1).BackColor=yanse1linshi=a(j)a(j)=a(k)a(k)=linshijiaohuan=jiaohuan+1DoEventsSleep(1000)Text1(k-1).Text=a(k)Text1(j-1).Text=a(j)Text1(k-1).BackColor=yanseText1(j-1).BackColor=yanseEndIf8Ifk=9Thenj=0k=0Timer1.Enabled=FalseMsgBoxFrame1.Caption&排序结束&共用&jiaohuan&次,vbOKOnly+vbInformation,系统提示4、问题:快捷菜单无法弹出。解决:设计到了窗体编辑器,及弹出菜单所使用的方法PopupMenu。PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,xAsSingle,YAsSingle)IfButton=2ThenForm1.PopupMenuyoujian'''右键弹出菜单EndSub五、收获体会这是我进入大学以来第一次学习vb,第一次知道了什么是vb,第一次了解到了原来平时我们看到计算机上那些普普通通的小程序需要那么多的代码才能够运行起来,终于发现这其中的奥秘。学习vb首先就是要对所有常用函数了如指掌,这样在编程的时候才能够很快想到并用对地方,做这个程序设计的一开始,简直是一头雾水,无从下手,后来经过翻书,查找资料,网上资料,等等...终于对所要编的程序有了一定的认识,在同学互相讨论的基础上,终于编出排序演示,但是还存在不足,在动态演示的时候,缺了正在交换文本框的动态形式,但是基本能运行起来,大致的符合了设计任务。程序中所涉及的内容很多,有比较法排序,插入法排序,冒泡发排序,选择法排序,集合了所有的排序,以前对排序的编程就有点不理解,因为它很绕,真正理解它真的有点困难。还有一些我们vb书上第七章的一些窗体编辑器,快捷菜单的做法,定时器的编码,这些更加巩固了我对这些知识的理解,通过这几天对vb的深入研究,发9现其实慢慢的对vb产生了兴趣,从以前的没兴趣到产生兴趣,这是一种好的现象,兴趣是最好的老师,相信我会越学越好的。六、源代码模块:OptionExplicitPublicDeclareSubSleepLibkernel32(ByValdwMillisecondsAsLong)颜色设置:PrivateSubCombo1_Click()DimiAsIntegerSelectCaseCombo1.ListIndexCase0Fori=0To9Text1(i).BackColor=vbBlueNextiCase1Fori=0To9Text1(i).BackColor=vbGreenNextiCase2Fori=0To9Text1(i).BackColor=vbRedNextiCase3Fori=0To9Text1(i).BackColor=vbYellowNextiEndSelectEndSubPrivateSubCombo2_Click()DimiAsIntegerSelectCaseCombo2.ListIndexCase0Fori=0To9Text1(i).ForeColor=vbBlueNextiCase1Fori=0To9Text1(i).ForeColor=vbGreenNexti10Case2Fori=0To9Text1(i).ForeColor=vbRedNextiCase3Fori=0To9Text1(i).ForeColor=vbYellowNextiEndSelectEndSubPrivateSubCombo3_Click()SelectCaseCombo3.ListIndexCase0yanse=vbBlueCase1yanse=vbGreenCase2yanse=vbRedCase3yanse=vbYellowEndSelectEndSubPrivateSubCombo4_Click()SelectCaseCombo4.ListIndexCase0yanse1=vbBlueCase1yanse1=vbGreenCase2yanse1=vbRedCase3yanse1=vbYellowEndSelectEndSub退出按钮:PrivateSubCommand1_Click()IfMsgBox(您真的要退出吗?,4+32,请您确认!)=vbNoThenExitSubEndIfUnloadForm111UnloadForm2EndSub产生随机数:PrivateSubCommand2_Click()DimiAsIntegerRandomizeTimeFori=1To10a(i)=Rnd*200Text1(i-1).Text=a(i)NextiCommand3.Enabled=TrueCommand4.Enabled=TrueEndSub开始排序直接给出排序结果:PrivateSubCommand3_Click()DimiAsInteger,kAsSingleIfForm1.Optzhijie.ValueThenIfForm2.Option1.ValueThenCallbijiao(a)Fori=1To10Text1(i-1).Text=a(i)NextElseIfForm2.Option2.ValueThenCallxuanze(a)Fori=1To10Text1(i-1).Text=a(i)NextElseIfForm2.Option3.ValueThenCallcharu(a)Fori=1To10Text1(i-1).Text=a(i)NextElseIfForm2.Option4.ValueThenCallmaopao(a)Fori=1To10Text1(i-1).Text=a(i)NextEndIfIfa(1)a(10)ThenText2(0).Text=a(1)Text2(1).Text=a(10)ElseText2(0).Text=a(10)Text2(1).Text=a(1)12EndIfFori=1To10k=a(i)+kNextiText2(2).Text=k/10EndIf-----------------------------------------------------------------------------------------动态演示结果:IfForm1.Optdongtai.ValueThenIfForm2.Option1.ValueThenTimer1.Enabled=TrueElseIfForm2.Option2.ValueThenTimer1.Enabled=TrueElseIfForm2.Option3.ValueThenTimer1.Enabled=TrueElseIfForm2.Option4.ValueThenTimer1.Enabled=TrueEndIfEndIfEndSub暂停运行命令:PrivateSubCommand4_Click()Dimi%,n%,s%f=FalseTimer1.Enabled=FalseTimer1.Interval=1000Fori=1Tons=n+1NextiSleep(n)EndSub默认:PrivateSubCommand5_Click()Dimi%Fori=0To9Combo1.
本文标题:排序演示-vb课程设计论文
链接地址:https://www.777doc.com/doc-1538788 .html