Minggu, 14 Oktober 2018

UTS PBO B
Automated Parking System

Pada kali ini, dibuat program sistem parkir otomatis dengan metode java. Sistem parkir otomatis mengandalkan beberapa objek, yakni tiket dispenser, operator (komputer scan dan manual check), tiket, gerbang, kamera. Di program sistem parkir otomatis ini, saya membuat 5 class, yakni,
1. Tiket
2. Dispenser
3. Gerbang
4. Operator (Komputer + kamera)
5. Simulasi


Fungsi dari class simulasi adalah menggambarkan bebearapa task otomatis dan manual yang harus dijalankan baik pengguna parkir, penjaga parkir, maupun mesin.

Berikut Contoh Simulasi:

Dari simulasi berikut, pengguna motor menekan tombol 1 untuk mencetak tiket dan mengenerate tiket dan mengambil gambar, lalu mesin secara otomatis membuka dan menutup gerbang, lalu ketika hendak keluar, penjaga parkir, mencek apakah karcis sesuai dengan data, gambar dari awal diambil tadi. Ketika benar maka penjaga mecetak bukti karcis, dan mesin otomatis membuka dan menutup gerbang.

Berikut Source Code nya:

1. Tiket

public class tiket
{
    private String kode;
    private int jam,menit;
    private int gambar;
    
    public tiket(String code,int j,int m,int g){
        kode = code;
        jam = j;
        menit = m;
        gambar = g;
    }
    
    public tiket(){
    }
    
    public String getkode(){
        return kode;
    }
    
    public int getwaktu(){
        return ((jam*60)+menit);
    }
    
    public int getgam(){
        return gambar;
    }
}


2.Dispenser

public class dispenser
{
    private tiket Tiket;
    public tiket buattiket(String kode,int j,int w,int g){
        Tiket = new tiket(kode,j,w,g);
        return Tiket;
    }
    
    public void cetak(tiket Tiket){
        System.out.println("===========================");
        System.out.println("Kode Anda: "+Tiket.getkode());
        System.out.println("Jam ambil: "+(Tiket.getwaktu()/60)+":"+(Tiket.getwaktu()%60));
        System.out.println("========Terimakasih========");
        System.out.println("===========================");
    }
}


3. Gerbang

public class gerbang
{
    private boolean state;
    public gerbang(){state=false;}
    
    public boolean open(){
        state = true;
        System.out.println("Gerbang telah dibuka");
        return state;
    }
    
    public boolean close(){
        state= false;
        System.out.println("Gerbang telah ditutup");
        return state;
    }
}


4. Operator

public class operator
{
    private int gambar;
    private tiket Tiket;
    private int waktu;
    private int harga;
    private String jam;
    
    public void parse(tiket T){
        Tiket = T;
        waktu = 720;
        harga = 2000;
    }
    
    public int ambil(int g){
        gambar = g;
        return gambar;
    }
    
    public boolean cek(int gambar){
        if(Tiket.getgam()!=gambar){
            System.out.println("Orang yang beda");
            return false;
        }
        else{
            System.out.println("Orang yang sama");
            System.out.println("Kode: "+Tiket.getkode());
            System.out.println("Jam Ambil: "+(Tiket.getwaktu()/60)+":"+(Tiket.getwaktu()%60));
            return true;
        }
    }
    
    public int hitung(){
        harga = harga + (harga * ((waktu - Tiket.getwaktu())/60));
        return harga;
    }
    
    public String waktu(){
        jam = (Tiket.getwaktu()/60)+":"+(Tiket.getwaktu()%60)+" - 12:00";
        return jam;
    }
    
    public void cetak(String plat){
        System.out.println("===========================");
        System.out.println("Kode Anda: "+Tiket.getkode());
        System.out.println("Plat Nomor: "+plat);
        System.out.println("Pukul: "+this.waktu());
        System.out.println("Harga: Rp"+this.hitung());
        System.out.println("========Terimakasih========");
        System.out.println("===========================");
    }
}


5. Simulasi

import java.util.Scanner;

public class simulasi
{
    public static void sim(){
        Scanner in = new Scanner(System.in);
        
        tiket tik = new tiket();
        gerbang gate = new gerbang();
        operator op = new operator();
        dispenser dp = new dispenser();
        String kode = "PK87A22I";
        String plat;
       
        int pilih;
        System.out.println("1. Ambil Tiket");
        System.out.println("2. Buka gerbang");
        System.out.println("3. Tutup gerbang");
        System.out.println("4. Cek karcis");
        System.out.println("5. Cetak Bukti\n");
        pilih = in.nextInt();
        while(true){
            switch(pilih){
                case 1:
                tik = dp.buattiket(kode,8,12,2);
                dp.cetak(tik);
                break;
                case 2:
                gate.open();
                break;
                case 3:
                gate.close();
                break;
                case 4:
                op.parse(tik);
                op.ambil(2);
                op.cek(2);
                break;
                case 5:
                in.nextLine();
                op.hitung();
                System.out.println("Masukkan Plat nomer");
                plat = in.nextLine();
                op.cetak(plat);
                break;
            }
            pilih = in.nextInt();
        }
    }
}


Tugas PBO Music Organizer dan Auction

Music Organizer
&
Auction Program

1. Music organizer
Untuk program pada music organizer saya menggunakan 3 class, yakni main, music, dan player
Berikut contoh output program


main :
import java.util.Scanner;
public class main{
    public static void main(){
        Music music = new Music();
        Scanner scan = new Scanner(System.in);
        int c;
        while(true){
            c = scan.nextInt();
            switch(c){
               case 1:
               scan.nextLine();
               String lagu = scan.nextLine();
               music.tambah(lagu);
               break;
               case 2:
               music.daftar();
               break;
               case 3:
               int nomor = scan.nextInt();
               music.mulai(nomor);
               break;
               case 4:
               nomor = scan.nextInt();
               music.stop(nomor);
               break;
               case 5:
               nomor = scan.nextInt();
               music.hapus(nomor);
               break;
            }
        }
    }
}

music:
import java.util.ArrayList;

public class Music {   
   
    private ArrayList<String> playlist;
    private Player play;
    private int now,state;

    public Music() { 
        playlist = new ArrayList<String>(); 
        play = new Player();
        now = -1;
        state = 0;
    }
   
    public int jumlah() { 
        return playlist.size(); 
    }
   
    public void daftar() { 
        if(playlist.size()>0) { 
            for(int i=0;i<playlist.size();i++){
                String filename = playlist.get(i); 
                System.out.println((i+1)+". "+filename); 
            }
        } 
        else System.out.println("Tidak ada");
    }
    
    public void hapus(int index) { 
        if(index-1 >= 0 && index-1 < playlist.size()) { 
            playlist.remove(index); 
        } 
    }
       
    public void tambah(String lagu) { 
        playlist.add(lagu); 
    }
    
    public void mulai(int index){
        now = index-1;
        if(playlist.size()>0){
            play.start(playlist.get(now));
            state=1;
        }
        else System.out.println("Belum ada lagu");
    }
    
    public void stop(int index){
        if(now == index-1 && state == 1){
            play.stop(playlist.get(now));
            state=0;
        }
        else System.out.println("Lagu belum berputar");
    }
}


player:

public class Player
{
    private int index;
    public void start(String lagu){
        System.out.println("Playing: "+lagu);
    }
    public void stop(String lagu){
        System.out.println(lagu+" has stopped ");
    }
}



2. Auction Program
Pada program auction ini saya menggunakan 4 class, yakni, auction, person, bid, dan lot

