UI Konsol / Antarmuka Admin
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan C# di Coddy. Pelajaran 66 dari 70.
Tantangan
MudahMari selesaikan Sistem Perpustakaanmu dengan membangun antarmuka konsol yang menyatukan semua komponenmu! Kamu akan membuat antarmuka admin yang memproses perintah untuk mengelola perpustakaan, menambahkan buku, mendaftarkan pengguna, menangani peminjaman, dan mencari katalog.
Kamu akan melanjutkan dengan struktur proyek yang sudah ada:
Book.cs: Pertahankan class Book denganId,Title,Author,IsAvailable, serta methodBorrow()danReturn().User.cs: Pertahankan class User dengan pelacakan peminjaman, konstantaMaxBooks,CanBorrow(), dan method untuk mengelola buku yang dipinjam.Library.cs: Pertahankan class Library dengan semua logika peminjaman dan method pencarian LINQ yang sudah kamu buat. Tambahkan method baruGetAllBooks()yang mengembalikan semua buku di perpustakaan, danGetAllUsers()yang mengembalikan semua pengguna terdaftar.Program.cs: Di sinilah antarmuka konsolmu mulai berfungsi! Kamu akan membangun pemroses perintah yang membaca perintah dan menjalankan operasi perpustakaan yang sesuai. Anggap ini sebagai dasbor admin untuk sistem perpustakaanmu.
Antarmuka konsolmu harus menangani perintah berikut:
ADD_BOOK|id|title|author- Menambahkan buku baru dan mencetakAdded: {Title}ADD_USER|name|memberId- Mendaftarkan pengguna baru dan mencetakRegistered: {Name}BORROW|bookId|memberId- Memproses permintaan peminjaman (gunakan logika BorrowBook yang sudah ada)RETURN|bookId|memberId- Memproses permintaan pengembalian (gunakan logika ReturnBook yang sudah ada)SEARCH|type|value- Mencari katalog dengan type berupatitle,author,available, atauborrowedSTATUS- Mencetak ringkasan yang menampilkan jumlah total buku, buku yang tersedia, total pengguna, dan total buku yang dipinjam
Untuk perintah STATUS, cetak ringkasan dengan format berikut:
--- Library Status ---
Total Books: {count}
Available: {count}
Total Users: {count}
Books Borrowed: {count}Untuk hasil pencarian, cetak setiap buku pada baris tersendiri dengan format {Title} by {Author}, atau No books found jika tidak ada hasil.
Kamu akan menerima input berikut:
- Nama perpustakaan
- Jumlah perintah yang akan diproses
- Setiap perintah pada baris tersendiri dengan format yang dijelaskan di atas
Contohnya, jika inputnya adalah:
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
STATUSOutputnya adalah:
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: 2Antarmuka konsolmu berfungsi sebagai penghubung antara input pengguna dan komponen perpustakaanmu yang tertata rapi. Setiap perintah meneruskan tugas ke method yang sesuai di class Library, menunjukkan bagaimana arsitektur yang rapi memudahkan pembuatan antarmuka pengguna!
Coba sendiri
using System;
using System.Collections.Generic;
namespace LibrarySystem
{
class Program
{
public static void Main(string[] args)
{
// Baca nama library
string libraryName = Console.ReadLine();
// Buat instance Library dengan nama library tersebut
Library library = new Library(libraryName);
// Baca jumlah perintah
int numCommands = Convert.ToInt32(Console.ReadLine());
// Proses setiap perintah
for (int i = 0; i < numCommands; i++)
{
string commandLine = Console.ReadLine();
string[] parts = commandLine.Split('|');
string command = parts[0];
// TODO: Tangani perintah ADD_BOOK
// Format: ADD_BOOK|id|title|author
// Cetak: Added: {title}
// TODO: Tangani perintah ADD_USER
// Format: ADD_USER|name|memberId
// Cetak: Registered: {name}
// TODO: Tangani perintah BORROW
// Format: BORROW|bookId|memberId
// Cetak hasil dari library.BorrowBook()
// TODO: Tangani perintah RETURN
// Format: RETURN|bookId|memberId
// Cetak hasil dari library.ReturnBook()
// TODO: Tangani perintah SEARCH
// Format: SEARCH|type|value (type bisa berupa title, author, available, atau borrowed)
// Cetak setiap buku sebagai "{Title} by {Author}" atau "No books found"
// TODO: Tangani perintah STATUS
// Cetak:
// --- Library Status ---
// Total Books: {count}
// Tersedia: {count}
// Total Users: {count}
// Books Borrowed: {count}
}
}
}
}
Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar OOP
File EksternalNamespace & DirektifPengantar class & objectKata Kunci 'this'Method dan ParameterField vs PropertyKonstruktorInisialisasi objectRingkasan: Kalkulator Sederhana4Pewarisan
Sintaks Dasar Pewarisan (:)Kata Kunci 'base'Kata Kunci Virtual & OverrideClass SealedBase Class 'object'Rangkuman: Hierarki Karyawan7Fitur Lanjutan
Overloading OperatorIndexer (this[])Penimpaan ToString()Extension methodRingkasan: Custom list2Property & Anggota Statis
Property yang Diimplementasikan OtomatisProperty Hanya Baca dan Hanya TulisField dan method StatisClass StatisAnggota Berbentuk Ekspresi5Polimorfisme & Antarmuka
Polimorfisme saat kompilasi vs runtimeAntarmuka vs kelas abstrakBeberapa antarmukaAntarmuka eksplisitUpcasting & DowncastingRingkasan, Kalkulator Bentuk8Konsep OOP Lanjutan
Komposisi daripada PewarisanGenerics (class dan method)Delegate dan EventAtribut dan ReflectionIDisposable dan Pernyataan usingDasar-Dasar Dependency Injection11Pola Desain Bagian 2
Pola PerintahPola AdapterPola DecoratorPola Template MethodPola StatePola Composite3Arsitektur class
Data Instance vs StaticKata Kunci 'readonly' & 'const'Field PendukungRingkasan: Pengelola Rekening Bank6Enkapsulasi
Pengubah AksesProperti untuk EnkapsulasiImplementasi Penyembunyian DataPola ImutabilitasUlasan: Data Siswa12Proyek: Sistem Perpustakaan
Struktur ProyekModel Buku dan PenggunaLogika Sistem PeminjamanLINQ untuk PencarianUI Konsol / Antarmuka AdminPengujian Unit (NUnit/xUnit)Latihan sendiri: Compiler C# online