Thursday, October 20, 2011

TestTanggal Kembali kosong

package project;



import java.util.Date;

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author admin
*/
public class TestTglKembaliNull {

/**
* @param args the command line arguments
*/
public static void main(String[] args) throws Exception {

// pengujian tanggal pinjam kosong
Koleksi tesNull = new Koleksi();
Date date2 = new Date(111, 8, 7);

tesNull.setTanggalKembali(date2);


Koleksi tes1 = new Koleksi();
Date date = new Date (111,8,3);
Date date1 = new Date (111,8,7);

tes1.setTanggalPinjam(date);
tes1.setTanggalKembali(date1);
System.out.println("Hore benar");


}
}

TestTanggalKembaliBefore

package project;

import java.util.Date;



/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

/**
*
* @author admin
*/
public class TestTglKembaliBefore {

/**
* @param args the command line arguments
*/
public static void main(String[] args) throws Exception {

Koleksi tesBefore = new Koleksi();
Date pinjam = new Date (111,9,1);
Date kembali = new Date (111,8, 29);

tesBefore.setTanggalPinjam(pinjam);
tesBefore.setTanggalKembali(kembali);
System.out.println(tesBefore.getTanggalKembali());
}

}

testPengguna

package project;



import java.util.Calendar;
import java.util.Date;

public class TestPengguna {

public static void main(String[] args) {
Pengguna testPengguna = new Pengguna();
testPengguna.setNama("Firman");
System.out.println("Pengguna : " + testPengguna.getNama());

Buku testBuku1 = new Buku();
testBuku1.setJudul("1/2 isi 1/2 kosong");
System.out.println("Judul : " + testBuku1.getJudul());

Buku testBuku2 = new Buku();
testBuku2.setJudul("PJP");
System.out.println("Judul : " + testBuku2.getJudul());

Date now = Calendar.getInstance().getTime();
Date Date1 = new Date(111, 7, 1);
Date Date2 = new Date(111, 7, 5);

testPengguna.tambahDaftarPinjaman(testBuku1, Date1);
testPengguna.tambahDaftarPinjaman(testBuku2, Date2);

System.out.println("Daftar Pinjaman");
System.out.println(testPengguna.tampilPinjaman());
System.out.println("Terlambat : " + testPengguna.adaDaftarPinjamanTerlambat(now));
System.out.println("Denda : " + testPengguna.hitungDenda(now));
System.out.println(now);

}
}

TestKemabli Pinjaman

package project;



public class TestKembaliPinjaman {

public static void main(String[] args) throws Exception {

Pengguna kembali = new Pengguna();
Koleksi kol1 = new Koleksi();
kol1.setJudul("Chicken Soup");
kembali.kembalikanPinjaman(kol1);

Koleksi kol2 = new Koleksi();
kembali.kembalikanPinjaman(kol2);
}
}

TestDate

package project;




import java.util.Calendar;
import java.util.Date;

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

/**
*
* @author admin
*/
public class TestDate {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Date now = Calendar.getInstance().getTime();
Date yesterday = new Date (111,8,13);
System.out.println("now : " + now);
System.out.println("yesterday : " + yesterday);
}

}

TesThun Terbit

package project;



import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;

public class TesTglKembali {

/**
* digunakan untuk mengeksekusi program
* @param args
*/
public static void main(String[] args) {
/**
* merupakan obyek baru dari kelas Koleksi
*/
Koleksi tesNull = new Koleksi();
/**
* merupakan obyek baru dari kelas Date dan mengeset tanggal
*/
Date date2 = new Date(111, 8, 7);
/**
* jika mengesetkan date2 sebagai tanggal kembali
*/
try {
tesNull.setTanggalKembali(date2);
} catch (Exception ex) {
Logger.getLogger(TesTglKembali.class.getName()).log(Level.SEVERE, null, ex);
}

/**
* merupakan obyek baru dari kelas Koleksi
*/
Koleksi tes1 = new Koleksi();
/**
* merupakan obyek baru dari kelas Date dan mengeset tanggal
*/
Date date = new Date(111, 8, 3);
/**
* merupakan obyek baru dari kelas Date dan mengeset tanggal
*/
Date date1 = new Date(111, 8, 7);

/**
* jika tanggal pinjam dan tanggal kembali diset maka akan menampilkan tulisan "yang ini baru bener"
*/
try {
tes1.setTanggalPinjam(date);
tes1.setTanggalKembali(date1);
System.out.println("Yang ini baru bener");
} catch (Exception ex) {
Logger.getLogger(TesTglKembali.class.getName()).log(Level.SEVERE, null, ex);
}
}
}

