抽獎升級版 可以經表格數據導入資料庫,抽獎設置,補抽

来源:http://www.cnblogs.com/xtflz/archive/2016/01/11/5120441.html
-Advertisement-
Play Games

1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System....


  1 using System;
  2 using System.Collections.Generic;
  3 using System.ComponentModel;
  4 using System.Data;
  5 using System.Drawing;
  6 using System.Drawing.Imaging;
  7 using System.Linq;
  8 using System.Text;
  9 using System.Threading.Tasks;
 10 using System.Windows.Forms;
 11 using System.Data.SqlClient;
 12 using System.Collections;
 13 using System.IO;
 14 
 15 namespace Check_Ticket
 16 {
 17     public partial class Btn_UpLoadFile : Form
 18     {
 19         string conn = "server=WIN-OUD59R7EHCH;database=Xtf;uid=sa;pwd=123456";
 20         string sql = "";
 21         int CurNum = 0;//獎項人數
 22         int second = 0;//防止二次被抽取
 23         Hashtable hashtable2 = new Hashtable();//存儲編號
 24         Hashtable hashtable1 = new Hashtable();//存儲獲獎名單
 25         Hashtable hashtable = new Hashtable();//避免二次抽獎
 26         Dictionary<int, string> dict = new Dictionary<int, string>();//詞典存儲所有參賽者
 27         Random rd = new Random();
 28         int time = 1;
 29         Label[] label = new Label[100];
 30         int index = 0;//詞典key鍵值
 31         int total = 0;//label個數
 32         int num = 0;//獲獎總數
 33         string s = "";
 34         int End = 0;//抽獎結束
 35         public Btn_UpLoadFile()
 36         {
 37             InitializeComponent();
 38         }
 39         private void Form1_Load(object sender, EventArgs e)
 40         {
 41             dataGridView2.ForeColor = Color.Blue;
 42             menu.Visible = false;
 43             comboBox1.SelectedIndex = 0;
 44             this.timer1.Interval = 10;
 45             this.timer3.Interval = 100;
 46             this.timer1.Enabled = true;
 47             this.WindowState = FormWindowState.Maximized;
 48         }
 49         private void getNumber(string s)
 50         {
 51             SqlConnection myconn = new SqlConnection(conn);
 52             myconn.Open();
 53             sql = "select *from SumPrize";
 54             SqlDataAdapter da = new SqlDataAdapter(sql, myconn);
 55             DataSet ds = new DataSet();
 56             da.Fill(ds);
 57             switch (s)
 58             {
 59                 case "一等獎":
 60                     second = 1;
 61                     CurNum = Convert.ToInt32(ds.Tables[0].Rows[0]["PrizeNum"].ToString());
 62                     break;
 63                 case "二等獎":
 64                     second = 2;
 65                     CurNum = Convert.ToInt32(ds.Tables[0].Rows[1]["PrizeNum"].ToString());
 66                     break;
 67                 case "三等獎":
 68                     second = 3;
 69                     CurNum = Convert.ToInt32(ds.Tables[0].Rows[2]["PrizeNum"].ToString());
 70                     break;
 71                 case "四等獎":
 72                     second = 4;
 73                     CurNum = Convert.ToInt32(ds.Tables[0].Rows[3]["PrizeNum"].ToString());
 74                     break;
 75                 case "五等獎":
 76                     second = 5;
 77                     CurNum = Convert.ToInt32(ds.Tables[0].Rows[4]["PrizeNum"].ToString());
 78                     break;
 79                 case "六等獎":
 80                     second = 6;
 81                     CurNum = Convert.ToInt32(ds.Tables[0].Rows[5]["PrizeNum"].ToString());
 82                     break;
 83                 case "請選擇":
 84                     CurNum = 0;
 85                     break;
 86                 default:
 87                     break;
 88             }
 89         }
 90         private void button1_Click(object sender, EventArgs e)
 91         {
 92             SqlConnection myconn = new SqlConnection(conn);
 93             myconn.Open();
 94             //未選擇抽獎項
 95             if (CurNum == 0)
 96             {
 97                 MessageBox.Show("未設置該獎項或未選擇獎項,抽獎沒有意義!!!");
 98                 return;
 99             }
100             //處理已經被抽獎項
101 
102             if (!hashtable1.ContainsValue(second))
103             {
104                 comboBox1.Enabled = true;
105                 hashtable1.Add(second, second);
106             }
107             else
108             {
109                 MessageBox.Show("此獎項已經被抽過,換個獎項吧?");
110                 return;
111             }
112             string prize = comboBox1.Text.ToString();
113             string sqlCount = "Select sum(PrizeNum) as num from SumPrize";
114             SqlDataAdapter sda = new SqlDataAdapter(sqlCount, myconn);
115             DataSet ds = new DataSet();
116             sda.Fill(ds);
117             //設置有獎總人數
118             num = Convert.ToInt32(ds.Tables[0].Rows[0]["num"].ToString());
119             for (int i = 0; i < dataGridView1.RowCount-1; i++)
120             {
121                 dict.Add(index, dataGridView1.Rows[i].Cells["WorkerID"].Value.ToString() + " " + dataGridView1.Rows[i].Cells["Name"].Value.ToString());
122                 index++;
123             }
124            
125             myconn.Close();
126             timer2.Start();
127             clearLabel();
128             bornLabel();
129             timer1.Enabled = true;
130             comboBox1.Enabled = false;
131         }
132 
133         private void button3_Click(object sender, EventArgs e)
134         {
135             End = 0;
136             menu.Text = "";
137             hashtable1.Clear();
138             clearLabel();
139             button1.Enabled = true;
140             button5.Enabled = true;
141             button2.Enabled = false;
142             menu.Visible = false;
143             btnAdd.Visible = false;
144             tbNum.Visible = false;
145             ge.Visible = false;
146             addEnd.Visible = false;
147             lab1.Text = "中獎名單";
148             dataGridView2.Visible = false;
149             string sqlChecked = "delete from Checked";
150             sql = "select *from Ticket";
151             SqlConnection myconn = new SqlConnection(conn);
152             myconn.Open();
153             SqlDataAdapter sda = new SqlDataAdapter(sql, myconn);
154             DataSet ds = new DataSet();
155             sda.Fill(ds, "Ticket");
156             dataGridView1.DataSource = ds;
157             dataGridView1.DataMember = "Ticket";
158             SqlCommand mycomm = new SqlCommand(sqlChecked, myconn);
159             mycomm.ExecuteNonQuery();
160             myconn.Close();
161         }
162 
163         private void button2_Click(object sender, EventArgs e)
164         {
165             menu.Visible = false;
166             clearLabel();
167             sql = "select WorkerIDAndName,Prize from Checked order by PrizeID";
168             SqlConnection myconn = new SqlConnection(conn);
169             myconn.Open();
170             SqlDataAdapter sda = new SqlDataAdapter(sql, myconn);
171             DataSet ds1 = new DataSet();
172             sda.Fill(ds1, "Checked");
173             dataGridView2.DataSource = ds1;
174             dataGridView2.DataMember = "Checked";
175             dataGridView2.Visible = true;
176             menu.Text += "恭喜:\n";
177             for(int i=0;i<dataGridView2.RowCount-1;i++)
178             {
179                 menu.Text += dataGridView2.Rows[i].Cells["WorkerIDAndName"].Value.ToString() +"  獲得"+ dataGridView2.Rows[i].Cells["Prize"].Value.ToString() + "\n";
180             }
181             menu.Visible = true;
182             timer3.Start();
183             myconn.Close();
184         }
185 
186         private void button4_Click(object sender, EventArgs e)
187         {
188             new SetPeople().ShowDialog();
189         }
190 
191         private void comboBox1_SelectedValueChanged(object sender, EventArgs e)
192         {
193             getNumber(comboBox1.Text.ToString());
194         }
195 
196         private void timer1_Tick(object sender, EventArgs e)
197         {
198             lab1.Left = lab1.Left - 6;
199             if (lab1.Right < 0)
200             {
201                 lab1.Left = this.Width;
202             }
203         }
204         //創建labels
205         private void bornLabel()
206         {
207             int i = 0;
208             for (i = 0; i < CurNum; i++)
209             {
210                 label[i] = new Label();
211                 label[i].ForeColor = Color.Blue;
212                 label[i].Location = new System.Drawing.Point(350, 170 + (i * 50));
213                 label[i].Size = new System.Drawing.Size(320, 40);
214                 label[i].BackColor = Color.Transparent;
215                 label[i].Anchor = (AnchorStyles.Top);
216                 label[i].Font = new System.Drawing.Font("SimSun", 20, FontStyle.Bold);
217                 this.Controls.Add(label[i]);
218             }
219             total = i;
220         }
221         //清除labels
222         private void clearLabel()
223         {
224             for (int i = 0; i < total; i++)
225             {
226                 this.Controls.Remove(label[i]);
227             }
228         }
229         private void timer2_Tick(object sender, EventArgs e)
230         {
231             hashtable.Clear();
232             hashtable2.Clear();
233             SqlConnection con = new SqlConnection(conn);
234             string sql = "select count(*) from Ticket";
235             SqlCommand com = new SqlCommand(sql, con);
236             con.Open();
237             int emcount = Convert.ToInt32(com.ExecuteScalar());
238             con.Close();
239 
240             timer2.Enabled = true;
241 
242             timer2.Interval = time;
243             int i;
244             for (i = 0; i < CurNum; i++)
245             {
246                 int random = Convert.ToInt32(rd.Next(0, emcount));
247                 if (dataGridView1.Rows[random].Cells["Checked"].Value.ToString().Trim()=="1" 
248                     && !hashtable.ContainsValue(dict[random]))
249                 {
250                     hashtable2.Add(random,random);
251                     hashtable.Add(dict[random], dict[random]);
252                     label[i].Text = dict[random];
253                 }
254                 else
255                 {
256                     i--;
257                 }
258 
259             }
260         }
261 
262         private void button5_Click(object sender, EventArgs e)
263         {
264             comboBox1.Enabled = true;
265             SqlConnection con = new SqlConnection(conn);
266             con.Open();
267             string sql = "";
268             s = "";
269             timer2.Stop();
270             foreach (DictionaryEntry de in hashtable)
271             {
272                 sql = string.Format("insert into Checked(WorkerIDAndName,Prize,PrizeID) values('{0}','{1}','{2}')", de.Value.ToString(), comboBox1.Text.ToString(),second.ToString());
273                 SqlCommand com = new SqlCommand(sql, con);
274                 com.ExecuteNonQuery(); 
275                 s += de.Value.ToString() +"   "; 
276             }
277             foreach (DictionaryEntry de in hashtable2)
278             {
279                 dataGridView1.Rows[Convert.ToInt32(de.Key)].Cells["Checked"].Value = "0";
280             }
281             lab1.Text = "恭喜: " + s + "獲得" + comboBox1.Text.ToString();
282             //判斷抽獎結束
283             End = End + CurNum;
284             if (End == num)
285             {
286                 button1.Enabled = false;
287                 //button5.Enabled = false;
288                 button2.Enabled = true;
289                 if (MessageBox.Show("抽獎結束,是否進行補抽,點擊確定進行補抽,取消結束此次抽獎!", "溫馨提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
290                 {
291                     btnAdd.Visible = true;
292                     tbNum.Visible = true;
293                     ge.Visible = true;
294                     addEnd.Visible = true;
295                 }
296             }
297             
298         }
299 
300         private void timer3_Tick(object sender, EventArgs e)
301         {
302             menu.Top = menu.Top - 6 ;
303             if (menu.Bottom < 0)
304             {
305                 menu.Top = this.Height-600;
306             }
307         }
308 
309         private void 關閉視窗ToolStripMenuItem_Click(object sender, EventArgs e)
310         {
311             this.Close();
312         }
313 
314         private void btnAdd_Click(object sender, EventArgs e)
315         {
316             CurNum = Convert.ToInt32(tbNum.Text.ToString());
317             if (CurNum == 0)
318             {
319                 MessageBox.Show("請輸入補抽個數!!!", "溫馨提示");
320                 return;
321             }
322             End = End + CurNum;
323             if (End > Convert.ToInt32(dataGridView1.RowCount))
324             {
325                 button5.Enabled = false;
326                 MessageBox.Show("抽獎超過參與人數無法進行補抽!","溫馨提示");
327                 return;
328             }
329             timer2.Start();
330             clearLabel();
331             bornLabel();
332         }
333 
334         private void addEnd_Click(object sender, EventArgs e)
335         {
336             btnAdd.Visible = false;
337             addEnd.Visible = false;
338             tbNum.Visible = false;
339             ge.Visible = false;
340             menu.Visible = false;
341             clearLabel();
342             sql = "select WorkerIDAndName,Prize from Checked order by PrizeID";
343             SqlConnection myconn = new SqlConnection(conn);
344             myconn.Open();
345             SqlDataAdapter sda = new SqlDataAdapter(sql, myconn);
346             DataSet ds1 = new DataSet();
347             sda.Fill(ds1, "Checked");
348             dataGridView2.DataSource = ds1;
349             dataGridView2.DataMember = "Checked";
350             menu.Text += "恭喜:\n";
351             for (int i = 0; i < dataGridView2.RowCount - 1; i++)
352             {
353                 menu.Text += dataGridView2.Rows[i].Cells["WorkerIDAndName"].Value.ToString() + "  獲得" + dataGridView2.Rows[i].Cells["Prize"].Value.ToString() + "\n";
354             }
355             menu.Visible = true;
356             timer3.Start();
357             myconn.Close();
358         }
359 
360         //先導入到dataSet
361         public DataSet getXSLData(string filepath)
362         {
363             string strCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filepath + ";Extended Properties=\"Excel 12.0;HDR=YES;\"";
364             System.Data.OleDb.OleDbConnection Conn = new System.Data.OleDb.OleDbConnection(strCon);
365             string strCom = "SELECT * FROM [Sheet1$]";
366             Conn.Open();
367             System.Data.OleDb.OleDbDataAdapter myCommand = new System.Data.OleDb.OleDbDataAdapter(strCom, Conn);
368             DataSet ds = new DataSet();
369             myCommand.Fill(ds, "[Sheet1$]");
370             Conn.Close();
371             return ds;
372         }
373 
374         public static int errorcount = 0;//記錄錯誤信息條數
375         public static int insertcount = 0;//記錄插入成功條數
376         public static int updatecount = 0;//記錄更新信息條數
377 
378         public bool ImportXSL(string home)
379         {
380             try
381             {
382                 DataSet ds = new DataSet();
383                 //取得數據集
384                 //調用上面的函數
385                 ds = getXSLData(@home);
386 
387                 SqlConnection con = new SqlConnection(conn);
388                 con.Open();
389                 for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
390                 {
391                     string WorkerID = ds.Tables[0].Rows[i][1].ToString();
392                     string Name = ds.Tables[0].Rows[i][2].ToString();
393                     string Checked = ds.Tables[0].Rows[i][3].ToString();
394 
395                     if (WorkerID != "" && Name != "")
396                     {
397                         string sq = string.Format("select * from Ticket where WorkerID='{0}' and Name='{1}'", WorkerID, Name);
398                         SqlCommand selectcom = new SqlCommand(sq, con);
399                         int count = Convert.ToInt32(selectcom.ExecuteScalar());
400                         if (count > 0)
401                         {
402                             updatecount++;
	   

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在本文中,我們討論OOP中的熱點之一:抽象類。抽象類在各個編程語言中概念是一致的,但是C#稍微有些不一樣。本文中我們會通過代碼來實現抽象類,並一一進行解析。深入理解OOP(一):多態和繼承(初期綁定和編譯時多態)深入理解OOP(二):多態和繼承(繼承)深入理解OOP(三):多態和繼承(動態綁定和運行...
  • 今天系統的來記錄一下再vs2013下,使用ef6 codefirst功能,來操作SQL lite資料庫 本來我以為sqlite資料庫用的這麼多,ef6肯定支持,結果,使用過程中很多坑,現在我把具體的配置過程寫下,希望以後再配置,不會像我一樣,花1天去找解決方法 1.到此鏈接去下載相關的庫 http:...
  • 更新ing
  • 今天項目要求隨機從資料庫中隨機取出若幹條數據,放到首頁。那麼要如何隨機取出這個子集合呢?本人向到的方法如下:1、假設數據量很少,如我資料庫中只有10條數據,而我要求隨機取出8條。對於這種低數據量,大可以一次過全部取出放到父集合當中,然後隨機remove去兩條。 List lis...
  • oracle稱分析函數。與聚合函數相同,都是對行集合進行計算!但,由於group by的原因,每組只返回一個值。前者每組可以返回多個值。語法:函數名(列名) over(sql項)當over參數為null,即對所有行進行聚合計算例子: SELECT EmpID,DeptID,PostID, sum(P...
  • 快速建立原生(Native)的行動裝置應用程式: 程式代碼共用: 與 Visual Studio 整合: 確保第一時間更新: 原生的應用程式效能:
  • .net erp(辦公oa)開發平臺架構概要說明之表單設計器介紹
  • 有如下數組,要從中取出id: "[\"3812662409\",\"3812633637\",\"3812627686\",\"3812651467\",\"3812628047\",\"3812650203\"]" 正則匹配可以直接用(\d+),假定上述數組為變數名為input的字元串,C#中可以...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...