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: ajandam altinda csharpnedir gerekiyor. hiyararsi islemini kontrol kullanici kullanici_adi kullanicinin olacak. olmadigini programin sender string 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 : 17.10.2004
Okunma Sayısı : 23835
Yorum Sayısı : 5     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Ş
XML - Deniz Kılınç
emre TAŞ
yazının devamı >
emre TAŞ
Decompiling and Reverse Engineering .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
Masaüstü mü ? İnternet Mi? .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
.Net Kavramları - .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
Yeni Başlayanlar için - .Net Radyo
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer
Conda install environment.yml Package 12.4.2021
Turhal Temizer
Mac OS/X Removing CUDA 12.4.2021
Burak Selim Şenyurt
Tie Fighter Değil, Project Tye! 12.4.2021
Burak Selim Şenyurt
Stackoverflow Sevgi Anketinde Yıllardır Bir Numara Çıkan Programlama Dili Rust Kimdir? 12.4.2021
  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 - 1
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
Geçenlerde elimdeki cep telefonuma baktım ve telefonu çaldırdığım zaman içindeki onlarca numaranın gideceğini hatırladım. Bu durum tam bir felaket olurdu. Fakat programcılığın gerçek hayatı analiz etmekten başka bir şey olmadığını hepimiz biliyoruz. Bir sorun varsa çözeriz... Öncelikle nasıl bir program yazacağımı ve bu programı hangi dil ile geliştireceğime karar verdim. Programdaki verileri database’ de tutmamaya karar verdim. Eski usulden gitmekte fayda var dedim ama database ile daha kolay bir işlemdi. Bununla birlikte benim aklımdan bu iş o kadarda kolay olmasın geçti. Bu yüzden iyi bir hiyararşi kurmam gerekiyordu. Hiyararşiden kastım bir ağaç yapısından başka bir şey değildi. Sistemde kayıtlı her kullanıcı adı için registrydeki şifre kontrol edilecek doğruysa read-write işlemini yapabilecek. Bu kullanıcının telefon numaralarını, ev adreslerini, doğum günlerini vb. tuttuğu her kişi için ayrılmış bir .dat dosyasının olacağı bir kullanıcının ismi ile oluşturulmuş dosya olacak. Bu dosyanın altında plan isimli planların tutulduğu dosya olacak. Plan dosyasının içindede günlük planlarımızın bulunduğu bir dosya olacak. Yapıyı biraz şekillendirirsek;



Tabi bu arada ana root olarak C:\ altına kurduğumuz ajandam diye bir ana dosyamız var. Programın ana işlevi olan kayıt tutmak dışında doğum günlerini hatırlatma, günlük tutma, gibi özellikleri olacak. Programın genel şablonuna bakarsak aşadaki gibi bir şekil olacak.



İşe sisteme yeni kayıt eklemekten başlayalım. Kayıt eklemek için registry’ yi kullandım. Registry içinde HKEY_CURRENT_USER altında ajandam diye bir directory yaratıp kullanıcı adlarını ve şifrelerini bu dosya altında tutacağız. Bunun için program ilk defa kurulduğu zaman ajandam directory’ sini yaratmamız gerekiyor.

kayitreg.cs

private void button1_Click(object sender, System.EventArgs e)
{
  DialogResult cevap;
  Registry.CurrentUser.CreateSubKey("ajandam");
  cevap=MessageBox.Show("Tebrikler Programınız kurulumu gerçekleşti!"+’\n’+"programı yeniden         başlatın.","TEBRİKLER",MessageBoxButtons.OK,MessageBoxIcon.Information);
  if(cevap==DialogResult.OK)
      Application.Exit();
}

Yukarıdaki kodu incelersek Microsoft.Win32 isim uzayının class’ larını kullandığımızı görürüz. Registry.CurrentUser.CreateSubKey("ajandam"); ajandam directory’sini yaratıp programı tekrardan başlatmasını sağlıyoruz. Artık ajandam klasörü CurrentUser altına kurulmuş oldu. Şimdi yeni yapacağımız kayıtların kullanıcı_adı ve şifrelerini burda tutacağız. Yeni kayıt eklemeyi incelersek;

kayit.cs