TesTanggalKembali

package project;



import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;

public class TesTglKembali {

/**
* digunakan untuk mengeksekusi program
* @param args
*/
public static void main(String[] args) {
/**
* merupakan obyek baru dari kelas Koleksi
*/
Koleksi tesNull = new Koleksi();
/**
* merupakan obyek baru dari kelas Date dan mengeset tanggal
*/
Date date2 = new Date(111, 8, 7);
/**
* jika mengesetkan date2 sebagai tanggal kembali
*/
try {
tesNull.setTanggalKembali(date2);
} catch (Exception ex) {
Logger.getLogger(TesTglKembali.class.getName()).log(Level.SEVERE, null, ex);
}

/**
* merupakan obyek baru dari kelas Koleksi
*/
Koleksi tes1 = new Koleksi();
/**
* merupakan obyek baru dari kelas Date dan mengeset tanggal
*/
Date date = new Date(111, 8, 3);
/**
* merupakan obyek baru dari kelas Date dan mengeset tanggal
*/
Date date1 = new Date(111, 8, 7);

/**
* jika tanggal pinjam dan tanggal kembali diset maka akan menampilkan tulisan "yang ini baru bener"
*/
try {
tes1.setTanggalPinjam(date);
tes1.setTanggalKembali(date1);
System.out.println("Yang ini baru bener");
} catch (Exception ex) {
Logger.getLogger(TesTglKembali.class.getName()).log(Level.SEVERE, null, ex);
}
}
}

TesKoleksi

package project;
import java.util.Date;

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

/**
*
* @author admin
*/
public class TesKoleksi {

/**
* @param args the command line arguments
*/
public static void main(String[] args) throws Exception {
Koleksi test = new Koleksi();
test.setTanggalPinjam(new Date(111, 9, 1));
test.setTanggalKembali(new Date(111, 9, 8));
System.out.println("lama pinjam koleksi = " + test.lamaPinjam()+ "hari");

Buku testBuku = new Buku();
testBuku.setTanggalPinjam(new Date(111, 9, 1));
testBuku.setTanggalKembali(new Date(111, 9, 8));
System.out.println("lama pinjam buku = " + testBuku.lamaPinjam()+ "hari");
}

}

TesKembali

package project;


import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;

public class TesKembali {
/**
* digunakan untuk mengeksekusi program
* @param args
*/
public static void main(String[] args) {
Pengguna kembali = new Pengguna();
Koleksi kol1 = new Koleksi();
kol1.setJudul("Chicken Soup");
kembali.tambahDaftarPinjaman(kol1, new Date(111, 9, 5));
try {
kembali.kembalikanPinjaman(kol1);
System.out.println("Yup sudah kembali");
} catch (Exception ex) {
Logger.getLogger(TesKembali.class.getName()).log(Level.SEVERE, null, ex);
}

Koleksi kol2 = new Koleksi();
try {
kembali.kembalikanPinjaman(kol2);
} catch (Exception ex) {
Logger.getLogger(TesKembali.class.getName()).log(Level.SEVERE, null, ex);
}
}
}

Pengguna

package project;


import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;

public class Pengguna implements Peminjam {

private String nama;
private String alamat;
public static int MaxKoleksiPinjaman = 10;
private ArrayList daftarPinjaman = new ArrayList();

/**
* method yang digunakan untuk memanggil nama
* @return the nama
*/
public String getNama() {
return nama;
}

/**
* method yang digunakan untuk mengeset nama
* @param nama
*/
public void setNama(String nama) {
this.nama = nama;
}

/**
* method yang digunakan untuk memanggil Alamat
* @return alamat
*/
public String getAlamat() {
return alamat;
}

/**
* method yang digunkan untuk mengeset alamat
* @param alamat
*/
public void setAlamat(String alamat) {
this.alamat = alamat;
}

/**
* fungsi untuk mengetahui ada tidaknya pinjaman yang terlambat
* @param tanggalPinjam
* @param tanggalKembali
* @return
*/
public boolean adaDaftarPinjamanTerlambat(Date tanggalKembali) {
// dari i sama dengan 0 sampai dengan i kurang dari lebar daftarPinjaman
for (int i = 0; i < daftarPinjaman.size(); i++) {
// menampilkan tanggal pinjam
Date tanggalPinjam = daftarPinjaman.get(i).getTanggalPinjam();
// jika ada terlambat maka return true, jika tidak return false
if (daftarPinjaman.get(i).isTerlambat(tanggalPinjam, tanggalKembali)) {
return true;
}
}
return false;
}

/**
* merupakan method tambahDaftarPinjaman yang berisi 3 syarat yang harus terpenuhi saat meminjam koleksi
* @param kolPinjam
* @param tanggalPinjam
*/
@Override
public void tambahDaftarPinjaman(Koleksi kolPinjam, Date tanggalPinjam) {
Koleksi tempPinjam = kolPinjam;
if (kolPinjam.getJudul() == null) {
try {
throw new Exception("ndak ada judul tuu");
} catch (Exception ex) {
Logger.getLogger(Pengguna.class.getName()).log(Level.SEVERE, null, ex);
}
}
if (daftarPinjaman.isEmpty()) {
//daftar pinjaman kosong
daftarPinjaman.add(tempPinjam);
} else {
if (daftarPinjaman.size() < MaxKoleksiPinjaman) {
//daftar pinjaman isi
//cek terlambat
if (!adaDaftarPinjamanTerlambat(tanggalPinjam)) {
//tidak ada pinjaman terlambat
// kolPinjam.setTanggalPinjam(tanggalPinjam);
daftarPinjaman.add(tempPinjam);
} else {
//ada yang terlambat
System.out.println("Ada pinjaman terlambat");
}
} else {
// jumlah pinjaman melebihi batas
System.out.println("Jumlah pinjaman sudah lebih dari : " + MaxKoleksiPinjaman);
}
}
}

/**
* merupakan method adaKoleksi yang digunakan untuk mengeluarkan daftarPinjaman
* @param kol
* @return
*/
public boolean adaKoleksi(Koleksi kol) {
return daftarPinjaman.contains(kol);
}

/**
* methos hitung denda yang digunakan untuk menjumlahkan semua total denda dari semua koleksi yang pernah dipinjam
* @param tanggalPinjam
* @return
*/
@Override
public int hitungDenda(Date tanggalPinjam) {
int result = 0;
if (adaDaftarPinjamanTerlambat(tanggalPinjam)) {
for (int i = 0; i < daftarPinjaman.size(); i++) {
result = result + daftarPinjaman.get(i).hitungDenda(tanggalPinjam);
}
return result;
} else {
return 0;
}
}

/**
* merupakan method tampilPinjaman yang digunakan utuk menampilkan semua judul koleksi yang dipinjam
* @return
*/
public String tampilPinjaman() {
String result = "";
if (daftarPinjaman.isEmpty()) {
result = "anda tidak pinjam apa-apa";
} else {
for (int i = 0; i < daftarPinjaman.size(); i++) {
result = result + daftarPinjaman.get(i).getJudul() + "/n tanggal pinjam " + daftarPinjaman.get(i).getTanggalPinjam() + "\n";
}
}
return result;
}

/**
* Fungsi untuk mengembalikan pinjaman koleksi
* @param kol adalah koleksi yang dikembalikan
*/
public void kembalikanPinjaman(Koleksi kol) throws Exception {
Date now = Calendar.getInstance().getTime();
kol.getTanggalKembali();
if (daftarPinjaman.isEmpty()) {
throw new Exception("anda belum pinjam");

} else {
if (adaKoleksi(kol)) {
// pinjaman ada di daftar pinjam
daftarPinjaman.remove(kol);
} else {
// koleksi tidak ada di daftar pinjaman
System.out.println("Tidak ada koleksi di daftar pinjaman");
}
}
}
}

