Selasa, 02 Desember 2025

Pertemuan 16 - Membuat Aplikasi CRUD Java

 Nama        : Safa Mashita

 NRP          : 5025241022

Membuat Aplikasi CRUD Java - Manajemen Buku Perpustakaan

Pada pertemuan ini, saya mempelajari bagaimana membangun aplikasi sederhana berbasis Object-Oriented Programming (OOP) di Java untuk mengelola data buku perpustakaan. Aplikasi ini dibuat menggunakan BlueJ, dan memiliki fitur CRUD (Create, Read, Update, Delete) dengan database untuk mengelola data buku yang tersimpan dalam sistem.

Program ini terdiri dari beberapa kelas utama:
  • Book : Kelas representasi buku

  • Main : Kelas utama untuk menjalankan program dan melakukan operasi CRUD

  • ArrayList digunakan sebagai penyimpanan data buku


A. Database Menggunakan MySQL Workbench 8.0

Pada pertemuan ini selain membuat aplikasi CRUD berbasis Java, juga dibuat sebuah struktur database sederhana menggunakan MySQL untuk menggambarkan bagaimana data buku dapat disimpan secara permanen pada DBMS.


CREATE DATABASE perpustakaan; USE perpustakaan; CREATE TABLE buku ( id_buku INT NOT NULL AUTO_INCREMENT, judul VARCHAR(100) NOT NULL, penulis VARCHAR(100) NOT NULL, tahun INT NOT NULL, PRIMARY KEY (id_buku) ); INSERT INTO buku (id_buku, judul, penulis, tahun) VALUES
(001, 'Laut Bercerita', 'Leila S. Chudori', 2017),
(002, 'Kata', 'Nadhifa Allya Tsana', 2018);


Penjelasan :
  • CREATE DATABASE perpustakaan;
    Membuat database kosong untuk menyimpan tabel-tabel.

  • USE perpustakaan;
    Memilih database yang akan digunakan.

  • CREATE TABLE buku (...);
    Membuat tabel utama untuk menyimpan data buku yang memiliki kolom:

    • id_buku → primary key, auto increment.

    • judul → judul buku.

    • penulis → nama pengarang.

    • tahun → tahun terbit buku.

  • INSERT INTO buku ... VALUES (...);
    Mengisi tabel dengan data contoh.

B. Visualisasi Desain Program dan Hubungan Antar Kelas




Program ini memiliki struktur sederhana dengan dua kelas utama:

1. Kelas Book

Digunakan sebagai blueprint objek buku yang berisi properti seperti:

  • ID buku

  • Judul

  • Penulis

  • Tahun terbit

Kelas ini juga memiliki method untuk menampilkan informasi buku.

2. Kelas Main 

Berfungsi sebagai pusat program dan mengatur menu CRUD:

  • Menambah buku

  • Melihat seluruh buku

  • Mengedit buku

  • Menghapus buku

Relasi antar kelas:

  • Main menggunakan Book

  • Data buku disimpan dalam ArrayList<Book>

Struktur sederhana ini menekankan pemahaman dasar class dan object.


C. Alur Program
  1. Program menampilkan menu utama kepada pengguna.

  2. Pengguna memilih operasi CRUD.

  3. Program menjalankan operasi sesuai pilihan:

    • Tambah Buku: membuat objek Book baru

    • Lihat Buku: menampilkan seluruh data buku

    • Edit Buku: mencari buku berdasarkan ID dan memperbarui datanya

    • Hapus Buku: menghapus buku dari daftar

  4. Program terus berjalan sampai pengguna memilih keluar.


D. Kode Program dan Penjelasan

