年底大奉送,最好的抽奖系统,公司年会值得拥有

原文:年底大奉送,最好的抽奖系统,公司年会值得拥有

       又到一年的年底了,很有企业(公司)都在策划年终活动了,有些企业(公司)福利比较好的话可能年终活动就比较好(抽奖、红包、轿车等等应有尽有),有些企业(公司)没赚到钱可能请员工吃顿饭都已经不错了。企业(公司)为了在年终晚会上活跃气氛,不得不搞些活动,那么活动自然而然少不了抽奖,企业(公司)为了体现公平公正的原则,必然会引进软件进行抽奖。(但是对于程序员来说用抽奖软件只是相对而言,舞弊是轻而易举的事情),所以说这个社会可能很多事情表面是公正的,但是实际又不是那么公平公正了,潜规则相对多,哎...多看淡这些事情就好了,毕竟每天快乐最重要。

       本人利用了业余时间对抽奖软件进行了研究,现在写出来供大家一起研究。抽奖程序分为抽奖主界面、基本设置(重新开始、基本设置、数据管理、关于和退出)、中奖结果等等几个部分。

程序运行主界面如下:

 

从以上图片可以看出这个抽奖程序分为几部分,标题(某某公司年终总结大会现场抽奖活动),开奖区(抽奖时滚动的名字和手机号码),再就是选择抽取是几等奖(分别有一等奖、二等奖和三等奖选项),开始按钮启动抽奖,奖项的设定可以从后台进行配置,动态进行加载。

点击开始实现逻辑:

 1 try
 2             {
 3                 //检查人员的数据有变化
 4                 if (DataAccess.DataIsChange)
 5                 {
 6                     Set_StuCount();
 7                 }
 8                 if (stuCount <= 0)
 9                 {
10                     MessageBox.Show("对不起,还没有人员信息,不能进行抽奖!", "没有记录", MessageBoxButtons.OK, MessageBoxIcon.Warning);
11                     return;
12                 }
13
14                 //--检测一等奖是否抽完
15                 string xSql1 = "select sys_Grade1 from SystemInfo";
16                 string xSql2 = "select count(stuID) from AwardsInfo Where awaGrade='一等奖'";
17                 DataTable dt1 = DA.GetDataTable(xSql1);
18                 DataTable dt2 = DA.GetDataTable(xSql2);
19                 if (rdb1.Checked == true)
20                 {
21                     if (dt1.Rows[0]["sys_Grade1"].ToString().Trim() == dt2.Rows[0][0].ToString().Trim())
22                     {
23                         MessageBox.Show("一等奖已经抽取完毕,请抽取其它奖项!!!");
24                         return;
25                     }
26                 }
27
28                 //--检测二等奖是否抽完
29                 string xSql3 = "select sys_Grade2 from SystemInfo";
30                 string xSql4 = "select count(stuID) from AwardsInfo Where awaGrade='二等奖'";
31                 DataTable dt3 = DA.GetDataTable(xSql3);
32                 DataTable dt4 = DA.GetDataTable(xSql4);
33                 if (rdb2.Checked == true)
34                 {
35                     if (dt3.Rows[0]["sys_Grade2"].ToString().Trim() == dt4.Rows[0][0].ToString().Trim())
36                     {
37                         MessageBox.Show("二等奖已经抽取完毕,请抽取其它奖项!!!");
38                         return;
39                     }
40                 }
41
42                 //--检测三等奖是否抽完
43                 string xSql5 = "select sys_Grade3 from SystemInfo";
44                 string xSql6 = "select count(stuID) from AwardsInfo Where awaGrade='三等奖'";
45                 DataTable dt5 = DA.GetDataTable(xSql5);
46                 DataTable dt6 = DA.GetDataTable(xSql6);
47                 if (rdb3.Checked == true)
48                 {
49                     if (dt5.Rows[0]["sys_Grade3"].ToString().Trim() == dt6.Rows[0][0].ToString().Trim())
50                     {
51                         MessageBox.Show("三等奖已经抽取完毕,请抽取其它奖项!!!");
52                         return;
53                     }
54                 }
55                 //--
56                 //lblID1.ForeColor = Color.White;
57                 lblID.Visible = false;
58                 //--
59                 this.btnBegin.Visible = false;
60                 this.btnOpen.Visible = true;
61                 //--
62                 timLD.Start();//--抽奖程序启动
63                 //--
64                 new PublicClass().MusicPlayer3(1);
65                 //--启动音乐
66                 new PublicClass().MusicPlayer(0);
67                 btnOpen.Enabled = true;
68                 btnOpen.Focus();
69             }
70             catch
71             { }

