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ş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 veBorrow()ileReturn()metotlarına sahip Book sınıfınızı koruyun.User.cs: Ödünç alma takibi,MaxBookssabiti,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 birGetAllBooks()metodu ve kayıtlı tüm kullanıcıları döndürenGetAllUsers()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 veAdded: {Title}yazdırırADD_USER|name|memberId- Yeni bir kullanıcı kaydeder veRegistered: {Name}yazdırırBORROW|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üntitle,author,availableveyaborrowedolduğu kataloğu ararSTATUS- 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: 2Konsol 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
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