UAS, Program Java Menghitung Gaji Karyawan
 
 
 
W

alaupun kesannya sedikit basi atau kadarluasa (karena UAS sudah lama lewat) tapi dari pada disimpan jadi sampah hardisk, mening di-share. kalau di-share mungkin nantinya bisa jadi tambahan referensi buat yang butuh, dan program ini juga bisa dikembangkan lagi. soalnya pas waktu peresentasi, kata dosen ada hal-hal yang kurang dari program ini diantara yang masih saya ingat: soal pengurutan data, dalam program ini yang menjadi patokan pengurutan data hanya pengurutan berdasarkan nama karyawan (abjad) saja padahal katanya kebutuhan si-user bisa bermacam-macam bisa membutuhkan pengurutan berdasarkan nomor induk, besarnya gaji, atau lain sebagainya. dan sejumlah kekurangan dan kesalahan lainnya. Tapi disini saya cuma ingin berbagi referensi dalam belajar saja, bukan mengajarkan anda untuk mencontek, menjiplak, meng-copy-paste, atau lain sebagainya karena bagaimanapun juga logika seseorang itu tidak bisa di copy-paste (paling tidak, dalam kasus pemrograman).

Adapun ketentuan program yang diajukan untuk UAS kali ini:

  1. Program dikerjakan menggunakan Object Oreinted Programming (OOP).
  2. Penyimpanan data dilakukan dalam link list.
  3. Buat menu program untuk memudahkan user.
  4. Program harus bisa melakukan insert, delete, update (edit), sorting, dan searching.

Dari ketentuan-ketentuan di atas maka program yang dapat kami buat adalah sebagai berikut:

nama file: gaji.java

import java.util.Scanner;

