VB编程抽奖,急!

VB编程抽奖,急!,第1张

效果是可以,代码有些繁琐。如果要改进,自己写函数吧。

代码如下。

Dim NameStr As String

Private Sub Command2_Click()

Command2Caption = IIf(Command2Caption = "开始", "停止", "开始")

Dim NameArr() As String

NameArr() = Split(NameStr, ",")

Randomize

Do While Command2Caption = "停止"

Label2Caption = NameArr(Rnd UBound(NameArr))

t = Timer

Do: DoEvents

Loop Until Timer > t + 005

Loop

NameStr = Replace(NameStr, Label2Caption, "")

NameStr = Replace(NameStr, ",,", ",")

End Sub

Private Sub Command3_Click()

Command3Caption = IIf(Command3Caption = "开始", "停止", "开始")

Dim NameArr() As String

NameArr() = Split(NameStr, ",")

Randomize

Do While Command3Caption = "停止"

Label3Caption = NameArr(Rnd UBound(NameArr))

t = Timer

Do: DoEvents

Loop Until Timer > t + 005

Loop

NameStr = Replace(NameStr, Label3Caption, "")

NameStr = Replace(NameStr, ",,", ",")

End Sub

Private Sub Command4_Click()

Command4Caption = IIf(Command4Caption = "开始", "停止", "开始")

Dim NameArr() As String

NameArr() = Split(NameStr, ",")

Randomize

Do While Command4Caption = "停止"

Label4Caption = NameArr(Rnd UBound(NameArr))

t = Timer

Do: DoEvents

Loop Until Timer > t + 005

Loop

NameStr = Replace(NameStr, Label4Caption, "")

NameStr = Replace(NameStr, ",,", ",")

End Sub

Private Sub Form_Load()

Command2Caption = "开始"

Command3Caption = "开始"

Command4Caption = "开始"

NameStr = "赵一,钱二,孙三,李四,周五,吴六,郑七,王九"

End Sub

商场搞活动想要制作一个抽奖程序,今天我们就来看看使用vb60制作抽奖小程序的教程。

1、首先启动vb60,执行 文件-新建命令 ,d出新建工程对话框,在该对话框中选择 标准的exe 后点击打开按钮, 进入vb程序主界面。

2、在主界面中,按住鼠标左键按住窗体周围的任意一个小正方形进行拖拽, 调节窗体的大小 ,直至自己满意为止。

3、选择窗体,在其右边的属性中找到 boderstyle属性 ,设置 属性值为none, 接着再找到 startupposition属性 ,修改属性值为2-屏幕中心,再次修改 backcolor属性 值为淡**。

4、在工具箱里选择frame1,然后在窗体上进行拖拽,大小比窗体小一些,并调整其位置,使其居中,在属性窗口找到 backcolor属性 修改其属性值为粉红色,这样设置看起来就有层次感了。

5、在工具箱里双击标签控件两次,在frame1中显示两个标签控件, 修改lable1的caption属性名称为“幸运抽奖”, 修改label2的caption属性为“0”,同时修改这两个标签控件的backcolor属性为粉色,和 frame 控件保持一致。

6、分别选择 label1和label2 ,修改其font属性,打开字体对话框选择字体为王羲之书法字体,字形为常规,字号为三号,点击确定按钮。

7、选择工具箱里按钮控件,连续双击四次,在frame1上显示四个按钮,调整他们在frame1上的位置,使排列整齐,并依次修改四个按钮的caption属性,属性值依次为“ 号码滚动”、“号码停止”、“号码重置”、“退出程序”。

8、接着选择工具箱里计时器控件并双击,在frame1上显现出来该控件,该控件的作用很大,起到计时作用,同时需要注意的是在程序运行时控件是不显示出来的。

9、双击号码滚动控件,进入代码编辑区域,对象选择 command1, 过程选择click事件,在其输入代码为

Timer1Enabled = True

主要作用是触发器开始工作。

10、双击号码停止按钮,输入代码为 Timer1Enabled = False ,起到的作用是触发器停止工作。

11、双击号码重置按钮输入代码 为Label1Caption = "0", 起到的作用是每次号码滚动后都要重新置0让每次抽奖的起始都是一样的。并双击退出程序按钮输入代码为end。

12、代码timer1的代码区域,输入代码为

Randomize