这些代码主要是获取保存在数据库(Access)中的数据,监测已经开出的奖项,启动抽奖的计时事件,这个计时事件启动抽奖程序,抽奖并会播放音乐,抽奖结束音乐也自动结束。抽奖的逻辑也就是随机数。

 1  #region * 计时事件
 2         /// <summary>
 3         /// <remarks>计时器事件</remarks>
 4         /// </summary>
 5         private void timLD_Tick(object sender, EventArgs e)
 6         {
 7             int randata;
 8             RanNum = new Random((int)DateTime.Now.Ticks);
 9             randata = RanNum.Next(stuCount);
10             this.lblClass.Text = DT_stu.Rows[randata]["stuID"].ToString();
11             lblName.Text = DT_stu.Rows[randata]["stuName"].ToString();
12             phone.Text = DT_stu.Rows[randata]["phone"].ToString();
13             string xx = phone.Text;
14             string xx1 = xx.Replace(xx.Substring(3, 4), "****");
15             this.lblID1.Text = this.lblName.Text;
16             this.lblID2.Text = xx1;
17         }
18         #endregion

点击开始后,按钮马上变成了结束,结束逻辑如下:

  1 try
  2             {
  3                 string strSQL = "select stuID from AwardsInfo";
  4                 DataTable DT_temp = DA.GetDataTable(strSQL);
  5                 if (DT_temp.Rows.Count >= stuCount)
  6                 {
  7                     timLD.Stop();
  8                     lblID1.Text = "所有人都已经获奖了!";
  9                     return;
 10                 }
 11                 //--
 12                 while (!Awa_Chk())
 13                 {
 14                     int randata;
 15                     RanNum = new Random((int)DateTime.Now.Ticks);
 16                     randata = RanNum.Next(stuCount);
 17                     lblClass.Text = DT_stu.Rows[randata]["stuID"].ToString();
 18                     lblName.Text = DT_stu.Rows[randata]["stuName"].ToString();
 19                     phone.Text = DT_stu.Rows[randata]["phone"].ToString();
 20                     string xx = phone.Text;
 21                     string xx1 = xx.Replace(xx.Substring(3, 4), "****");
 22                     this.lblID1.Text = this.lblName.Text;
 23                     this.lblID2.Text = xx1;
 24                 }
 25                 //--
 26                 this.btnBegin.Visible = true;
 27                 this.btnOpen.Visible = false;
 28                 //--
 29                 timLD.Stop();
 30                 //--停止音乐
 31                 new PublicClass().MusicPlayer(1);
 32                 //--启动线程
 33                 timer2.Start();
 34                 //--开始新的音乐
 35                 new PublicClass().MusicPlayer2(0);
 36                 //--
 37                 btnOpen.Enabled = false;
 38                 if (rdb1.Checked == true)
 39                 {
 40                     Awa_Save(lblClass.Text.Trim(), lblName.Text.Trim(), lblGrade.Text.Trim(), phone.Text.Trim());
 41                     this.labMess1.Text = lblName.Text.Trim();
 42                     string xx = phone.Text;
 43                     string xx1 = xx.Replace(xx.Substring(3, 4), "****");
 44                     this.labMess2.Text = xx1;
 45                     this.labMess3.Text = lblGrade.Text.Trim();
 46                 }
 47                 else if (rdb2.Checked == true)
 48                 {
 49                     Awa_Save(lblClass.Text.Trim(), lblName.Text.Trim(), lblGrade.Text.Trim(), phone.Text.Trim());
 50                     this.labMess1.Text = lblName.Text.Trim();
 51                     string xx = phone.Text;
 52                     string xx1 = xx.Replace(xx.Substring(3, 4), "****");
 53                     this.labMess2.Text = xx1;
 54                     this.labMess3.Text = lblGrade.Text.Trim();
 55                 }
 56                 else if (rdb3.Checked == true)
 57                 {
 58                     Awa_Save(lblClass.Text.Trim(), lblName.Text.Trim(), lblGrade.Text.Trim(), phone.Text.Trim());
 59                     this.labMess1.Text = lblName.Text.Trim();
 60                     string xx = phone.Text;
 61                     string xx1 = xx.Replace(xx.Substring(3, 4), "****");
 62                     this.labMess2.Text = xx1;
 63                     this.labMess3.Text = lblGrade.Text.Trim();
 64                 }
 65                 this.pInfo.Visible = true;
 66                 timer1.Start();
 67                 //--
 68                 string xstr1 = "select count(stuID) from AwardsInfo Where awaGrade='三等奖'";
 69                 DataTable xtable1 = DA.GetDataTable(xstr1);
 70                 //--
 71                 string xstr2 = "select count(stuID) from AwardsInfo Where awaGrade='二等奖'";
 72                 DataTable xtable2 = DA.GetDataTable(xstr2);
 73                 //--
 74                 string xstr3 = "select count(stuID) from AwardsInfo Where awaGrade='一等奖'";
 75                 DataTable xtable3 = DA.GetDataTable(xstr3);
 76                 //--
 77                 if ((xtable1.Rows[0][0].ToString() != "3") && (xtable2.Rows[0][0].ToString() == "0") && (xtable3.Rows[0][0].ToString() == "0"))
 78                 {
 79                     this.rdb3.Checked = true;
 80                     //--
 81                     this.rdb1.Enabled = false;
 82                     this.rdb2.Enabled = false;
 83                     this.rdb3.Enabled = true;
 84                 }
 85                 //--
 86                 if ((xtable2.Rows[0][0].ToString() != "2") && (xtable1.Rows[0][0].ToString() == "3") && (xtable3.Rows[0][0].ToString() == "0"))
 87                 {
 88                     this.rdb2.Checked = true;
 89                     //--
 90                     this.rdb1.Enabled = false;
 91                     this.rdb2.Enabled = true;
 92                     this.rdb3.Enabled = false;
 93                 }
 94                 //--
 95                 if ((xtable3.Rows[0][0].ToString() != "1") && (xtable1.Rows[0][0].ToString() == "3") && (xtable2.Rows[0][0].ToString() == "2"))
 96                 {
 97                     this.rdb1.Checked = true;
 98                     //--
 99                     this.rdb1.Enabled = true;
100                     this.rdb2.Enabled = false;
101                     this.rdb3.Enabled = false;
102                 }
103                 //--
104                 btnBegin.Focus();
105             }
106             catch
107             { }