1. Class Book
public class Book { private int id; private String title; private String author; private int year; public Book(int id, String title, String author, int year) { this.id = id; this.title = title; this.author = author; this.year = year; } public int getId() { return id; } public String getTitle() { return title; } public String getAuthor() { return author; } public int getYear() { return year; } public void setTitle(String title) { this.title = title; } public void setAuthor(String author) { this.author = author; } public void setYear(int year) { this.year = year; } public void printBook() { System.out.println("ID: " + id); System.out.println("Judul: " + title); System.out.println("Penulis: " + author); System.out.println("Tahun: " + year); System.out.println("-------------------------"); } }

Kegunaan:

Mewakili satu objek buku dalam sistem.

Atribut:

  • id : nomor identitas buku

  • title : judul buku

  • author : penulis buku

  • year : tahun terbit

Method:

  • Getter & Setter untuk manipulasi data

  • printBook() : menampilkan detail buku

2. Class DatabaseManager

Menambahkan mysql-connector-j-8.xx.jar ke BlueJ → Preferences → Libraries → Add

import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.Statement; import java.sql.ResultSet; public class DatabaseManager { private static final String URL = "jdbc:mysql://localhost:3306/perpustakaann"; private static final String USER = "root"; private static final String PASS = ""; private Connection conn; public DatabaseManager() { try { conn = DriverManager.getConnection(URL, USER, PASS); System.out.println("Koneksi ke database berhasil!\n"); } catch (Exception e) { System.out.println("Gagal konek: " + e.getMessage()); } } public void insertBook(Book b) { String sql = "INSERT INTO buku (id_buku, judul, penulis, tahun) VALUES (?, ?, ?, ?)"; try { PreparedStatement pst = conn.prepareStatement(sql); pst.setInt(1, b.getId()); pst.setString(2, b.getTitle()); pst.setString(3, b.getAuthor()); pst.setInt(4, b.getYear()); pst.executeUpdate(); System.out.println("Buku berhasil disimpan ke database!\n"); } catch (Exception e) { System.out.println("Gagal tambah buku: " + e.getMessage()); } } public void showBooks() { String sql = "SELECT * FROM buku"; try { Statement st = conn.createStatement(); ResultSet rs = st.executeQuery(sql); System.out.println("\n=== DAFTAR BUKU DI DATABASE ==="); while (rs.next()) { System.out.println("ID: " + rs.getInt("id_buku")); System.out.println("Judul: " + rs.getString("judul")); System.out.println("Penulis: " + rs.getString("penulis")); System.out.println("Tahun: " + rs.getInt("tahun")); System.out.println("------------------------------"); } } catch (Exception e) { System.out.println("Gagal menampilkan: " + e.getMessage()); } } public void updateBook(Book b) { String sql = "UPDATE buku SET judul=?, penulis=?, tahun=? WHERE id_buku=?"; try { PreparedStatement pst = conn.prepareStatement(sql); pst.setString(1, b.getTitle()); pst.setString(2, b.getAuthor()); pst.setInt(3, b.getYear()); pst.setInt(4, b.getId()); int updated = pst.executeUpdate(); if (updated > 0) System.out.println("Buku berhasil diperbarui!\n"); else System.out.println("Buku tidak ditemukan.\n"); } catch (Exception e) { System.out.println("Gagal update: " + e.getMessage()); } } public void deleteBook(int id) { String sql = "DELETE FROM buku WHERE id_buku=?"; try { PreparedStatement pst = conn.prepareStatement(sql); pst.setInt(1, id); int deleted = pst.executeUpdate(); if (deleted > 0) System.out.println("Buku berhasil dihapus!\n"); else System.out.println("Buku tidak ditemukan.\n"); } catch (Exception e) { System.out.println("Gagal hapus: " + e.getMessage()); } } }

Kegunaan:

Mengatur koneksi ke MySQL dan menjalankan CRUD langsung ke database.

Atribut:

  • insertBook() : tambah buku

  • showBooks() : tampilkan semua buku

  • updateBook() : edit buku berdasarkan ID

  • deleteBook() : hapus buku berdasarkan ID

Method:

  • conn : objek koneksi MySQL

  • URL, USER, PASS : konfigurasi database

3. Class Main

import java.util.ArrayList; import java.util.Scanner; public class Main { private static ArrayList<Book> listBuku = new ArrayList<>(); private static Scanner input = new Scanner(System.in); public static void main(String[] args) { int pilihan; do { System.out.println("=== MENU PERPUSTAKAAN ==="); System.out.println("1. Tambah Buku"); System.out.println("2. Lihat Buku"); System.out.println("3. Edit Buku"); System.out.println("4. Hapus Buku"); System.out.println("5. Keluar"); System.out.print("Pilih menu: "); pilihan = input.nextInt(); input.nextLine(); switch (pilihan) { case 1: tambahBuku(); break; case 2: lihatBuku(); break; case 3: editBuku(); break; case 4: hapusBuku(); break; case 5: System.out.println("Program selesai."); break; default: System.out.println("Pilihan salah!"); } } while (pilihan != 5); } private static void tambahBuku() { System.out.print("Masukkan ID: "); int id = input.nextInt(); input.nextLine(); System.out.print("Masukkan Judul: "); String judul = input.nextLine(); System.out.print("Masukkan Penulis: "); String penulis = input.nextLine(); System.out.print("Masukkan Tahun: "); int tahun = input.nextInt(); listBuku.add(new Book(id, judul, penulis, tahun)); System.out.println("Buku berhasil ditambahkan!\n"); } private static void lihatBuku() { if (listBuku.isEmpty()) { System.out.println("Tidak ada data buku.\n"); return; } System.out.println("\n=== DAFTAR BUKU ==="); for (Book b : listBuku) { b.printBook(); } } private static void editBuku() { System.out.print("Masukkan ID buku yang ingin diedit: "); int id = input.nextInt(); input.nextLine(); for (Book b : listBuku) { if (b.getId() == id) { System.out.print("Judul baru: "); b.setTitle(input.nextLine()); System.out.print("Penulis baru: "); b.setAuthor(input.nextLine()); System.out.print("Tahun baru: "); b.setYear(input.nextInt()); System.out.println("Buku berhasil diperbarui!\n"); return; } } System.out.println("Buku tidak ditemukan.\n"); } private static void hapusBuku() { System.out.print("Masukkan ID buku yang ingin dihapus: "); int id = input.nextInt(); for (Book b : listBuku) { if (b.getId() == id) { listBuku.remove(b); System.out.println("Buku berhasil dihapus!\n"); return; } } System.out.println("Buku tidak ditemukan.\n"); } }

Kegunaan:
Menjalankan program utama dan menyediakan menu CRUD.

Fitur Utama:

  • tambahBuku() : membuat objek Book baru

  • lihatBuku() : menampilkan seluruh buku

  • editBuku() : memperbarui data buku berdasarkan ID

  • hapusBuku() : menghapus buku dari ArrayList

Atribut:

  • ArrayList<Book> listBuku : penyimpanan data

  • Scanner input : menerima input pengguna


E. Output Program

1. Create (Tambah Buku)

2. Read (Lihat Buku)


3. Update (Edit Buku)


4. Delete (Hapus Buku)

5. Keluar

F. Kesimpulan

Pada kelas ini, saya belajar bagaimana membuat aplikasi sederhana untuk manajemen buku menggunakan konsep dasar OOP di Java.

  1. Cara membuat class dan objek dalam Java.

  2. Cara menyimpan data menggunakan ArrayList.

  3. Implementasi fitur CRUD dalam satu program.

  4. Pentingnya pemisahan kelas agar program lebih terstruktur dan mudah dirawat.

Tidak ada komentar:

Posting Komentar

Pertemuan 16 - Membuat Aplikasi CRUD Java

 Nama          : Safa Mashita  NRP            : 5025241022 Membuat Aplikasi CRUD Java - Manajemen Buku Perpustakaan Pada pertemuan ini, saya...