Bu yazımda "Data Management and File Structure" - Bilgisayar Mühendisliği 3. Sınıf - dersi için C++ ile geliştirmiş olduğum Öğrenci Kayıt Sistemi' ni anlatacağım.
Hazırlamış olduğum program, 6 temel bölümden oluşuyor;
1) Sistemdeki öğrenci bilgilerini listeleme,
2) Sisteme yeni öğrenci kaydı ekleme,
3) Sistemdeki öğrencinin bilgilerini düzenleme,
4) Sistemdeki öğrenci kaydını silme,
5) Sistemde öğrenci sorgulaması yapma,
6) Programın performansını test etme.
Programın amacı, read / write / update / search operasyonlarını kullanarak dosyaya erişim sağlamak ve dosya içindeki bilgileri üstteki 6 seçenek doğrultusunda kullanmak. Yani, Öğrenci Kayıt Sistemi; File Access (Dosya Erişimi) 'in ne olduğunu, hangi amaçla ve nasıl kullanıldığını anlamak için yazılabilecek ve kullanılabilecek güzel bir program.
Programın düzgün çalışması için kayıtların tutulacağı bir dosya gerekli, ben .txt uzantılı metin belgesi ile çalıştım ve varsayılan olarak bu dosyada 50 öğrenci kaydı bulundurdum. Bundan sonraki listemele, ekleme, düzenleme, silme, arama ve performans seçeneklerinden herhangi biri için, oluşturmuş olduğum .txt uzantılı dosya üzerinden gerekli işlemler yapılacak ve değişikler yine aynı dosya üzerine kaydedilecektir.
Üstteki ekran görüntüsü programın ana menüsü. Buradan herhangi bir işlem yapmak için ilgili numarayı girmek yeterli oluyor.
Seçenek No:1
Bu seçenek, belirtilen dosya içinde bulunan öğrenci kayıt bilgilerini listemelemek için kullanılır. Listeleme; dosyadaki öğrenci numarası, öğrenci adı ve soyadı sırasına göre devam eder ve dosyanın sonuna gelindiğinde biter.
Seçenek No:2
Bu seçenek, belirtilen dosyaya yeni bir öğrenci kaydı eklemek için kullanılır. Burada önemli olan, eklenecek yeni kaydın öğrenci numarası bilgisidir. Eğer girilen öğrenci numarası bilgisi kayıt listesinde zaten mevcutsa, kayıt işlemi geçersiz olacaktır. Eğer kayıt yeni bilgiler içeriyorsa, sırasıyla öğrenci numarası, öğrenci adı ve öğrenci soyadı kullanıcıdan istenir ve yeni kayıt ekleme işlemi tamamlanır. Eklenen yeni kayıt, listenin sonunda yer alır. (Yazılacak bir sorting algoritması ile yeni kayıt, güncelleme sonrası listedeki yerini de alabilir - bu programda sıralama önemsenmemiştir)


Ekleme sonrasında 200811001 - ali veli | öğrenci kaydı...
Seçenek No:3
Bu seçenek, belirtilen dosyada bulunan öğrencinin bilgilerinde düzenleme yapmak için kullanılır. Burada önemli olan, üzerinde düzenleme yapılacak kaydın öğrenci numarası bilgisidir. Eğer girilen öğrenci numarası bilgisi kayıt listesinde mevcut değilse, düzenleme işlemi geçersiz olacaktır. Düzenleme yapılacak öğrenci numarası bilgisi sonrasında o numaraya ait ad ve soyad bilgileri yeniden kullanıcıdan istenir ve yapılan düzenlemeler güncel bir şekilde kayıt listesine işlenir.
Düzenleme öncesinde 200811001 - ali veli | öğrenci kaydı...


Düzenleme sonrasında 200811001 - ali mehmet | öğrenci kaydı...
Seçenek No:4
Bu seçenek, belirtilen dosyada bulunan öğrencinin kaydını silmek için kullanılır. Burada önemli olan, silme işlemi yapılacak kaydın öğrenci numarası bilgisidir. Eğer girilen öğrenci numarası bilgisi kayıt listesinde mevcut değilse, silme işlemi geçersiz olacaktır. Silinecek kaydın öğrenci numarası bilgisi sonrasında kayıt yeniden güncellenerek son haline kavuşur. Bu işlemi; geçici bir dosya oluşturarak, silinen kayıt bilgileri haricindeki diğer tüm bilgileri bu geçici dosyaya yazdırarak ve eski kayıtların tutulduğu dosyayı silip geçici dosyanın adını eskinin adıyla değiştirerek (yani geçici dosyayı orjinal dosya haline getirerek) gerçekleştirdim.
Silme öncesinde 200611050 - Asli Tuka | öğrenci kaydı...
Silme sonrasında 200811050 - Asli Tuka | öğrenci kaydı bulunmuyor...

Seçenek No:5
Bu seçenek, girilen öğrenci numarası bilgisine göre belirtilen dosyada öğrenci kaydı bulunup bulunmadığını kontrol etmek için kullanılır. Eğer öğrenci kaydı mevcutsa, öğrenci ile ilgili bilgiler listelenir.


Seçenek No:6
Bu seçenek, programın kayıt listesindeki rastgele bir öğrenci numarası bilgisini ne kadar adımda bulduğunu test etmek için kullanılır. Programın bağlantılı olduğu kayıt dosyası varsayılan olarak sıralı bir öğrenci numarası listesine sahiptir. Ancak kayıt ekleme ve kayıt silme işlemleri yapılırsa liste sıralı bir liste olmaktan çıkabilir ve bu yüzden de program test sonucunda farklılıklar oluşabilir.
Örneğin; rastgele 1000 adet öğrenci numarasının bulunmasını test edelim:

Program, 1000 adet rastgele öğrenci numarasını (50 kişilik bir kayıt listesinde) ortalama 24.819 adımda buluyor.
--------
Kısaca, yazmış olduğum "Öğrenci Kayıt Sistemi" programım böyle. Programı denemek, kullanmak isterseniz aşağıdaki linkten indirebilirsiniz.
Not: .zip uzantılı dosyanın içinde bulunan student_r_s.exe ve list.txt dosyaları aynı konumda olmak zorundadır, aksi takdirde program düzgün çalışmayacaktır.