Skip to content

ensuca/LibraryApp

Repository files navigation

📚 LibraryApp - Enterprise Library Management System

.NET Framework C# SQLite Entity Framework License

A professional, production-ready library management system built with C# and Windows Forms, featuring role-based access control, real-time book inventory management, and secure SQLite database integration.


🎯 Overview

LibraryApp is a comprehensive desktop application designed to streamline library operations through an intuitive Windows Forms interface. The system implements enterprise-level authentication, role-based authorization, and efficient database management to handle book borrowing, returns, and user administration.

Why LibraryApp?

  • Security-First Design: Parameterized SQL queries prevent injection attacks
  • Role-Based Access Control: Separate interfaces for administrators and regular users
  • Real-Time Inventory: Live updates of book availability status
  • Scalable Architecture: Clean separation of concerns with three-tier architecture
  • Production-Ready: Built with Entity Framework and ADO.NET for reliability

✨ Key Features

🔐 Authentication & Authorization

  • Dual-role authentication system supporting both administrators and regular users
  • Secure credential validation with parameterized queries
  • Session management and role-based UI navigation
  • Password-protected admin access

📖 Book Management

  • Real-time book inventory displayed in DataGridView controls
  • Book borrowing and return workflow with automatic status updates
  • Borrower tracking system linking users to borrowed books
  • Comprehensive book metadata display

👥 User Administration

  • Admin panel for user account management
  • User deletion capabilities with confirmation dialogs
  • Separate user and admin authentication tables
  • User activity tracking through borrower IDs

🗄️ Database Layer

  • SQLite integration for lightweight, portable data storage
  • Entity Framework 6.4.4 for ORM capabilities
  • Centralized DatabaseManager class following repository pattern
  • Transaction-safe operations with proper connection handling

🎨 User Interface

  • Clean, intuitive Windows Forms design
  • Responsive form navigation
  • User-friendly message dialogs for operation feedback
  • Professional UI component layout

🛠️ Tech Stack

Backend

Technology Version Purpose
C# 10.0 Primary programming language
.NET Framework 4.7.2 Application framework
Entity Framework 6.4.4 ORM and database abstraction
ADO.NET 4.7.2 Direct database operations

Database

Technology Version Purpose
SQLite 3.13.0 Embedded relational database
System.Data.SQLite 1.0.117.0 SQLite ADO.NET provider
System.Data.SQLite.EF6 1.0.117.0 Entity Framework 6 support

UI Framework

Technology Purpose
Windows Forms Desktop GUI framework
System.Windows.Forms Form controls and components
System.Drawing UI rendering and graphics

🏗️ Architecture & Design

Three-Tier Architecture

┌─────────────────────────────────────┐
│     Presentation Layer              │
│  ┌─────────┐  ┌──────────────┐     │
│  │ Form1   │  │ AdminPanel   │     │
│  │ (Login) │  │ BookPanel    │     │
│  └─────────┘  └──────────────┘     │
└─────────────────────────────────────┘
              ↓
┌─────────────────────────────────────┐
│     Business Logic Layer            │
│  ┌─────────────────────────────┐   │
│  │   DatabaseManager           │   │
│  │  (Repository Pattern)       │   │
│  └─────────────────────────────┘   │
└─────────────────────────────────────┘
              ↓
┌─────────────────────────────────────┐
│     Data Access Layer               │
│  ┌──────────┐  ┌──────────────┐    │
│  │ SQLite   │  │ Entity       │    │
│  │ Database │  │ Framework    │    │
│  └──────────┘  └──────────────┘    │
└─────────────────────────────────────┘

Design Patterns Implemented

  1. Repository Pattern (DatabaseManager.cs)

    • Centralized data access logic
    • Abstraction over database operations
    • Testable and maintainable code structure
  2. Separation of Concerns

    • UI layer (Forms) independent of data access
    • Business logic isolated in DatabaseManager
    • Database operations encapsulated
  3. Dependency Injection (Constructor-based)

    • DatabaseManager instantiated in form constructors
    • Promotes loose coupling

Database Schema

