Sistem Peminjaman Buku Perpus Menggunakan Java

Sistem Peminjaman Buku Perpus Menggunakan Java

Sistem Peminjaman Buku Perpus Menggunakan Java

Pada materi sebelumnya kita membahas tentang apa itu PBO, collection, comparable dan comparator. Kali ini saya akan membagi tugas besar mengenai PBO, comparable dan comparator.

Disini saya mengambil tema sistem perpustakaan.  Pada tampilan awal terdapat menu buku dan pinjam buku. Dimana menu buku berisi tambah, hapus, detile buku. Sedangkan menu pinjam buku berisi no isbn dan jumlah buku yang di pinjam. Untuk script pembuatannya silahkan dilihat dibawah ini :

class Buku

public class Buku {
    private int isbn;
    private String judul;
    private String pengarang;
    private String penerbit;
    private int stok;


    public Buku() {
    }


    public Buku(int isbn, int stok) {
        this.isbn = isbn;
        this.stok = stok;
    }

    public Buku(int isbn) {
        this.isbn = isbn;
    }

    public Buku(String judul, String pengarang, String penerbit, int stok) {
        this.judul = judul;
        this.pengarang = pengarang;
        this.penerbit = penerbit;
        this.stok = stok;

    }

    public Buku(int isbn, String judul, String pengarang, String penerbit, int stok) {
        this.isbn = isbn;
        this.judul = judul;
        this.pengarang = pengarang;
        this.penerbit = penerbit;
        this.stok = stok;
    }


    public int getIsbn() {
        return isbn;
    }

    public void setIsbn(int isbn) {
        this.isbn = isbn;
    }

    public String getJudul() {
        return judul;
    }

    public void setJudul(String judul) {
        this.judul = judul;
    }

    public String getPengarang() {
        return pengarang;
    }

    public void setPengarang(String pengarang) {
        this.pengarang = pengarang;
    }

    public String getPenerbit() {
        return penerbit;
    }

    public void setPenerbit(String penerbit) {
        this.penerbit = penerbit;
    }

    public int getStok() {
        return stok;
    }

    public void setStok(int stok) {
        this.stok = stok;
    }

    public String detail() {
        if (stok>0) {
            return isbn + "   " + judul + "      \t" + pengarang + "   \t" + penerbit + "   \t" + stok;
        }else return " ";
        }
    public String detail1() {
        return getIsbn() + "   " + getJudul() + "      \t" + getPengarang() + "   \t" + getPenerbit() + "   \t" + getStok();
    }


    public String pinjambukuLagi(Buku buku, int stok) {
        buku.setStok(buku.getStok() - stok);
        return "jumlah stok sekarang: " + buku.getStok();
    }

    @Override
    public String toString() {
        return "isbn : " + getIsbn() + "       judul = '" + getJudul() + '\'';
    }

    public int compareTo(Buku student) {
        return  judul.compareTo(student.getJudul());

    }
}

kemudian buat class main untuk menampilkan ke desktop.

class Main

import java.util.*;


public class Main {
    public static void main(String[] args) {
        Buku book = new Buku();
        Map<Integer, Buku> buku = new HashMap<Integer,Buku>();

        buku.put(1234, new Buku(1234, "Menembus Impian", "Abidah", "Q-med", 7));
        buku.put(5678, new Buku(5678, "Sang Angin.", "As Laksana", "katakita", 7));
        buku.put(9101, new Buku(9101, "Langit Biru", "As Laksana", "katakita", 7));
        String i = "y";
        Scanner input = new Scanner(System.in);

        do {



            System.out.println("======> PERPUSTAKAAN <======");
            System.out.println("1. Buku ");
            System.out.println("2. Pinjam Buku ");
            System.out.print("Masukkan Pilihan anda (1/2) : ");
            String men1 = input.next();
            String men2;

            switch (men1) {
                case "1":
                    do {

                        Map<Integer,Buku> sortedMap = sortByValue(buku);
                        for (Iterator<Integer> iterator = sortedMap.keySet().iterator(); iterator.hasNext(); ) {
                            Integer buku1 = iterator.next();
                            System.out.println(sortedMap.get(buku1));
                        }

                        System.out.println("=====> Buku <=====");
                        System.out.println("1. Tambah Buku ");
                        System.out.println("2. Delete Buku ");
                        System.out.println("3. Detail Buku");
                        System.out.println("x. Kembali ke menu awal");
                        System.out.print("Masukkan pilihan Anda (1,2,3,x) : ");
                        men2 = input.next();
                        switch (men2){
                            case "1":
                                do {
                                    for (Iterator<Integer> iterator = buku.keySet().iterator(); iterator.hasNext(); ) {
                                        Integer buku1 = iterator.next();
                                        System.out.println(buku.get(buku1));
                                    }
                                    try {
                                System.out.print("Masukkan Data isbn Buku : ");
                                int isbn = input.nextInt();
                                System.out.print("Masukkan Data judul Buku : ");
                                String judul = input.next();
                                System.out.print("Masukkan Data pengarang Buku : ");
                                String peng = input.next();
                                System.out.print("Masukkan Data penerbit Buku : ");
                                String pen = input.next();
                                System.out.print("Masukkan Data stok Buku : ");
                                int stok = input.nextInt();
                                if(stok > 0){
                                    buku.put(isbn, new Buku(isbn, judul, peng, pen, stok));
                                }else{
                                    System.out.println("Stok harus lebih dari 0");
                                }

                                    }catch (InputMismatchException e) {
                                        System.out.println("Terjadi kesalahan Masukkan angka!!!");
                                    }
                                    System.out.print("Tambah data lagi y/n : ");
                                    i = input.next();
                                } while (i.equalsIgnoreCase("y"));
                                break;
                            case "2":
                                do{
                                    for (Iterator<Integer> iterator = sortedMap.keySet().iterator(); iterator.hasNext(); ) {
                                        Integer buku1 = iterator.next();
                                        System.out.println(sortedMap.get(buku1));
                                    }
                                    try {
                                System.out.println("Delete buku");
                                System.out.print("Masukkan isbn : ");
                                int isbn = new Scanner(System.in).nextInt();

                                buku.remove(isbn);

                                for (Iterator<Integer> iterator = buku.keySet().iterator(); iterator.hasNext(); ) {
                                    Integer buku1 = iterator.next();
                                    System.out.println(sortedMap.get(buku1));
                                }
                                    }catch (InputMismatchException e) {
                                        System.out.println("Terjadi kesalahan Masukkan angka untuk isbn!!!");
                                    }
                                System.out.print("Delete buku lagi y/n : ");
                                i = input.next();
                        } while (i.equalsIgnoreCase("y"));
                                break;
                            case "3":
                                tampil();
                                do{
                                    for (Iterator<Integer> iterator = sortedMap.keySet().iterator(); iterator.hasNext(); ) {
                                        Integer buku1 = iterator.next();
                                        System.out.println(sortedMap.get(buku1).detail1());
                                    }
                                    try {
                                System.out.print("Masukkan kode isbn : ");
                                int isbn2 = input.nextInt();
                                tampil();
                                System.out.println(buku.get(isbn2).detail());
                                    }catch (InputMismatchException e) {
                                        System.out.println("Terjadi kesalahan Masukkan angka!!!");
                                    }
                                System.out.print("Detail buku lagi y/n : ");
                                i = input.next();
                        } while (i.equalsIgnoreCase("y"));
                        break;
                            case "x":
                                break;
                            default:
                                System.out.println("Masukkan dengan benar!!!");

                        }

                        System.out.print("kembali ke menu buku lagi y/n : ");
                        i = input.next();
                    } while (i.equalsIgnoreCase("y"));
                    break;
                case "2":
                    do{
                        Map<Integer,Buku> sortedMap = sortByValue(buku);
                    tampil();

                    for (Iterator<Buku> iterator = sortedMap.values().iterator(); iterator.hasNext(); ) {
                        Buku buku1 = iterator.next();
                        System.out.println(buku1.detail());
                    }
                    System.out.println("==>Peminjaman Buku<==");
                    System.out.print("Masukkan isbn buku untuk meminjam : ");
                    int isbn = input.nextInt();
                    System.out.print("Masukkan Jumlah buku : ");
                    int stok = input.nextInt();

                    System.out.println(book.pinjambukuLagi(buku.get(isbn), stok));

                    for (Iterator<Buku> iterator = sortedMap.values().iterator(); iterator.hasNext(); ) {
                        Buku buku1 = iterator.next();
                        System.out.println(buku1.detail());
                    }
                        System.out.print("Pinjam buku lagi y/n : ");
                        i = input.next();
                    } while (i.equalsIgnoreCase("y"));
                    break;
                default:
                    System.out.println("Maaf No yang anda masukkan tidak ada!!");
                    break;
            }
            System.out.print("Kembali ke menu awal? y/n : ");
            i = input.next();
        } while (i.equalsIgnoreCase("y"));
    }







    public static void tampil() {
        System.out.println("=========================================================");
        System.out.println("Isbn \t Judul \t\t Pengarang \t\t Penerbit \t    Stok");
        System.out.println("=========================================================");

    }

    private static Map<Integer,Buku> sortByValue(Map<Integer,Buku> unsortMap) {

        List<Map.Entry<Integer,Buku>> list = new LinkedList<Map.Entry<Integer,Buku>>(unsortMap.entrySet());

        Collections.sort(list, new Comparator<Map.Entry<Integer,Buku>>() {
            @Override
            public int compare(Map.Entry<Integer, Buku> o1,
                               Map.Entry<Integer, Buku> o2) {
                return (o1.getValue()).compareTo(o2.getValue());

            }


        });

        Map<Integer, Buku> sortedMap = new LinkedHashMap<>();
        for (Map.Entry<Integer,Buku> entry : list) {
            sortedMap.put(entry.getKey(), entry.getValue());
        }

        return sortedMap;
    }
}

Ini adalah tampilan awal dari aplikasi peminjaman buku di perpustakaan :

Kemudian jika pilih 1 maka masuk ke menu buku yang berisi tambah, delete dan detail buku seperti gambar di bawah ini:

Jika memilih 2 maka akan masuk ke menu peminjaman buku yang berisi inputan isbn dan jumlah buku seperti gambar dibawah ini:

Demikian tugas besar pembuatan aplikasi peminjaman buku di perpustakaan kurang lebihnya kami mohon maaf. terima kasih.

Ditulis oleh : Muchammad Alvin Tri Bachtiar (Peserta didik MIT School)

Related posts:

Loading Facebook Comments ...