auction:
 import java.util.ArrayList;   
  public class Auction   
  {    
   private ArrayList<Lot> barang; //daftar barang yang dilelang  
   private int nextBarang; //untuk pengkodean barang  
   public Auction() //inisiasi pelelangan baru  
   {   
    barang = new ArrayList<>();  
    nextBarang = 1;   
   }   
   public void masukkanBarang(String nama) //memasukkan barang ke daftar barang yang dilelang  
   {   
    barang.add(new Lot(nextBarang, nama));   
    nextBarang++;   
   }   
   public void tampilkanBarang() //menampilkan seluruh barang yang dilelang  
   {   
    for(Lot lot : barang) {   
     System.out.println(lot.toString());   
    }   
   }   
   public void buatPenawaran(int kode, Person penawar, long harga)   
   {   
    Lot selectedLot = getBarang(kode);   
    if(selectedLot != null) { //hanya bisa jika kode barang telah terdaftar  
     Bid bid = new Bid(penawar, harga);   
     boolean successful = selectedLot.bidFor(bid);   
     if(successful) {   
      System.out.println("Tawaran untuk nomor barang" +   
           kode + " telah sukses.");   
     }   
     else {   
      Bid maksTawaran = selectedLot.getTertinggi(); //hanya bisa menawar dengan harga yang lebih tinggi daripada penawar sebelumnya  
      System.out.println("Nomor barang: " + kode +   
           " sudah memiliki tawaran: " +   
           maksTawaran.getHarga());   
     }   
    }   
   }   
   public Lot getBarang(int kode)   
   {   
    if((kode >= 1) && (kode < nextBarang)) {   
     Lot selectedLot = barang.get(kode - 1);   
     if(selectedLot.getKode() != kode) {   
      System.out.println("Eror internal: nomor lot " +   
           selectedLot.getKode() +   
           " telah diganti " +   
           kode);   
      // Don't return an invalid lot.   
      selectedLot = null;   
     }   
     return selectedLot;   
    }   
    else {   
     System.out.println("Nomor barang: " + kode +   
          " tidak tersedia.");   
     return null;   
    }   
   }   
   public void hentikan()    
   {    
    System.out.println("Pelelangan telah dihentikan.");    
    for(Lot lot : barang)    
    {    
    System.out.println(lot.getKode() + ": " +lot.getNama());    
    Bid bid = lot.getTertinggi();    
    if (bid==null)    
    {    
     System.out.println("Tidak ada tawaran untuk barang ini");    
    }    
    else    
    {    
     System.out.println("Barang ini telah dijual kepada " +    
     bid.getNama().getNama() + " dengan harga :\t"    
     + bid.getHarga());    
    }    
   }    
   }    
  }

bid:
public class Bid   
  {   
   private final Person penawar;    
   private final long harga;   
   public Bid(Person penawar, long harga)   
   {   
    this.penawar = penawar;   
    this.harga = harga;   
   }   
   public Person getNama()   
   {   
    return penawar;   
   }   
   public long getHarga()   
   {   
    return harga;   
   }   
  }

person:
public class Person   
  {    
   private final String Nama;   
   public Person(String Nama)   
   {   
    this.Nama = Nama;   
   }   
   public String getNama()   
   {   
    return Nama;   
   }   
  }  

lot:
 public class Lot   
  {    
   private final int kodeBarang;    
   private String namaBarang;   
   private Bid maksTawaran;   
   public Lot(int kodeBarang, String namaBarang)   
   {   
    this.kodeBarang = kodeBarang;   
    this.namaBarang = namaBarang;   
    this.maksTawaran = null;   
   }   
   public boolean bidFor(Bid tawaran)   
   {   
    if(maksTawaran == null) {   
     maksTawaran = tawaran; //jika tidak ada tawaran sebelumnya  
     return true;   
    }   
    else if(tawaran.getHarga() > maksTawaran.getHarga()) {    
     maksTawaran = tawaran; //jika tawaran lebih tinggi daripada tawaran sebelumnya  
     return true;   
    }   
    else {    
     return false; //jika tawaran tidak lebih tinggi daripada tawaran sebelumnya  
    }   
   }   
   public String toString()   
   {   
    String details = kodeBarang + ": " + namaBarang;   
    if(maksTawaran != null) {   
     details += " Tawaran: " +    
        maksTawaran.getHarga();   
    }   
    else {   
     details += " (Tidak ada tawaran)";   
    }   
    return details;   
   }   
   public int getKode()   
   {   
    return kodeBarang;   
   }   
   public String getNama()   
   {   
    return namaBarang;   
   }   
   public Bid getTertinggi()   
   {   
    return maksTawaran;   
   }   
  }