Skip to main content

Tugas PBO-6 Sistem Perlelangan


Nama: Bobbi Aditya
NRP : 05111740000099
Kelas: PBO-A

Pada tugas kali ini, saya akan membuat sistem perlelangan. Pada sistem yang saya buat, kita harus membuat sebuah object auction, kemudian menambahkan item apa yang akan dilelangkan. Setelah itu kita menambahkan person/orang yang ingin melakukan bid(penawaran) terhadap  item yang dilelangkan. Setelah orang tersebut terdaftar dalam sistem perlelangan, orang tersebut dapat melakukan bid terhadap item yang dilelangkan.
Berikut gambar dari BlueJ
Adapun Source code untuk masing masing object yang saya buat:
1. Auction
 import java.util.ArrayList;  
 /**  
  * Auction Model   
  * @author Bobbi Aditya  
  * @version 1.0  
  * 05111740000099  
  */  
 public class Auction  
 {  
   private ArrayList<Lot> lots;//list barang dalam suatu auction  
   private int LotNumber;  
   public Auction()//Method membuat Auction baru  
   {  
     lots = new ArrayList<Lot>();//list barang   
     LotNumber = 1;//nomor barang awal adalah 1  
   }  
   public void enterLot(String description)  
   {//Method untuk menambahkan barang baru dalam auction  
     lots.add(new Lot(LotNumber, description));  
     LotNumber++;  
   }  
   public void showLots()  
   {//Method menampilkan seluruh barang yang dilelang  
     for(Lot lot : lots) {  
       System.out.println(lot.detail());  
     }  
   }  
   /**  
    * Method untuk melakukan bid/tawaran.  
    * Jika berhasil melakukan bid akan muncul Success Message.  
    * CurrentlotNumber = id lot yang akan di Bid.  
    * bidder = orang yang akan menawar.  
    * value = harga tawaran.  
    */  
   public void MakeBid(int CurrentlotNumber, Person bidder, long value)  
   {  
     Lot selectedLot = getLot(CurrentlotNumber);  
     if(selectedLot != null) {  
       boolean check = selectedLot.bidFor(new Bid(bidder, value));  
       if(check) {//check dengan bid sebelumnya, apakah lebih besar atau tidak  
         System.out.println("Bid untuk lot nomor " +  
                   CurrentlotNumber + " berhasil dilakukan" + " Bid dilakukan oleh " +bidder.getName()+ "dengan harga " +value+ "$");  
       }  
       else {//apabila bid sebelumnya lebih besar, maka bid ini akan gagal  
         Bid highestBid = selectedLot.getHighestBid();  
         System.out.println("Lot nomor : " + CurrentlotNumber +  
                   " dengan bid tertinggi: " +  
                   highestBid.getBid());  
       }  
     }  
   }  
   /**  
    * Return id lot jika ada, jika tidak return null  
    * CurrentlotNumber = id lot yang perlu di return  
    */  
   public Lot getLot(int CurrentlotNumber)  
   {  
     if((CurrentlotNumber >= 1) && (CurrentlotNumber < LotNumber)) {//cek apabila lot number ada atau tidak  
       Lot selectedLot = lots.get(CurrentlotNumber - 1);  
       if(selectedLot.getId() != CurrentlotNumber) {  
         System.out.println("Internal error : Lot nomor " +  
                   selectedLot.getId() +  
                   "telah dikembalikan, bukan lot nomor " +  
                   CurrentlotNumber);  
         selectedLot = null;  
       }  
       return selectedLot;  
     }  
     else {//apabila tidak ada print tidak ada  
       System.out.println("Lot nomor : " + CurrentlotNumber +  
                 " tidak ada.");  
       return null;  
     }  
   }  
    public void close()    
   {    
    System.out.println("pelelangan berakhir.");    
    for(Lot lot : lots)    
    {    
     System.out.println(lot.getId() + ": " +lot.getDescription());    
     Bid bid = lot.getHighestBid();    
     if (bid==null)    
     {    
      System.out.println("Tidak ada bid untuk lot ini");    
     }    
     else    
     {    
      System.out.println("Item ini terjual kepada" +    
      bid.getBidder().getName() + " dengan harga : "    
      + bid.getBid());    
     }    
    }    
   }    
 }  
2. Person
 /**  
  * Person Model   
  * @author Bobbi Aditya  
  * @version 1.0  
  * 05111740000099  
  */  
 public class Person  
 {  
   private final String name;//variabel string untuk menyimpan nama orang   
   public Person(String newName)  
   {//membuat nama orang baru  
     this.name = newName;  
   }  
   public String getName()  
   {//Method untuk return nama orang yang baru saja dibuat  
     return name;  
   }  
 }  