抽奖结束后将结果保存在数据库里,这样就完成了一次抽奖过程。是不是非常简单,O(∩_∩)O哈哈~

抽奖时的效果图:

奖抽出后的效果图:

 

抽奖过程效果图和是不是抽奖结果图是不是很炫,呵呵,这个都是图片实现的。

  • 下面再介绍一下关于抽奖软件的一些设置:

基本设置效果图:

这个主要是对抽奖软件的标题,抽奖界面的主副标题的设置,还有就是奖项的设置和奖金的设置,这样就可以实心抽奖程序的灵活设置不再那么死板。

修改的实现逻辑:

 1             StringBuilder sbSQL = new StringBuilder("update SystemInfo set sys_TopLeft='");
 2             sbSQL.Append(txtTopLeft.Text + "',sys_Title='" + txtTitle.Text + "',sys_Title2='" + txtTitle2.Text);
 3             sbSQL.Append("',sys_Grade1='" + txtG1.Text + "',sys_Grade2='" + txtG2.Text + "',sys_Grade3='" + txtG3.Text);
 4             sbSQL.Append("',sys_Amount1='" + txtV1.Text + "',sys_Amount2='" + txtV2.Text + "',sys_Amount3='" + txtV3.Text + "'");
 5             if (DA.ExecuteSQL(sbSQL.ToString()))
 6             {
 7                 MessageBox.Show("修改系统基本设置成功!");
 8             }
 9             else
