8.5 – Gelişmiş Öğrenci Yönetim Senaryosu


📘 8.5 – Gelişmiş Öğrenci Yönetim Senaryosu


🔹 Açıklama:

Bu bölümde, önceki tüm kazanımları bir araya getirerek öğrencilerin gerçek hayata yakın bir öğrenci yönetim senaryosunu uygulamaları amaçlanır.

Form kontrollerinden veri alma, kapsülleme ile doğrulama, listeleme ve silme işlemleri, sınıflar üzerinden yönetilecek.

Gelişmiş uygulama senaryosunda kullanıcılar:

  • Öğrenci ekleyebilecek
  • Bilgileri listeleyebilecek
  • İstenilen öğrenciyi seçerek silebilecek
  • Tüm işlemleri doğrulama mekanizmalarıyla yapacak

📍 Kullanım Alanları:

  • Okul içi öğrenci takip uygulamaları
  • Kurs-kayıt otomasyonları
  • Kişisel verileri yöneten küçük uygulama örnekleri
  • Staj projeleri, sınav uygulamaları

🎯 Kazanımlar:

  • Gelişmiş form senaryosu kurma
  • Kodun hem kullanıcı tarafı (UI) hem veri modeliyle entegre çalışması
  • Liste kontrolü, nesne yönetimi, kullanıcı deneyimi tasarımı
  • C# Windows Forms’ta uygulama yapısını kavrama

🧪 8.5 – Gelişmiş Öğrenci Yönetim Senaryosu: Uygulamalı 5 Örnek


📌 Örnek 1: Tüm Alanlarla Öğrenci Ekleme ve Listeleme

🎨 Form Elemanları:

txtAd, txtSoyad, txtNumara, cmbSinif, lstOgrenciler, btnEkle

💻 Kod:

List<Ogrenci> ogrListesi = new List<Ogrenci>();

private void btnEkle_Click(object sender, EventArgs e)
{
    Ogrenci ogr = new Ogrenci();
    ogr.Ad = txtAd.Text;
    ogr.Soyad = txtSoyad.Text;
    ogr.Numara = Convert.ToInt32(txtNumara.Text);
    ogr.Sinif = cmbSinif.SelectedItem?.ToString();

    if (ogr.Ad != null && ogr.Soyad != null && ogr.Numara > 0)
    {
        ogrListesi.Add(ogr);
        lstOgrenciler.Items.Add(ogr);
    }
    else
    {
        MessageBox.Show("Geçerli bilgiler giriniz.");
    }
}

📝 Açıklama:

Kapsülleme ile denetlenmiş veriler, kullanıcı dostu bir şekilde listeye aktarılır.


📌 Örnek 2: Seçilen Öğrenciyi Silme

🎨 Elemanlar: lstOgrenciler, btnSil

💻 Kod:

private void btnSil_Click(object sender, EventArgs e)
{
    if (lstOgrenciler.SelectedIndex != -1)
    {
        var seciliOgr = (Ogrenci)lstOgrenciler.SelectedItem;
        ogrListesi.Remove(seciliOgr);
        lstOgrenciler.Items.Remove(seciliOgr);
    }
}

📝 Açıklama:

Nesne üzerinden silme işlemi hem veri listesinde hem ekranda uygulanır.


📌 Örnek 3: Not Ortalaması Hesaplama ile Genişletme

🎨 Yeni Elemanlar: nudNot1, nudNot2, nudNot3, lblOrtalama

💻 Kod (Sınıf):

public double Ortalama => (Not1 + Not2 + Not3) / 3;

💻 Kod (Form):

ogr.Not1 = (double)nudNot1.Value;
ogr.Not2 = (double)nudNot2.Value;
ogr.Not3 = (double)nudNot3.Value;

lblOrtalama.Text = $"Ortalama: {ogr.Ortalama:F2}";

📝 Açıklama:

Öğrenci sınıfı sadece veri değil, iş mantığı da taşımaya başlar.


📌 Örnek 4: Filtreleme – Belirli Bir Sınıftaki Öğrencileri Listeleme

🎨 Yeni Elemanlar: cmbFiltreSinif, lstSonuclar, btnFiltrele

💻 Kod:

private void btnFiltrele_Click(object sender, EventArgs e)
{
    string sinif = cmbFiltreSinif.SelectedItem?.ToString();
    lstSonuclar.Items.Clear();

    foreach (var o in ogrListesi)
    {
        if (o.Sinif == sinif)
            lstSonuclar.Items.Add(o);
    }
}

📝 Açıklama:

Kullanıcı arayüzünden yapılan filtreleme işlemleri veri ile kontrol arasındaki köprüyü güçlendirir.


📌 Örnek 5: Öğrenci Detayını MessageBox ile Gösterme

🎨 Elemanlar: lstOgrenciler, btnDetay

💻 Kod:

private void btnDetay_Click(object sender, EventArgs e)
{
    if (lstOgrenciler.SelectedItem is Ogrenci secili)
    {
        MessageBox.Show(secili.Bilgi(), "Öğrenci Detayı");
    }
}

📝 Açıklama:

Seçilen öğrencinin tüm verileri sade ve kullanıcı dostu biçimde görüntülenir.


✅ Özet:

Bu örneklerle öğrenciler:

  • Gerçekçi veri yapıları ve sınıf kontrollü uygulama mantığını
  • Nesnelerle koleksiyon yönetimini
  • Gelişmiş UI ve veri etkileşimini
  • Kapsülleme + kontrol + kullanıcı deneyimini birlikte kurmayı öğrendiler.

Leave a Reply