C# Öğreniyorum [ GünceL ]

cakir

New member
Katılım
7 May 2006
Mesajlar
10,807
Reaction score
0
Puanları
0

Herkese Merhabalar
Bu Başlık Altında Dilimin Döndüğünce C# Üzerine Uygulamalar Geliştireceğiz Arkadaşlar Sıfırdan Başlayıp Kademe Kademe İlerleyeceğiz,
Konuyu Güncel Tutup Her Defasında Farklı Bir Uygulama Geliştireceğiz Uygulamalarımızdaki Örnekleri Windows Forms Üzerinde Gerçekleştireceğiz

Uygulama Geliştirmeden Önce Bilgisayarınızda Visual Studio Ve Sql Server Kurulu Diye Tahmin Ediyorum Olmayan Arkadaşlar Microsoftun Sitesinden
Deneme Sürümlerini İndirebilirler

Dilerseniz Vakit Kaybetmeden İlk Uygulamamıza Geçelim Yeni Bir Windows Forms Projesi Oluşturalım Ben Adına CSharp_Baslangıc Dedim Hemen
Formumuza Bir Buton Koyalım ve Text'ini String İşlemleri Ve Name Kısmını btnString Olarak Değiştirelim Ardından Bir TextBox Koyalım Ve Nam'ini
txtSayi Olarak Değiştirelim Birde ListBox Ekleyelim Ve Buttonumuza Çift Tıklayarak İçerisine Gidelim

Kodlarımızı btnString İçerisine Değilde Kendi Oluşturacağımız Procedure() Ve Function()'lara İçerisine Yazacağız Procedur'ü Ve Function
Şimdilik Es Geçiyoruz İlerleyen Konularda Özellikle Function Ve Procedur'e Adı Altında Bir Proje Gerçekleştireceğiz İnşaAllah =)

Bu Projemizde string Veri Türü Ve Karar Yapıları Olan İf ve switch Yapılarına Değineceğiz
Projemize 3 tane form Ekliyoruz Dizaynları Resimlerdeki Gibi Olacak
Hiç Vakit Kaybetmeden Kodlarımıza Geçelim


İlk Formumuza Ait Kodlarımız Aşağıdaki Gibi Olacak



private void Form1_Load(object sender, EventArgs e)
{
listBox1.Items.AddRange(myTeams());
}



private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
lstSelectedIndex();
}



private void button1_Click(object sender, EventArgs e)
{
// Oluşturduğumuz String_Examples() Procedurunu btnString Click Olayında Çağırıyoruz Ve İşimizi Yaptırıyoruz
//String_Examples();


// *************************

If_and_Switch_Statements();
}


