/* 
 * List to do
 * Bryan :
 * Buat class diagram
 * Kelas User
 * Kelas Buku
 * Enum Status Buku
 * 
 * Function :
 * Lalu :
 * User Login (Member dan Admin)
 * Pembuatan looping
 * 
 * Opsi :
 * golden :
 * 1. Melihat semua list buku   (Member/Admin)
 * 2. Mencari buku berdasarkan Judul (Member)
 * 3. Detail buku   (Member/Admin)
 * 
 * jesica :
 * 4. Meminjam buku (Member)
 * 5. Mengembalikan buku(Member)
 * 
 * Diaz :
 * Menambah buku (Admin)
 * Mengedit buku (Admin)
 * Menghapus buku (Admin)
*/

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

public class Library {
    static Scanner input = new Scanner(System.in);

    enum StatusBuku {
        Tersedia,
        Dipinjam
    }

    public static class BOOK {
        String Judul;
        String Pengarang;
        StatusBuku Status;

        BOOK(String Judul, String Pengarang, StatusBuku Status) {
            this.Judul = Judul;
            this.Pengarang = Pengarang;
            this.Status = Status;
        }

        void Borrowed() {
            if (Status == StatusBuku.Tersedia) {
                Status = StatusBuku.Dipinjam;
                System.out.println("Buku " + Judul + " berhasil dipinjam.");
            }
            else {
                System.out.println("Buku " + Judul + " sedang dipinjam.");
            }
        }

        void Returned() {
            if (Status == StatusBuku.Dipinjam) {
                Status = StatusBuku.Tersedia;
                System.out.println("Buku " + Judul + " berhasil dikembalikan.");
            }
            else {
                System.out.println("Buku "+ Judul + " tersedia dan tidak di pinjam");
            }
        }
    }

    public static class USER {
        private int ID;
        private String Nama;
        private int PIN;

        USER(int ID, String Nama, int PIN) {
            this.ID = ID;
            this.Nama = Nama;
            this.PIN = PIN;
        }

        void login(int IDs, int PINs) {
            if (IDs == ID && PINs == PIN) {
                System.out.println("\nLogin Berhasil! Selamat Datang, " + Nama + "!\n");
            } else {
                System.out.println("\nLogin Gagal!");
            }
        }

        protected int getID() {
            return ID;
        }

        protected String getNama() {
            return Nama;
        }

        protected int getPIN() {
            return PIN;
        }


    }

    public static class Admin extends USER {
        Scanner input = new Scanner(System.in);
        private static ArrayList<BOOK> books = new ArrayList<>();

        Admin(int ID, String Nama, int PIN) {
            super(ID, Nama, PIN);
        }

        void TambahBuku() {
            System.out.println("Masukan judul buku :");
            String judulBuku = input.nextLine();
            System.out.println("Masukan nama pengarang :");
            String namaPengarang = input.nextLine();
            books.add(new BOOK(judulBuku, namaPengarang, StatusBuku.Tersedia));
            System.out.println("Buku berhasil ditambahkan!");
        }

        void HapusBuku() {
            System.out.println("Masukan judul buku yang ingin dihapus :");
            String judulBuku = input.nextLine();
            books.removeIf(book -> book.Judul.equalsIgnoreCase(judulBuku));
            System.out.println("Buku berhasil dihapus jika ditemukan.");
        }

        void EditBuku() {
            System.out.println("Masukan judul buku yang ingin diedit :");
            String judulBuku = input.nextLine();
            for (BOOK book : books) {
                if (book.Judul.equalsIgnoreCase(judulBuku)) {
                    System.out.println("Masukan judul buku baru :");
                    book.Judul = input.nextLine();
                    System.out.println("Masukan nama pengarang baru :");
                    book.Pengarang = input.nextLine();
                    System.out.println("Buku berhasil diedit jika ditemukan.");
                    return;
                }
            }
            System.out.println("Buku tidak ditemukan.");
        }

        void LihatBuku() {
            System.out.println("\nDaftar Buku :");
            int nomor = 1;
            for (BOOK book : books) {
                if (book.Status == StatusBuku.Tersedia) {
                    System.out.println("- " + book.Judul + " oleh " + book.Pengarang);
                }

                System.out.println(
                        nomor + ". Judul : " + book.Judul +
                                " | Pengarang : " + book.Pengarang +
                                " | Status : " + book.Status);
                nomor++;
            }
        }

        void DetailBuku() {
            for (BOOK book : books) {
                System.out.println("Masukan judul buku yang ingin dilihat detailnya :");
                String judulBuku = input.nextLine();

                if (book.Judul.equalsIgnoreCase(judulBuku)) {
                    System.out.println("\nDetail Buku:");
                    System.out.println("Judul Buku: " + book.Judul);
                    System.out.println("Pengarang: " + book.Pengarang);
                    System.out.println("Status: " + book.Status);
                    return;
                }
            }
            System.out.println("\nBuku tidak ditemukan.");
        }
    }

    public static class Member extends USER {
        private static ArrayList<BOOK> books = new ArrayList<>();

        Member(int ID, String Nama, int PIN) {
            super(ID, Nama, PIN);
        }

        void LihatBuku() {
            System.out.println("\nDaftar Buku :");
            int nomor = 1;
            for (BOOK book : books) {
                if (book.Status == StatusBuku.Tersedia) {
                    System.out.println("- " + book.Judul + " oleh " + book.Pengarang);
                }

                System.out.println(
                        nomor + ". Judul : " + book.Judul +
                                " Pengarang : " + book.Pengarang +
                                " Status : " + book.Status);
                nomor++;
            }
        }

