Skip to content

emiraykin/Student-Info-Enrollment-System

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Student-Info-Enrollment-System

Programın Açılışı

Program açıldığında kullanıcıdan tarih, maksimum kredi ve maksimum ders sayısı alınır.

Programın Fonksiyonları ve Ekran Çıktıları

void Lecture_travel

Ekrana LECTURE linkli listesindeki düğümlerin özelliklerini basar. Ekran çıktısı load_lectures fonksiyon açıklamasında gösterilecek.

void Student_travel

Ekrana STUDENT linkli listesindeki düğümlerin özelliklerini basar. Ekran çıktısı load_students fonksiyon açıklamasında gösterilecek.

void load_lectures

Kullanıcıdan ilk verileri aldıktan sonra while döngüsü içinde çağırılır. (

Temel de yaptığı iş program çalıştığında dersler.txt dosyasını okuma moduna açar ve oradaki dersleri LECTURE linkli listesine ekler. load_lectures her ders için tekrar çağırılır. (189.satır)

Programı çalıştırıp load_lectures ve Lecture_travel fonksiyonlarının çalıştığını görelim.

void load_students

load_lectures ile aynı yapıda çalışır. Tek farkı ogrenciler.txt dosyasındaki verilere STUDENT linkli listesine atar.

void enroll

Enroll fonksiyonu gönderdiğimiz mode parametresine iki farklı şekilde çalışır.

mode=1 için : kullanıcının ders kaydı yapmasını sağlar. Kullanıcın girdiği kredi ve ders limiti fonksiyona parameter olarak gönderilir ki kayıt koşullarının sağlıyor mu diye baksın.

Kullanıcı ders kaydı yaptığında öğrencinin kredisi(credit) ve aldığı ders sayısı(lectureNumber) güncellenir, dersin de kontenjan bilgisi(quota) ve dersi alan toplam kişi bilgisi(counter) güncellenir.

Yukarıdaki inputlara göre Eddard Stark öğrencisine iki adet ders eklemeye çalışalım. İlk ders iki kredilik, olsun. Beklentimiz: ilk dersi ekleyebilecek fakat ikinci dersi hem kredi limitini hem de ders sayısını aşacağı için ekleyemeycek.

Birinci işem sonucunda ogrenciDersKayit.txt dosyamız da güncellenecektir.(enroll’un içinden log_update fonksiyonu çağrılır ve bu dosyayı düzenler).

STUDENT ve LECTURE linkli listesinin ilgili node’larının gerekli yerlerinde(dersin kontenjanında, öğrencinin krediside vs.) değişiklikler yapılır. Ancak kullanıcı yine program içinde bunları değiştireceği için bu değişiklikler dosyaya çıkış menüsüne basıldığında yapılır (-1).

Şimdi de ikinci dersi eklemeye çalışalım.

Beklediğimiz gibi kredi limitini aştığımız için ekleyemedik.

Diğer uç durumları inceleyelim

Hatalı ders kodu veya öğrenci ID’si grime durumu:

Zaten kayıtlı olan bir öğrencinin tekrar dersi almaya çalışması durumu:

Diğer bir uç durum da dersin kontenjanının dolduğu durum. Bu durumu manuel ders açma (open_lecture) fonksiyonundan sonra düşük kontenjanlı bir ders açarak göstereceğim.

mode=2 : El ile ders eklemeden tek farkı programın başında çağrılmasıdır.OgrenciDersKayit.txt inputunu okuyarak gerekli kayır işlemlerini yaparlar. Mode 1 ve 2 ‘yi ayıran nokta enroll fonksitonun başındaki bir if bloğudur.

void open_lecture_manuel

LECTURE linkli listesinin başının pointerı fonksiyona gönderilir. Gerekli bilgiler alınır. Code bilgisine göre linkli listede uygun yere konur.

Kontenjanı 2 olarak belirlemenin sebebi kontenjanın aşılamayacağını göstermek.

Artık kontenjanımız doldu. Öğrenci ekleyemememiz lazım.

Görüldüğü gibi program dersi eklemedi.

Aynı dersi bir daha açmaya izin vermemeli.

Şimdi yapılan değişiklikleri dosyaya işlemek için -1’e basarak çıkış yapalım ve dosyaya bakalım

void new_student

Aynı void open_lecture_manuel gibi çalışır ancak bu çift yönlü bir linkli listedir. Öğrenci numarasına göre uygun yere yerleştirilir. Bu fonksiyon da var olan bir öğrenciyi tekrar listeye eklemez.

Yine eklemeyi deneyelim.

.

İzin vermedi.

Şimdi programı ana menüden -1’e basarak kapatalım ve güncellenecek olan dosyalara bakalım.

void delete_student

void close_lecture fonksiyonun tam tersi şekilde çalışır. Yine ID alınır ve STUDENT listesinden bu öğrenci node’unu bulur ve öğrencinin aldığı derslere bakıp LECTURE listesinde gezinip o dersleri bulduktan derse kayıtlı olan öğrenciler listesinden öğrenciyi siler. Dersin boş kontenjanı 1 arttırır.

ogrenciler.txt dosyasından öğrenci silinir.

Programdan menü aracılığıyla çıkış yaptığımızda dosyada ad değişikliği göreceğiz.

Ayrıca olmayan bir öğrenciyi silemeyiz. 111111 numarasını silmeyi deneyelim

void drop

enroll fonksiyonun tersidir. Öğrenciyi dersten silmek için kullanılır. Ders kodu ve öğrenci ID’si istenir. Önce dersin node’u sonra öğrencinin node’u bulunur. Dersi alan öğrencilerden öğrenci silinir, öğrencinin aldığı derslerden bu ders silinir. Öğrenciye kredisi ve ders alma sayısı iade edilir. Dersi alan kişi sayısı bir azaltılır, kontenjanda 1 yer açılır.

Ogrenciler.txt dosyasında öğrencinin kredi ve ders bilgisi güncellenir, ogrenciDersKayit.txt dosyasında kayitli olan log sildi olarak değiştirilir.

Görüldüğü gibi 22011010 numaralı öğrencinin aldığı dersler artık boş, eskiden BLM2222 dersi vardı.

Şimdi bir de ogrenciDersKayit.txt’ye bakalım.

Görüldüğü gibi log güncellendi.

void Lecture_Write

Bu fonksiyon , ismi kullanıcının girdiği ders kodu olan (örn: BLM1012.txt) bir dosya oluştururve bu klasöre o dersi alan öğrencileri yazar.

Fonksiyonu çağırmadan önce.

Fonksiyonu çağırdıktan sonra.

void Students_Write

Yukardaki fonksiyona benzer şekilde öğrencinin aldığı derslerin alfabetik sıralandığı bir dosya oluşturur.(örn:22011001.txt)

Fonksiyonu çağırmadan önce

Çağırdıktan sonra.

void close_lecture

Bu fonksiyon LECTURE listesinin başını parametre olarak alır ve kullanıcıdan kapatılacak dersin kodunu ister. Kod girildikten sonra o dersi bulana kadar liste üzerinde dolaşır, bulamazsa kullanıcıyı uyarır. Dersi bulduktan sonra o node’taki dersi alan öğrenciler dizisinden(tmp->enrolled_students[i] derse kayıtlı öğrencilerin ID’lerine bakarak STUDENT listesinde o ID’ye sahip olan öğrencileri bulur ve öğrencinin aldığı derslerden(tmpS->lecture_code[j]) bu dersin kodunu siler daha sonra bu öğrencilere dersin kredisi kadar krediyi iade eder ve öğrencinin alabileceği ders sayısını bir arttırır.

Olmayan bir dersi silemeyiz.

Şimdi BLM3130 dersini kapatalım. Burada beklentimiz log dosyasında işaretli yerin “ders kapandi” olması, dersler dosyasından BLM3130’un silinmesi ve 22011007 numaralı öğrencinin ders ve kredilerini iade almasıdır. Fonksiyon çalışmadan önce dosyalara bakalım.

Programdan ders silelim

İşlem sonrasında dosyalara bakalım

About

No description or website provided.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages