2
PEMROGRAMAN BERBASIS WINDOWS
MEMBUAT APLIKASI CRUD PERPUSTAKAAN
A. Pendahuluan
Pada sesi ini mahasiswa diharapkan mampu membuat sendiri aplikasi berbasis
desktop dengan fungsi CRUD (create, read, update, delete). Sebagai bahan latihan
praktikum, aplikasi yang akan dibuat adalah aplikasi perpustaakan.
B. Database
1. Pengantar Koneksi ke Database
Koneksi ke database pada Java ditangani oleh JDBC (Java DataBase Connectivity).
Perlu diketahui, bahwa JDBC merupakan salah satu API (Application Programming
Interface). Antarmuka ini memungkinkan pemrogram menulis sebuah program yang
dapat digunakan untuk mengakses database yang berbeda-beda, seperti: Oracle,
Access, MySQL, dan lain sebagainya.
2. Membuat Database
Untuk membuat database dengan MySQL, kita gunakan XAMPP. Terlebih dahulu
aktifkan Apache dan MySql pada XAMPP.
Gambar 1. Mengaktifkan Apache dan MySql pada XAMPP
Pada browser ketikkan:
localhost/phpmyadmin
. Jika berhasil maka akan keluar
tampilan seperti pada Gambar 2.
3
Gambar 2. Tampilan localhost/phpmyadmin
Untuk memnuat database baru, kita klik tombol New kemudian isi nama database
dengan
db_perpustakaan
. Kemudian klik tombol
Create
.
Gambar 3. Membuat database db_perpustakaan
3. Membuat Tabel
Setelah menekan tombol Create dan database berhasil dibuat, langkah selanjutnya
adalah membuat tabel. Kita akan membuat beberapa tabel yaitu tabel: tbBuku,
tbAnggota, tbPetugas, tbKategoriBuku, tbPeminjaman, dan tbPengembalian.
4
Isi Name dengan tbBuku dan columns 8. Kemudian klik tombol Go.
Gambar 4. Membuat tabel tbBuku
Gambar 5. Field untuk tbBuku
5
Gambar 7. Field untuk tbAnggota
Gambar 8. Field untuk tbPetugas
6
Gambar 10. Field untuk tbPengembalian
C. Membuat Projek Baru
Caranya pilih menu File New Project kemudian pada Categories pilih Java dan
pada Projects pilih Java Application. Setelah itu klik tombol Next. Project Name isi
dengan AppPerpustakaan dan untuk Project Location adalah pada direktori D:\PBO.
Kemudian klik tombol Finish.
Gambar 11. Membuat projek baru dengan nama AppPerpustakaan
D. Package
Untuk membuat package baru, klik kanan pada project AppPerpustakaan pilih New
pilih Java Package.
7
Gambar 11. Membuat package baru
Gambar 12. Memberi nama pada package baru
Ada beberapa package yang perlu dibuat dalam AppPerpustakaan ini, antara lain:
1. Package Koneksi
Buat class baru pada package Fungsi. Klik kanan pada package Koneksi lalu pilih
New pilih Java Class
8
Untuk nama classnya beri dengan nama Koneksi lalu klik tombol Finish.
Gambar 14. Memberi nama class dengan Koneksi
Ketikkan script code Java berikut pada class Koneksi.java
9
Menambahkan Library MySql JDBC Driver
Sebelum kita membuat koneksi ke database db_perpustakaan, kita perlu menambahkan
terlebih dahulu library MySql JDBC driver ke dalam projek kita. Caranya yaitu klik
kanan pada Libraries pilih Add Library lalu pilih MySQL JDBC Driver.
Gambar 16. Menambahkan library MySql JDBC Driver
2. Package Fungsi
Tambahkan class baru pada package Fungsi dengan nama Fungsi. Adapun caranya
sama seperti pada Gambar 13 dan Gambar 14. Ketikkan script berikut pada class
Fungsi.java.
10
3. Package appperpustakaan.Entitas
Buat beberapa class baru sebagai berikut:
Gambar 18. Class yang dibuat pada package appperpustakaan.Entitas
a. Script untuk class Anggota.java
package appperpustakaan.Entitas;
public class Anggota {
private String kodeAnggota, namaAnggota, tempatLahir, tglLahir, jk, alamat, agama, pekerjaan, telp;
public String getKodeAnggota() { return kodeAnggota;
}
public void setKodeAnggota(String kodeAnggota) { this.kodeAnggota = kodeAnggota;
}
public String getNamaAnggota() { return namaAnggota;
}
public void setNamaAnggota(String namaAnggota) { this.namaAnggota = namaAnggota;
}
public String getTempatLahir() { return tempatLahir;
11
public void setTempatLahir(String tempatLahir) { this.tempatLahir = tempatLahir;
}
public String getTglLahir() { return tglLahir;
}
public void setTglLahir(String tglLahir) { this.tglLahir = tglLahir;
}
public String getJk() { return jk;
}
public void setJk(String jk) { this.jk = jk;
}
public String getAlamat() { return alamat;
}
public void setAlamat(String alamat) { this.alamat = alamat;
}
public String getAgama() { return agama;
}
public void setAgama(String agama) { this.agama = agama;
}
public String getPekerjaan() { return pekerjaan;
12
public void setPekerjaan(String pekerjaan) { this.pekerjaan = pekerjaan;
}
public String getTelp() { return telp;
}
public void setTelp(String telp) { this.telp = telp;
}
//membuat konstruktor anggota
public Anggota(String kode, String nama, String tempatLahir, String tglLahir, String jk, String alamat, String agama, String pekerjaan, String telp) { this.kodeAnggota = kode; this.namaAnggota = nama; this.tempatLahir = tempatLahir; this.tglLahir = tglLahir; this.jk = jk; this.alamat = alamat; this.agama = agama; this.pekerjaan = pekerjaan; this.telp = telp; } }
b. Script untuk class KategoriBuku.java
package appperpustakaan.Entitas;
public class KategoriBuku {
private String kodeKategori, kategoriBuku; public String getKodeKategori() {
13
}
public void setKodeKategori(String kodeBuku) { this.kodeKategori = kodeKategori;
}
public String getKategoriBuku() { return kategoriBuku;
}
public void setKategoriBuku(String kategoriBuku) { this.kategoriBuku = kategoriBuku;
}
public KategoriBuku(String kodeKategori, String kategoriBuku) { this.kodeKategori = kodeKategori;
this.kategoriBuku = kategoriBuku; }
}
c. Script untuk class Buku.java
package appperpustakaan.Entitas;
public class Buku {
private String kodeBuku, judulBuku, namaPenerbit, namaPenulis, kodeKategori;
private int tebalBuku, thnTerbit, stok; public String getKodeBuku() {
return kodeBuku; }
public void setKodeBuku(String kodeBuku) { this.kodeBuku = kodeBuku;
}
14
return judulBuku; }
public void setJudulBuku(String judulBuku) { this.judulBuku = judulBuku;
}
public String getNamaPenerbit() { return namaPenerbit;
}
public void setNamaPenerbit(String namaPenerbit) { this.namaPenerbit = namaPenerbit;
}
public String getNamaPenulis() { return namaPenulis;
}
public void setNamaPenulis(String namaPenulis) { this.namaPenulis = namaPenulis;
}
public String getKodeKategori() { return kodeKategori;
}
public void setKodeKategori(String kodeKategori) { this.kodeKategori = kodeKategori;
}
public int getTebalBuku() { return tebalBuku; }
public void setTebalBuku(int tebalBuku) { this.tebalBuku = tebalBuku;
}
15
return thnTerbit; }
public void setThnTerbit(int thnTerbit) { this.thnTerbit = thnTerbit;
}
public int getStok() { return stok; }
public void setStok(int stok) { this.stok = stok;
}
//membuat konstruktor Buku
public Buku(String kodeBuku, String judulBuku, int tebalBuku, String namaPenerbit, String namaPenulis, int thnTerbit, String kdKategori, int stok) {
this.kodeBuku = kodeBuku; this.judulBuku = judulBuku; this.tebalBuku = tebalBuku; this.namaPenerbit = namaPenerbit; this.namaPenulis = namaPenulis; this.thnTerbit = thnTerbit; this.kodeKategori = kdKategori; this.stok = stok; } }
d. Script untuk class Petugas.java
package appperpustakaan.Entitas;
/** *
* @author debbyummul */
16
public class Petugas {
private String kodePetugas, namaPetugas, tempatLahir, tglLahir, jk, alamat, agama, pass, status, telp;
public String getKodePetugas() { return kodePetugas;
}
public void setKodePetugas(String kodePetugas) { this.kodePetugas = kodePetugas;
}
public String getNamaPetugas() { return namaPetugas;
}
public void setNamaPetugas(String namaPetugas) { this.namaPetugas = namaPetugas;
}
public String getTempatLahir() { return tempatLahir;
}
public void setTempatLahir(String tempatLahir) { this.tempatLahir = tempatLahir;
}
public String getTglLahir() { return tglLahir;
}
public void setTglLahir(String tglLahir) { this.tglLahir = tglLahir;
}
public String getJk() { return jk;
17
public void setJk(String jk) { this.jk = jk;
}
public String getAlamat() { return alamat;
}
public void setAlamat(String alamat) { this.alamat = alamat;
}
public String getAgama() { return agama;
}
public void setAgama(String agama) { this.agama = agama;
}
public String getPass() { return pass;
}
public void setPass(String pass) { this.pass = pass;
}
public String getStatus() { return status;
}
public void setStatus(String status) { this.status = status;
}
public String getTelp() { return telp;
18
public void setTelp(String telp) { this.telp = telp;
}
public Petugas(String kodePetugas, String namaPetugas, String tempatLahir, String tglLahir, String jk, String alamat, String agama, String telp, String pass, String status) {
this.kodePetugas = kodePetugas; this.namaPetugas = namaPetugas; this.tempatLahir = tempatLahir; this.tglLahir = tglLahir; this.jk = jk; this.alamat = alamat; this.agama = agama; this.telp = telp; this.pass = pass; this.status = status; } }
e. Script untuk class Peminjaman.java
package appperpustakaan.Entitas;
/** *
* @author debbyummul */
public class Peminjaman {
private String kodePinjam, kodeAnggota, kodeBuku, tglPinjam, kodePetugas;
private int jmlPinjam;
public String getKodePinjam() { return kodePinjam;
19
public void setKodePinjam(String kodePinjam) { this.kodePinjam = kodePinjam;
}
public String getKodeAnggota() { return kodeAnggota;
}
public void setKodeAnggota(String kodeAnggota) { this.kodeAnggota = kodeAnggota;
}
public String getKodeBuku() { return kodeBuku;
}
public void setKodeBuku(String kodeBuku) { this.kodeBuku = kodeBuku;
}
public String getTglPinjam() { return tglPinjam;
}
public void setTglPinjam(String tglPinjam) { this.tglPinjam = tglPinjam;
}
public String getKodePetugas() { return kodePetugas;
}
public void setKodePetugas(String kodePetugas) { this.kodePetugas = kodePetugas;
}
public int getJmlPinjam() { return jmlPinjam; }
20
public void setJmlPinjam(int jmlPinjam) { this.jmlPinjam = jmlPinjam;
}
public Peminjaman(String kodePinjam, String kodeAnggota, String kodeBuku, int jmlBuku, String tglPinjam, String kodePetugas) {
this.kodePinjam = kodePinjam; this.kodeAnggota = kodeAnggota; this.kodeBuku = kodeBuku; this.jmlPinjam = jmlBuku; this.tglPinjam = tglPinjam; this.kodePetugas = kodePetugas; } }
f. Script untuk class Pengembalian.java
package appperpustakaan.Entitas;
/** *
* @author debbyummul */
public class Pengembalian {
private String kodePinjam, kodeAnggota, tglKembali; private int denda;
public String getTglKembali() { return tglKembali;
}
public void setKodePinjam(String kodePinjam) { this.kodePinjam = kodePinjam;
21
}
public String getKodeAnggota() { return kodeAnggota;
}
public void setKodeAnggota(String kodeAnggota) { this.kodeAnggota = kodeAnggota;
}
public void setTglKembali(String tglKembali) { this.tglKembali = tglKembali;
}
public String getKodePinjam() { return kodePinjam;
}
public int getDenda() { return denda; }
public void setDenda(int denda) { this.denda = denda;
}
public Pengembalian(String kodePinjam, String kodeAnggota, String tglKembali, int denda) {
this.kodePinjam = kodePinjam; this.kodeAnggota = kodeAnggota; this.tglKembali = tglKembali; this.denda = denda; } }
22
g. Script untuk class Login.java
package appperpustakaan.Entitas;
/** *
* @author debbyummul */
public class Login {
String user, pass;
public String getUser() { return user;
}
public void setUser(String user) { this.user = user;
}
public String getPass() { return pass;
}
public void setPass(String pass) { this.pass = pass;
}
public Login(String user, String pass) { this.user = user;
this.pass = pass; }
23
4. Package appperpustakaan.EntitasManajer
Buat beberapa class baru sebagai berikut:
Gambar 19. Class yang dibuat pada package appperpustakaan.EntitasManajer
a. Script untuk class ManajerAnggota.java
24
25
c. Script untuk class ManajerBuku.java
26
d. Script untuk class ManajerPetugas.java
27
28
29
5. Package appperpustakaan.Interface
Untuk package ini kita tambahkan JFrame Form. Caranya cukup mudah. Klik kanan
pada package appperpustakaan.Interface New JFrame Form. Pada Class Name
isi dengan nama form yang akan kita buat, dalam hal ini Class Name yang akan
dibuat adalah FormAnggota, lalu klik tombol Finish untuk mengakhiri.
Gambar 20. Membuat FormAnggota
a. Desain FormAnggota.java
30
Tabel 1. Properties yang dibutuhkan pada FormAnggota
M
u
l
a
i
m
e
l
a
k
u
k
a
n
f
u
n
g
s
i
CRUD
1) First
Kita perlu mengimport beberapa package berikut:
import Koneksi.Koneksi;
import appperpustakaan.Entitas.Anggota;
import appperpustakaan.EntitasManajer.ManajerAnggota;
2) Kita perlu menampilkan data tabel. Caranya kita buat method tampilTabel().
Lalu ketikkan source berikut:
private void tampilTabel() {
DefaultTableModel tabel = new DefaultTableModel();
Tools
Variabel Name
TextField1
txtKode
enabled: false
TextField2
txtNama
TextField3
txtTmptLahir
TextField4
txtTglLahir
ComboBox1
cmbJk
model: Laki-Laki, Perempuan
TextField5
txtAlamat
ComboBox2
cmbAgama
model: Budha, Hindu, Katolik, Kristen,
Islam, Lainnya
TextField6
txtPekerjaan
TextField7
txtTelp
jButton1
btTambah
jButton2
btSimpan
jButton3
btHapus
jButton4
btUbah
jButton5
btKeluar
jButton6
btBatal
jTable1
tblAnggota
31
tabel.addColumn("Kode Anggota"); tabel.addColumn("Nama Anggota"); tabel.addColumn("Tempat Lahir"); tabel.addColumn("Tanggal Lahir"); tabel.addColumn("Jenis Kelamin"); tabel.addColumn("Alamat"); tabel.addColumn("Agama"); tabel.addColumn("Pekerjaan"); tabel.addColumn("Nomor Telepon"); try { con = getConnection.configDB(); st = con.createStatement();String sql = "SELECT * FROM tbanggota"; ResultSet rs = st.executeQuery(sql); while (rs.next()) {
tabel.addRow(new Object[]{rs.getString(1),
rs.getString(2), rs.getString(3), rs.getString(4), rs.getString(5), rs.getString(6), rs.getString(7),
rs.getString(8),rs.getString(9)}); }
tblAnggota.setModel(tabel); } catch (Exception e) {
JOptionPane.showMessageDialog(null, "Ada Kesalahan"); }
}
3) Untuk membuat kode Anggota menjadi otomatis ketika ditambahkan, kita
bisa membuat method tampilKodeAnggota(). Kita dapat menggunakan
contoh script berikut:
private void tampilKodeAnggota() { try {
String sql = "SELECT MAX(right(kdAnggota, 1)) AS Kode FROM tbanggota"; con = getConnection.configDB(); st = con.createStatement(); ResultSet rs = st.executeQuery(sql); if (rs.first() == false) { txtKode.setText("A0001"); } else {;
32
rs.last();
int auto_id = rs.getInt(1) + 1; String no = String.valueOf(auto_id); int noLong = no.length();
//mengatur jumlah 00
for (int a = 0; a < 4 - noLong; a++) { no = "0" + no; } txtKode.setText("A" + no); } rs.close(); st.close(); } catch (Exception e) { } }
4) Agar data tabel pada database dapat tampil pada tabel di form Anggota, maka
kita tinggal memanggil method tampilTabel() pada konstruktor utama.
public FormAnggota() {
initComponents();
tampilTabel();
}
5) Double klik pada tombol Simpan
private void btSimpanActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:
if (txtKode.getText().isEmpty() || txtNama.getText().isEmpty() ||
txtTmptLahir.getText().isEmpty() || txtTglLahir.getText().isEmpty() || cmbJk.getSelectedItem().equals(null) || txtAlamat.getText().isEmpty() || cmbAgama.getSelectedItem().equals(null) || txtPekerjaan.getText().isEmpty() || txtTelp.getText().isEmpty()) {
JOptionPane.showMessageDialog(null, "Field Tidak Boleh Kosong"); txtNama.requestFocus();
} else {
Anggota a = new Anggota(txtKode.getText(),txtNama.getText(), txtTmptLahir.getText(),txtTglLahir.getText(),
cmbJk.getSelectedItem().toString(), txtAlamat.getText(), cmbAgama.getSelectedItem().toString(), txtPekerjaan.getText(), txtTelp.getText());
ManajerAnggota ma = new ManajerAnggota(); int i = ma.INSERT(a);
33
if (i == 1) {JOptionPane.showMessageDialog(null, "Simpan Data Berhasil"); tampilTabel(); kosong(); txtNama.requestFocus(); btTambah.setEnabled(true); btSimpan.setEnabled(false); btUbah.setEnabled(false); btHapus.setEnabled(false); } else {
JOptionPane.showMessageDialog(null, "Data gagal Disimpan"); kosong(); txtNama.requestFocus(); btTambah.setEnabled(true); btSimpan.setEnabled(false); btUbah.setEnabled(false); btHapus.setEnabled(false); } } }
6) Double klik pada tombol Ubah
private void btUbahActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:
if (txtKode.getText().isEmpty() || txtNama.getText().isEmpty() ||
txtTmptLahir.getText().isEmpty() || txtTglLahir.getText().isEmpty() || cmbJk.getSelectedItem().equals(null) || txtAlamat.getText().isEmpty() || cmbAgama.getSelectedItem().equals(null) || txtPekerjaan.getText().isEmpty() || txtTelp.getText().isEmpty()) {
JOptionPane.showMessageDialog(null, "Field Tidak Boleh Kosong"); txtNama.requestFocus();
} else {
Anggota a = new Anggota(txtKode.getText(),txtNama.getText(), txtTmptLahir.getText(),txtTglLahir.getText(),
cmbJk.getSelectedItem().toString(), txtAlamat.getText(), cmbAgama.getSelectedItem().toString(), txtPekerjaan.getText(), txtTelp.getText());
ManajerAnggota ma = new ManajerAnggota(); int i = ma.UPDATE(a);
if (i == 1) {
34
tampilTabel(); kosong(); txtNama.requestFocus(); btTambah.setEnabled(true); btSimpan.setEnabled(false); btUbah.setEnabled(false); btHapus.setEnabled(false); } else {JOptionPane.showMessageDialog(null, "Data Gagal Diubah"); kosong(); txtNama.requestFocus(); btTambah.setEnabled(true); btSimpan.setEnabled(false); btUbah.setEnabled(false); btHapus.setEnabled(false); } } }
7) Double klik pada tombol Hapus
private void btHapusActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:
if (txtKode.getText().isEmpty() || txtNama.getText().isEmpty() ||
txtTmptLahir.getText().isEmpty() || txtTglLahir.getText().isEmpty() || cmbJk.getSelectedItem().equals(null) || txtAlamat.getText().isEmpty() || cmbAgama.getSelectedItem().equals(null) || txtPekerjaan.getText().isEmpty() || txtTelp.getText().isEmpty()) {
JOptionPane.showMessageDialog(null, "Pilih Data Yang Akan Dihapus!"); txtNama.requestFocus();
} else {
if (JOptionPane.showConfirmDialog(null, "Apakah Anda Yakin?", "Peringatan", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) { ManajerAnggota ma = new ManajerAnggota();
ma.DELETE(txtKode.getText());
JOptionPane.showMessageDialog(null, "Hapus Data Berhasil"); tampilTabel(); kosong(); txtKode.requestFocus(); btSimpan.setEnabled(false); btHapus.setEnabled(false); btUbah.setEnabled(false);
35
btBatal.setEnabled(false); btTambah.setEnabled(true); } else {JOptionPane.showMessageDialog(null, "Hapus Data Gagal"); kosong(); btSimpan.setEnabled(false); btHapus.setEnabled(false); btUbah.setEnabled(false); btBatal.setEnabled(false); btTambah.setEnabled(true); } } }
8) Double klik pada tombol Keluar
private void btKeluarActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:
dispose(); }
9) Membuat method mouse klik
private void tblAnggotaMouseClicked(java.awt.event.MouseEvent evt) { // TODO add your handling code here:
int baris = tblAnggota.getSelectedRow();
txtKode.setText(tblAnggota.getModel().getValueAt(baris, 0).toString()); txtNama.setText(tblAnggota.getModel().getValueAt(baris, 1).toString()); txtTmptLahir.setText(tblAnggota.getModel().getValueAt(baris, 2).toString()); txtTglLahir.setText(tblAnggota.getModel().getValueAt(baris, 3).toString()); cmbJk.setSelectedItem(tblAnggota.getModel().getValueAt(baris, 4).toString()); txtPekerjaan.setText(tblAnggota.getModel().getValueAt(baris, 7).toString()); txtAlamat.setText(tblAnggota.getModel().getValueAt(baris, 5).toString()); cmbAgama.setSelectedItem(tblAnggota.getModel().getValueAt(baris, 6).toString()); txtPekerjaan.setText(tblAnggota.getModel().getValueAt(baris, 7).toString()); txtTelp.setText(tblAnggota.getModel().getValueAt(baris, 8).toString()); }