Membuat Program Pelelangan

Kali ini saya membuat sebuah program pelelangan yang cukup sederhana. Bahasa pemrograman yang saya gunakan adalah Java, sedangkan Environtmentnya menggunakan BlueJ. Berikut adalah cara penggunaan beserta source code dari program saya.

Cara Penggunaan Aplikasi Lelang.
Membuat sebuah pelelangan
Pertama, buat sebuah pelelangan dengan klik kanan Class Auction lalu pilih new Auction(). Lalu Masukkan nama pelelangannya.
Menambah barang lelang
Selanjutnya, tambah setiap barang yang akan dilelangkan dengan cara gunakan method enterLot() pada Class Auction(). Setelah memasukkan setiap barang, kita bisa melihat list barang yang di lelangkan dengan menggunakan method showLotsArr(), dimana keluarannya menjadi seperti berikut ini.
List Barang Lelang
Lalu, masukkan orang-orang yang akan menjadi pelelang dengan menggunakan Class Person, beri identitas orang tersebut (contoh : person1, pelelang2,dsb) masukkan nama pelelang. Caranya seperti gambar berikut.
Input Pelelang
Setelah pelelang dimasukkan, setiap ada yang melelang suatu barang, maka di masukkan ke dalam program dengan menggunakan method MakeBid() dalam Class Auction(). Dimasukkan index barang yang akan dilelang, nama pelelang, dan harga lelangannya.
Melelang barang
Output setelah Melelang
Setelah melelang, akan dikeluarkan pemberitahuan siapa yang melelang, barang lelangan, dan nilai lelang nya. Jika pelelangan sudah selesai, maka pelalangan akan ditutup dengan method close() dalam Class Auction() yang akan mengeluarkan hasil lelangan terakhir.
Hasil lelangan
Source Code

Class Auction
  import java.util.ArrayList;   
  /**   
  * Sistem Perlelangan    
  * @author Ahmad Yahya Abdul Aziz   
  * @version 20181007   
  * 05111740000128   
  */   
  public class Auction   
  {   
   private ArrayList<Lot> lotsArr;  
   private int LotIndex;   
   public Auction()  
   {   
    lotsArr = new ArrayList<Lot>();  
    LotIndex = 1;  
   }  
   /**  
   * Method untuk memasukkan barang lelangan baru  
   * Memasukkan nama barang ke index - i  
   * lotName = Nama Barang  
   * LotIndex = index ke-i barang  
   */  
   public void enterLot(String lotName)   
   {   
    lotsArr.add(new Lot(LotIndex, lotName));   
    LotIndex++;   
   }   
   /**  
   * Method untuk menunjukkan barang lelangan yang ada  
   * Output nama barang lelangan  
   */  
   public void showlotsArr()   
   {   
    for(Lot lot : lotsArr) {   
     System.out.println(lot.detail());   
    }   
   }   
   /**   
   * Method untuk melakukan bid/tawaran.   
   * Jika berhasil melakukan bid akan muncul Success Message.   
   * CurrentLotIndex = id lot yang akan di Bid.   
   * bidder = orang yang akan menawar.   
   * value = harga tawaran.   
   */   
   public void MakeBid(int CurrentLotIndex, Person bidder, long value)   
   {   
    Lot selectedLot = getLot(CurrentLotIndex);   
    if(selectedLot != null) {   
     boolean check = selectedLot.bidFor(new Bid(bidder, value));   
     if(check) {  
      System.out.println("Bid for Lot number " +   
           CurrentLotIndex + " Success, Bidden by " +bidder.getName()+ " with price " + "Rp "+value);   
     }   
     else {   
      Bid highestBid = selectedLot.getHighestBid();   
      System.out.println("Lot number :\t" + CurrentLotIndex +   
           "\nwith the highest Bid:\t" +   
           highestBid.getBid());   
     }   
    }   
   }   
   /**   
   * Method untuk mencari id lot  
   * Return id lot jika ada, jika tidak return null   
   * CurrentLotIndex = id lot yang perlu di return   
   */   
   public Lot getLot(int CurrentLotIndex)   
   {   
    if((CurrentLotIndex > 0) && (CurrentLotIndex < LotIndex)) {  
     Lot selectedLot = lotsArr.get(CurrentLotIndex - 1);   
     if(selectedLot.getId() != CurrentLotIndex) {   
      System.out.println("Internal error : Lot number " +   
           selectedLot.getId() +   
           " has been returned, Not a Lot number " +   
           CurrentLotIndex);   
      selectedLot = null;   
     }   
     return selectedLot;   
    }   
    else {  
     System.out.println("Lot number : " + CurrentLotIndex +   
          " doesn't exist.");   
     return null;   
    }   
   }   
   public void close()    
   {    
   System.out.println("Auction has ended.");    
   for(Lot lot : lotsArr)    
   {    
    System.out.println(lot.getId() + ": " +lot.getLotName());    
    Bid bid = lot.getHighestBid();    
    if (bid==null)    
    {    
    System.out.println("There is no bid for this Lot");    
    }    
    else    
    {    
    System.out.println("This Lot has been sold to " +    
    bid.getBidder().getName() + " with price :\t"    
    + bid.getBid());    
    }    
   }    
   }    
  }   

Class Lot (Barang Lelang)
  /**   
  * Model Lelangan    
  * @author Ahmad Yahya Abdul Aziz  
  * @version 20181007  
  * 05111740000128   
  */   
  public class Lot   
  {   
   private final int Id;   
   private String lotname;   
   private Bid highestBid;   
   public Lot(int number, String lotname)   
   {  
    this.Id = number;   
    this.lotname = lotname;   
   }   
   public boolean bidFor(Bid bid)   
   {   
    if((highestBid == null) ||   
      (bid.getBid() > highestBid.getBid())) {   
     highestBid = bid;   
     return true;   
    }   
    else {   
     return false;   
    }   
   }   
   public String detail()   
   {  
    String details = Id + ": " + lotname;   
    if(highestBid != null) {   
     details += " Bid with price " +    
        highestBid.getBid();   
    }   
    else {   
     details += " (no bid yet)";   
    }   
    return details;   
   }   
   public int getId()   
   {  
    return Id;   
   }   
   public String getLotName()   
   {  
    return lotname;   
   }   
   public Bid getHighestBid()   
   {  
    return highestBid;   
   }   
  }   

Class Person (Nama Pelelang)
  /**   
  * Model Pelelang  
  * @author Ahmad Yahya Abdul Aziz  
  * @version 20181007   
  * 05111740000128   
  */   
  public class Person   
  {   
   private final String name;  
   public Person(String newName)   
   {   
    this.name = newName;   
   }   
   public String getName()   
   {   
    return name;   
   }   
  }   

Class Bid (Melelang)
  /**   
  * Model Bid    
  * @author Ahmad Yahya Abdul Aziz  
  * @version 20181007   
  * 05111740000128   
  */   
  public class Bid   
  {   
   private final Person bidder;  
   private final long value;  
   public Bid(Person bidder, long value)   
   {  
    this.bidder = bidder;   
    this.value = value;   
   }   
   public Person getBidder()   
   {  
    return bidder;   
   }   
   public long getBid()   
   {  
    return value;   
   }   
  }   

Nama : Ahmad Yahya Abdul Aziz
NRP : 05111740000128
Kelas : PBO-A

Comments

Popular posts from this blog

Visualisasi Java - Membuat Rumah

Program Mesin Penjual Tiket

Notion