年底大奉送,最好的抽獎系統,公司年會值得擁有


       又到一年的年底了,很有企業(公司)都在策划年終活動了,有些企業(公司)福利比較好的話可能年終活動就比較好(抽獎、紅包、轎車等等應有盡有),有些企業(公司)沒賺到錢可能請員工吃頓飯都已經不錯了。企業(公司)為了在年終晚會上活躍氣氛,不得不搞些活動,那么活動自然而然少不了抽獎,企業(公司)為了體現公平公正的原則,必然會引進軟件進行抽獎。(但是對於程序員來說用抽獎軟件只是相對而言,舞弊是輕而易舉的事情),所以說這個社會可能很多事情表面是公正的,但是實際又不是那么公平公正了,潛規則相對多,哎...多看淡這些事情就好了,畢竟每天快樂最重要。

       本人利用了業余時間對抽獎軟件進行了研究,現在寫出來供大家一起研究。抽獎程序分為抽獎主界面、基本設置(重新開始、基本設置、數據管理、關於和退出)、中獎結果等等幾個部分。

程序運行主界面如下:

 

從以上圖片可以看出這個抽獎程序分為幾部分,標題(某某公司年終總結大會現場抽獎活動),開獎區(抽獎時滾動的名字和手機號碼),再就是選擇抽取是幾等獎(分別有一等獎、二等獎和三等獎選項),開始按鈕啟動抽獎,獎項的設定可以從后台進行配置,動態進行加載。

點擊開始實現邏輯:

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM