模拟查找过程_第1页
模拟查找过程_第2页
模拟查找过程_第3页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

1、模拟查找过程设计报告学院材料学院班级 材料074 学号 072017姓名 韩世超成绩、设计思路1. 要达到的目的(1)基本目的:能够完成一批数据的输入并显示,使用Label控件数组显示。对线性查找和折半查找两种算法过程进行模拟。使用Label控件设置查找过程的指针,线性查找只需1个指针,而折半查找需要 3个,在模拟查找的过程中,要求指针动态改变位置,需要用到Timer控件,时间间隔为1秒。除了使用Option控件进行查找方法的选择,还可以使用菜单项进行选择。查找结果的查询要求使用菜单命令调用另一窗体来实现。查找结果的显示可以将找到的数据用特殊的颜色标识出来。(2)创新目的: 如果输入的目标数据

2、不是数字,可以检测并使输入框获得焦点。如果没有找到数据,在查找结果的窗体中作相应的提示。 检测输入的数据,如果不正确那么提示再次输入。 折半查找中批数据必须是有序的,可以对输入的数据进行验证,如果顺序不对,要重新输入。折半查找中如果批数据中有重复数据,可以找到并标出重复数据及位置。如1 23 45556 78 92关键问题的解决1、在Formoad事件中,让数字指针不可见。2、在批数据的输入中,用 INPUTBOX函数进行输入,并显示到标签控件数组上。3、 将批数据的背景颜色设置为最开始的颜色。如果选择的是线性查找,则使1个Label控件指针可见,否则应使3个Label控件指针可见,并根据 查

3、找方法指向相应的初始位置。然后启动Timer1控件。(1)折半查找时指针初始位置如下,由于高度是固定不变的,这里不用考虑。=Label1(nMin).Left + Label1(nMin).Width / 2 -/ 2=Label1( nH alf).Left + Label1( nH alf).Width / 2 -/ 2=Label1( nM ax).Left + Label1( nM ax).Width / 2 -/ 2(2)线性查找时的指针位置设置如下:=Label1( nIn dex).Left + Label1( nIn dex).Width / 2 -/ 2、模块之间的调用关系,

4、或程序流程图三、部分程序关键源代码及注释Private Sub tmer_half_Timer()折半查找过程=Label1( nMin ).Left + Label1( nMin) .Width / 2 -/ 2=Label1( nHalf).Left + Label1( nHalf).Width / 2 -/ 2=Label1( nM ax).Left + Label1( nM ax).Width / 2 -/ 2按升序排列时的查找检验最小值是否为目标值If n lsOrdered( nNum, n Total_Num) = ORDER_UP ThenIf nNum(nMin) = n T

5、arget Then=+ 查找到目标数字” & nTarget & ”位于第” & nMin + 1 & ”位置” & vbCrLfLabel1(nMin).BackColor = RGB(O, 255, 0) bHasF ound = TrueEnd IfIf n Num( nM ax) = n Target The n检验最大值是否是目标值=+ 查找到目标数字” & nTarget & ”位于第” & nMax + 1 & ”位置” & vbCrLfLabel1( nM ax).BackColor = RGB(0, 255, 0)bHasF ound = TrueEnd IfIf n Nu

6、m( nHalf) = n Target The n检验中间值是否是目标值=+ 查找到目标数字” & nTarget & ”位于第” & nHalf + 1 & ”位置” & vbCrLfLabel1( nH alf).BackColor = RGB(0, 255, 0)nMax = nMax -1可以实现重复数据的查找nH alf = (nMin + nM ax) / 2bHasFound = TrueElseIf nNum(nHalf) nTarget Then nMax = nHalf nHalf = (nMin + nMax) / 2End IfIf nMax - nMin = 1 T

7、hen= True= FalseIf bHasFound = False Then= + 没有查找到目标数字End IfEnd IfEnd IfEnd Sub折半查找的过程Private Sub tmer_line_Timer() 线性查找= Label1(nIndex).Left + Label1(nIndex).Width / 2 -/ 2If nNum(nIndex) = nTarget ThenbHasFound = TrueLabel1(nIndex).BackColor = RGB(0, 255, 0)= + 查找到目标数字 & nTarget & 位于第 & nIndex + 1

8、End IfnIndex = nIndex + 1If nIndex nTotal_Num ThennIndex = 0= FalseIf bHasFound = False Then查找到目标数字& 位置 & vbCrLf未查到目标数字的处理End If= 没有找到目标数字= TrueEnd IfEnd Sub四、设计方案的完善及目前存在的问题1设计方案要完善的地方折半查找时, 如果输入了无序数据则要求重新输入, 输入量较大。 如果编辑程序使其实现自动排序将会 使程序更加合理。2. 目前存在的问题折半查找时,由于时钟控件的作用,查找结果可能会在窗体中重复显示。五、本次设计的收获及心得体会通过本次 VB 课程设计, 我不但在程序阅读和编辑方面得到很大的提高, 而且他还增加了我对于计算机 软件的兴趣,为我打开了通往精彩的“程序”世界的大门。程序的成功运行需要无数次的调试,这个过程需 要的是耐心与细心的品质, VB 课程设计再次告诉我,要有耐心与细心才能攻克我们面前的难关,不论是课 程中的还是生活中的。六、对该题目和 VB 设计的意见和建议1. 对该题目的意见和建议此题目有效地提高了学生综合利用 VB语

温馨提示

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

评论

0/150

提交评论