class gaji{
	public static void main(String args[]){
		LinkList List = new LinkList();
		Scanner input = new Scanner(System.in);
		Scanner input2 = new Scanner(System.in);
		Scanner input3 = new Scanner(System.in);
		Scanner input4 = new Scanner(System.in);

		String nama, jabatan, unit_kerja, key;
		long nomor_induk;
		int lama_kerja, z=1;
		char status;

		System.out.print("masukkan banyaknya data : ");
		int n = input.nextInt();

		System.out.println(" ");
		for(int i=1; i<=n; i++){
			System.out.println(" * Data Karyawan ke-" + i);
			System.out.println("");
			System.out.print("\t Nomor Induk \t: ");
			nomor_induk = input.nextLong();    //pemberian nilai (melalui keyboard) variabel nomor_induk
			System.out.print("\t Nama \t\t: ");
			nama = input2.nextLine();    //pemberian nilai (melalui keyboard) variabel nama
			System.out.println("\t Jabatan \t* manager   * staff   atau   * ob");
			System.out.print("\t\t\t: ");
			jabatan = input3.nextLine();    //pemberian nilai (melalui keyboard) variabel jabatan
			System.out.print("\t Unit Kerja \t: ");
			unit_kerja = input4.nextLine();    //pemberian nilai (melalui keyboard) variabel unit_kerja
			System.out.print("\t Lama Kerja \t: ");
			lama_kerja = input.nextInt();    //pemberian nilai (melalui keyboard) variabel lama_kerja
			System.out.println("\t Status \t* menikah atau * lajang");
			System.out.print("\t\t\t: ");
			status = input.next().charAt(0);    //pemberian nilai (melalui keyboard) variabel status
			System.out.println("");

			List.tambahBelakang(nomor_induk, nama, jabatan, unit_kerja, lama_kerja, status); //transper nilai variabel ke class/file LinkList.java
			System.out.println(" ");
		}
		
		List.displayList(); // memanggil method/fungsi displayList pada class/file LinkList.java
		do{
			//##################### menu ####################
			System.out.println(" ");
			System.out.println("[--- MENU PILIHAN: -----------------------------------------------------------]");
			System.out.println(" ");
			System.out.println("  1. Tambah Data");
			System.out.println("  2. Hapus Data");
			System.out.println("  3. Edit Data");
			System.out.println("  4. Urutkan Data");
			System.out.println("  5. Lakukan Pencarian");
			System.out.println("  6. Tampilkan Data");
			System.out.println("");
			System.out.println("  7. Keluar dari program");
			System.out.println("");
			System.out.print(" +++ masukan pilihan anda: ");
			int pilih = input.nextInt();
			//################## akhir menu #################

			// ----------------------------Prosedur Pemilihan----------------------------- //
			if(pilih == 1){

				System.out.println(" ");
				System.out.println("\t\tSUB-MENU PILIHAN: ");
				System.out.println(" ");
				System.out.println("\t\t  1. Tambah Data di depan");
				System.out.println("\t\t  2. Tambah Data di Belakang ");
				System.out.println("\t\t  3. Tambah Data di Tengah");
				System.out.println("");
				System.out.print("\t\t +++ masukan pilihan anda: ");
				int subpilih = input.nextInt();

				if(subpilih == 1){

					System.out.println("");
					System.out.print("\t\t Nomor Induk \t: ");
					nomor_induk = input.nextLong();
					System.out.print("\t\t Nama \t\t: ");
					nama = input2.nextLine();
					System.out.println("\t\t Jabatan \t* manager   * staff   atau   * ob");
					System.out.print("\t\t\t\t: ");
					jabatan = input3.nextLine();
					System.out.print("\t\t Unit Kerja \t: ");
					unit_kerja = input4.nextLine();
					System.out.print("\t\t Lama Kerja \t: ");
					lama_kerja = input.nextInt();
					System.out.println("\t\t Status \t* menikah atau * lajang");
					System.out.print("\t\t\t\t: ");
					status = input.next().charAt(0);
					System.out.println("");

					List.tambahDepan(nomor_induk, nama, jabatan, unit_kerja, lama_kerja, status);
					System.out.println(" ");

				}else if(subpilih == 2){
					System.out.println("");
					System.out.print("\t\t Nomor Induk \t: ");
					nomor_induk = input.nextLong();
					System.out.print("\t\t Nama \t\t: ");
					nama = input2.nextLine();
					System.out.println("\t\t Jabatan \t* manager   * staff   atau   * ob");
					System.out.print("\t\t\t\t: ");
					jabatan = input3.nextLine();
					System.out.print("\t\t Unit Kerja \t: ");
					unit_kerja = input4.nextLine();
					System.out.print("\t\t Lama Kerja \t: ");
					lama_kerja = input.nextInt();
					System.out.println("\t\t Status \t* menikah atau * lajang");
					System.out.print("\t\t\t\t: ");
					status = input.next().charAt(0);
					System.out.println("");

					List.tambahBelakang(nomor_induk, nama, jabatan, unit_kerja, lama_kerja, status);
					System.out.println(" ");
					
				}else if(subpilih == 3){
					System.out.println("");
					System.out.print("\t\tsisipkan di data ke-: ");
					int x = input.nextInt();
					List.masuk(x);

					System.out.println("");
					System.out.print("\t\t Nomor Induk \t: ");
					nomor_induk = input.nextLong();
					System.out.print("\t\t Nama \t\t: ");
					nama = input2.nextLine();
					System.out.println("\t\t Jabatan \t* manager   * staff   atau   * ob");
					System.out.print("\t\t\t\t: ");
					jabatan = input3.nextLine();
					System.out.print("\t\t Unit Kerja \t: ");
					unit_kerja = input4.nextLine();
					System.out.print("\t\t Lama Kerja \t: ");
					lama_kerja = input.nextInt();
					System.out.println("\t\t Status \t* menikah atau * lajang");
					System.out.print("\t\t\t\t: ");
					status = input.next().charAt(0);
					System.out.println("");

					List.insert_data(nomor_induk, nama, jabatan, unit_kerja, lama_kerja, status);
					System.out.println(" ");

				}else{
					System.out.print("TIDAK ADA DALAM MENU");
				}
				List.displayList();
				
			}else if(pilih == 2){
				System.out.println(" ");
				System.out.println("\t\tSUB-MENU PILIHAN: ");
				System.out.println(" ");
				System.out.println("\t\t  1. Hapus Data di depan");
				System.out.println("\t\t  2. Hapus Data di Belakang ");
				System.out.println("\t\t  3. Hapus Data di Tengah");
				System.out.println("");
				System.out.print("\t\t +++ masukan pilihan anda: ");
				int subpilih = input.nextInt();
				System.out.println("");
				if(subpilih == 1){
					Node hapus;
					hapus = List.hapusDepan();
					if(hapus != null)
					System.out.println(hapus.data + " terhapus.");
				}else if(subpilih == 2){
					Node hapus;
					hapus = List.hapusBelakang();
					if(hapus != null)
					System.out.println(hapus.data + " terhapus.");
				}else if(subpilih == 3){
					System.out.print("\t\tHapus data ke-: ");
					int x = input.nextInt();
					List.masuk(x);

					Node hapus;
					hapus = List.hapus_data();
					if(hapus != null){
						System.out.println(hapus.data + " terhapus.");
					}
				}else{
					System.out.print("TIDAK ADA DALAM MENU");
				}
				List.displayList();
				
			}else if(pilih == 3){
				//---- data dihapus heula = edit----------
				System.out.println("");
				System.out.print("\t\t Edit data ke-: ");
				int x = input.nextInt();
				List.masuk(x);
				if(x == 1){
					Node hapus;
					hapus = List.hapusDepan();
				}else{
					Node hapus;
					hapus = List.hapus_data();
				}
				System.out.println("");
				System.out.print("\t\t Nomor Induk \t: ");
				nomor_induk = input.nextLong();
				System.out.print("\t\t Nama \t\t: ");
				nama = input2.nextLine();
				System.out.println("\t\t Jabatan \t* manager   * staff   atau   * ob");
				System.out.print("\t\t\t\t: ");
				jabatan = input3.nextLine();
				System.out.print("\t\t Unit Kerja \t: ");
				unit_kerja = input4.nextLine();
				System.out.print("\t\t Lama Kerja \t: ");
				lama_kerja = input.nextInt();
				System.out.println("\t\t Status \t* menikah atau * lajang");
				System.out.print("\t\t\t\t: ");
				status = input.next().charAt(0);
				System.out.println("");

				List.insert_data(nomor_induk, nama, jabatan, unit_kerja, lama_kerja, status);
				System.out.println(" ");

				List.displayList();
				
			}else if(pilih == 4){
				System.out.println("");
				List.urut_data();
				System.out.println("");
				System.out.println("Data diurutkan berdasarkan nama: ");
				List.displayList();
				
			}else if(pilih == 5){

				System.out.println(" ");
				System.out.println("\t\tSUB-MENU PILIHAN: ");
				System.out.println(" ");
				System.out.println("\t\t  1. Pencarian Berdasarkan Nomor Induk");
				System.out.println("\t\t  2. Pencarian Berdasarkan Nama");
				System.out.println("");
				System.out.print("\t\t +++ masukan pilihan anda: ");
				int subpilih = input.nextInt();
				System.out.println("");
				if(subpilih == 1){
					System.out.println("");
					System.out.println("\t\t   ## LAKUKAN PENCARIAN BERDASARKAN NOMOR INDUK ##");
					System.out.print("\t\t     +No.Induk yang anda cari: ");
					long key1 = input.nextLong();
					System.out.println("");
					List.displayList();
					List.cari_data1(key1);
					System.out.println("");
				}else if(subpilih == 2){
					System.out.println("");
					System.out.println("\t\t   ## LAKUKAN PENCARIAN BERDASARKAN NAMA ##");
					System.out.print("\t\t     +nama yang anda cari: ");
					key = input2.nextLine();
					System.out.println("");
					List.displayList();
					List.cari_data(key);
					System.out.println("");
				}
			}else if(pilih == 6){
				List.displayList();
				
			}else if(pilih == 7){
				z = 2; // untuk mengganti nilai z yang tadi nilainya 1 (lihat baris ke-13) menjadi bernilai 2.
				// prosedur ini dimaksudkan untuk membuat kondisi di 'while(z == 1);' bernilai salah, sehingga program tidak kembali ke do atau dengan singkat kata keluar dari program.
			
			}else{
				System.out.println("yang anda masukkan tidak ada dalam menu");
			}
			// ---------------------------- Akhir Prosedur Pemilihan ----------------------------- //
		}
		while(z == 1); 
		// pengulangan while akan terus terjadi karena nilai z telah diinisialisasikan dengan nilai 1 (lihat baris ke-13 ada z=1),
		// sehingga ketika program berakhir maka program akan kembali ke do (liat baris ke 43). karena while(z == 1); sementara z=1.

	}
}
nama file: LinkList.java
class LinkList{

