Kamis, 04 November 2010

Tugas Program Perpustakaan Sederhana dengan Java

Tugas Mata Kuliah : OOP
Dosen : Romi Satria Wahono, M.Eng

Tugas Membuat Program Perpustakaan Sederhana
1.Program perpustakaan sederhana berbasis text (bukan GUI) dengan menggunakan input data dari keyboard
2.Perpustakaan ini memiliki 10 koleksi buku. 10 buku tadi terdiri dari 3 kamus, 3 majalah dan 4 textbook (silakan ditentukan sendiri judulnya)
3.Peraturan peminjaman buku adalah:
oBiaya peminjaman untuk 1 minggu adalah: kamus Rp 3000, majalah Rp 1000, textbook 2000
oDenda terlambat pengembalian adalah Rp 500 perhari
4.Program perpustakaan sederhana ini memiliki fitur untuk menampilkan buku dan fitur sirkulasi peminjaman buku termasuk dendanya dengan berbasis text
5.Upload source code program berserta penjelasan lengkap tentang program

Untuk memulai pembuatan program, kita harus mempersiapkan 3 file, yaitu:
1. InputKeyboard.java
2. Perpus.java
3. PerpusAksi.java


Source Code
A. InputKeyboard.java
import java.io.*;
public class InputKeyboard{
public static String inputString(){
int karakter; String str =""; boolean selesai = false;
while(!selesai){
try{
karakter = System.in.read();
if(karakter < karakter ="=" selesai =" true;
else if ((char) karakter != '\r') str = str + (char) karakter;
}catch(java.io.IOException e){
System.err.println("Ada kesalahan");
selesai = true;
}
}
return str;
}
}
B. Perpus.java
public class Perpus {
//deklarasi variabel umum
String dataString;
int a=0;
int dataBulat ;
//deklarasi variabel transaksi
String nomorAnggota,namaAnggota, tanggalPinjam;
int bpinjam=0,bayar=0,denda=0,jml=0,tbayar=0, lama=0,tarif=0;
public void menu() {
int menu = 0;
//membuat method menu utama
System.out.println ("\n");
System.out.println (" ********************************");
System.out.println (" * Menu Utama: *");
System.out.println (" * -------------------------*");
System.out.println (" * 1. Daftar Buku *");
System.out.println (" * 2. Peminjaman *");
System.out.println (" * 3. Pengembalian *");
System.out.println (" * 4. Exit *");
System.out.println (" * *");
System.out.println (" ********************************");
System.out.println ("\n");
System.out.print("\n Masukkan menu pilihan anda: ");
dataString=InputKeyboard.inputString();
menu = Integer.valueOf(dataString).intValue();
switch(menu) {
case 1 :
daftarBuku();// memanggil method Daftar Buku
break;
case 2 :
peminjaman(); //memanggil method Peminjaman
break;
case 3 :
pengembalian(); //memanggil method Pengembalian
break;
case 4 :
System.out.println("Terima kasih");
System.exit(0);
break;
default :
System.out.print("Maaf, pilihan yang Anda masukkan salah!");
pilihMenu();//memanggil method pilihMenu
}
}
public void pilihMenu(){
int pilihMenu = 0;
System.out.print("**)1. Kembali ke Menu Utama 2.Keluar ");
System.out.print("\n **)Masukkan menu pilihan anda: ");
dataString=InputKeyboard.inputString();
pilihMenu = Integer.valueOf(dataString).intValue();
switch(pilihMenu) {
case 1 :
menu();
break;
case 2 :
System.out.println("Terima kasih");
System.exit(0);
break;
default :
System.out.print("Maaf, pilihan yang Anda masukkan salah!");
pilihMenu();
}
}
public void daftarBuku(){
System.out.println ("\n");
System.out.println (" DAFTAR BUKU ");
System.out.println ("------------------------------------------------------------------");
System.out.println ("|No.| Jenis | Judul | Penerbit | Tahun |");
System.out.println ("|--------------------------------------------------------------------------|");
System.out.println ("| 1. |Kamus |Kamus Ingris-Indonesia |Balai Pustaka | 2009 |");
System.out.println ("| 2 .|Kamus |Kumpulan Istilah Komputer |Media Komputindo| 2006 |");
System.out.println ("| 3. |Kamus |Kamus Basa Jawi |Semar Mesem Pres | 2009 |");
System.out.println ("| 4. |Majalah |Komputex |Elex Media | 2009 |");
System.out.println ("| 5. |Majalah |Pria Dewasa |Tarsindo | 2009 |");
System.out.println ("| 6. |Majalah |Cempaka |Suara Merdeka Pr | 2009 |");
System.out.println ("| 7. |Textbook|Panduan Java |Andi Offset | 2005 |");
System.out.println ("| 8. |Textbook|Pemrograman Delphi |Setia Kawan Pres | 2006 |");
System.out.println ("| 9. |Textbook|Text Processing |Pramadya Press | 2008 |");
System.out.println ("| 10.|Textbook|Java Fundamental |Abadi Offset | 2009 |");
System.out.println ("----------------------------------------------------------------------------");
pilihMenu();
}
public void peminjaman(){
System.out.println("");
System.out.println("----------------------------------------");
System.out.println("| PEMINJAMAN BUKU |");
System.out.println("|--------------------------------------- |");
System.out.println("| Tarif Peminjaman per minggu: |");
System.out.println("| 1. Jenis Buku Majalah = Rp.1000,- |");
System.out.println("| 2. Jenis Buku Textbook = Rp.2000,-|");
System.out.println("| 3. Jenis Buku Kamus = Rp.3000,- |");
System.out.println("----------------------------------------");
System.out.print("1. Tanggal Pinjam = ");
tanggalPinjam = InputKeyboard.inputString();
System.out.print("2. Nomor Anggota = ");
nomorAnggota = InputKeyboard.inputString();
System.out.print("3. Nama Anggota = ");
namaAnggota = InputKeyboard.inputString();
System.out.print("4. Jenis buku = ");
String dataStringJenisBuku = InputKeyboard.inputString();
System.out.print("5. Jumlah Buku = ");
String dataStringJumlahBuku = InputKeyboard.inputString();
int jumlahBuku = Integer.valueOf(dataStringJumlahBuku).intValue();
int jenisBuku = Integer.valueOf(dataStringJenisBuku).intValue();
if ( jenisBuku == 1){
tarif = 1000;
}
if ( jenisBuku == 2){
tarif = 2000;
}
if ( jenisBuku == 3){
tarif = 3000;
}
System.out.println("----------------------------------------");
System.out.println("Biaya Peminjaman = "+ (jumlahBuku * tarif) );
System.out.println("----------------------------------------");
pilihMenu();
}
public void pengembalian(){
System.out.println("");
System.out.println ("--------------------------------------------");
System.out.println ("| PENGEMBALIAN BUKU |");
System.out.println ("| (Denda keterlambatan Rp. 500 per hari) |");
System.out.println ("--------------------------------------------");
System.out.print("1. Tanggal Kembali = ");
tanggalPinjam = InputKeyboard.inputString();
System.out.print("2. Nomor Anggota = ");
nomorAnggota = InputKeyboard.inputString();
System.out.print("3. Nama Anggota = ");
namaAnggota = InputKeyboard.inputString();
System.out.print("4. Jumlah Buku = ");
String dataStringJumlahBuku = InputKeyboard.inputString();
System.out.print("5. Jumlah Hari = ");
String dataStringJumlahHari = InputKeyboard.inputString();
int jumlahBuku = Integer.valueOf(dataStringJumlahBuku).intValue();
int jumlahHari = Integer.valueOf(dataStringJumlahHari).intValue();
if ( jumlahHari > 7){
denda = jumlahHari - 7;
}
System.out.println ("--------------------------------------------");
int totalDenda = denda * 500 * jumlahBuku;
System.out.println("Total Denda = Rp "+ totalDenda );
System.out.println("");
pilihMenu();
}
}


C. PerpusAksi.java
public class PerpusAksi {
public static void main(String[] args) {
Perpus menuUtama= new Perpus(); //membuat objek menu utama
menuUtama.menu(); //memanggil method menu() pada class Perpus
}
}

TAMPILAN PROGRAM
Sesudah InputKeyboard.java, Perpus.java dan PerpusAksi di compile selanjutnya Perpus Aksi.java di run maka tampilan mukanya adalah:


Sesudah memasukkan menu pilihan (1) untuk menu Daftar Buku maka akan tampil seperti pada Gambar 2. Dalam tampilan tampak muncul dua menu pilihan (1) Kembali ke Menu Utama dan (2) Keluar. Ini adalah hasil dari method pilihMenu. Jika pustakawan memilih menu 1 maka akan kembali ke Menu Utama tetapi kalau memilih menu 2 maka keluar dan mengakhiri program.


Menu Peminjaman
Menu ini jika dipilih akan tampak seperti Gambar 3, dan didalam menu ini pustakawan dapat memasukkan data Tanggal Pinjam, Nomor Anggota, Nama Anggota, Jenis Buku, Jumlah Buku dan Biaya Peminjaman.


Menu Pengembalian
Menu pengembalian akan menginput maupun menampilkan data tentang Tanggal Kembali, Nomor Anggota, Nama Anggota, Jumlah Buku dan Jumlah Hari. Jika jumlah hari melebihi 7 hari maka akan dihitung denda keterlambatan sebesar Rp 500,- per hari. Menu Pengembalian seperti tampak pada Gambar 4.


Menu Keluar (Exit)
Menu ini jika dipilih maka akan keluar dari Program Perpustakaan Sederhana dan akan kembali ke Windows. Gambar 5 menunjukkan menu Exit.


alternatif lain :
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.text.ParseException;
class PerpusSederhana{
//atribut Terlambat sebagai class variable karena digunakan oleh method void hitungTerlambat dan void main
static long Terlambat;
DateFormat df = new SimpleDateFormat(“dd/MM/yyyy”);
static String dataString=”",Kategori=”",Judul=”";
static int nBiaya =3,BiayaPinjam=0,lagi=0,nJudul;
static int nMenu=0;
//method HitungTerlambat
void HitungTerlambat (String TglAwal, String TglAkhir){
DateFormat df = new SimpleDateFormat(“dd/MM/yyyy”);
try{
//Konversi dari string ke tanggal
Date Tgl1 = df.parse(TglAwal);
Date Tgl2 = df.parse(TglAkhir);
//Tgl di konversi ke milidetik
long Hari1 = Tgl1.getTime();
long Hari2 = Tgl2.getTime();
long diff = Hari2 – Hari1;
Terlambat = diff / (24 * 60 * 60 * 1000);
//24 = Jumlah Jam dalam 1 hari
//60 pertama = jumlah menit dalam satu jam
//60 kedua = jumlah detik dalam satu menit
//1000 = jumlah milidetik dalam satu detik;
} catch (ParseException e)
{
e.printStackTrace();
}
}
void DataBuku(){
System.out.println(“| DAFTAR BUKU |”);
System.out.println(“==========================================”);
System.out.println(“1. Membangun Jaringan LAN”);
System.out.println(“2. Belajar OOP dengan Java”);
System.out.println(“3. Pengantar Logika Algoritma”);
System.out.println(“4. Membangun E-Learning Dengan Moodle”);
}
void DataKamus(){
System.out.println(“| DAFTAR KAMUS |”);
System.out.println(“==========================================”);
System.out.println(“1. English for Computer”);
System.out.println(“2. English for Employe”);
System.out.println(“3. Belajar Bahasa Mandarin”);
}
void DataMajalah(){
System.out.println(“| DAFTAR MAJALAH |”);
System.out.println(“==========================================”);
System.out.println(“1. Pesona Muda Edisi Pebruari 2009″);
System.out.println(“2. Ilmu Komputer edisi Januari 2009″);
System.out.println(“3. Bisnis Komputer edisi Januari 2008″);
}
void Sirkulasi(){
while(lagi==0){
System.out.print(“==========================================\n”);
System.out.println(“ PERPUSTAKAAN SEDERHANA”);
System.out.print(“==========================================\n”);
System.out.println(“Pilih Kategori : \n”);
System.out.println(“ 1. Buku Teks”);
System.out.println(“ 2. Kamus”);
System.out.println(“ 3. Majalah\n”);
System.out.print(“Kategori yang dipilih [1-3]: “);
dataString = InputKeyboard.inputString();
System.out.println(“”);
int pilih = Integer.valueOf(dataString).intValue();
switch(pilih)
{
case 1 :
Kategori=”Buku”;
BiayaPinjam=3000;
PerpusSederhana CetakDataBuku = new PerpusSederhana();
CetakDataBuku.DataBuku();
System.out.print(“Data Anda akan Pilih ? : “);
dataString = InputKeyboard.inputString();
nJudul = Integer.valueOf(dataString).intValue();
if (nJudul==1){
Judul=”Membangun Jaringan LAN”;}
else if (nJudul==2){
Judul=”Belajar OOP dengan Java”;}
else if (nJudul==3){
Judul=”Pengantar Logika Algoritma”;}
else {
Judul=”Membangun E-Learning Dengan Moodle”;}
break;
case 2 :
Kategori=”Kamus”;
BiayaPinjam=2000;
PerpusSederhana CetakDataKamus = new PerpusSederhana();
CetakDataKamus.DataKamus();
System.out.print(“Data Anda akan Pilih ? : “);
dataString = InputKeyboard.inputString();
nJudul = Integer.valueOf(dataString).intValue();
if (nJudul==1){
Judul=”English For Computer”;}
else if (nJudul==2){
Judul=”English For Employe”;}
else {
Judul=”Belajar Bahasa Mandarin”;}
break;
case 3 :
Kategori=”Majalah”;
BiayaPinjam=1000;
PerpusSederhana CetakDataMajalah = new PerpusSederhana();
CetakDataMajalah.DataMajalah();
System.out.print(“Data Anda akan Pilih ? : “);
dataString = InputKeyboard.inputString();
nJudul = Integer.valueOf(dataString).intValue();
if (nJudul==1){
Judul=”Pesona Muda Edisi Pebruari 2009″;}
else if (nJudul==2){
Judul=”Ilmu Komputer edisi Januari 2009″;}
else {
Judul=”Bisnis Komputer edisi Januari 2008″;}
break;
default:
System.out.println(“Silahkan Pilih Kategori Koleksi Buku, Kamus atau Majalah \n”);
break;
}
System.out.print (“Nama Anggota : “);
dataString = InputKeyboard.inputString();
String namaPeminjam = dataString;
System.out.print (“Tanggal Pinjam (dd/mm/yyyy) : “);
dataString = InputKeyboard.inputString();
String tglPinjam = dataString;
long jHari =0;
try {
Date dateTglPinjam = df.parse(tglPinjam);
jHari = dateTglPinjam.getTime() + 604800000;
//604800000 menyatakan milidetik dalam 7 hari Rumus = 24*60*60*1000*7 (24 Jam,60 Menit,60 Detik,7 Hari);
} catch (ParseException e)
{
e.printStackTrace();
}
Calendar BatasTglKembali = Calendar.getInstance();
BatasTglKembali.setTimeInMillis(jHari);//Mengatur BatasTglKembali kedalam milidetik
String stringBatasTglPinjam = df.format(BatasTglKembali.getTime()); //konversi milidetik kedalam string
System.out.println(“Batas waktu pinjam Anda : ” + stringBatasTglPinjam);
System.out.print (“Tanggal Kembali (dd/mm/yyyy) : “);
dataString = InputKeyboard.inputString();
String tglKembali = dataString;
PerpusSederhana jumlahHariTerlambat = new PerpusSederhana();
jumlahHariTerlambat.HitungTerlambat(stringBatasTglPinjam,tglKembali);
long lamaPinjam=Terlambat + 7;
Terlambat = 0;
int biayaDendaPerHari=500;
long denda=0;
long biayaHarusDibayar=BiayaPinjam;
if (lamaPinjam > 7) {
Terlambat=lamaPinjam – 7;
denda = biayaDendaPerHari * Terlambat;
biayaHarusDibayar =denda + BiayaPinjam;}
System.out.println(“”);
System.out.println(“=================PERPUSTAKAAN SEDERHANA=================”);
System.out.println(“=================BUKTI PEMINJAMAN BUKU==================\n”);
System.out.println(“Nama Anggota: ” + namaPeminjam);
if (pilih==1){
System.out.println(“Judul ” + Kategori +” Yang dipinjam : ” + Judul);}
else if (pilih==2){
System.out.println(“Judul ” + Kategori +” Yang dipinjam : ” + Judul);}
else{
System.out.println(“Judul ” + Kategori +” Yang dipinjam : ” + Judul);}
//System.out.println(Judul);
//Membuat Hasil Print out atau laporan peminjaman
System.out.println(“Keterangan:\n”);
System.out.println(“ Lama Pinjam : ” +” ” +lamaPinjam + ” hari”+” “+” Terlambat :”+” “+ Terlambat + ” hari”);// Mencetak Lama pinjam dan keterlambatan
System.out.println(“ Biaya Pinjam : Rp. ” + BiayaPinjam + “/minggu”+” “+”Denda/Hari: Rp. ” + biayaDendaPerHari );// menampilan biaya pinjaman
System.out.println(“ Biaya Denda : Rp. ” + denda);// Menampilkan biaya denda
System.out.println(“”);
System.out.println(“Biaya Yang Harus Dibayar:”);
System.out.println(“ “+” Total Biaya: Rp. ” + biayaHarusDibayar + “\n”);
System.out.println(“=======================================================”);
System.out.println(“”);
System.out.println(“Terima Kasih…….\n”);
System.out.print(“Coba Lagi ? [0=Ya] = “);
dataString=InputKeyboard.inputString();
lagi=Integer.valueOf(dataString).intValue();
System.out.println(“”);
System.out.println(“Terima Kasih…….”);
}
}

3 komentar:

  1. untuk desainnya sendri seperti apa ya?

    BalasHapus
  2. Iyaa,, Mas Desiainnya sperti apa?,, sya coba loh programnya Mas,, ada satu error dan dya gak ktmu2 buat perbaiki errornya itu,, letaknya dii,,

    if(karakter < karakter ="=" selesai =" true;

    gimana yaahh??

    BalasHapus
    Balasan
    1. if dimana ada kurung buka, harus ada kurung tutup mas

      Hapus