Menu
CoddyTech

UI Konsol / Antarmuka Admin

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan C# di Coddy. Pelajaran 66 dari 70.

challenge icon

Tantangan

Mudah

Mari 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 dengan Id, Title, Author, IsAvailable, serta method Borrow() dan Return().
  • User.cs: Pertahankan class User dengan pelacakan peminjaman, konstanta MaxBooks, 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 baru GetAllBooks() yang mengembalikan semua buku di perpustakaan, dan GetAllUsers() 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 mencetak Added: {Title}
  • ADD_USER|name|memberId - Mendaftarkan pengguna baru dan mencetak Registered: {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 berupa title, author, available, atau borrowed
  • STATUS - 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
STATUS

Outputnya 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: 2

Antarmuka 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

Latihan sendiri: Compiler C# online