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

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



【上海直播】Windows Azure+世纪互联:中国云计算“烈火烹油” 最新版Chrome浏览器推出全新语音搜索功能 惠普第二财季净利润同比下滑32% PC和服务器销售不佳 讲师秀之11:网易汪源的成长故事 PPT集萃(三):六位国内技术大牛分享巨型平台的打造与应用 聚焦全球移动市场:创新以色列 科技巨头的倾慕之地 Android版Chrome 27浏览器正式上架 机器人——数据中心的新“网管” George Chu:在雅虎打造真正的工程师文化 2013,303+家中国云计算企业的“生态系统”之梦! 高访问量Web应用跨云端迁移的原因:权限和易用性 Web应用开发者福音 Chrome 28新增丰富通知中心功能 帷千兰旭:推广渠道鱼龙混杂,开发者请小心 关于IE 10 你应该知道的6件事 Spring Framework 4.0M1发布,支持JDK 8、Java EE 7 “渣打科营编程马拉松赛”正式启动 官网同时上线 Android应该支持OpenCL的十大理由 传谷歌考虑和Facebook竞购众包地图Waze 谷歌工程师再次公布Windows漏洞 并称微软很难合作 Glassdoor评前景最令员工乐观的十大科技公司 华为上榜 下一代Android深度前瞻 第18级API功能揭秘 Web开发者不容错过的20段CSS代码 8大核心要点:我们能用HTML5 Canvas做什么? 移动周报:直接拿来用!最火的Android开源项目 前MySQL CEO:云将重新定义开发者的每一件事 CIO必知六件事,至少必须想到的! PPT集萃(四):来自五位中外专家分享的虚拟化和云存储实践 Jolla和Sailfish OS,那些你应该知道的事儿 不仅保值还能升值:过时的苹果电脑创下67.1万美元售价 三十天完成跨平台办公套件Joeffice的开发 jQuery 1.10.0和2.0.1同时发布 用户登录是密码存放在哪个文件夹里? (简单问题) 请问这个程序为什么抛出这样一个违例??? 问题一个,请教! 增值合订本出的我心不甘 我又来提问了~前天复习是发现一道很怪异的题目~ 用activemovie控件打开一个URL,用哪个函数? 如何去掉ACTIVE MOIVE控件下面显示的几个键和进度条 c源程序。 >>>>高分求解!!!我在一个对话框中插入一个active report run time design,但程序运行时却不显示,在vb中却可以,如何解决这个问题?????? 关于sql server的安装 哪里有下载cc编译器的? 关于导出数据窗口数据的问题,明白人请进! delphi可不可以用于自动控制方面的开发呢 如何使对话框程序执行就让整个屏幕背景变黑色?? 想了解有关程序考试的一些情况? 不同系统就不可以直接电缆直接吗? 怎样使用PQMAGIC对硬盘进行调整分区 memory fault--core dumped的问题 有谁知道怎么解win98的开机密码? 用 procedure 与 trigger 、database link 能完成吗? flowerofwind,rjcludy()请回答 COM中的一个怪问题:我将::CoUninitialize();去掉后程序不出错,添上出现非法操作,是啥问题??? 请问?????? 如何在程序中播放rm格式的文件??? edit怎么用啊? JB6盘中不含 Borland Enterprise Server AppServer5.0,各位快载一个上去吧! 如何改变显示的分辨率? 那里有c#编译器免费下载?谢谢 如何在vc中播放rm格式的文件??? 那位大侠知道怎么创建并使用一个变量,每次只让一个进程访问???给个例子吧,大大大 大 delphi中怎么编写中断,获取外部设备传来的信息?急救!! 数值模拟与计算仿真,高手请帮忙! 请问:dos下图形放大算法或思路?还有.........(高手请进) 求教!!!!SOS!! --请问如何将一个BMP图形文件转成JPG图形文件,高分请教师--- 高分给出,win98的怪问题! 打印统计问题 请教 : html的javascript 中报错:document.Form1.client_name.value不是对象 VC++里面如何从文本文件中一行一行读取文件? 请问,如何用mail函数批量发送邮件.多谢. 各位请教一下,Jsp 的服务resin在win2000下是怎样配置的 各位兄弟: 有谁知道 侯杰 的 <多线程程序设计> 什么时候才能买到??? 哪里有VFP3.0下载? system.ini和win.ini的作用 怎样生成安装包,多谢! 如何在两个不同的应用程序之间拖动文本字符 请问,PTSTR 和 PSTR 有什么不同? 反对上海电信变相涨价的行为。我能不能告中国电信“违约”和“欺诈”呢。 求救!误删Office2000注册表! 生成.exe出错 在Excel中,如何让某些行不能滚动? 在--成都--程序员能拿多少--¥--???? 二次函数a的大小与开口大小的关系是怎样的?如题 如图所示,已知直线a与b是异面直线,直线c∩a=M,直线b∩a=N,又a∩平面α=A,b∩平面α=B,c∩平面α=C求证:A,B,C三点不共线急!大致图像是这样,可能图像不清. 过两点A、B能画几条直线?平面上有A、B、C三点,过其中任意两点画直线,能画几条? 二次函数a与开口大小有啥关系? 反函数,向量,三角函数的计算公式? y=(lnx)^x·x^(lnx)的导数 通常情况下,温度达到100℃时,水才会沸腾,这说明水沸腾后,如果停止对他加热,则水不能继续沸腾,这说明 有一支刻度均匀但读数不准的温度计,放在冰水混合物中示数为4℃,在沸水中的示数为96℃.用这支温度计测得烧杯中的水温是29摄氏度,则这杯水的实际温度是多少摄氏度? 经过平面内A,B,C三点中的任意两点只能画一条直线,其中正确的个数为( ) A.1 B.2 C.3 D.4 平面上有A.B.C.D四点,经过其中每两点画直线,最多可画出几条? 有一支温度计,其刻度是均匀的,但示数不准,把他插入冰水混合物中,示数为2℃,而放在1标准大气压小沸水里,示数为94℃,用这支温度计测一杯热水的示数是48℃,则这杯热水的实际温度是------. 在同一平面内有A,B,C,D,E五点,任意三点不在同一条直线上,能画()直线 在一平面内有四点,过其中的任意两点画直线,如果只能能画出四条直线,则这四点的位置是怎样的?画图, 一支温度计刻度均匀但示数不准,当把它插入冰水混合物中时,温度计示数为5摄氏度,插入1标准大气压下的沸一支温度计刻度均匀但示数不准,当把它插入冰水混合物中时,温度计示数为5℃,插入1 平面上三条直线相交,最多有几个交点?最少有几个交点?画图说明...1.平面上三条直线相交,最多有几个交点?最少有几个交点?画图说明.2.平面内四条直线相交,最多有几个交点?五条直线呢?n条直 反函数的导数 高数 ln|arctanx|求导 已知:平面α∩β=直线l,又直线a与α有一个公共点P,试分析α与β的位置关系 同一平面内的五条直线最多有几个交点,请画图说明要图喔! 如果一条直线l与平面a的一条垂线垂直 ,那么直线l与平面a的位置关系是不是任意一条 而是一条。 直线l,m与平面α,β,γ,满足l=β∩γ,l∥α,m∈α,m⊥γ,则必有〔〕 a.α⊥γ且m∥β b.α⊥γ且l⊥m c.m∥α且l⊥m d.α∥β且α⊥γ 平面上有5条直线两两相交,可能有多少个交点?请画图表示出来. 直线l垂直于平面α,直线m在平面α内.直线l,m的位置关系有哪几种 求过程」一刻度均匀的温度计放在冰水混合物中时,示数为10°C;用它测一个标准大气压下沸水的温度时,示数为90°C.若用它来测得温水的温度为70°C.则温水的实际温度是____. (1)在一个平面上画5条直线,最多有几个交点?请画图说明.(2)在一个平面上画5条直线,可以有4个交点吗?如果可以,请画出所有图形;如果不可以,请说明理由. 高数:反函数和导数的一道题! 高数求导疑问如图,我有个疑问,df(u)/du,我觉得df(u)就是对f(u)求导,也即是f`(u),分母是du是什么意思,有什么作用,为什么要除以du? ⑴平面上三条直线相交,最多有几个交点?最少有几个交点?请画图说明.⑵平面内四条直线相交,最多有几个交点?五条直线呢?n条直线呢?⑶平面内有n个点,其中任意三个点都不在同一条直线上,那 漂白粉生产方程式和漂白原理 高数中反函数的一阶导数是这样求的,那么反函数的二阶导数怎么求? 高数求导问题为什么选C 两个二次函数的a的绝对值相等,这两个二次函数的图像形状相同吗 大一高数导数.,设y=y(x)由方程x^y+2x^2-y=1所确定,求y′′(1) . 高数求导的问题不知道红线部分是怎么来的 红线部分到绿线部分也不知道是怎么来的 一元二次函数图像 已知三个平行平面α、β、γ与两条直线l、m分别相交于点A已知三个平行平面α、β、γ与两条直线l、m相交于点A、B、C和点D、E、F,求证:AB∶BC=DE∶EF. 高数, 二次函数图像的形状相同可以说明什么y=ax^2+bx+c 与y=-x^2-7x+12的形状相同,对称轴为x=1,顶点到x轴的距离为根号3,写出函数解析式 在同一平面内,与已知直线l平行的直线有___条,过直线l外一点M与已知直线l平行的直线有_____条.希望快点、、准确! 关于高数求导的问题能够告知这个极限的求导分子部分的求导过程,分母部分我懂,但是分子部分是怎样求导能否详细说明? 在二次函数中,为什么|a|越大,抛物线的开口越小? 若直线 L与平面b平行 ,直线a在b上 ,则 l与a 的位置关系是A、平行 B、 异面 C、 相交 D、 没有公共点偶A答案B,要理由啊 如图,请画图说明平面上到三角形的三遍所在的直线距离的点一共会有多少个?(任意一个三角形) 二次函数,a的数值越大,抛物线的开口越小,为什么?考虑y=10x^2+3x+1 高数小题,反函数求导. 三个平面把空间分成几个部分?画图表示各种情况.(请画图,有加赏,)6,7,8.主要是8个平面,画不来……求画,不尽感激. 为毛说二次函数中|a|越大,抛物线开口越小,|a|越小,抛物线开口越大. 直线a、b不共面,且a⊂平面α,b⊂平面β,α∩β=直线m,则m与a,b的位置关系是 y=(lnx)^x的导数 水的蒸发与气压有关系吗 有一支温度计,刻度均匀但刻度线不准.用它测量冰水混合物的温度时,度数为6℃,用它测量1标准大气压下沸水的温度时,读数为96℃.(1)若该温度计某次测量显示温度是33℃,则实际温度为_____℃ y=lnx/(x^2+1)的导数,怎么求, 下列说法错误的是 A.水在任何温度下都能蒸发.B.在1标准气压下,将水加热到100℃,水就能沸腾.C.水在沸腾时,要吸收热量,但温度不升高.D.水在低于100℃时也可能沸腾. 若直线a,b异面,a‖α,则b与平面α的位置关系 y=lnx/x 的导数是多少 平面上有ABCD四个点,过其中每两点画直线,可以画几条?画图说明画图说明! 有一只刻度均匀的温度计,但是在冰水混合物中,温度计显示的度数为5°c ,在一个标准大有一只刻度均匀的温度计,但是在冰水混合物中,温度计显示的度数为5°c ,在一个标准大气压下的沸水温度 经过平面上的三点中的任意两点可以画直线( )A 3条 B 1条 C 1条或3条 D 以上都不对 二次函数a与开口大小关系如题,分正负两种情况讨论,不要说绝对值越小 直线a,b,c在同一平面内,a//b,a与c相交于一点M,则b与c的位置关系是 y=(lnx)^x/x^lnx的导数 求过程
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn