用VB编了一个小程序来实现电脑抽奖的小功能.docx

上传人:b****8 文档编号:11181907 上传时间:2023-02-25 格式:DOCX 页数:22 大小:24.93KB
下载 相关 举报
用VB编了一个小程序来实现电脑抽奖的小功能.docx_第1页
第1页 / 共22页
用VB编了一个小程序来实现电脑抽奖的小功能.docx_第2页
第2页 / 共22页
用VB编了一个小程序来实现电脑抽奖的小功能.docx_第3页
第3页 / 共22页
用VB编了一个小程序来实现电脑抽奖的小功能.docx_第4页
第4页 / 共22页
用VB编了一个小程序来实现电脑抽奖的小功能.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

用VB编了一个小程序来实现电脑抽奖的小功能.docx

《用VB编了一个小程序来实现电脑抽奖的小功能.docx》由会员分享,可在线阅读,更多相关《用VB编了一个小程序来实现电脑抽奖的小功能.docx(22页珍藏版)》请在冰豆网上搜索。

用VB编了一个小程序来实现电脑抽奖的小功能.docx

用VB编了一个小程序来实现电脑抽奖的小功能

用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

  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=Val(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次

  DimiAsInteger

  DimjAsInteger

  DimTempAsString

  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","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

  EndSub

  模块源程序:

  '用于读取ini文件的API函数

  DeclareFunctionGetPrivateProfileStringLib“kernel32"Alias“GetPrivateProfileStringA"(ByVallpApplicationnameAsString,ByVallpKeyNameAsString,ByVallpDefaultAsString,ByVallpReturnedStringAsString,ByValnSizeAsLong,ByVallpFileNameAsString)AsLong

  PublicTypeMyName

  strNameAsString

  bIsSelectAsBoolean

  EndType

  由于程序利用的windowsini文件保存一些标题信息,因而可以方便的修改使用环境,及标题内容。

  见ini文件内容:

  [SYSTEM]

  ;应用程序的form名称

  AppTitle=“风云电脑抽奖Test"

  ;窗口的内的标题(限9个字)

  Title=“大抽奖"

  ;右滚动的文字(仅能为如下格式:

XXXX!

!

!

  ScrollTitleRight=“恭喜发财!

!

!

"

  ;左滚动的文字(仅能为如下格式:

XXXX!

!

!

  ScrollTitleLeft=“祝您好运!

!

!

"

  如此一个小小的电脑抽奖程序便完成了。

  以上程序在VB6.0Windows98环境下编译通过

对于下雪的景象大家可能都不陌生,我们还是用VB来制作一个下雪的景象吧。

其实制作这样一个下雪的景象并不复杂,它的原理是首先在底色为黑色的屏幕上随机画出许多白点(雪花),然后使这些雪花不断地向下移动(重画),反复循环,就成功地模拟了下雪的景象。

下面是这个小程序,你可以修改其中的一些数据调整雪花的密度和雪花落下的快慢。

  双击窗体写如下代码:

  DimSnow(1000,2),AmountyAsInteger

  PrivateSubForm_Load()

  Form1.Show

  DoEvents

  Randomize

  Amounty=325

  ForJ=1ToAmounty

  Snow(J,0)=Int(Rnd*Form1.Width)

  Snow(J,1)=Int(Rnd*Form1.Height)

  Snow(J,2)=10+(Rnd*20)

  NextJ

  DoWhileNot(DoEvents=0)

  ForLS=1To10

  ForI=1ToAmounty

  OldX=Snow(I,0):

OldY=Snow(I,1)

  Snow(I,1)=Snow(I,1)+Snow(I,2)

  IfSnow(I,1)>Form1.HeightThen

  Snow(I,1)=0:

Snow(I,2)=5+(Rnd*30)

  Snow(I,0)=Int(Rnd*Form1.Width)

  OldX=0:

OldY=0

  EndIf

  Coloury=8*(Snow(I,2)-10):

Coloury=60+Coloury

  PSet(OldX,OldY),QBColor(0)

  PSet(Snow(I,0),Snow(I,1)),RGB(Coloury,Coloury,Coloury)

  NextI

  NextLS

  Loop

  End

  EndSub

  编写窗体的鼠标按下代码:

  PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)

  unloadme

  EndSub

  运行上面的小程序,就可以看到漫天的雪花在缓缓落下,地面上还会有积雪!

鼠标单击可结束程

在编程中经常会遇到应用程序中要输入大量数据的问题,如果能在该程序中实现象电子表格那样的输入界面,就可以解决这个问题。

----VB虽提供了Grid网格控件,但其只具有显示输出功能,要使其能接受输入数据,必须对它加以改造,在计算机报刊中的许多文章都对此进行了探讨,但所用方法都不能令人满意,笔者经过摸索,找出以下办法,供有兴趣者参考。

----首先在VB5.0环境下Form1中放上各控件:

Text1;Grid1;Command1;Command2;Vscroll1;Hscroll1。

----双击Form1打开Code窗口,编制程序代码。

Diminputcolnum,inputrownumAsInteger

PrivateSubCommand2_Click()

End

EndSub

PrivateSubForm_Activate()

Text1.SetFocus'文本框获得焦点

EndSub

PrivateSubForm_Load()

Grid1.ColWidth(0)=540

Grid1.RowHeight(0)=216'单元格的宽和高

inputcolnum=13

inputrownum=15'表中显示的列、行数

Grid1.Cols=20

Grid1.Rows=20'表中总的列、行数

HScroll1.Height=300

VScroll1.Width=300'水平和垂直滚动条的高、宽度

Grid1.Height=(inputrownum+1)'

(Grid1.RowHeight(0)+Grid1.GridLineWidth*12)

+12+HScroll1.Height

'800×600象素时为12;640×480为15

Grid1.Width=(inputcolnum+1)*

(Grid1.ColWidth(0)+Grid1.GridLineWidth*12)

+12+VScroll1.Width

'表的高、宽度

HScroll1.Width=Grid1.Width-VScroll1.Width

VScroll1.Height=Grid1.Height-HScroll1.Height

'水平和垂直滚动条的宽、高度

HScroll1.Left=Grid1.Left

HScroll1.Top=Grid1.Top+Grid1.Height-HScroll1.Height

'水平滚动条的位置

VScroll1.Left=Grid1.Left+Grid1.Width-VScroll1.Width

VScroll1.Top=Grid1.Top

'垂直滚动条的位置

HScroll1.Min=1

HScroll1.Max=Grid1.Cols-inputcolnum

VScroll1.Min=1

VScroll1.Max=Grid1.Rows-inputrownum

'水平和垂直滚动条的范围

Text1.Width=Grid1.ColWidth(0)

Text1.Height=Grid1.RowHeight(0)

'文本框的宽、高度

Text1.Left=Grid1.Left+Grid1.ColWidth(0)

+Grid1.GridLineWidth*12

Text1.Top=Grid1.Top+Grid1.RowHeight(0

 实时数据采集系统过去在DOS操作系统下一般是采用汇编语言开发制作。

随着Windows操作系统的普及应用,数据采集及工业控制等软件的开发也上升到Windows环境下。

可视化软件开发平台的出现,为软件开发提供了强大的图形界面功能,使得开发出来的各种应用软件具有良好的人机交互功能。

汇编语言的特点是功能强、运行速度快,但编程复杂、调试难,而高级语言具有良好的可读性及方便的调试手段。

  VisualBasic是Windows环境下简单、易学、高效的可视化编程语言开发系统,以其所见即所得的可视化界面设计风格和32位面向对象的程序设计等特点,已广泛地应用于各个领域,是很多计算机软件开发人员采用的开发工具。

VB不但提供了良好的界面设计能力,而且在微机串口通信方面也有很强的功能。

采用VB开发Winodws下的数据采集和工业控制应用软件十分方便,尤其软件界面设计非常便捷,编程工作量较小,开发周期短,特别适合非计算机专业的工程技术人员掌握和使用。

  2.MSComm控件特点

  MSComm控件是Microsoft提供的扩展控件,用于支持VB程序对串口的访问,该控制“隐藏”了大部分串口通讯的底层运行过程和许多烦琐的处理过程,同时支持查询方法和事件驱动通讯的机制,事件驱动通讯是交互方式处理串口事务的一种非常有效的方法,特别适合Windows程序的编写。

在串口通讯过程中,当发送数据、收到数据或产生传输错误时,触发MSComm控件的OnComm事件,然后可以通过判断CommEvent属性值获得事件类型,再根据事件类型进行相应数据处理。

因此用其实现微机串口的数据通讯相当简单,以很少的程序代码就可以轻松实现串口的访问和数据通讯。

  3.实时数据采集示例程序

  下面给出的应用实例,通过对一台工业八通道实时检测仪表数据通讯协议进行分析,利用VB6.0开发微机通过串口对多通道工业仪表进行实时数据采集的编程技术。

给出的程序代码具有通用性,并有详示,可以直接或稍加

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1