Herkese merhaba bu gün C# ile yapılmış sayısal loto programı paylaşmak istiyorum. Böyle programları ara sıra paylaşacağım çünkü özellikle okul zamanında çok işe yarayan yazılımlardır. Bu program şu işlemleri gerçekleştirir. Kupon sayısını gir program senin için girdiğin sayı kadar kupon yaratsın daha sonra bu oluşan kuponlardan hangi rakamdan kaç tane çıkmış, en çok hangisi çıktıysa büyükten küçüğe sıralaması gibi istatistik işlemler de gerçekleştirebilir. Program tek formdan oluşmaktadır ana ekran görüntüsü şu şekildedir:
c# sayısal loto programı ekran görüntüsü
Ayrıca program da dizilerin kullanımı ve DataGridView kullanımı ile ilgili faydalı bilgiler bulabileceğinize inanıyorum.
Program kodları şu şekildedir:
|
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;
|
Gerekli index değerlerinin tutulacağı ve oluşturulan rakamların saklanabileceği bir dizi oluşturdum ayrıca daha sonra sıralama işlemi için kullanılacak bir ArrayList oluşturuyoruz:
|
int indextut=0;
int index2;
int sayi;
int[] sayilar=new int[6];
ArrayList sirala = new ArrayList();
|
Şimdi form yüklenirken DataGridView’in dinamik bir yapı kazanması için bir adet fonksiyon tanımlayalım:
|
private void clmolustur()
{
for (int i = 0; i < 6; i++)
{
dataGridView1.Columns.Add("s", (i+1).ToString() + ".");
dataGridView1.Columns[i].Width = 30;
}
}
|
6 adet genişliği 30px olan kolon oluşturduk ve bunlara belli bir başlık atadık. Bu fonksiyonu form açılırken çağıralım:
|
private void Form1_Load(object sender, EventArgs e)
{clmolustur(); }
|
Şimdi TextBox’a bir rakam girdikten sonra ona göre gerekli rakamları oluşturup DataGridView’de bunları gösterilmesi için Yeni button’u kodlarını yazalım:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
private void button1_Click(object sender, EventArgs e)
{ if (radioButton1.Checked == true && (textBox1.Text!="" && int.Parse(textBox1.Text)>0))
{
button1.Enabled = false;
Random r = new Random();
sayi = Convert.ToInt16(textBox1.Text);
for (int k = 0; k < sayi; k++)
{
dataGridView1.Rows.Add();
for (int j = 0; j < 6; j++)
{
sayilar[j] = r.Next(1, 50);
dataGridView1.Rows[indextut].Cells[j].Value = sayilar[j];
}
indextut++;
}
}
label5.Text = indextut.ToString();
}
|
Böylelikle girdiğimiz sayı kadar kupon oynamış olduk şimdi istatistik bilgiler için gerekli kodları yazalım:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
private void siralama()
{
for (int dd = 0; dd <dataGridView2.Columns.Count; dd++)
{
sirala.Add(dataGridView2.Rows[0].Cells[dd].Value);
}
sirala.Sort();
for (int j = dataGridView2.Columns.Count-1; j >= 0; j--)
{
for (int c = 0; c < dataGridView2.Columns.Count; c++)
{
if (sirala[j] == dataGridView2.Rows[0].Cells[c].Value)
{
index2 = c;
listBox1.Items.Add(sirala[j].ToString() + "-" + (index2+1).ToString());
}
}
}
}
|
Bu işlem ile rakamların çıkma sırasına göre bir sıra oluşturulmaktadır. Bu fonksiyonu daha sonra istatistikler button’unda çağıracağız. İstatistikler button’u kodları şu şekildedir:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
private void button2_Click(object sender, EventArgs e)
{
button2.Enabled = false;
int say=0;
int index;
for (int i = 0; i < 49; i++)
{
dataGridView2.Columns.Add(i.ToString(), (i + 1).ToString() + ".");
dataGridView2.Columns[i].Width = 20;
}
dataGridView2.Rows.Add();
for (int c = 0;c < dataGridView2.Columns.Count; c++)
{
dataGridView2.Rows[0].Cells[c].Value =0;
}
for (int a = 0; a < dataGridView1.Rows.Count; a++)
{
for (int s = 0; s < dataGridView1.Columns.Count; s++)
{
index = Convert.ToInt16(dataGridView1.Rows[a].Cells[s].Value);
say = Convert.ToInt16(dataGridView2.Rows[0].Cells[index - 1].Value);
say++;
dataGridView2.Rows[0].Cells[index - 1].Value = say;
}
}
siralama();
}
|
Böylece programın sonuna doğru gelmiş bulunmaktayız artık hangi rakam kaç tane çıkmış görebiliyoruz ve bu çıkan rakamların sıralamasını yandaki ListBox’ta görebiliyoruz. Şimdi iste başka bir seri oynamak için gerekli olan Yeni button’nun kodlarını yazalım:
|
private void button3_Click(object sender, EventArgs e)
{
sirala.Clear();
listBox1.Items.Clear();
button1.Enabled = true;
button2.Enabled = true;
temizle();
indextut = 0;
index2 = 0;
}
|
DataGridView de bulunan alanları silmek için gerekli olan temizle fonksiyonu kodları da şu şekildedir:
|
private void temizle()
{
int row = dataGridView1.Rows.Count;
for (int m = 0; m < row; m++)
{
dataGridView1.Rows.RemoveAt(0);
}
}
|
C# ile yapılmış sayısal loto programımız bu haliyle doğru bir şekilde çalışmaktadır. Kolay gelsin.
Hiç yorum yok:
Yorum Gönder