Kumpulan Soal

Kumpulan Soal

Halaman ini menyediakan tautan soal-soal UTS dan UAS. Jika beruntung, Anda dapat memperoleh soal yang update.

Rabu, 14 Mei 2025

Integrasi Database MySQL dalam Java

Salah satu bagian penting dalam pemrograman java adalah mengintegrasikan database dalam java. Integrasi seperti ini memungkinkan program dapat menyimpan, membaca, mengupdate, dan menghapus data. Kenyataannya, program seperti inilah yang diharapkan dalam dunia bisnis saat ini.



Langkah-langkah dalam integrasi java dalam database dapat dilakukan seperti contoh berikut ini.

1.    Persiapan Komputer

a.     Download JDK

Untuk mendapatkan Java, kita dapat mengunduh secara gratis di internet dan tanpa perlu aktivasi. Salah satu situs yang menyediakan Java adalah OpenJDK (https://jdk.java.net/)

 

b.    Menyimpan file JDK

File JDK (misalnya openjdk-24.0.1_windows-x64_bin) dari link (https://jdk.java.net/) tidak dapat diinstall langsung.

Cara menginstallnya, 1) unzip file tersebut

2) buat folder Java dalam Program Files 

3) Pindahkan file jdk-24.0.1 ke dalam folder Java

 


c.     Setting Path

Setting path dilakukan dengan

1) Menuju pencarian lalu ketik environ

  

            2) Klik Edit the System Environtment variables

 

 3) Klik Environtment Variables

 

4) Klik New pada bagian System variables, lalu buat settingan seperti ini



5) Klik Path pada bagian System variables, lalu klik New dan ketik %JAVA_HOME%\bin



6) Tambahkan dalam path C:\Program Files\Java\jdk-24.0.1\bin


7) Uji Settingan path dengan cara menuju command prompt: Ketik cmd di pencarian lalu klik Command Prompt. Pindah direktori dengan mengetik cd C:\Program Files\Java\jdk-24.0.1\bin dan Enter. Ketik java -version lalu Enter, jika tampilan sudah seperti ini maka setting path dikatakan berhasil.



Lalu ketik javac -version dan Enter. Jika tampilan seperti ini maka dikatakan setting path sudah berhasil, termasuk untuk compiler.


d.    Download IDE

