Menu
Coddy logo textTech

Konsol Arayüzü / Yönetici Arayüzü

Coddy'nin C# Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası — ders 66 / 70.

challenge icon

Görev

Kolay

Tüm bileşenlerinizi bir araya getiren bir konsol arayüzü oluşturarak Kütüphane Sisteminizi tamamlayalım! Kütüphaneyi yönetmek için komutları işleyen bir yönetici arayüzü oluşturacaksınız - kitap ekleme, kullanıcı kaydetme, ödünç alma işlemlerini yönetme ve kataloğu arama.

Mevcut proje yapınız üzerinden geliştirmeye devam edeceksiniz:

  • Book.cs: Id, Title, Author, IsAvailable özelliklerine ve Borrow() ile Return() metotlarına sahip Book sınıfınızı koruyun.
  • User.cs: Ödünç alma takibi, MaxBooks sabiti, CanBorrow() ve ödünç alınan kitapları yönetmek için metotlara sahip User sınıfınızı koruyun.
  • Library.cs: Oluşturduğunuz tüm ödünç alma mantığına ve LINQ arama metotlarına sahip Library sınıfınızı koruyun. Kütüphanedeki tüm kitapları döndüren yeni bir GetAllBooks() metodu ve kayıtlı tüm kullanıcıları döndüren GetAllUsers() metodu ekleyin.
  • Program.cs: Konsol arayüzünüzün hayat bulduğu yer burasıdır! Komutları okuyan ve uygun kütüphane işlemlerini yürüten bir komut işlemcisi oluşturacaksınız. Bunu kütüphane sisteminiz için bir yönetici paneli olarak düşünün.

Konsol arayüzünüz şu komutları işlemelidir:

  • ADD_BOOK|id|title|author - Yeni bir kitap ekler ve Added: {Title} yazdırır
  • ADD_USER|name|memberId - Yeni bir kullanıcı kaydeder ve Registered: {Name} yazdırır
  • BORROW|bookId|memberId - Bir ödünç alma isteğini işler (mevcut BorrowBook mantığınızı kullanın)
  • RETURN|bookId|memberId - Bir iade isteğini işler (mevcut ReturnBook mantığınızı kullanın)
  • SEARCH|type|value - Türün title, author, available veya borrowed olduğu kataloğu arar
  • STATUS - Toplam kitapları, mevcut kitapları, toplam kullanıcıları ve toplam ödünç alınan kitapları gösteren bir özet yazdırır

STATUS komutu için özeti şu formatta yazdırın:

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

Arama sonuçları için her kitabı kendi satırında {Title} by {Author} olarak veya boşsa No books found olarak yazdırın.

Aşağıdaki girdileri alacaksınız:

  • Kütüphane adı
  • İşlenecek komut sayısı
  • Yukarıda açıklanan formatlarda her bir komut kendi satırında

Örneğin, girdiler şunlarsa:

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

Çıktı şöyle olmalıdır:

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

Konsol arayüzünüz, kullanıcı girişini iyi organize edilmiş kütüphane bileşenlerinize bağlayan bir yapıştırıcı görevi görür. Her komut, Library sınıfınızdaki uygun metoda yetki verir ve temiz bir mimarinin kullanıcı arayüzleri oluşturmayı nasıl kolaylaştırdığını gösterir!

Kendin dene

using System;
using System.Collections.Generic;

namespace LibrarySystem
{
    class Program
    {
        public static void Main(string[] args)
        {
            // Kütüphane adını oku
            string libraryName = Console.ReadLine();
            
            // Kütüphane adıyla bir Library örneği oluştur
            Library library = new Library(libraryName);
            
            // Komut sayısını oku
            int numCommands = Convert.ToInt32(Console.ReadLine());
            
            // Her bir komutu işle
            for (int i = 0; i < numCommands; i++)
            {
                string commandLine = Console.ReadLine();
                string[] parts = commandLine.Split('|');
                string command = parts[0];
                
                // TODO: ADD_BOOK komutunu işle
                // Format: ADD_BOOK|id|title|author
                // Yazdır: Added: {title}
                
                // TODO: ADD_USER komutunu işle
                // Format: ADD_USER|name|memberId
                // Yazdır: Registered: {name}
                
                // TODO: BORROW komutunu işle
                // Format: BORROW|bookId|memberId
                // library.BorrowBook() sonucunu yazdır
                
                // TODO: RETURN komutunu işle
                // Format: RETURN|bookId|memberId
                // library.ReturnBook() sonucunu yazdır
                
                // TODO: SEARCH komutunu işle
                // Format: SEARCH|type|value (type; title, author, available, borrowed olabilir)
                // Her kitabı "{Title} by {Author}" olarak veya "No books found" şeklinde yazdır
                
                // TODO: STATUS komutunu işle
                // Yazdır:
                // --- Library Status ---
                // Total Books: {count}
                // Available: {count}
                // Total Users: {count}
                // Books Borrowed: {count}
            }
        }
    }
}

Nesne Yönelimli Programlama bölümündeki tüm dersler