document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. import java.util.*;
  2.  
  3. public class fp{
  4.    
  5.     public static int hashFunction(String nama){ //Untuk menentukan letak HashTable
  6.         int hash = 0;
  7.         for(int i=0; i<nama.length(); i++){
  8.             hash = hash*10 + nama.charAt(i);
  9.         }
  10.         hash = hash % 499;
  11.         return hash;
  12.     }
  13.      
  14.     public static void main(String[] args){
  15.         Hashtable<Integer, Integer> gaji = new Hashtable<>(); //Hashtable untuk Gaji karyawan
  16.         Hashtable<Integer, Integer> waktu = new Hashtable<>();//Hashtable untuk Lama Kerja Karyawan
  17.         Hashtable<Integer, String> ID = new Hashtable<>();//Hashtable untuk NIK
  18.         Hashtable<Integer, String> golongan = new Hashtable<>();//Hashtable untuk Golongan
  19.        
  20.         List<String> list = new ArrayList<>();//List untuk menyimpan nama-nama karyawan
  21.         Scanner sc = new Scanner(System.in);
  22.        
  23.         //Variabel-variabel yang diperlukan
  24.         int choice = -1;
  25.         String nama, nomor, gol;
  26.         int jumlah, upah, data, jam;
  27.         int total = 0;
  28.        
  29.         System.out.println("================= PENDATAAN GAJI KARYAWAN =================");
  30.         System.out.println("====================== PERUSAHAAN X =======================\\n\\n");
  31.        
  32.         System.out.println("Keterangan :");
  33.         System.out.println("Golongan = A maka upah per jam 15000");
  34.         System.out.println("Golongan = B maka upah per jam 17000");
  35.         System.out.println("Golongan = C maka upah per jam 20000");
  36.         System.out.println("Golongan = D maka upah per jam 22000");
  37.         System.out.println("Nomor Induk Kerja (NIK) harus 10 angka\\n");
  38.        
  39.         System.out.println("   Silahkan Memilih");
  40.         System.out.println("1. Tambahkan Data Baru");
  41.         System.out.println("2. Lihat Data Seseorang");
  42.         System.out.println("3. Ganti Data Seseorang");
  43.         System.out.println("4. Hapus Data Seseorang");
  44.         System.out.println("5. Lihat Semua Data");
  45.         System.out.println("6. Exit\\n");  
  46.        
  47.         while(choice != 6){
  48.             System.out.print("Masukkan pilihan : ");
  49.             choice = sc.nextInt();//Input choice
  50.                                        
  51.             System.out.print("\\n");
  52.          
  53.             if (choice == 1){
  54.                 System.out.print("Masukkan banyak data : ");
  55.                 data = sc.nextInt();//Masukkan banyak data yang akan dilooping
  56.                
  57.                 System.out.print("\\n");
  58.                
  59.                 for(int i = 0; i<data; i++){
  60.                     //Masukkan data-data yang diperlukan
  61.                     System.out.print("Nama : ");
  62.                     nama = sc.next();
  63.                
  64.                     System.out.print("NIK : ");
  65.                     nomor = sc.next();
  66.                
  67.                     System.out.print("Golongan  : ");
  68.                     gol = sc.next();
  69.                
  70.                     System.out.print("Lama Kerja (Jam): ");
  71.                     jam = sc.nextInt();
  72.                
  73.                     System.out.print("\\n");
  74.                    
  75.                     list.add(nama);//Memasukkan nama ke list    
  76.                
  77.                     switch(gol){
  78.                         case "A":
  79.                         case "a":
  80.                             total = jam*15000;
  81.                             break;
  82.                         case "B":
  83.                         case "b":
  84.                             total = jam*17000;
  85.                             break;
  86.                         case "C":
  87.                         case "c":
  88.                             total = jam*20000;
  89.                             break;
  90.                         case "D":
  91.                         case "d":
  92.                             total = jam*22000;
  93.                             break;
  94.                         default:
  95.                             System.out.print("Maaf Pilihan Tidak Ditemukan\\n");      
  96.                     }
  97.                    
  98.                     ID.put(hashFunction(nama), nomor); //Masukkan NIK ke HashTabble
  99.                     gaji.put(hashFunction(nama), total); //Masukkan Gaji Total ke HashTabble
  100.                     golongan.put(hashFunction(nama), gol); //Masukkan Golongan ke HashTabble
  101.                     waktu.put(hashFunction(nama), jam);//Masukkan Lama Kerja ke HashTabble
  102.                 }                            
  103.                
  104.                 System.out.println("Data telah ditambahkan\\n");  
  105.             }
  106.            
  107.             else if(choice == 2){
  108.                 System.out.print("Nama : ");
  109.                 nama = sc.next();//Masukkan Nama yang dicari
  110.                
  111.                 //Menampilkan data-data yang terkait dengan nama
  112.                 System.out.println("NIK : " +  ID.get(hashFunction(nama)));
  113.                 System.out.println("Golongan : " +  golongan.get(hashFunction(nama)));
  114.                 System.out.println("Lama Kerja : " +  waktu.get(hashFunction(nama)));
  115.                 System.out.println("Gaji Total : Rp." +  gaji.get(hashFunction(nama)));
  116.                 System.out.print("\\n");  
  117.             }
  118.            
  119.             else if (choice == 3){
  120.                 System.out.print("Masukkan Nama Karyawan : ");
  121.                 nama = sc.next();//Masukkan Nama yang akan diganti
  122.                
  123.                 //Hapus data-data yang terkait akan nama
  124.                 gaji.remove(hashFunction(nama));
  125.                 golongan.remove(hashFunction(nama));
  126.                 ID.remove(hashFunction(nama));
  127.                 waktu.remove(hashFunction(nama));
  128.                
  129.                 boolean cek;//variabel untuk mengecek kesamaan nama dalam list
  130.  
  131.                 //Lakukan looping untuk mengecek nama dari yang ke-0
  132.                 for (int i = 0; i < list.size(); i++) {
  133.                     cek =  list.get(i).equals(nama);
  134.                    
  135.                     //Jika pengecekan true
  136.                     //Semua data-data dari nama tersebut dapat diganti
  137.                     //Tanpa mengubah posisi nama dalam list
  138.                     if(cek == true){
  139.                         System.out.print("Masukkan Data Baru Karyawan\\n");
  140.                    
  141.                         System.out.print("Nama : ");
  142.                         nama = sc.next();
  143.                
  144.                         System.out.print("NIK : ");
  145.                         nomor = sc.next();
  146.                
  147.                         System.out.print("Golongan  : ");
  148.                         gol = sc.next();
  149.                
  150.                         System.out.print("Lama Kerja (Jam): ");
  151.                         jam = sc.nextInt();
  152.                    
  153.                         list.set(i,nama);
  154.                    
  155.                         switch(gol){
  156.                             case "A":
  157.                             case "a":
  158.                                 total = jam*15000;
  159.                                 break;
  160.                             case "B":
  161.                             case "b":
  162.                                 total = jam*17000;
  163.                                 break;
  164.                             case "C":
  165.                             case "c":
  166.                                 total = jam*20000;
  167.                                 break;
  168.                             case "D":
  169.                             case "d":
  170.                                 total = jam*22000;
  171.                                 break;
  172.                             default:
  173.                                 System.out.print("Maaf Pilihan Tidak Ditemukan\\n");      
  174.                     }
  175.                    
  176.                     ID.put(hashFunction(nama), nomor);
  177.                     gaji.put(hashFunction(nama), total);
  178.                     golongan.put(hashFunction(nama), gol);
  179.                     waktu.put(hashFunction(nama), jam);
  180.                     System.out.print("\\n");
  181.                     }                          
  182.                 }    
  183.             }
  184.            
  185.        
  186.             else if (choice == 4){
  187.                 System.out.print("Masukkan Nama Karyawan : ");
  188.                 nama = sc.next();//Masukkan Nama yang dihapus
  189.                
  190.                 //Hapus semua data termasuk nama
  191.                 list.remove(nama);
  192.                 gaji.remove(hashFunction(nama));
  193.                 golongan.remove(hashFunction(nama));
  194.                 ID.remove(hashFunction(nama));
  195.                 waktu.remove(hashFunction(nama));
  196.                
  197.                 System.out.println("Data Karyawan Telah Dihapus\\n");            
  198.             }
  199.            
  200.             else if (choice == 5){
  201.                 if(gaji.size() > 0){
  202.                     //Lakukan pengoutputan jika terdapat data dalam lize dan HashTable
  203.                    
  204.                     String temp;//Variabel sementara untuk mengurutkan
  205.                    
  206.                     //for loop untuk mengurutkan nama sesuai abjad
  207.                     for(int b=1 ;b<list.size() ;b++){
  208.                         for(int c=0; c<b; c++){
  209.                             if(list.get(c).compareTo(list.get(c+1)) > 0)//fungsi compareTo
  210.                             {
  211.                                 temp=list.get(c);
  212.                                 list.set(c,list.get(c+1));
  213.                                 list.set(c+1,temp);
  214.                             }
  215.                         }
  216.                     }
  217.                    
  218.                     System.out.println("Terdapat " + gaji.size() + " data tersimpan\\n");
  219.    
  220.  System.out.println(".----.----------.-------------.----------.------------------.---------------------.");
  221.  System.out.println("| No |   Nama   |     NIK     | Golongan | Lama Kerja (Jam) | Gaji Total (Rupiah) |");
  222.  System.out.println("|----|----------|-------------|----------|------------------|---------------------|");
  223.                    
  224.                         for (int i = 1; i <= list.size(); i++) {
  225.                             System.out.print("| " + i + "  |");
  226.                             System.out.print("\\t" + list.get(i-1) + "\\t|");
  227.                             System.out.print(" " + ID.get(hashFunction(list.get(i-1))) + "  |");
  228.                             System.out.print("\\t   " + golongan.get(hashFunction(list.get(i-1))) + "\\t |");
  229.                             System.out.print("\\t  " + waktu.get(hashFunction(list.get(i-1))) + "\\t    |");
  230.                             System.out.print("\\t     " + gaji.get(hashFunction(list.get(i-1))) + "\\t  |\\n");
  231.                             if( i != list.size()){
  232.   System.out.println("|----|----------|-------------|----------|------------------|---------------------|");
  233.                             }
  234.                             else if (i == list.size()){
  235.   System.out.println("\'----\'----------\'-------------\'----------\'------------------\'---------------------\'");
  236.                             }
  237.                         }
  238.                     System.out.print("\\n");
  239.                 }
  240.                 else
  241.                     System.out.println("Tidak ada data yang tersimpan\\n");
  242.             }
  243.         }
  244.     }
  245. }
');