Label1Caption = "幸运中奖的号码是:" & Int(Rnd 64 + 1)

主要功能是使用随机函数产生不同的随机数值

13、代码编程完成后就可以运行调试了,点击启动标志,进行编译,如果出现错误根据错误提示进行修改,并不断调试直至通过达到预期目的为止。提示出现要求对象说明控件名称有错误,修改过来,提示出现子程序未定义则说明函数不对,即系统不能认识的函数,进行修改。

14、调试无误后,你会看到号码在不停的滚动, 点击号码停止即可停止 ,点击号码重置就会出现号码为0,点击退出程序即可界面消失,这说明已经达到所预期的功能了。

15、执行文件-生成抽奖exe,这样经过编译就生成了可执行文件,这样就可以跨平台 *** 作了,不再依赖原始程序。接 着执行文件-保存命令, 把所有的源文件进行保存即可,以方便以后修改使用。

以上就是vb60中设计抽奖器的教程,希望大家喜欢,请继续关注我们。

在定义函数时有时在语句前,有的在语句后。

希望能帮到你!

// giftDlgh : header file

//

#if !defined

#if _MSC_VER > 1000

#pragma once

#endif // _MSC_VER > 1000

// CGiftDlg dialog

class CGiftDlg : public CDialog

{

// Construction

public:

int FreeMem();

int ReSetData();

int InitData(); //初始化数组

CGiftDlg(CWnd pParent = NULL); // standard constructor

char code[1000];//指向身份z号数组的指针

char name[1000];//指向姓名数组的指针

char data[1000]; //随机数组

int ptr; //进度条当前指向随机数组的指针

int totalid; //参加抽奖的id总数,如果抽出一个,自减1

bool bstart; //标记进度条是否在滚动

// Dialog Data

//{{AFX_DATA(CGiftDlg)

enum { IDD = IDD_GIFT_DIALOG };

CButton m_btgo;

CString m_code;

CString m_msg;

//}}AFX_DATA

// ClassWizard generated virtual function overrides

//{{AFX_VIRTUAL(CGiftDlg)

protected:

virtual void DoDataExchange(CDataExchange pDX); // DDX/DDV support

//}}AFX_VIRTUAL

// Implementation

protected:

HICON m_hIcon;

// Generated message map functions

//{{AFX_MSG(CGiftDlg)

virtual BOOL OnInitDialog();

afx_msg void OnPaint();

afx_msg HCURSOR OnQueryDragIcon();

virtual void OnOK();

afx_msg void OnTimer(UINT nIDEvent);

afx_msg void OnCancelMode();

virtual void OnCancel();

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

//{{AFX_INSERT_LOCATION}}

// Microsoft Visual C++ will insert additional declarations immediately before the previous line

#endif // !defined(AFX_GIFTDLG_H__21D8D4EF_07F4_4F29_9351_78F99BFF7723__INCLUDED_)

// giftDlgcpp : implementation file

//

#include "stdafxh"

#include "gifth"

#include "giftDlgh"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

// CGiftDlg dialog

CGiftDlg::CGiftDlg(CWnd pParent /=NULL/)

: CDialog(CGiftDlg::IDD, pParent)

{

//{{AFX_DATA_INIT(CGiftDlg)

m_code = _T("");

m_msg = _T("");

//}}AFX_DATA_INIT

// Note that LoadIcon does not require a subsequent DestroyIcon in Win32

m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

}

void CGiftDlg::DoDataExchange(CDataExchange pDX)

{

CDialog::DoDataExchange(pDX);

//{{AFX_DATA_MAP(CGiftDlg)

DDX_Control(pDX, IDOK, m_btgo);

DDX_Text(pDX, IDC_STATIC_CODE2, m_code);

DDX_Text(pDX, IDC_STATIC_MSG, m_msg);

//}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP(CGiftDlg, CDialog)

//{{AFX_MSG_MAP(CGiftDlg)

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

ON_WM_TIMER()

ON_WM_CANCELMODE()

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

// CGiftDlg message handlers

BOOL CGiftDlg::OnInitDialog()

{

CDialog::OnInitDialog();

InitData();

bstart=false;

// Set the icon for this dialog The framework does this automatically

// when the application's main window is not a dialog

SetIcon(m_hIcon, TRUE); // Set big icon

SetIcon(m_hIcon, FALSE); // Set small icon

// TODO: Add extra initialization here

m_msgFormat ("按开始键开始滚动,抽奖箱中人数:%d",totalid);

UpdateData(FALSE);

return TRUE; // return TRUE unless you set the focus to a control

}

// the minimized window

HCURSOR CGiftDlg::OnQueryDragIcon()

{

return (HCURSOR) m_hIcon;

}

void CGiftDlg::OnOK()

{

// TODO: Add extra validation here

if(bstart)

{

KillTimer(1);

bstart=false;

m_msgFormat ("按开始键开始滚动,抽奖箱中人数:%d",totalid-1);

m_codeFormat ("抽出的号码:%s\n姓名:%s",code[data[ptr]],name[data[ptr]]);

//AfxMessageBox(m_code);

ReSetData();//剔除抽出的号码,重新打乱

if(totalid<1)

{

m_btgoEnableWindow (FALSE);

}

m_btgoSetWindowText ("开始");

}

else

{

SetTimer(1, 100,NULL);

bstart=true;

m_msgFormat ("按停止键抽一个奖");

m_btgoSetWindowText ("停止");

}

UpdateData(FALSE);

//CDialog::OnOK();

}

void CGiftDlg::OnTimer(UINT nIDEvent)

{

// TODO: Add your message handler code here and/or call default

m_codeFormat ("现在的号码:%s",code[data[ptr]]);

UpdateData(FALSE);

ptr++;

ptr%=totalid;

CDialog::OnTimer(nIDEvent);

}

void CGiftDlg::OnCancelMode()

{

CDialog::OnCancelMode();

// TODO: Add your message handler code here

}

int CGiftDlg::InitData()

{

FILE fp=fopen("idtxt","r");

ptr=0;

totalid=1;

if (fp==NULL)

{

return 0;

}

char buf[80];

int line=0;

while(!feof(fp))

{

char p=fgets(buf,80,fp);

if (p!=NULL)

{

name[line]=(char)malloc(80);

code[line]=(char)malloc(80);

memset(code[line],0,80);

memset(name[line],0,80);

int flag=0;

for(int i=0;i<80&&buf[i]!='\0';i++)

{

if((buf[i]!=',' )&& (flag==0))

{

code[line][i]=buf[i];

}

else if(flag==0)

{

flag=i;

}

else if((buf[i]!=',' )&& (flag!=0))

{

name[line][i-flag-1]=buf[i];

}

}

TRACE("%s-%s",code[line],name[line]);

memset(buf,0,80);

line++;

}

}

fclose(fp);

for(int j=0;j<line;j++)

{

data[j]=j;

}

for(int i=0;i<line;i++)

{

int pos=rand()%(line-i)+i;

int temp=data[i];

data[i]=data[pos];

data[pos]=temp;

TRACE("%d",data[i]);

}

totalid=line;

return 1;

}

int CGiftDlg::ReSetData()

{

//ptr剔除,与最后一个交换,然后释放内存

int line=totalid;

int temp=data[ptr];

data[ptr]=data[line-1];

data[line-1]=temp;

//AfxMessageBox(name[data[line-1]]);

free(code[data[line-1]]);

free(name[data[line-1]]);

totalid--;

line--;

ptr=0;

for(int i=0;i<line;i++)//重新打乱

{

int pos=rand()%(line-i)+i;

int temp=data[i];

data[i]=data[pos];

data[pos]=temp;

TRACE("%d",data[i]);

}

return 1;

}

int CGiftDlg::FreeMem()

{

int line=totalid;

for(int i=0;i<line;i++)

{

free(code[i]);

free(name[i]);

}

return 1;

}

void CGiftDlg::OnCancel()

{

// TODO: Add extra cleanup here

FreeMem();

CDialog::OnCancel();

}

idtxt

332601771212061,章鱼

110103198511110453,李光

21010119541201045X,周瑜

320304780102066,韩信

442601771212061,沈兵

510103198511110453,宏志

220101841201045X,范进

520304197801020661,曾国

352601771212088,乱马

540122198511110453,贾海

以上就是关于VB编程抽奖,急!全部的内容,包括:VB编程抽奖,急!、vb6.0怎么制作一个抽奖小程序 vb6.0抽奖器的制作方法、求VB写的循环人名抽奖程序源代码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9824240.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存