Menu
Coddy logo textTech

ממשק משתמש בקונסולה / ממשק מנהל

חלק מהיחידה תכנות מונחה עצמים במסלול ה-C# של Coddy. שיעור 66 מתוך 70.

challenge icon

אתגר

קל

נשלים את מערכת הספרייה שלך באמצעות בניית ממשק מסוף שמחבר בין כל הרכיבים שלך! תיצור ממשק מנהל מערכת שמעבד פקודות לניהול הספרייה — הוספת ספרים, רישום משתמשים, טיפול בפעולות השאלה וחיפוש בקטלוג.

תמשיך לבנות על מבנה הפרויקט הקיים שלך:

  • Book.cs: השאר את המחלקה Book שלך עם Id, Title, Author, IsAvailable, ועם המתודות Borrow() ו־Return().
  • User.cs: השאר את המחלקה User שלך עם מעקב אחר השאלות, הקבוע MaxBooks, המתודה CanBorrow(), ומתודות לניהול ספרים שהושאלו.
  • Library.cs: השאר את המחלקה Library שלך עם כל לוגיקת ההשאלה ומתודות החיפוש באמצעות LINQ שבנית. הוסף מתודה חדשה GetAllBooks() שמחזירה את כל הספרים בספרייה, ומתודה GetAllUsers() שמחזירה את כל המשתמשים הרשומים.
  • Program.cs: כאן ממשק המסוף שלך מתעורר לחיים! תבנה מעבד פקודות שקורא פקודות ומבצע את פעולות הספרייה המתאימות. חשוב על זה כלוח הבקרה של מנהל המערכת בספרייה שלך.

ממשק המסוף שלך צריך לטפל בפקודות הבאות:

  • ADD_BOOK|id|title|author - מוסיף ספר חדש ומדפיס Added: {Title}
  • ADD_USER|name|memberId - רושם משתמש חדש ומדפיס Registered: {Name}
  • BORROW|bookId|memberId - מעבד בקשת השאלה (השתמש בלוגיקת BorrowBook הקיימת שלך)
  • RETURN|bookId|memberId - מעבד בקשת החזרה (השתמש בלוגיקת ReturnBook הקיימת שלך)
  • SEARCH|type|value - מחפש בקטלוג, כאשר type הוא title, author, available, או borrowed
  • STATUS - מדפיס סיכום המציג את מספר הספרים הכולל, מספר הספרים הזמינים, מספר המשתמשים הכולל ומספר הספרים שהושאלו

עבור הפקודה STATUS, הדפס את הסיכום בפורמט הבא:

--- Library Status ---
Total Books: {count}
Available: {count}
Total Users: {count}
Books Borrowed: {count}

בתוצאות החיפוש, הדפס כל ספר בשורה נפרדת בפורמט {Title} by {Author}, או No books found אם אין תוצאות.

הקלט שתקבל:

  • שם הספרייה
  • מספר הפקודות לעיבוד
  • כל פקודה בשורה נפרדת, בפורמטים שתוארו למעלה

לדוגמה, אם הקלט הוא:

Downtown Library
8
ADD_BOOK|B001|Clean Code|Robert Martin
ADD_BOOK|B002|The Pragmatic Programmer|David Thomas
ADD_USER|Alice|101
ADD_USER|Bob|102
BORROW|B001|101
SEARCH|available
BORROW|B002|102
STATUS

הפלט צריך להיות:

Added: Clean Code
Added: The Pragmatic Programmer
Registered: Alice
Registered: Bob
Alice borrowed Clean Code
The Pragmatic Programmer by David Thomas
Bob borrowed The Pragmatic Programmer
--- Library Status ---
Total Books: 2
Available: 0
Total Users: 2
Books Borrowed: 2

ממשק המסוף שלך משמש כדבק שמחבר בין קלט המשתמש לרכיבי הספרייה המאורגנים היטב שלך. כל פקודה מועברת למתודה המתאימה במחלקה Library שלך, ומדגימה כיצד ארכיטקטורה נקייה הופכת את בניית ממשקי המשתמש לפשוטה!

נסו בעצמכם

using System;
using System.Collections.Generic;

namespace LibrarySystem
{
    class Program
    {
        public static void Main(string[] args)
        {
            // קרא את שם הספרייה
            string libraryName = Console.ReadLine();
            
            // צור מופע של Library עם שם הספרייה
            Library library = new Library(libraryName);
            
            // קרא את מספר הפקודות
            int numCommands = Convert.ToInt32(Console.ReadLine());
            
            // עבד כל פקודה
            for (int i = 0; i < numCommands; i++)
            {
                string commandLine = Console.ReadLine();
                string[] parts = commandLine.Split('|');
                string command = parts[0];
                
                // TODO: טפל בפקודת ADD_BOOK
                // פורמט: ADD_BOOK|id|title|author
                // הדפס: Added: {title}
                
                // TODO: טפל בפקודת ADD_USER
                // פורמט: ADD_USER|name|memberId
                // הדפס: Registered: {name}
                
                // TODO: טפל בפקודת BORROW
                // פורמט: BORROW|bookId|memberId
                // הדפס את התוצאה של library.BorrowBook()
                
                // TODO: טפל בפקודת RETURN
                // פורמט: RETURN|bookId|memberId
                // הדפס את התוצאה של library.ReturnBook()
                
                // TODO: טפל בפקודת SEARCH
                // פורמט: SEARCH|type|value (type יכול להיות title, author, available, borrowed)
                // הדפס כל ספר בתור "{Title} by {Author}" או "No books found"
                
                // TODO: טפל בפקודת STATUS
                // הדפס:
                // --- Library Status ---
                // Total Books: {count}
                // זמינים: {count}
                // Total Users: {count}
                // Books Borrowed: {count}
            }
        }
    }
}

כל השיעורים ביחידה תכנות מונחה עצמים

תרגלו בעצמכם: קומפיילר C# אונליין