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şenlerini bir araya getiren bir konsol arayüzü oluşturarak Library System'ını tamamlayalım! Kütüphaneyi yönetmek için komutları işleyen bir yönetici arayüzü oluşturacaksın: kitap ekleme, kullanıcı kaydetme, ödünç alma işlemlerini yönetme ve katalogda arama yapma.

Mevcut proje yapını geliştirmeye devam edeceksin:

  • Book.cs: Id, Title, Author, IsAvailable ile Borrow() ve Return() metotlarını içeren Book sınıfını koru.
  • User.cs: Ödünç alma takibi, MaxBooks sabiti, CanBorrow() ve ödünç alınan kitapları yönetmeye yönelik metotları içeren User sınıfını koru.
  • Library.cs: Oluşturduğun tüm ödünç alma mantığını ve LINQ arama metotlarını içeren Library sınıfını koru. 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 ekle.
  • Program.cs: Konsol arayüzünün hayata geçtiği yer burasıdır! Komutları okuyup uygun kütüphane işlemlerini gerçekleştiren bir komut işleyici oluşturacaksın. Bunu kütüphane sisteminin yönetici paneli olarak düşünebilirsin.

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

  • 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 - Ödünç alma isteğini işler (mevcut BorrowBook mantığını kullan)
  • RETURN|bookId|memberId - İade isteğini işler (mevcut ReturnBook mantığını kullan)
  • SEARCH|type|value - type değerinin title, author, available veya borrowed olduğu durumlarda katalogda arama yapar
  • STATUS - Toplam kitapları, mevcut kitapları, toplam kullanıcıları ve toplam ödünç alınmış kitapları gösteren bir özet yazdırır

STATUS komutu için özeti şu biçimde yazdır:

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

Arama sonuçlarında her kitabı kendi satırında {Title} by {Author} biçiminde yazdır; sonuç boşsa No books found yazdır.

Aşağıdaki girdileri alacaksın:

  • Kütüphane adı
  • İşlenecek komut sayısı
  • Yukarıda açıklanan biçimlerde, her biri kendi satırında bulunan komutlar

Örneğin girdiler şöyleyse:

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, kullanıcı girdilerini iyi düzenlenmiş kütüphane bileşenlerine bağlayan bir yapıştırıcı görevi görür. Her komut, Library sınıfındaki uygun metoda devredilerek 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

Kendi başına pratik yap: Online C# derleyicisi