Menu
CoddyTech

Fitur Pencarian

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Java di Coddy. Pelajaran 80 dari 87.

challenge icon

Tantangan

Mudah

Mari tingkatkan Library Management System-mu dengan kemampuan pencarian yang andal! Library tidak terlalu berguna jika pengguna tidak bisa menemukan buku yang mereka cari. Kamu akan menambahkan method untuk mencari berdasarkan judul dan penulis, sehingga library-mu benar-benar berfungsi.

Kamu akan melanjutkan pengembangan kodemu yang sudah ada di empat file:

  • Book.java: Pertahankan class Book-mu dengan semua fungsionalitas yang sudah ada: isbn, title, author, isAvailable, borrowedBy, getDetails(), serta getter/setter yang sesuai. Pastikan kamu sudah memiliki method getter untuk title dan author jika belum menambahkannya.
  • User.java: Pertahankan class User-mu tanpa perubahan, dengan id, name, ArrayList borrowedBooks, borrowBook(), returnBook(), getBorrowedCount(), dan toString().
  • Library.java: Perluas class Library-mu dengan fungsionalitas pencarian. Pertahankan semua method yang sudah ada (addBook, registerUser, findBookByIsbn, findUserById, borrowBook, returnBook) dan tambahkan method pencarian baru berikut:

    searchByTitle(String keyword) - mengembalikan ArrayList<Book> yang berisi semua buku dengan judul yang memuat kata kunci tersebut (tanpa membedakan huruf besar dan kecil). Gunakan toLowerCase() pada judul dan kata kunci untuk membandingkannya.

    searchByAuthor(String keyword) - mengembalikan ArrayList<Book> yang berisi semua buku dengan nama penulis yang memuat kata kunci tersebut (tanpa membedakan huruf besar dan kecil).

    getAvailableBooks() - mengembalikan ArrayList<Book> yang hanya berisi buku yang saat ini tersedia untuk dipinjam.

  • Main.java: Tunjukkan cara kerja sistem pencarianmu! Kamu akan menerima input untuk tiga buku (ISBN, judul, penulis untuk setiap buku), lalu seorang pengguna (ID, nama), diikuti operasi peminjaman dan dua kueri pencarian.

    Buat Library, tambahkan ketiga buku, lalu daftarkan pengguna. Proses operasi peminjaman (dengan format userId:isbn). Lalu lakukan dua pencarian: input pertama adalah kata kunci judul, input kedua adalah kata kunci penulis.

    Cetak hasil dalam urutan berikut:

    • Setelah peminjaman, cetak konfirmasi peminjaman
    • Cetak Title search '[keyword]': diikuti detail setiap buku yang cocok pada baris terpisah (menggunakan getDetails()). Jika tidak ada yang cocok, cetak No books found
    • Cetak Author search '[keyword]': diikuti detail setiap buku yang cocok. Jika tidak ada yang cocok, cetak No books found
    • Cetak Available books: diikuti detail setiap buku yang tersedia

Kamu akan menerima input dengan urutan berikut: ISBN book1, judul book1, penulis book1, ISBN book2, judul book2, penulis book2, ISBN book3, judul book3, penulis book3, ID pengguna, nama pengguna, operasi peminjaman, kata kunci pencarian judul, kata kunci pencarian penulis.

Misalnya, dengan input ISBN-001, Clean Code, Robert Martin, ISBN-002, The Clean Coder, Robert Martin, ISBN-003, Design Patterns, Gang of Four, U001, Alice, U001:ISBN-001, clean, martin, outputmu akan seperti berikut:

Alice borrowed Clean Code
Title search 'clean':
[ISBN-001] Clean Code by Robert Martin
[ISBN-002] The Clean Coder by Robert Martin
Author search 'martin':
[ISBN-001] Clean Code by Robert Martin
[ISBN-002] The Clean Coder by Robert Martin
Available books:
[ISBN-002] The Clean Coder by Robert Martin
[ISBN-003] Design Patterns by Gang of Four

Perhatikan bahwa method pencarian menggunakan pencocokan tanpa membedakan huruf besar dan kecil: pencarian untuk "clean" menemukan "Clean Code" dan "The Clean Coder". Daftar buku yang tersedia dengan benar tidak menyertakan buku yang sedang dipinjam. Kemampuan pencarian ini mengubah library-mu dari koleksi sederhana menjadi sistem yang benar-benar berguna!

Coba sendiri

import java.util.Scanner;
import java.util.ArrayList;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // Baca informasi buku 1
        String isbn1 = scanner.nextLine();
        String title1 = scanner.nextLine();
        String author1 = scanner.nextLine();
        
        // Baca informasi buku 2
        String isbn2 = scanner.nextLine();
        String title2 = scanner.nextLine();
        String author2 = scanner.nextLine();
        
        // Baca informasi buku 3
        String isbn3 = scanner.nextLine();
        String title3 = scanner.nextLine();
        String author3 = scanner.nextLine();
        
        // Baca informasi pengguna
        String userId = scanner.nextLine();
        String userName = scanner.nextLine();
        
        // Baca operasi peminjaman
        String borrowOp = scanner.nextLine();
        
        // Baca kata kunci pencarian
        String titleKeyword = scanner.nextLine();
        String authorKeyword = scanner.nextLine();
        
        // Buat object Book
        Book book1 = new Book(isbn1, title1, author1);
        Book book2 = new Book(isbn2, title2, author2);
        Book book3 = new Book(isbn3, title3, author3);
        
        // Buat object User
        User user = new User(userId, userName);
        
        // Buat Library lalu tambahkan buku dan pengguna
        Library library = new Library();
        library.addBook(book1);
        library.addBook(book2);
        library.addBook(book3);
        library.registerUser(user);
        
        // Proses operasi peminjaman
        String[] parts = borrowOp.split(":");
        String opUserId = parts[0];
        String opIsbn = parts[1];
        library.borrowBook(opUserId, opIsbn);
        
        // TODO: Pencarian judul
        // Cetak "Title search '[titleKeyword]':"
        // Gunakan library.searchByTitle(titleKeyword)
        // Cetak getDetails() setiap buku, atau "No books found" jika kosong
        
        // TODO: Cari berdasarkan penulis
        // Cetak "Author search '[authorKeyword]':"
        // Gunakan library.searchByAuthor(authorKeyword)
        // Cetak getDetails() setiap buku, atau "No books found" jika kosong
        
        // TODO: Buku yang tersedia
        // Cetak "Available books:"
        // Gunakan library.getAvailableBooks()
        // Cetak getDetails() setiap buku
    }
}

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler Java online