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