Final Project Struktur Data 2021

 Nama Kelompok :

 Afira Rolobessy // 5025201006

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.


Berikut implementasi program dari Pendataan perhitungan gaji karyawan :
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");
}
}
}
}
view raw Final Project hosted with ❤ by GitHub
Hasil dari program tersebut adalah : 1. Tampilan Awal
2. Penambahan Data Baru






















3. Tampilan Seluruh Data
4. Lihat Data Seseorang
5. Ganti Data Sesorang
6. Hapus Data Seseorang
Vidio Demo:

Komentar

Postingan Populer