码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2014-12-14 11:58:12      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   ar   color   os   sp   for   

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

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

程序运行主界面如下:

bubuko.com,布布扣

 

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

点击开始实现逻辑:

 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哈哈~

抽奖时的效果图:

bubuko.com,布布扣

奖抽出后的效果图:

bubuko.com,布布扣

 

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

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

基本设置效果图:

bubuko.com,布布扣

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

修改的实现逻辑:

 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哈哈~

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

数据管理界面效果图:
bubuko.com,布布扣

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

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

bubuko.com,布布扣

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

 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哈哈~

 

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

标签:style   blog   http   io   ar   color   os   sp   for   

原文地址:http://www.cnblogs.com/luoyuhao/p/4162329.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!