Integrated Development Environment (IDE) merupakan suatu editor yang digunakan untuk mengedit kode program dan mengotomatisasi proses kompilasi kode program. Salah satu IDE yang dapat digunakan untuk Java adalah Intelli J IDEA (https://www.jetbrains.com/idea/). Klik tombol Download, lalu scroll ke bawah, pilih IntelliJ IDEA Community Edition. Klik tombol Download  di bawahnya. Tunggu sampai download selesai.

 

e.     Install IDE

Menuju folder download, temukan file yang baru didownload, ideaIC-2025.1. Klik dua kali lalu ikuti step-stepnya sampai akhir.


 

f.      Download Xampp

File installer dapat diunduh di halaman website apachefriends https://www.apachefriends.org/download.html.

Pilih versi terbaru lalu klik download


g.     Install Xampp

Klik dua kali pada file yang sudah didownload, lalu ikuti langkah demi langkah. Perlu diperhatikan jika ingin menginstall xampp di local disk D, harus diatur pada langkah penyimpanan.



Diubah menjadi


Lanjutkan instalasi sampai selesai. Setelah selesai instal, pergi ke lokasi penyimpanan D:\xampp. Cari file xampp_controll, drag and drop di menu task manager sehingga selanjutnya dapat diklik dengan cepat.

 

 

h.    Download JDBC

JDBC adalah konektor java dan database yang bekerja pada sebuah project setelah ditambahkan dalam module. Untuk mendapatkan file jdbc MySQL, kunjungi https://downloads.mysql.com/archives/c-j/. Klik file zip. Setelah download selesai, ekstark file dan simpan di folder yang diingat. File mysql-connector ini nanti akan digunakan untuk koneksi antara java dan database mysql.

2.    Membuat Project, Class, dan Main Function

a.   Membuat project perpustakaan

Buat project dengan nama Library, Set lokasi penyimpanan di D:\Java_Project, klik Create.

b.   Mencoba menjalankan program pada IDE

Klik tombol seperti ‘play’ di sebelah kiri public class main. Lalu klik Run Main.main().


c.   Mengganti code pada main method

import java.util.Scanner;

public class Main {
   
public static void main(String[] args) {
       
// Membuat variabel yang mencatat indeks
       
int terus =1;
       
// Membuat perulangan jika variabel terus bernilai 1
       
while (terus==1){
            Scanner scanTerus =
new Scanner(System.in);
            System.
out.println("SELAMAT DATANG DI PERPUS ABCD");
            System.
out.println("MENU UTAMA");
            System.
out.println("Pilihan:   1. Ya       0. Tidak");
            System.
out.println("Apakah mau lanjut (1 atau 0) :");
            terus=scanTerus.nextInt();
        }
        System.
out.println("S A M P A I   J U M P A");
    }
}

 

d.   Menguji Main class pada IDE dan CMD

Klik Run Main.main(). Lihat di bagian bawah, program sudah berjalan. Ketik 0 dan Enter.

 


3.    Membuat Database Mysql

a.       Menjalankan XAMPP

Buka xampp_controll lalu klik Start pada module Apache dan MySql

 

b.       Membuat database perpustakaan

Buka browser, gunakan browser yang jarang digunakan misalnya Mozila. Pada alamat pencarian ketik localhost/phpmyadmin/ lalu Enter.

 


Langkah ini bisa juga dilakukan dengan menggunakan tombol Admin pada module MySql di xampp_control.


Klik tombol Admin pada module MySQL akan mengerahkan ke jendela browser baru dan membuka phpmyadmin.


Pada Navigasi atas, klik Database atau Basis Data. Lalu Pada kolom di bawah Buat Basis data atau Create Database ketik nama database db_lib, lalu klik Buat atau Create.

 


c.        Membuat Tabel

Setelah membuat database, direktori berpindah ke Database: db_lib. Jendela yang muncul adalah Create New table. Ketik nama tabel tb_anggota, atur banyak kolom (misalnya ada 7: no, nama, username, password, level, alamat, dan status) lalu klik buat.


 

d.       Membuat Kolom

Membuat kolom harus sesuai rencana, di awal sudah diatur 7 kolom jadi langsung ketik semua nama kolom.


Setiap kolom harus diatur tipe data dan panjangnya. Lakukan pengaturan seperti berikut ini, jadikan kolom no sebagi PRIMARY dengan klik kolom di sebelah kanannya, lalu klik

 


Untuk tipe data Enum, klik Edit Enum lalu ketik enum seperti ini



e.        Mengimpor database

Untuk mempermudah proses, tidak perlu mengetik semua tabel, impor saja dari database yang sudah dibuat.

 

 

4.    Menghubungkan Project dengan Database

a.       Menyimpan variabel koneksi

Buat terlebih dahulu sebuah method untuk mengakses database dengan nama LoginUser. Method LoginUser ditempatkan di bawah main method. Lalu simpan variabel koneksi di dalamnya.

 

static void LoginUser(){
    String url="jdbc:mysql://localhost:3306/db_lib";
    String userName="root";
    String password="";
    String query="SELECT * FROM tb_anggota where username=? AND password=?";

    Scanner scan =
new Scanner(System.in);     System.out.println("#######################################");     System.out.println("##########  W  E  L  C  O  M  E ##########");     System.out.println("#######################################");     System.out.println("USERNAME: ");     String username =scan.nextLine();     System.out.println("PASSWORD: ");     String pass = scan.nextLine();
   
try (Connection conn = DriverManager.getConnection(url, userName, password); PreparedStatement preparedStatement=conn.prepareStatement(query)){         preparedStatement.setString(1,username);         preparedStatement.setString(2,pass);
       
try (ResultSet resultSet= preparedStatement.executeQuery()){             if (resultSet.next()){                 System.out.println("Login Berhasil, Selamat Datang "+ username + ".");                 String level =resultSet.getString("level");                 System.out.println("Level: "+level);                 if (!level.equals("admin")){                     // tampilkan MenuAnggota();                     System.out.println("menu Admin");                 } else {                     // tampilan MenuAdm();                     System.out.println("menu Anggota");                 }             }else {                 System.out.println("USERNAME/PASSWORD tidak sesuai");             }
        }
catch (SQLException e) {             System.out.println("Gagal Login");         }
    }
catch (SQLException e) {         System.out.println("Gagal tersambung ke Db");     } }

Buat juga Scanner untuk menerima inputan dari keyboard lalu simpan dengan variabel username dan pass. Uji koneksi database dengan username dan pass yang diinput.

 

b.       Memastikan alamat koneksi

Perhatikan alamat url dengan benar, db_lib adalah nama database yang sudah tersedia. Perhatikan juga query, nama tabel dan nama kolom.

String url="jdbc:mysql://localhost:3306/db_lib";
String userName="root";
String password="";
String query="SELECT * FROM tb_anggota where username=? AND password=?";

 

c.        Memasang konektor JDBC ke dalam project

Pada nama project (Library) klik kanan lalu pilih Open Module Setting.


Pastikan sidebar kiri berada pada Module Setting, Sebelah kanan pada Dependencies. Pada bagian dibawah tulisan Module SDK ada tombol +, klik lalu pilih JARs or Directories. Arahkan direktori ke tempat penyimpanan jdbc. Lalu klik open.


Kembali ke Module Setting, akan terlihat jdbc sudah tersedia pada project. Klik checklist di sebelah kiri jdbc, lalu Apply dan OK.


d.       Menguji koneksi

Klik tombol seperti play di sebelah kiri public class Main, pilih Run Main.main(). Lihat pada bagian bawah, program berjalan pada methode Login User. Ketik username dan password yang disimpan di database. Perhatikan hasil koneksi, jika berhasil koneksi maka akan muncul Login Berhasil, Selamat Datang.

 

5.    Melengkapi class dan method dalam project

a.   Membuat class Anggota

Pergi ke bagian src pada project. Klik new, Java Class.

Buat nama class Anggota lalu tekan Enter.

 

Ketik code seperti ini.

import java.sql.*;
  import java.util.ArrayList;
  import java.util.List; 
public class Anggota {     int no;     String nama;     String user;     String pass;     String level;     String alamat;     String status;
   
private static final String url="jdbc:mysql://localhost:3306/db_lib";     private static final String userName="root";     private static final String password="";
   
// Konstruktor     public Anggota(int no, String nama, String user, String pass, String level, String alamat, String status) {
       
this.no = no;         this.nama = nama;         this.user = user;         this.pass = pass;         this.level = level;         this.alamat = alamat;         this.status = status;     }
   
// Getter dan Setter (opsional, tapi baik untuk enkapsulasi)     public int getNo() {         return no;     }
   
public String getNama() {         return nama;     }
   
public String getUser() {         return user;     }
   
public String getPass() {         return pass;     }
   
public String getLevel() {         return level;     }
   
public String getAlamat() {         return alamat;     }
   
public String getStatus() {         return status;     }
 
public void setId(int no) {         this.no = no;     }
   
public void setNama(String nama) {         this.nama = nama;     }
   
public void setUser(String user) {         this.user = user;     }
   
public void setPass(String pass) {         this.pass = pass;     }
   
public void setLevel(String level) {         this.level = level;     }
   
public void setAlamat(String alamat) {         this.alamat = alamat;     }
   
public void setStatus(String status) {         this.status = status;     }
   
// Baca List Anggota     public static List<Anggota> daftarAnggota() {         List<Anggota> listAnggota = new ArrayList<>();         String sql = "SELECT no, nama, username, password, level, alamat, status FROM tb_anggota";
       
try (Connection conn = DriverManager.getConnection(url, userName, password);              Statement stmt = conn.createStatement();              ResultSet rs = stmt.executeQuery(sql)) {             while (rs.next())                 Anggota anggota = new Anggota(rs.getInt("no"), rs.getString("nama"),rs.getString("username"),
                        rs.getString(
"password"), rs.getString("level"), rs.getString("alamat"), rs.getString("status"));
                anggota.setId(rs.getInt(
"no"));                 listAnggota.add(anggota);             }
        }
catch (SQLException e) {             System.out.println("Error saat mengambil daftar anggota: " + e.getMessage());         }
       
return listAnggota;     }
}

 

