KÜTÜPHANE OTOMASYONU PROJESİ
Bu çalışma; PHP ve MySQL kullanılarak geliştirilmiş, bir kütüphanenin dijital envanter yönetimini, üye takibini ve ödünç alma süreçlerini otomatize eden web tabanlı bir yazılım projesidir. Proje, yönetici odaklı bir kontrol paneli üzerinden tüm operasyonel süreci yönetmek üzere tasarlanmıştır.
PROJE ÖZELLİKLERİ
Geliştirilen bu otomasyon şu anda sahibi olacaktır:
- Dinamik Dashboard: Toplam kitap, üye ve aktif işlem sayılarının anlık takibi.
- Gelişmiş Veri Yönetimi: Kitap, üye ve ödünç işlemlerinin ilişkisel veritabanı ile saklanması.
- Güvenli Yönetici Girişi: Şifrelenmiş admin paneli erişimi.
- İşlem Geçmişi: Son yapılan ödünç işlemlerinin durum bazlı (Ödünçte, İade Edildi, Gecikmiş) listelenmesi.
KULLANILAN TEMEL KAVRAMLAR
Bu proje ile aşağıdaki web teknolojilerini öğrenmiş olacaksınız:
- MySQL: İlişkisel veritabanı tasarımı.
- PHP PDO: Güvenli veritabanı bağlantısı ve sorgu yönetimi.
- Password Hashing: Şifrelerin güvenli saklanması.
- Session: Kullanıcı oturumlarının kontrolü.
- SQL Joins: Birden fazla tabloyu birleştirerek veri çekme.
- Bootstrap UI: Responsive (duyarlı) ve modern arayüz tasarımı.
PROJE MANTIĞI
Uygulama Akışı:
- Giriş Kontrolü: Yönetici, kullanıcı adı ve şifresiyle sisteme dahil olur.
- Veri Analizi: Panel açıldığında veritabanındaki kitap ve üye sayıları hesaplanır.
- İşlem Takibi: Son yapılan ödünç işlemleri tarih sırasına göre listelenir.
- Güvenli Çıkış: Oturum sonlandırılarak sistem güvenli hale getirilir.
Proje 3 Ana Dosya Grubu Üzerinden İlerler:
-
database.sql→ Veritabanı ve tablo şemaları.
-
login.php & logoou.php→ Güvenlik ve oturum işlemleri.
-
index.php→ Ana yönetim paneli ve istatistikler.
1 VERİLERİN TANIMLANMASI VE İSTATİSTİKLER
Veriler MySQL üzerinde 4 ana tabloda tutulur. Bu yapı, her verinin birbiriyle ilişkili olmasını sağlar:
- admins: Sisteme erişim yetkisi olan kullanıcıları tutar.
- books: Kitapların teknik detaylarını ve stok durumlarını barındırır.
- members: Kütüphane üyelerinin kayıt bilgilerini saklar.
- borrow_tranactions: Kitaplar ve üyeler arasında kurulan ödünç alma ilişkisini, tarih ve durum bilgileriyle yönetir.

Sistemdeki toplam sayıları göstermek için PHP içinde SQL sorguları kullanılır. Bu yapı, yöneticinin kütüphane kapasitesini anlık görmesini sağlar.
// Toplam kitap ve üye sayısını veritabanından çekme
$totalBooks = $pdo->query('SELECT COUNT(*) FROM books')->fetchColumn();
$totalMembers = $pdo->query('SELECT COUNT(*) FROM members')->fetchColumn();
// Aktif olarak ödünçte olan kitapların sayısı
$activeBorrows = $pdo->query("SELECT COUNT(*) FROM borrow_transactions WHERE status IN ('borrowed','late')")->fetchColumn();
2 KİMLİK DOĞRULAMA (Login/Logout)
Yönetici giriş yaparken şifre güvenliği password verify ile sağlanır. Giriş başarılı olduğunda oturum değişkenleri tanımlanır.
if ($admin && password_verify($password, $admin['password'])) {
session_regenerate_id(true);
$_SESSION['admin_id'] = $admin['id'];
$_SESSION['admin_username'] = $admin['username'];
header('Location: index.php');
}
3 ÖDÜNÇ İŞLEMLERİ VE DURUM TAKİBİ
Ödünç alınan kitapların durumu, veritabanındaki status alanına göre ana sayfada farklı renklerde listelenir. Bu, görsel bir takip kolaylığı sağlar.
<?php if ($r['status'] === 'borrowed'): ?>
<span class="badge bg-primary">Ödünçte</span>
<?php elseif ($r['status'] === 'returned'): ?>
<span class="badge bg-success">İade Edildi</span>
<?php else: ?>
<span class="badge bg-danger">Gecikmiş</span>
<?php endif; ?>
4 ÖDÜNÇ İŞLEMLERİ VE TABLO BİRLEŞTİRME (JOIN)
Sistem sadece ID numaralarını değil, insan tarafından okunabilir isimleri göstermek zorundadır. Bunun için üç tabloyu birleştiren (JOIN) karmaşık bir sorgu kullanılır:
$recentTransactions = $pdo->query("
SELECT
bt.id,
m.full_name,
b.title,
bt.borrow_date,
bt.status
FROM borrow_transactions bt
JOIN members m ON m.id = bt.member_id -- Üye adını al
JOIN books b ON b.id = bt.book_id -- Kitap adını al
ORDER BY bt.created_at DESC
LIMIT 10
")->fetchAll();
5 ARAYÜZ (UI) YAPILANDIRMASI
Dashboard ekranındaki veriler, Bootstrap sınıflarıyla dinamik olarak renklenir. Bu, veritabanından gelen durum (status) bilgisine göre PHP tarafında karar verilir:
<?php foreach ($recentTransactions as $r): ?>
<tr>
<td><?= htmlspecialchars($r['full_name']) ?></td>
<td><?= htmlspecialchars($r['title']) ?></td>
<td>
<?php if ($r['status'] === 'borrowed'): ?>
<span class="badge bg-primary">Ödünçte</span>
<?php elseif ($r['status'] === 'returned'): ?>
<span class="badge bg-success">İade Edildi</span>
<?php else: ?>
<span class="badge bg-danger">Gecikmiş</span>
<?php endif; ?>
</td>
</tr>
<?php endforeach; ?>
SQL VE PHP KODLARI
1) VERİTABANI ŞEMASI (database.sql)
Bu dosya, sistemin temelini oluşturan tabloları tanımlar. İlişkisel veritabanı yapısı burada kurulur.
CREATE DATABASE `kutuphane_otomasyon`;
USE `kutuphane_otomasyon`;
-- Kitaplar tablosu
CREATE TABLE `books` (
`id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
`title` VARCHAR(255) NOT NULL,
`author` VARCHAR(255),
`isbn` VARCHAR(20) UNIQUE,
`stock` INT DEFAULT 1
);
-- Ödünç işlemleri tablosu (İlişkisel)
CREATE TABLE `borrow_transactions` (
`id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
`member_id` INT UNSIGNED NOT NULL,
`book_id` INT UNSIGNED NOT NULL,
`status` ENUM('borrowed','returned','late') DEFAULT 'borrowed',
CONSTRAINT `fk_member` FOREIGN KEY (`member_id`) REFERENCES `members`(`id`),
CONSTRAINT `fk_book` FOREIGN KEY (`book_id`) REFERENCES `books`(`id`)
);
2) GİRİŞ EKRANI (login.php)
Yöneticinin sisteme giriş yaptığı arayüz kodudur. PHP ve Bootstrap bileşenlerini birleştirir.
<form method="POST">
<div class="mb-3">
<label class="form-label">Kullanıcı Adı</label>
<input type="text" name="username" class="form-control" placeholder="admin" required>
</div>
<div class="mb-4">
<label class="form-label">Şifre</label>
<input type="password" name="password" class="form-control" placeholder="••••••••" required>
</div>
<button type="submit" class="btn btn-primary w-100">Giriş Yap</button>
</form>
3) ANA PANEL (index.php)
İstatistiklerin ve son işlemlerin tablolar halinde sunulduğu ana dosyadır.
<div class="row g-4 mb-4">
<div class="col-md-4">
<div class="card bg-primary text-white p-3">
<h5>Toplam Kitap</h5>
<h2><?= $totalBooks ?></h2>
</div>
</div>
</div>
<table class="table">
<thead>
<tr><th>Üye</th><th>Kitap</th><th>Durum</th></tr>
</thead>
<tbody>
</tbody>
</table>
Web teknolojileri ile geliştirilen bu Kütüphane Otomasyon Sistemi, veri yönetimi ve sunucu tarafı programlamaya giriş için mükemmel bir projedir. Kodları uygulayarak ve kendi özelliklerinizi ekleyerek (Örn: Kitap arama, yeni üye ekleme formu) yetkinliklerinizi hızla geliştirebilirsiniz.