Peminjam interface

package project;


import java.util.Date;


interface Peminjam {

public int hitungDenda (Date tanggalPinjam) ;
public void tambahDaftarPinjaman(Koleksi koleksi, Date tanggalPinjam);

}

Masyarakat

package project;



public class Masyarakat extends Pengguna {
private String noKtp;


public String getNoKtp() {
return noKtp;
}

public void setNoKtp(String noKtp) {
this.noKtp = noKtp;
}


}

Majalah

package project;


import java.util.Date;

public class Majalah extends Koleksi {

private String issn;
private String series;
private int volume;
public static int WAKTU_PINJAM = 3; // static sebagai tanda bahwa waktu_pinjam adalah konstanta
public static int BIAYA_DENDA = 2000;

@Override
public int lamaPinjam() {
return super.lamaPinjam();
}

public int lamaHariTerlambat(Date tanggalKembali) {
Date tanggal_pinjam = super.getTanggalPinjam();
if (isTerlambat(tanggal_pinjam, tanggalKembali)) {
return super.lamaPinjam() - WAKTU_PINJAM;
}
return 0;
}

@Override
public int hitungDenda(Date tanggalKembali) {
Date tanggalPinjaman = super.getTanggalPinjam();
if (isTerlambat(tanggalPinjaman, tanggalKembali)) {
return this.lamaHariTerlambat(tanggalKembali) * BIAYA_DENDA;
}
return 0;
}

@Override
public boolean isTerlambat(Date tanggalPinjam, Date tanggalKembali) {
if (super.lamaPinjam(tanggalPinjam, tanggalKembali) > WAKTU_PINJAM) {
return true;
} else {
return false;
}
}

@Override
public boolean isTerlambat() {
if (isTerlambat(super.getTanggalPinjam(), super.getTanggalKembali())) {
return true;
} else {
return false;
}
}

/**
*
* @return
*/
public String getIssn() {
return issn;
}

/**
*
* @param issn
*/
public void setIssn(String issn) {
this.issn = issn;
}

/**
*
* @return
*/
public String getSeries() {
return series;
}

/**
*
* @param series
*/
public void setSeries(String series) {
this.series = series;
}

/**
*
* @return
*/
public int getVolume() {
return volume;
}

/**
*
* @param volume
*/
public void setVolume(int volume) {
this.volume = volume;
}
}

Mahasiswa

package project;


public class Mahasiswa extends Pengguna {
private String nim;

/**
* @return the nim
*/
public String getNim() {
return nim;
}

/**
* @param nim the nim to set
*/
public void setNim(String nim) {
this.nim = nim;
}




}

Koleksi

package project;


import java.util.Date;

