• Tidak ada hasil yang ditemukan

Implementasi Algoritma C4.5 Untuk Perekrutan Karyawan Berbasis Android (Studi Kasus : Blackberry Service Center Medan)

N/A
N/A
Protected

Academic year: 2017

Membagikan "Implementasi Algoritma C4.5 Untuk Perekrutan Karyawan Berbasis Android (Studi Kasus : Blackberry Service Center Medan)"

Copied!
14
0
0

Teks penuh

(1)

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) {

Intent intent = new Intent(MainActivity.this, About.class); startActivity(intent);

} }); } }

(2)

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;

(3)

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());

(4)

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();

(5)

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;

(6)

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);

(7)

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() +"'," +

(8)

} }); }

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){

(9)

} } }

//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);

(10)

@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; }

(11)

}

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; }

}

(12)

//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;

(13)

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); }

(14)

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

:

[email protected]

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.

Multimedia

:

Adobe Illustrator, Adobe Photoshop.

Referensi

Dokumen terkait

public class MainActivity extends Activity { private DrawerLayout mDrawerLayout ;. private ListView

public static String PassTwo(String text, long e, long n) throws UnsupportedEncodingException {. byte[] plainByte = Base64.decode(text, Base64.

import java.util.List;. public class LokasiActivity extends

public class Enkripsi_File extends AppCompatActivity implements View.OnClickListener {. Button choose, proses_double, proses_ttm, simpan;

public class TempatHidup extends ListActivity{ String [] TempatHidup = {. &#34;Hidup di Darat&#34;,&#34;Hidup di Air&#34;,&#34;Hidup di Dua Alam&#34; };