用vb编一个抽奖软件的源代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

求用v b编一个抽奖软件的源代码
悬赏分:20 - 解决时间:2008-4-15 22:47
要求:1.点击‘开始’从tex t或ex cel文件中依次调用每一行的电话号码,滚动显示在界面上,点击‘停止‘ 则停在某一个电话上即可
2.请带一些语句说明最好
问题补充:这位前辈是不是将input 写成了inpue ,
while not(eof(#1))总是提示错误
我是个v b小白,能不能说明白点,需要几个控键分别叫啥名字,语句能不能更完整些,谢谢
开始和停止为同一个键也可以
提问者:qv x i aogang - 试用期一级最佳答案
dim i
窗口启动:
i=0
Open App.Path & "\电话号码.tx t" F or Input As #1
while eof(1)=false
Line Input #1,a
List1.AddItem a
wend
close #1
按开始:
timer1.Interval=50
按结束:
timer1.Interval=0
timer的事件:
i=i+1
if i=List1.ListCount then i=0
Label1.Caption = List1.List(i)
不好意思啊,由于没有注意,所以先前的答案有两个小错误,现在已修正了
所需控件:
两个按钮,一个开始,一个结束;一个时钟控件
一个列表框;一个标签控件
用VB 6.0编写电脑抽奖程序
近年来在娱乐节目之中常常见到利用电脑来抽奖,笔者对其发生了兴趣遂自己动手用VB编了一个小程序来实现电脑抽奖的小功能,其原理如下:
主要利用VB中的Rnd函数,来实现随机查找和打乱排序的功能,从而实现随机抽奖的目的。

Rnd函数的语法结构是Rnd[(number)],可选的nu mber参数是single或任何有效的数值表达式。

Rnd函数返回小于1但大于或等于0的值。

nu mber 的值决定了Rnd 生成随机数的方式。

为了生成某个范围内的随机整数,可使用以下公式:
Int((upperbound -lowerbound +1) × Rnd +lowerbound)
这里,upperbound 是随机数范围的上限,而lowerbound 则是随机数范围的下限。

另外,程序中还使用了IN I文件,Windows INI文件,可解释为Windows初始化文件。

它是一种专门用来保存应用程序初始化信息和运行环境信息的文本文件。

ini文件是一种文本文件,它可以通过Notepad等文本编辑器进行编辑。

ini文件具有特定的格式。

一个INI文件是由若干个段(section)组成的,每个段中包含若干关键字(key)及相应的值(value)。

创建应用程序自己的INI文件,通过INI文件保存应用程序的一些运行环境信息,然后在程序中读取INI文件中的设置信息并据以处理。

一旦程序的运行环境需要变更,则可以通过直接修改IN I文件,或在程序中提供专门的界面间接地修改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
Co mmand_Start_Stop.Caption =
“开始"
Label_FlashName.Visible = True
Ti mer_FlashName.Enabled = True
Ti mer_ScrollName.Enabled = False
Label_FlashName =
m_strNameArray(m_nNameIndex).strName +“中奖了!"
m_strNameArray(m_nNameIndex).bIsSelect = True
m_nSelectNum = m_nSelectNum + 1
Di m Temp As MyName
Temp =m_strNameArray(MA X_INDEX)
m_str Name Array(MA X-INDEX) = m_strNameArray(m_nNameIndex) m_strNameArray(m_nNameIndex) =Temp
MA X_INDEX = MAX_INDEX - 1
If MAX_INDEX = 0 Then
MsgBox “非常感谢您使用本软件"
End If
Else '按开始钮
m_bIsStart = True
Co mmand_Start_Stop.Caption = “停止"
Co mmand_Start_Stop.Enabled = False
Ti mer_ScrollName.Enabled = True
Ti mer_FlashName.Enabled = False
Label_FlashName.Caption = “"
End Sub
Private Sub Form_Load()
Form_Bouns.ScaleMode = 3
m_nNameIndex = 0
m_bIsStart = False
Ti mer_ScrollName.Enabled = True
Ti mer_ScrollTitle.Enabled = True
Label_FlashName.Visible = False
Label_ScrollName.Caption = “"
nEnableSecond = 0
'定义起始秒数
ReDi mNameArray
'获得文本中的名字和打乱名字顺序
nScrollStep = 5 '设定滚动字的步长
nScrollWidth = Label_Congruation.Left
'设定title的移动宽度
bScrollState = False
'设定缺省的开始滚动方向为向左
m_nSelectNum = 0
'初始化被选定数为0
Init
'初始化本程序的界面
End Sub
Private Sub Timer_FlashName_Ti mer() '闪动中奖者姓名If Label_FlashName.Visible = True Then
Label_FlashName.Visible = False
Else
Label_FlashName.Visible = True
End Sub
Private Sub Timer_ScrollName_Ti mer() '滚动出现名字If m_bIsStart = True Then
If m_nNameIndex >= MA X_INDEX Then
m_nNameIndex = 0
End If
m_nNameIndex =m_nNameIndex + 1
If m_strNameArray(m_nNameIndex).bIsSelect = True Then If m_nNameIndex < MA X-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
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
Co mmand_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 nRandomNu m As Integer
For j = 0 To 10
For i = 0 To nMaxIndex -1
nRando mNum = ((nMaxIndex -1) × Rnd) '利用Rnd函数
Temp = m_strNameArray(i).strName
m_strNameArray(i).strName = m_strNameArray(nRandomNu m).strName m_strNameArray(nRandomNu m).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 = Tri m(Temp)
Temp = “"
X = GetPrivateProfileString(“SYSTEM",“ScrollTitleRight", “恭喜发财!!!", Temp, Len(Temp), lpFileName)
m_strScrollTitleRight = Trim(Temp)
X = GetPrivateProfileString(“SYSTEM",“ScrollTitleLeft", “龙年大发!!!", Temp, Len(Temp), lpFileName)
m_strScrollTitleLeft = Tri m(Temp)
Form_Bouns.Caption = m_strAppTitle
Label_CompanyTitle.Caption = m_strTitle
End Sub
模块源程序:
'用于读取ini文件的API函数
Declare Function GetPrivateProfileString Lib “kernel32" Alias “GetPrivateProfil eStringA" (ByVal lpApplicationname As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As St ring) 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!!!)
Scro llTitleLeft=“祝您好运!!!"
如此一个小小的电脑抽奖程序便完成了。

以上程序在VB6.0 Windows98环境下编译通过
If bIsBegin = False Then
Line Input #1, strMaxIndex
nMaxIndex = V al(strMaxIndex)
MAX_INDEX = nMaxIndex - 1
ReDim m_strNameArray(0 T o 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 nRandomNu m As Integer
For j = 0 T o 10
For i = 0 T o nMaxIndex -1
nRando mNum = ((nMaxIndex -1) × Rnd) '利用Rnd函数
Temp = m_strNameArray(i).strName
m_strNameArray(i).strName = m_strNameArray(nRandomNu m).strName m_strNameArray(nRandomNu m).strName = T emp
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",“抽奖程序", T emp, Len(T emp), lpFileName)
m_strAppTitle = Trim(T emp)
T emp =“"
X = GetPrivateProfileString(“SYSTEM", "Title", "欢迎使用抽奖程序", Temp, Len(T emp), lpFileName)
m_strTitle = Trim(Temp)
T emp = “"
X = GetPrivateProfileString(“SYSTEM",“ScrollTitleRight", “恭喜发财!!!", T emp, Len(T emp), lpFileName)
m_strScrollTitleRight = Trim(T emp)
X = GetPrivateProfileString(“SYSTEM",“ScrollTitleLeft", “龙年大发!!!", T emp, Len(T emp), lpFileName)
m_strScrollTitleLeft = Tri m(Temp)
Form_Bouns.Caption = m_strAppTitle
Label_CompanyTitle.Caption = m_strTitle
End Sub
模块源程序:
'用于读取ini文件的API函数
Declare Function GetPrivateProfileString Lib “kernel32" Alias “GetPrivateProfileStringA" (ByV al lpApplicationname As String, ByV al lpKeyName As String, ByV al lpDefault As String, ByV al lpReturnedString As String, ByV al nSize As Long, ByV al lpFileName As String) As Long Public T ype MyName
strName As String
bIsSelect As Boolean
End T ype
由于程序利用的windows ini文件保存一些标题信息,因而可以方便的修改使用环境,及标题内容。

见ini文件内容:
[SYSTEM]
;应用程序的form名称
AppTitle=“风云电脑抽奖T est"
;窗口的内的标题(限9个字)
Title=“大抽奖"
;右滚动的文字(仅能为如下格式:XXXX!!!)
ScrollTitleRight=“恭喜发财!!!"
;左滚动的文字(仅能为如下格式:XXXX!!!)
ScrollTitleLeft=“祝您好运!!!"
如此一个小小的电脑抽奖程序便完成了。

以上程序在VB6.0 Windows98环境下编译通过
近年来在娱乐节目之中常常见到利用电脑来抽奖,笔者对其发生了兴趣遂自己动手用VB编了一个小程序来实现电脑抽奖的小功能,其原理如下:
主要利用VB中的Rnd函数,来实现随机查找和打乱排序的功能,从而实现随机抽奖的目的。

Rnd函数的语法结构是Rnd[(number)],可选的nu mber参数是single或任何有效的数值表达式。

Rnd函数返回小于1但大于或等于0的值。

nu mber 的值决定了Rnd 生成随机数的方式。

为了生成某个范围内的随机整数,可使用以下公式:
Int((upperbound -lowerbound +1) × Rnd +lowerbound)
这里,upperbound 是随机数范围的上限,而lowerbound 则是随机数范围的下限。

另外,程序中还使用了IN I文件,Windows INI文件,可解释为Windows初始化文件。

它是一种专门用来保存应用程序初始化信息和运行环境信息的文本文件。

ini文件是一种文本文件,它可以通过Notepad等文本编辑器进行编辑。

ini文件具有特定的格式。

一个INI文件是由若干个段(section)组成的,每个段中包含若干关键字(key)及相应的值(value)。

创建应用程序自己的INI文件,通过INI文件保存应用程序的一些运行环境信息,然后在程序中读取INI文件中的设置信息并据以处理。

一旦程序的运行环境需要变更,则可以通过直接修改IN I文件,或在程序中提供专门的界面间接地修改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
Co mmand_Start_Stop.Caption =
“开始"
Label_FlashName.Visible = True
Ti mer_FlashName.Enabled = True
Ti mer_ScrollName.Enabled = False
Label_FlashName =
m_strNameArray(m_nNameIndex).strName +“中奖了!"
m_strNameArray(m_nNameIndex).bIsSelect = True
m_nSelectNum = m_nSelectNum + 1
Di m Temp As MyName
Temp =m_strNameArray(MA X_INDEX)
m_str Name Array(MA X-INDEX) = m_strNameArray(m_nNameIndex) m_strNameArray(m_nNameIndex) =Temp
MA X_INDEX = MAX_INDEX - 1
If MAX_INDEX = 0 Then
MsgBox “非常感谢您使用本软件"
End If
Else '按开始钮
m_bIsStart = True
Co mmand_Start_Stop.Caption = “停止"
Co mmand_Start_Stop.Enabled = False
Ti mer_ScrollName.Enabled = True
Ti mer_FlashName.Enabled = False
Label_FlashName.Caption = “"
End If
End Sub
Private Sub Form_Load()
Form_Bouns.ScaleMode = 3
m_nNameIndex = 0
m_bIsStart = False
Ti mer_ScrollName.Enabled = True
Ti mer_ScrollTitle.Enabled = True
Label_FlashName.Visible = False
Label_ScrollName.Caption = “"
nEnableSecond = 0
'定义起始秒数
ReDi mNameArray
'获得文本中的名字和打乱名字顺序
nScrollStep = 5 '设定滚动字的步长
nScrollWidth = Label_Congruation.Left
'设定title的移动宽度
bScrollState = False
'设定缺省的开始滚动方向为向左
m_nSelectNum = 0
'初始化被选定数为0
Init
'初始化本程序的界面
End Sub
Private Sub Timer_FlashName_Ti mer() '闪动中奖者姓名If Label_FlashName.Visible = True Then
Label_FlashName.Visible = False
Else
Label_FlashName.Visible = True
End If
End Sub
Private Sub Timer_ScrollName_Ti mer() '滚动出现名字If m_bIsStart = True Then
If m_nNameIndex >= MA X_INDEX Then
m_nNameIndex = 0
End If
m_nNameIndex =m_nNameIndex + 1
If m_strNameArray(m_nNameIndex).bIsSelect = True Then If m_nNameIndex < MA X-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
Co mmand_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)
用VB6.0编写电脑抽奖程序
近年来在娱乐节目之中常常见到利用电脑来抽奖,笔者对其发生了兴趣遂自己动手用V B编了一个小程序来实现电脑抽奖的小功能,其原理如下:
主要利用V B中的Rnd函数,来实现随机查找和打乱排序的功能,从而实现随机抽奖的目的。

Rnd函数的语法结构是Rnd[(number)],可选的number参数是single或任何有效的数值表达式。

Rnd函数返回小于1但大于或等于0的值。

number 的值决定了Rnd 生成随机数的方式。

为了生成某个范围内的随机整数,可使用以下公式:
Int((upperbound -low erbound +1) × Rnd +low erbound)
这里,upperbound 是随机数范围的上限,而low erbound 则是随机数范围的下限。

另外,程序中还使用了INI文件,Window s INI文件,可解释为Window s初始化文件。

它是一种专门用来保存应用程序初始化信息和运行环境信息的文本文件。

ini文件是一种文本文件,它可以通过Notepad等文本编辑器进行编辑。

ini文件具有特定的格式。

一个INI文件是由若干个段(section)组成的,每个段中包含若干关键字(key)及相应的值(v alue)。

创建应用程序自己的INI文件,通过INI文件保存应用程序的一些运行环境信息,然后在程序中读取INI文件中的设置信息并据以处理。

一旦程序的运行环境需要变更,则可以通过直接修改INI 文件,或在程序中提供专门的界面间接地修改INI文件来保证程序的可用性。

程序运行时如图:
源程序及注释如下:
'窗体源程序
O ption Explicit
Dim m_strNameA rray() A s MyName
Dim m_bIsStart A s Boolean
Dim m_nNameIndex A s Integer
Dim MA X_INDEX A s Integer
Dim m_nSelectNum A s Integer
'被选定数
Dim nScrollStep A s Integer
Dim nScrollWidth A s Integer
Dim bScrollState A s Boolean
Dim nEnableSecond A s Integer
Dim m_strTitle A s String
Dim m_strA ppTitle A s String
Dim m_strScrollTitleLeft A s String
Dim m_strScrollTitleRight A s String
Priv ate Sub C ommand_Start_Stop_C lick()
If m_bIsStart = True Then
'按停止钮
m_bIsStart = F alse
C ommand_Start_Stop.C aption =
“开始"
Label_F lashName.Visible = True
Timer_F lashName.Enabled = True
Timer_ScrollName.Enabled = F alse
Label_F lashName =
m_strNameA rray(m_nNameIndex).strName +“中奖了!"
m_strNameA rray(m_nNameIndex).bIsSelect = True
m_nSelectNum = m_nS electNum + 1
Dim Temp A s MyName
Temp =
m_strNameA rray(MA X_INDEX)
m_str Name A rray(MA X-INDEX) = m_strNameA rray(m_nNameIndex) m_strNameA rray(m_nNameIndex) =
Temp
MA X_INDEX = MA X_INDEX - 1
If MA X_INDEX = 0 Then
MsgBox “非常感谢您使用本软件"
End If
Else '按开始钮
m_bIsStart = True
C ommand_Start_Stop.C aption = “停止"
C ommand_Start_Stop.Enabled = F alse
Timer_ScrollName.Enabled = True
Timer_F lashName.Enabled = F alse
Label_F lashName.Caption = “"
End If
End Sub
Priv ate Sub F orm_Load()
F orm_Bouns.ScaleMode = 3
m_nNameIndex = 0
m_bIsStart = F alse
Timer_ScrollName.Enabled = True
Timer_ScrollTitle.Enabled = True
Label_F lashName.Visible = F alse
Label_ScrollName.C aption = “"
nEnableSecond = 0
'定义起始秒数
ReDimNameA rray
'获得文本中的名字和打乱名字顺序
nScrollStep = 5 '设定滚动字的步长
nScrollWidth = Labe l_C ongruation.Left
'设定title的移动宽度
bScrollState = F alse
'设定缺省的开始滚动方向为向左
m_nSelectNum = 0
'初始化被选定数为0
Init
'初始化本程序的界面
End Sub
Priv ate Sub Timer_F lashName_Timer() '闪动中奖者姓名
If Label_F lashName.V isible = True Then
Label_F lashName.Visible = F alse
Else
Label_F lashName.Visible = True
End If
End Sub
Priv ate Sub Timer_ScrollName_Timer() '滚动出现名字
If m_bIsStart = True Then
If m_nNameIndex >= MA X_INDEX Then
m_nNameIndex = 0
End If
m_nNameIndex =
m_nNameIndex + 1
If m_strNameA rray(m_nNameIndex).bIsSelect = True Then
If m_nNameIndex <
MA X-INDEX Then
m_nNameIndex =
m_nNameIndex + 1
Else
m_nNameIndex = 0
End If
End If
Label_ScrollName.C aption = m_str
NameA rray(m_nNameIndex).strName
'End If
End If
End Sub
Priv ate Sub Timer_ScrollTitle_Timer() '滚动“恭喜发财"字样
If bScrollState = F alse Then '向左滚
nScrollStep = 10
Label_C ongruation.C aption = m_strScrollTitleLeft
If nScrollWidth > 0 Then
nScrollWidth =
nScrollWidth -nScrollStep
Else
bScrollState = True
End If
Else '向右滚
nScrollStep = -10
Label_C ongruation.C aption =
m_strScrollTitleRight
If nScrollWidth < F orm_Bouns.ScaleWidth -Label_C ongruation.Width Then nScrollWidth =
nScrollWidth -nScrollStep
Else
bScrollState = F alse
End If
End If
Label_C ongruation.Left = nScrollWidth
'以下为8秒钟内使“停止"按钮有效
If nEnableSecond <= 49 Then
If m_bIsStart = True Then
nEnableSecond =nEnableSecond + 1
End If
Else
If m_bIsStart = True Then
C ommand_Start_Stop.Enabled = True
nEnableSecond = 0
End If
End If
End Sub
'动态定义数组
Priv ate Sub ReDimNameA rray()
Dim nMaxIndex A s Integer
Dim strMaxIndex A s String
Dim nIndex A s Integer
Dim bIsBegin A s Boolean
bIsBegin = F alse
nIndex = 0
O pen A pp.Path +“ ame.txt" F or Input A s #1 '读文件Do U ntil EOF(1)
If bIsBegin = F alse Then
Line Input #1, strMaxIndex
nM
If bIsBegin = False Then
Line Input #1, strMaxIndex
nMaxIndex = V al(strMaxIndex)
MAX_INDEX = nMaxIndex - 1
ReDim m_strNameArray(0 T o 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 nRandomNu m As Integer
For j = 0 T o 10
For i = 0 T o nMaxIndex -1
nRando mNum = ((nMaxIndex -1) × Rnd) '利用Rnd函数
Temp = m_strNameArray(i).strName
m_strNameArray(i).strName = m_strNameArray(nRandomNu m).strName
m_strNameArray(nRandomNu m).strName = T emp
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",“抽奖程序", T emp, Len(T emp), lpFileName)
m_strAppTitle = Trim(T emp)
T emp =“"
X = GetPrivateProfileString(“SYSTEM", "Title", "欢迎使用抽奖程序", Temp, Len(T emp), lpFileName)
m_strTitle = Trim(Temp)
T emp = “"
X = GetPrivateProfileString(“SYSTEM",“ScrollTitleRight", “恭喜发财!!!", T emp, Len(T emp), lpFileName)
m_strScrollTitleRight = Trim(T emp)
X = GetPrivateProfileString(“SYSTEM",“ScrollTitleLeft", “龙年大发!!!", T emp, Len(T emp), lpFileName)
m_strScrollTitleLeft = Tri m(Temp)
Form_Bouns.Caption = m_strAppTitle
Label_CompanyTitle.Caption = m_strTitle
End Sub
模块源程序:
'用于读取ini文件的API函数
Declare Function GetPrivateProfileString Lib “kernel32" Alias “GetPrivateProfileStringA" (ByV al lpApplicationname As String, ByV al lpKeyName As String, ByV al lpDefault As String, ByV al lpReturnedString As String, ByV al nSize As Long, ByV al lpFileName As String) As Long Public T ype MyName
strName As String
bIsSelect As Boolean
End T ype
由于程序利用的windows ini文件保存一些标题信息,因而可以方便的修改使用环境,及标题内容。

见ini文件内容:
[SYSTEM]
;应用程序的form名称
AppTitle=“风云电脑抽奖T est"
;窗口的内的标题(限9个字)
Title=“大抽奖"
;右滚动的文字(仅能为如下格式:XXXX!!!)
ScrollTitleRight=“恭喜发财!!!"
;左滚动的文字(仅能为如下格式:XXXX!!!)
ScrollTitleLeft=“祝您好运!!!"
如此一个小小的电脑抽奖程序便完成了。

以上程序在VB6.0 Windows98环境下编译通过
年来在娱乐节目之中常常见到利用电脑来抽奖,笔者对其发生了兴趣遂自己动手用VB编了一个小程序来实现电脑抽奖的小功能,其原理如下:
主要利用VB中的Rnd函数,来实现随机查找和打乱排序的功能,从而实现随机抽奖的目的。

Rnd函数的语法结构是Rnd[(number)],可选的number参数是single或任何有效的数值表达式。

Rnd函数返回小于1但大于或等于0的值。

number的值决定了Rnd生成随机数的方式。

为了生成某个范围内的随机整数,可使用以下公式:
Int((upperbound-lowerbound+1)×Rnd+lowerbound)
这里,upperbound是随机数范围的上限,而lowerbound则是随机数范围的下限。

另外,程序中还使用了INI文件,WindowsINI文件,可解释为Windows初始化文件。

它是一种专门用来保存应用程序初始化信息和运行环境信息的文本文件。

ini文件是一种文本文件,它可以通过Notepad等文本编辑器进行编辑。

ini 文件具有特定的格式。

一个INI文件是由若干个段(section)组成的,每个段中包含若干关键字(key)及相应的值(value)。

创建应用程序自己的INI文件,通过INI 文件保存应用程序的一些运行环境信息,然后在程序中读取INI文件中的设置信息并据以处理。

一旦程序的运行环境需要变更,则可以通过直接修改INI文件,或在程序中提供专门的界面间接地修改INI文件来保证程序的可用性。

程序运行时如图:
源程序及注释如下:
'窗体源程序
OptionExplicit
Dimm_strNameArray()AsMyName
Dimm_bIsStartAsBoolean
Dimm_nNameIndexAsInteger
DimMAX_INDEXAsInteger
Dimm_nSelectNumAsInteger
'被选定数
DimnScrollStepAsInteger
DimnScrollWidthAsInteger
DimbScrollStateAsBoolean
DimnEnableSecondAsInteger
Dimm_strTitleAsString
Dimm_strAppTitleAsString
Dimm_strScrollTitleLeftAsString
Dimm_strScrollTitleRightAsString
PrivateSubCommand_Start_Stop_Click()
Ifm_bIsStart=TrueThen
'按停止钮
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
DimTempAsMyName
Temp=
m_strNameArray(MAX_INDEX)
m_strNameArray(MAX-INDEX)=m_strNameArray(m_nNameIndex) m_strNameArray(m_nNameIndex)=
Temp
MAX_INDEX=MAX_INDEX-1
IfMAX_INDEX=0Then
MsgBox“非常感谢您使用本软件"
EndIf
Else'按开始钮
m_bIsStart=True
Command_Start_Stop.Caption=“停止"
Command_Start_Stop.Enabled=False
Timer_ScrollName.Enabled=True
Timer_FlashName.Enabled=False
Label_FlashName.Caption=“"
EndIf
EndSub
PrivateSubForm_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
'初始化本程序的界面
EndSub
PrivateSubTimer_FlashName_Timer()'闪动中奖者姓名
IfLabel_FlashName.Visible=TrueThen
Label_FlashName.Visible=False
Else
Label_FlashName.Visible=True
EndIf
EndSub
PrivateSubTimer_ScrollName_Timer()'滚动出现名字
Ifm_bIsStart=TrueThen
Ifm_nNameIndex>=MAX_INDEXThen
m_nNameIndex=0
EndIf
m_nNameIndex=
m_nNameIndex+1
Ifm_strNameArray(m_nNameIndex).bIsSelect=TrueThen Ifm_nNameIndex<
MAX-INDEXThen
m_nNameIndex=
m_nNameIndex+1
Else
m_nNameIndex=0
EndIf
EndIf
Label_ScrollName.Caption=m_str
NameArray(m_nNameIndex).strName
'EndIf
EndIf
EndSub
PrivateSubTimer_ScrollTitle_Timer()'滚动“恭喜发财"字样IfbScrollState=FalseThen'向左滚
nScrollStep=10
Label_Congruation.Caption=m_strScrollTitleLeft
IfnScrollWidth>0Then
nScrollWidth=
nScrollWidth-nScrollStep
Else
bScrollState=True
EndIf
Else'向右滚
nScrollStep=-10
Label_Congruation.Caption=
m_strScrollTitleRight
IfnScrollWidth<Form_Bouns.ScaleWidth-Label_Congruation.WidthThen nScrollWidth=
nScrollWidth-nScrollStep
Else
bScrollState=False
EndIf
EndIf
Label_Congruation.Left=nScrollWidth
'以下为8秒钟内使“停止"按钮有效
IfnEnableSecond<=49Then
Ifm_bIsStart=TrueThen
nEnableSecond=nEnableSecond+1
EndIf
Else
Ifm_bIsStart=TrueThen
Command_Start_Stop.Enabled=True
nEnableSecond=0
EndIf
EndIf
EndSub
'动态定义数组
PrivateSubReDimNameArray()
DimnMaxIndexAsInteger
DimstrMaxIndexAsString
DimnIndexAsInteger
DimbIsBeginAsBoolean
bIsBegin=False
nIndex=0
OpenApp.Path+“\name.txt"ForInputAs#1'读文件
DoUntilEOF(1)
IfbIsBegin=FalseThen
LineInput#1,strMaxIndex
nMaxIndex=V al(strMaxIndex)
MAX_INDEX=nMaxIndex-1
ReDimm_strNameArray(0TonMaxIndex-1)
bIsBegin=True
Else
LineInput#1,m_strNameArray(nIndex).strName
m_strNameArray(nIndex).bIsSelect=False
nIndex=nIndex+1
EndIf
Loop
'以下为打乱人员顺序10次
Dim i As Integer
Dim j As Integer
Dim Temp As String
DimnRandomNumAsInteger
Forj=0To10
Fori=0TonMaxIndex-1
nRandomNum=((nMaxIndex-1)×Rnd)'利用Rnd函数
Temp=m_strNameArray(i).strName
m_strNameArray(i).strName=m_strNameArray(nRandomNum).strName
m_strNameArray(nRandomNum).strName=Temp
Nexti
Nextj
EndSub
PrivateSubInit()'读取INI文件
DimXAsLong
DimlpFileName
DimTempAsString×50
lpFileName=App.Path+“\Sortition.ini"
X=GetPrivateProfileString(“SYSTEM",“AppTitle",“抽奖程序",Temp,Len(Temp),lpFileName)
m_strAppTitle=Trim(Temp)
Temp=“"
X=GetPrivateProfileString(“SYSTEM","Tit le","欢迎使用抽奖程序",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
EndSub
模块源程序:
'用于读取ini文件的API函数
DeclareFunctionGetPrivateProfileStringLib“kernel32"Alias“GetPrivate ProfileStringA"(ByVallpApplicationnameAsString,ByVallpKeyNameAsString ,ByVallpDefaultAsString,ByVallpReturnedStringAsString,ByValnSizeAsLon g,ByVallpFileNameAsString)AsLong
PublicTypeMyName
strNameAsString
bIsSelectAsBoolean
EndType
由于程序利用的windowsini文件保存一些标题信息,因而可以方便的修改使用环境,及标题内容。

见ini文件内容:
[SYSTEM]
;应用程序的form名称
AppTitle=“风云电脑抽奖Test"
;窗口的内的标题(限9个字)
Title=“大抽奖"
;右滚动的文字(仅能为如下格式:XXXX!!!)
ScrollTitleRight=“恭喜发财!!!"
;左滚动的文字(仅能为如下格式:XXXX!!!)
ScrollTitleLeft=“祝您好运!!!"
如此一个小小的电脑抽奖程序便完成了。

以上程序在VB6.0Windows98环境下编译通过->
'设定缺省的开始滚动方向为向左
m_nSelectNum = 0
'初始化被选定数为0
Init
'初始化本程序的界面
End Sub
Private Sub Timer_Flash Name_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。

相关文档
最新文档