public class Koleksi {

private String id;
private String judul;
private String penerbit;
private int thTerbit;
public Date tanggalPinjam;
public Date tanggalKembali;

// public Koleksi(String judul) {
// this.judul = judul;
// }
/**
* method lamaPinjam, merupakan method yang digunakan untuk menghitung lama pinjam sebuah koleksi dalam hari
* @return
*/
public int lamaPinjam() {
return (int) (getTanggalKembali().getTime() - getTanggalPinjam().getTime()) / (1000 * 60 * 60 * 24); //casting tanggal
}

/**
* method lamaPinjam, merupakan method yang digunakan untuk menghitung lama pinjam sebuah koleksi dalam hari
* @param tanggalPinjam
* @param tanggalKembali
* @return
*/
public int lamaPinjam(Date tanggalPinjam, Date tanggalKembali) {
return (int) ((tanggalKembali.getTime() - tanggalPinjam.getTime()) / (1000 * 60 * 60 * 24));
}

/**
* merupakan method yang digunakan untuk menghitung denda dari koleksi yang dipinjam
* @param tanggalKembali
* @return
*/
public int hitungDenda(Date tanggalKembali) {
return 0;
}

/**
* merthod yang digunakan untuk menghitung jumlah hari terlambat pengembalian sebuah koleksi
* @return
*/
public int jumlahHariTerlambat() {
return 0;
}

/**
* merupakan method terlambat. Jika ada terlambat maka return false
* @return
*/
public boolean isTerlambat() {
return false;
}

/**
* merupakan method terlambat. Jika ada terlambat maka return false
* @param tanggalPinjam
* @param tanggalKembali
* @return
*/
public boolean isTerlambat(Date tanggalPinjam, Date tanggalKembali) {
return false;
}

/**
* merupakan method yang digunakn untuk memanggil id
* @return the id
*/
public String getId() {
return id;
}

/**
* merupakan method yang digunakan untuk mengeset id
* @param id the id to set
*/
public void setId(String id) {
this.id = id;
}

/**
* merupakan method yang digunakan untuk memanggil judul
* @return the judul
*/
public String getJudul() {
return judul;
}

/**
* merupakan method yang digunakan untuk mengeset judul
* @param judul the judul to set
*/
public void setJudul(String judul) {
this.judul = judul;
}

/**
* merupakan method yang digunakan untuk memanggil penerbit
* @return the penerbit
*/
public String getPenerbit() {
return penerbit;
}

/**
* merupakan method yang digunakan untuk mengeset penerbit
* @param penerbit the penerbit to set
*/
public void setPenerbit(String penerbit) {
this.penerbit = penerbit;
}

/**
* merupakan method yang digunakan untuk memanggil tahun terbit
* @return the thTerbit
*/
public int getThTerbit() {
return thTerbit;
}

/**
* merupakan method yang digunakan untuk mengeset tahun terbit
* @param thTerbit the thTerbit to set
*/
public void setThTerbit(int thTerbit) throws Exception {
if (thTerbit < 1900) {
throw new Exception("tahun terbit kurang dari 1900");
}
if (thTerbit < 0) {
throw new Exception("tahun terbit negative");
}
this.thTerbit = thTerbit;

}

/**
* merupakan method yang digunakan untuk memanggil tanggal pinjam
* @return the tanggalPinjam
*/
public Date getTanggalPinjam() {
return tanggalPinjam;
}

/**
* merupakan method yang digunakan untuk mengeset tanggal pinjam
* @param tanggalPinjam the tanggalPinjam to set
*/
public void setTanggalPinjam(Date tanggalPinjam) {
this.tanggalPinjam = tanggalPinjam;
}

/**
* merupakan method yang digunakan untuk memanggil tanggal kembali
* @return the tanggalKembali
*/
public Date getTanggalKembali() {
return tanggalKembali;
}

/**
* merupakan method yang digunakan untuk mengeset tanggal kembali
* @param tanggalKembali the tanggalKembali to set
*/
public void setTanggalKembali(Date tanggalKembali) throws Exception {
if (tanggalPinjam == null) {
//tanggal pinjam kosong
throw new Exception("tanggal pinjam kosong");
} else {
//tanggal pinjam tidak kosong
//cek tanggal kembali sebelum tanggal pinjam atau tidak
if (tanggalKembali.before(tanggalPinjam)) {
throw new Exception("tanggal kembali lebih dulu dari tanggal pinjam");
} else {
//tanggal kembali setelah tanggal pinjam
this.tanggalKembali = tanggalKembali;
}
}
}
}

Dosen

package project;


public class Dosen extends Pengguna {
private String nip;



public String getNip() {
return nip;
}


public void setNip(String nip) {
this.nip = nip;
}

}

cddvd

package project;


import java.util.Date;


