VB代码彩票选号小助手附详细解释.doc
目录一目的和任务3二开发环境5三窗体的详细设计6四程序的运行结果和代码9五. 分析和体会实验中碰到的问题及解决方法19六总结20七参考文献21一 目的和任务1.目的:(1)为配合Visual Basic程序设计教程课程的教学,希望通过本课程的设计,使学生能够在掌握Visual Basic的基础知识、基本概念之后提高综合运用所学知识编制实用程序的能力,将理论教学中设计的知识和实际应用贯穿起来,以达到对所学知识熟练掌握、灵活运用的目的。对于给定的设计题目,知道如何进行分析、理解,以做到思路清晰.(2)懂得如何将一个大问题进行模块分解,领会结构程序设计的方法,并深刻认识到面向对象程序设计与面向过程程序设计的区别.(3)熟练掌握VB常用控件的使用,灵活运用各种数据类型.(4)进一步掌握在集成环境下调试程序和修改程序的方法和技巧. (5)使用Visual basic开发环境进行程序开发(6)提出系统的设计方案;(7)编写源程序代码并进行调试。(8)在基本要求达到后,可进行创新设计。课程设计报告的撰写要求表述简明,图表准确。报告按如下内容和顺序用A4纸进行打印并装订成册。(9)要按照书稿的规格打印与写课程设计论文 (10)论文包括目录、功能描述、设计思路、具体实现、运行调试与分析讨论、设计体会与小结、参考文献、附录(源代码)等 (11)课程设计论文装订按学校的统一要求完成2.任务在Windows环境下是以事件驱动方式运行每个对象的都能响应多个区别事件,每个事件都能驱动段代码事件过程,该代码决定了对象功事件该事件中代码就会被执行,若用户未进行任何操作(未触发事件)则就处于等待状态整个应用就是由彼此独立事件过程构成,VB为编程提供了个集成开发环境在这个环境中编程者可设计界面、编写代码、调试直至把应 用编译成可在Windows中运行可执行文件并为它生成安装VB集成开发环境为编程者提供了很大方便 用v b设计出来的彩票选号小助手就是用v b设计程序的集成开发环境在这个环境中编程者设计界面、编写代码、调试直至把应用编译成可在Windows中运行可执行用于彩票选号的程能。通常称这种机制为事件驱动的编程机制。可由用户操作触发也可以由系统或应用触发例如单击个命令按钮就触发了按钮Click(单击)序。二开发环境 1.硬件环境CPU英特尔 Core i3-2310M (双核)主板宏碁 JE30 (英特尔 HM65 (Cougar Point) B3)内存2 GBytes显卡英特尔 HD Graphics 3000 (Sandy Bridge GT2)硬盘WDC WD5000BPVT-22HXZT1显示器AU Optronics 未知 Model: AUO322C网卡Atheros AR5B97 Wireless 网络 Adapter声卡英特尔 Cougar Point PCH - High Definition 音频设备 控制器 B22 软件环境Basic指的是beginner sall-purpose symbolic instruction code,一种在计算机技术发展历史上应用最为广泛的语言。Visual Basic不仅是Visual Basic编程语言。Visual Basic编程系统和VBA都使用这一语言。 Visual Basic6.0包括三种版本,分别为学习版、专业版和企业版3三种版本,满足不同的开发要求。3种版本中,企业版功能最全,专业版包括了学习版的功能。VB具有丰富数据类型是种符合结构化设计思想语言,VB采用了面对对象的思想,它基本思路是把复杂的设计问题分解为多个能够完成独立功能且相对简单的对象集合。所谓“对象”就是个可操作实体如窗体、窗体中命令按钮、标签、文本框等,面向对象编程就是指程序员可根据界面设计要求直接在界面上设计出窗口、菜单、按钮等类型对象并为每个对象设置属性在。 VB为编程提供了一个集成开发。在这个环境中中,编程者可以设计界面、编写代码、调试程序,直至把应用程序编译成可在WINDOWS中运行的可执行文件,并为他生成安装程序。 VB具有丰富的数据类型,是一种符合结构化程序设计思想的语言,而且简单易学。 VB利用数据控件可以访问多种数据库。VB6.0提供的ADO控件,不但可以用最少的代码实现数据库操作和控制,也可以取代DATA控件等数据。 VB的核心是对对象的连接与嵌入技术的支持,它是访问所有对象的方法。利用OLE技术,能够开发集成声音、图像、动画、字处理,WED等对象于一体的程序。 VB6.0提供了DYNAMIC HYML设计工具。用户利用这种技术可以动态创建和编辑WEB页面,在VB中开发多功能网络应用软件。 VB提供了多种导向,如应用程序导向。安装导向、数据对象导向和数据窗体导向,通过他们可以创建不同类型、不同功能的应用程序。利用动态数据交换的编程技术,VB开发的应用程序能与其他WINDOWS应用程序之间建立数据通信。通过动态链接技术,在VB程序中方便的调用用C语言或汇编语言编写的函数,也可调用WINDOWS的应用程序接函数。 在VB中,利用帮助菜单和F1功能键,用户可随时方便得到所需要的帮助信息。VB帮主窗口中显示了有关的事例代码,通过复制、粘贴操作可获取大量的示例代码,为用户的学习和使用提供方便Windows 7 操作系统,SQL数据库,visual basic 6.0 专业版三 窗体的详细设计在启动窗口中单击“体育彩票”按钮后,进入体彩传统型电脑彩票的选号窗口。在该窗口中,每一注可单独投注,也可一次产生5注号码。单击“开始”按钮,则单选框所对应的那一注的各个号码开始滚动,当单击“停止”按钮后,左边窗口中的号码从左到右依次停止滚动,产生一注号码,其中最右边的特别号码只能是04中的一个。在福利彩票选好窗体中单击右边的单选框选择投注的注数时,左边的“幸运号码”区会相应地做出调整。如选择三注,则只显示三行空格。单击“清除”按钮,则清除显示内容,以便进行下次投注,单击“返回”则返回到启动窗口。1.程序启动窗口界面2.体育彩票界面3.福利彩票界面根据题目要求,设计一个 供彩民买彩票时投注选号的程序(即自动生成投注号,不是开奖程序)。 目前我国发行的彩票主要有两大类,即体育彩票和福利彩票,每一类彩票都有多种投注方法。窗体1中设计三个命令按钮,第一个命令按钮控制的是窗体2(传统型体育彩票),点击该命令按钮应该弹出窗体2,窗体1隐藏;第二个命令按钮控制的是窗体3(35选7电脑福利彩票),点击该命令按钮的时候弹出窗体3,窗体1隐藏 在窗体2中需要实现这个目的,彩民自己选一个彩票号码,由6位数号码(自0、1、2、3、4、5、6、7、8、9中选出)和一个特别号码(自0、1、2、3、4中选出)组成。即6位自然数号码为000000999999共100万个号码。特别号码为04共5个自然数,特别号码放在6位自然数号码后,与6位数自然数号码不形成排列或顺序关系。根据这些,建立两个框架,在第一个框架中,建立7个text控件数组;在第二个框架中设计option控件数组,为了实现数字的滚动,建立7个计时器,另外建立了四个命令按钮,分别为开始、停止、自动、返回主界面,在这需注意,开始和停止两个命令不能同时使用。窗体3需要实现的目的是在135共35个自然数中选择任何7个数组合成1注进行投注,单注中数字不能重复出现,电脑机选最少1注,最多5注,这5注号码不能重复。 根据这些要求,首先建立两个框架,然后在第一个框架中设计Text的控件数组,一共35个;在第二个框架中建立5个option;另外需要建立三个命令按钮,分别是开始、清楚、返回主界面。 通过利用vb6.0设计程序。打开vb6.0程序,设计彩票选号程序界面,在一个工程中生成三个form窗体,分别对各个窗体进行界面控件设计,再对各个控件进行代码编写。四 程序的运行结果和代码返回清除开始返回自动开始福利彩票体育彩票彩票选号小助手1.流程图停止2.运行结果:3.代码:frmload窗口Option ExplicitPrivate Sub Command1_Click() frmTC1.Show Unload MeEnd SubPrivate Sub Command3_Click() frmFC1.Show Unload MeEnd SubPrivate Sub Command5_Click() Unload MeEnd SubfrmTC1窗口Dim start As BooleanDim manu As BooleanDim auto As BooleanDim base As IntegerDim sTime As SingleDim sDiff As SinglePrivate Sub cmdAuto_Click() cmdAuto.Enabled = False auto = True For i = 0 To 4 If Not auto Then Exit For End If option1(i) = True sTime = Timer sDiff = Rnd * 0.5 + 0.2 cmdStart_Click Next auto = False start = False cmdStart.Enabled = True cmdAuto.Enabled = True cmdStop.Enabled = False cmdStart.SetFocus option1(0) = TrueEnd SubPrivate Sub cmdEnd_Click() manu = False start = False auto = False Unload Me frmLoad.ShowEnd SubPrivate Sub cmdStart_Click() Dim i As Integer For i = 0 To 4 If option1(i).Value Then Exit For End If Next base = i * 7 cmdStop.Enabled = True cmdStart.Enabled = False cmdAuto.Enabled = False cmdStop.SetFocus start = True Do While start Randomize Timer i = Rnd() * 6 lblNum(i + base).Caption = Trim(Str(Int(Rnd() * IIf(i = 6, 5, 10) DoEvents If auto Then If Timer - sTime > sDiff Then Exit Do End If End If LoopEnd SubPrivate Sub cmdStop_Click() cmdStop.Enabled = False i = 0 Do While True lblNum(i + base).Caption = Trim(Str(Int(Rnd() * IIf(i = 6, 5, 10) i = i + 1 If i = 7 Then Exit Do End If p = Rnd / 5 N = Timer Do While Timer - N < p Randomize Timer r = Rnd() * (6 - i) + i lblNum(r + base).Caption = Trim(Str(Int(Rnd() * IIf(r = 6, 5, 10) DoEvents Loop Loop start = False cmdStart.Enabled = True cmdAuto.Enabled = True cmdStart.SetFocusEnd SubPrivate Sub Form_Load() cmdStop.Enabled = False For i = 0 To 34 lblNum(i).Caption = "" NextEnd SubPrivate Sub lblNum_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single) Dim r As Integer If (Not start) And (Not auto) Then r = Index Mod 7 manu = True Do While manu lblNum(Index) = Trim(Str(Int(Rnd() * IIf(r = 6, 5, 10) DoEvents Loop End IfEnd SubPrivate Sub lblNum_MouseUp(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single) manu = FalseEnd SubfrmFC1窗口Option ExplicitPrivate Sub Command1_Click() Dim i As Integer, j As Integer, d As Integer Dim a As String d = 1 For i = 0 To 34 Text1(i).Text = Mid$(GenNnm, d, 2) d = d + 2 Next i'1-7排序并去初重复aa: For i = 1 To 6 For j = 0 To i If Val(Text1(j).Text) > Val(Text1(i).Text) Then a = Text1(i).Text Text1(i).Text = Text1(j).Text Text1(j).Text = a End If Next j Next i For j = 0 To 6 If Val(Text1(j).Text) = Val(Text1(j + 1).Text) Then d = 1 For i = 0 To 6 Text1(i).Text = Mid$(GenNnm, d, 2) d = d + 2 Next i GoTo aa End If Next j'7-14排序并去处重复bb: For i = 8 To 13 For j = 7 To i If Val(Text1(j).Text) < Val(Text1(i).Text) Then a = Text1(i).Text Text1(i).Text = Text1(j).Text Text1(j).Text = a End If Next j Next i For j = 7 To 13 If Val(Text1(j).Text) = Val(Text1(j + 1).Text) Then d = 15 For i = 7 To 13 Text1(i).Text = Mid$(GenNnm, d, 2) d = d + 2 Next i GoTo bb End If Next j'14-21排序并去处重复cc: For i = 15 To 20 For j = 14 To i If Val(Text1(j).Text) < Val(Text1(i).Text) Then a = Text1(i).Text Text1(i).Text = Text1(j).Text Text1(j).Text = a End If Next j Next i For j = 14 To 20 If Val(Text1(j).Text) = Val(Text1(j + 1).Text) Then d = 29 For i = 14 To 20 Text1(i).Text = Mid$(GenNnm, d, 2) d = d + 2 Next i GoTo cc End If Next j'21-28排序dd: For i = 22 To 27 For j = 21 To i If Val(Text1(j).Text) < Val(Text1(i).Text) Then a = Text1(i).Text Text1(i).Text = Text1(j).Text Text1(j).Text = a End If Next j Next i For j = 21 To 27 If Val(Text1(j).Text) = Val(Text1(j + 1).Text) Then d = 43 For i = 21 To 27 Text1(i).Text = Mid$(GenNnm, d, 2) d = d + 2 Next i GoTo dd End If Next j'28-35排序并去处重复ee: For i = 29 To 34 For j = 28 To i If Val(Text1(j).Text) < Val(Text1(i).Text) Then a = Text1(i).Text Text1(i).Text = Text1(j).Text Text1(j).Text = a End If Next j Next i For j = 28 To 33 If Val(Text1(j).Text) = Val(Text1(j + 1).Text) Then d = 55 For i = 28 To 34 Text1(i).Text = Mid$(GenNnm, d, 2) d = d + 2 Next i GoTo ee End If Next jEnd SubFunction GenNnm() As String Dim str1 As String Dim i As Integer, Num As Integer Dim usechar As String usechar = "0102030405060708091011121314151617181920212223242526272829303132333435" str1 = "" Randomize For i = 1 To 36 Num = Len(usechar) * Rnd + 1 If Num Mod 2 = 1 Then str1 = str1 + Mid(usechar, Num, 2) Else str1 = str1 + Mid(usechar, Num - 1, 2) End If Next i GenNnm = str1End FunctionPrivate Sub Command2_Click() Dim i As Integer For i = 0 To 34 Text1(i).Text = "" Next iEnd SubPrivate Sub Command3_Click() Unload Me frmLoad.ShowEnd SubPrivate Sub Form_Load() Option5.Value = TrueEnd SubPrivate Sub Option1_Click() Dim i As Integer For i = 7 To 34 Text1(i).Visible = False Next i For i = 0 To 34 Text1(i).Text = "" Next iEnd SubPrivate Sub Option2_Click() Dim i As Integer For i = 14 To 34 Text1(i).Visible = False Next i For i = 0 To 13 Text1(i).Visible = True Next i For i = 0 To 34 Text1(i).Text = "" Next iEnd SubPrivate Sub Option3_Click() Dim i As Integer For i = 21 To 34 Text1(i).Visible = False Next i For i = 0 To 20 Text1(i).Visible = True Next i For i = 0 To 34 Text1(i).Text = "" Next iEnd SubPrivate Sub Option4_Click() Dim i As Integer For i = 28 To 34 Text1(i).Visible = False Next i For i = 0 To 27 Text1(i).Visible = True Next i For i = 0 To 34 Text1(i).Text = "" Next iEnd SubPrivate Sub Option5_Click() Dim i As Integer For i = 0 To 34 Text1(i).Visible = True Next i For i = 0 To 34 Text1(i).Text = "" Next iEnd Sub五. 分析和体会实验中碰到的问题及解决方法(1)未加界符将语句 Dim a As String 写成 Dima As String修改方法:在Dim 和 a 之间加上空格。(2)运行时出现“块 If 没有 End if ” 的提示。在编写“ If 语句”代码时未写“End if “.修改方法:在相应的块 if 后加上 “ End if ”.(3)标点符号错误在VB中只允许使用西文标点,任何中文标点符号在程序编译时产生“无效字符”错误,并在该行以红色字显示。用户在进入VB后不要使用中文标点符号。(4)当多分支中有多条件同时满足,只执行第一与之匹配的语句序列。因此,要注意对多分支的条件的书写次序,防止某些值被过滤。(6)选择结构的嵌套书写为锯齿型。六总结为了让我们加深对VB教程学习的理解,期末老师引导我们做了这个课程设计。起初还十分担心,因为对自己掌握的VB只是并不自信。但是,为了做好本次课程设计,我认真复习了Visual Basic程序设计教程的相关知识,对实验中所需涉及到的知识有更深入的了解和掌握。在这一切的充分准备下 ,我认为,程序设计目的已较明确,程序实现起来较顺利,这让我体会到了平时踏实积累学习知识的重要性。实验中与同学的交流合作,让我们彼此间的知识和思维进行了碰撞和进步。本次课程设计的实验报告确实让我学习到了许多新鲜的知识,我更进一步了解了Visual Basic程序设计教程的相关知识,由于使用了VB语言进行程序的编写,这就在一定程度上锻炼了自己在VB方面的水平,也让我深刻地理解了,一种语言可以应用到很多的方面,尤其是在当今社会,对计算机的掌握水平提出了更高的要求。作为一名合格的大学生,一名以后能胜任自己岗位的工作者,更要不断提升自己对计算机的掌握水平。通过这次课程设计,我对原有的VB教材更加熟悉,了解更加透彻,运用更加灵活,获益匪浅。我想这些都会对我以后的工作学习产生深刻的影响。即使以后不从事系统软件方面的工作,这些代码实现的技巧也会对我作其他软件开发工作带来极大的助益。同时,对阅读内核代码进行阅读、总结的过程也提高了我的分析问题、解决问题的能力,而这种能力是无论做什么工作都需要的。在这过程中,让我懂得了团队合作非常的重要,在这期间我有很多不懂的问题,通过和同学一起讨论,很多问题都得到了有效的解决,这样不仅加深了和同学之间的友谊,也使我们在编程中有许多的乐趣。这次程序设计,使我认识到,自己之前对VB 的教材了解不够深入,只停留在知道的层面,这远远不够,我应该在以后的学习中,学会“学以致用”,知识只有用得多了才更熟练更深入,必须强化这一观念,不断提升自己在各方面的学习进步。七 参考文献(1)熊李艳,周美玲主编;吴昊,杜玲玲副主编Visual Basic程序设计教程M.北京 :人民邮电出版社 ,2007.(2)2李光明Visual Basic 6.0编程实例大制作M 冶金工业出版社(3)袁帅,郭月强等编写的Visual Basic编程实例教程M 北京希望电子出版社(4)郑炳文编著visual Basic程序设计例题汇编M清华大学出版社