Skip to content

birolozturkk/LibraryOtomation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 

Repository files navigation

Kütüphane Otomasyon Sistemi (C Projesi)

Bu proje, Algoritma ve Programlama-1 dersi final ödevi kapsamında geliştirilmiş, katmanlı mimariye (Layered Architecture) sahip bir kütüphane yönetim sistemidir. C dilindeki pointer (işaretçi) ve struct (yapı) kullanımları ile bellek yönetimi optimize edilmiştir.

⚙️ Veri Yapıları (Structs)

Projenin temel veri modelleri, nesne yönelimli programlamaya (OOP) benzer bir yaklaşımla tasarlanmıştır.

Struct Görevi
book_t Kitabın ID, başlık, yazar, durum, tarih ve okuyucu bilgilerini tutar.
student_t Öğrencinin ID, ad-soyad, kitap kotası, ceza puanı ve zimmetindeki kitapları tutar.
date_t Gün, ay ve yıl bilgisini standartlaştırarak tarih işlemlerini kolaylaştırır.
response_t Fonksiyonların işlem sonucunu (başarılı/başarısız) ve kullanıcı mesajlarını standart bir yapıda döndürür.
data_response_t response_t yapısını genişleterek, işlem sonucunda bulunan verinin (nesnenin) bellek adresini de taşır.
borrow_book_request_t Ödünç alma işlemi için gereken parametreleri (öğrenci/kitap pointerları ve tarih) tek bir pakette toplar.
deliver_book_request_t İade işlemi sırasındaki veri transferini yönetir ve parametre karmaşasını önler.

🛠️ Fonksiyonlar ve Görevleri

Proje, sorumlulukların ayrılması (Separation of Concerns) prensibi gereği katmanlara bölünmüştür.

1. Servis Katmanı (Service Layer)

İş mantığının ve kuralların (Business Logic) işlendiği ana katmandır.

  • add_student / add_book: Sisteme yeni öğrenci veya kitap ekleyerek Create (Oluşturma) işlemini yapar.
  • delete_book: Belirtilen ID'ye sahip kitabı sistemden kaldırır (Delete işlemi).
  • find_student_by_id / find_book_by_id: ID bazlı arama yaparak ilgili nesnenin bellekteki adresini döndürür (Read işlemi).
  • borrow_book: Ödünç alma sürecini yönetir. Öğrencinin kotasını kontrol eder, kitabı öğrenciye atar ve durumunu günceller.
  • deliver_book: İade sürecini yönetir. Gecikme varsa ceza hesaplatır ve kitabın durumunu "Müsait" olarak günceller.
  • find_max_book_holders: Kütüphaneden en çok kitap almış öğrenciyi veya öğrencileri analiz ederek listeler.

2. Arayüz Katmanı (UI Layer)

Kullanıcı ile etkileşime geçen, verileri ekrana basan fonksiyonlardır.

  • print_main_menu: Kullanıcıya ana işlem seçeneklerini sunar.
  • list_books: Kütüphanedeki tüm kitapların envanter dökümünü listeler.
  • list_students: Kayıtlı tüm öğrencileri ve genel durumlarını listeler.
  • list_books_by_student: Belirli bir öğrencinin o an elinde hangi kitapların olduğunu gösterir.
  • list_top_students: En çok kitap okuyan/alan öğrencileri ekrana basar.
  • print_borrow_book_menu / print_deliver_book_menu: Ödünç alma ve iade işlemleri için gerekli veri giriş ekranlarını yönetir.

3. Yardımcı Katman (Utility Layer)

Matematiksel ve genel amaçlı fonksiyonları barındırır.

  • get_days_between: İki tarih arasındaki farkı gün bazında hesaplar.
  • calculate_penalty_point: Gecikme süresine göre (20, 30, 45 gün sınırları) öğrenciye yansıyacak ceza puanını (10, 25, 50 puan) belirler.
  • handle_response_error: Fonksiyonlardan dönen sonuçları analiz eder; hata varsa sebebini, işlem başarılıysa onay mesajını kullanıcıya gösterir.

📸 Ekran Görüntüleri

image


Stats 1


Stats 2


Terminal Screenshot

🛠️ Kurulum

gcc main.c -o library_app
./library_app

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors