Kelas Buku
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;
}
}
Kelas 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;
}
}
Kelas Dosen
package project;
public class Dosen extends Pengguna {
private String nip;
public String getNip() {
return nip;
}
public void setNip(String nip) {
this.nip = nip;
}
}
Kelas Koleksi
package project;
import java.util.Date;
import java.util.StringTokenizer;
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;
}
}
}
public void setTanggalPinjam(String tanggal) {
StringTokenizer test1 = new StringTokenizer(tanggal, "-");
Date test2 = new Date();
while (test1.hasMoreTokens()) {
// System.out.println(test1.nextToken());
test2.setDate(Integer.parseInt(test1.nextToken()));
test2.setMonth(Integer.parseInt(test1.nextToken()) - 1);
test2.setYear(Integer.parseInt(test1.nextToken()) - 1900);
}
this.setTanggalPinjam(test2);
}
}
Kelas 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;
}
}
Kelas 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;
}
}
Kelas Masyarakat
package project;
public class Masyarakat extends Pengguna {
private String noKtp;
public String getNoKtp() {
return noKtp;
}
public void setNoKtp(String noKtp) {
this.noKtp = noKtp;
}
}
Kelas Interface Peminjam
package project;
import java.util.Date;
interface Peminjam {
public int hitungDenda (Date tanggalPinjam) ;
public void tambahDaftarPinjaman(Koleksi koleksi, Date tanggalPinjam);
}
Kelas 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<Koleksi> daftarPinjaman = new ArrayList<Koleksi>();
/**
* 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");
}
}
}
}
Rabu, 16 November 2011
Langganan:
Posting Komentar (Atom)
0 komentar:
Posting Komentar