b.   Membuat class Buku

Lakukan cara yang sama dengan class Anggota untuk membuat class Buku.

import java.sql.*;
  import java.util.ArrayList;
  import java.util.List;  
public class Buku {
   
int no;     String judul;     String pengarang;     String penerbit;     String tahunTerbit;     String status;
   
private static final String url="jdbc:mysql://localhost:3306/db_lib";     private static final String userName="root";     private static final String password="";     // Konstruktor     public Buku(int no, String judul, String pengarang, String penerbit, String tahunTerbit, String status) {
       
this.no = no;         this.judul = judul;         this.pengarang = pengarang;         this.penerbit = penerbit;         this.tahunTerbit = tahunTerbit;         this.status = status;     }
   
// Getter dan Setter (opsional, tapi baik untuk enkapsulasi)     public int getNo() {         return no;     }
   
public String getJudul() {         return judul;     }
   
public String getPengarang() {         return pengarang;     }
   
public String getPenerbit() {         return penerbit;     }
   
public String getTahunTerbit() {         return tahunTerbit;     }
   
public String getStatus() {         return status;     }
   
public void setNo(int no) {         this.no = no;     }
   
public void setJudul(String judul) {         this.judul = judul;     }
   
public void setPengarang(String pengarang) {         this.pengarang = pengarang;     }
   
public void setPenerbit(String penerbit) {         this.penerbit = penerbit;     }
   
public void setTahunTerbit(String tahunTerbit) { this.tahunTerbit = tahunTerbit; }
   
public void setStatus(String status) {         this.status = status;     }
   
// Baca List Buku     public static List<Buku> daftarBuku() {         List<Buku> listBuku = new ArrayList<>();         String sql = "SELECT no, judul, pengarang, penerbit, tahun_terbit, status FROM tb_buku";
       
try (Connection conn = DriverManager.getConnection(url, userName, password);              Statement stmt = conn.createStatement();              ResultSet rs = stmt.executeQuery(sql)) {             while (rs.next()) {                 Buku buku = new Buku(rs.getInt("no"), rs.getString("judul"),rs.getString("pengarang"),
                        rs.getString(
"penerbit"), rs.getString("tahun_terbit"), rs.getString("status"));
                buku.setNo(rs.getInt(
"no"));                 listBuku.add(buku);             }
        }
catch (SQLException e) {             System.out.println("Error saat mengambil daftar buku: " + e.getMessage());         }         return listBuku;     } }

 

c.    Membuat class Peminjaman

import java.sql.*;
  import java.util.ArrayList;
  import java.util.List;  
public class Anggota {     int no;     String nama;     String user;     String pass;     String level;     String alamat;     String status;
   
private static final String url="jdbc:mysql://localhost:3306/db_lib";     private static final String userName="root";     private static final String password="";     // Konstruktor     public Anggota(int no, String nama, String user, String pass, String level, String alamat, String status) {
       
this.no = no;         this.nama = nama;         this.user = user;         this.pass = pass;         this.level = level;         this.alamat = alamat;         this.status = status;     }
   
// Getter dan Setter (opsional, tapi baik untuk enkapsulasi)     public int getNo() {         return no;     }     public String getNama() {         return nama;     }     public String getUser() {         return user;     }     public String getPass() {         return pass;     }     public String getLevel() {         return level;     }     public String getAlamat() {         return alamat;     }     public String getStatus() {         return status;     }
   
public void setNo(int no) {         this.no = no;     }     public void setNama(String nama) {         this.nama = nama;     }     public void setUser(String user) {         this.user = user;     }     public void setPass(String pass) {         this.pass = pass;     }     public void setLevel(String level) {         this.level = level;     }     public void setAlamat(String alamat) {         this.alamat = alamat;     }     public void setStatus(String status) {         this.status = status;     }
   
// Baca List Anggota     public static List<Anggota> daftarAnggota() {         List<Anggota> listAnggota = new ArrayList<>();         String sql = "SELECT no, nama, username, password, level, alamat, status FROM tb_anggota";
       
try (Connection conn = DriverManager.getConnection(url, userName, password);
             Statement stmt = conn.createStatement();              ResultSet rs = stmt.executeQuery(sql)) {            
while (rs.next()) {                 Anggota anggota = new Anggota(rs.getInt("no"), rs.getString("nama"),rs.getString("username"),
                        rs.getString(
"password"), rs.getString("level"), rs.getString("alamat"), rs.getString("status"));
                anggota.setNo(rs.getInt(
"no"));                 listAnggota.add(anggota);             }         } catch (SQLException e) {             System.out.println("Error saat mengambil daftar anggota: " + e.getMessage());
        }        
return listAnggota;     }
}

 

d.   Membuat pemanggil di main class.

