|
Ajandam - 1 |
|
Gönderiliyor lütfen bekleyin... |
|
|
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
|
|
|
-
-
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
|
|