10             {
11                 MessageBox.Show("修改系统基本设置失败!");
12             }

更新一下数据库而已,O(∩_∩)O哈哈~

  • 下面再介绍一下数据管理界面,这个也是每一个抽奖程序必须具备的,一个抽奖程序离不开的还是抽奖的人员,所以这个就需要进行维护,可以对抽奖人员的新增、修改和删除操作,同时还提供数据的导入。

数据管理界面效果图:

以上界面及可实现对抽奖人员进行维护了,是不是很方便,O(∩_∩)O~。

下面再介绍一下抽奖结果显示界面了,首先看看界面实现效果图。

这个界面主要是查询出中奖人员名字和手机号码,实现逻辑如下:

 1 string strSQL = "select stuName as 姓名,phone as 手机号码,awaGrade as 奖项 from AwardsInfo";
 2             DataTable DT = DA.GetDataTable(strSQL);
 3             if (DT.Rows.Count != 6)
 4             {
 5                 MessageBox.Show("奖项未抽完!");
 6                 return;
 7             }
 8             //--启动音乐
 9             new PublicClass().MusicPlayer1(0);
10             //--
11             string xstr = "";
12             int x1 = 0;
13             int x2 = 0;
14             foreach (DataRow xDataRow in DT.Rows)
15             {
16                 xstr = xDataRow["手机号码"].ToString().Replace(xDataRow["手机号码"].ToString().Substring(3, 4), "****");
17                 //--一等奖
18                 if (xDataRow["奖项"].ToString().Trim() == "一等奖")
19                 {
20                     this.label4.Text = xDataRow["姓名"].ToString().Trim() + "  " + xstr;
21                     continue;
22                 }
23                 //--二等奖
24                 if ((xDataRow["奖项"].ToString().Trim() == "二等奖") && (x1 == 0))
25                 {
26                     this.label5.Text = xDataRow["姓名"].ToString().Trim() + "  " + xstr;
27                     x1++;
28                     continue;
29                 }
30                 if ((xDataRow["奖项"].ToString().Trim() == "二等奖") && (x1 == 1))
31                 {
32                     this.label6.Text = xDataRow["姓名"].ToString().Trim() + "  " + xstr;
33                     x1++;
34                     continue;
35                 }
36                 //--三等奖
37                 if ((xDataRow["奖项"].ToString().Trim() == "三等奖") && (x2 == 0))
38                 {
39                     this.label7.Text = xDataRow["姓名"].ToString().Trim() + "  " + xstr;
40                     x2++;
41                     continue;
42                 }
43                 if ((xDataRow["奖项"].ToString().Trim() == "三等奖") && (x2 == 1))
44                 {
45                     this.label8.Text = xDataRow["姓名"].ToString().Trim() + "  " + xstr;
46                     x2++;
47                     continue;
48                 }
49                 if ((xDataRow["奖项"].ToString().Trim() == "三等奖") && (x2 == 2))
50                 {
51                     this.label9.Text = xDataRow["姓名"].ToString().Trim() + "  " + xstr;
52                     x2++;
53                     continue;
54                 }
55             }