private void String_Examples()
{
// Öncelikle string Bir Değişken null olarak tanımlıyoruz

//string name = null;

// name isimli string değişkenimize bir değer atıyoruz ve MessageBox Olarak Değerimizi Ekrana Yazdırıyoruz
// ek olarak mesaj kutumuzun başlık metninide ayarlıyoruz

//name = "Galatasaray";

//MessageBox.Show(name,"Başlık :) ");



// **********************************************************************************************************************


// Başka bir örmekte ise 3 tane string değişken tanımlaması yapılıyor ve ekrana yazdırılması için string toplaması yapılıyor
// performans bakımından tavsiye edilmiyen bir yöntem aynı örnek StringBuilder kullanarak daha performanslı hale getirilebilir

//string _ad = "Süleyman", _soyad = "Çakır", _yas = "32";

//MessageBox.Show("Ad " + _ad + "\n" + "Soyad " + _soyad + "\n" + "Yaş " + _yas, "Caption =)");


// String Birleştirmelerinizde Performans açısından tavsiye edilen StringBuilder Sınıfını kullanmaktır.
// aynı örneği birde StringBuilder Kullanarak yapalım.

/*
StringBuilder myBuilder = new StringBuilder();
myBuilder.AppendLine("Ad "+ _ad);
myBuilder.AppendLine("Soyad " + _soyad);
myBuilder.AppendLine("Yaş " + _yas);

MessageBox.Show(myBuilder.ToString(), "Caption =)");
*/

// **********************************************************************************************************************



// string sınıfının kendine ait methodları vardır ayrıyetten extension methodlara da sahiptir.

//string name = "Süleyman";

// mesela EndsWith() methodu ile girilen kelimenin son harfi aranıyor eğer girdiğimiz harf kelimemizin son harfi ise geriye true bir değer fırlatıyor fırlatılan değeri if bloğu içerisinde kontrol altına alıyoruz ve true ise şu işleri yap false ise hata mesajı göster diye
// diğer methodları incelemek sise kalıyor arkadaşlar =)

/*
if (name.EndsWith("n"))
MessageBox.Show("n Harfi Bulundu ", "Caption ");
else
MessageBox.Show("Böyle Bir Kullanıcı Yok !", "Hata ", MessageBoxButtons.OK,MessageBoxIcon.Warning);

*/

// bir methoduna daha bakalım insert() belirlediğimiz index no dan sonra istediğimiz yeni değeri ekliyoruz 8. karakterden sonra bir boşluk bırak ve yeni değeri ekle

//string hede = name.Insert(8," ÇaKıR");
//MessageBox.Show(hede);


// **********************************************************************************************************************


// string kullanırken sadece metinsel veriler ile mi çalışacağız ?
// elbette hayır int yada başka veri türlerine geçerli convert yada casting işlemini gerçekleştirdikten sonra diğer veri türleri ilede kullanılabilir
// örnek olarak


// sorun yok
// string _deneme = txtSayi.Text;
//MessageBox.Show(_deneme);


// ilk hatamızı aldık string türünün integer türüne atanamadığını gösteriyor
//int _sayiGoster = txtSayi.Text;

//çözüm casting işlemi için hata aldık denemeye devam
//int _sayiGoster = (int)txtSayi.Text ;


// int sınıfının parse() methodu işimizi görecektir sanırım yada Convert() sınıfı ikiside işimizi görecektir
//int _sayiGoster = int.Parse(txtSayi.Text);
//int _sayiGoster = Convert.ToInt32(txtSayi.Text);
//MessageBox.Show(_sayiGoster.ToString());


// txtSayi alanını if bloğuna sokarak null veya metin ifadesi içeren kelimeler için kontrol yaptırabilirsiniz ...

}


// Karar Yapıları

private void If_and_Switch_Statements()
{
// Programlamada en fazla ihtiyaç duyulan ve kullanılan yapılardır

// ilk örneklerimizi if bloğu üzerinde gerçekleştirelim

//if ((2 * 2) == 0)
// MessageBox.Show("Doğru İfade");
//else
// MessageBox.Show("Yanlış İfade");





//int _sayi = int.Parse(txtSayi.Text);

//switch (txtSayi.Text)
//{
// case "4":
// MessageBox.Show("Doğru İfade");
// break;

// case "0":
// MessageBox.Show("Doğru İfade Değil");
// break;

// default:
// MessageBox.Show("Değer Girmediniz ?");
// break;
//}


}



private string[] myTeams()
{
//string[] _takimlar = new string[]
// {
// "Galatasaray",
// "Fenerbahçe",
// "Beşiktaş",
// "Trabzonspor",
// "Bursaspor",
// "Kayserispor",
// "Ankaragücü",
// "Gençlerbirliği",
// "Manisaspor",
// "Gaziantepspor",
// "Eskişehirspor",
// "Karabükspor",
// "Kasımpaşa",
// "Bucaspor",
// "Konyaspor",
// "Sivasspor",
// "Antalyaspor",
// "İstanbul.B.B.spor"
// };



// yada

//dizilerin indis numarası 0'dan başlıyordu

string[] _takimlar = new string[18];
_takimlar[0] = "Galatasaray";
_takimlar[1] = "Fenerbahçe";
_takimlar[2] = "Beşiktaş";
_takimlar[3] = "Trabzonspor";
_takimlar[4] = "Bursaspor";
_takimlar[5] = "Kayserispor";
_takimlar[6] = "Ankaragücü";
_takimlar[7] = "Gençlerbirliği";
_takimlar[8] = "Manisaspor";
_takimlar[9] = "Gaziantepspor";
_takimlar[10] = "Eskişehirspor";
_takimlar[11] = "Karabükspor";
_takimlar[12] = "Kasımpaşa";
_takimlar[13] = "Bucaspor";
_takimlar[14] = "Konyaspor";
_takimlar[15] = "Sivasspor";
_takimlar[16] = "Antalyaspor";
_takimlar[17] = "İstanbul.B.B.spor";

return _takimlar;
}




