Minggu, 14 Oktober 2018

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;   
   }   
  }  

Tidak ada komentar:

Posting Komentar