static void LoginUser(){
    String url="jdbc:mysql://localhost:3306/db_lib";
    String userName="root";
    String password="";
    String query="SELECT * FROM tb_anggota where username=? AND password=?";  
    Scanner scan =
new Scanner(System.in);     System.out.println("#######################################");     System.out.println("##########  W  E  L  C  O  M  E ##########");     System.out.println("#######################################");     System.out.println("USERNAME: ");     String username =scan.nextLine();     System.out.println("PASSWORD: ");     String pass = scan.nextLine();
   
try (Connection conn = DriverManager.getConnection(url, userName, password); PreparedStatement preparedStatement=conn.prepareStatement(query)){
        preparedStatement.setString(
1,username);         preparedStatement.setString(2,pass);
       
try (ResultSet resultSet= preparedStatement.executeQuery()){             if (resultSet.next()){                 System.out.println("Login Berhasil, Selamat Datang "+ username + ".");                 String level =resultSet.getString("level");                 //System.out.println("Level: "+level);                 if (!level.equals("admin")){                     // tampilkan MenuAnggota();                     System.out.println("menu Anggota");                     //Anggota anggota=new Anggota();                 } else {                     // tampilan MenuAdm();                     System.out.println("MENU ADMIN");                     System.out.println("1. LIST BUKU");                     System.out.println("2. LIST ANGGOTA");                     System.out.println("3. LIST PEMINJAMAN");                     System.out.println("4. INPUT BUKU BARU");                     System.out.println("5. INPUT ANGGOTA BARU");                     System.out.println("Tulis nomor pilihan Anda");                     Scanner scan1 = new Scanner(System.in);                     int pilih =scan.nextInt();                     switch (pilih){                         case 1:                             List<Buku> semuaBuku = Buku.daftarBuku();                             if (semuaBuku.isEmpty()) {                                 System.out.println("Belum ada buku dalam database.");                             } else {                                 System.out.println("##### ------------------------------------- D A F T A R  A N G G O T A --------------------------------------- #####");                                 for (Buku buku : semuaBuku) {                                     System.out.println("No: " + buku.getNo() + " Judul: " + buku.getJudul() + ", Pengarang: " + buku.getPengarang() +                                             ", Penerbit: " + buku.getPenerbit() + ", Tahun terbit: " + buku.getTahunTerbit() +                                             ", STATUS : " + buku.getStatus() );                                 }                                 System.out.println("---------------------------------------------------------------------------------------------------------------------");                             }                             break;                         case 2:                             List<Anggota> semuaAnggota = Anggota.daftarAnggota();                             if (semuaAnggota.isEmpty()) {                                 System.out.println("Belum ada anggota dalam database.");                             } else {                                 System.out.println("##### ------------------------------------- D A F T A R  A N G G O T A --------------------------------------- #####");                                 for (Anggota anggota : semuaAnggota) {
                                    System.
out.println("No: " + anggota.getNo() + " Nama: " + anggota.getNama() + ", USERNAME: " + anggota.getUser() +                                             ", PASSWORD: " + anggota.getPass() + ", Level: " + anggota.getLevel() +                                             ", Alamat : " + anggota.getAlamat() + ", STATUS : " + anggota.getStatus() );                                 }                                 System.out.println("---------------------------------------------------------------------------------------------------------------------");                             }                             break;                         case 3:                             List<Peminjaman> semuaPeminjaman = Peminjaman.daftarPeminjaman();                             if (semuaPeminjaman.isEmpty()) {                                 System.out.println("Belum ada PEMINJAMAN dalam database.");                             } else {                                 System.out.println("##### ----------------------------------- D A F T A R  P E M I N J A M A N ------------------------------------- #####");                                 for (Peminjaman peminjaman : semuaPeminjaman) {
                                    System.
out.println("No: " + peminjaman.getNo() + " Judul: " + peminjaman.getJudul() + ", Peminjam: " + peminjaman.getPeminjam() +                                             ", Tanggal Pinjam: " + peminjaman.getTanggalPinjam() + ", Tanggal Kembali: " + peminjaman.getTanggalKembali() );                                 }                                 System.out.println("---------------------------------------------------------------------------------------------------------------------");                             }                             break;                         case 4:                             break;                     }                 }             }else {                 System.out.println("USERNAME atau PASSWORD tidak sesuai");             }
        }
catch (SQLException e) {             System.out.println("Gagal Login");         }
    }
catch (SQLException e) {         System.out.println("Gagal tersambung ke Db");     }
}

 

6.    Menjalankan program di CMD

a.     Menguji project di IDE

 


b.   Mengkompilasi program


c.    Menjalankan program di CMD

 


7.    Menambah Menu pada Program

a.     Menambah Method Insert pada Anggota

Tambahkan method InsertAnggota di bawah method daftarAnggota. Berikut ini code nya.

//Insert Anggota baru
  public boolean InsertAnggota(){  
    String sql =
"INSERT INTO tb_anggota(nama, username, password, level, alamat, status) VALUES (?, ?, ?, ?, ?, ?)";
   
try (Connection conn = DriverManager.getConnection(url, userName, password);          PreparedStatement pstmt =conn.prepareStatement(sql)) {         pstmt.setString(1, this.nama);         pstmt.setString(2, this.user);         pstmt.setString(3, this.pass);         pstmt.setString(4, this.level);         pstmt.setString(5, this.alamat);         pstmt.setString(6, this.status);         int affectedRows = pstmt.executeUpdate();         return affectedRows > 0;
    }
catch (SQLException e) {         System.out.println("Error saat memasukkan data anggota: " + e.getMessage());         return false;     } }

 

Karena akan membuat objek baru dengan parameter tanpa nomor, maka tambahkan konstruktor baru.

public Anggota(String nama, String user, String pass, String level, String alamat, String status) {
   
this.nama = nama;     this.user = user;     this.pass = pass;     this.level = level;     this.alamat = alamat;     this.status = status;
}

b.    Menambah Method Insert pada Buku

Tambahkan method InsertBuku di bawah method daftarBuku. Berikut ini code nya.

//Insert Buku baru
  public boolean InsertBuku(){  
    String sql =
"INSERT INTO tb_buku(judul, pengarang, penerbit, tahun_terbit, status) VALUES (?, ?, ?, ?, ?)";
   
try (Connection conn = DriverManager.getConnection(url, userName, password);          PreparedStatement pstmt =conn.prepareStatement(sql)) {         pstmt.setString(1, this.judul);         pstmt.setString(2, this.pengarang);         pstmt.setString(3, this.penerbit);         pstmt.setString(4, this.tahunTerbit);         pstmt.setString(5, this.status);         int affectedRows = pstmt.executeUpdate();         return affectedRows > 0;
    }
catch (SQLException e) {         System.out.println("Error saat memasukkan data buku: " + e.getMessage());         return false;     } }

 

Karena akan membuat objek baru dengan parameter tanpa nomor, maka tambahkan konstruktor baru.

public Buku(String judul, String pengarang, String penerbit, String tahunTerbit, String status) {
   
this.judul = judul;     this.pengarang = pengarang;     this.penerbit = penerbit;     this.tahunTerbit = tahunTerbit;     this.status = status; }

 

c.     Menambah Method Insert pada Peminjaman

Tambahkan method InsertPeminjaman di bawah method daftarPeminjaman. Berikut ini code nya.

//Insert Peminjaman baru
  public boolean InsertPeminjaman(){
      String sql ="INSERT INTO tb_peminjaman(judul, peminjam, tanggal_pinjam, tanggal_kembali, status) VALUES (?, ?, ?, ?, ?)";
   
try (Connection conn = DriverManager.getConnection(url, userName, password);          PreparedStatement pstmt =conn.prepareStatement(sql)) {         pstmt.setString(1, this.judul);         pstmt.setString(2, this.peminjam);         pstmt.setString(3, this.tanggalPinjam);         pstmt.setString(4, this.tanggalKembali);         pstmt.setString(5, this.status);
       
int affectedRows = pstmt.executeUpdate();         return affectedRows > 0;     } catch (SQLException e) {         System.out.println("Error saat memasukkan data peminjaman: " + e.getMessage());
       
return false;     } }

 

 

Karena akan membuat objek baru dengan parameter tanpa nomor, maka tambahkan konstruktor baru.

public Peminjaman(String judul, String peminjam, String tanggalPinjam, String tanggalKembali, String status) {
   
this.judul = judul;     this.peminjam = peminjam;     this.tanggalPinjam = tanggalPinjam;     this.tanggalKembali = tanggalKembali;     this.status = status; }

 

d.    Menambah Method Update pada Peminjaman

Tambahkan method UpdatePeminjaman di bawah method InsertPeminjaman. Berikut ini code nya.

public boolean UpdatePeminjaman(){ 
    String sql =
"UPDATE tb_peminjaman SET status = ? WHERE no = ?";     try (Connection conn = DriverManager.getConnection(url, userName, password);
         PreparedStatement pstmt =conn.prepareStatement(sql)) {         pstmt.setString(
1, this.status);         pstmt.setInt(2, this.no);         int affectedRows = pstmt.executeUpdate();         return affectedRows > 0;
    }
catch (SQLException e) {         System.out.println("Error saat merubah data peminjaman: " + e.getMessage());
       
return false;     } }

 

Karena akan membuat objek baru dengan parameter hanya nomor dan status, maka tambahkan konstruktor baru.

public Peminjaman(int no, String status) {
   
this.no = no;     this.status = status; }

 

e.     Menambah Method Update pada Buku

Tambahkan method UpdateBuku di bawah method InsertBuku. Berikut ini code nya.

public boolean UpdateBuku(){  
    String sql =
"UPDATE tb_buku SET status = ? WHERE no = ?";     try (Connection conn = DriverManager.getConnection(url, userName, password);
         PreparedStatement pstmt =conn.prepareStatement(sql)) {         pstmt.setString(
1, this.status);         pstmt.setInt(2, this.no);         int affectedRows = pstmt.executeUpdate();         return affectedRows > 0;
    }
catch (SQLException e) {         System.out.println("Error saat merubah data buku: " + e.getMessage());
       
return false;     } }

 

Karena akan membuat objek baru dengan parameter hanya nomor dan status, maka tambahkan konstruktor baru.

public Buku(int no, String status) {
    this.no = no;
    this.status = status;
}

 

f.      Menambah Method Delete pada Peminjaman

Tambahkan method DeletePeminjaman di bawah method UpdatePeminjaman. Berikut ini code nya.

public boolean DeletePeminjaman(){ 
    String sql =
"DELETE FROM tb_peminjaman WHERE no = ?";     try (Connection conn = DriverManager.getConnection(url, userName, password);          PreparedStatement pstmt =conn.prepareStatement(sql)) {         pstmt.setInt(1, this.no);         int affectedRows = pstmt.executeUpdate();         return affectedRows > 0;
    }
catch (SQLException e) {         System.out.println("Error saat MENGHAPUS data peminjaman: " + e.getMessage());
       
return false;     } }

Karena akan membuat objek baru dengan parameter hanya nomor, maka tambahkan konstruktor baru.

public Peminjaman(int no) {
    this.no = no;
}

 

g.     Menambah Menu pada Class Utama

Dalam program, menu diwakili oleh case. User dikelompokkan menjadi dua, admin dan anggota. Menambah menu admin dilakukan dengan menambah case. Dalam code sebelumnya sudah ada 3 case, sekarang tinggal tambahkan 4 case lagi. Berikut ini codenya

case 4:
    Scanner scanB = new Scanner(System.in);
    System.out.println("JUDUL BUKU: ");
    String judul =scanB.nextLine();
    System.out.println("PENGARANG BUKU: ");
    String pengarang =scanB.nextLine();
    System.out.println("PENERBIT BUKU: ");
    String penerbit =scanB.nextLine();
    System.out.println("TAHUN TERBIT: ");
    String tahunTerbit =scanB.nextLine();
    String status ="tersedia";  
    Buku bukuBaru =
new Buku(judul, pengarang, penerbit, tahunTerbit, status);     if (bukuBaru.InsertBuku()) {         System.out.println("Data buku berhasil ditambahkan.");     } else {         System.out.println("Gagal menambahkan data buku.");     }
   
break; case 5:     Scanner scanC = new Scanner(System.in);     System.out.println("NAMA LENGKAP: ");     String nama =scanC.nextLine();     System.out.println("USERNAME: ");     String userN =scanC.nextLine();     System.out.println("PASSWORD: ");     String passW =scanC.nextLine();     System.out.println("LEVEL: ");     String leveL =scanC.nextLine();     System.out.println("ALAMAT (KOTA/KABUPATEN): ");     String alamaT =scanC.nextLine();     String statuS ="aktif";
    Anggota anggotaBaru =
new Anggota(nama, userN, passW, leveL, alamaT, statuS);
   
if (anggotaBaru.InsertAnggota()) {         System.out.println("Data anggota berhasil ditambahkan.");     } else {         System.out.println("Gagal menambahkan data anggota.");     }
   
break; case 6:     Scanner scanX = new Scanner(System.in);     System.out.println("NOMOR PEMINJAMAN BUKU: ");     int noX =scanX.nextInt();     String statusX ="kembali";
    Peminjaman peminjaman =
new Peminjaman(noX, statusX);     if (peminjaman.UpdatePeminjaman()) {         System.out.println("Data peminjaman berhasil dirubah.");     } else {         System.out.println("Gagal merubah data peminjaman.");     }
   
break; case 7:     Scanner scanY = new Scanner(System.in);     System.out.println("NOMOR PEMINJAMAN BUKU: ");     int noY =scanY.nextInt();
    Peminjaman peminjamanY =
new Peminjaman(noY);     if (peminjamanY.DeletePeminjaman()) {         System.out.println("Data peminjaman berhasil dihapus.");     } else {         System.out.println("Gagal menghapus data peminjaman.");     }
   
break;

 

Jangan lupa menambah tampilan menunya seperti berikut ini

System.out.println("6. UBAH STATUS PEMINJAMAN");
System.out.println("7. HAPUS DATA PEMINJAMAN");
System.out.println("Tulis nomor pilihan Anda");

 

 

Menambah menu anggota dilakukan dengan menambah case. Dalam code sebelumnya belum ada case, sekarang tambahkan 3 case. Berikut ini codenya

List<Buku> semuaBuku = Buku.daftarBuku();
    if (semuaBuku.isEmpty()) {
        System.out.println("Belum ada buku dalam database.");
    } else {
        System.out.println("##### ------------------------------------- D A F T A R  A N G G O T A --------------------------------------- #####");
       
for (Buku buku : semuaBuku) {
            System.
out.println("No: " + buku.getNo() + " Judul: " + buku.getJudul() + ", Pengarang: " + buku.getPengarang() +
                   
", Penerbit: " + buku.getPenerbit() + ", Tahun terbit: " + buku.getTahunTerbit() +
                   
", STATUS : " + buku.getStatus() );         }
        System.
out.println("---------------------------------------------------------------------------------------------------------------------");
    }    
break; case 2:
    Scanner scanB =
new Scanner(System.in);
    System.
out.println("JUDUL BUKU: ");     String juduL =scanB.nextLine();     System.out.println("PEMINJAM: ");     String peminjaM =scanB.nextLine();     System.out.println("TANGGAL PINJAM (YYYY-MM-DD): ");     String tanggalPinjam =scanB.nextLine();     System.out.println("TNGGAL KEMBALI (YYYY-MM-DD): ");     String tanggalKembali =scanB.nextLine();     String statuS ="belum kembali";
    Peminjaman peminjamanBaru =
new Peminjaman(juduL, peminjaM, tanggalPinjam, tanggalKembali, statuS);
   
if (peminjamanBaru.InsertPeminjaman()) {         System.out.println("Data peminjaman berhasil ditambahkan.");     } else {         System.out.println("Gagal menambahkan data peminjaman.");     }     // Update data buku     System.out.println("--------------------------------------------------------------------------------------------");
    System.
out.println("NOMOR BUKU DALAM LIST: ");     int noX =scanB.nextInt();     String statusX="dipinjam";     Buku book = new Buku(noX, statusX);     if (book.UpdateBuku()) {         System.out.println("Data buku berhasil dirubah.");     } else {         System.out.println("Gagal merubah data buku.");     }
   
break; case 3:     List<Peminjaman> semuaPeminjaman = Peminjaman.daftarPeminjaman();     if (semuaPeminjaman.isEmpty()) {         System.out.println("Belum ada PEMINJAMAN dalam database.");     } else {         System.out.println("##### ----------------------------------- D A F T A R  P E M I N J A M A N ------------------------------------- #####");
       
for (Peminjaman peminjaman : semuaPeminjaman) {
            System.
out.println("No: " + peminjaman.getNo() + " Judul: " + peminjaman.getJudul() + ", Peminjam: " + peminjaman.getPeminjam() +
                   
", Tanggal Pinjam: " + peminjaman.getTanggalPinjam() + ", Tanggal Kembali: " + peminjaman.getTanggalKembali() + ", Status: " + peminjaman.getStatus());
        }
        System.
out.println("---------------------------------------------------------------------------------------------------------------------");
    }
   
break;

 

Jangan lupa menambah tampilan menunya seperti berikut ini

System.out.println("MENU ANGGOTA");
System.out.println("1. LIST BUKU");
System.out.println("2. PINJAM BUKU (LAKUKAN SETELAH MELIHAT LIST BUKU)");
System.
out.println("3. LIST PEMINJAMAN");

  

8.    Mengupdate File Kompilasi

File kompilasi sebelumnya perlu diupdate karena ada tambahan menu. Pergi ke CMD lalu pindah direktori ke lokasi D:\Java_project\Library\src. Lakukan kompilasi dengan mengetik javac Main.java. Jika kompilasi berhasil, periksa kembali isi direktori dengan mengetik dir lalu tekan Enter.

 

     Langkah terakhir, uji program. Panggil program dengan menyertakan classpath, hal ini            karena CMD tidak sama dengan IDE yang langsung tersambung dengan jdbc. Cara                memanggilnya adalah dengan mengetik

java -classpath “.;mysql-connector-j-9.2.0.jar” Main

 


Jalankan program dengan menuliskan username dan password lalu memilih menu yang tersedia.

 



Tidak ada komentar:

Posting Komentar

Populer