	private Node head, tail;
	private int n,x2,n2;
	private long pokok;

	public LinkList(){
		head = null;
		pokok = 3000000;
		n2 = 0;
	}

	//################### Method menambahkan data di belakang ##########################
	public void tambahBelakang(long nomor_induk, String nama, String jabatan, String unit_kerja, int lama_kerja, char status){
		Node baru = new Node(nomor_induk, nama, jabatan, unit_kerja, lama_kerja, status);
		if(head == null){
			head = baru;
			tail = baru;
		}else{
			tail.next = baru;
			tail = baru;
		}
		n2++;
	}
	//################### akhir Method menambahkan data di belakang ##########################

	//################### Method menambahkan data di depan ##########################
	public void tambahDepan(long nomor_induk, String nama, String jabatan, String unit_kerja, int lama_kerja, char status){
		Node baru = new Node(nomor_induk, nama, jabatan, unit_kerja, lama_kerja, status);
		if(head == null){
			head = baru;
			tail = baru;
		}else{
			baru.next = head;
			head = baru;
		}
		n2++;
	}
	//################### akhir Method menambahkan data di depan ##########################

	//################### Method menghapus data di depan ###############################
	public Node hapusDepan(){
		if(head != null){
			n2--;
			Node temp = head;
			head = head.next;
			temp.next = null;
			return temp;
		}else{
			System.out.println("List kosong.");
			return null;
		}
	}
	//################### akhir Method menghapus data di depan ##########################