同时启动音乐的播放,这样就比较喜庆了,能很好带动公司年会的效果。

 1 public void MusicPlayer(int state)
 2         {
 3             //加载音乐
 4             SoundPlayer Player = new SoundPlayer();
 5             Player.SoundLocation = AppDomain.CurrentDomain.BaseDirectory + "music\\Sound3.wav";
 6             if (state == 0)
 7             {
 8                 Player.PlayLooping();
 9             }
10             else if (state == 1)
11             {
12                 Player.Stop();
13             }
14         }
15
16         public void MusicPlayer1(int state)
17         {
18             //加载音乐
19             SoundPlayer Player = new SoundPlayer();
20             Player.SoundLocation = AppDomain.CurrentDomain.BaseDirectory + "music\\Sound4.wav";
21             if (state == 0)
22             {
23                 Player.PlayLooping();
24             }
25             else if (state == 1)
26             {
27                 Player.Stop();
28             }
29         }
30
31         public void MusicPlayer2(int state)
32         {
33             //加载音乐
34             SoundPlayer Player = new SoundPlayer();
35             Player.SoundLocation = AppDomain.CurrentDomain.BaseDirectory + "music\\end.wav";
36             if (state == 0)
37             {
38                 Player.PlayLooping();
39             }
40             else if (state == 1)
41             {
42                 Player.Stop();
43             }
44         }
45
46         public void MusicPlayer3(int state)
47         {
48             //加载音乐
49             SoundPlayer Player = new SoundPlayer();
50             Player.SoundLocation = AppDomain.CurrentDomain.BaseDirectory + "music\\start.wav";
51             if (state == 0)
52             {
53                 Player.PlayLooping();
54             }
55             else if (state == 1)
56             {
57                 Player.Stop();
58             }
59         }

以上为启动和停止音乐的播放和停止。

       以上简单介绍了抽奖软件,相对于追求简单的抽奖程序应该是可以应付了,如果要再复杂的话还可以再进一步进行拓展,这个程序可能只能起到一个抛砖引玉的作用,如需探讨抽奖软件可加入我们的群(186841119)一起学习探讨,让抽奖程序转得更遛。O(∩_∩)O哈哈~

 

时间: 2024-09-03 14:22:14

年底大奉送,最好的抽奖系统,公司年会值得拥有的相关文章

我是如何开发公司年会抽奖系统的?

需求出现 年会将近,而年会抽奖环节必不可少,但是抽奖系统却还没有.所以某一天,PM走过来说:小伙,手头的需求修完成了吧!在年会开始之前必须做出一个抽奖系统.这个系统很简单,后台可以设置总金额,然后每个用户可以获得的金额范围,金额派完则显示很遗憾没有中奖,还要设置抽奖活动时间. 需求分析 一看这东西,就觉得非常简单.最简单的一个方案,活动时间放在一个数据表,总金额和已经使用金额存放在一个表,已经派送的日志一个表.后台提供一个接口,客户端手动点击按钮,则发送一个请求.账号体系直接使用微信的oauth

用&amp;#106avascript轻松制作一套简单的抽奖系统

    作者:jegg 年底将至,许多公司忙着搞年会,会上一般都会有一些抽奖活动,下面的程序就是用javascript 写的一个简单的抽奖系统与大家共享. 此代码借鉴了网上的一些网友的代码,又加上了一些诸如不重复抽奖之类的改进.大概思路如下: 1.将所有的的抽奖数据(这里为手机号码)存入数组中. 2.使用random 函数随机产生该数组的INDEX 3.使用setInterval 函数以极短的时间间隔产生该数组随机INDEX所对应的手机号码,并显示. 4.使用removeEleAt(index)

用&amp;#106avascript轻松制作抽奖系统

年底将至,许多公司忙着搞年会,会上一般都会有一些抽奖活动,下面的程序就是用JAVASCRIPT 写的一个简单的抽奖系统与大家共享.  此代码借鉴了网上的一些网友的代码,又加上了一些诸如不重复抽奖之类的改进.大概思路如下: 1.将所有的的抽奖数据(这里为手机号码)存入数组中. 2.使用random 函数随机产生该数组的INDEX 3.使用setInterval 函数以极短的时间间隔产生该数组随机INDEX所对应的手机号码,并显示. 4.使用removeEleAt(index)函数删除随机产生过的手

用Javascript轻松制作一套简单的抽奖系统