private void lstSelectedIndex()
{
switch (listBox1.SelectedIndex)
{
case 0:
MessageBox.Show("Galatasaray", "Hatırlatma", MessageBoxButtons.OK, MessageBoxIcon.Information);
break;
case 1:
MessageBox.Show("Fenerbahçe", "Hatırlatma", MessageBoxButtons.OK, MessageBoxIcon.Information);
break;
case 2:
MessageBox.Show("Beşiktaş", "Hatırlatma", MessageBoxButtons.OK, MessageBoxIcon.Information);
break;
case 3:
MessageBox.Show("Trabzonspor", "Hatırlatma", MessageBoxButtons.OK, MessageBoxIcon.Information);
break;
case 4:
MessageBox.Show("Bursaspor", "Hatırlatma", MessageBoxButtons.OK, MessageBoxIcon.Information);
break;
case 5:
MessageBox.Show("Kayserispor", "Hatırlatma", MessageBoxButtons.OK, MessageBoxIcon.Information);
break;
case 6:
MessageBox.Show("Ankaragücü", "Hatırlatma", MessageBoxButtons.OK, MessageBoxIcon.Information);
break;
case 7:
MessageBox.Show("Gençlerbirliği", "Hatırlatma", MessageBoxButtons.OK, MessageBoxIcon.Information);
break;
case 8:
MessageBox.Show("Manisaspor", "Hatırlatma", MessageBoxButtons.OK, MessageBoxIcon.Information);
break;
case 9:
MessageBox.Show("Gaziantepspor", "Hatırlatma", MessageBoxButtons.OK, MessageBoxIcon.Information);
break;
case 10:
MessageBox.Show("Eskişehirspor", "Hatırlatma", MessageBoxButtons.OK, MessageBoxIcon.Information);
break;
case 11:
MessageBox.Show("Karabükspor", "Hatırlatma", MessageBoxButtons.OK, MessageBoxIcon.Information);
break;
case 12:
MessageBox.Show("Kasımpaşa", "Hatırlatma", MessageBoxButtons.OK, MessageBoxIcon.Information);
break;
case 13:
MessageBox.Show("Bucaspor", "Hatırlatma", MessageBoxButtons.OK, MessageBoxIcon.Information);
break;
case 14:
MessageBox.Show("Konyaspor", "Hatırlatma", MessageBoxButtons.OK, MessageBoxIcon.Information);
break;
case 15:
MessageBox.Show("Sivasspor", "Hatırlatma", MessageBoxButtons.OK, MessageBoxIcon.Information);
break;
case 16:
MessageBox.Show("Antalyaspor", "Hatırlatma", MessageBoxButtons.OK, MessageBoxIcon.Information);
break;
case 17:
MessageBox.Show("İstanbul.B.B.spor", "Hatırlatma", MessageBoxButtons.OK, MessageBoxIcon.Information);
break;

default:
MessageBox.Show("Herhangi Bir Takım Seçmediniz '", "Uyarı ?", MessageBoxButtons.OK, MessageBoxIcon.Warning);
break;
}
}




Form3 İçerisinde Global Alanda public Bir Form Tanımlıyoruz Form2'den Çağırabilmek Adına Aslında Buna Gerek Olmadan Form2'den De Yapılabilir Ama Biz Şimdilik Bu Şekilde Yapalım


public Form frmYavruForm;



Form2'ye Ait Kodlarımızda Aşağıdaki Gibi Olacak


private void btnEnter_Click(object sender, EventArgs e)
{
if_and_switch();
}


