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.
Görev
KolayTü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,IsAvailableileBorrow()veReturn()metotlarını içeren Book sınıfını koru.User.cs: Ödünç alma takibi,MaxBookssabiti,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 birGetAllBooks()metodu ve kayıtlı tüm kullanıcıları döndürenGetAllUsers()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 veAdded: {Title}yazdırırADD_USER|name|memberId- Yeni bir kullanıcı kaydeder veRegistered: {Name}yazdırırBORROW|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ğerinintitle,author,availableveyaborrowedolduğu durumlarda katalogda arama yaparSTATUS- 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: 2Konsol 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
1OOP Temelleri
Harici Dosyalarİsim Alanları ve YönergelerSınıf ve Nesnelere Giriş'this' Anahtar KelimesiMetotlar ve ParametrelerAlanlar ve ÖzelliklerYapıcı MetotlarNesne BaşlatıcılarÖzet - Basit Hesap Makinesi4Kalıtım
Temel Kalıtım (:) Sözdizimi'base' Anahtar KelimesiVirtual ve Override Anahtar KelimeleriSealed Sınıflar'object' Temel SınıfıÖzet - Çalışan Hiyerarşisi7İleri Düzey Özellikler
Operatör Aşırı Yüklemeİndeksleyiciler (this[])ToString() Geçersiz KılmaGenişletme MetotlarıÖzet - Özel Liste10Tasarım Kalıpları Bölüm 1
Tasarım Kalıplarına GirişThread-Safe SingletonFactory KalıbıObserver Kalıbı (Olaylar)Strategy Kalıbı2Özellikler ve Statik Üyeler
Otomatik Uygulanan ÖzelliklerSadece Okunur/Yazılır ÖzelliklerStatik Alanlar ve MetotlarStatik Sınıflarİfade Gövdeli Üyeler5Polimorfizm ve Arayüzler
Derleme vs Çalışma Zamanı PolimorfizmiArayüz vs Soyut SınıfÇoklu ArayüzlerBelirgin ArayüzlerUpcasting ve DowncastingÖzet - Şekil Hesaplayıcı8İleri Düzey OOP Kavramları
Kalıtım yerine KompozisyonGenerics (Sınıflar ve Metotlar)Delegates ve EventlerAttributes ve ReflectionIDisposable ve using İfadesiDependency Injection Temelleri11Tasarım Kalıpları Bölüm 2
Komut KalıbıAdaptör KalıbıDekoratör KalıbıŞablon Metot KalıbıDurum KalıbıKompozit Kalıbı3Sınıf Mimarisi
Örnek vs Statik Veri'readonly' ve 'const' Anahtar KelimeleriDestekleyici Alanlar (Backing Fields)Özet - Banka Hesabı Yöneticisi6Kapsülleme
Erişim BelirleyicilerKapsülleme için ÖzelliklerVeri Gizleme UygulamasıDeğişmezlik KalıplarıÖzet - Öğrenci Kayıtları9Değişken Argümanlar
'params' Anahtar Kelimesiİsteğe Bağlı Parametrelerİsimlendirilmiş ArgümanlarMetot Aşırı Yükleme12Proje: Kütüphane Sistemi
Proje YapısıKitap ve Kullanıcı ModelleriÖdünç Alma Sistemi MantığıArama için LINQKonsol Arayüzü / Yönetici ArayüzüBirim Testi (NUnit/xUnit)Kendi başına pratik yap: Online C# derleyicisi