Final Project Struktur Data 2021
Nama Kelompok :
Rafael Asi Kristanto Tambunan // 5025201168
Pendataan Perhitungan Gaji Karyawan Suatu Perusahaandengan Menggunakan Hash Table
Dengan berkembangnya teknologi, semakin banyak perusahaan
atau institusi bermunculan. Pada saat ini, sebuah perusahaan harus dapat
bekerja dengan cepat, tepat dan benar dalam persaingan yang ketat. Dengan
adanya final project ini dan implementasi sistem gaji diharapkan memberikan
solusi yang lebih efisien dalam perhitungan gaji karyawan dengan cepat. Dengan
prinsip-prinsip tersebut, diharapkan dapat memberikan kemudahan pada user dalam
menyampaikan permasalahanya serta memudahkan untuk identifikasi permasalahan
sehingga dapat mewujudkan efisiensi dan efektifitas pelayanan user.
Pada final project ini, diterapkan Array List dan Hash
Table. Dimana Array List ini digunakan untuk menyimpan nama-nama karyawan dan
Hash Table digunakan untuk menyimpan data-data dari karyawan yang telah
dimasukkan.
import java.util.*; | |
public class fp{ | |
public static int hashFunction(String nama){ //Untuk menentukan letak HashTable | |
int hash = 0; | |
for(int i=0; i<nama.length(); i++){ | |
hash = hash*10 + nama.charAt(i); | |
} | |
hash = hash % 499; | |
return hash; | |
} | |
public static void main(String[] args){ | |
Hashtable<Integer, Integer> gaji = new Hashtable<>(); //Hashtable untuk Gaji karyawan | |
Hashtable<Integer, Integer> waktu = new Hashtable<>();//Hashtable untuk Lama Kerja Karyawan | |
Hashtable<Integer, String> ID = new Hashtable<>();//Hashtable untuk NIK | |
Hashtable<Integer, String> golongan = new Hashtable<>();//Hashtable untuk Golongan | |
List<String> list = new ArrayList<>();//List untuk mentimpan nama | |
Scanner sc = new Scanner(System.in); | |
//Variabel-variabel yang diperlukan | |
int choice = -1; | |
String nama, nomor, gol; | |
int jumlah, upah, data, jam; | |
int total = 0; | |
System.out.println("================= PENDATAAN GAJI KARYAWAN ================="); | |
System.out.println("====================== PERUSAHAAN X =======================\n\n"); | |
System.out.println("Keterangan :"); | |
System.out.println("Golongan = A maka upah per jam 15000"); | |
System.out.println("Golongan = B maka upah per jam 17000"); | |
System.out.println("Golongan = C maka upah per jam 20000"); | |
System.out.println("Golongan = D maka upah per jam 22000"); | |
System.out.println("Nomor Induk Kerja (NIK) harus 10 angka\n"); | |
System.out.println(" Silahkan Memilih"); | |
System.out.println("1. Tambahkan Data Baru"); | |
System.out.println("2. Lihat Data Seseorang"); | |
System.out.println("3. Ganti Data Seseorang"); | |
System.out.println("4. Hapus Data Seseorang"); | |
System.out.println("5. Lihat Semua Data"); | |
System.out.println("6. Exit\n"); | |
while(choice != 6){ | |
System.out.print("Masukkan pilihan : "); | |
choice = sc.nextInt();//Input choice | |
System.out.print("\n"); | |
if (choice == 1){ | |
System.out.print("Masukkan banyak data : "); | |
data = sc.nextInt();//Masukkan banyak data yang akan dilooping | |
System.out.print("\n"); | |
for(int i = 0; i<data; i++){ | |
//Masukkan data-data yang diperlukan | |
System.out.print("Nama : "); | |
nama = sc.next(); | |
System.out.print("NIK : "); | |
nomor = sc.next(); | |
System.out.print("Golongan : "); | |
gol = sc.next(); | |
System.out.print("Lama Kerja (Jam): "); | |
jam = sc.nextInt(); | |
System.out.print("\n"); | |
list.add(nama);//Memasukkan nama ke list | |
switch(gol){ | |
case "A": | |
case "a": | |
total = jam*15000; | |
break; | |
case "B": | |
case "b": | |
total = jam*17000; | |
break; | |
case "C": | |
case "c": | |
total = jam*20000; | |
break; | |
case "D": | |
case "d": | |
total = jam*22000; | |
break; | |
default: | |
System.out.print("Maaf Pilihan Tidak Ditemukan\n"); | |
} | |
ID.put(hashFunction(nama), nomor); //Masukkan NIK ke HashTabble | |
gaji.put(hashFunction(nama), total); //Masukkan Gaji Total ke HashTabble | |
golongan.put(hashFunction(nama), gol); //Masukkan Golongan ke HashTabble | |
waktu.put(hashFunction(nama), jam);//Masukkan Lama Kerja ke HashTabble | |
} | |
System.out.println("Data telah ditambahkan\n"); | |
} | |
else if(choice == 2){ | |
System.out.print("Nama : "); | |
nama = sc.next();//Masukkan Nama yang dicari | |
//Menampilkan data-data yang terkait dengan nama | |
System.out.println("NIK : " + ID.get(hashFunction(nama))); | |
System.out.println("Golongan : " + golongan.get(hashFunction(nama))); | |
System.out.println("Lama Kerja : " + waktu.get(hashFunction(nama))); | |
System.out.println("Gaji Total : Rp." + gaji.get(hashFunction(nama))); | |
System.out.print("\n"); | |
} | |
else if (choice == 3){ | |
System.out.print("Masukkan Nama Karyawan : "); | |
nama = sc.next();//Masukkan Nama yang akan diganti | |
//Hapus data-data yang terkait akan nama | |
gaji.remove(hashFunction(nama)); | |
golongan.remove(hashFunction(nama)); | |
ID.remove(hashFunction(nama)); | |
waktu.remove(hashFunction(nama)); | |
boolean cek;//variabel untuk mengecek kesamaan nama dalam list | |
//Lakukan looping untuk mengecek nama dari yang ke-0 | |
for (int i = 0; i < list.size(); i++) { | |
cek = list.get(i).equals(nama); | |
//Jika pengecekan true | |
//Semua data-data dari nama tersebut dapat diganti | |
//Tanpa mengubah posisi nama dalam list | |
if(cek == true){ | |
System.out.print("Masukkan Data Baru Karyawan\n"); | |
System.out.print("Nama : "); | |
nama = sc.next(); | |
System.out.print("NIK : "); | |
nomor = sc.next(); | |
System.out.print("Golongan : "); | |
gol = sc.next(); | |
System.out.print("Lama Kerja (Jam): "); | |
jam = sc.nextInt(); | |
list.set(i,nama); | |
switch(gol){ | |
case "A": | |
case "a": | |
total = jam*15000; | |
break; | |
case "B": | |
case "b": | |
total = jam*17000; | |
break; | |
case "C": | |
case "c": | |
total = jam*20000; | |
break; | |
case "D": | |
case "d": | |
total = jam*22000; | |
break; | |
default: | |
System.out.print("Maaf Pilihan Tidak Ditemukan\n"); | |
} | |
ID.put(hashFunction(nama), nomor); | |
gaji.put(hashFunction(nama), total); | |
golongan.put(hashFunction(nama), gol); | |
waktu.put(hashFunction(nama), jam); | |
System.out.print("\n"); | |
} | |
} | |
} | |
else if (choice == 4){ | |
System.out.print("Masukkan Nama Karyawan : "); | |
nama = sc.next();//Masukkan Nama yang dihapus | |
//Hapus semua data termasuk nama | |
list.remove(nama); | |
gaji.remove(hashFunction(nama)); | |
golongan.remove(hashFunction(nama)); | |
ID.remove(hashFunction(nama)); | |
waktu.remove(hashFunction(nama)); | |
System.out.println("Data Karyawan Telah Dihapus\n"); | |
} | |
else if (choice == 5){ | |
if(gaji.size() > 0){ | |
//Lakukan pengoutputan jika terdapat data dalam lize dan HashTable | |
String temp;//Variabel sementara untuk mengurutkan | |
//for loop untuk mengurutkan nama sesuai abjad | |
for(int b=1 ;b<list.size() ;b++){ | |
for(int c=0; c<b; c++){ | |
if(list.get(c).compareTo(list.get(c+1)) > 0)//fungsi compareTo | |
{ | |
temp=list.get(c); | |
list.set(c,list.get(c+1)); | |
list.set(c+1,temp); | |
} | |
} | |
} | |
System.out.println("Terdapat " + gaji.size() + " Data tersimpan\n"); | |
System.out.println(".----.----------.-------------.----------.------------------.---------------------."); | |
System.out.println("| No | Nama | NIK | Golongan | Lama Kerja (Jam) | Gaji Total (Rupiah) |"); | |
System.out.println("|----|----------|-------------|----------|------------------|---------------------|"); | |
for (int i = 1; i <= list.size(); i++) { | |
System.out.print("| " + i + " |"); | |
System.out.print("\t" + list.get(i-1) + "\t|"); | |
System.out.print(" " + ID.get(hashFunction(list.get(i-1))) + " |"); | |
System.out.print("\t " + golongan.get(hashFunction(list.get(i-1))) + "\t |"); | |
System.out.print("\t " + waktu.get(hashFunction(list.get(i-1))) + "\t |"); | |
System.out.print("\t " + gaji.get(hashFunction(list.get(i-1))) + "\t |\n"); | |
if( i != list.size()){ | |
System.out.println("|----|----------|-------------|----------|------------------|---------------------|"); | |
} | |
else if (i == list.size()){ | |
System.out.println("'----'----------'-------------'----------'------------------'---------------------'"); | |
} | |
} | |
System.out.print("\n"); | |
} | |
else | |
System.out.println("Tidak ada Data yang tersimpan\n"); | |
} | |
} | |
} | |
} |
Komentar
Posting Komentar