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