← Projeler

Üniversite bölüm yönetim sistemi

React ve FastAPI ile ders/sınav planlama, çakışma kontrolü, onay süreçleri, rastgele oturma planı ve PDF çıktıları.

Rol
Geliştirme ekibi üyesi · iki kişilik proje
Kurum
Kocaeli Üniversitesi
Dönem
2025
Teknolojiler
Python · FastAPI · React · SQLAlchemy · SQLite · Tailwind CSS · JWT
Bölüm yönetim sisteminde bir dersliğin haftalık programı ve derslerin kapasite bilgileri.

Problem

Aynı derslik iki farklı etkinliğe ayrıldığında ya da bir öğretim elemanına çakışan saatler atandığında, programın geri kalanı da etkileniyor. Bu projede ders, sınav ve derslik planlamasını tek sistemde topladık. İki kişilik ekiple geliştirdiğimiz uygulamada bölüm başkanı, sekreter ve öğretim elemanı için farklı işlem akışları bulunuyor.

Veri modeli ve uygulama yapısı

React, Tailwind CSS ve Axios ile geliştirilen arayüz, FastAPI servisleriyle haberleşiyor. Oturum bilgisi Context API üzerinden paylaşılıyor; JWT tabanlı giriş ve role göre arayüz yönlendirmeleri kullanılıyor. Backend’de Pydantic istek/yanıt şemaları ve SQLAlchemy modelleri ayrı sorumluluklar taşıyor.

Öğrenci-ders ilişkisi StudentCourse, bir sınavın birden fazla derslikte yapılması ExamClassroom modeliyle kuruluyor. ExamSeating, öğrencinin sınav, derslik ve sıra bilgisini saklıyor. Ders tanımı oluşturmak ile öğretim elemanı ve programa atamak ayrı işlemler.

Derslik kodu ve kapasitesi planlamanın girdileri. Yönetim ekranı bu kayıtların ekleme, düzenleme ve silme işlemlerini topluyor.
Derslik envanteri Derslik kodu ve kapasitesi planlamanın girdileri. Yönetim ekranı bu kayıtların ekleme, düzenleme ve silme işlemlerini topluyor.

Planlama kuralları

Ders atamasında aynı dersliğin veya öğretim elemanının çakışan saat aralığında kullanılıp kullanılmadığı kontrol ediliyor. Sınav oluştururken tarih/saat, derslik kullanımı ve kapasite değerlendiriliyor. Tekli oturma düzeninde kullanılabilir kapasite capacity // 2 olarak hesaplanıyor.

Öğretim elemanı sınav için değişiklik talebi gönderebiliyor. Talep sınavı yeniden onay bekleyen duruma getiriyor; bölüm başkanı onaylayabiliyor. Program ve takvimler PDF olarak alınabiliyor.

Öğretim elemanı bir not gönderiyor; sınav yeniden değerlendirilmek üzere bekleyen duruma alınıyor.
Onaya dönen değişiklik talebi Öğretim elemanı bir not gönderiyor; sınav yeniden değerlendirilmek üzere bekleyen duruma alınıyor.

Oturma planı

Algoritma ilgili derse kayıtlı öğrencileri alıyor, toplam kapasiteyi kontrol ediyor ve listeyi random.shuffle ile karıştırıyor. Öğrenciler derslik kapasitelerine göre bölünüp sıra numaralarıyla kaydediliyor. Bu yöntem rastgele dağıtım sağlıyor; sınav programının tamamını optimize eden bir solver kullanılmıyor.

Öğrenci, ders, sınav ve derslik bağlantıları; bir sınavın birden çok derslikte yapılmasını ve oturma kayıtlarının saklanmasını destekliyor.
Planlamanın veri modeli Öğrenci, ders, sınav ve derslik bağlantıları; bir sınavın birden çok derslikte yapılmasını ve oturma kayıtlarının saklanmasını destekliyor.

Teknik sınırlar

İlk sürümde bazı işlemler backend’de rol kontrolü taşırken bazıları yalnızca arayüzden sınırlandırılmış. Sonraki adım, yetki kontrollerini bütün endpoint’lere taşımak ve rol bazlı API testleri eklemek. Oturma planını silip yeniden üretme işlemi de tek transaction içinde yapılmalı.

Sonuç

Proje; derslik yönetimi, zaman çakışması kontrolü, sınav onayı, rastgele oturma planı ve PDF raporlamayı tek full-stack uygulamada birleştirdi. Ders programı kullanıcı tarafından hazırlanıyor; sistem atamaları iş kurallarına göre kontrol ediyor.