-- Admin Table
CREATE TABLE Admin (
    Username TEXT PRIMARY KEY,
    Password TEXT NOT NULL
);

-- Users Table
CREATE TABLE Users (
    Username TEXT PRIMARY KEY,
    Password TEXT NOT NULL
);

-- Books Table
CREATE TABLE Books (
    BookId TEXT PRIMARY KEY,
    Title TEXT NOT NULL,
    Author TEXT,
    IsBorrowed INTEGER DEFAULT 0,
    BorrowerId TEXT,
    FOREIGN KEY (BorrowerId) REFERENCES Users(Username)
);

🚀 Getting Started

Prerequisites

Before running LibraryApp, ensure you have:

  • Operating System: Windows 7 or later
  • .NET Framework: Version 4.7.2 or higher (Download)
  • Visual Studio: 2017 or later (recommended) or any C# compatible IDE
  • NuGet: Package manager (included with Visual Studio)

Installation

  1. Clone the repository

    git clone https://github.com/ensuca/LibraryApp.git
    cd LibraryApp
  2. Restore NuGet packages

    nuget restore LibraryApp.sln

    Or in Visual Studio: Tools → NuGet Package Manager → Restore NuGet Packages

  3. Build the solution

    msbuild LibraryApp.sln /p:Configuration=Release

    Or in Visual Studio: Build → Build Solution (Ctrl+Shift+B)

  4. Run the application

    cd bin/Release
    LibraryApp.exe

    Or in Visual Studio: Press F5

Configuration

The application uses SQLite database (veritabani.db). Connection string is configured in:

  • File: DatabaseManager.cs:14
  • Connection String: Data Source=veritabani.db;Version=3;

To use a different database location, modify the connection string:

connection = new SQLiteConnection("Data Source=YOUR_PATH_HERE.db;Version=3;");

💻 Usage Examples

User Login Flow

// Regular user login
1. Launch LibraryApp.exe
2. Enter username and password
3. Click "Login" button
4. → BookPanel opens with available books

// Admin login
1. Launch LibraryApp.exe
2. Click "Admin Login" link
3. Enter admin credentials
4. Click "Admin Login" button
5. → AdminPanel opens with management tools

Borrowing a Book

// In BookPanel
1. View available books in DataGridView
2. Note the BookId of desired book
3. Enter BookId in "Book ID" field
4. Enter your UserId in "User ID" field
5. Click "Borrow Book" button
6. → Book status updates to "Borrowed"

Returning a Book

// In BookPanel
1. Enter BookId of borrowed book
2. Click "Return Book" button
3. → Book status resets to "Available"
4. → BorrowerId cleared from database

📂 Project Structure

LibraryApp/
│
├── Program.cs                    # Application entry point
├── Form1.cs                      # Login form (authentication)
├── Form1.Designer.cs             # Login form UI design
├── AdminPanel1.cs                # Administrator interface
├── AdminPanel1.Designer.cs       # Admin panel UI design
├── BookPanel.cs                  # User book management interface
├── BookPanel.Designer.cs         # Book panel UI design
├── BookPanel.resx                # Book panel resources
├── DatabaseManager.cs            # Data access layer (Repository)
│
├── App.config                    # Entity Framework configuration
├── packages.config               # NuGet package dependencies
├── LibraryApp.csproj            # Project file
├── LibraryApp.sln               # Solution file
│
├── Properties/
│   └── AssemblyInfo.cs          # Assembly metadata
│
├── bin/
│   └── Debug/
│       ├── LibraryApp.exe       # Compiled executable
│       └── veritabani.db        # SQLite database
│
├── packages/                     # NuGet packages
└── obj/                          # Build artifacts

🔒 Security Features

SQL Injection Prevention

All database queries use parameterized commands to prevent SQL injection attacks:

// Example from DatabaseManager.cs:26-34
command.CommandText = "SELECT COUNT(*) FROM Admin WHERE Username = @username AND Password = @password";
command.Parameters.AddWithValue("@username", username);
command.Parameters.AddWithValue("@password", password);

Role-Based Access Control

  • Separate authentication tables for users and administrators
  • UI components restricted based on user role
  • Admin functions inaccessible to regular users

Best Practices

  • Connection management with proper Open()/Close() patterns
  • Clear parameter collections before reuse
  • Transaction-safe database operations

🧪 Code Quality

Design Principles Applied

Single Responsibility Principle

  • Each form handles one specific user interface
  • DatabaseManager exclusively handles data operations

DRY (Don't Repeat Yourself)

  • Centralized database logic in DatabaseManager
  • Reusable methods for common operations

Separation of Concerns

  • Clear boundaries between UI, business logic, and data access
  • Forms depend on abstractions (DatabaseManager) not concrete implementations

Code Highlights

DatabaseManager.cs - Clean, maintainable data access:

public bool ValidateUser(string username, string password, bool isAdmin)
{
    connection.Open();
    command.Parameters.Clear();

    if (isAdmin)
        command.CommandText = "SELECT COUNT(*) FROM Admin WHERE Username = @username AND Password = @password";
    else
        command.CommandText = "SELECT COUNT(*) FROM Users WHERE Username = @username AND Password = @password";

    command.Parameters.AddWithValue("@username", username);
    command.Parameters.AddWithValue("@password", password);
    int count = Convert.ToInt32(command.ExecuteScalar());
    connection.Close();

    return count > 0;
}

🎓 Learning Outcomes

This project demonstrates proficiency in:

  • Desktop Application Development with Windows Forms
  • Database Design and SQLite integration
  • ORM Usage with Entity Framework 6
  • Security Best Practices (parameterized queries, role-based access)
  • Software Architecture (three-tier, repository pattern)
  • Clean Code Principles (SOLID, DRY, separation of concerns)
  • Version Control with Git
  • Project Documentation and technical writing

🚦 Roadmap

Planned Enhancements

  • Password Hashing - Implement bcrypt/SHA-256 for secure password storage
  • User Registration - Self-service account creation for new users
  • Book Search & Filtering - Advanced search by title, author, ISBN
  • Due Date System - Track borrowing periods and overdue books
  • Report Generation - Export borrowing history and statistics
  • Unit Testing - Implement comprehensive test coverage
  • Logging - Add logging framework (NLog/Serilog)
  • Modern UI - Migrate to WPF or .NET MAUI for cross-platform support

Known Limitations

  • Passwords stored in plain text (improvement planned)
  • No email/notification system for overdue books
  • Single-user application (no concurrent access control)
  • Limited to Windows operating system

📊 Performance & Scalability

Current Capabilities

  • Database Size: Handles thousands of book records efficiently
  • Response Time: Sub-second query execution for typical operations
  • Memory Footprint: Lightweight (~30MB RAM usage)

Optimization Features

  • Connection Pooling: Managed by ADO.NET provider
  • Efficient Queries: Direct SQL with minimal overhead
  • Data Binding: DataGridView uses data binding for performance

🤝 Contributing

Contributions are welcome! Please follow these guidelines:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Coding Standards

  • Follow C# naming conventions (PascalCase for methods, camelCase for variables)
  • Add XML documentation comments for public methods
  • Write unit tests for new features
  • Ensure code passes existing tests before submitting PR

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.


👤 Author

Enes Uca


🙏 Acknowledgments

  • Entity Framework team for excellent ORM framework
  • SQLite community for reliable embedded database
  • Microsoft for comprehensive .NET Framework documentation

⭐ Star this repository if you find it useful! ⭐

Made with ❤️ and C#




🇹🇷 Türkçe

📚 LibraryApp - Kurumsal Kütüphane Yönetim Sistemi

.NET Framework C# SQLite Entity Framework Lisans

C# ve Windows Forms ile geliştirilmiş, rol tabanlı erişim kontrolü, gerçek zamanlı kitap envanter yönetimi ve güvenli SQLite veritabanı entegrasyonu içeren profesyonel, üretime hazır bir kütüphane yönetim sistemi.


🎯 Genel Bakış

LibraryApp, sezgisel bir Windows Forms arayüzü aracılığıyla kütüphane işlemlerini kolaylaştırmak için tasarlanmış kapsamlı bir masaüstü uygulamasıdır. Sistem, kitap ödünç alma, iade ve kullanıcı yönetimi işlemlerini gerçekleştirmek için kurumsal düzeyde kimlik doğrulama, rol tabanlı yetkilendirme ve verimli veritabanı yönetimi uygular.

Neden LibraryApp?

  • Güvenlik Odaklı Tasarım: Parametreli SQL sorguları enjeksiyon saldırılarını önler
  • Rol Tabanlı Erişim Kontrolü: Yöneticiler ve normal kullanıcılar için ayrı arayüzler
  • Gerçek Zamanlı Envanter: Kitap kullanılabilirlik durumunun canlı güncellemeleri
  • Ölçeklenebilir Mimari: Üç katmanlı mimari ile temiz endişe ayrımı
  • Üretime Hazır: Güvenilirlik için Entity Framework ve ADO.NET ile geliştirilmiş

✨ Öne Çıkan Özellikler

🔐 Kimlik Doğrulama ve Yetkilendirme

  • Hem yöneticileri hem de normal kullanıcıları destekleyen çift rollü kimlik doğrulama sistemi
  • Parametreli sorgularla güvenli kimlik bilgisi doğrulama
  • Oturum yönetimi ve rol tabanlı UI navigasyonu
  • Şifre korumalı yönetici erişimi

📖 Kitap Yönetimi

  • DataGridView kontrollerinde görüntülenen gerçek zamanlı kitap envanteri
  • Otomatik durum güncellemeleri ile kitap ödünç alma ve iade iş akışı
  • Kullanıcıları ödünç alınan kitaplarla ilişkilendiren ödünç alan takip sistemi
  • Kapsamlı kitap meta veri görüntüleme

👥 Kullanıcı Yönetimi

  • Kullanıcı hesabı yönetimi için yönetici paneli
  • Onay diyalogları ile kullanıcı silme yetenekleri
  • Ayrı kullanıcı ve yönetici kimlik doğrulama tabloları
  • Ödünç alan kimlikleri aracılığıyla kullanıcı aktivite takibi

🗄️ Veritabanı Katmanı

  • Hafif, taşınabilir veri depolama için SQLite entegrasyonu
  • ORM yetenekleri için Entity Framework 6.4.4
  • Repository pattern izleyen merkezi DatabaseManager sınıfı
  • Uygun bağlantı yönetimi ile işlem güvenli operasyonlar

🎨 Kullanıcı Arayüzü

  • Temiz, sezgisel Windows Forms tasarımı
  • Duyarlı form navigasyonu
  • İşlem geri bildirimi için kullanıcı dostu mesaj diyalogları
  • Profesyonel UI bileşen düzeni

🛠️ Teknoloji Yığını

Backend

Teknoloji Versiyon Amaç
C# 10.0 Birincil programlama dili
.NET Framework 4.7.2 Uygulama framework'ü
Entity Framework 6.4.4 ORM ve veritabanı soyutlama
ADO.NET 4.7.2 Doğrudan veritabanı işlemleri

Veritabanı

Teknoloji Versiyon Amaç
SQLite 3.13.0 Gömülü ilişkisel veritabanı
System.Data.SQLite 1.0.117.0 SQLite ADO.NET sağlayıcı
System.Data.SQLite.EF6 1.0.117.0 Entity Framework 6 desteği

UI Framework

Teknoloji Amaç
Windows Forms Masaüstü GUI framework'ü
System.Windows.Forms Form kontrolleri ve bileşenleri
System.Drawing UI render ve grafik

🏗️ Mimari ve Tasarım

Üç Katmanlı Mimari

┌─────────────────────────────────────┐
│     Sunum Katmanı                   │
│  ┌─────────┐  ┌──────────────┐     │
│  │ Form1   │  │ AdminPanel   │     │
│  │ (Giriş) │  │ BookPanel    │     │
│  └─────────┘  └──────────────┘     │
└─────────────────────────────────────┘
              ↓
┌─────────────────────────────────────┐
│     İş Mantığı Katmanı              │
│  ┌─────────────────────────────┐   │
│  │   DatabaseManager           │   │
│  │  (Repository Pattern)       │   │
│  └─────────────────────────────┘   │
└─────────────────────────────────────┘
              ↓
┌─────────────────────────────────────┐
│     Veri Erişim Katmanı             │
│  ┌──────────┐  ┌──────────────┐    │
│  │ SQLite   │  │ Entity       │    │
│  │ Database │  │ Framework    │    │
│  └──────────┘  └──────────────┘    │
└─────────────────────────────────────┘

Uygulanan Tasarım Desenleri

  1. Repository Pattern (DatabaseManager.cs)

    • Merkezi veri erişim mantığı
    • Veritabanı işlemleri üzerinde soyutlama
    • Test edilebilir ve sürdürülebilir kod yapısı
  2. Endişelerin Ayrılması (Separation of Concerns)

    • UI katmanı veri erişiminden bağımsız
    • İş mantığı DatabaseManager'da izole
    • Veritabanı işlemleri kapsüllenmiş
  3. Bağımlılık Enjeksiyonu (Constructor tabanlı)

    • DatabaseManager form constructor'larında örnekleniyor
    • Gevşek bağlantıyı teşvik eder

Veritabanı Şeması

-- Yönetici Tablosu
CREATE TABLE Admin (
    Username TEXT PRIMARY KEY,
    Password TEXT NOT NULL
);

-- Kullanıcılar Tablosu
CREATE TABLE Users (
    Username TEXT PRIMARY KEY,
    Password TEXT NOT NULL
);

-- Kitaplar Tablosu
CREATE TABLE Books (
    BookId TEXT PRIMARY KEY,
    Title TEXT NOT NULL,
    Author TEXT,
    IsBorrowed INTEGER DEFAULT 0,
    BorrowerId TEXT,
    FOREIGN KEY (BorrowerId) REFERENCES Users(Username)
);

🚀 Başlangıç

Ön Gereksinimler

LibraryApp'i çalıştırmadan önce aşağıdakilere sahip olduğunuzdan emin olun:

  • İşletim Sistemi: Windows 7 veya üzeri
  • .NET Framework: Versiyon 4.7.2 veya üzeri (İndir)
  • Visual Studio: 2017 veya üzeri (önerilen) veya herhangi bir C# uyumlu IDE
  • NuGet: Paket yöneticisi (Visual Studio ile birlikte gelir)

Kurulum

  1. Depoyu klonlayın

    git clone https://github.com/ensuca/LibraryApp.git
    cd LibraryApp
  2. NuGet paketlerini geri yükleyin

    nuget restore LibraryApp.sln

    Veya Visual Studio'da: Tools → NuGet Package Manager → Restore NuGet Packages

  3. Çözümü derleyin

    msbuild LibraryApp.sln /p:Configuration=Release

    Veya Visual Studio'da: Build → Build Solution (Ctrl+Shift+B)

  4. Uygulamayı çalıştırın

    cd bin/Release
    LibraryApp.exe

    Veya Visual Studio'da: F5'e basın

Yapılandırma

Uygulama SQLite veritabanı (veritabani.db) kullanır. Bağlantı dizesi şurada yapılandırılmıştır:

  • Dosya: DatabaseManager.cs:14
  • Bağlantı Dizesi: Data Source=veritabani.db;Version=3;

Farklı bir veritabanı konumu kullanmak için bağlantı dizesini değiştirin:

connection = new SQLiteConnection("Data Source=SİZİN_YOLUNUZ.db;Version=3;");

💻 Kullanım Örnekleri

Kullanıcı Giriş Akışı

// Normal kullanıcı girişi
1. LibraryApp.exe'yi başlatın
2. Kullanıcı adı ve şifre girin
3. "Giriş" butonuna tıklayın
4. → Mevcut kitaplarla BookPanel açılır

// Yönetici girişi
1. LibraryApp.exe'yi başlatın
2. "Yönetici Girişi" linkine tıklayın
3. Yönetici kimlik bilgilerini girin
4. "Yönetici Girişi" butonuna tıklayın
5. → Yönetim araçlarıyla AdminPanel açılır

Kitap Ödünç Alma

// BookPanel'de
1. DataGridView'de mevcut kitapları görüntüleyin
2. İstenen kitabın BookId'sini not edin
3. "Kitap ID" alanına BookId'yi girin
4. "Kullanıcı ID" alanına UserId'nizi girin
5. "Kitap Ödünç Al" butonuna tıklayın
6.Kitap durumu "Ödünç Alındı" olarak güncellenir

Kitap İade Etme

// BookPanel'de
1. Ödünç alınan kitabın BookId'sini girin
2. "Kitap İade Et" butonuna tıklayın
3.Kitap durumu "Mevcut" olarak sıfırlanır
4. → BorrowerId veritabanından temizlenir

📂 Proje Yapısı

LibraryApp/
│
├── Program.cs                    # Uygulama giriş noktası
├── Form1.cs                      # Giriş formu (kimlik doğrulama)
├── Form1.Designer.cs             # Giriş formu UI tasarımı
├── AdminPanel1.cs                # Yönetici arayüzü
├── AdminPanel1.Designer.cs       # Yönetici paneli UI tasarımı
├── BookPanel.cs                  # Kullanıcı kitap yönetim arayüzü
├── BookPanel.Designer.cs         # Kitap paneli UI tasarımı
├── BookPanel.resx                # Kitap paneli kaynakları
├── DatabaseManager.cs            # Veri erişim katmanı (Repository)
│
├── App.config                    # Entity Framework yapılandırması
├── packages.config               # NuGet paket bağımlılıkları
├── LibraryApp.csproj            # Proje dosyası
├── LibraryApp.sln               # Çözüm dosyası
│
├── Properties/
│   └── AssemblyInfo.cs          # Assembly meta verileri
│
├── bin/
│   └── Debug/
│       ├── LibraryApp.exe       # Derlenmiş çalıştırılabilir
│       └── veritabani.db        # SQLite veritabanı
│
├── packages/                     # NuGet paketleri
└── obj/                          # Derleme yapıları

🔒 Güvenlik Özellikleri

SQL Enjeksiyon Önleme

Tüm veritabanı sorguları SQL enjeksiyon saldırılarını önlemek için parametreli komutlar kullanır:

// DatabaseManager.cs:26-34'ten örnek
command.CommandText = "SELECT COUNT(*) FROM Admin WHERE Username = @username AND Password = @password";
command.Parameters.AddWithValue("@username", username);
command.Parameters.AddWithValue("@password", password);

Rol Tabanlı Erişim Kontrolü

  • Kullanıcılar ve yöneticiler için ayrı kimlik doğrulama tabloları
  • UI bileşenleri kullanıcı rolüne göre kısıtlanmış
  • Yönetici fonksiyonları normal kullanıcılar için erişilemez

En İyi Uygulamalar

  • Uygun Open()/Close() desenleri ile bağlantı yönetimi
  • Yeniden kullanımdan önce parametre koleksiyonlarını temizleme
  • İşlem güvenli veritabanı işlemleri

🧪 Kod Kalitesi

Uygulanan Tasarım İlkeleri

Tek Sorumluluk İlkesi (Single Responsibility Principle)

  • Her form belirli bir kullanıcı arayüzünü yönetir
  • DatabaseManager yalnızca veri işlemlerini yönetir

DRY (Kendini Tekrar Etme)

  • DatabaseManager'da merkezi veritabanı mantığı
  • Yaygın işlemler için yeniden kullanılabilir metodlar

Endişelerin Ayrılması (Separation of Concerns)

  • UI, iş mantığı ve veri erişimi arasında net sınırlar
  • Formlar somut uygulamalara değil soyutlamalara (DatabaseManager) bağımlı

Kod Vurguları

DatabaseManager.cs - Temiz, sürdürülebilir veri erişimi:

public bool ValidateUser(string username, string password, bool isAdmin)
{
    connection.Open();
    command.Parameters.Clear();

    if (isAdmin)
        command.CommandText = "SELECT COUNT(*) FROM Admin WHERE Username = @username AND Password = @password";
    else
        command.CommandText = "SELECT COUNT(*) FROM Users WHERE Username = @username AND Password = @password";

    command.Parameters.AddWithValue("@username", username);
    command.Parameters.AddWithValue("@password", password);
    int count = Convert.ToInt32(command.ExecuteScalar());
    connection.Close();

    return count > 0;
}

🎓 Öğrenme Çıktıları

Bu proje aşağıdaki alanlarda yetkinlik gösterir:

  • Windows Forms ile Masaüstü Uygulama Geliştirme
  • Veritabanı Tasarımı ve SQLite entegrasyonu
  • Entity Framework 6 ile ORM Kullanımı
  • Güvenlik En İyi Uygulamaları (parametreli sorgular, rol tabanlı erişim)
  • Yazılım Mimarisi (üç katmanlı, repository pattern)
  • Temiz Kod İlkeleri (SOLID, DRY, endişelerin ayrılması)
  • Git ile Versiyon Kontrolü
  • Proje Dokümantasyonu ve teknik yazım

🚦 Yol Haritası

Planlanan İyileştirmeler

  • Şifre Hash'leme - Güvenli şifre depolama için bcrypt/SHA-256 uygulaması
  • Kullanıcı Kaydı - Yeni kullanıcılar için self-servis hesap oluşturma
  • Kitap Arama ve Filtreleme - Başlık, yazar, ISBN ile gelişmiş arama
  • Son Tarih Sistemi - Ödünç alma sürelerini ve gecikmiş kitapları takip
  • Rapor Üretimi - Ödünç alma geçmişi ve istatistikleri dışa aktarma
  • Birim Testleri - Kapsamlı test coverage uygulaması
  • Loglama - Loglama framework'ü ekleme (NLog/Serilog)
  • Modern UI - Çapraz platform desteği için WPF veya .NET MAUI'ye geçiş

Bilinen Kısıtlamalar

  • Şifreler düz metin olarak saklanıyor (iyileştirme planlanmış)
  • Gecikmiş kitaplar için email/bildirim sistemi yok
  • Tek kullanıcılı uygulama (eş zamanlı erişim kontrolü yok)
  • Windows işletim sistemi ile sınırlı

📊 Performans ve Ölçeklenebilirlik

Mevcut Yetenekler

  • Veritabanı Boyutu: Binlerce kitap kaydını verimli şekilde işler
  • Yanıt Süresi: Tipik işlemler için saniyenin altı sorgu yürütme
  • Bellek Ayak İzi: Hafif (~30MB RAM kullanımı)

Optimizasyon Özellikleri

  • Bağlantı Havuzu (Connection Pooling): ADO.NET sağlayıcı tarafından yönetilir
  • Verimli Sorgular: Minimum overhead ile doğrudan SQL
  • Veri Bağlama: DataGridView performans için veri bağlamayı kullanır

🤝 Katkıda Bulunma

Katkılar memnuniyetle karşılanır! Lütfen şu yönergeleri takip edin:

  1. Depoyu fork edin
  2. Özellik dalı oluşturun (git checkout -b feature/HarikaBirOzellik)
  3. Değişikliklerinizi commit edin (git commit -m 'Harika bir özellik ekle')
  4. Dalı push edin (git push origin feature/HarikaBirOzellik)
  5. Pull Request açın

Kodlama Standartları

  • C# adlandırma kurallarını takip edin (metodlar için PascalCase, değişkenler için camelCase)
  • Public metodlar için XML dokümantasyon yorumları ekleyin
  • Yeni özellikler için birim testleri yazın
  • PR göndermeden önce kodun mevcut testleri geçtiğinden emin olun

📄 Lisans

Bu proje MIT Lisansı altında lisanslanmıştır - detaylar için LICENSE dosyasına bakın.


👤 Yazar

Enes Uca


🙏 Teşekkürler

  • Mükemmel ORM framework'ü için Entity Framework ekibine
  • Güvenilir gömülü veritabanı için SQLite topluluğuna
  • Kapsamlı .NET Framework dokümantasyonu için Microsoft'a

⭐ Faydalı bulduğunuzda bu depoyu yıldızlayın! ⭐

❤️ ve C# ile yapılmıştır

About

a library app for university

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages