Bu site emekli olmuştur. Arşiv amaçlı olarak BT AKADEMİ sponsorluğunda yayın hayatına devam etmektedir.




C#nedir?com
 
YAZAR HAKKINDA
Caner Şahan
Caner Şahan
http://www.csharpnedir.com/
İletişme geçmek için tıklayın.
24 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler: bilgileri eklemek fileinfo herhangi islemleri kayitli kisinin kodlari kontrol kullanici makalesinde sender streamreader string timer2’ C# / VC#/.NET Caner Şahan
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Orta
Kategori : C# / VC#/.NET
Yayınlanma Tarihi : 24.10.2004
Okunma Sayısı : 23765
Yorum Sayısı : 4     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
Silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer
Conda install environment.yml Package 8.12.2024
Turhal Temizer
Mac OS/X Removing CUDA 8.12.2024
Burak Selim Şenyurt
Rust ile ECS Yaklaşımını Anlamak 8.12.2024
Burak Selim Şenyurt
Birlikte Rust Öğrenelim Serisi 8.12.2024
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
Ajandam - 2
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
Ajandam-1 makalesinde csharpnedir kullanıcı_adı’ na sahip 12345 şifresi olan bir hesap yaratmıştık. Şimdi bu hesapla yapabileceğimiz işlemleri inceleyeceğiz. İşe kayıt eklemeyle başlarsak;



şeklinde bir form ile kişisel bilgileri alıyoruz. Aldığımız bilgileri isim ve soyadın oluşturduğu dosya adına sahip bir dosyaya işliyoruz. Bu işlemlerin hepsini System.IO ile gerçekleştiriyoruz. Kodları incelersek;