private void button1_Click(object sender, System.EventArgs e)
{
    string kullanıcı=kullanıcıadı.Text;
    if(kullanıcı=="")
    {
         MessageBox.Show("Kullanıcı ismini boş bıraktınız");
         kullanıcıadı.Focus();
         goto son;
    }
    string sifre1=sifre.Text;
    string sifre2=sifretekrar.Text;
    if(sifre1!=sifre2)
    {
          sifre.ResetText();
          sifretekrar.ResetText();
          MessageBox.Show("Şifrenizi aynı Girmediniz","Şifreler farklı",MessageBoxButtons.OK,MessageBoxIcon.Stop);
          goto son;
    }
    try
    {
          string[]gelenler=Registry.CurrentUser.OpenSubKey("ajandam").OpenSubKey(kullanıcı).GetValueNames();
          for(int i=0;i<gelenler.Length;i++){
              if(gelenler[i]==kullanıcı)
              {
                  MessageBox.Show("Bu kullanıcı adı daha önce kullanılmış");
                  kullanıcıadı.ResetText();
                  sifre.ResetText();
                  sifretekrar.ResetText();
                  i=-1;
                  goto son;
               }
          }
   }
   catch{
           Registry.CurrentUser.CreateSubKey("ajandam").CreateSubKey(kullanıcı).SetValue(kullanıcı,sifre1);
           MessageBox.Show("Kayıtınız başarıyla gerçekleştirildi");
   }
   son:
          ;
}
 
Yeni kayıtlarda boş kullanıcı adı ve aynı kullanıcı adının girilmesi kabul edilemez. Bu yüzden boş girilen kullanıcı adı için bir uyarı vermeliyiz ve işlemi baştan başlatmamız gerekiyor. Aynı kullanıcı isminin olup olmadığını ise registrydeki ajandam içindeki isimlerini bir string dizisine alarak kontrol ettikten sonra işlemi gerçekleştiriyoruz. Tabi ki şifrenin iki kere girilmesi zorunlu olmalıki hatalı şifre girişleri engellensin. Şimdi yazdığımız kullanıcı adı ekle programının işlemini incelemek için csharpnedir diye bir kullanıcı ekleyelim ve değişikliklere bakalım.



Bu işlemle csharpnedir kullanıcı isimli bir hiyararşi yarattık artık bu kullanıcı adı sadece kendine ait bilgilere erişip, gözlemleyebilecektir. İşte hiyararşiyi gözlemek için registry’ de oluşan dosyalara bakalım.



Artık csharpnedir isminde bir kullanıcımız ve bu kullanıcımızın hiyararşi kurabileceği alanı söz konusu. csharpnedir kullanıcı_adı ve 12345 şifresi ile programımıza girmek istersek, girişte kullanıcı_adı ve şifreyi kontrol eden bir fonksiyon tasarlamamız gerekiyor. Şimdi kullanıcı giriş işlemini yapan fonksiyonu incelersek;



Giriş buttonun çağırdığı fonksiyonlar ve yaptığı işleve bakalım.Yaptığımız işlem registryde ajandam altında böyle bir kullanıcı adı var mı? eğer varsa şifresi girilen şifre mi? diye kontrol etmek.

public string gelenkullanıcı="";
public string gelensifre;
private void giris_Click(object sender, System.EventArgs e)
{
     if(kullaniciadi.Text==""){
          errorProvider1.SetError(kullaniciadi,"Bu bölüm boş bırakılamaz");
          kullaniciadi.Focus();
          if(sifre.Text=="")
          {
               errorProvider1.SetError(sifre,"Bu bölüm boş bırakılamaz");
               sifre.Focus();
          }
          if(kullaniciadi.Text=="" &&sifre.Text=="")
          kullaniciadi.Focus();
     }
     else
     {
          girisislemi();
     }
}
ilk olarak kullanıcıadi’ nın boş olup olmadığını sonra şifrenin boş olup olmadığını kontrol ediyoruz. Eğer her ikiside boş değilse girisislemi() adlı fonksiyonu çağırıyoruz.