javascript    作者:jegg 年底将至,许多公司忙着搞年会,会上一般都会有一些抽奖活动,下面的程序就是用javascript 写的一个简单的抽奖系统与大家共享. 此代码借鉴了网上的一些网友的代码,又加上了一些诸如不重复抽奖之类的改进.大概思路如下: 1.将所有的的抽奖数据(这里为手机号码)存入数组中. 2.使用random 函数随机产生该数组的INDEX 3.使用setInterval 函数以极短的时间间隔产生该数组随机INDEX所对应的手机号码,并显示. 4.使用removeEl

用Javascript轻松制作抽奖系统

javascript 年底将至,许多公司忙着搞年会,会上一般都会有一些抽奖活动,下面的程序就是用JAVASCRIPT 写的一个简单的抽奖系统与大家共享. 此代码借鉴了网上的一些网友的代码,又加上了一些诸如不重复抽奖之类的改进.大概思路如下: 1.将所有的的抽奖数据(这里为手机号码)存入数组中. 2.使用random 函数随机产生该数组的INDEX 3.使用setInterval 函数以极短的时间间隔产生该数组随机INDEX所对应的手机号码,并显示. 4.使用removeEleAt(index)函

年底大盘点:智能家居2016年的“新”机遇

 2016年,多家网盘关停了,但是智能家居领域对云端的追逐更火热:家电行业遇冷了,但是C端耳熟能详的品牌都开始布局智能家居了:安防展规模小了,但是家庭安防的智能锁竟在双11脱销了:资本市场寒冬了,但是对智能家居领域的投资额越来越大了:人类下围棋输了,但是AI.大数据与智能产品的联系更紧密了:经济体新常态了,但是智能家居市场发展的速度愈发加快了! 年底大盘点:智能家居2016年的"新"机遇 新生态·开放心态面对新市场 随着智能家居企业之间的合作范围更广.更深,心态也愈加开放,一年间众多从

华为报告称2013年大数据将引发IT系统大变革

2013年1月1日消息,华为公司昨天发布的2013年行业趋势展望显示,大数据将引发IT系统大变革.华为认为,运营商和企业的IT系统将成为实时的业务系统,而不再是后处理的支撑系统,这将是IT系统的一次大变革. 以下为报告全文: 报告标题:超越信息和通讯,迎接新一轮数字化变革 2012年12月31日,华为发布2013年行业趋势展望 人类社会发展的历史也是一部科学技术发展的历史,科学技术发展的根本在于突破人类自身"体力和脑力"的极限,在于突破时间和空间的限制.无论是古代的车轮和烽火台,还是今

2014年底大盘点:投资的春风吹向互联网金融

一年又一年,又到了年底大盘点的时刻.2014年,互联网金融领域如沐春风.P2P.众筹.移动支付等互联网金融的新兴领域可以说融资不断,好戏连台. 移动支付篇 投资的第一股春风,吹向了移动支付领域. 新年伊始,2014年1月3日,滴滴打车宣布与微信支付合作.而就在一个月之前,快的刚刚宣布与支付宝合作.于是,腾讯.阿里隔空宣战,剑指移动支付领域. 为了争夺移动支付领域的大蛋糕,腾讯和阿里也是拼了,而用户则是醉了,坐收渔翁之利.互联网领域的精髓--"羊毛出在狗身上,猪来买单",体现得淋漓尽致.

Access设计抽奖系统

  一.系统组成及原理 抽奖系统主要由来宾登记.奖票管理.幸运抽奖.获奖查询四个基本模块构成,登记模块登记参加抽奖人员,奖票管理模块初始化参加抽奖人员名单,抽奖模块实现抽奖功能,获奖查询模块查询获奖结果.其中,抽奖模块中可以实现奖励等级.总抽奖数.每一次抽奖数的控制.系统架构框图如图1. 图1 系统架构 二.系统初始化 来宾登记模块中已经收录了参加抽奖的人员名单以及所属部门,在奖票管理模块中,当点击初始化按钮时通过内部程序设计首先把上次的抽奖结果清空,同时利用Rnd在参加抽奖的人员名单前随机生成