Bu site emekli olmuştur. Arşiv amaçlı olarak
BT AKADEMİ
sponsorluğunda yayın hayatına devam etmektedir.
Ana Sayfa
.net TV
Makaleler
Kaynak Kod
Haberler
Serbest Köşe
Canlı Köşe
Forum
C#nedir?
Ekibimiz
RSS
ASP.NET
C# / VC#/.NET
Mono ve .NET
Yazılım Müh.
YAZAR HAKKINDA
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ı
:
25057
Yorum Sayısı
:
4
yorum yaz
SİTE İÇİ ARAMA
Ü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.
C#nedir? hesabınız yok mu?
Üye olabilmek için
tıklayın
.
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.
Silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
Bende Yazmak İstiyorum
Blogroll
Burak Selim Şenyurt
Bellek Yönetiminde Verimlilik için İpuçları (Rust Odaklı)
10.5.2025
Burak Selim Şenyurt
Rust ve Güvenli Bellek Yönetimi Hakkında
10.5.2025
Diğer Herşey
»
Makaleler RSS
»
Video Gönder
»
Makale Gönder
»
Serbest Köşeye Yazı Gönder
»
Yazar Başvurusu
»
C#nedir? Ekibinde Olmalıyım!
Sponsorlar
Ana Sayfa
/
Makaleler
/
Caner Şahan
/
C# / VC#/.NET
/
Ajandam - 2
Ajandam - 2
Favorilerime Ekle
Gönderiliyor lütfen bekleyin...
arkadaşıma gönder
Arkadaşınızın email adresi:
*
Mesajınız:
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
caner şahan
/
üye hakkında
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
İsmail ilker AVCI
/
üye hakkında
Ü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
mehmet ali ecer
/
üye hakkında
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
A. Tarik Güney
/
üye hakkında
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
Dizayn ve Kodlama
bt
akademi
. Tüm Hakları Saklıdır © Copyright 2002-2009 c#nedir?com
Makaleler
Serbest Köşe
Makale Gönder
.Net TV
Video Gönder
Canlı Köşe
Kaynak Kod
Forum
Haberler
Röportajlar
Anketler
C# Nedir?
İletişim
Site Haritası
RSS
Favorilere Ekle
Üyelik
Hesap Aktivasyon
Ekibimiz
Ekibe Katıl