3.Bid
 /**  
  * Bid Model   
  * @author Bobbi Aditya  
  * @version 1.0  
  * 05111740000099  
  */  
 public class Bid  
 {  
   private final Person bidder;//orang yang akan melakukan tawaran  
   private final long value;//untuk menyimpan harga tawaran  
   public Bid(Person bidder, long value)  
   {//Method untuk membuat penawar baru dengan nama dan jumlah tawaran nya  
     this.bidder = bidder;  
     this.value = value;  
   }  
   public Person getBidder()  
   {//untuk return nama penawar  
     return bidder;  
   }  
   public long getBid()  
   {//untuk return harga tawaran nya  
     return value;  
   }  
 }  
4. Lot
 /**  
  * Lot Model   
  * @author Bobbi Aditya  
  * @version 1.0  
  * 05111740000099  
  */  
 public class Lot//method untuk membuat Lot(sebuah/ sekumpulan item di sebuah auction)  
 {  
   private final int Id;//id barang(unique)  
   private String description;//deskripsi barang  
   private Bid highestBid;//tawaran tertinggi untuk barang tersebut  
   public Lot(int number, String description)  
   {//buat lot baru dengan id dan deskripsi  
     this.Id = number;  
     this.description = description;  
   }  
   //parameter nya merupakan bid untuk cek harga bid sebelumnya  
   public boolean bidFor(Bid bid)  
   {//Method untuk mengecek apakah tawaran saat ini lebih besar dari tawaran tertinggi  
     if((highestBid == null) ||  
         (bid.getBid() > highestBid.getBid())) {  
       highestBid = bid;//jika ya maka tawaran ini adalah tawaran tertinggi yang baru  
       return true;  
     }  
     else {  
       return false;  
     }  
   }  
   public String detail()  
   {//method untuk return detail lot(id dan tawaran tertinggi)  
     String details = Id + ": " + description;  
     if(highestBid != null) {  
       details += "  Bid dengan harga " +   
             highestBid.getBid();  
     }  
     else {  
       details += "  (belum ada bid)";  
     }  
     return details;  
   }  
   public int getId()  
   {//Method untuk return id lot  
     return Id;  
   }  
   public String getDescription()  
   {//Method untuk return deskripsi dari lot   
     return description;  
   }  
   public Bid getHighestBid()  
   {//Method untuk return tawaran tertinggi dari lot   
     return highestBid;  
   }  
 }  

Hasil dari Program saya bisa dilihat di screenshot berikut ini:
Pertama saya menambahkan item yang ingin dilelangkan
Kedua saya mengecek apakah item tersebut sudah terdaftar
Ketiga saya menambahkan orang yang ingin membeli item tersebut
 Keempat saya melakukan bid terhadap item yang dijual


 Yang terakhir, saya menutup perlelangan tersebut, dan hasilnya adalah

Comments

Popular posts from this blog

MPPL 9 - Manajemen Biaya

Kelas : MPPL C Jeremy Vijay - 05111740000062 Raja Permata Boy - 05111740000070 Bobbi Aditya - 05111740000099 Samuel Marcellinus - 05111740000134 Bastian Farandy - 05111740000190 Link Spreadsheet : SpreadSheet

MPPL - Pengalaman proyek

Nama : Bobbi Aditya Kelas : MPPL-C NRP : 05111740000099 Berikut ini adalah proyek yang saya ketahui Nama Proyek :   Pembangunan Aplikasi MSO (Maintenance System Online) Berbasis Web Deskripsi : Aplikasi ini berguna untuk pemantauan alat-alat yang ada pada PT. Semen Indonesia - Gresik apabila terjadi kerusakan yang harus segera dilaporkan, atau terdapat jadwal pemeliharaan rutin. Lokasi : PT. Semen Indonesia (Persero) Tbk. - Gresik Jl. Veteran, Gresik Jawa Timur, 61122 Waktu Proyek: 02 - 31 Januari 2019 Tim yang terlibat: Almas Aqmarina 05111640000171 Daniel Kurniawan 0511164000081 Produk yang dihasilkan: Sebuah aplikasi yang berada di dalam server Semen Indonesia yang berguna untuk melakukan pemantuan terhadap alat-alat yang ada pada PT. Semen Indonesia. Untuk addressnya tidak bisa diakses dari luar jaringan PT. Semen Indonesia. Fitur: • Tabel Laporan Harian • Pengelolaan Laporan Harian (tambah, ubah, hapus) • Unduh dala