You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
# Library Management System — PostgreSQL + Streamlit
A full library management web app built for the **Database Management Systems** course at Sakarya University:
a normalised PostgreSQL schema with stored functions and triggers, sample data, and a Streamlit dashboard with
Plotly charts for books, members, loans, authors, publishers and Turkey's 81 provinces.
- **Database:** schema (`veritabani_olustur.sql`), functions & triggers (`fonkAndTriger.sql`) and their tests (`trigerAndFonkTest.sql`), sample data (`ornek_veriler.sql`)
- **App:** `kutuphane_arayuz.py` — dashboard, CRUD screens, lending/returns, reports (pie/bar/treemap/gauge charts)
- **Stack:** Python · Streamlit · pandas · Plotly · psycopg2 · PostgreSQL
```bash
pip install -r requirements.txt
createdb -U postgres kutuphane_db
psql -U postgres -d kutuphane_db -f veritabani_olustur.sql -f fonkAndTriger.sql -f ornek_veriler.sql
export PGPASSWORD="your_postgres_password"
streamlit run kutuphane_arayuz.py # http://localhost:8501
```
*Türkçe ayrıntılı açıklama aşağıdadır.*
---
# 📚 Kütüphane Yönetim Sistemi - Web Arayüzü
## Özellikler
### 🏠 Dashboard (Ana Sayfa)
- Genel istatistikler (Toplam kitap, rafta kitap, aktif üye, ödünç sayısı)
- Kategoriye göre kitap dağılımı (Pasta grafik)
- Yayınevine göre kitap dağılımı (Bar grafik)
- Bölgeye göre üye dağılımı
- Üyelik tipine göre dağılım
### 📖 Kitap Yönetimi
- **Listeleme:** Tüm kitapları görüntüleme ve arama
- **Ekleme:** Yeni kitap ekleme (ISBN, başlık, yayınevi, kategori, basım yılı vb.)
- **Güncelleme:** Mevcut kitap bilgilerini düzenleme
- **Silme:** Kitap kaydı silme
### 👥 Üye Yönetimi
- **Listeleme:** Tüm üyeleri görüntüleme ve arama
- **Ekleme:** Yeni üye kaydı (Ad, soyad, TC, üyelik tipi vb.)
- **Güncelleme:** Üye bilgilerini düzenleme
- **Silme:** Üye kaydı silme
### 🔄 Ödünç İşlemleri
- **Listeleme:** Tüm ödünç işlemlerini görüntüleme
- **Ödünç Ver:** Üyeye kitap ödünç verme
- **İade Al:** Ödünç alınan kitabı iade alma
### 🏙️ Şehir Yönetimi
- Türkiye'nin 81 ili için CRUD işlemleri
- Nüfus verileri ve bölge bilgileri
- Görsel nüfus analizi
### ✍️ Yazar Yönetimi
- Yazar listesi ve detayları
- Yeni yazar ekleme
- Yazar silme
### 🏢 Yayınevi Yönetimi
- Yayınevi listesi
- Yeni yayınevi ekleme
### 📊 Raporlar ve Grafikler
- **Kitap Analizi:** Kategori ve yayınevine göre dağılımlar, basım yılı trendi
- **Üye Analizi:** Üyelik tipi ve şehre göre dağılımlar
- **Coğrafi Analiz:** Bölgesel dağılımlar, treemap gösterimleri
- **Trend Analizi:** Gauge göstergeleri ile anlık durum
---
## Kurulum
### 1. Gerekli Paketleri Yükle
```bash
pip install -r requirements.txt
```
Veya tek tek:
```bash
pip install streamlit pandas plotly psycopg2-binary
```
### 2. Veritabanı Bağlantısını Ayarla
Bağlantı bilgileri ortam değişkenlerinden okunur (şifre koda yazılmaz):
```bash
export PGPASSWORD="postgres_sifreniz" # zorunlu
# isteğe bağlı: PGHOST (localhost), PGDATABASE (kutuphane_db), PGUSER (postgres), PGPORT (5432)
```
### 3. Uygulamayı Çalıştır
```bash
streamlit run kutuphane_arayuz.py
```
Uygulama varsayılan olarak `http://localhost:8501` adresinde açılır.
---
## Ekran Görüntüleri
### Dashboard
- İstatistik kartları
- Interaktif grafikler
- Anlık durum göstergeleri
### Tablolar
- Sıralanabilir ve filtrelenebilir tablolar
- Arama fonksiyonu
- Sayfalama
### Formlar
- Kullanıcı dostu giriş formları
- Doğrulama mesajları
- Başarı/hata bildirimleri
---
## Teknik Detaylar
### Kullanılan Teknolojiler
- **Python 3.8+**
- **Streamlit:** Web arayüzü
- **Pandas:** Veri işleme
- **Plotly:** İnteraktif grafikler
- **psycopg2:** PostgreSQL bağlantısı
### Dosya Yapısı
```
proje/
├── veritabani_olustur.sql # Tablo oluşturma
├── ornek_veriler.sql # Örnek veri ekleme
├── veritabani.py # Veritabanı sınıfı
├── kutuphane_arayuz.py # Web arayüzü (Streamlit)
├── requirements.txt # Gerekli paketler
└── README.md # Bu dosya
```
---
## Notlar
1. **PostgreSQL** sunucusunun çalıştığından emin ol
2. `kutuphane_db` veritabanının oluşturulmuş olması gerekiyor
3. Tablolar `veritabani_olustur.sql` ile oluşturulmalı
4. Örnek veriler `ornek_veriler.sql` ile eklenebilir
---
## Sorun Giderme
### Bağlantı Hatası
```
Bağlantı hatası: could not connect to server
```
**Çözüm:** PostgreSQL servisinin çalıştığını kontrol et.
### Tablo Bulunamadı
```
relation "kitaplar" does not exist
```
**Çözüm:** `veritabani_olustur.sql` dosyasını Valentina Studio'da çalıştır.
### Streamlit Açılmıyor
```bash
# Port meşgulse farklı port kullan:
streamlit run kutuphane_arayuz.py --server.port 8502
```
---
## İletişim
BSM 211 - Veritabanı Yönetim Sistemleri Projesi# VTYSPROJE
---
License: [MIT](LICENSE) · Built by [Adem Batur](https://github.com/adembtr)
About
Library management system: PostgreSQL schema with functions & triggers + Streamlit/Plotly dashboard (DBMS course project, Sakarya University)