private void button1_Click(object sender, System.EventArgs e)
{
    if(gelenkullanıcı!="")
     {
       if(isim.Text=="" &&soyad.Text=="")
        {
         MessageBox.Show("İsim Ve Soyad bilgilerinin ikiside girilmedi!");
         goto Son;
        }
       if(isim.Text=="")
        {
         MessageBox.Show("İsim alanı girmek zorundasınız");
         goto Son;
        }
        if(soyad.Text=="")
        {
         MessageBox.Show("Soyad alanı Girilmeli");
         goto Son;
        }
       string anayol=@"C:\ajandam\"+gelenkullanıcı;
       DialogResult cevap;
        if(Directory.Exists(anayol))
        {
          this.Text="Kayıt işlemleri açık";
         }
        else
         {
          Directory.CreateDirectory(anayol);
         }
       string isim_y=isim.Text.ToLower();
       string soyad_y=soyad.Text.ToLower();
       string evtel_y=evtel.Text;
       string cep1=ceptel1.Text;
       string cep2=ceptel2.Text;
       string email=mail.Text;
       string okul_y=okul.Text;
       string bolum_y=bolum.Text;
       string dosya_ismi=isim_y+soyad_y;
       string ek=gelenkullanıcı+@"\";
       string yol_kullanıcı=@"C:\ajandam\"+ek+dosya_ismi;
       string dogumgunu="";
       string yıl="";
       listBox1.Items.Clear();
     try
      {
       dogumgunu=comboBox2.SelectedItem.ToString()+"/"+comboBox1.SelectedItem.ToString()+"/";
       yıl=comboBox3.SelectedItem.ToString();
       }
      catch
      {
       dogumgunu="";
       yıl="";
       }
      if(File.Exists(yol_kullanıcı))
      {
         cevap=MessageBox.Show(dosya_ismi+" "+"Adlı kayıt daha önceden var üzerine kaydetmek istiyormusunuz", "Kaydet",MessageBoxButtons.YesNo,MessageBoxIcon.Question);
        if(cevap==DialogResult.Yes)
         {
           FileInfo dosyala=new FileInfo(dosya_ismi);
           FileStream yarat=new FileStream(yol_kullanıcı,FileMode.Create);
           yarat.Close();
           StreamWriter yaz=new StreamWriter(yol_kullanıcı);
           yaz.WriteLine(isim_y+"\n");
           yaz.WriteLine(soyad_y+"\n");
           yaz.WriteLine(evtel_y+"\n");
           yaz.WriteLine(cep1+"\n");
           yaz.WriteLine(cep2+"\n");
           yaz.WriteLine(email+"\n");
           yaz.WriteLine(okul_y+"\n");
           yaz.WriteLine(bolum_y+"\n");
           yaz.WriteLine(dogumgunu+"\n");
           yaz.WriteLine(yıl+"\n");
           yaz.Close();
          ////////////////////////////////////////////
           isim.ResetText();
           soyad.ResetText();
           evtel.ResetText();
           ceptel1.ResetText();
           ceptel2.ResetText();
           mail.ResetText();
           bolum.ResetText();
           okul.ResetText();
           timer2.Start();
          dogum1.ResetText();
          dogum2.ResetText();
          MessageBox.Show("Kayıt Başarıyla gerçekleştirildi");
         }
        else if(cevap==DialogResult.No)
        {;}
      }
      else
      {
         FileInfo dosyala=new FileInfo(dosya_ismi );
         FileStream yarat=new FileStream(yol_kullanıcı,FileMode.Create);
         yarat.Close();
         StreamWriter yaz=new StreamWriter(yol_kullanıcı);
         yaz.WriteLine(isim_y+"\n");
         yaz.WriteLine(soyad_y+"\n");
         yaz.WriteLine(evtel_y+"\n");
         yaz.WriteLine(cep1+"\n");
         yaz.WriteLine(cep2+"\n");
         yaz.WriteLine(email+"\n");
         yaz.WriteLine(okul_y+"\n");
         yaz.WriteLine(bolum_y+"\n");
         yaz.WriteLine(dogumgunu+"\n");
         yaz.WriteLine(yıl+"\n");
         yaz.Close();
   ////////////////////////////////////////////
         isim.ResetText();
         soyad.ResetText();
         evtel.ResetText();
         ceptel1.ResetText();
         ceptel2.ResetText();
         mail.ResetText();
         bolum.ResetText();
         okul.ResetText();
         timer2.Start();
         dogum1.ResetText();
         dogum2.ResetText();
         MessageBox.Show("Kayıt Başarıyla gerçekleştirildi");
        }
     Son:
     if(isim.Text=="")
       isim.Focus();
     if(soyad.Text=="")
       soyad.Focus();
     if(isim.Text=="" &&soyad.Text=="")
       isim.Focus();
    }
    else if(gelenkullanıcı=="")
       MessageBox.Show("Sistemede herhangi bir kayıt eklemek için kayıtlı kullanıcı olmak zorundasınız","Kayıt olun",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
Kodları incelediğimiz zaman gelenkullanıcı isminde bir global değişken görüyoruz. gelenkullanici adlı değişken registry’ den çektiğimiz ve sorgulama sonucu gerid önen bir değişken. gelenkullanıcı değişkeninin yapısını ve işlenişini ajandam1 makalesinde incelemiştik. Eğer gelenkullanıcı değişkeni sorgulamadan geçmediyse kullanıcı hesabına bir işlem yapamayacak. gelenkullanıcı bloğunu geçtikten sonra C’ nin altında ajandam adlı bir dizinin olup olmadığı kontrol ediliyor. Dikkat ederseniz C:\ajandam\gelenkullanıcı hiyararşisini kontrol ediyoruz. Bu kullanıcımızın hesabının hiyararşinin en tepesi oluyor. Dosyayı bulduktan sonra overwrite yapıp yapmayacağımızı soruyoruz. Bu işlemden sonrada her textbox’ ı satır satır yazıyoruz. Kayıt işlemini gerçekleştiriken timer2’ yi başlattık yani bir olayı tetikledik. timer2 ile eklenen kişinin doğum gününün olup olmadığını kontrol ediyoruz. Şimdi timer2’ nin yapısına bakalım;

private void timer2_Tick(object sender, System.EventArgs e)
{
  try
   {
   if(gelenkullanıcı!="")
     {
      string zaman=DateTime.Now.Month.ToString()+"/"+DateTime.Now.Day.ToString()+"/";
      DirectoryInfo bilgi=new DirectoryInfo(@"C:\ajandam\"+gelenkullanıcı);
      FileInfo[]bilgiler=bilgi.GetFiles();
      string okunan="";
      string isim="";
       for(int i=0;i<bilgiler.Length;i++)
        {
         isim=bilgiler[i].FullName;
         string ad=bilgiler[i].Name;
         StreamReader oku=new StreamReader(isim);
          while((okunan=oku.ReadLine())!=null)
            {
            if(zaman==okunan)
             {
              int h=2;
              string yas="";
              while(h>0)
               {
               yas=oku.ReadLine();
               h--;
               }
           int hesapla=DateTime.Now.Year-int.Parse(yas);
           listBox1.Items.Add(ad+" "+"bugun"+" "+hesapla.ToString()+" "+"yaşına girdi..");
           timer2.Stop();
              }
             else
              {;}
            }
          oku.Close();
        }
      if(listBox1.Items.Count!=0)
        {
         dogumgunu.Visible=true;
        }
     }
     else if(gelenkullanıcı=="")
     {
      timer2.Stop();
     }
   }
  catch
  {
   timer2.Stop();
  }
}
timer2, bugun tarihi ile dosyada kayıtlı tarihi alarak karşılaştırma yapıyor. Tarihler aynı ise bir uyarı resmi ile kişinin doğum günü olduğunu hatırlatıyoruz. Bu kişinin adı soyadı gibi bilgilerini alıp giriş sayfasına ekledikten sonra yaşını hesaplıyoruz ve listbox’ a ekliyoruz. Buradaki döngü o anki kullanıcının tüm kayıtlarını inceleyerek kimin doğum günü olduğunu buluyor ve işi bittiği zaman timer2’ yi durduruyor.

Eklediğimiz kayıtlar gittikçe artacak ve doğal olarak bir arama işlemine gereksenim duyacağız. Bunun için programın arama ve listeleme fonksiyonlarına bakarsak;



public int j=0;
public int i=0;
private void button2_Click(object sender, System.EventArgs e)
{
   if(gelenkullanıcı!="")
     {
      string filename=textBox1.Text.ToLower()+textBox2.Text.ToLower();
      string yol=@"C:\ajandam\"+gelenkullanıcı+@"\"+filename;
       if(File.Exists(yol))
        {
         if(say!=1)
          {
           listView1.Items.Clear();
           j=0;
          }
         label17.ResetText();
         StreamReader okuyaz=new StreamReader(yol);
         string okunan="";
         i=0;
         while((okunan=okuyaz.ReadLine())!=null)
          {
            i++;
            if(i==1)
            {
            listView1.Items.Add(okunan);
            }
           if(i!=1 &&i%2!=0)
            {
            listView1.Items[j].SubItems.Add(okunan);
            }
           }
         j++;
         say=1;
         okuyaz.Close();
        }
       else
        {
         MessageBox.Show(textBox1.Text+textBox2.Text+"isimli kişi kayıtlı değil..");
         textBox1.ResetText();
         textBox2.ResetText();
        }
      }
else if(gelenkullanıcı=="")
{
 MessageBox.Show("Sistemede herhangi bir kayıt eklemek için kayıtlı kullanıcı olmak zorundasınız","Kayıt  olun",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
}
Girilen isim ve soyisime göre kontrol yaptıktan sonra bulduğumuz kayıtla ilgili bilgileri listview’ e ekliyoruz. Listview’ e bu kayıt bilgilerini eklerken j satır numaramız, her bulduğu kişiyi satıra ekliyor ve satır sayısını bir arttırıyor. String işlemlerini ve listelemeyi en iyi anlamanın yolu bol bol deneme sonucu ortaya çıkıyor tabi...:) Birde menümüzdeki tüm kayıtları göster buttonunu incelersek;

int say=1;
private void button5_Click(object sender, System.EventArgs e)
{
  if(gelenkullanıcı!="")
   {
    if(say!=1)
    {
     MessageBox.Show("Lütfen Listelemeden önce listeyi temizleyiniz!");
     goto son;
    }
    listView1.Items.Clear();
    int i=0;
    int j=0;
    string okunan;
    string yol1=@"C:\ajandam\"+gelenkullanıcı;
     if(Directory.Exists(yol1))
      {
       string[]dosyalar=Directory.GetFiles(yol1);
        for(int k=0;k<dosyalar.Length;k++)
         {
         string yol=dosyalar[k];
         StreamReader hepsini_oku=new StreamReader(yol);
         while((okunan=hepsini_oku.ReadLine())!=null)
           {
             i++;
             if(i==1)
              {listView1.Items.Add(okunan);}
             if(i!=1 && i%2!=0)
              {listView1.Items[j].SubItems.Add(okunan);}
           }
          hepsini_oku.Close();
          i=0;
          j++;
         }
        label17.Text=j.ToString()+" "+"Adet kayıt Listelendi";
        say++;
       }
      else
       {
        label17.Text=gelenkullanıcı+" "+"Henüz kaydedilen bir bilgi yok!";
       }
       son:
         ;
     }
else if(gelenkullanıcı=="")
{
MessageBox.Show("Sistemede herhangi bir kayıt eklemek için kayıtlı kullanıcı olmak zorundasınız","Kayıt olun",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
}
Yukarıdaki Tüm listeyi göster buttonuna tıkladığımızda listeleme aşağıdaki şekildeki gibi olacak.



Buradaki kodlar ise tüm kayıtları listelemek için geliştirilmiş bir olay. Tekli aramadan farkı tüm kayıtlara bakması. Ajandam programının diğer işlevleride bu hiyararşik yapıya benzediği için anlatımı gereksizdir. Bu yüzden ana işlev fonksiyonlarıyla çalıştık ve bu kodları analiz ettik. Bu programın kaynak kodlarını aşadaki linkten indirerek incelemenizi tavsiye ederim.

kaynak kodları indirin ve inceleyin--------

Caner ŞAHAN

Makale:
Ajandam - 2 C#, Visual C# ve .NET Caner Şahan
  • Yazılan Yorumlar
  • Yorum Yaz
OCA
11
2005
login olmamızın mantığı hiyararşi kurmamızdır.Yani her user arasına bir çizgi çizmek.Yani bir gizlilik veya güvenlik önlemi olarak tasarlanmamıştır.
OCA
11
2005
Üstadlar boşverin login penceresini felan size yol gösteren bir proje işte çalışıp daha iyisini geliştirmek bize kalmış.Saolasın Caner Üstad herkese yararlı olması dileğiyle...
OCA
3
2005
Gerçekten uğraşılmış bir proje teşekkür ederiz öncelikle fakat niye login olduğumuzu anlayamadım, kayıt dosyasını notepad ile açtığımızda tüm kayıtları okuyabiliyoruz. O zaman login olmaya ne gerek var?
KAS
14
2004
site gerçekten çok güzel ama benim gibi acemi c# kullanıcılarına pek hitap etmiyor gibi geldi...eee ne yapalım bizde iyice öğrendikten sonra sitesinizi karıştırırız artık.....sizlere iyi çalışmalar...
Sayfalar : 1 
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • Eklenen Son 10
  • Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor