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
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