public void girisislemi()
{
try
{
gelenkullanıcı="";
gelensifre=Registry.CurrentUser.OpenSubKey("ajandam").OpenSubKey(kullaniciadi.Text).GetValue(kullaniciadi.Text).ToString();
          if(gelensifre==sifre.Text)
          {
                 gelenkullanıcı=kullaniciadi.Text;
                 sifre.Visible=false;
                 kullaniciadi.Visible=false;
                 label14.Visible=false;
                 label15.Visible=false;
                 giris.Visible=false;
                 button4.Visible=false;
                 hosgeldiniz.Visible=true;
                 hosgeldiniz.Text=gelenkullanıcı+’\n’+"Sisteme hoşgeldiniz";
                 ust.Text=gelenkullanıcı+" şuanda aktif durumda";
                 signout.Visible=true;
                 timer2.Start();
                 groupBox11.Text=gelenkullanıcı+"’"+"nın"+" "+planzaman+" "+"tarihli planları";
                 if(gelenkullanıcı!="")
                 {
                     try
                     {
                        StreamReader oku=new StreamReader(@"C:\ajandam\"+gelenkullanıcı+@"\"+@"plan\"+planzaman);
                        textBox6.Text=oku.ReadToEnd();
                        oku.Close();
                     }
                     catch
                     {
                         textBox6.Text="Bu tarihe ilişkin planınız bulunmamaktadır";
                     }
                }
          }
          else{
                errorProvider1.SetError(sifre,"Yanlış bir şifre girdiniz");
                sifre.ResetText();
                gelenkullanıcı="";
         }
}
catch
{
      MessageBox.Show("Böyle bir kullanıcı sistemde kayıtlı değil.Lütfen kaydolunuz");
      sifre.ResetText();
      kullaniciadi.ResetText();
}
}
registryden şifre ve kullanıcı adı kontrolunu yaptıktan sonra kullanıcının daha önceden yaptığı o güne ait planlar varsa hiyararşideki plan dizini altından bu plan okunarak gösteriliyor. Artık kullanıcı girişlerini tamamladık. Diğer yazıda programın farklı fonksiyonlarını inceleyeceğiz.

Görüşmek Üzere

CANER ŞAHAN

Makale:
Ajandam - 1 C#, Visual C# ve .NET Caner Şahan
  • Yazılan Yorumlar
  • Yorum Yaz
TEM
13
2010
programın sablonunu nasıl ve hangi programla yapıyosunuz
EYL
27
2008
ben bir programcı değilim ama bu iş hobim. bende ilaç hatırlatma cihazı geliştirmiştim biri çıkıp zaten cep telefonu bu işi yapıyor deyince dümyam yıkılmıştı. ama bu kodlar benim için baya faydalı oldu.
EKİ
24
2004
.net gibi bir teknolojiyi bize sunan microsoft gibi bir dev bence outlook u yarım akıllı yapmamıştır o konuda suç outlook ta değil bende idi. Hala şunu söylerim kendime neden ilk sen anlattın ki ilk önce onun fikrini öğrenip daha sonra onun fikirlerinin üzerine bir tema kurup programını anlatsaydın belki de o kişi kendi fikrilerinden esinlendiğin için seni destekleyecek gerçekten güzel bir şey yapıyorsun yaptığında bir kopyasını bana da gönder bir deneyeyim, gerçekten işime yarayabilir diyebilirdi. Aslında o gün benim için büyük bir ders olmuştu, ve şunu öğrendim. Kendi fikirlerinizi karşındaki insana kabullendirmenin en kolay yolu o fikrin sanki onun fikri olduğunu sanmasını sağlamaktan geçer. Yorumunuz için gerçekten teşekkür ederim.
EKİ
24
2004
o bayana yarım akıllı outlook unuzla mutlu günler deyip devam etseydin keşke.. outlook 2003 e 1 hafta katlanabildim. çok hata dolu.
EKİ
23
2004
Yıllar önce üni. de iken bende bir ajanda programı yazacaktım, yazdımda. Ancak bu programı sınıf arkadaşlarımdan başka kimse görmedi. Her program yazılmadan önce yapıldığı gibi onu tasarlarken araştırma da yapıyordum. Nasıl daha iyi ve insanların işine yarar bir şey yazarım diye. Araştırma yaparken bir çok insana projemi anlatıyor onların yorumlarını not alıyor onları programıma ekliyordum. Ta ki bir gün bir yazılım şirketindeki bir bayana projemi anlatıp onun programda olmasını istediği şeyleri öğrenmeye çalışıncaya kadar. Ben programımı anlattım ve bitirdiğimde o sadece şunu söyledi. "Ben bunların hepsini Outlook ta zaten yapabiliyorum neden böyle bir programa ihtiyaç duyayım ki!" Yıkılmıştım! Oysa Outlookta bile olmayan bir çok özellik vardı. Eve geldim ve programıma son kez bakıp Shift+Delete ile onu maziye gömdüm. O yüzden Ajanda programı diyince ve hakkında bir şey okuyunca o anlar gözlerimin önüne geliyor. Yaşlar gözlerimden süzülüyor. Bu yüzden hala bir telefon defteri programı yazamıyorum. Her elimi attığımda o an aklıma geliyor ve Shift + Delete yapıyorum. Ve yıllardır telefon ve adres defteri olarak internetteki mail adreslerimdeki Contacts larını kullanıyorum. Bu da bir programcı korkusu, yaptığınız programı "Neden kullanayım!" diyen bir insan. Allah sizi böyle insanlardan korusun.
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