private void if_and_switch()
{
string _kullaniciAdi = txtUserName.Text, _sifre = txtPassword.Text;

//if (_kullaniciAdi == "ÇaKıR" & _sifre == "admin")
//{
// Form3 frm = new Form3();
// frm.frmYavruForm = this;
// frm.ShowDialog();
//}
//else
// MessageBox.Show("Böyle Bir Kullanıcı Yok ?","Hata ",MessageBoxButtons.OK,MessageBoxIcon.Warning);



// aynı örneği switch ile yapalım

switch (_kullaniciAdi)
{
case "ÇaKıR":

switch (_sifre)
{
case "admin":
Form3 frm = new Form3();
frm.frmYavruForm = this;
frm.ShowDialog();
break;

default:
MessageBox.Show("Hatalı Şifre Girdiniz ?", "Hata", MessageBoxButtons.OK, MessageBoxIcon.Warning);
break;
}
break;

default:
MessageBox.Show("Böyle Bir Kullanıcı Adı Yok ?","Hata",MessageBoxButtons.OK,MessageBoxIcon.Warning);
break;
}
}



53eef19293e7a61090dd89caddb5af50.jpg

e83fca7d2f76c5cba25bf58fb6389d2b.jpg

f3782c25a3269593da6fa24c98a0df64.jpg

6e5b788fb92970d156e90395ee9e4d34.jpg


Bu Projemizde Öğrendiklerimize Gelirsek Çok Kapsamlı Olmasada string Veri Türüne Ve Karar Yapılarına if Ve switch Değindik Nasıl Kullanıldıklarını Öğrendik
Yukarıdaki Örneğimizde KullanıcıADı Ve Şifre Kısmını Manuel Olarak Yaptık Aynı Mantık Veritabanı için Geçerlidir Veritabanınızda Kullanıcılar Adında Bir Tablonuz Vardır Ve
Kullanıcıları Doğruladıktan Sonra Diğer Foruma Geçmesini İsterseniz Böyle Bir Yapı Kullanılabilir Tabii Bu Kadar Basit Hali İle Değil Daha Profesyonel Bir Yapı İle =)
Burada En Önemli Amacımız Kod Kalabalığından Kurtulmak Ve Başka Yerlerdede Oluşturduğumuz Function Ve Procedurleri Tekrar Tekrar Yazmaktan Kurtulmak Ve Kullanmak
Bundan Sonraki Projemizde Sql Veri Tabanı İle Kapsamlı Olarak Function Ve Procedure'leri Ele Alacağız
 


Herkese Merhaba,
Csharp Altında İkinci Uygulamamıza Başlıyoruz Arkadaşlar,
Bu Projemizde İlk Olarak Sql Server Tarafında Herhangi Bir Veritabanı Altında User,Categories Ve Products Tablolarımızı Oluşturuyoruz
Ve İçerisine Kayıtlarımızı Giriyoruz Örnek Projede script Mevcuttur Oradan Kurulum Yapabilirisiniz Daha Sonra Vakit Kaybetmeden
Visual Studio Tarafında C# Altında Örnek Projemizi Oluşturuyoruz Projemizdeki Amaç Veritabanımızda Kayıtlı Olan Kullanıcılarımızın
KullanıcıAdı Ve Şifresini Kullanarak İkinci Tablomuza Erişerek Kategoriler Altındaki Ürünleri Görüntülemek Eğer Böyle Bir Kullanıcı Mevcut
Değil İse Sisteme Giriş Yapmadan Hata İle Uyarmak

Örnek Projeyi Aşağıdaki Resimlerden Adım Adım Takip Edebilirsiniz Aşağıdan Projeyi İndirip Detaylarını İnceleyebilirsiniz ...


22363001bbf2f0f1a69277965a884b29.jpg


0ba9b683067376e4e127d5eaf0f3f7d7.jpg


6ecfb656adbcb705d75e45b43db01d26.jpg


caa2bca27dcb33ee7dbdbddcd11b55ca.jpg


53c21b34fe338072df48e4c60273f219.jpg


2ca55188407231cdda73963cf411f23f.jpg


75356b1ff7b89fb8b5e2a60e30bdeb84.jpg


ea8cf609535932cee196ae179b7f88b3.jpg


aaf9bd9c07d2c9f688319b96e563541a.jpg


f11a0f43679ecb69ec4e1bd722de05f6.jpg


a7999c6a17c4edeb782c29477c2c3349.jpg


e73ad2b056f518399e79084426c1dce3.jpg


9a25d7a30db9053d1160b751e6dd81ff.jpg


665881af579f9056be9519f381d6379f.jpg


108d7e13eb88dfa259197c9563cc5a52.jpg



Bu Projemizde Öğrendiklerimize Gelirsek Sırası İle,
Sql Server Altında Tablo Oluşturmak Bu Tabloları Birbirleri İle İlişkilendirmek Ve İçerisine Gerekli Kayıtları Girmek,
C# Altında İse Katman Mimarisini Derinlemesine İncelemek ( Entity, Facade, Presentation Layer )
Entity Olarak ( myUsers.cs myCategories.cs Ve myProducts.cs ) Classlarını Ele Aldık Veritabanı Kısmını İse Facade Kısmına Bıraktık
Facade Olarak ( Facade_Class.cs ) Altında Veritabanı İle Gerekli İşlemleri Gerçekleştirdik
Son Olarak Presentation Layer Kısmında İse Gerekli Formlarımızı Oluşturarak Görselliği Gerçekleştirmiş Olduk
Bunların Yanı Sıra Modellemeye Değindik Veritanımızdaki Bir Tablomuzu Class Tarafına Çekerek Nesneye Dayalı Programlamaya Güzel Bir Örnek Vermiş Olduk,
Facade_Class.cs Tarafında Function() Ve Procedure() Değinmiş Olduk Ve Bunların Hepsini static Olarak Tanıladık Ki Facade_Class. Dediğimizde
Classımızın Instance'ını Almadan Function Ve Procedürlerimize Erişebildik Ve Gerekli İşlemleri Gerçekleştirdik.
Ek Olarak Projemizdeki Örnekte Resim Kullandık Ama Bunları Veritabanımıza Kaydetmedik Sadece Resimlerin Adını Kaydettik Resimlerimizi İse
Projemizin İçerinde Saklayarak Veritabanımızı Gereksiz Yere Şişirmemiş Olduk Resimlerimize Ulaşmak İçin Sadece Yolunu Belirttik ...




Yeri Gelmiş İken Function() Ve Procedure() Birkaç Örnek Vermek İstiyorum ...


public class Hede
{
// Procedure
public void Doldur_DataGridView(DataGridView _myGridView)
{
DataTable dt = null;
string sqlText = "SELECT * FROM Users;";

using(SqlConnection cn = new SqlConnection("Bağlantımız"))
{
cn.Open();

using(SqlDataAdapter cn = new SqlDataAdapter(sqlText,cn))
{
dt = new DataTable();
da.Fill(dt);

_myFridView.DataSource = dt;
}
}
}


// static Procedure - ClassAdı. Diyerek Kullanacağımız Yapı
public static void Doldur_DataGridView1(DataGridView _myGridView)
{

DataTable dt = null;
string sqlText = "SELECT * FROM Users;";

using(SqlConnection cn = new SqlConnection("Bağlantımız"))
{
cn.Open();

using(SqlDataAdapter cn = new SqlDataAdapter(sqlText,cn))
{
dt = new DataTable();
da.Fill(dt);

_myGridView.DataSource = dt;
}
}
}


// Function
public DataTable Doldur_DataGridView2()
{

DataTable dt = null;
string sqlText = "SELECT * FROM Users;";

using(SqlConnection cn = new SqlConnection("Bağlantımız"))
{
cn.Open();

using(SqlDataAdapter cn = new SqlDataAdapter(sqlText,cn))
{
dt = new DataTable();
da.Fill(dt);
}
}

return dt;
}

// static Function
public static DataTable Doldur_DataGridView3()
{
DataTable dt = null;
string sqlText = "SELECT * FROM Users;";

using(SqlConnection cn = new SqlConnection("Bağlantımız"))
{
cn.Open();

using(SqlDataAdapter cn = new SqlDataAdapter(sqlText,cn))
{
dt = new DataTable();
da.Fill(dt);
}
}

return dt;
}


public Hede()
{ }
}


