说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

用VB6.0编写电脑抽奖程序

HTML文档下载 WORD文档下载 PDF文档下载
用VB6.0编写电脑抽奖程序

   近年来在娱乐节目之中常常见到利用电脑来抽奖,笔者对其发生了兴趣遂自己动手用VB编了一个小程序来实现电脑抽奖的小功能,其原理如下:
  主要利用VB中的Rnd函数,来实现随机查找和打乱排序的功能,从而实现随机抽奖的目的。Rnd函数的语法结构是Rnd[(number)],可选的number参数是 single或任何有效的数值表达式。Rnd函数返回小于1但大于或等于0的值。number 的值决定了 Rnd 生成随机数的方式。为了生成某个范围内的随机整数,可使用以下公式:
  Int((upperbound - lowerbound + 1) × Rnd + lowerbound)
  这里,upperbound 是随机数范围的上限,而 lowerbound 则是随机数范围的下限。
  另外,程序中还使用了INI文件,Windows INI文件,可解释为Windows初始化文件。它是一种专门用来保存应用程序初始化信息和运行环境信息的文本文件。ini文件是一种文本文件,它可以通过Notepad等文本编辑器进行编辑。ini文件具有特定的格式。一个INI文件是由若干个段(section)组成的,每个段中包含若干关键字(key)及相应的值(value)。创建应用程序自己的INI文件,通过INI文件保存应用程序的一些运行环境信息,然后在程序中读取INI文件中的设置信息并据以处理。一旦程序的运行环境需要变更,则可以通过直接修改INI文件,或在程序中提供专门的界面间接地修改INI文件来保证程序的可用性。
  程序运行时如图:
   源程序及注释如下:
  '窗体源程序
  Option Explicit
  Dim m_strNameArray() As MyName
  Dim m_bIsStart As Boolean
  Dim m_nNameIndex As Integer
  Dim MAX_INDEX As Integer
  Dim m_nSelectNum As Integer
   '被选定数
  Dim nScrollStep As Integer
  Dim nScrollWidth As Integer
  Dim bScrollState As Boolean
  Dim nEnableSecond As Integer
  Dim m_strTitle As String
  Dim m_strAppTitle As String
  Dim m_strScrollTitleLeft As String
  Dim m_strScrollTitleRight As String
  Private Sub Command_Start_Stop_Click()
  If m_bIsStart = True Then
  '按停止钮
  m_bIsStart = False
  Command_Start_Stop.Caption =
  “开始"
  Label_FlashName.Visible = True
  Timer_FlashName.Enabled = True
  Timer_ScrollName.Enabled = False
  Label_FlashName =
  m_strNameArray(m_nNameIndex).strName + “中奖了!"
  m_strNameArray(m_nNameIndex).bIsSelect = True
  m_nSelectNum = m_nSelectNum + 1
  Dim Temp As MyName
  Temp =
  m_strNameArray(MAX_INDEX)
  m_str Name Array(MAX-INDEX) = m_strNameArray(m_nNameIndex)
  m_strNameArray(m_nNameIndex) =
  Temp
  MAX_INDEX = MAX_INDEX - 1
  If MAX_INDEX = 0 Then
  MsgBox “非常感谢您使用本软件"
  End If
  Else '按开始钮
  m_bIsStart = True
  Command_Start_Stop.Caption = “停止"
  Command_Start_Stop.Enabled = False
  Timer_ScrollName.Enabled = True
  Timer_FlashName.Enabled = False
  Label_FlashName.Caption = “"
  End If
  End Sub
  Private Sub Form_Load()
  Form_Bouns.ScaleMode = 3
  m_nNameIndex = 0
  m_bIsStart = False
  Timer_ScrollName.Enabled = True
  Timer_ScrollTitle.Enabled = True
  Label_FlashName.Visible = False
  Label_ScrollName.Caption = “"
  nEnableSecond = 0
  '定义起始秒数
  ReDimNameArray
  '获得文本中的名字和打乱名字顺序
  nScrollStep = 5 '设定滚动字的步长
  nScrollWidth = Label_Congruation.Left
  '设定title的移动宽度
  bScrollState = False
  '设定缺省的开始滚动方向为向左
  m_nSelectNum = 0
  '初始化被选定数为0
  Init
  '初始化本程序的界面
  End Sub
  Private Sub Timer_FlashName_Timer() '闪动中奖者姓名
  If Label_FlashName.Visible = True Then
  Label_FlashName.Visible = False
  Else
  Label_FlashName.Visible = True
  End If
  End Sub
  Private Sub Timer_ScrollName_Timer() '滚动出现名字
  If m_bIsStart = True Then
  If m_nNameIndex >= MAX_INDEX Then
  m_nNameIndex = 0
  End If
  m_nNameIndex =
  m_nNameIndex + 1
  If m_strNameArray(m_nNameIndex).bIsSelect = True Then
  If m_nNameIndex <
  MAX-INDEX Then
  m_nNameIndex =
  m_nNameIndex + 1
  Else
  m_nNameIndex = 0
  End If
  End If
  Label_ScrollName.Caption = m_str
  NameArray(m_nNameIndex).strName
  'End If
  End If
  End Sub
  Private Sub Timer_ScrollTitle_Timer() '滚动“恭喜发财"字样
  If bScrollState = False Then '向左滚
  nScrollStep = 10
  Label_Congruation.Caption = m_strScrollTitleLeft
  If nScrollWidth > 0 Then
  nScrollWidth =
  nScrollWidth - nScrollStep
  Else
  bScrollState = True
  End If
  Else '向右滚
  nScrollStep = -10
  Label_Congruation.Caption =
  m_strScrollTitleRight
  If nScrollWidth < Form_Bouns.ScaleWidth - Label_Congruation.Width Then
  nScrollWidth =
  nScrollWidth - nScrollStep
  Else
  bScrollState = False
  End If
  End If
  Label_Congruation.Left = nScrollWidth
  '以下为8秒钟内使“停止"按钮有效
  If nEnableSecond <= 49 Then
  If m_bIsStart = True Then
  nEnableSecond =nEnableSecond + 1
  End If
  Else
  If m_bIsStart = True Then
  Command_Start_Stop.Enabled = True
  nEnableSecond = 0
  End If
  End If
  End Sub
  '动态定义数组
  Private Sub ReDimNameArray()
  Dim nMaxIndex As Integer
  Dim strMaxIndex As String
  Dim nIndex As Integer
  Dim bIsBegin As Boolean
  bIsBegin = False
  nIndex = 0
  Open App.Path + “\name.txt" For Input As #1 '读文件
  Do Until EOF(1)
  If bIsBegin = False Then
  Line Input #1, strMaxIndex
  nMaxIndex = Val(strMaxIndex)
  MAX_INDEX = nMaxIndex - 1
  ReDim m_strNameArray(0 To nMaxIndex - 1)
  bIsBegin = True
  Else
  Line Input #1, m_strNameArray(nIndex).strName
  m_strNameArray(nIndex).bIsSelect = False
  nIndex = nIndex + 1
  End If
  Loop
  '以下为打乱人员顺序10次
  Dim i As Integer
  Dim j As Integer
  Dim Temp As String
  Dim nRandomNum As Integer
  For j = 0 To 10
  For i = 0 To nMaxIndex - 1
  nRandomNum = ((nMaxIndex - 1) × Rnd) '利用Rnd函数
  Temp = m_strNameArray(i).strName
  m_strNameArray(i).strName = m_strNameArray(nRandomNum).strName
  m_strNameArray(nRandomNum).strName = Temp
  Next i
  Next j
  End Sub
  Private Sub Init() '读取INI文件
  Dim X As Long
  Dim lpFileName
  Dim Temp As String × 50
  lpFileName = App.Path + “\Sortition.ini"
  X = GetPrivateProfileString(“SYSTEM",“AppTitle",“抽奖程序", Temp, Len(Temp), lpFileName)
  m_strAppTitle = Trim(Temp)
  Temp =“"
  X = GetPrivateProfileString(“SYSTEM", "Title", "欢迎使用抽奖程序", Temp, Len(Temp), lpFileName)
  m_strTitle = Trim(Temp)
  Temp = “"
  X = GetPrivateProfileString(“SYSTEM",“ScrollTitleRight", “恭喜发财!!!", Temp, Len(Temp), lpFileName)
  m_strScrollTitleRight = Trim(Temp)
  X = GetPrivateProfileString(“SYSTEM",“ScrollTitleLeft", “龙年大发!!!", Temp, Len(Temp), lpFileName)
  m_strScrollTitleLeft = Trim(Temp)
  Form_Bouns.Caption = m_strAppTitle
  Label_CompanyTitle.Caption = m_strTitle
  End Sub
  模块源程序:
  '用于读取ini文件的API函数
  Declare Function GetPrivateProfileString Lib “kernel32" Alias “GetPrivateProfileStringA" (ByVal lpApplicationname As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
  Public Type MyName
  strName As String
  bIsSelect As Boolean
  End Type
  由于程序利用的windows ini文件保存一些标题信息,因而可以方便的修改使用环境,及标题内容。
  见ini文件内容:
  [SYSTEM]
  ;应用程序的form名称
  AppTitle=“风云电脑抽奖Test"
  ;窗口的内的标题(限9个字)
  Title=“大抽奖"
  ;右滚动的文字(仅能为如下格式:XXXX!!!)
  ScrollTitleRight=“恭喜发财!!!"
  ;左滚动的文字(仅能为如下格式:XXXX!!!)
  ScrollTitleLeft=“祝您好运!!!"
  如此一个小小的电脑抽奖程序便完成了。
  以上程序在VB6.0 Windows98环境下编译通过!(武汉 蒋锦霞)



VB如何转换C代码中的高字和低字 一些字符串操作的问题和回答 -VB资料 VB怎样把VC++代码转换成VB代码 字符串中包含双引号-VB资料 字符串中文的问题 -VB资料 巧用CLIPBOARD建立图像数据库-VB资料 在VB中存取数据库中的图片 Access97的报表解决方案-VB资料 Access下如何使用通用对话框-VB资料 ADO简介 -VB资料 ADO三大对象的属性、方法、事件及常数(二)-VB资料 ADO三大对象的属性、方法、事件及常数(三)-VB资料 ADO三大对象的属性、方法、事件及常数(一)-VB资料 Data 控件使用有密码的 Access 数据库 -VB资料 Excel、Access、VB的结合应用 Microsoft SQL Server 7.0安装问题(二)-VB资料 主题: MDB文件的导出 使用 DAO-VB资料 Microsoft Access秘密、技巧和陷阱-VB资料 SQL的基本操作(1.数据类型) -VB资料 SQL的基本操作(2.数据库的相关操作)-VB资料 SQL的基本操作(3.表的相关操作) -VB资料 SQL的基本操作(4.数据的检索)-VB资料 SQL在VB中的使用及访问远程数据库 Text 转换为 Access MDB -VB资料 VB5.0数据库基础 非编程方式访问数据库-VB资料 VB用编程方式访问数据库 VB 5.0数据库设计技术讲座(4) VB5.0数据库编程经验小集 VB5在处理数据库时的几个“BUG” VB6.0中的几个新增数据库工具 一个关于tomcat中servlet的棘手问题..... 谁可以帮我提供一个PHP的站内目录管理程序! 请问c++中,函数重载和虚函数有什么区别,在实现多态性方面有差别吗? 现有一个小项目: 如何对多个按钮的BN_ClICK进行映射 SQLserver备份与恢复 Delphi中怎样声明一个类?怎样实现多态?如果要在类库的一个类中添加一个方法又怎么做? 然后怎样封装它?是不是封装以后维护就非常简单? 可 计算机网络--〉清华大学出版社,作者:Andrew S Tanenbaum哪里有电子版下载 把播放F4的时间上《我们程序员都是活雷锋》 随便问问:VC能不能调用Access中的Form,Report 用ADO在线程中打不开数据库,请帮忙 如何在VB中动态的加载Dll,并使用其加载的函数??? 高手们看过来 Oracle初学,兄弟们多帮忙了! 怎么打开一个.txt文件,然后一行一行读取? 请问大家知道一个局域网里的IP在因特网上如何表示的呢。 请问各位,如何在我的程序中用代码生成Access数据库? 神啊,救救我吧,我想要含笑半步喋=== 请教NT4。0下的IE2。0怎样升级到IE6。0或IE5。0? 我要在程序中重载CBitmap类的一个函数,请问如何做 为什么我在bcb的new中找不到multitier(就是多层)选项页 请问如何知道数据库中有哪些表存在?在线等待 向各位大侠求救中 这是数据库的缺点吗? Choice.asp?VehicleType=a+&VehicleColor=Red + 传不到Choice.asp 如何获取文件扩展名关联信息 急!应选择什么样的服务器? 请问哪里有关于DOS和BIOS的系统功能调用的e书籍下载?谢谢指点 想用bcb的DirectX编一个显示器(第二个)的独占程序!希望专家指点!也欢迎大家来交流! 你碰到过这样的问题吗? What is meaning "$1 $2 " in perl? 配置支持ISAPI调用的 apache 服务器 怎样判断内存有没有被释放? window2000的安装和IE的问题 像我這樣的Boy,是否可以找到GF??? Oracle816连接问题,急 小妹有一事相求,请问哪里有SQL Server 7.0 的虚拟光盘下载啊?急!!! 谢了! Delphi的枚举类型是怎么用的?如果它的元素是字符串,怎样判断它和某个字符串相等? 我以前是用Delphi的,现在新找了家公司,是用C++Builder的,请帮忙推荐本C++Builder的书,谢谢 请问如何实现多媒体数据库??? SQL Server 7.0作为后台,它主要完成什么功能??!!求救!!!!!!! 请教WebUIValidation.js'的作用 2000 server 的 IE 的非法操作?(如果是非技术的,也请斑竹手下留情。) 求助:开发一个小型数据库,使用那种哈希函数适宜 如何调用IE的缓存 如何获取文件扩展名关联信息 小妹有一事相求,请问哪里有SQL Server 7.0 的虚拟光盘下载啊?急!!! 谢了! VC下通过ADO查询Oracle数据集个数为何返回为-1?? 请大家看看pb65自带的例子 很简单的问题,如何将EXCEL中的数据转换到ACCESS2000中,需源程序(一) 在ASP中如何将一字符型转为数据型??在VB中可用VAL,CINT,CDBL等,ASP中却不能?? 实行人民代表大会制度有什么意义 美国最高决策机构是?我们做过英国的,是议会,美国的呢?老师说美国没有最大的决策机构,因为美国三权分立,三个机构权力都不小,能相互制约。但网上有说是国会的。到底什么呢? 某物体由静止开始作加速度大小为a1的匀加速直线运动,经过时间t1后立即改作加速度大小为a2的匀减速直线运某物体由静止开始作加速度大小为a1的匀加速直线运动,经过时间t1后立即改作加 为什么要坚持人民代表大会制度? 中世纪西欧的城市以当时的中国城市最大的不同是什么? 中世纪西欧历史基本特征 碳酸氢钠与过量、少量氢氧化钠【aq】反应的方程式, NaOH溶液中同时混有NaCl Na2SO4 Na2CO3怎么除去杂质?什么银?氢氧化银?有氢氧化银这种东西?为啥书上说没有 AQUATENSID的化学成份是什么?聚烷撑乙二醇类可以有哪些用途? 为什么中国要坚持人民代表大会制度 全国人民代表大会和人民代表大会制度在我国的政治生活中分别占什么地位?注意!是地位 含有阿胶成分的产品有哪些 中国为什么要实行全国人民代表大会制度? 全国人民代表大会在我国的政治制度中具有怎样的地位 汽车从静止开始做匀加速直线运动,速度达到v时立即做匀减速运动,最后停止,全部时间为t,汽车通过的位移 KCl和NaCl的焰色反应是什么来区分他们 碳酸钠,碳酸氢钠,过氧化钠怎样分辨 汽车由静止开始做匀速直线运动,速度达到V时立即做匀减速直线运动,最后停止,运动的全部时间为t,则汽...汽车由静止开始做匀速直线运动,速度达到V时立即做匀减速直线运动,最后停止,运动的 利用焰色反应区别下列物质:NaCL溶液、KCL溶液、稀盐酸 请问人民代表大会制度能使人民在国家政治生活中直接行使民主权利,这句话对吗? 甲车又静止开始做匀加速直线运动,通过位移s后速度达到v,然后做匀减速直线运动直至静止,乙车又静止开始,然后做匀减速直线运动直至静止,甲乙俩车在整个运动中的平均速度分别为v1,v2,那么 如何正确减速减档 过氧化钠,碳酸钠和碳酸氢钠的物理,化学性质和用途. 汽车从静止做匀加速运动,速度达到v时立刻做匀减速运动,最后停止.全部时间为t,求位移.(请无视红字.) 如何减档减速 为什么说人民代表大会制度是我国的根本政治制度?法律硕士的题目 汽车从静止起做匀加速速直线运动,速度达到v时立即做匀减速运动,最后停止,全部时间为t,汽车通过的位移? 什么食物可以排汞和铅? 中世纪西欧城市兴起的背景,特点,如题. 玻璃 洗脸盆 爆炸 是什么原因今天早上九点钟 我们家的玻璃洗脸盆突然爆炸 可是爆炸时我们都没在场·也没人在用盆洗东西啊·这是怎么回事 人民代表大会制度是适应我国的国情的,这一国情指的是什么 中世纪西欧重新兴起的著名城市《含国家名称》 玻璃洗脸盆爆炸原因钢化玻璃洗手盆无故自爆洗手盆里什么也没有装,是摆在店里的样品无故自爆了。 为什么人民代表大会制度适合我国国情的根本政治制度 中世纪西欧城市的复兴与自治,对中世纪西欧社会发展的影响有①使欧洲出现一个新的等级——市民阶级②推动了商品经济的发展,加速了庄园制度的瓦解③城市与王权结盟,促进了等级代表会 洗脸盆能装在玻璃上吗? 等量的钠,氧化钠,过氧化钠,氢氧化钠,碳酸钠晶体露置在空气中,最后质量由小到大是怎样排列的? (方程式)氧化钠 怎样生成 过氧化钠?氢氧化钠 怎样生成 碳酸钠?碳酸钠 和碳酸氢钠的互相转化? 玻璃脸盆怎么做的 与钠 氧化钠 过氧化钠 氢氧化钠 碳酸钠 碳酸氢钠 都能反应的东西是什么? 政府是决策机关吗?我国都有什么机关啊? 如何选择洗脸盆? NaOH 过氧化钠 氧化钠 Na2CO3-10H2O在空气中质量会减轻NaOH 过氧化钠 氧化钠 Na2CO3-10H2O在空气中质量会减轻的是? 中国古代各朝中央决策机构从秦朝至清朝的中央决策机构分别是什么?有劳各位高人一一归纳, 求化工达人讲解啊乙二醇的主要用途是什么?希望能详细的讲解乙二醇主要用在哪些产品的生产中.一定要具体到产品.不要说大类,不要简单的复制粘贴.希望得到简单有效、详细具体的产品. 氯化铵与硫酸钠的混合溶液如何结晶氯化铵?并且对温度有什么要求.谢谢! 汉武帝时,中央决策机构是?A.中朝B.外朝C.内朝D.外朝 人体微量元素汞高会怎么样我在家摔碎了一支体温针,因为是晚上所以我第二天才清理干净,它对人体有多大的害 中世纪西欧城市的兴起有何历史意义?同志们不要懒哈!说全面一点啊!谢了! 中世纪西欧封建城市的规划建设特征中外城建史 听说鱼身体里面含有很多的汞,主要位于鱼的什么部位?都说鱼里面汞含量很大.但是请问各位汞主要位于鱼的什么部位?是鱼肉还是鱼头或者其他地方? 人民代表大会制度、人民代表大会、全国人民代表大会三者的区别是什么? 西欧中世纪政治特点 某物体由静止开始作匀加速直线运动.加速度大小为a1.运动时间为t1.接着作加速度大小为a2的匀减速运动.再...某物体由静止开始作匀加速直线运动.加速度大小为a1.运动时间为t1.接着作加速度 人民代表大会制度与全国人民代表大会制度的区别与联系急 我国的决策机关有哪些 物体由静止出发做加速度为a1的匀加速直线运动,一段时间后又做加速度大小为a2的匀减速直线运动至静止,总位移为X,则运动中的最大速度为( ).A.2a1X/a2 B.根号[(a1+a2)X]C.(a1+a2)X D.根号[2a1a2X/a1+a2 高中有机中关于溴乙烷+氢氧化钠水溶液反应CH3CH2Br + H2O = 氢氧化钠催化 = CH3CH2OH + HBrCH3CH2Br + NaOH = 水 = CH3CH2OH + NaBr这两个方程貌似都是溴乙烷与氢氧化钠共热的方程式·· 请问这两个方程有什 中世纪西欧城市的复兴与自治:城市的特征是什么? .一质点由静止开始做匀加速直线运动,加速度大小为a1.经时间t后做匀减速直线运动,加速度大小为a2,若再经过时间t恰能回到出发点,则a1:a2应为( ) A.1:l B.1:2 C.1:3 D.1:4
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