LAMPIRAN A : LISTING PROGRAM
// Source Code MainActivity.java
package com.kurniawan.apptes;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity { Button data,pengujian,help,about;
@Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); data = (Button) findViewById(R.id.bdata); pengujian = (Button) findViewById(R.id.buji); help = (Button) findViewById(R.id.bhelp); about = (Button) findViewById(R.id.babout);
data.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this, Data.class); startActivity(intent);
} });
pengujian.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this, Pengujian.class);
startActivity(intent); }
});
help.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this, Help.class); startActivity(intent);
} });
about.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View view) {
package com.kurniawan.apptes;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import java.util.List;
public class Data extends Activity{ private ListView listView; @Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.data);
this.listView = (ListView) findViewById(R.id.listView);
DatabaseHandler dbHandler = DatabaseHandler.getInstance(this); dbHandler.open();
List<String> nomor = dbHandler.getNomor();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, nomor);
this.listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view,
int i, long l) {
Intent intent = new Intent(Data.this, Hasil.class); String nama = listView.getItemAtPosition(i).toString(); intent.putExtra("nama", nama);
startActivity(intent); }
}); } }
// Source Code Pengujian.java
package com.kurniawan.apptes;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import com.kurniawan.apptes.c45Algorithm.Atribut;
import com.kurniawan.apptes.c45Algorithm.Nilai;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
private static String[] listField = {"Pendidikan_Terakhir",
"Pengalaman_Bekerja", "Psikotes", "Intellegensi"}; private static Integer[] constAtribut = {0, 0, 0, 0, 1, 1,
2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3
};
private static String[] constNilai = {"SMA", "D1", "D3", "S1", "Ya", "Tidak",
"0", "1", "2", "3", "4", "5", "6", "7", "0", "1", "2", "3"
};
Nilai keterangan;
List<Atribut> listAtribut; List<String> field;
List<String> value;
Map<String, String> inputanUser;
private Button btnCek, btnSave, btnClear;
private EditText etNama, etAlamat, etTelp, etPendidikan, etPengalaman,
etIntellegensi, etPsikotes; private TextView tvHasil; SQLiteDatabase database; @Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.pengujian);
btnCek = (Button) findViewById(R.id.btn_cek); btnSave = (Button) findViewById(R.id.btn_save); btnClear = (Button) findViewById(R.id.btn_clr); etNama = (EditText) findViewById(R.id.et_nama); etAlamat = (EditText) findViewById(R.id.et_alamat); etTelp = (EditText) findViewById(R.id.et_telp);
etPendidikan = (EditText) findViewById(R.id.et_pendidikan); etPengalaman = (EditText) findViewById(R.id.et_pengalaman); etIntellegensi = (EditText) findViewById(R.id.et_intellegensi); etPsikotes = (EditText) findViewById(R.id.et_psikotes);
tvHasil = (TextView) findViewById(R.id.tv_hasilProses); dbHelper = new DatabaseOpenHelper(this);
DatabaseHandler dbHandler = DatabaseHandler.getInstance(this); dbHandler.open();
database = dbHandler.database;
btnCek.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View v) { try {
clear();
inputanUser.put("Pendidikan_Terakhir",
etPendidikan.getText().toString());
inputanUser.put("Pengalaman_Bekerja",
etPengalaman.getText().toString());
inputanUser.put("Psikotes",
etPsikotes.getText().toString());
inputanUser.put("Intellegensi",
etIntellegensi.getText().toString());
Atribut n = new Atribut(field); listAtribut.add(n);
}
for(int i = 0; i < constNilai.length; i++){ try {
Nilai n = new Nilai(listField[constAtribut[i]], constNilai[i]);
n.AmbilDariDataSet(database, field, value); n.HitungEntropy();
listAtribut.get(constAtribut[i]).nilai.add(n); } catch (Exception e){
} }
c45Algorithm();
btnSave.setVisibility(View.VISIBLE); btnClear.setVisibility(View.VISIBLE); } catch (Exception e){
Log.d("Exception", e.toString()); }
} });
btnSave.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View view) {
final SQLiteDatabase db = dbHelper.getWritableDatabase(); db.execSQL("INSERT INTO DataPelamar (No, Nama, Alamat, Telp, Pendidikan_Terakhir, Pengalaman_Bekerja, Psikotes, Intellegensi, Keterangan) VALUES ('"+ nomorId() +"', '" +
etNama.getText().toString()+"', '" + etAlamat.getText().toString()+"', '"+ etTelp.getText().toString()+"', '"+ etPendidikan.getText().toString()+"', '"+ etPengalaman.getText().toString()+"', '"+ etPsikotes.getText().toString()+"', '"+ etIntellegensi.getText().toString()+"', '" + tvHasil.getText().toString()+"')");
} }); }
int nomorId() { int nomor = 0;
SQLiteDatabase db = dbHelper.getReadableDatabase();
Cursor cursor = db.rawQuery("SELECT MAX(No) FROM DataPelamar", null); if (cursor.moveToFirst()) {
nomor = cursor.getInt(0); }
return nomor + 1; }
void clear(){
inputanUser = new HashMap<String, String>(); field = new ArrayList<String>();
value = new ArrayList<String>();
listAtribut = new ArrayList<Atribut>(); }
void c45Algorithm(){
keterangan = new Nilai("*", "*");
keterangan.AmbilDariDataSet(database, field, value); keterangan.HitungEntropy();
if(keterangan.getSumYa() > 0){ tvHasil.setText("LULUS"); return;
}
else if(keterangan.getSumTidak() > 0){ tvHasil.setText("TIDAK LULUS"); return;
} }
Atribut bestGain = new Atribut();
Double maxGain = new Double(Double.MIN_VALUE); for(Atribut n : listAtribut){
n.HitungGain(keterangan.getEntropy(), keterangan.getSumNilai()); if(maxGain < n.gain || listAtribut.indexOf(n) == 0){
maxGain = n.gain; bestGain = n; }
Log.d("TRACE", n.nama + " GAIN : " + n.gain); }
String userValue = inputanUser.get(bestGain.nama); Nilai userNilai = new Nilai();
for(Nilai n : bestGain.nilai){
if(n.getNama().equals(userValue)){ userNilai = n;
} }
if(userNilai.getEntropy() != 0){ field.add(bestGain.nama); value.add(userValue); int i = 0;
for(int index = 0; index < listAtribut.size(); index++){ if(listAtribut.get(index).nama.equals(bestGain.nama)){ i = index;
} }
listAtribut.remove(i); c45Algorithm();
} else {
if(userNilai.getSumYa() > 0){
tvHasil.setText("DATA TERSEBUT LULUS"); }
else if(userNilai.getSumTidak() > 0){
tvHasil.setText("DATA TERSEBUT TIDAK LULUS"); }
} } }
//Source Code Edit.java
package com.kurniawan.apptes;
import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import com.kurniawan.apptes.c45Algorithm.Atribut;
import com.kurniawan.apptes.c45Algorithm.Nilai;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Edit extends Activity{
private static String[] listField = {"Pendidikan_Terakhir",
"Pengalaman_Bekerja", "Psikotes", "Intellegensi"}; private static Integer[] constAtribut = {0, 0, 0, 0, 1, 1,
2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3
};
private static String[] constNilai = {"SMA", "D1", "D3", "S1", "Ya", "Tidak",
"0", "1", "2", "3", "4", "5", "6", "7", "0", "1", "2", "3"
};
Nilai keterangan;
List<Atribut> listAtribut; List<String> field;
List<String> value;
Map<String, String> inputanUser;
private Button btnCek, btnSave, btnClear; SQLiteDatabase database;
DatabaseOpenHelper dbHelper; Cursor cursor;
EditText nama, alamat, telp, pend, pengalaman, psikotes, intellegensi; TextView ket;
@Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.edit);
btnCek = (Button) findViewById(R.id.editCekBtn); btnSave = (Button) findViewById(R.id.editSaveBtn); btnClear = (Button) findViewById(R.id.editClrBtn); nama = (EditText) findViewById(R.id.editNamaTxt); alamat = (EditText) findViewById(R.id.editAlamatTxt); telp = (EditText) findViewById(R.id.editTelpTxt); pend = (EditText) findViewById(R.id.editPendTxt);
pengalaman = (EditText) findViewById(R.id.editPengalamanTxt); intellegensi = (EditText) findViewById(R.id.editIntTxt); psikotes = (EditText) findViewById(R.id.editPsikotesTxt); ket = (TextView) findViewById(R.id.editHasilTxt);
final String namaIntent = getIntent().getStringExtra("primKey"); dbHelper = new DatabaseOpenHelper(this);
final SQLiteDatabase db = dbHelper.getReadableDatabase(); cursor = db.rawQuery("SELECT * FROM DataPelamar WHERE No = '" + namaIntent + "'", null);
cursor.moveToFirst();
if (cursor.getCount() > 0) { cursor.moveToPosition(0);
pengalaman.setText(cursor.getString(5).toString()); psikotes.setText(cursor.getString(6).toString()); intellegensi.setText(cursor.getString(7).toString()); ket.setText(cursor.getString(8).toString());
}
btnCek.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View v) { try {
clear();
inputanUser.put("Pendidikan_Terakhir",
pend.getText().toString());
inputanUser.put("Pengalaman_Bekerja",
pengalaman.getText().toString());
inputanUser.put("Psikotes",
psikotes.getText().toString());
inputanUser.put("Intellegensi",
intellegensi.getText().toString());
for(String field : listField){ Atribut n = new Atribut(field); listAtribut.add(n);
}
for(int i = 0; i < constNilai.length; i++){ try {
Nilai n = new Nilai(listField[constAtribut[i]], constNilai[i]);
n.AmbilDariDataSet(database, field, value); n.HitungEntropy();
listAtribut.get(constAtribut[i]).nilai.add(n); } catch (Exception e){
} }
c45Algorithm();
btnSave.setVisibility(View.VISIBLE); btnClear.setVisibility(View.VISIBLE); ket.setVisibility(View.VISIBLE); } catch (Exception e){
Log.d("Exception", e.toString()); }
} });
btnSave.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View view) {
final SQLiteDatabase db = dbHelper.getWritableDatabase(); db.execSQL("UPDATE DataPelamar SET Nama = '"+
nama.getText().toString() +"'," +
" Alamat = '"+ alamat.getText().toString() +"', " + " Telp = '"+ telp.getText().toString() +"'," +
" Pendidikan_Terakhir = '"+ pend.getText().toString() +"'," +
" Pengalaman_Bekerja = '"+
pengalaman.getText().toString() +"'," +
" Psikotes = '"+ psikotes.getText().toString() +"',"
+
" Intellegensi = '"+
intellegensi.getText().toString() +"'," +
} }); }
void clear(){
inputanUser = new HashMap<String, String>(); field = new ArrayList<String>();
value = new ArrayList<String>();
listAtribut = new ArrayList<Atribut>(); }
void c45Algorithm(){
keterangan = new Nilai("*", "*");
keterangan.AmbilDariDataSet(database, field, value); keterangan.HitungEntropy();
if(listAtribut.size() == 0){ if(keterangan.getSumYa() > 0){ ket.setText("LULUS"); return;
}
else if(keterangan.getSumTidak() > 0){ ket.setText("TIDAK LULUS");
return; }
}
Atribut bestGain = new Atribut();
Double maxGain = new Double(Double.MIN_VALUE); for(Atribut n : listAtribut){
n.HitungGain(keterangan.getEntropy(), keterangan.getSumNilai()); if(maxGain < n.gain || listAtribut.indexOf(n) == 0){
maxGain = n.gain; bestGain = n; }
Log.d("TRACE", n.nama + " GAIN : " + n.gain); }
String userValue = inputanUser.get(bestGain.nama); Nilai userNilai = new Nilai();
for(Nilai n : bestGain.nilai){
if(n.getNama().equals(userValue)){ userNilai = n;
} }
if(userNilai.getEntropy() != 0){ field.add(bestGain.nama); value.add(userValue); int i = 0;
for(int index = 0; index < listAtribut.size(); index++){ if(listAtribut.get(index).nama.equals(bestGain.nama)){ i = index;
} }
listAtribut.remove(i); c45Algorithm();
} else {
if(userNilai.getSumYa() > 0){
ket.setText("DATA TERSEBUT LULUS"); }
else if(userNilai.getSumTidak() > 0){
} } }
//Source Code Hasil.java
package com.kurniawan.apptes;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView; /**
* Created by Kurniawan on 12/30/2016. */
public class Hasil extends Activity{ DatabaseOpenHelper dbHelper; Cursor cursor;
Button edit,hapus;
TextView nomor, nama, alamat, telp, pend, pengalaman, psikotes,
intellegensi, ket; @Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.hasil);
nomor = (TextView) findViewById(R.id.tvNo); nama = (TextView) findViewById(R.id.editNamaTxt); pend = (TextView) findViewById(R.id.editPendTxt); alamat = (TextView) findViewById(R.id.editAlamatTxt); telp = (TextView) findViewById(R.id.noTelpTxt);
pengalaman = (TextView) findViewById(R.id.editPengalamanTxt); psikotes = (TextView) findViewById(R.id.editPsikotesTxt); intellegensi = (TextView) findViewById(R.id.editIntTxt); ket = (TextView) findViewById(R.id.hasilTxt);
final String namaIntent = getIntent().getStringExtra("nama"); nama.setText(namaIntent);
dbHelper = new DatabaseOpenHelper(this);
final SQLiteDatabase db = dbHelper.getReadableDatabase();
cursor = db.rawQuery("SELECT * FROM DataPelamar WHERE Nama = '" + namaIntent + "'", null);
cursor.moveToFirst();
if (cursor.getCount() > 0) { cursor.moveToPosition(0);
nomor.setText(cursor.getString(0).toString()); alamat.setText(cursor.getString(2).toString()); telp.setText(cursor.getString(3).toString()); pend.setText(cursor.getString(4).toString()); pengalaman.setText(cursor.getString(5).toString()); psikotes.setText(cursor.getString(6).toString()); intellegensi.setText(cursor.getString(7).toString()); ket.setText(cursor.getString(8).toString());
}
hapus = (Button) findViewById(R.id.deleteBtn);
@Override
public void onClick(View view) {
new AlertDialog.Builder(Hasil.this).setMessage("Hapus data?").setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override
public void onClick(DialogInterface dialog, int which) { SQLiteDatabase db = dbHelper.getWritableDatabase(); db.execSQL("DELETE FROM DataPelamar WHERE No = '"+
nomor.getText().toString() +"'");
Intent intent = new Intent(Hasil.this, Data.class); startActivity(intent);
} }).show(); }
});
edit = (Button) findViewById(R.id.editBtn);
edit.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View view) {
Intent intent = new Intent(Hasil.this, Edit.class); String primKey = nomor.getText().toString();
intent.putExtra("primKey", primKey); startActivity(intent);
} }); } }
//Source Code Nilai.java
package com.kurniawan.apptes.c45Algorithm;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import java.util.ArrayList;
import java.util.List;
public class Nilai {
public static final String LULUS = "L";
public static final String TIDAK_LULUS = "TL";
public static final String NAMA_TABEL = "DataPelamar"; String nama, namaAtribut;
Integer sumNilai, sumYa, sumTidak; Double Entropy;
public Nilai(){ }
public Nilai(String namaAtribut, String nama){ this.nama = nama;
this.namaAtribut = namaAtribut; }
public Double getEntropy(){ return this.Entropy; }
public Integer getSumNilai(){ return this.sumNilai; }
}
public Integer getSumTidak(){ return this.sumTidak; }
public String getNama(){ return this.nama; }
public void HitungEntropy() {
if (sumYa == 0 || sumTidak == 0) { this.Entropy = 0.0;
} else {
this.Entropy = (-(sumYa / sumNilai.doubleValue()) * (Math.log(sumYa / sumNilai.doubleValue()) / Math.log(2))) + (-(sumTidak / sumNilai.doubleValue()) * (Math.log(sumTidak / sumNilai.doubleValue()) / Math.log(2))); }
}
public void AmbilDariDataSet(SQLiteDatabase database, List<String> field, List<String> value){
String query = "SELECT " + namaAtribut + " FROM " + NAMA_TABEL + " WHERE ";
List<String> _value = new ArrayList<String>(); _value.addAll(value);
List<String> _field = new ArrayList<String>(); _field.addAll(field);
for(int i = 0; i < _field.size(); i++){ query += _field.get(i) + " = ? AND "; }
if(!namaAtribut.equals("*")) {
query += " " + namaAtribut + " = ? AND "; _value.add(nama);
}
query += " Keterangan = ? "; List<String> valueYes, valueNo; valueYes = new ArrayList<String>(); valueYes.addAll(_value);
valueYes.add(LULUS);
valueNo = new ArrayList<String>(); valueNo.addAll(_value);
valueNo.add(TIDAK_LULUS);
Cursor cursor = database.rawQuery(query, valueYes.toArray(new
String[valueYes.size()]));
sumYa = cursor.getCount();
cursor = database.rawQuery(query, valueNo.toArray(new
String[valueNo.size()]));
sumTidak = cursor.getCount(); this.sumNilai = sumYa + sumTidak; }
}
//Source Code Atribut.java
package com.kurniawan.apptes.c45Algorithm;
import java.util.ArrayList;
import java.util.List;
public class Atribut { public String nama; public List<Nilai> nilai; public Double gain; public Atribut(){ }
public Atribut(String nama){ this.nama = nama;
this.nilai = new ArrayList<Nilai>(); }
public void HitungGain(Double totalEntropy, Integer S){ this.gain = totalEntropy;
for(Nilai n : nilai){
this.gain -= ((n.sumNilai / S.doubleValue()) * (Math.log(n.sumNilai / S.doubleValue()) / Math.log(2))); }
} }
//Source Code DatabaseOpenHelper.java
package com.kurniawan.apptes;
import android.content.Context;
import com.readystatesoftware.sqliteasset.SQLiteAssetHelper;
public class DatabaseOpenHelper extends SQLiteAssetHelper { private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "DataPelamar (2)"; public DatabaseOpenHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION); }
}
//Source Code Hasil.java
package com.kurniawan.apptes;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import java.util.ArrayList;
import java.util.List;
public class DatabaseHandler {
private SQLiteOpenHelper openHelper; public SQLiteDatabase database;
private static DatabaseHandler instance;
this.openHelper = new DatabaseOpenHelper(context); }
public static DatabaseHandler getInstance(Context context){ if (instance == null){
instance = new DatabaseHandler(context); }
return instance; }
public void open() {
this.database = openHelper.getWritableDatabase(); }
}
//Source Code Help.java
package com.kurniawan.apptes;
import android.app.Activity;
import android.os.Bundle;
public class Help extends Activity{ @Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.help); }
}
// Source Code About.java
package com.kurniawan.apptes;
import android.app.Activity;
import android.os.Bundle;
public class About extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.about); }
CURRICULUM VITAE
Nama : Kurniawan Wardani AP. Hutagaol NIM : 101401050
Alamat Sekarang : Jln. Pasar III No. 103 Kel. Tegal Rejo, Kec. Medan Perjuangan
Alamat Orangtua : Jln. Pasar III No. 103 Kel. Tegal Rejo, Kec. Medan Perjuangan
Telp/Hp : 082276336927
Email : hutagaol.kurniawan@gmail.com
Riwayat Pendidikan
2010 – 2017 : S-1 Ilmu Komputer Universitas Sumatera Utara, Medan 2007 – 2010 : SMA Negeri 3 Medan
2004 – 2007 : SMP Swasta Budi Murni 1 Medan 1998 – 2004 : SD Swasta Budi Murni 6 Medan
Keahlian
Bahasa Pemrograman : Java.
DAFTAR PUSTAKA
Adyatama, A. 2013. Pemanfaatan data mining pada sistem pengambilan keputusan penerimaan karyawan baru dengan metode decision tree dan C4.5. Skripsi. Universitas Sumatera Utara.
Astuti, Y.A. 2011. Analisis perbandingan teknik Support Vector Regression (SVR) dan decision tree C4.5 dalam data mining. Tesis. Universitas Sumatera Utara.
Bentley, Lonnie D. & Whitten, Jeffrey L. 2007. Systems Analysis and Design for the Global Enterprise, McGraw-Hill Education.
Florence, A.M.T. & Savithri, R. 2013. Talent knowledge acquisition using C4.5 classification algorithm. Int. J. of Emerging Technologies in Computational and Applied Sciences 4(4) : 406 – 410.
Jao, C.S. 2010. Decision Support System. Intech : Vukovar.
Kadir, A. 2003. Pengenalan Sistem Informasi. Andi : Yogyakarta.
Kusrini. 2007. Konsep dan Aplikasi Sistem Pendukung Keputusan. CV. Andi Offset : Yogyakarta.
Kusrini & Luthfi, E. H. 2009. Algoritma Data Mining. CV. Andi Offset : Yogyakarta.
Larose, D.T. & Larose, C. D. 2014. Discovering Knowledge in Data : An introduction to data mining. 2nd Edition. John Wiley & Sons, Inc. : Hoboken.
Purwanti, D. 2008 Kebijakan DOWNSIZING; Penyebab dan Dampak yang Ditimbulkannya. Jurnal Bisnis & Manajemen Vol. 4, No. 2
Quinlan, J.R. 1993. C4.5 :Programs for Machine Learning. Morgan Kaufmann Publisher : San Mateo.
Rokach, L. & Maimon, O. 2014. Data Mining with Decision Trees : Theory and application. 2nd Edition. World Scientific Publishing Co. Pte. Ltd. : Singapura.
Sauter, V. L. 2010. Decision Support Systems for Business Intelligence. 2nd Edition. John Wiley & Sons. Inc : Hoboken
Supardi, Y. 2014. Semua Bisa Menjadi Programmer Android. PT. Elex Media Komputindo. Jakarta.
BAB 3
ANALISIS DAN PERANCANGAN
3.1. Analisis Sistem
Di dalam perancangan suatu sistem, diperlukan satu tahap awal yang penting untuk
dilakukan. Tahap ini disebut dengan analisis sistem yang mendeskripsikan tahap-tahap
awal perancangan ataupun pengembangan suatu sistem. Tahap pertama dari analisis
sistem adalah analisis masalah. Adapun tahap ini adalah untuk mempelajari dan
memahami masalah yang akan diselesaikan dengan menggunakan sistem ini.
Selanjutnya adalah analisis kebutuhan sistem yang bertujuan untuk membuat
persyaratan yang akan memenuhi kebutuhan dan permintaan pengguna. Pada tahap
akhir adalah pemodelan sistem.
3.1.1. Analisis Masalah
Dalam perspektif manajemen sumber daya manusia, karyawan atau orang-orang yang
bekerja dalam perusahaan merupakan salah satu sumber keunggulan kompetitif dan
elemen kunci yang penting untuk meraih kesuksesan dalam bersaing dan mencapai
tujuan (Purwanti, 2008). Oleh karena itu, perekrutan karyawan dapat dikatan sebagai
salah satu faktor penentu kesuksesan suatu perusahaan. Penentuan orang yang tepat
pada posisi yang tepat harus lebih diperhatikan pihak pengambil keputusan. Masih
banyak perusahaan yang menggunakan cara manual untuk melakukan perekrutan
karyawan dimana pihak pengambil keputusan seringkali salah dalam menentukan
kelulusan karyawan. Hal ini tentu dapat berpengaruh kepada kinerja perusahaan
secara keseluruhan.
Sistem Pendukung Keputusan (SPK) dapat digunakan untuk membantu pihak
pengambil keputusan dalam membuat suatu keputusan atas masalah perekrutan
dan akurat karena akan dilakukan perhitungan secara otomatis terhadap sistem yang
ada.
Untuk mengidentifikasi masalah tersebut digunakan diagram Ishikawa
(fishbone diagram). Diagram Ishikawa adalah sebuah alat grafis yang digunakan
untuk mengeksplorasi dan menampilkan pendapat tentang komponen inti suatu
kondisi di dalam organisasi. Diagram ini juga dapat menyusuri sumber-sumber
penyebab atas suatu masalah (Russel, Stuart J. & Norvig, P. 2003). Pada Gambar 3.1
akan ditampilkan masalah yang terjadi di dalam perekrutan karyawan pada Blackberry
Service Center Medan.
Masalah Perekrutan Karyawan Blackberry Service Center Medan Metode Material Man Machine Proses seleksi masih dilakukan secara manual Data yang tidak terkomputerisasi Proses seleksi tidak efisien Data tidak tersimpan secara baik Membutuhkn
sistem yang bekerja secara otomatis
Dibutuhkan alat untuk menyimpan data terkomputerisasi
Gambar 3.1 Diagram Ishikawa analisis masalah sistem
Adapun algoritma yang dapat digunakan untuk pemecahan masalah ini adalah
algoritma C4.5. Algoritma ini akan mengklasifikasikan kriteria yang ada untuk
dibentuk menjadi pohon keputusan. Selanjutnya pohon keputusan tersebut akan
menghasilkan rules yang digunakan untuk menentukan kelulusan seorang pelamar.
3.1.2. Analisis Persyaratan
Analisis persyaratan terdiri dari persyaratan fungsional dan non-fungsional.
Persyaratan fungsional berisi persyaratan pokok dari suatu sistem yang wajib ada atau
disediakan dalam sistem tersebut. Sedangkan persyaratan non-fungsional berupa
1. Persyaratan Fungsional
Adapun yang menjadi persyaratan fungsional dari sistem ini adalah sebagai berikut:
a. Aplikasi menghasilkan pilihan keputusan atas masalah perekrutan karyawan
dengan menggunakan algoritma C4.5.
b. Data yang dimasukkan ke dalam aplikasi adalah biodata pelamar dan penilaian
yang termasuk ke dalam kategori yang akan digunakan algoritma C4.5.
2. Persyaratan Non-fungsional
Adapun persyaratan non-fungsional pada sistem ini adalah sebagai berikut :
a. Aplikasi harus mudah digunakan dan dipelajari.
b. Aplikasi tidak memerlukan peralatan tambahan ataupun perangkat pendukung
dalam proses eksekusinya.
c. Aplikasi dapat digunakan sebagai media penyimpanan data pelamar (sebagai
database)
3.1.3. Pemodelan
Pemodelan sistem dilakukan untuk memperoleh gambaran yang lebih jelas tentang
objek apa saja yang akan berinteraksi dengan sistem, serta hal-hal apa saja yang harus
dilakukan oleh sebuah sistem sehingga sistem dapat berfungsi dengan baik sesuai
dengan kegunaannya.
Pada penelitian ini digunakan UML (Unified Modeling Language) sebagai
bahasa pemodelan untuk mendesain dan merancang Sistem Pendukung Keputusan
dalam menentukan kelulusan pelamar. Model UML yang digunakan antara lain use
case diagram, activity diagram, dan sequence diagram.
1. Use Case Diagram
Diagram ini menggambarkan interaksi antara sistem dan sistem eksternal dan para
pengguna. Dengan kata lain, diagram ini secara visual menjelaskan siapa yang akan
menggunakan sistem dan dengan cara apa pengguna mengharapkan untuk berinteraksi
dengan sistem. Naratif use case digunakan sebagai tambahan menjelaskan
langkah-langkah dari setiap interaksi secara tertulis (Bentley & Whitten, 2007). Pada Gambar
3.2 di bawah ini digambarkan use case sistem pendukung keputusan dalam
Gambar 3.2 Use case diagram sistem
Pada Gambar 3.2 dapat dilihat terdapat aktor yaitu HRD yang dapat melihat data
pelamar dan memasukkan data pelamar baru. Pada saat melihat data pelamar,
Pengguna dapat melakukan manipulasi terhadap data yang dipilih. Manipulasi Data
adalah use case pilihan yang dapat dipilih setelah dilakukan Lihat Data, sehingga
Manipulasi Data merupakan perluasan dari Lihat Data. Pada use case Masukkan Data
Baru terdapat use case yang akan dikerjakan selanjutnya yaitu melakukan Perhitungan
Algoritma C4.5 dan melakukan Simpan Data, sehingga hubungan antar use case
menggunakan relasi include.
2. Activity Diagram
Activity diagram adalah suatu diagram yang digunakan untuk menggambarkan aliran
proses usaha secara grafis, langkah-langkah dari suatu use case, atau logika dari suatu
tingkah laku objek (method) (Bentley & Whitten, 2007). Nodes bulat berwarna hitam
menunjukkan awal proses sedangkan nodes bulat berwarna hitam ditengah
menunjukkan akhir proses. Sistem ini dibagi menjadi dua bagian terpisah untuk
menunjukkan atau menyederhanakan proses-proses yang terjadi pada user maupun
pada sistem. Pada kasus ini activity diagram dibagi menjadi dua, yaitu diagram untuk
melihat hasil pengujian dan pengujian data baru. Adapun diagram untuk melihat hasil
pengujian dapat dilihat pada Gambar 3.3.
Aplikasi SPK Perekrutan Karyawan
HRD
Lihat Data <<extend>> Manipulasi Data
Masukkan Data Baru
Perhitungan Algoritma C4.5
Simpan Data
<<include>>
Gambar 3.3 Activity Diagram Lihat Data
Dari Gambar 3.3 HRD pertama kali akan memilih untuk menampilkan
database pelamar. Lalu oleh sistem, data akan ditampilkan. HRD akan memilih untuk
melakukan manipulasi hasil pengujian pelamar atau keluar dari menu menampilkan
data. Jika HRD memilih data pelamar, data yang sudah dimanipulasi akan disimpan ke
dalam database oleh sistem. Kemudian sistem akan kembali ke menu utama.
HRD Aplikasi SPK
Memilih Lihat Data
Menampilkan Database Pelamar
Memilih Data Pelamar
Manipulasi Data Pelamar
Gambar 3.4 Activity Diagram pengujian data baru
Diagram 3.4 adalah activity yang menunjukkan alur proses untuk pengujian data baru.
Pengguna memasukkan biodata kemudian hasil tes pelamar ke dalam sistem. Lalu
sistem akan melakukan pengujian terhadap data yang sudah dimasukkan untuk
menentukan lulus atau tidaknya pelamar tersebut. Kemudian setelah hasil didapatkan,
sistem akan menampilkan database pelamar untuk melihat bahwa benar data telah
tersimpan ke dalam database sistem.
HRD Aplikasi SPK
Memilih Memasukkan Data Baru
Menampilkan Form Isi Biodata
Mengisi Form Biodata Pelamar
Simpan Data Pelamar
Menampilkan Form Isi Nilai Mengisi Form Nilai
Pelamar
Perhitungan C4.5
Simpan Nilai dan Hasil Menampilkan Hasil
3. Sequence Diagram
Sequence diagram adalah suatu diagram yang menggambarkan interaksi antara actor
dan sistem pada use-case scenario. Diagram ini juga membantu melihat pesan
high-level yang masuk dan keluar dari sistem (Bentley & Whitten, 2007). Garis penuh
menunjukkan input yang dilakukan oleh user menuju sistem sedangkan garis
putus-putus yang mengarah ke bagian user menunjukkan output yang dihasilkan oleh sistem.
Tiap input dan output yang terjadi memiliki activation bars yang menunjukkan
periode waktu dimana proses dilakukan.
Gambar 3.5 Sequence Diagram lihat, ubah, dan hapus data
Gambar 3.5 menampilkan interaksi antara pengguna terhadap sistem dan database.
Pengguna dapat melihat, mengubah, dan menghapus data pelamar. Penggun
a
Melihat Hasil Pelamar
Menampilkan hasil kelulusan
pelamar
Database
Buka Tabel Pelamar Sistem
Ubah Data
Form Ubah Biodata dan
Nilai
Buka Tabel Pelamar
Ubah Biodata
dan Nilai Simpan Biodata
dan Nilai Baru
Hapus Data
Menampilkan hasil kelulusan
pelamar
Gambar 3.6 Sequence Diagram pengujian data baru
Gambar 3.6 menampilkan bagaimana proses menguji data baru. Terlihat bahwa
pertama pengguna harus memasukkan data dan nilai pelamar. Dari situ, sistem akan
menentukan kelulusan pelamar untuk disimpan di database dan ditampilkan kepada
pengguna.
4. Flowchart Algoritma C4.5
Flowchart yang menggambarkan langkah-langkah perhitungan Algoritma C4.5 dapat
dilihat pada Gambar 3.7
Gambar 3.7 Flowchart Algoritma C4.5
Penggun a
Input data pelamar
Input nilai pelamar
Menampilkan hasil kelulusan
pelamar
Database
Simpan Data Sistem
M ulai
Inp ut nilai masing-masing atribut
Tentukan Entrop i dan Gain atribut
maxGain = node(i)
Cek nilai atribut untuk menjadi cabang node(i)
Nilai atribut = cabang
Pada Gambar 3.7 terdapat beberapa proses yang terjadi ketika algoritma berjalan.
Pertama user akan menginputkan nilai yang menjadi kriteria perhitungan. Proses
berikutnya adalah, sistem akan membagi atribut tersebut untuk ditentukan entropy dan
gainnya masing-masing. Setelah dilakukan pembandingan, sistem akan mengambil
atribut dengan gain tertinggi untuk dijadikan root tree. Selanjutnya, sistem akan
melakukan pengecekan untuk nilai atribut root tersebut untuk dibagi menjadi cabang
dari tree. Jika nilai atribut memenuhi kriteria menjadi cabang, maka akan dilakukan
pengulangan perhitungan entropy dan gain. Jika tidak, proses akan dianggap selesai.
3.2. Perancangan Antarmuka Sistem
Antarmuka pengguna (User Interface) merupakan mekanisme komunikasi antara
pengguna (user) dengan sistem. Antarmuka pemakai dapat menerima informasi dari
pengguna dan memberikan informasi kepada pengguna untuk membantu
mengarahkan alur penelusuran masalah sampai ditemukan suatu solusi. Dengan kata
lain antarmuka pemakai sebagai media antara pemakai dan komputer agar dapat saling
berinteraksi, sehingga pengguna merasakan adanya keramahan sistem.
3.2.1. Antarmuka Menu Utama
Antarmuka Menu Utama atau Menu Awal adalah antarmuka pertama yang tampil
pada saat aplikasi dijalankan seperti terlihat pada Gambar 3.8.
Gambar 3.8 Rancangan Menu Utama DATA
Aplikasi Perekrutan Karyawan
Blackberry Service Center Medan
TENTANG
a
PENGUJIAN
BANTUAN
b
c
Keterangan Gambar 3.8 :
a. Button Data
Adalah tombol yang berfungsi untuk mengantarkan pengguna ke antarmuka
Data
b. Button Pengujian
Adalah tombol yang berfungsi untuk mengantarkan pengguna ke antarmuka
Pengujian
c. Button Bantuan
Adalah tombol yang berfungsi untuk mengantarkan pengguna ke antarmuka
Bantuan
d. Button Tentang
Adalah tombol yang berfungsi untuk mengantarkan pengguna ke antarmuka
Tentang
3.2.2. Antarmuka Menu Data
Menu Data akan menampilkan database nama-nama pelamar yang sudah pernah
disimpan di dalam aplikasi. Nama tersebut ditampilkan dengan menggunakan sebuah
ListView. Adapun tampilan antarmuka Menu Data dapat dilihat pada Gambar 3.9.
Gambar 3.9 Rancangan Menu Data
Jika salah satu nama pada List View dipilih, pengguna akan dibawa ke halaman Hasil
Pengujian.
3.2.3. Antarmuka Menu Pengujian
Pada antarmuka ini, pengguna dapat memasukkan data pelamar baru dan nilai yang
diperlukan untuk pembentukan tree. Rancangan antarmuka ini dapat dilihat pada
Gambar 3.10.
Gambar 3.10 Rancangan Pengujian
Keterangan Gambar 3.10 :
a. Text Field Nama
Berfungsi sebagai kolom inputan nama pelamar
b. Text Field Alamat
Berfungsi sebagai kolom inputan alamat pelamar
c. Text Field No. Telepon
Berfungsi sebagai kolom inputan nomor telepon pelamar
d. Text Field Pend. Terakhir
Berfungsi sebagai kolom inputan pendidikan formal terakhir pelamar
e. Text Field Pengalaman
Berfungsi sebagai kolom inputan apakah pelamar memiliki pengalaman
bekerja
Nama
Alamat
No. Telp
Pend. Terakhir
Pengalaman
Psikotes
Intellegensi
HASIL
a
b
c
d
e
f
g
BIODATA PELAMAR
j CEK
h
f. Text Field Psikotes
Adalah kolom inputan nilai psikotes pelamar
g. Text Field Status Intellegensi
Adalah kolom inputan nilai intellegensi pelamar
h. Button Cek
Berfungsi untuk menguji kelulusan pelamar
i. Button Simpan
Adalah tombol untuk menyimpan biodata pelamar dan menampilkan hasil data
yang telah disimpan
j. Text View Hasil
Berfungsi untuk menampilkan hasil pengujian kelulusan pelamar
3.2.4. Antarmuka Menu Mengubah Data Pelamar
Adapun antarmuka ini berfungsi untuk mengubah data pelamar yang ada pada
ListView di antarmuka Menu Data. Rancangan menu ini dapat dilihat pada Gambar
3.11.
Gambar 3.11 Rancangan Mengubah Data Pelamar Nama
Alamat
No. Telp
Pend. Terakhir
Pengalaman
Psikotes
Intellegensi
HASIL
a
b
c
d
e
f
g
UBAH BIODATA PELAMAR
j CEK
h
Keterangan Gambar 3.11 :
a. Text Field Nama
Berfungsi sebagai kolom inputan nama pelamar
b. Text Field Alamat
Berfungsi sebagai kolom inputan alamat pelamar
c. Text Field No. Telepon
Berfungsi sebagai kolom inputan nomor telepon pelamar
d. Text Field Pend. Terakhir
Berfungsi sebagai kolom inputan pendidikan formal terakhir pelamar
e. Text Field Pengalaman
Berfungsi sebagai kolom inputan apakah pelamar memiliki pengalaman
bekerja
f. Text Field Psikotes
Adalah kolom inputan nilai psikotes pelamar
g. Text Field Status Intellegensi
Adalah kolom inputan nilai intellegensi pelamar
h. Button Cek
Berfungsi untuk menguji kelulusan pelamar
i. Button Simpan
Adalah tombol untuk menyimpan biodata pelamar dan menampilkan hasil data
yang telah disimpan
j. Text View Hasil
Berfungsi untuk menampilkan hasil pengujian kelulusan pelamar
3.2.5. Antarmuka Menu Hasil
Antarmuka ini adalah antarmuka yang menampilkan hasil kelulusan seorang pelamar.
Gambar 3.12 Rancangan Hasil
Keterangan Gambar 3.12 :
a. Text View Nama
Berfungsi untuk menampilkan nama pelamar
b. Text View No. Telepon
Berfungsi untuk menampilkan No. Telepon pelamar
c. Text View Alamat
Berfungsi untuk menampilkan alamat pelamar
d. Text View Pendidikan Terakhir
Berfungsi untuk menampilkan pendidikan terakhir pelamar
e. Text View Pengalaman Bekerja
Berfungsi untuk menampilkan apakah pelamar memiliki pengalaman bekerja
sebelum melamar
f. Text View Nilai Psikotes
Berfungsi untuk menampilkan nilai psikotes pelamar
g. Text View Nilai Intellegensi
Berfungsi untuk menampilkan nilai intellegensi pelamar Hasil Kelulusan
Nama
a
No. Telp
b
Alamat
c
Pendidikan Terakhir
d
Pengalaman Bekerja
e
Nilai Psikotes
f
Nilai Intellegensi
g
Hasil
h. Text View Kelulusan
BAB 4
IMPLEMENTASI DAN PENGUJIAN SISTEM
4.1. Implementasi Sistem
Tahap implementasi merupakan tahapan yang dikerjakan setelah analisis dan
perancangan sistem selesai dilakukan sebagaimana telah diuraikan pada Bab 3.
Tahapan implementasi sistem ini harus dilalui dalam proses pengembangan perangkat
lunak dari suatu sistem karena merupakan proses pengubahan spesifikasi sistem
menjadi sistem yang dapat dijalankan.
Sistem perekrutan karyawan ini menggunakan algoritma C4.5 di dalam
perancangannya. Algoritma ini berfungsi untuk menghasilkan kelulusan seorang
pelamar yang melamar di Blackberry Service Center Medan. Sebelum melakukan
perhitungan algoritma, data pelamar yang digunakan untuk pengujian dijadikan
sebagai data training. Data tersebut adalah data pelamar yang ada antara tahun
2012-Januari 2015 yaitu sebanyak 144 data dengan rincian 19 pelamar dinyatakan lulus dan
125 pelamar tidak lulus. Dari data tersebut, didapat kriteria yang menjadi penilaian
pihak pengambil keputusan untuk menentukan kelulusan seorang pelamar. Kriteria
inilah yang akan menjadi atribut di dalam menghasilkan sebuah analisa untuk
membuat pohon keputusan dari masalah ini. Atribut itu adalah pendidikan terakhir,
pengalaman bekerja, nilai psikotes, dan nilai intellegensi. Berdasarkan data yang
diperoleh dari Blackberry Service Center, atribut tersebut memiliki nilainya
masing-masing.
1. Pendidikan terakhir
Atribut pendidikan terakhir memiliki nilai Strata I, Diploma III, Diploma I,
2. Pengalaman bekerja
Atribut ini dibagi atas pilihan Ya dan Tidak. “Ya” berarti memiliki
pengalaman bekerja, “Tidak” berarti belum memiliki pengalaman bekerja
(fresh graduate).
3. Nilai psikotes
Atribut ini berisi hasil dari ujian psikotes seorang pelamar. Nilai psikotes
pelamar berisi nilai antara 0-9, dibagi menjadi 2 kelas yaitu 0-4 dan 5-9.
4. Nilai intellegensi
Nilai intellegensi dibagi menjadi 0, 1, 2, 3.
Dalam perancangan pohon keputusan dengan algoritma C4.5, perlu dibuat Data
[image:33.595.104.531.504.755.2]Atribut Target. Adapun Tabel Data Atribut seperti terlihat pada Tabel 4.1.
Tabel 4.1 Data Atribut Target
Atribut Target Deskripsi
Ya Pelamar Lulus
Tidak Pelamar Tidak Lulus
Selanjutnya, Data Atribut Target tersebut akan digunakan untuk menganalisis data set
yang ada berdasarkan variabel yang telah ditentukan seperti terlihat pada Tabel 4.2.
Tabel 4.2 Analisis Data Set
Atribut Nilai Sum
(Nilai)
Sum (Ya)
Sum (Tidak)
Pendidikan Terakhir SMA/SMK 39 5 34
D1 2 2 0
D3 41 2 39
S1 62 8 54
Pengalaman Ya 86 14 72
Tidak 58 5 53
Psikotes 0-4 105 0 105
5-9 39 19 20
1 35 0 35
2 50 10 40
3 30 9 21
Algoritma C4.5 ini menggunakan nilai entropy dan gain dari setiap atribut di dalam
penentuan root dan node pohon keputusan. Langkah pertama dalam mencari entropy
dan gain variabel adalah menghitung entropy total dari data set dengan menggunakan
rumus
� � = ∑ − × � �
�=
Maka didapat :
� � = (− 9 × � 9 ) + (− × � ) = ,
Untuk langkah selanjutnya, algoritma akan menentukan gain dan entropy dari
masing-masing atribut. Untuk menghitung gain masing-masing variabel, digunakan rumus :
�� �, � = � � − ∑�� × � �
�
�=
Adapun analisis entropy dan gain masing-masing variabel seperti terlihat pada Tabel
4.3.
Tabel 4.3 Perhitungan Entropy dan Gain
No-de
Variabel Nilai Sum
(Nilai) Sum (Ya)
Sum
(Tidak) Entropy
Gain
1 Pendidikan
Terakhir
SMA/SMK 39 5 34 0,552495114
D1 2 1 1 1
D3 41 4 37 0,461216041
S1 62 9 53 0,597597776
0,010606338
Tidak 58 5 53 0,423680572
0,009311589
Psikotes 0-4 105 0 105 0
5-9 39 19 20 0,999525689
0,292041944
Intellegensi 0 29 0 29 0
1 35 0 35 0
2 50 10 40 0,721928095
3 30 9 21 0,881290899
0,12847507
Dari tabel di atas dapat dilihat bahwa Psikotes adalah atribut dengan nilai gain
tertinggi, yaitu 0,292042. Psikotes diletakkan sebagai root tree. Atribut Psikotes
memiliki dua nilai yaitu 0-4 dan 5-9. Dari tabel dapat dilihat bahwa tidak ada data
yang lulus pada data set, sehingga menyebabkan salah satu cabang dari root psikotes
adalah atribut target “Tidak”. Sedangkan nilai 5-9 masih merupakan pencarian node
tree yang lebih dalam. Dengan hasil tersebut, didapat pohon keputusan awal seperti
terlihat pada Gambar 4.1.
1 Psikotes
1.1 ?
5-9
[image:35.595.82.554.83.306.2]Tidak 0-4
Gambar 4.1 Pohon keputusan node 1
Data awal yang berisi 144 data difilter dengan mengambil data yang memiliki nilai
atribut Psikotes = 5-9, yaitu sebanyak 39 data dengan rincian 19 pelamar diterima dan
20 pelamar ditolak. Dari data tersebut, dihitung lagi entropy total dari data yang sudah
� � = − ( ) × � ( ) + − ( ) × � ( ) = ,
Lalu data tersebut dianalisis lagi untuk mencari nilai entropy dan gain dari
[image:36.595.82.551.177.526.2]masing-masing atribut yang tersisa. Hasil analisis tersebut dapat dilihat pada Tabel 4.4.
Tabel 4.4 Analisis Atribut untuk Node 1.1
No-de
Atribut Nilai Sum
(Nilai) Sum (Ya)
Sum
(Tidak) Entropy
Gain
1.1 Pendidikan
Terakhir
SMA/SMK 9 5 4 0,99107606
D1 1 1 0 0
D3 10 4 6 0,970950594
S1 19 9 10 0,98000884
0,03564858
Pengalaman Ya 19 14 5 0,831474388
Tidak 20 5 15 0,811278124
0,17840836
Intellegensi 0 7 0 7 0
1 4 0 4 0
2 17 10 7 0,977417818
3 11 9 2 0,684038436
0,38053851
Berdasarkan hasil analisis di atas, diperoleh atribut intellegensi dengan nilai gain
paling tinggi, yaitu sebesar 0,380538. Selanjutnya, atribut intellegensi menjadi node
1.1 pada pohon keputusan. Dari tabel diperoleh bahwa atribut memiliki 4 nilai yaitu 0,
1, 2, dan 3. Data yang dihasilkan untuk nilai 0 dan 1 adalah nol, sehingga cabang
untuk nilai 0 dan 1 adalah “Tidak”. Untuk mendapat percabangan dari nilai 2 dan 3,
tabel sebelumnya difilter dan dilakukan analisis kembali dengan nilai intellegensi = 2
1 Psikotes 1.1 Intellegensi 5-9 Tidak 0-4 1.1.3 ? 2 1.1.4 ? 3 Tidak 1 Tidak 0
Gambar 4.2 Pohon Keputusan Node 1.1
Perhitungan pohon keputusan terbagi menjadi dua yaitu pencarian node 1.1.3 dan
1.1.4.
1. Node 1.1.3
Node ini merupakan percabangan dari nilai intellegensi = 2. Sehingga analisis data
yang dilakukan adalah data yang memiliki nilai psikotes = 5-9 dan nilai intellegensi =
2. Dari Tabel 4.4 dapat dilihat bahwa ada 17 data pelamar yang memiliki nilai
psikotes = 5-9 dan nilai intellegensi = 2, dengan rincian 10 pelamar lulus dan 7 lagi
tidak lulus. Sehingga nilai entropy untuk analisis data adalah :
� � = − ( ) × � ( ) + − ( ) × � ( ) = ,
[image:37.595.136.499.81.326.2]Adapun hasil analisis untuk node 1.1.3 dapat dilihat pada Tabel 4.5.
Tabel 4.5 Analisis Atribut untuk Node 1.1.3
No-de
Variabel Nilai Sum
(Nilai) Sum (Ya)
Sum
(Tidak) Entropy
Gain
1.1.3 Pendidikan
Terakhir
SMA/SMK 4 3 1 0,811278
D3 6 3 3 1
S1 6 3 3 1
0,080646494
Pengalaman Ya 10 10 0 0
Tidak 7 0 7 0
0,977417818
Hasil analisis atribut menunjukkan bahwa atribut pengalaman memiliki nilai gain
yang lebih tinggi daripada atribut pendidikan terakhir. Dengan begitu, atribut
pengalaman dapat diterima sebagai node 1.1.3. Atribut pengalaman memiliki nilai Ya
dan Tidak. Dari hasil analisis terlihat bahwa semua data dengan nilai pengalaman =
Ya dinyatakan lulus dan data dengan nilai pengalaman = Tidak dinyatakan tidak lulus.
Sehingga pohon keputusan sementara dapat digambarkan seperti pada Gambar 4.3
1 Psikotes
1.1 Intellegensi
5-9
Tidak 0-4
1.1.3 Pengalaman 2
1.1.4 ? 3
Tidak 1
Tidak
0
Ya Ya
[image:38.595.136.498.384.717.2]Tidak Tidak
2. Node 1.1.4
Ulangi lagi analisis dengan cara filter data yang memiliki nilai Psikotes = 5-9 dan
Intellegensi = 3 untuk mencari node 1.1.4. Hasilnya adalah didapat 11 data dengan
rincian 9 pelamar dinyatakan lulus dan 2 pelamar tidak lulus. Maka, didapat nilai
entropy untuk analisis data yang memiliki nilai Psikotes = 5-9 dan Intellegensi = 3
adalah :
� � = − ( ) × � ( ) + − ( ) × � ( ) = ,
Adapun hasil analisis data dengan nilai Psikotes = 5-9 dan Intellegensi = 3 terlihat
[image:39.595.86.552.317.556.2]seperti pada Tabel 4.5.
Tabel 4.6 Analisis Atribut untuk Node 1.1.4
No-de
Atribut Nilai Sum
(Nilai) Sum (Ya)
Sum
(Tidak) Entropy
Gain
1.1.4 Pendidikan
Terakhir
SMA/SMK 3 2 1 0,918296
D1 0 0 0 0
D3 1 1 0 0
S1 7 6 1 0,591673
0,057075076
Pengalaman Ya 4 4 0 0
Tidak 7 0 7 0
0,684038436
Dari hasil analisis dapat dilihat bahwa atribut pengalaman memiliki nilai gain yang
lebih tinggi daripada pendidikan. Pengalaman dapat diterima sebagai node 1.1.4,
1 Psikotes
1.1 Intellegensi
5-9
Tidak 0-4
1.1.3 Pengalaman
2
1.1.4 Pengalaman 3
Tidak
1
Tidak
0
Ya Ya
Tidak Tidak
Ya Ya
[image:40.595.109.526.78.393.2]Tidak Tidak
Gambar 4.4 Pohon Keputusan Node 1.1.4
Dari pohon keputusan diperoleh rules yang akan digunakan untuk penentuan
kelulusan pelamar, yaitu :
IF Psikotes < 5 THEN Kelulusan = Tidak
IF Psikotes > 4 ^ Intellegensi = 0-1 THEN Kelulusan = Tidak
IF Psikotes > 4 ^ Intellegensi = 2 ^ Pengalaman = Ya THEN Kelulusan = Ya
IF Psikotes > 4 ^ Intellegensi = 2 ^ Pengalaman = Tidak THEN Kelulusan = Tidak
IF Psikotes > 4 ^ Intellegensi = 3 ^ Pengalaman = Ya THEN Kelulusan = Ya
IF Psikotes > 4 ^ Intellegensi = 3 ^ Pengalaman = Tidak THEN Kelulusan = Tidak
4.2. Antarmuka Sistem
Ada beberapa antarmuka yang telah dirancang pada aplikasi ini. Adapun tujuan
pembuatan antarmuka ini adalah untuk memudahkan pengguna dalam penggunaan
4.2.1. Form Menu Utama
Form Menu Utama ini merupakan form yang pertama kali muncul ketika aplikasi ini
dijalankan. Seperti terlihat pada Gambar 4.5, form ini terdiri dari empat button, yaitu
Data, Pengujian, Bantuan, dan Tentang. Data berfungsi untuk mengantar pengguna
menuju form Data. Pengujian berfungsi untuk mengantar pengguna menuju form
Pengujian, Bantuan adalah button yang mengantar pengguna menuju form bantuan.
[image:41.595.271.365.252.410.2]Tentang akan mengantar pengguna menuju form Tentang.
Gambar 4.5 Form Menu Utama
4.2.2. Form Menu Data
Form Menu Data akan menampilkan daftar nama-nama pelamar yang sudah pernah
dimasukkan ke dalam aplikasi seperti terlihat pada Gambar 4.6.
Gambar 4.6 Form Menu Data
[image:41.595.268.367.521.683.2]4.2.3. Form Pengujian
Pada form ini, pengguna akan memasukkan biodata seorang pelamar baru untuk
kemudian disimpan ke dalam database. Pada Gambar 4.7 terlihat beberapa field yang
harus diisi oleh pengguna, yaitu Nama, Alamat, No. Telepon, Pendidikan Terakhir,
Pengalaman Bekerja, Nilai Psikotes, dan Nilai Intellegensi. Setelah semua field terisi,
pengguna dapat memilih button CEK untuk mendapatkan hasil pengujian. Setelah
diperoleh hasil pengujian, akan muncul button baru dengan nama SIMPAN yang
[image:42.595.256.375.250.438.2]berfungsi untuk menyimpan data yang sudah diuji.
Gambar 4.7 Form Pengujian
4.2.4. Form Hasil
Form Hasil adalah form yang berfungsi untuk menampilkan biodata, nilai, dan hasil
kelulusan seorang pelamar yang dipilih dari listView yang ada pada form Menu Data.
Adapun tampilan form ini seperti terlihat pada Gambar 4.11.
[image:42.595.268.363.579.730.2]Pada form ini terdapat dua button, yaitu UBAH dan HAPUS. Button UBAH berfungsi
untuk mengubah data yang dipilih, dan HAPUS untuk menghapus data yang dipilih.
4.2.5. Form Bantuan
Form Bantuan berisi petunjuk penggunaan aplikasi, yaitu fungsi menu utama. Berikut
ditampilkan form Bantuan pada Gambar 4.9
Gambar 4.9 Form Bantuan
4.2.6. Form Tentang
Form ini adalah form yang berisi judul skripsi, nama, dan NIM penulis. Tampilan dari
form ini dapat dilihat pada Gambar 4.10.
[image:43.595.249.384.546.748.2]4.3. Pengujian Sistem
Pengujian sistem dilakukan untuk memeriksa kinerja antar komponen sistem yang
diimplementasikan. Tujuannya adalah untuk memastikan bahwa elemen atau
komponen dari sistem telah berfungsi sesuai dengan yang diharapkan. Pengujian akan
dilakukan dengan metode black box testing. Pengujian black box berfokus kepada
pengujian dengan melihat fungsi-fungsi yang ada di dalam sistem tanpa harus
mengetahui bagaimana fungsi tersebut dibuat programnya. Pada sistem perekrutan
karyawan ini, pengujian merujuk pada fungsi-fungsi yang dimiliki oleh sistem,
kemudian membandingkan hasil keluaran program dengan hasil yang diharapkan. Bila
hasil yang diharapkan sesuai dengan hasil pengujian, hal ini berarti perangkat lunak
sesuai dengan desain yang telah ditentukan sebelumnya. Bila belum sesuai, maka
perlu dilakukan pengecekan dan perbaikan lebih lanjut.
Pada Tabel 4.7, akan ditampilkan hasil pengujian 20 data yang diambil secara acak
dari total 144 data pelamar.
Tabel 4.7 Data Pengujian Sampel
Id Pendidikan Terakhir Pengalaman
Bekerja Psikotes Intellegensi Kelulusan
6 S1 Ya 4 3 Tidak
7 S1 Tidak 7 3 Ya
18 S1 Tidak 5 0 Tidak
20 D3 Tidak 5 2 Tidak
25 SMA Ya 3 0 Tidak
30 S1 Ya 3 3 Tidak
39 D3 Ya 4 1 Tidak
42 S1 Ya 2 3 Tidak
53 S1 Ya 0 2 Tidak
57 S1 Ya 3 2 Tidak
61 SMA Ya 4 2 Tidak
83 D3 Ya 2 1 Tidak
96 SMA Ya 6 2 Ya
107 D3 Ya 4 2 Tidak
110 S1 Ya 3 0 Tidak
114 SMA Tidak 3 2 Tidak
121 D3 Ya 3 0 Tidak
126 D3 Tidak 3 2 Tidak
133 S1 Tidak 1 1 Tidak
4.3.1. Pengujian Perhitungan Algoritma
Hasil pengujian data pelamar dengan menggunakan aplikasi dapat dilihat pada Tabel
4.8.
Tabel 4.8 Tabel Hasil Pengujian Aplikasi Penentuan Kelulusan Karyawan Blackberry Service Center Medan
Id
Pelamar Kelulusan Gambar Hasil Pengujian Aplikasi
6 Tidak
[image:45.595.101.529.397.685.2]7 Ya
Gambar 4.12 Hasil Uji Sampel 2
18 Tidak
20 Tidak
Gambar 4.14 Hasil Uji Sampel 4
25 Tidak
30 Tidak
Gambar 4.16 Hasil Uji Sampel 6
39 Tidak
42 Tidak
Gambar 4.18 Hasil Uji Sampel 8
53 Tidak
57 Tidak
Gambar 4.20 Hasil Uji Sampel 10
61 Tidak
68 Ya
Gambar 4.22 Hasil Uji Sampel 12
83 Tidak
96 Ya
Gambar 4.24 Hasil Uji Sampel 14
107 Tidak
110 Tidak
Gambar 4.26 Hasil Uji Sampel 16
114 Tidak
121 Tidak
Gambar 4.28 Hasil Uji Sampel 18
126 Tidak
133 Tidak
Gambar 4.30 Hasil Uji Sampel 20
<