A console-based Library Management System in C# (.NET) showcasing core OOP principles, clean architecture, and polymorphic search.
██╗ ██╗██████╗ ██████╗ █████╗ ██████╗ ██╗ ██╗
██║ ██║██╔══██╗██╔══██╗██╔══██╗██╔══██╗╚██╗ ██╔╝
██║ ██║██████╔╝██████╔╝███████║██████╔╝ ╚████╔╝
██║ ██║██╔══██╗██╔══██╗██╔══██║██╔══██╗ ╚██╔╝
███████╗██║██████╔╝██║ ██║██║ ██║██║ ██║ ██║
╚══════╝╚═╝╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝
███╗ ███╗ █████╗ ███╗ ██╗ █████╗ ██████╗ ███████╗██████╗
████╗ ████║██╔══██╗████╗ ██║██╔══██╗██╔════╝ ██╔════╝██╔══██╗
██╔████╔██║███████║██╔██╗ ██║███████║██║ ███╗█████╗ ██████╔╝
██║╚██╔╝██║██╔══██║██║╚██╗██║██╔══██║██║ ██║██╔══╝ ██╔══██╗
██║ ╚═╝ ██║██║ ██║██║ ╚████║██║ ██║╚██████╔╝███████╗██║ ██║
╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═══╝╚═╝ ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝
Visual Studio Community • .NET • Console App • Sprint 1
نظام إدارة مكتبة كامل شغال بالكونسول، بيدمج كل مفاهيم الـ OOP في تطبيق واحد حقيقي بدل تمارين منفصلة:
Abstraction • Inheritance • Polymorphism • Encapsulation • Interfaces • Exception Handling
الأمين (Librarian) بيقدر يضيف كتب وأعضاء، يستعير ويرجع كتب، يبحث في الكتالوج، يشوف الكتب المتاحة، يراجع سجل استعارة أي عضو، ويطلع تقرير بالكتب المتأخرة — كل ده وهو محمي بـ try/catch من أي مدخل غلط.
┌──────────────────────────────────────────────────────────┐
│ ISearchable «interface» │
│ bool MatchesQuery(string query) │
└───────────────┬────────────────────────────┬──────────────┘
│ implements │ implements
▼ ▼
┌─────────────────────┐ ┌─────────────────┐
│ LibraryItem │ │ Member │
│ «abstract» │ │───────────────────│
│───────────────────────│ │ Id, Name, Email │
│ Id, Title, AddedDate │ │ JoinDate │
│ + GetInfo() : abstract│ │ Book[] BorrowedBooks│
└──────────┬────────────┘ └─────────┬─────────┘
│ inherits │ inherits
▼ ▼
┌───────────────┐ ┌─────────────────────┐
│ Book │ │ PremiumMember │
│─────────────────│ │───────────────────────│
│ Author, Year │ │ MaxBorrowLimit = 10 │
│ Genre │ │ LoanDays = 30 │
│ IsAvailable │ │ + GetInfo() │
│ + GetInfo() │ └─────────────────────┘
│ + MarkAsBorrowed│
│ + MarkAsReturned│
└────────┬────────┘
│ referenced by
▼
┌─────────────────────┐
│ BorrowRecord │
│───────────────────────│
│ Book, Member │
│ BorrowDate, ReturnDate? │
│ + IsLate() : bool │
└─────────────────────┘
▲
│ manages all of the above
┌─────────────────────┐
│ Library │
│ «Service / Business │
│ Logic Layer» │
└─────────────────────┘
| الكلاس | النوع | مسؤوليته |
|---|---|---|
ISearchable |
Interface | عقد واحد: MatchesQuery() — بيوحّد البحث بين Book وMember من غير ما تعرف نوعهم |
LibraryItem |
Abstract Class | جذر الوراثة، بيحمل الخصائص المشتركة (Id, Title, AddedDate) |
Book |
يرث من LibraryItem، ينفذ ISearchable |
كتاب حقيقي: مؤلف، سنة، نوع، وحالة الإتاحة |
Member |
ينفذ ISearchable |
عضو مسجل، بيحمل مصفوفة الكتب المستعارة حاليًا |
PremiumMember |
يرث من Member |
عضو مميز بحد استعارة وفترة سماح أطول |
BorrowRecord |
Data Class | يربط كتاب بعضو، وبيحسب هل الاستعارة متأخرة |
Library |
Service Class | المخ المدبر — كل العمليات والـ business logic هنا |
+ AddBook(title, author, year, genre) → إضافة كتاب + Id تلقائي
+ AddMember(name, email, isPremium) → تسجيل عضو عادي أو Premium
+ BorrowBook(bookId, memberId) → استعارة + exception لو مش متاح
+ ReturnBook(bookId) → إرجاع + تحديث حالة الكتاب
+ Search(query) → بحث موحّد في الكتب والأعضاء
+ GetAvailableBooks() → كل الكتب المتاحة حاليًا
+ GetMemberHistory(id) → سجل استعارة عضو معيّن
+ GetLateReturns() → تقرير الاستعارات المتأخرة (+14 يوم)
كل عملية حساسة (استعارة، إرجاع) بترمي Exception بدل ما تكسر البرنامج:
| الحالة | الرسالة |
|---|---|
| الكتاب مش موجود | Book not found |
| الكتاب مستعار بالفعل | Book is already borrowed |
| العضو مش موجود | Member not found |
| إرجاع كتاب مش مستعار | Book was not borrowed |
كل ده متمسوك من Program.cs بـ try/catch، فأي مدخل غلط بيطلع رسالة واضحة مش Crash.
| 🧠 اللغة | 🖥️ IDE | 📦 النوع | 🏗️ الـ Pattern |
|---|---|---|---|
| C# (.NET) | Visual Studio Community | Console App | OOP |
1️⃣ افتح المشروع بـ Visual Studio Community
2️⃣ تأكد إن Program.cs هو الـ Startup Object
3️⃣ دوس F5 ▶️
4️⃣ اختار رقم من 1 لـ 9 من القائمة
📦 LibraryManagementSystem
┣ 📂 Interfaces
┃ ┗ 📜 ISearchable.cs
┣ 📂 Models
┃ ┣ 📜 LibraryItem.cs ← abstract base class
┃ ┣ 📜 Book.cs ← inherits LibraryItem, implements ISearchable
┃ ┣ 📜 Member.cs ← implements ISearchable
┃ ┣ 📜 PremiumMember.cs ← inherits Member
┃ ┗ 📜 BorrowRecord.cs
┣ 📂 Services
┃ ┗ 📜 Library.cs ← كل الـ business logic
┣ 📜 Program.cs ← القائمة الرئيسية + الـ I/O
┗ 📜 README.md ← إنت هنا 👋
بإشراف د. علي علي سطوحي — Full-Stack .NET Training Program
Sprint 1 — Library Management System — OOP Fundamentals in C#
⭐⭐⭐