	//################### Method menghapus data di belakang ###############################
	public Node hapusBelakang(){
		if(head != null){
			n2--;
			Node bantu, temp;
			if(head.next == null){
				temp = head;
				head = tail = null;
			}else{
				bantu = head;

				while(bantu.next != tail){
					bantu = bantu.next;
				}
				temp = tail;
				tail = bantu;
				tail.next = null;
			}
			return temp;
		}else{
			System.out.println("List kosong.");
			return null;
		}
	}
	//################### akhir Method menghapus data di belakang ##########################

	//################### Method Menampilkan data ##########################
	public void displayList(){
		if(head != null){

			Node bantu = head;
			System.out.println("");
			System.out.println("-----------------------------------------------------------------------------");
			System.out.print("No.");
			System.out.print("\tNomor");
			System.out.print("\t    Nama");
			System.out.print("\tGaji");
			System.out.print("\t    Tunjangan");
			System.out.print("\tPajak");
			System.out.println("\t    Gaji yg");
			System.out.print("\tInduk");
			System.out.print("\t\t\tPokok");
			System.out.println("\t\t\t\t    Diterima");
			System.out.println("-----------------------------------------------------------------------------");

			n=1;
			while(bantu != null){

				//---------------Menampilkan data yang telah diperoses------------
				System.out.print(n);
				System.out.print("\t"+bantu.data);
				System.out.print("\t    "+bantu.data2);
				System.out.print("\t"+pokok);
				System.out.print("\t    "+bantu.data8);
				System.out.print("\t"+bantu.data9);
				System.out.println("\t    Rp."+bantu.data10);
				//---------------akhir Menampilkan data yang telah diperoses------

				bantu = bantu.next;
				n++;
			}
			System.out.println("");
			
		}else{
			System.out.println("List kosong.");
		}
	}
	//################### Akhir Method Menampilkan data ##########################

	//################### Method penerima urutan data yang disisipkan ###########################
	public void masuk(int x){
		x2 = x;
	}
	//################### Akhir Method penerima urutan data yang disisipkan ######################

	//############## Method penyisipan data di tengah ################################
	public void insert_data(long nomor_induk, String nama, String jabatan, String unit_kerja, int lama_kerja, char status){
		Node bantu;
		Node baru = new Node(nomor_induk, nama, jabatan, unit_kerja, lama_kerja, status);

		if(head == null){
			head = baru;
			tail = baru;
		}else{
			bantu = head;
			for(int i=1; i<(x2-1); i++){
				bantu = bantu.next;
			}
			baru.next = bantu.next;
			bantu.next = baru;
		}

		n2++;
	}
	//################# akhir method penyisipan data di tengah ######################

	//################# Method penghapusan data di tengah ###########################
	public Node hapus_data(){
		if(head != null){
			n2--;
			Node bantu, temp;
			if(head.next == null){
				temp = head;
				head = tail = null;
			}else{
				bantu = head;
				for (int i=1; i<(x2-1); i++){
					bantu = bantu.next;
				}
				temp = bantu.next;
				bantu.next = temp.next;
				temp.next = null;
			}
			return temp;
		}else{
			System.out.println("List kosong.");
			return null;
		}
	}
	//################# akhir method penghapusan data di tengah ######################

	//################# Method pengurutan data ##########################
	public void urut_data(){
		String temp_nama;
		long temp_induk, temp_tunjangan, temp_pajak, temp_terima;

		Node bantu1, bantu2;
		for(int i=0; i < n2-1; i++){
			bantu1=head;
			bantu2=head.next;
			for(int j=0; j < n2-1; j++){
				if(bantu1.data2.compareTo(bantu2.data2) > 0){
					temp_nama=bantu1.data2;
					temp_induk = bantu1.data;
					temp_tunjangan = bantu1.data8;
					temp_pajak = bantu1.data9;
					temp_terima = bantu1.data10;

					bantu1.data2=bantu2.data2;
					bantu1.data=bantu2.data;
					bantu1.data8=bantu2.data8;
					bantu1.data9=bantu2.data9;
					bantu1.data10=bantu2.data10;

					bantu2.data2=temp_nama;
					bantu2.data=temp_induk;
					bantu2.data8=temp_tunjangan;
					bantu2.data9=temp_pajak;
					bantu2.data10=temp_terima;

				}
				bantu1=bantu1.next;
				bantu2=bantu2.next;
			}
		}
	}
	//################# akhir method pengurutan data ######################

	//################# Method pencarian data No Induk ##########################
	public void cari_data1(long key1){
		long b = key1;
		Node bantu = head;
		int indeks[] = new int[n2];
		int j=0;

		for(int i=1; i<=n2; i++){
			if(bantu.data == b){
				indeks[j] = i;
				j++;
			}
			bantu=bantu.next;
		}

		if(j>0){
			System.out.print("Data ditemukan di Node ke-: ");
			for(int i=0; i<j; i++)
			System.out.print(indeks[i]+", ");
		}else{
			System.out.print("Data tidak ditemukan");
		}
	}
	//################# akhir method pencarian data ######################

	//################# Method pencarian data Nama ##########################
	public void cari_data(String key){
		String b = key;
		Node bantu = head;
		int indeks[] = new int[n2];
		int j=0;

		for(int i=1; i<=n2; i++){
			if((bantu.data2).compareTo(b) == 0){
				indeks[j] = i;
				j++;
			}
			bantu=bantu.next;
		}

		if(j>0){
			System.out.print("Data ditemukan di Node ke-: ");
			for(int i=0; i<j; i++)
			System.out.print(indeks[i]+", ");
		}else{
			System.out.print("Data tidak ditemukan");
		}
	}
	//################# akhir method pencarian data ######################
}
nama file: Node.java
class Node{
	public String data2, data3, data4;
	public char data6;
	public long data;
	public int data5;
	private long pokok, kenaikan, anak_istri, diterima, tunjangan, banyak, pajak, gaji_bersih, jabat;
	public long data8,data9,data10;

	public Node next;

	public Node(long nomor_induk, String nama, String jabatan, String unit_kerja, int lama_kerja, char status){
		data = nomor_induk;
		data2 = nama;
		data3 = jabatan;
		data4 = unit_kerja;
		data5 = lama_kerja;
		data6 = status;
		pokok = 3000000;

		//------------------ proses penghitungan gaji---------------------------
		if(data3.compareTo("manager") == 0){
			jabat = (20*pokok)/100;
		}else if (data3.compareTo("staff") == 0){
			jabat = (10*pokok)/100;
		}else if(data3.compareTo("ob") == 0){
			jabat = (5*pokok)/100;
		}

		for(int i=2; i<=data5; i=i+2){
			kenaikan = (3*pokok)/100;
			banyak = banyak + kenaikan;
		}

		if(data6 == 'm'){
			anak_istri = ((5+4)*3000000)/100;
		}

		tunjangan = banyak + anak_istri + jabat;
		diterima = pokok +tunjangan;
		pajak = (25*diterima)/1000;
		gaji_bersih = diterima - pajak;
		//---------------- akhir proses penghitungan gaji-------------------------

		data8 = tunjangan;
		data9 = pajak;
		data10= gaji_bersih;
		next = null;
	}

}

Beberapa screenshot-nya bisa dilihat dibawah ini:

 
 

Kata kunci:

#

 


    Jadilah Orang Pertama yang Berkomentar!!!