Giriş
Desktop tabanlı sistemlerin hala aktif olarak kullanıldığı birçok kurumda, personel bilgilerini yönetmek, vardiya düzenini kontrol etmek ve giriş/çıkış verilerini takip etmek için özelleştirilmiş yazılımlara ihtiyaç duyuluyor. Bu ihtiyaca yönelik olarak geliştirdiğim Personel Takip Sistemi, WPF (Windows Presentation Foundation) teknolojisi ile modern bir kullanıcı arayüzü sunuyor.
1. Kullanılan Teknolojiler
- 💻 C# + .NET: İş mantığı ve arayüz kodları
- 📐 WPF: Modern, ölçeklenebilir UI
- 🗂️ SQLite: Hafif ve entegre veritabanı
- 🎨 MahApps.Metro: Dark/light tema ve animasyonlu bileşenler
2. Arayüz Tasarımı
Projeyi geliştirirken sade ama işlevsel bir tasarım hedefledim. Giriş ekranı animasyonlu olarak açılıyor. Koyu ve açık tema desteği mevcut. Navigasyon paneli ile kullanıcılar; personel kayıtları, vardiya kontrolü ve yönetici paneli arasında kolayca geçiş yapabiliyor.
- Kayan açılış animasyonu
- Dark mode varsayılan tema
- CV butonu ve kullanıcı bilgileri üst panelde
3. Veritabanı Yapısı
SQLite veritabanında üç ana tablo oluşturuldu:
Personel
: ID, Ad, Soyad, Departman, Mail, ŞifreGirisCikis
: PersonelID, Tarih, GirişSaati, ÇıkışSaatiVardiya
: Tarih, Başlangıç, Bitiş, PersonelID
CREATE TABLE Personel (
ID INTEGER PRIMARY KEY,
Ad TEXT NOT NULL,
Soyad TEXT NOT NULL,
Departman TEXT,
Mail TEXT,
Sifre TEXT
);
4. Yapay Zekâ Destekli Planlama (Hedef)
Sistem ileride çalışan yoğunluğunu analiz eden ve uygun vardiya öneren bir yapay zeka algoritmasıyla desteklenebilir. Personel katılım oranlarına ve geçmiş kayıtlarına göre öneriler sunan bir yapı hedefleniyor.
5. Öğrendiğim Şeyler
- MVVM yapısı ile daha sürdürülebilir ve temiz kodlama
- UI/UX tasarımı, kullanıcı memnuniyetini büyük oranda etkiliyor
- SQLite ile WPF arasında bağlantı kurmak kolay ama dikkatli yönetilmeli
- Veritabanı validasyonları en başta düşünülmeli
Sonuç
WPF ile masaüstü yazılım geliştirme sürecim, yalnızca teknik bilgi değil aynı zamanda tasarım ve kullanıcı deneyimi açısından da büyük katkı sağladı. Bu projeyi ileriye dönük olarak web versiyona da taşımayı planlıyorum.