public class CDDVD extends Koleksi {
private String isbn;
private String format;
public static int WAKTU_PINJAM = 7; // static sebagai tanda bahwa waktu_pinjam adalah konstanta
public static int BIAYA_DENDA = 2000;

@Override
public int lamaPinjam() {
return super.lamaPinjam();
}

public int lamaHariTerlambat(Date tanggalKembali) {
Date tanggal_pinjam = super.getTanggalPinjam();
if (isTerlambat(tanggal_pinjam, tanggalKembali)) {
return super.lamaPinjam() - WAKTU_PINJAM;
}
return 0;
}

@Override
public int hitungDenda(Date tanggalKembali) {
Date tanggalPinjaman = super.getTanggalPinjam();
if (isTerlambat(tanggalPinjaman, tanggalKembali)) {
return this.lamaHariTerlambat(tanggalKembali) * BIAYA_DENDA;
}
return 0;
}

@Override
public boolean isTerlambat(Date tanggalPinjam, Date tanggalKembali) {
if (super.lamaPinjam(tanggalPinjam, tanggalKembali) > WAKTU_PINJAM) {
return true;
} else {
return false;
}
}

@Override
public boolean isTerlambat() {
// if(super.lamaPinjam(super.getTanggalPinjam(), super.getTanggalKembali()) > WAKTU_PINJAM)
if (isTerlambat(super.getTanggalPinjam(), super.getTanggalKembali())) {
return true;
} else {
return false;
}
}

/**
* @return the isbn
*/
public String getIsbn() {
return isbn;
}

/**
* @param isbn the isbn to set
*/
public void setIsbn(String isbn) {
this.isbn = isbn;
}

/**
* @return the format
*/
public String getFormat() {
return format;
}

/**
* @param format the format to set
*/
public void setFormat(String format) {
this.format = format;
}




}

Buku_class

package project;


import java.util.Date;

public class Buku extends Koleksi {

private String isbn;
private int jmlHal;
public static int WAKTU_PINJAM = 42; // static sebagai tanda bahwa waktu_pinjam adalah konstanta
public static int BIAYA_DENDA = 500;

/**
* merupakan method yang digunakan untuk menghitung lama pinjam dengan memanggil rumus yang ada di kelas koleksi
* @return
*/
@Override
public int lamaPinjam() {
return super.lamaPinjam();
}

/**
* merupakan method yang digunakan untuk menghitung lama hari terlambat dengan rumus jika ada terlambat maka lama pinjam dikurangi dengan waktu pinjam
* @param tanggalKembali
* @return
*/
public int lamaHariTerlambat(Date tanggalKembali) {
Date tanggal_pinjam = super.getTanggalPinjam();
if (isTerlambat(tanggal_pinjam, tanggalKembali)) {
return super.lamaPinjam(tanggalPinjam, tanggalKembali) - WAKTU_PINJAM;
}
return 0;
}

/**
* merupakan method hitung denda yang digunakan untuk menghitung denda dari setiap buku yang terlambat dengan cara mengalikan lama hari terlambat dengan biaya denda perhari
* @param tanggalKembali
* @return
*/
@Override
public int hitungDenda(Date tanggalKembali) {
Date tanggalPinjaman = super.getTanggalPinjam();
if (isTerlambat(tanggalPinjaman, tanggalKembali)) {
return this.lamaHariTerlambat(tanggalKembali) * BIAYA_DENDA;
}
return 0;
}

/**
* merupakan method is terlambat dengan rumus jika lama pinjam lebih besar dari waktu pinjam maka ada terlambat
* @param tanggalPinjam
* @param tanggalKembali
* @return
*/
@Override
public boolean isTerlambat(Date tanggalPinjam, Date tanggalKembali) {
if (super.lamaPinjam(tanggalPinjam, tanggalKembali) > WAKTU_PINJAM) {
return true;
} else {
return false;
}
}

/**
* merupakan method is terlambat, jika ada terlambat maka return true
* @return
*/
@Override
public boolean isTerlambat() {
if (isTerlambat(super.getTanggalPinjam(), super.getTanggalKembali())) {
return true;
} else {
return false;
}
}

/**
* merupakan method yang digunakan untuk memanggil Isbn
* @return the isbn
*/
public String getIsbn() {
return isbn;
}

/**
* merupakan method yang digunakan untuk mengeset Isbn
* @param isbn the isbn to set
*/
public void setIsbn(String isbn) {
this.isbn = isbn;
}

/**
* merupakan method yang digunakan untuk memanggil jumlah halaman
* @return the jmlHal
*/
public int getJmlHal() {
return jmlHal;
}

/**
* merupakan method yang digunakan untuk mengeset jumlah halaman
* @param jmlHal the jmlHal to set
*/
public void setJmlHal(int jmlHal) {
this.jmlHal = jmlHal;
}
}

Pinjam_Dialog

package GUI;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;
import project.Buku;
import project.Majalah;

public class PinjamDialog extends JDialog implements ActionListener {

JButton pinjam;// membuat atribut pinjam bertipe JButton
JLabel Peminjam, NIM, Nama, Alamat, Koleksi, ID_Koleksi;// membuat atribut JLabel berupa, pinjam, NIM, Nama, Almat, Koleksi, ID_koeksi
JLabel Judul;// membuat atribut Jlabel berupa judul
JTextField nim, nama, alamat, idKoleksi, judul;// membuat atribut JTextField berupa nim, nama, alamat, idKolelsi, judul
JRadioButton buku, majalah;
ButtonGroup group;

// @SuppressWarnings("static-access")
public PinjamDialog(Frame owner) {
super(owner);

this.setLayout(new GridLayout(5, 2)); // digunakan untuk membuat banyak baris,kolom
setTitle("Daftar Pinjaman");//menset judul atau title
setSize(500, 500);// mengatur berapa ukuran kotak yang akan tampil
setLocation(500, 500);// mengatur letak sudut kotak yang akan tampil
setResizable(true);// untuk pengaturan kotak secara paten atau tidak bisa di besar kecilkan oleh user


Peminjam = new JLabel("DATA PEMINJAM");//membuat tampilan jlabel berupa peminjam
NIM = new JLabel("NIM : ");// membuat tampilan jlabel berupa nim
Nama = new JLabel("Nama : ");// membuat tampilan jlabel berupa nama
Alamat = new JLabel("Alamat : ");// membuat tampilan jlabel berupa alamat
Koleksi = new JLabel("DATA KOLEKSI");// membuat tampilan jlabel berupa koleksi
ID_Koleksi = new JLabel("Id Koleksi : ");// membuat tampilan jlabel berupa id koleksi
Judul = new JLabel("Judul Buku : ");// membuat tampilan jlabel berupa judul
nim = new JTextField(30);// membuat JtextField berupa nim
nama = new JTextField(30);// membuat JtextField berupa nama
alamat = new JTextField(30);// membuat JtextField berupa alamat
idKoleksi = new JTextField(30);// membuat JtextField berupa id Koleksi
judul = new JTextField(30);// membuat JtextField berupa judul

buku = new JRadioButton("Buku");
// buku.setBounds(20, 20, 150, 200);
this.add(buku);



majalah = new JRadioButton("majalah");
// majalah.setBounds(20, 40, 150, 200);
this.add(majalah);


group = new ButtonGroup();
group.add(buku);
group.add(majalah);




JPanel panel1 = new JPanel(new FlowLayout());
panel1.add(Peminjam);// membuat panel untuk peminjam
getContentPane().add(panel1);// mengambil nilai content pane dan menmabhkan Jpanel
JPanel panel2 = new JPanel(new GridLayout(3, 2));// membuat ukuran kotak yang akan ditulis
panel2.add(Nama);// menambahkan panel 2 berupa Nama
panel2.add(nama);// menambahkan panel 2 berupa nama
panel2.add(NIM);// menambahkan panel 2 berupa NIM
panel2.add(nim);// menambahkan panel 2 berupa nim
panel2.add(Alamat);// menambahkan panel 2 berupa Alamat
panel2.add(alamat);// // menambahkan panel 2 berupa alamat
getContentPane().add(panel2);
JPanel panel3 = new JPanel(new FlowLayout());
panel3.add(Koleksi);
getContentPane().add(panel3);

JPanel panel4 = new JPanel(new GridLayout(3, 2));// membuat ukuran kotak yang akan di tulis
panel4.add(ID_Koleksi);
panel4.add(idKoleksi);
panel4.add(Judul);
panel4.add(judul);
getContentPane().add(panel4);


pinjam = new JButton("Pinjam");
pinjam.addActionListener(this);

getContentPane().add(pinjam);
}





public void actionCommand(ActionEvent e) throws Exception {
if (group.getSelection()==null){
throw new Exception("belum milih");

}else{
if (buku.isSelected()){
JOptionPane.showMessageDialog(this,"pilih buku");
Buku test = new Buku();

}else if (majalah.isSelected()){
JOptionPane.showMessageDialog(this, "pilih majalah");
Majalah test1 = new Majalah();
}
}
}

@Override
public void actionPerformed(ActionEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}
}

