GithubHelp home page GithubHelp logo

student-info-enrollment-system's Introduction

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

student-info-enrollment-system's People

Contributors

emiraykin avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.