Programlama dünyasında, verilerin yönetimi için farklı koleksiyon yapıları kullanılır. Bu yapılardan biri olan ArrayList, esnekliği ve dinamik boyut özelliği sayesinde uygulamalarda sıkça tercih edilir. Bu makalede, ArrayList kullanarak bir öğrenci listesini yöneten Windows Forms uygulamasının nasıl geliştirildiğini inceleyeceğiz. Bu uygulama, kullanıcıların öğrenci bilgilerini eklemesine, güncellemesine, araya eklemesine, silmesine ve aramasına olanak tanır.
Araya Ekleme, Silme ve Güncelleme işlemlerinde, bu işlemlerin gerçekleştirilebilmesi için ListBox üzerinde seçim yapılmalıdır.
Uygulamanın Amacı
Bu uygulamanın temel amacı, kullanıcıların kolayca öğrenci bilgilerini yönetmesini sağlamaktır. Öğrenci listesi, bir ArrayList
içinde tutulur ve listede yapılan her değişiklik arayüzde anlık olarak gösterilir.
Özellikler
- Öğrenci Ekleme: Kullanıcı, yeni bir öğrenci adını listeye ekleyebilir.
- Araya Ekleme: Kullanıcı, mevcut bir öğe öncesine yeni bir öğrenci adı ekleyebilir.
- Güncelleme: Mevcut bir öğrenci adı düzenlenebilir.
- Silme: Seçilen öğrenci listeden çıkarılabilir.
- Arama: Kullanıcı, belirli bir öğrenci adını liste içinde arayabilir.
Kod Analizi
1. ArrayList Tanımlama
Tüm öğrenciler, uygulama boyunca erişilebilir olması için bir ArrayList içerisinde saklanır.
1 2 3 | ArrayList ogrenciler = new ArrayList(); |
ArrayList
, tip kontrolü olmayan bir koleksiyon yapısıdır ve veriler esnek bir şekilde eklenebilir. Ancak, bu uygulamada yalnızca string
türündeki öğrenci adları saklanır.
2. Listeleme İşlevi
Listele metodu, ListBox
kontrolünü güncellemek için kullanılır. Bu metod, her işlemden sonra çağrılarak kullanıcıya güncel listeyi gösterir.
1 2 3 4 5 6 7 8 9 10 11 | private void Listele() { lstOgrenciler.Items.Clear(); // Mevcut listeyi temizler. foreach (string ogrenci in ogrenciler) // ArrayList içindeki her öğeyi dolaşır. { lstOgrenciler.Items.Add(ogrenci); // Her öğeyi ListBox'a ekler. } } |
Her işlemden sonra, bu metod çağrılır ve ListBox
kontrolü güncellenir.
3. Öğrenci Ekleme
Kullanıcı, bir öğrenci adı girip Ekle butonuna tıkladığında şu kod çalışır.
1 2 3 4 5 6 7 8 | private void btnEkle_Click(object sender, EventArgs e) { ogrenciler.Add(txtOgrenci.Text); // Girilen metin ArrayList'e eklenir. txtOgrenci.Clear(); // TextBox temizlenir. Listele(); // Liste güncellenir. } |
4. Araya Öğrenci Ekleme
Bir öğrenciyi, seçilen mevcut bir öğeden önce eklemek için şu kod kullanılır. Bu adım listbox üzerinde kullanıcının seçim yaptığı alana girilen öğrencinin eklenmesi şeklinde çalışacaktır.
1 2 3 4 5 6 7 8 9 | private void btnArayaEkle_Click(object sender, EventArgs e) { int indexNo = lstOgrenciler.SelectedIndex; // Seçilen öğenin indeksi alınır. ogrenciler.Insert(indexNo, txtOgrenci.Text); // Girilen metin belirli bir konuma eklenir. txtOgrenci.Clear(); // TextBox temizlenir. Listele(); // Liste güncellenir. } |
5. Öğrenci Güncelleme
Seçilen bir öğrenciyi güncellemek için aşağıdaki kod kullanılır.
1 2 3 4 5 6 7 8 | private void btnGuncelle_Click(object sender, EventArgs e) { int indexNo = lstOgrenciler.SelectedIndex; // Seçilen öğenin indeksi alınır. ogrenciler[indexNo] = txtOgrenci.Text; // Yeni metin mevcut öğeyle değiştirilir. Listele(); // Liste güncellenir. } |
6. Öğrenci Silme
Seçili öğeyi silmek için RemoveAt
metodu kullanılır.
1 2 3 4 5 6 7 8 | private void btnSil_Click(object sender, EventArgs e) { int indexNo = lstOgrenciler.SelectedIndex; // Seçilen öğenin indeksi alınır. ogrenciler.RemoveAt(indexNo); // Belirtilen konumdaki öğe kaldırılır. Listele(); // Liste güncellenir. } |
7. Arama İşlevi
Girilen öğrenci adı, listedeki öğrenciler arasında aranır. Eğer öğrenci bulunursa, bu durum bir etiket (Label
) üzerinde gösterilir ve ilgili öğe seçilir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | private void btnAra_Click(object sender, EventArgs e) { string ogrenciAd = txtOgrenci.Text; // Girilen öğrenci adı alınır. if (ogrenciler.Contains(ogrenciAd)) // ArrayList'te aranır. { lblDurum.Text = "Aranan Öğrenci Bulundu"; lstOgrenciler.SelectedIndex = ogrenciler.IndexOf(ogrenciAd); // Bulunan öğe seçilir. } else { lblDurum.Text = "Aranan Öğrenci Bulunamadı"; } } |
Kodların tümü aşağıdaki gibi olacaktır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace ArrayList_Uygulama { public partial class Form1 : Form { public Form1() { InitializeComponent(); } ArrayList ogrenciler=new ArrayList(); private void Form1_Load(object sender, EventArgs e) { this.AcceptButton = btnEkle; } private void btnEkle_Click(object sender, EventArgs e) { ogrenciler.Add(txtOgrenci.Text); txtOgrenci.Clear(); Listele(); } private void Listele() { lstOgrenciler.Items.Clear(); foreach (string ogrenci in ogrenciler) { lstOgrenciler.Items.Add(ogrenci); } } private void btnArayaEkle_Click(object sender, EventArgs e) { int indexNo=lstOgrenciler.SelectedIndex; ogrenciler.Insert(indexNo, txtOgrenci.Text); txtOgrenci.Clear(); Listele(); } private void btnGuncelle_Click(object sender, EventArgs e) { int indexNo = lstOgrenciler.SelectedIndex; ogrenciler[indexNo] = txtOgrenci.Text; Listele(); } private void btnSil_Click(object sender, EventArgs e) { int indexNo = lstOgrenciler.SelectedIndex; ogrenciler.RemoveAt(indexNo); Listele(); } private void btnAra_Click(object sender, EventArgs e) { string ogrenciAd=txtOgrenci.Text; if (ogrenciler.Contains(ogrenciAd)) { lblDurum.Text = "Aranan Öğrenci Bulundu"; lstOgrenciler.SelectedIndex=ogrenciler.IndexOf(ogrenciAd); } else { lblDurum.Text = "Aranan Öğrenci Bulunamadı"; } } } } |
Sonuç:
Bu makalede, Windows Forms kullanılarak bir öğrenci listesini yönetmek için ArrayList yapısını nasıl kullanacağımızı öğrendik. Kod, ekleme, güncelleme, silme, arama gibi temel işlemleri ele alarak dinamik bir veri yönetimi sağlar. İleri seviye uygulamalarda, modern koleksiyon yapıları ve daha karmaşık özelliklerle bu temel uygulama geliştirilebilir.