Frame main

package GUI;

public class FrameMain {

public static void main(String[] args) {

FramePerpus frame = new FramePerpus();
frame.setVisible(true);
}
}

contoh frame perpus

package GUI;


import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

public class FramePerpus extends JFrame implements ActionListener {

JMenu File, Edit, View, Help;//membuat atribut Jmenu berupa file,edit, view, help
JMenuBar bar;//membuat atribut JMenuBar berupa bar
JMenuItem itemNew, itemOpen, itemSave, itemSaveAs, itemQuit;//membuat atribut JMenuItem berupa itemNew, itemOpen,itemSAve dst


public FramePerpus() {
this.setTitle("Perpustakaan Harapan Laris");
setLocation(100, 200); //titik mulai pixel daru GUI
setSize(250, 250);// ukuran kotak yg keluar
setDefaultCloseOperation(EXIT_ON_CLOSE);// menghentingkan jalanya program ketika gui di close




File = new JMenu("File"); //memberi nama menu file pada bar
Edit = new JMenu("Edit"); //memberi nama menu edit pada bar
View = new JMenu("View"); //memberi nama menu view pada bar
Help = new JMenu("Help"); // memberi nama menu help pada bar

bar = new JMenuBar();
this.setJMenuBar(bar); //untuk mengeset menubar
bar.add(File);//menambhakan menu file ke dalam menu bar
bar.add(Edit);// menambahkan menu edit ke dalam menu bar
bar.add(View);// menambahkan menu view ke dalam menu abr
bar.add(Help);// menambahkan menu help ke dalam menu bar

itemNew = new JMenuItem("New"); // mnegeset nama menu item
File.add(itemNew); //memasukkan menu item new kedalam menu
itemOpen = new JMenuItem("Open");
File.add(itemOpen); // memasukan menu item open kdelam menu
itemSave = new JMenuItem("Save");
File.add(itemSave); // memasukan menu item kedalam save
itemSaveAs = new JMenuItem("Save As");
File.add(itemSaveAs);// memasukan menu item save as kedalm menu
File.addSeparator(); // memberi separator
itemQuit = new JMenuItem("Quit");
File.add(itemQuit);// memasukna menu item quit kedalm menu

itemNew.addActionListener(this); //menunjukkan bahwa jika itemNew diklik maka akan melakukan langkah selanjutnya
}

@Override
public void actionPerformed(ActionEvent e) { //merupakan method ActionPerformed dari kelas ActionListener dengan parameter e dengan type data ActionEvent
if (e.getSource() == itemNew) { //jika pengguna mengeklik ItemNew
PinjamDialog dialog = new PinjamDialog(this); //maka akan memanggil dan menjalankan kelas PinjamDialog
dialog.setVisible(true);
} else {
if (e.getSource() == itemQuit) { //jika pengguna menekan pada itemQuit
System.exit(0); // maka akan keluar dari system
}
}
}


}