Struktur Data Algoritma - Tree - Aplikasi Test Kepribadian MBTI
Struktur Data Algoritma - Tree - Aplikasi Test Kepribadian MBTI
Sebagai tugas ujian akhir semester mata kuliah Struktur Data & Algoritma
Disusun Oleh :
JAKARTA
BAB I
PENDAHULUAN
1.1 Latar Belakang
Seiring dengan meningkatnya angka pencarian kerja, memberikan tugas yang cukup berat
bagi tim/seorang HRD (Human Resource Development) dalam merekrut karyawan terbaik untuk
perusahaannya. Selain dinilai dari skill dan kemampuan kerja, kepribadian seseorang juga
memiliki peran yang penting dalam memilih karyawan di berbagai perusahaan. Oleh karena itu,
dibutuhkan sebuah metode untuk mencari tau tipe kepribadian agar memudahkan tim recruiter
untuk menentukan keputusan siapa saja karyawan terpilih yang dapat bekerja di perusahannya.
Saat ini metode yang paling sering digunakan dan memiliki tingkat akurasi yang tinggi adalah tes
MBTI (Myers-Briggs Type Indicator).
1. Membantu tim HRD dalam menentukan kepribadian setiap calon karyawan yang
mendaftar melalui test berbasis web yang diberikan
2. Mempermudah sistem perekrutan karyawan sesuai dengan kepribadian yang dimiliki oleh
calon karyawan
3. Mengorganisir data calon karyawan secara efisien dan sistematis
4. Transparansi data dalam pengerjaan tes baik oleh peserta maupun admin
5. Objektivitas dalam penilaian tes
BAB II
LANDASAN TEORI
2.1 Definisi MBTI
Myers-Birggs Type Indicator (MBTI) adalah psikotes yang dirancang untuk mengukur preferensi
psikologis seseorang dalam melihat dunia dan membuat keputusan. Psikotes ini dirancang untuk
mengukur kecerdasan individu, bakat, dan tipe kepribadian seseorang.
Sampai saat ini, tes MBTI adalah tes kepribadian yang paling banyak dipakai di dunia. Tes ini
juga dipakai untuk mengetahui karakter kepribadian karyawan perusahaan agar dapat
ditempatkan pada bidang-bidang yang membuat potensi karyawan tersebut optimal. Diantara
sekian banyak tes kepribadian yang paling akurat dan paling banyak digunakan adalah MBTI
(Myers Brigss Type Indicator).
MBTI bersandar pada empat dimensi utama yang saling berlawanan. Masing-masing memiliki
sisi positif dan sisi negatif. Berikut empat skala kecenderungan MBTI, yaitu :
Dimensi IE untuk melihat orientasi energy, apakah ke dalam atau keluar. Ekstrovert artinya
pribadi yang menyukai dunia luar. Tipe kepribadian ini senang bergaul, menyenangi interaksi
sosial, menyukai aktivitas dengan orang lain, dan berfokus pada dunia luar. Sebaliknya, tipe
introvert adalah pribadi yang menyukai dunia dalam (diri sendiri). Tipe ini suka menyendiri,
merenung, membaca, menulis, dan tidak terlalu menyukai pergaulan dengan banyak orang.
Individu dengan tipe kepribadian ini mampu bekerja sendiri, berkonsentrasi dan fokus. Tipe
kepribadian ini bagus dalam pekerjaan pengolahan data dan back office.
Dimensi SI melihat bagaimana individu memproses data. Sensing memproses data dengan cara
bersandar pada fakta yang konkret, praktis, realistis dan melihat data apa adanya. Sensing
menggunakan pedoman pengalaman dan data konkret serta memilih cara-cara yang sudah
terbukti. Individu tipe kepribadian ini fokus pada masa kini atau hal-hal apa saja yang bisa
diperbaiki pada masa sekarang. Individu sensing bagus dalam perencanaan teknis dan detail
aplikatif. Tipe intuition memproses data dengan melihat pola dan hubungan, pemikir abstrak,
konseptual, serta melihat bagaimana kemungkinan yang bisa terjadi. Tipe intuition berpedoman
pada imajinasi, memilih cara unik, dan berfokus pada masa depan atau apa yang akan dicapai
pada masa mendatang. Tipe ini sangat inovatif, penuh insprasi dan ide unik, bagus untuk
penyusunan konsep, ide dan visi jangka panjang.
Dimensi terakhir melihat bagaimana derajat fleksibilitas seseorang. Judging pada hal ini
bukanlah judging untuk menghakimi, namun pada hal ini bertumpu pada rencana yang
sistematis, senantiasa berpikir dan bertindak teratur. Tipe judging tidak suka akan hal-hal
mendadak atau diluar perencanaan. Individu tipe ini bagus dalam penjadwalan, penetapan
struktur, dan perencanaan step by step. Tipe perceiving adalah mereka yang bersifat spontan,
adaptif, dan bertindak secara acak untuk melihat berbagai peluang yang muncul. Perubahan
mendadak bukanlah suatu masalah bagi tipe ini. Bagus dalam menghadapi perubahan dan situasi
mendadak.
Kuesioner yang didasarkan pada empat skala ini akan menghasilkan enam belas kemungkinan
kombinasi atau tipe-tipe kepribadian yang luas, yaitu:
1. ISTJ (Bertanggungjawab)
· Pendengar yang baik, setia, hanya mau berbagi pada orang terdekat
2. ISFJ (Setia)
3. ISTP (Pragmatis)
· Tenang, pendiam, cenderung kaku, dingin
4. ISFP (Artistik)
· Biasanya tidak mau memimpin, tetapi menjadi pelaksana atau pengikut yang
setia
5. INFJ (Reflektif)
6. INTJ (Independen)
· Punya keinginan untuk berkembang dan lebih maju dari orang lain
7. INFP (Idealis)
· Sangat perhatian dan peka dengan perasaan orang lain
8. INTP (Konseptual)
· Cenderung kritis, skeptis, pesimis, dan mudah curiga pada orang lain
9. ESTP (Spontan)
· Sangat sistematis
· Selalu melakukan sesuatu yang manis bagi orang lain tanpa memikirkan diri
sendiri
· Berbakat pemimpin
Diagram Tree
1. Halaman Login
Jika calon peserta belum memiliki akun untuk masuk kedalam halaman tes, peserta dapat
registrasi calon dan selanjutnya dapat melakukan login kembali.
3. Halaman Admin
I Introvert E Extrovert
S Sense N Intuition
T Thinking F Feeling
J Judging P Perceiving
Selanjutnya, rumus yang ditentukan untuk mendapatkan hasil berapa persen jawaban yang telah
terisi adalah
Sehingga setiap jawaban yang dipilih menghasilkan nilai berupa % setiap huruf kategori kepribadian.
Selanjutnya setiap hasil % yang didapatkan akan dibandingkan dengan lawan tipe kepribadian.
Contoh :
Jika setelah diisi didapatkan nilai I = 40% dan E = 60%, maka didapatkan hasil E. Begitu pula selanjutnya.
<script type="text/javascript">
var obj =
[
{
"pertanyaanA": "Spontan, Fleksibel, tidak diikat waktu",
"pertanyaanB": "Terencana dan memiliki deadline jelas",
"jenisA": "PERCEIVING",
"jenisB": "JUDGING"
},
{
"pertanyaanA": "Lebih memilih berkomunikasi dengan menulis",
"pertanyaanB": "Lebih memilih berkomunikasi dengan bicara",
"jenisA": "INTROVERT",
"jenisB": "EKSTROVERT"
},
{
"pertanyaanA": "Tidak menyukai hal-hal yang bersifat mendadak dan di luar
perencanaan",
"pertanyaanB": "Perubahan mendadak tidak jadi masalah",
"jenisA": "JUDGING",
"jenisB": "PERCEIVING"
},
2. Data yang telah didefinisikan didalam var obj, dimasukkan ke dalam var template sementara
<tbody id="template">
<tr>
<th style="width: 10px">#</th>
<th style="width: 45%">valpertanyaanA
<!-- <input type="text" value="valpertanyaanA" class="form-control" id="idnya1"
readonly="readonly"> -->
</th>
<th style="width: 1%">
<input type="radio" onchange="countdataPersen()" name="question1"
id="question1Radios1" class="jenisA" value="left" >
</th>
<th style="width: 1%">
<input type="radio" onchange="countdataPersen()" name="question1"
id="question1Radios2" class="jenisB" value="right">
</th>
<th style="width: 45%">
valpertanyaanB
<!-- <input type="text" value="valpertanyaanB" id="idnya1" class="form-control"
readonly="readonly"> -->
</th>
</tr>
</tbody>
3. Selanjutnya data yang sudah didefinisikan ke dalam var template akan ditampilkan ke halaman
muka website tersebut
function insertToTamplate(){
for(var i = 0; i< obj.length;i++){
var datainsert = template;
datainsert = datainsert.replace(/#/g, i+1);
datainsert = datainsert.replace("valpertanyaanA", obj[i]["pertanyaanA"]);
datainsert = datainsert.replace("jenisA", obj[i]["jenisA"]);
datainsert = datainsert.replace("jenisB", obj[i]["jenisB"]);
datainsert = datainsert.replace("valpertanyaanB", obj[i]["pertanyaanB"]);
var _questionI = "question_"+i;
datainsert = datainsert.replace(/question1/g, _questionI);
datainsert = datainsert.replace("question1Radios1", _questionI+"radio1");
datainsert = datainsert.replace("question1Radios2", _questionI+"radio2");
$("#template").append(datainsert);
}
}
Didalam function insertToTemplate, var obj akan melakukan looping sebanyak jumlah obj untuk
menampilkan soal yang telah terdefinisi tersebut.
4. Selanjutnya dilakukan proses perhitungan total
function countdataPersen(){
var nIntrovert = Math.ceil($(".INTROVERT:checked").length/15*100);
$("#persenIntrovert").val(nIntrovert+"%");
var nEkstrovert = Math.ceil($(".EKSTROVERT:checked").length/15*100);
$("#persenEkstrovert").val(nEkstrovert+"%");
5. Setelah itu, sistem akan melakukan proses pemilihan data, apabila I > E maka data yang akan
dijadikan hasil adalah I
function tipeKepribadian(){
var datanya = "";
var retDatanya = "";
var introvert = $("#persenIntrovert").val().replace("%", "");
var ekstrovert = $("#persenEkstrovert").val().replace("%", "");
if(parseInt(introvert) > parseInt(ekstrovert)){
}
$("#hasilnya").html(datanya);
return retDatanya;
}
6. Selanjutnya sistem akan melakukan validasi, apabila check box masih kosong, button submit tidak
bisa lanjutkan sampai jawaban terisi semua
function countAll(){
var introvert = $("#persenIntrovert").val();
introvert = parseInt(introvert.replace("%", ""));
var ekstrovert = $("#persenEkstrovert").val();
ekstrovert = parseInt(ekstrovert.replace("%", ""));
var inek = introvert+ekstrovert;
if(inek >= 100 && SenIn >= 100 & thikFeel >= 100 && judper >= 100){
$(".divBtn").attr("style", "display: block");
}
7. Selanjutnya, jika data sudah terisi semua, maka sistem akan melakukan pengaplikasian dari
algoritma tree, dimana jika didapatkan hasil yang sesuai (INTJ) maka peserta dinyatakan
“PASSED”, namun apabila hasil yang didapatkan <= 3 dari huruf yang sesuai, maka peserta
akan dinyatakan “FAIL”
function submitdone(){
var hasil = tipeKepribadian();
var _dataobj = {};
_dataobj.Introvert = $("#persenIntrovert").val();
_dataobj.Ekstrovert = $("#persenEkstrovert").val();
_dataobj.Sensing = $("#persenSensing").val();
_dataobj.Intuition = $("#persenIntuition").val();
_dataobj.Thinking = $("#persenThinking").val();
_dataobj.Feeling = $("#persenFeeling").val();
_dataobj.Judging = $("#persenJudging").val();
_dataobj.Perceiving = $("#persenPerceiving").val();
var obj = {};
obj.hasil = hasil;
obj.detail = _dataobj;
$.ajax({
url: "/MBTI/action/submit-test.php",
type: "post",
data: obj ,
success: function (response) {
var code = response["code"];
if(code == 0){
var mess = response["message"];
$("#hasilheader").html(mess);
if(mess == 'FAILED'){
$(".hasil-kepribadian").addClass("failed");
$("#hasilheader").addClass("failed");
}else{
$(".hasil-kepribadian").addClass("passed");
$("#hasilheader").addClass("passed");
}
}else{
alert(response["message"]);
}
},
error: function(jqXHR, textStatus, errorThrown) {
console.log(textStatus, errorThrown);
}
});
}
Data ini mengambil rumus dari halaman url: "/MBTI/action/submit-test.php" dimana di halaman
tersebut terdapat algoritma untuk menjalankan proses apakah jawaban tersebut bernilai
“PASSED” atau “FAILED”
<?php
header("Content-type:application/json");
session_start();
//Tree u/menentukan failed/pass
$hasil = $_POST["hasil"];
$detail = $_POST["detail"];
$I = str_replace("%", '', $detail["Introvert"]);
$E = str_replace("%", '', $detail["Ekstrovert"]);
#$hasildata = "I : ".$I. " E : ".$E. " S : ".$S. " N : ".$N. " T : ".$T. " F : ".$F. " J : ".$J. " P :
".$P;
$hasildata = json_encode($detail);
if(intval($I) >50 ){
if(intval($N) > 50){
if(intval($T) > 50){
$ret = "PASSED";
}else{
if(intval($P) < 50){
$ret = "PASSED";
}else{
$ret = "FAILED";
}
}
}else{
if(intval($F)<50){
if(intval($J)>50){
$ret = "PASSED";
}else{
$ret = "FAILED";
}
}else{
$ret = "FAILED";
}
}
}else{
if(intval($S) < 50){
if(intval($T) > 50){
if(intval($J) > 50){
$ret = "PASSED";
}else{
$ret = "FAILED";
}
}else{
$ret = "FAILED";
}
}else{
$ret = "FAILED";
}
}
include "../koneksi/koneksi.php";
$sql = "
INSERT INTO test(id_karyawan, hasil) VALUES
('".$_SESSION["id_karyawan"]."', '".$ret."');
";
} else {
$resp = array('code' => -256, 'message' => "Error: " . $sql . "<br>" .
$koneksi->error);
}
$koneksi->close();
echo json_encode($resp);
?>
BAB IV
PENUTUP
4.1 Kesimpulan
Berdasarkan tulisan di beberapa bab sebelumnya dapat disimpulkan :
● Data Rumus MBTI beserta keterangan bobot soalnya kami dapat melalui dokumen .exe milik
Nafis Mudrika, S.Psi (www.nafismudrika.wordpress.com), lalu kami definisikan kedalam bahasa
pemograman