Gelelim Örneklerimizi Kullanmaya


private void Form1_Load(object sender, EventArgs e)
{
// İlk Örneğimiz İçin Classımızın İnstance Alalım Ve void Procedure() Bakalım ...
Hede h = new Hede();
h.Doldur_DataGridView(DataGridView1);



// İkinci Örneğimiz İçin Class Adı Nokta Dememiz Yeterli Olacaktır Classımızın Instance Almamıza Gerek Yok ...
Hede.Doldur_DataGridView1(DataGridView1);



// Üçüncü Örneğimizde İse Function() Bakalım ...
DataGridView1.DataSource = h.Doldur_DataGridView2();



// Dördüncü Örneğimiz İçin static Function() Kullanıyoruz ...
DataGridView1.DataSource = Hede.Doldur_DataGridView3();
}


Örnek Proje İçin - Buradan
password : hackhell.net



Geldik Bir Uygulamamızın Daha Sonuna Başka Bir Derste Görüşmek Üzere Sağlıcakla Kalın =)
 
Çalışmanız çok başarılı ve zahmet çektiren bir uygulama teşekkürleri borç bilmemek elde değil.Böyle bi uygulama yapmanız çok harika fakat ufak bi eleştiri.Sizin şu anda dediklerinizi sıfırdan bi başlayan yapamaz hakvericeksinizdir.Bi parça deneyimi olması gerekli.Mesela değişkenleri tanımlayamadıktan sonra formun görselini versede fazla bi ifade olmaz.Veri tipleri dönüşümünde Convert.ToInt32 vs dönüşümleri yapamadıktan sonra havada kalmaz mı?Hata aldığında Msdn kütüphanesini nasıl kullanıcak mantıksal hatalarda ne tarz uyarılar alıcak ve bunu nasıl çözücek.Bunlara da değinilirse sanırım harikanın ötesinde bir çalışma olacağından eminiz sevgiler...
 
uzunca zaman kullandığım program ve yazılım..
işimi rahatlıkla yapabiliyorum..
küçük oyun yazılımlarım var..
arkadaşımız gerekli herşeyi anlatmışa benziyor..
eline emeğine sağlık..
 
Çalışmanız çok başarılı ve zahmet çektiren bir uygulama teşekkürleri borç bilmemek elde değil.Böyle bi uygulama yapmanız çok harika fakat ufak bi eleştiri.Sizin şu anda dediklerinizi sıfırdan bi başlayan yapamaz hakvericeksinizdir.Bi parça deneyimi olması gerekli.Mesela değişkenleri tanımlayamadıktan sonra formun görselini versede fazla bi ifade olmaz.Veri tipleri dönüşümünde Convert.ToInt32 vs dönüşümleri yapamadıktan sonra havada kalmaz mı?Hata aldığında Msdn kütüphanesini nasıl kullanıcak mantıksal hatalarda ne tarz uyarılar alıcak ve bunu nasıl çözücek.Bunlara da değinilirse sanırım harikanın ötesinde bir çalışma olacağından eminiz sevgiler...



Aslında haklısın ama biras zahmetli bir iş,
zaten şu anda fırsatım da yok çoktandır konuya doğru düzgün cevapda yazamıyorum
fırsat buldukça daha güzel uygulamalarda eklemek istiyorum aslında
yorumun için teşekkürler arkadaşım :)



яєℓαχℓιƒє;5342510' Alıntı:
uzunca zaman kullandığım program ve yazılım..
işimi rahatlıkla yapabiliyorum..
küçük oyun yazılımlarım var..
arkadaşımız gerekli herşeyi anlatmışa benziyor..
eline emeğine sağlık..



Teşekkürler yazılımcı arkadaşları daha çok görmek isteris yavvvv :)
 
Geri
Üst