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

用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环境下编译通过!(武汉 蒋锦霞)



Delphi系列的Y2K问题 Delphi下编程实现中文输入 Delphi用于读写的三种文件类型 Delphi之三十六计之输入处理篇 DELPHI中DFM文件与文本文件转换 Delphi中用于读写的文件类型 RichEdit的自动格式化-Delphi资料 RichEdit中实现查找功能-Delphi资料 表格上所有元件载入后的事件-Delphi资料 充分利用Windows API扩展Delphi函数 传递焦点的五种方法-Delphi资料 从 实 例 看 Delphi 4 中 的 动 态 得到Memo中当前的行列号-Delphi资料 改变RichEdit的游标位置-Delphi资料 回车代替Tab移动输入焦点-Delphi资料 获取Windows临时路径-Delphi资料 获取当前鼠标位置的类名和句柄-Delphi资料 检测存在打印机-Delphi资料 将BMP文件转换为JPG文件-Delphi资料 类似链接的效果-Delphi资料 利用COM技术实现外壳扩展的属性页-Delphi资料 留意DELPHI的命名规则 判断元件有哪一特定的属性-Delphi资料 全局热键-Delphi资料 让自己的程序防破解-Delphi资料 如何查找一个目录下的某些特定的文件-Delphi资料 如何在全屏幕显示一个AVI文件-Delphi资料 删除文本文件中的多余空格-Delphi资料 实现Hint的分行提示-Delphi资料 实现应用程序的文件拖放功能-Delphi资料 死循环的控制权转让-Delphi资料 111222走了~~送分~~~心里不好受~~~ 111222真的走了~~~~~~~~~~~ JBuilder中用MYSQL数据库,用中文进行条件查询时,查不出任和数据? ASM 菜鸟问题,请大家帮忙!谢谢 解释一下好了吗? ============答对我的问题者,将可获得111222的签名照片!!!!!!!!=========== 关于图片的上传 ======== 绝对好消息,activereport2.0已经release 了,cracker们出动啊~~~~~加油 ============= 关于什么才是真正的系统分析和系统分析员的讨论!——欢迎大家参加,进行善意地讨论!^&^ 今晚的球赛什么时候开始啊? 哪里有关于水平考试(高程)的模拟题的啊??? 为什麽还是不能显示中文呢? 怎样获取WIN2000的密码 在父窗体怎样画jpg格式的背景图? 如何注册MSComm控件????????? 如何解决这个问题啊?重赏啊!!!! 公告: 从现在开始封shines 111222 :)流芳斑主,结贴的工作要开始了,会很累啊!我代表大家先谢谢你了! 怎样改变MSHflexgrid中每条记录的背景颜色。急急急急急急急 各位,能不能给我讲一下“句柄”是怎么一回事? 唉,心情不爽 关于C++语法的问题? 灌水-----大学时的恶作剧(转载) "setdibs()"是什么来着,请指教,谢谢! 写注释不宜过头 这段代码错在哪里? 请大家预测一下比分(参与者都有分)开赛后就不算了,还有半个小时,赶紧着 写网络电话程序的讨论 最后一帖,贴完睡觉----如何在电梯里捣乱 怎样定制一个在程序中重用的组件?只能通过包方式吗? 寻寻觅觅 汉英计算机科技文章 互译!!有劳各位朋友费心帮忙找找 我靠!真TMD不爽,这个时候准老婆的老妈进了医院! 怎样调用*.db格式文件 谁知道哪儿有英汉互译,急急急急!!!! ISO 9001认证 VS CMM2 谁知道哪儿有《神秘的人月》下载? 为111222求情 怎样可以修改浏览器的标题? 怎样可以修改浏览器的标题1? 哪位能给我一个source insight 3.0的sn号? 怎样可以修改浏览器的标题2? 如何异步调用远程组件的方法? 哈哈!球赛开始了!我也不想去医院了!!!顶多明天挨顿骂! 上CSDN的有谁是七月份毕业,大家认识一下 我想问问,一个程序员的黄金年龄是多少? 如何由CRgn得到一组Polygon? 初学者请教一个小问题!急急急,尿都快急出来啦! 急急急急急急急急急急,用vb怎样知道COM口是不是打开着,能不能不用控件高分. 高手请看:20 分 我想给50 分,但是系统只让给20分,对不起大家了,有机会一定补上!!! 关于一个报表问题,急! 我需要一个Hackman的配套的Debugger,有谁知道哪有 8.5x-3.5x=27.5 求方程 2(x-2. ..二元一次方程组...有一些苹果箱,若每只装苹果25千克,则剩余40千克无处装,若每只装30千克,则余20只空箱,这些苹果箱有多少只?请列式计算...PS...符号"^"表示上标..即N次方...每个方程组之间请 0.1(X+2)-0.9=0.5这个方程怎么解 8(X-6.2)=41.6 (X-3)/2=7.5 这两个方程怎么解 列二元一次方程组解2道初中数学题1,一旅馆的客房有3人间和2人间,3人间每人每晚25元,2人间每人每晚35元.一个50人的旅游团到该旅馆住宿,租住了若干客房且每个客房正好住满,一天共花住宿费1 ×的2.5倍比它的1.8倍多9.8.求方程的解 帮忙解一道方程,x-18=3(x-26) 初中数学二元一次方程组题一个两位数,个位数字比十位数字大5.如果把个位数字对调,那么所得到的新数与原来数的和是143.求原来的两位数 方程:6乘9+3x=70怎么解? (x-2)/(x+2)+16/(4-x^2)=(x+2)/(x-2) 初中数学题(有关二元一次方程组~急)1.若|X+Y-3|+(X-Y)^2=0,你能求出X,2.已知t满足方程组{2x=3-5t,则x和y之间满足的关系式是_______3y-2t=x, 3x+0.9=3.3的方程怎么解 解一道方程!3分之2(x-y)=4分之x+y-1 6(x+y)=4(2x-y)+16! 初中数学题二元一次方程组 3x-2.4=6.9 方程 第十六题该怎么算?方程式来的. 方程log2 (x+4)=2^x的实数根的个数为好像是两解 方程-3x>-6的解是? [(4-x+4)*4/2]+(4x/2)=16 这道方程怎么算 方程log2(x+4)=3^x的实数根的个数为 请解这个方程:(9×0.7)×3x=1 x+9=2x-9这个方程怎么解 方程log2(x+3)=3的x次方的实数根的个数 8(×-6.2)=41.6(方程) 求方程9^2x-1=4^x的解 判断方程Log2(x)+x^2=0在区间[1/2,1]内有没有实数根,为什么? (X+1)*6=(X-1)*8这个方程咋解? 方程9^(2x-1)=4^x的解x=RT 方程log2 (x+4)=(1∕2)^x的实数根的个数为答案为1个数 不用画图能做吗!最好不要画图能做! 判断题“方程X-1.2=1.6的解是2.8”这句话对吗? 2x—9=x+9(方程解答) 方程ln(3*2^x-2)=log2的3+log2的1/3d的解为 数学判断题:方程5+2x=16.2的解是5.6 x比6分之5=9分之5【比例方程】 方程log2(2^x+1)log2(2^(x+1)+2)=2的解为 要具体方程log2(2^x+1)log2(2^(x+1)+2)=2的解为 要具体过程 判断题:x=2即是方程式,也是方程的解 解下列方程 15分之4+X=1-15分之4 X-(3分之2+4分之1)=6分之5 方程log2(9ˇx-5)=log2(3ˇx-2)+2的解集是过程理由 怎么做在等式两边都有X的方程,比如说,8X+4=10X,要详解过程哦 3分之2(x+1)=6分之5(x+1)-1++方程怎么解 x^log2(x+2)=8 解对数方程, 方程14+(4.8x-6)-2.8x=8怎么解 8题的方程. 求方程log2(x+4)=(1/3)^x的根的个数,并说明理由给点思路也行..请误乱写P言 省得没人问津 以为有人答了.] ﹙6分之5+8分之5﹚×x=20分之7(方程加过程) 求救7,8两题拜托用方程解 方程log2(x+5)=4^x的实根的个数为RT!求教! 列方程,求x的解 输入20,乘6,减去7x输出50 7.8-x=6.2这个方程怎么解 方程log2(x+a)=3^x的实根的个数A.0B.1C.2D.3 列方程式解答:240比X的一半多60.一个数加上它的20%后是8.4,求这个数. 第6、7题用列方程解决. 方程log2(x+4)=x^(1/3)根的个数是几个 【5+x】*8/2=6哦【列方程, 6、7、8题怎么做直接列方程不用解 方程log2(2^x+1)log2(2^(x+1)+2)=2的解 X+6/5X+6/5X*31/4=320这个方程怎么解 七年级上册数学复习题3答案 速度好急快啊要方程的式子 和答案 6.7.8.9题要过程 急 速度速度速度速度速 方程log2(2^x+1)log2(2^(x+1)+2)=2的解为给答案就行
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn