מגישים: רעי שאול: 325390086 רון אברהם: 208007005
הוראות להרצת הפרויקט:
יש לוודא שמותקן Python 3.9 או גרסה חדשה יותר על המחשב. להרצת הפרויקט, יש להריץ את הקובץ GUI.py שמייצג את ממשק התוכנית. ישנם קבצי נתונים הנדרשים להרצת המערכת (כגון books.csv, users.csv, popular_books, available_books, loaned_books), יש לוודא שהם ממוקמים בתיקייה שבה נמצא הפרויקט.
תיאור תכונות המערכת:
-ניהול משתמשים: המערכת תומכת בהרשמה של משתמשים חדשים. קיימת אפשרות לבצע התחברות באמצעות שם משתמש וסיסמה. אימות הסיסמה מתבצע באמצעות הצפנה (Hashing).
-ניהול ספרים: הוספת ספרים למאגר הכולל מילוי פרטים מלאים כמו כותרת, מחבר, שנת פרסום, ז'אנר ומספר עותקים. הסרה של ספרים ממאגר הספרים. עדכון עותקים של ספרים קיימים.
-מערכת חיפוש: חיפוש ספרים לפי כותרת, מחבר, ז'אנר ושנה. המערכת משתמשת בתבניות עיצוב המפרידות בין לוגיקת החיפוש לבין הממשק.
-השאלת ספרים: אפשרות להשאיל ספרים מתוך המאגר הזמין. במקרה בו לא קיימים עותקים זמינים, ניתן להצטרף לרשימת המתנה.
-עדכון רשימות ספרים: יצירת רשימות של ספרים זמינים, ספרים מושאלים, וספרים פופולריים (על פי מספר השאלות).
תבניות העיצוב שהוטמעו:
Strategy Design Pattern: מיושם במערכת החיפוש, כאשר ישנה מחלקת בסיס SearchStrategy ומחלקות נגזרות כמו SearchByTitle, SearchByAuthor, SearchByYear, ו-SearchByGenre. כל מחלקה מטפלת בסוג אחר של חיפוש.
Observer Design Pattern: שימש לשליחת הודעות משתמש (Notifications) בעת ביצוע פעולות שונות כמו הוספת ספר, עדכון עותקים, או התראה על שגיאה.
Iterator Design Pattern: המערכת כוללת איטרטור מותאם אישית (CsvIterator) המאפשר לעבור על שורות קובצי ה-CSV בצורה קלה וברורה, ומאפשר עיבוד הנתונים מבלי לטעון את כל הקובץ לזיכרון.