        void CariBuku() {
            System.out.println("Masukan judul buku yang ingin dicari :");
            String judulBuku = input.nextLine();
            for (BOOK book : books) {
                if (book.Judul.equalsIgnoreCase(judulBuku)) {
                    System.out.println("\nBuku ditemukan: " + book.Judul + " oleh " + book.Pengarang);
                    return;
                }
            }
            System.out.println("\nBuku tidak ditemukan.");
        }

        void DetailBuku() {
            for (BOOK book : books) {
                System.out.println("Masukan judul buku yang ingin dilihat detailnya :");
                String judulBuku = input.nextLine();

                if (book.Judul.equalsIgnoreCase(judulBuku)) {
                    System.out.println("\nDetail Buku:");
                    System.out.println("Judul Buku: " + book.Judul);
                    System.out.println("Pengarang: " + book.Pengarang);
                    System.out.println("Status: " + book.Status);
                    return;
                }
            }
            System.out.println("\nBuku tidak ditemukan.");
        }

        void PinjamBuku() {
            LihatBuku();
            System.out.println("\nMau Pinjam Buku Apa Hari ini? ");
            String judulBuku = input.nextLine();

            for (BOOK book : books) {
                if (book.Judul.equalsIgnoreCase(judulBuku)) {
                    book.Borrowed();
                    return;
                }
            }
            System.out.println("Buku " + judulBuku + " tidak tersedia");
        }

        void MengembalikanBuku() {
            LihatBuku();
        System.out.println("\nMau kembalikan buku apa?? ");
        String judulBuku = input.nextLine();

        for (BOOK book : books) {
            if (book.Judul.equalsIgnoreCase(judulBuku)) {
                book.Returned(); 
                return;
            }
        }

        System.out.println("Buku " + judulBuku + " berhasil di kembalikan.");
    }
}

    public static void main(String[] args) {
        ArrayList<USER> users = new ArrayList<>();
        ArrayList<BOOK> books = new ArrayList<>();
        users.add(new Admin(1, "Admin", 1234));

        mainMenu(users, books);
    }

    public static void mainMenu(ArrayList<USER> users, ArrayList<BOOK> books) {
        Scanner input = new Scanner(System.in);
        USER loggedInUser = null;
        while (true) {
            System.out.println("Menu:");
            System.out.println("1. Register");
            System.out.println("2. Login");
            System.out.println("0. Exit");
            System.out.print("Pilih menu! : ");
            int choice = input.nextInt();

            switch (choice) {
                case 1:
                    addMember(users, input);
                    break;
                case 2:
                    loggedInUser = Login(users, input);
                    if (loggedInUser != null) {
                        if (loggedInUser instanceof Admin) {
                            AdminMenu((Admin) loggedInUser);
                        } else {
                            MemberMenu((Member) loggedInUser);
                        }
                    }
                    break;
                case 0:
                    System.out.println("Exiting...");
                    return;
                default:
                    System.out.println("Mohon pilih angka 0-2.");
            }
        }
    }

    public static void addMember(ArrayList<USER> users, Scanner input) {
        System.out.print("Masukkan ID: ");
        int id = input.nextInt();
        input.nextLine();
        System.out.print("Masukkan Nama: ");
        String nama = input.nextLine();
        System.out.print("Masukkan PIN: ");
        int pin = input.nextInt();
        users.add(new Member(id, nama, pin));
        System.out.println("Member berhasil didaftarkan!");
    }

    public static USER Login(ArrayList<USER> users, Scanner input) {
        System.out.print("Masukkan ID: ");
        int id = input.nextInt();
        System.out.print("Masukkan PIN: ");
        int pin = input.nextInt();

        for (USER user : users) {
            if (user.getID() == id && user.getPIN() == pin) {
                System.out.println("Login berhasil!");
                return user;
            }
        }
        System.out.println("Login gagal! ID atau PIN salah.");
        return null;
    }

    public static void MemberMenu(Member member) {
        while (true) {
            System.out.println("Menu:");
            System.out.println("1. Lihat Buku");
            System.out.println("2. Pinjam Buku");
            System.out.println("3. Mengembalikan Buku");
            System.out.println("0. Exit");
            System.out.print("Pilih menu! : ");
            int choice = input.nextInt();

            switch (choice) {
                case 1:
                    member.LihatBuku();
                    break;
                case 2:
                    member.PinjamBuku();
                    break;
                case 3:
                    member.MengembalikanBuku();
                    break;
                case 0:
                    System.out.println("Exiting...");
                    return;
                default:
                    System.out.println("\nMenu Error. Mohon pilih angka 0-3.\n");
            }
        }
    }

    public static void AdminMenu(Admin admin) {
        while (true) {
            System.out.println("Menu Admin:");
            System.out.println("1. Tambah Buku");
            System.out.println("2. Hapus Buku");
            System.out.println("3. Edit Buku");
            System.out.println("4. Lihat Buku");
            System.out.println("0. Exit");
            System.out.print("Pilih menu! : ");
            int choice = input.nextInt();

            switch (choice) {
                case 1:
                    admin.TambahBuku();
                    break;
                case 2:
                    admin.HapusBuku();
                    break;
                case 3:
                    admin.EditBuku();
                    break;
                case 4:
                    admin.LihatBuku();
                    break;
                case 0:
                    System.out.println("Exiting...");
                    return;
                default:
                    System.out.println("Mohon pilih angka 0-4.");
            }
        }
    }
}

Add a code snippet to your website: www.paste.org