Perbandingan Sistem Pendukung Keputusan Pemilihan Calon Ketua Osis Pada Smk Swasta Nusa Penida Medan Dengan Metodesimple Additive Weighting & Weighted Summodel Berbasis Android

(1)

LISTING PROGRAM

1. MainActivity.java

package com.nanda; import java.util.ArrayList; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.graphics.Color; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.Spinner;

public class MainActivity extends ActionBarActivity implements OnClickListener {

Button buttonDaftarCalon, buttonWSMdanSAW, buttonAbout; @Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

buttonDaftarCalon = (Button)

findViewById(R.id.buttonDaftarCalon);

buttonDaftarCalon.setOnClickListener(this);

buttonWSMdanSAW = (Button) findViewById(R.id.buttonWSMdanSAW); buttonWSMdanSAW.setOnClickListener(this);

buttonAbout = (Button) findViewById(R.id.buttonAbout); buttonAbout.setOnClickListener(this);

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main, menu); return true;

}

@Override

public boolean onOptionsItemSelected(MenuItem item) {

// Handle action bar item clicks here. The action bar will


(2)

// as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId();

if (id == R.id.action_settings) { return true;

}

return super.onOptionsItemSelected(item); }

@Override

public void onClick(View v) { switch (v.getId()) {

case R.id.buttonDaftarCalon:

startActivity(new Intent(this, Daftar_Calon.class)); break;

case R.id.buttonWSMdanSAW:

SQLiteHelper helper = new SQLiteHelper(getBaseContext()); ArrayList<String> tahun = helper.getTahun();

final Spinner spinner = new Spinner(getBaseContext()); spinner.setBackgroundColor(Color.WHITE);

ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(

getBaseContext(), R.layout.spinner_manual, tahun);

spinner.setBackgroundColor(Color.GRAY); spinner.setAdapter(spinnerArrayAdapter); for (int i = 0; i < tahun.size(); i++) {

System.out.println("Tahun ====== " + tahun.get(i)); }

AlertDialog.Builder builderInsertBiodata = new AlertDialog.Builder(

this);

builderInsertBiodata.setTitle("Pilih Tahun"); builderInsertBiodata.setView(spinner);

builderInsertBiodata.setPositiveButton("OK",

new DialogInterface.OnClickListener() { @Override

public void onClick(DialogInterface dialog, int which) {

Session.setTahun(spinner.getSelectedItem()

.toString().trim()); startActivity(new


(3)

HasilWSM_SAW.class)); }

});

builderInsertBiodata.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

dialog.cancel(); } }); builderInsertBiodata.show(); break; case R.id.buttonAbout:

startActivity(new Intent(this, About.class)); break; default: break; } } }

2. Daftar_Calon.java

package com.nanda; import java.util.ArrayList; import java.util.HashMap; import android.R.layout; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.graphics.Color; import android.os.Bundle; import android.support.v4.view.ViewPager.LayoutParams; import android.text.InputFilter; import android.text.Spanned; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.ScrollView; import android.widget.TableLayout; import android.widget.TableRow; import android.widget.TextView;

public class Daftar_Calon extends Activity implements OnClickListener { SQLiteHelper sqLiteHelper = new SQLiteHelper(this);

TableLayout tabelBiodata; Button buttonTambahBiodata;


(4)

ArrayList<Button> buttonDelete = new ArrayList<Button>(); @Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.biodata);

tabelBiodata = (TableLayout) findViewById(R.id.tableBiodata); buttonTambahBiodata = (Button)

findViewById(R.id.buttonTambahBiodata);

buttonTambahBiodata.setOnClickListener(this); TableRow barisTabel = new TableRow(this); barisTabel.setBackgroundColor(Color.RED); TextView viewHeaderId = new TextView(this); TextView viewHeaderNama = new TextView(this);

TextView viewHeaderKetidakHadiran = new TextView(this); TextView viewHeaderInteraksi = new TextView(this); TextView viewHeaderKelakuan = new TextView(this); TextView viewHeaderKebersihan = new TextView(this); TextView viewHeaderTanggungJawab = new TextView(this); TextView viewHeaderKreatif = new TextView(this);

TextView viewHeaderAktif = new TextView(this); TextView viewHeaderDisiplin = new TextView(this); TextView viewHeaderTahun = new TextView(this); TextView viewHeaderAction = new TextView(this); // ketidak_hadiran,

// String interaksi, String kelakuan, String kebersihan,

// String tanggung_jawab, String kreatif, String aktif, String disiplin viewHeaderId.setText("ID"); viewHeaderNama.setText("Nama"); viewHeaderKetidakHadiran.setText("Ketidak Hadiran"); viewHeaderInteraksi.setText("Interaksi"); viewHeaderKelakuan.setText("Kelakuan"); viewHeaderKebersihan.setText("Kebersihan"); viewHeaderTanggungJawab.setText("Tanggung Jawab"); viewHeaderKreatif.setText("Kreatif"); viewHeaderAktif.setText("Aktif"); viewHeaderDisiplin.setText("Disiplin"); viewHeaderTahun.setText("Tahun"); viewHeaderAction.setText("Action"); viewHeaderId.setPadding(5, 1, 5, 1); viewHeaderNama.setPadding(5, 1, 5, 1);

viewHeaderKetidakHadiran.setPadding(5, 1, 5, 1); viewHeaderInteraksi.setPadding(5, 1, 5, 1); viewHeaderKelakuan.setPadding(5, 1, 5, 1); viewHeaderKebersihan.setPadding(5, 1, 5, 1); viewHeaderTanggungJawab.setPadding(5, 1, 5, 1); viewHeaderKreatif.setPadding(5, 1, 5, 1);

viewHeaderAktif.setPadding(5, 1, 5, 1); viewHeaderDisiplin.setPadding(5, 1, 5, 1); viewHeaderTahun.setPadding(5, 1, 5, 1); viewHeaderAction.setPadding(5, 1, 5, 1);


(5)

barisTabel.addView(viewHeaderId); barisTabel.addView(viewHeaderNama); barisTabel.addView(viewHeaderKetidakHadiran); barisTabel.addView(viewHeaderInteraksi); barisTabel.addView(viewHeaderKelakuan); barisTabel.addView(viewHeaderKebersihan); barisTabel.addView(viewHeaderTanggungJawab); barisTabel.addView(viewHeaderKreatif); barisTabel.addView(viewHeaderAktif); barisTabel.addView(viewHeaderDisiplin); barisTabel.addView(viewHeaderTahun); barisTabel.addView(viewHeaderAction);

tabelBiodata.addView(barisTabel, new TableLayout.LayoutParams( LayoutParams.WRAP_CONTENT,

LayoutParams.WRAP_CONTENT));

ArrayList<HashMap<String, String>> arrayListBiodata = sqLiteHelper

.tampil_semua_biodata(); if (arrayListBiodata.size() > 0) {

for (int i = 0; i < arrayListBiodata.size(); i++) {

// ambil masing-masing hasmap dari arrayListBiodata HashMap<String, String> hashMapRecordBiodata = arrayListBiodata

.get(i);

// JSONObject jsonChildNode = arrayBiodata.getJSONObject(i);

String id = hashMapRecordBiodata.get("id_biodata"); String nama = hashMapRecordBiodata.get("nama"); String ketidakHadiran = hashMapRecordBiodata

.get("ketidak_hadiran"); String interaksi =

hashMapRecordBiodata.get("interaksi"); String kelakuan = hashMapRecordBiodata.get("kelakuan");

String kebersihan = hashMapRecordBiodata.get("kebersihan");

String tanggungJawab = hashMapRecordBiodata .get("tanggung_jawab");

String kreatif = hashMapRecordBiodata.get("kreatif");

String aktif = hashMapRecordBiodata.get("aktif"); String disiplin =

hashMapRecordBiodata.get("disiplin");

String tahun = hashMapRecordBiodata.get("tahun"); barisTabel = new TableRow(this);


(6)

barisTabel.setBackgroundColor(Color.LTGRAY); }

TextView viewId = new TextView(this); viewId.setText(id);

viewId.setPadding(5, 1, 5, 1); barisTabel.addView(viewId);

TextView viewNama = new TextView(this); viewNama.setText(nama);

viewNama.setPadding(5, 1, 5, 1); barisTabel.addView(viewNama); TextView viewKetidakHadiran = new TextView(this);

viewKetidakHadiran.setText(ketidakHadiran); viewKetidakHadiran.setPadding(5, 1, 5, 1); barisTabel.addView(viewKetidakHadiran); TextView viewInteraksi = new TextView(this); viewInteraksi.setText(interaksi);

viewInteraksi.setPadding(5, 1, 5, 1); barisTabel.addView(viewInteraksi);

TextView viewKelakuan = new TextView(this); viewKelakuan.setText(kelakuan);

viewKelakuan.setPadding(5, 1, 5, 1); barisTabel.addView(viewKelakuan);

TextView viewKebersihan = new TextView(this); viewKebersihan.setText(kebersihan);

viewKebersihan.setPadding(5, 1, 5, 1); barisTabel.addView(viewKebersihan); TextView viewTanggungJawab = new TextView(this);

viewTanggungJawab.setText(tanggungJawab); viewTanggungJawab.setPadding(5, 1, 5, 1); barisTabel.addView(viewTanggungJawab); TextView viewKreatif = new TextView(this); viewKreatif.setText(kreatif);

viewKreatif.setPadding(5, 1, 5, 1); barisTabel.addView(viewKreatif);

TextView viewAktif = new TextView(this); viewAktif.setText(aktif);

viewAktif.setPadding(5, 1, 5, 1); barisTabel.addView(viewAktif);

TextView viewDisiplin = new TextView(this); viewDisiplin.setText(disiplin);

viewDisiplin.setPadding(5, 1, 5, 1); barisTabel.addView(viewDisiplin);

TextView viewTahun = new TextView(this); viewTahun.setText(tahun);

viewTahun.setPadding(5, 1, 5, 1); barisTabel.addView(viewTahun);


(7)

buttonEdit.add(i, new Button(this)); buttonEdit.get(i).setId(Integer.parseInt(id)); buttonEdit.get(i).setTag("Edit"); buttonEdit.get(i).setText("Ubah"); buttonEdit.get(i).setOnClickListener(this); barisTabel.addView(buttonEdit.get(i)); buttonDelete.add(i, new Button(this));

buttonDelete.get(i).setId(Integer.parseInt(id)); buttonDelete.get(i).setTag("Delete"); buttonDelete.get(i).setText("Hapus"); buttonDelete.get(i).setOnClickListener(this); barisTabel.addView(buttonDelete.get(i)); tabelBiodata.addView(barisTabel, new TableLayout.LayoutParams( LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); } } } @Override

public void onClick(View view) {

if (view.getId() == R.id.buttonTambahBiodata) {

// Toast.makeText(MainActivity.this, "Button Tambah Data",

// Toast.LENGTH_SHORT).show(); tambahBiodata();

} else { /*

* Melakukan pengecekan pada data array, agar sesuai dengan index

* masing-masing button */

for (int i = 0; i < button Edit.size(); i++) { /* jika yang diklik adalah button edit */ if (view.getId() == button Edit.get(i).getId()

&&

view.getTag().toString().trim().equals("Edit")) {

// Toast. make Text(Main Activity.this, "Edit : " +

// buttonEdit.get(i).getId(), Toast.LENGTH_SHORT).show();

int id = buttonEdit.get(i).getId(); getDataByID(id);

} /* jika yang diklik adalah button delete */ else if (view.getId() ==


(8)

view.getTag().toString().trim().equals("Delete")) {

// Toast.makeText(MainActivity.this, "Delete : " +

// buttonDelete.get(i).getId(), Toast.LENGTH_SHORT).show();

int id = buttonDelete.get(i).getId(); deleteBiodata(id);

} }

} }

public void deleteBiodata(int id) { sqLiteHelper.hapus_biodata(id); /* restart acrtivity */

finish();

startActivity(getIntent()); }

public void getDataByID(int id) {

String namaEdit = null, ketidak_hadiranEdit = null, interaksiEdit = null, kelakuanEdit = null, kebersihanEdit = null, tanggung_jawabEdit = null, kreatifEdit = null, aktifEdit = null, disiplinEdit = null, tahunEdit = null;

InputFilter filter = new InputFilter() {

public CharSequence filter(CharSequence source, int start, int end,

Spanned dest, int dstart, int dend) { String chars = "";

for (int i = start; i < end; i++) { if (Character.toString(source.charAt(i)).equals("a") || Character.toString(source.charAt(i)).equals("A") || Character.toString(source.charAt(i)).equals("b") || Character.toString(source.charAt(i)).equals("B") || Character.toString(source.charAt(i)).equals("c") || Character.toString(source.charAt(i)).equals("C") || Character.toString(source.charAt(i)).equals("d") || Character.toString(source.charAt(i)).equals("D")) { chars = String.valueOf(source.charAt(i)).toUpperCase(); } else {

} }

return chars; }


(9)

HashMap<String, String> hashMapBiodata = sqLiteHelper .tampil_biodata_berdasarkan_id(id); for (int i = 0; i < hashMapBiodata.size(); i++) {

namaEdit = hashMapBiodata.get("nama"); ketidak_hadiranEdit =

hashMapBiodata.get("ketidak_hadiran");

interaksiEdit = hashMapBiodata.get("interaksi"); kelakuanEdit = hashMapBiodata.get("kelakuan"); kebersihanEdit = hashMapBiodata.get("kebersihan"); tanggung_jawabEdit =

hashMapBiodata.get("tanggung_jawab");

kreatifEdit = hashMapBiodata.get("kreatif"); aktifEdit = hashMapBiodata.get("aktif");

disiplinEdit = hashMapBiodata.get("disiplin"); tahunEdit = hashMapBiodata.get("tahun");

}

LinearLayout layoutInput = new LinearLayout(this); layoutInput.setOrientation(LinearLayout.VERTICAL); // buat id tersembunyi di alertbuilder

final TextView viewId = new TextView(this); viewId.setText(String.valueOf(id));

viewId.setTextColor(Color.TRANSPARENT); layoutInput.addView(viewId);

final EditText editNama = new EditText(this); editNama.setHint("Nama");

editNama.setText(namaEdit); layoutInput.addView(editNama);

final EditText editKetidakHadiran = new EditText(this); editKetidakHadiran.setHint("Ketidak Hadiran");

editKetidakHadiran.setText(ketidak_hadiranEdit);

editKetidakHadiran.setFilters(new InputFilter[] { filter, new InputFilter.LengthFilter(1) });

layoutInput.addView(editKetidakHadiran);

final EditText editInteraksi = new EditText(this); editInteraksi.setText(interaksiEdit);

editInteraksi.setHint("Interaksi");

editInteraksi.setFilters(new InputFilter[] { filter, new InputFilter.LengthFilter(1) }); layoutInput.addView(editInteraksi);

final EditText editKelakuan = new EditText(this); editKelakuan.setText(kelakuanEdit);

editKelakuan.setHint("Kelakuan");

editKelakuan.setFilters(new InputFilter[] { filter, new InputFilter.LengthFilter(1) }); layoutInput.addView(editKelakuan);

final EditText editKebersihan = new EditText(this); editKebersihan.setText(kebersihanEdit);

editKebersihan.setHint("Kebersihan");

editKebersihan.setFilters(new InputFilter[] { filter, new InputFilter.LengthFilter(1) });


(10)

final EditText editTanggungJawab = new EditText(this); editTanggungJawab.setText(tanggung_jawabEdit); editTanggungJawab.setHint("Tanggung Jawab");

editTanggungJawab.setFilters(new InputFilter[] { filter, new InputFilter.LengthFilter(1) });

layoutInput.addView(editTanggungJawab);

final EditText editKreatif = new EditText(this); editKreatif.setText(kreatifEdit);

editKreatif.setHint("Kreatif");

editKreatif.setFilters(new InputFilter[] { filter, new InputFilter.LengthFilter(1) }); layoutInput.addView(editKreatif);

final EditText editAktif = new EditText(this); editAktif.setText(aktifEdit);

editAktif.setHint("Aktif");

editAktif.setFilters(new InputFilter[] { filter, new InputFilter.LengthFilter(1) }); layoutInput.addView(editAktif);

final EditText editDisiplin = new EditText(this); editDisiplin.setText(disiplinEdit);

editDisiplin.setHint("Disiplin");

editDisiplin.setFilters(new InputFilter[] { filter, new InputFilter.LengthFilter(1) }); layoutInput.addView(editDisiplin);

final EditText editTahun = new EditText(this); editTahun.setText(tahunEdit);

editTahun.setHint("Tahun"); layoutInput.addView(editTahun);

ScrollView scroll = new ScrollView(this); scroll.addView(layoutInput);

AlertDialog.Builder builderEditBiodata = new AlertDialog.Builder(this);

builderEditBiodata.setTitle("Update Biodata"); builderEditBiodata.setView(scroll);

builderEditBiodata.setPositiveButton("Update", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

String nama = editNama.getText().toString();

String ketidak_hadiran = editKetidakHadiran.getText()

.toString(); String interaksi =

editInteraksi.getText().toString();

String kelakuan = editKelakuan.getText().toString();

String kebersihan = editKebersihan.getText().toString();

String tanggung_jawab = editTanggungJawab.getText()


(11)

.toString();

String kreatif = editKreatif.getText().toString();

String aktif = editAktif.getText().toString();

String disiplin = editDisiplin.getText().toString();

String tahun = editTahun.getText().toString(); sqLiteHelper.update_biodata( Integer.parseInt(viewId.getText().toString()), nama, ketidak_hadiran, interaksi, kelakuan, kebersihan, tanggung_jawab, kreatif, aktif, disiplin, tahun); /* restart acrtivity */

finish();

startActivity(getIntent()); }

});

builderEditBiodata.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

dialog.cancel(); }

});

builderEditBiodata.show(); }

public void tambahBiodata() {

/* layout akan ditampilkan pada AlertDialog */ LinearLayout layoutInput = new LinearLayout(this); layoutInput.setOrientation(LinearLayout.VERTICAL); final EditText editNama = new EditText(this); editNama.setHint("Nama");

layoutInput.addView(editNama);

InputFilter filter = new InputFilter() {

public CharSequence filter(CharSequence source, int start, int end,

Spanned dest, int dstart, int dend) { String chars = "";

for (int i = start; i < end; i++) { if (Character.toString(source.charAt(i)).equals("a") || Character.toString(source.charAt(i)).equals("A") || Character.toString(source.charAt(i)).equals("b") || Character.toString(source.charAt(i)).equals("B")


(12)

Character.toString(source.charAt(i)).equals("c") || Character.toString(source.charAt(i)).equals("C") || Character.toString(source.charAt(i)).equals("d") || Character.toString(source.charAt(i)).equals("D")) { chars = String.valueOf(source.charAt(i)).toUpperCase(); } else {

} }

return chars; }

};

final EditText editKetidakHadiran = new EditText(this); editKetidakHadiran.setHint("Ketidak Hadiran");

editKetidakHadiran.setFilters(new InputFilter[] { filter, new InputFilter.LengthFilter(1) });

layoutInput.addView(editKetidakHadiran);

final EditText editInteraksi = new EditText(this); editInteraksi.setHint("Interaksi");

editInteraksi.setFilters(new InputFilter[] { filter, new InputFilter.LengthFilter(1) }); layoutInput.addView(editInteraksi);

final EditText editKelakuan = new EditText(this); editKelakuan.setHint("Kelakuan");

editKelakuan.setFilters(new InputFilter[] { filter, new InputFilter.LengthFilter(1) }); layoutInput.addView(editKelakuan);

final EditText editKebersihan = new EditText(this); editKebersihan.setHint("Kebersihan");

editKebersihan.setFilters(new InputFilter[] { filter, new InputFilter.LengthFilter(1) });

layoutInput.addView(editKebersihan);

final EditText editTanggungJawab = new EditText(this); editTanggungJawab.setHint("Tanggung Jawab");

editTanggungJawab.setFilters(new InputFilter[] { filter, new InputFilter.LengthFilter(1) });

layoutInput.addView(editTanggungJawab);

final EditText editKreatif = new EditText(this); editKreatif.setHint("Kreatif");

editKreatif.setFilters(new InputFilter[] { filter, new InputFilter.LengthFilter(1) }); layoutInput.addView(editKreatif);

final EditText editAktif = new EditText(this); editAktif.setHint("Aktif");

editAktif.setFilters(new InputFilter[] { filter, new InputFilter.LengthFilter(1) }); layoutInput.addView(editAktif);


(13)

final EditText editDisiplin = new EditText(this); editDisiplin.setHint("Disiplin");

editDisiplin.setFilters(new InputFilter[] { filter, new InputFilter.LengthFilter(1) }); layoutInput.addView(editDisiplin);

final EditText editTahun = new EditText(this); editTahun.setHint("Tahun");

layoutInput.addView(editTahun);

ScrollView scrollInput = new ScrollView(this); scrollInput.addView(layoutInput);

AlertDialog.Builder builderInsertBiodata = new AlertDialog.Builder(this);

builderInsertBiodata.setTitle("Insert Biodata"); builderInsertBiodata.setView(scrollInput);

builderInsertBiodata.setPositiveButton("Insert", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

String nama = editNama.getText().toString();

String ketidak_hadiran = editKetidakHadiran.getText()

.toString(); String interaksi =

editInteraksi.getText().toString();

String kelakuan = editKelakuan.getText().toString();

String kebersihan = editKebersihan.getText().toString();

String tanggung_jawab = editTanggungJawab.getText()

.toString(); String kreatif =

editKreatif.getText().toString();

String aktif = editAktif.getText().toString();

String disiplin = editDisiplin.getText().toString();

String tahun = editTahun.getText().toString(); sqLiteHelper.tambah_biodata(nama, ketidak_hadiran, interaksi, kelakuan, kebersihan, tanggung_jawab, kreatif, aktif, disiplin, tahun, getBaseContext()); /* restart acrtivity */

finish();

startActivity(getIntent()); }

});


(14)

new DialogInterface.OnClickListener() { @Override

public void onClick(DialogInterface dialog, int which) {

dialog.cancel(); } }); builderInsertBiodata.show(); } }

3. WSM_SAW.java

package com.nanda; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; public class WSM_SAW {

public static void main(String[] args) { }

//rumus wsm

public static ArrayList<String[]> normalisasi_WSM(

ArrayList<String[]> nilaiAngka, double[] bobot) { ArrayList<String[]> dataNormalisasiSemua = new ArrayList(); for (int i = 0; i < nilaiAngka.size(); i++) {

// 0 : nama, 1-8 bagian kriteria, 9 adalah total jumlah String[] dataNormalisasiPerorang = new String[10]; double total = 0;

//perkalian bobot dan kriteria

for (int j = 0; j < nilaiAngka.get(i).length; j++) { if (j > 0) {

dataNormalisasiPerorang[j] = String.valueOf(Double

.parseDouble(nilaiAngka.get(i)[j]) * bobot[j - 1]); total +=

Double.parseDouble(dataNormalisasiPerorang[j]

.toString()); } else {

// masukkan nama saja kedalam array dataNormalisasiPerorang[j] =

nilaiAngka.get(i)[j]; } }


(15)

Data Normalisasi Perorang[nilaiAngka.get(i).length] = String .valueOf(total);

dataNormalisasiSemua.add(dataNormalisasiPerorang); }

Collections.sort(dataNormalisasiSemua, new Comparator<String[]>() {

public int compare(String[] strings, String[] otherStrings) {

return otherStrings[9].compareTo(strings[9]); }

});

for (int i = 0; i < dataNormalisasiSemua.size(); i++) { System.out.println(Arrays.toString(dataNormalisasiSemua.get(i)));

}

return dataNormalisasiSemua; }

//rumus saw

public static ArrayList<String[]> normalisasi_SAW(

ArrayList<String[]> nilaiAngka, double[] bobot) { ArrayList<String[]> dataNormalisasiSemua = new ArrayList(); int nilai_maks_min[][] = nilai_maks_min(nilaiAngka);

int nilai_max[] = nilai_maks_min[0]; int nilai_min[] = nilai_maks_min[1]; int operand_pembagi = 0;

// perkalian bobot dan kriteria

for (int i = 0; i < nilaiAngka.size(); i++) {

// 0 : nama, 1-9 bagian kriteria, 10 adalah total jumlah String[] dataNormalisasiPerorang = new String[10];

double total = 0;

for (int j = 0; j < nilaiAngka.get(i).length; j++) { if (j > 0) {

// nilai kerugian

if (j == 1) {

operand_pembagi = nilai_min[j]; dataNormalisasiPerorang[j] = String.format(

"%.3f",


(16)

.parseDouble(nilaiAngka.get(i)[j]))

* bobot[j -1]);

//nilai keuntungan

} else if (j > 1) {

operand_pembagi = nilai_max[j]; dataNormalisasiPerorang[j] = String.format("%.3f",

(Double.parseDouble(nilaiAngka.get(i)[j]))

* bobot[j - 1] / operand_pembagi);

}

// System.out.print(operand_pembagi); total +=

Double.parseDouble(dataNormalisasiPerorang[j]); } else {

// masukkan nama saja kedalam array dataNormalisasiPerorang[j] = nilaiAngka.get(i)[j]; } } dataNormalisasiPerorang[nilaiAngka.get(i).length] = String.format( "%.3f", total); dataNormalisasiSemua.add(dataNormalisasiPerorang); }

// for (int i = 0; i < dataNormalisasiSemua.size(); i++) { //

System.out.println(Arrays.toString(dataNormalisasiSemua.get(i))); // }

Collections.sort(dataNormalisasiSemua, new Comparator<String[]>() {

public int compare(String[] strings, String[] otherStrings) {

return otherStrings[9].compareTo(strings[9]); }

});

for (int i = 0; i < dataNormalisasiSemua.size(); i++) { System.out.println(Arrays.toString(dataNormalisasiSemua.get(i)));

}

return dataNormalisasiSemua; }


(17)

public static int[][] nilai_maks_min(ArrayList<String[]> nilaiAngka) {

int maks[] = new int[nilaiAngka.get(0).length]; int min[] = new int[nilaiAngka.get(0).length]; int hasil[][] = new int[][] { maks, min }; // inisialisasi nilai

for (int i = 0; i < nilaiAngka.get(0).length; i++) { maks[i] = 0;

min[i] = 100; }

maks[0] = 0; min[0] = 0;

for (int i = 0; i < nilaiAngka.size(); i++) { // ambil maks

if (maks[1] < Integer.parseInt(nilaiAngka.get(i)[1])) { maks[1] = Integer.parseInt(nilaiAngka.get(i)[1]); }

if (maks[2] < Integer.parseInt(nilaiAngka.get(i)[2])) { maks[2] = Integer.parseInt(nilaiAngka.get(i)[2]); }

if (maks[3] < Integer.parseInt(nilaiAngka.get(i)[3])) { maks[3] = Integer.parseInt(nilaiAngka.get(i)[3]); }

if (maks[4] < Integer.parseInt(nilaiAngka.get(i)[4])) { maks[4] = Integer.parseInt(nilaiAngka.get(i)[4]); }

if (maks[5] < Integer.parseInt(nilaiAngka.get(i)[5])) { maks[5] = Integer.parseInt(nilaiAngka.get(i)[5]); }

if (maks[6] < Integer.parseInt(nilaiAngka.get(i)[6])) { maks[6] = Integer.parseInt(nilaiAngka.get(i)[6]); }

if (maks[7] < Integer.parseInt(nilaiAngka.get(i)[7])) { maks[7] = Integer.parseInt(nilaiAngka.get(i)[7]); }

if (maks[8] < Integer.parseInt(nilaiAngka.get(i)[8])) { maks[8] = Integer.parseInt(nilaiAngka.get(i)[8]); }


(18)

if (min[1] > Integer.parseInt(nilaiAngka.get(i)[1])) { min[1] = Integer.parseInt(nilaiAngka.get(i)[1]); }

if (min[2] > Integer.parseInt(nilaiAngka.get(i)[2])) { min[2] = Integer.parseInt(nilaiAngka.get(i)[2]); }

if (min[3] > Integer.parseInt(nilaiAngka.get(i)[3])) { min[3] = Integer.parseInt(nilaiAngka.get(i)[3]); }

if (min[4] > Integer.parseInt(nilaiAngka.get(i)[4])) { min[4] = Integer.parseInt(nilaiAngka.get(i)[4]); }

if (min[5] > Integer.parseInt(nilaiAngka.get(i)[5])) { min[5] = Integer.parseInt(nilaiAngka.get(i)[5]); }

if (min[6] > Integer.parseInt(nilaiAngka.get(i)[6])) { min[6] = Integer.parseInt(nilaiAngka.get(i)[6]); }

if (min[7] > Integer.parseInt(nilaiAngka.get(i)[7])) { min[7] = Integer.parseInt(nilaiAngka.get(i)[7]); }

if (min[8] > Integer.parseInt(nilaiAngka.get(i)[8])) { min[8] = Integer.parseInt(nilaiAngka.get(i)[8]); }

}

hasil = new int[][] { maks, min }; return hasil;

}

public static ArrayList<String[]> nilai_angka(ArrayList<String[]> data_calon) {

// ketentuan nilai angka: // a = 7

// b = 5 // c = 3 // d = 1

ArrayList<String[]> dataNilaiAngkaSemua = new ArrayList(); for (int i = 0; i < data_calon.size(); i++) {


(19)

String[] nilaiAngkaPerorang = new String[9];

for (int j = 0; j < data_calon.get(i).length; j++) { if (j > 0) {

// masukkan nilai yang sudah dikalikan dengan bobot

int nilaiAngka = 0; if

(data_calon.get(i)[j].toUpperCase().equals("A")) { nilaiAngka = 7; } else if

(data_calon.get(i)[j].toUpperCase().equals("B")) { nilaiAngka = 5; } else if

(data_calon.get(i)[j].toUpperCase().equals("C")) { nilaiAngka = 3; } else if

(data_calon.get(i)[j].toUpperCase().equals("D")) { nilaiAngka = 1; }

nilaiAngkaPerorang[j] = String.valueOf(nilaiAngka);

} else {

// masukkan nama saja kedalam array

nilaiAngkaPerorang[j] = data_calon.get(i)[j]; } } dataNilaiAngkaSemua.add(nilaiAngkaPerorang); // System.out.println(Arrays.toString(nilaiAngkaPerorang)); } return dataNilaiAngkaSemua; }

public static ArrayList<String[]> masukkan_data_dalam_arraylist() { ArrayList<String[]> dataSemuaCalonKetuaOsis = new

ArrayList<String[]>();

String[] dataPerorangCalonKetuaOsisi = new String[9];

// nama calon ketua osis, ketidakhadiran, interaksi, kelakuan, // kebersihan, tanggung jawab, kreatif, aktif, disiplin

dataPerorangCalonKetuaOsisi = new String[] { "Ani", "A", "B", "B", "C",

"D", "B", "B", "B" };

dataSemuaCalonKetuaOsis.add(dataPerorangCalonKetuaOsisi); dataPerorangCalonKetuaOsisi = new String[] { "Budi", "B", "C", "A",

"D", "B", "D", "B", "D" };


(20)

dataPerorangCalonKetuaOsisi = new String[] { "Citra", "D", "B", "C", "B", "A", "C", "B", "B" };

dataSemuaCalonKetuaOsis.add(dataPerorangCalonKetuaOsisi); dataPerorangCalonKetuaOsisi = new String[] { "Doni", "B", "D", "C",

"A", "B", "A", "A", "D" };

dataSemuaCalonKetuaOsis.add(dataPerorangCalonKetuaOsisi); return dataSemuaCalonKetuaOsis;

}

public static double[] bobot() {

// ketidakhadiran, interaksi, kelakuan, kebersihan, tanggung jawab,

// kreatif, aktif, disiplin

double[] nilai_bobot = new double[] { 0.2, 0.1, 0.1, 0.2, 0.1, 0.1, 0.1, 0.1 };

return nilai_bobot; } }

4. HasilWSM_SAW.java

package com.nanda; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import android.app.Activity; import android.graphics.Color; import android.os.Bundle; import android.support.v4.view.ViewPager.LayoutParams; import android.widget.TableLayout; import android.widget.TableRow; import android.widget.TextView;

public class HasilWSM_SAW extends Activity {

SQLiteHelper sqLiteHelper = new SQLiteHelper(this); WSM_SAW wsm_saw = new WSM_SAW();

TableLayout tabelLayoutWSM, tabelLayoutSAW; @Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.hasil_saw_wsm); tabelLayoutWSM = (TableLayout)

findViewById(R.id.tableLayoutWSM); format_table(tabelLayoutWSM); tabelLayoutSAW = (TableLayout) findViewById(R.id.tableLayoutSAW);


(21)

format_table(tabelLayoutSAW);

// nama calon ketua osis, ketidakhadiran, interaksi, kelakuan, // kebersihan, tanggung jawab, kreatif, aktif, disiplin

ArrayList<String[]> data_calon = new ArrayList<String[]>(); ArrayList<HashMap<String, String>> arrayListBiodata =

sqLiteHelper

.tampil_semua_biodata_berdasarkan_tahun(); if (arrayListBiodata.size() > 0) {

for (int i = 0; i < arrayListBiodata.size(); i++) { String[] dataCalonPerorang = new String[9]; HashMap<String, String> hashMapRecordBiodata = arrayListBiodata

.get(i); // String id =

hashMapRecordBiodata.get("id_biodata"); dataCalonPerorang[0] = hashMapRecordBiodata.get("nama");

dataCalonPerorang[1] = hashMapRecordBiodata .get("ketidak_hadiran"); dataCalonPerorang[2] = hashMapRecordBiodata.get("interaksi"); dataCalonPerorang[3] = hashMapRecordBiodata.get("kelakuan"); dataCalonPerorang[4] = hashMapRecordBiodata.get("kebersihan");

dataCalonPerorang[5] = hashMapRecordBiodata .get("tanggung_jawab"); dataCalonPerorang[6] = hashMapRecordBiodata.get("kreatif"); dataCalonPerorang[7] = hashMapRecordBiodata.get("aktif"); dataCalonPerorang[8] = hashMapRecordBiodata.get("disiplin"); System.out.println(Arrays.toString(dataCalonPerorang)); data_calon.add(dataCalonPerorang); }

double[] bobot = wsm_saw.bobot(); ArrayList<String[]>nilaAngka= WSM_SAW.nilai_angka(data_calon);

ArrayList<String[]>hasil_WSM= wsm_saw.normalisasi_WSM(nilaAngka,

bobot);

for (int i = 0; i < hasil_WSM.size(); i++) { System.out.println(Arrays.toString(hasil_WSM.get(i)));


(22)

String ketidak_hadiran = hasil_WSM.get(i)[1];

String interaksi = hasil_WSM.get(i)[2]; String kelakuan = hasil_WSM.get(i)[3]; String kebersihan = hasil_WSM.get(i)[4]; String tanggung_jawab = hasil_WSM.get(i)[5]; String kreatif = hasil_WSM.get(i)[6];

String aktif = hasil_WSM.get(i)[7]; String disiplin = hasil_WSM.get(i)[8]; String total = hasil_WSM.get(i)[9];

// System.out.println(total+"---" +

// disiplin);

tabel_data(tabelLayoutWSM, nama, ketidak_hadiran, interaksi,

kelakuan, kebersihan, tanggung_jawab, kreatif, aktif,

disiplin, total); }

ArrayList<String[]> hasil_SAW =

wsm_saw.normalisasi_SAW(nilaAngka, bobot);

for (int i = 0; i < hasil_SAW.size(); i++) { System.out.println(Arrays.toString(hasil_SAW.get(i)));

String nama = hasil_SAW.get(i)[0];

String ketidak_hadiran = hasil_SAW.get(i)[1]; String interaksi = hasil_SAW.get(i)[2];

String kelakuan = hasil_SAW.get(i)[3]; String kebersihan = hasil_SAW.get(i)[4]; String tanggung_jawab = hasil_SAW.get(i)[5]; String kreatif = hasil_SAW.get(i)[6];

String aktif = hasil_SAW.get(i)[7]; String disiplin = hasil_SAW.get(i)[8]; String total = hasil_SAW.get(i)[9];

// System.out.println(total+"---" +

// disiplin);

tabel_data(tabelLayoutSAW, nama, ketidak_hadiran, interaksi,

kelakuan, kebersihan, tanggung_jawab, kreatif, aktif,

disiplin, total); }

} }

public void tabel_data(TableLayout tableLayout, String nama,

String ketidak_hadiran, String interaksi, String kelakuan,

String kebersihan, String tanggung_jawab, String kreatif, String aktif, String disiplin, String total) {


(23)

TableRow barisTabel = new TableRow(this);

TextView viewNama = new TextView(this); viewNama.setText(nama);

viewNama.setPadding(5, 1, 5, 1); barisTabel.addView(viewNama);

TextView viewKetidakHadiran = new TextView(this);

viewKetidakHadiran.setText(String.valueOf(String.format("%.3f", Double.parseDouble(ketidak_hadiran))));

viewKetidakHadiran.setPadding(5, 1, 5, 1); barisTabel.addView(viewKetidakHadiran); TextView viewInteraksi = new TextView(this);

viewInteraksi.setText(String.valueOf(String.format("%.3f", Double.parseDouble(interaksi))));

viewInteraksi.setPadding(5, 1, 5, 1); barisTabel.addView(viewInteraksi);

TextView viewKelakuan = new TextView(this);

viewKelakuan.setText(String.valueOf(String.format("%.3f", Double.parseDouble(kelakuan))));

viewKelakuan.setPadding(5, 1, 5, 1); barisTabel.addView(viewKelakuan);

TextView viewKebersihan = new TextView(this);

viewKebersihan.setText(String.valueOf(String.format("%.3f", Double.parseDouble(kebersihan))));

viewKebersihan.setPadding(5, 1, 5, 1); barisTabel.addView(viewKebersihan);

TextView viewTanggungJawab = new TextView(this);

viewTanggungJawab.setText(String.valueOf(String.format("%.3f", Double.parseDouble(tanggung_jawab))));

viewTanggungJawab.setPadding(5, 1, 5, 1); barisTabel.addView(viewTanggungJawab); TextView viewKreatif = new TextView(this);

viewKreatif.setText(String.valueOf(String.format("%.3f", Double.parseDouble(kreatif))));

viewKreatif.setPadding(5, 1, 5, 1); barisTabel.addView(viewKreatif);

TextView viewAktif = new TextView(this);

viewAktif.setText(String.valueOf(String.format("%.3f", Double.parseDouble(aktif))));

viewAktif.setPadding(5, 1, 5, 1); barisTabel.addView(viewAktif);

TextView viewDisiplin = new TextView(this);

viewDisiplin.setText(String.valueOf(String.format("%.3f", Double.parseDouble(disiplin))));

viewDisiplin.setPadding(5, 1, 5, 1); barisTabel.addView(viewDisiplin);


(24)

viewTotal.setText(String.valueOf(String.format("%.3f", Double.parseDouble(total)))); viewTotal.setPadding(5, 1, 5, 1);

barisTabel.addView(viewTotal);

tableLayout.addView(barisTabel, new TableLayout.LayoutParams( LayoutParams.MATCH_PARENT,

LayoutParams.MATCH_PARENT)); }

public void format_table(TableLayout tableLayout) { TableRow barisTabel = new TableRow(this); barisTabel.setBackgroundColor(Color.RED); // TextView viewHeaderId = new TextView(this); TextView viewHeaderNama = new TextView(this);

TextView viewHeaderKetidakHadiran = new TextView(this); TextView viewHeaderInteraksi = new TextView(this); TextView viewHeaderKelakuan = new TextView(this); TextView viewHeaderKebersihan = new TextView(this); TextView viewHeaderTanggungJawab = new TextView(this); TextView viewHeaderKreatif = new TextView(this);

TextView viewHeaderAktif = new TextView(this); TextView viewHeaderDisiplin = new TextView(this); TextView viewHeaderTotal = new TextView(this); // ketidak_hadiran,

// String interaksi, String kelakuan, String kebersihan,

// String tanggung_jawab, String kreatif, String aktif, String disiplin // viewHeaderId.setText("ID"); viewHeaderNama.setText("Nama"); viewHeaderKetidakHadiran.setText("Ketidak Hadiran"); viewHeaderInteraksi.setText("Interaksi"); viewHeaderKelakuan.setText("Kelakuan"); viewHeaderKebersihan.setText("Kebersihan"); viewHeaderTanggungJawab.setText("Tanggung Jawab"); viewHeaderKreatif.setText("Kreatif"); viewHeaderAktif.setText("Aktif"); viewHeaderDisiplin.setText("Disiplin"); viewHeaderTotal.setText("Total");

// viewHeaderId.setPadding(5, 1, 5, 1); viewHeaderNama.setPadding(5, 1, 5, 1);

viewHeaderKetidakHadiran.setPadding(5, 1, 5, 1); viewHeaderInteraksi.setPadding(5, 1, 5, 1); viewHeaderKelakuan.setPadding(5, 1, 5, 1); viewHeaderKebersihan.setPadding(5, 1, 5, 1); viewHeaderTanggungJawab.setPadding(5, 1, 5, 1); viewHeaderKreatif.setPadding(5, 1, 5, 1);

viewHeaderAktif.setPadding(5, 1, 5, 1); viewHeaderDisiplin.setPadding(5, 1, 5, 1); viewHeaderTotal.setPadding(5, 1, 5, 1); // barisTabel.addView(viewHeaderId); barisTabel.addView(viewHeaderNama);


(25)

barisTabel.addView(viewHeaderKetidakHadiran); barisTabel.addView(viewHeaderInteraksi); barisTabel.addView(viewHeaderKelakuan); barisTabel.addView(viewHeaderKebersihan); barisTabel.addView(viewHeaderTanggungJawab); barisTabel.addView(viewHeaderKreatif); barisTabel.addView(viewHeaderAktif); barisTabel.addView(viewHeaderDisiplin); barisTabel.addView(viewHeaderTotal);

tableLayout.addView(barisTabel, new TableLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); } }

5. SQLiteHelper.java

package com.nanda; import java.util.ArrayList; import java.util.HashMap; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.widget.Toast;

public class SQLiteHelper extends SQLiteOpenHelper {

private static final String nama_database = "database_pemain.db"; private static final int versi_database = 1;

private static final String query_buat_tabel_biodata = "CREATE TABLE IF NOT EXISTS tabel_biodata(id_biodata INTEGER PRIMARY KEY AUTOINCREMENT, nama TEXT, ketidak_hadiran TEXT, interaksi TEXT, kelakuan TEXT, kebersihan TEXT, tanggung_jawab TEXT, kreatif TEXT, aktif TEXT, disiplin TEXT, tahun TEXT)";

private static final String query_hapus_tabel_biodata = "DROP TABLE IF EXISTS query_buat_tabel_biodata";

public SQLiteHelper(Context context) {

super(context, nama_database, null, versi_database); }

@Override

public void onCreate(SQLiteDatabase sqLiteDatabase) { sqLiteDatabase.execSQL(query_buat_tabel_biodata); System.out.println("tabel_biodata sudah dibuat"); }

@Override

public void onUpgrade(SQLiteDatabase database, int versi_lama, int versi_baru) {

database.execSQL(query_hapus_tabel_biodata); onCreate(database);


(26)

}

public void tambah_biodata(String nama, String ketidak_hadiran, String interaksi, String kelakuan, String kebersihan, String tanggung_jawab, String kreatif, String aktif, String disiplin, String tahun, Context context) { if (is_nama_tahun(nama, tahun, context)) {

SQLiteDatabase database = this.getWritableDatabase(); ContentValues values = new ContentValues();

values.put("nama", nama); values.put("ketidak_hadiran", ketidak_hadiran); values.put("interaksi", interaksi); values.put("kelakuan", kelakuan); values.put("kebersihan", kebersihan); values.put("tanggung_jawab", tanggung_jawab); values.put("kreatif", kreatif); values.put("aktif", aktif); values.put("disiplin", disiplin); values.put("tahun", tahun);

database.insert("tabel_biodata", null, values); database.close();

} }

public boolean is_nama_tahun(String nama, String tahun, Context context) {

SQLiteDatabase database = this.getWritableDatabase(); Cursor cursor = database.rawQuery(

"SELECT * FROM tabel_biodata WHERE nama='" + nama + "' AND tahun=" + tahun, null); if (cursor.moveToFirst()) {

// System.out.println("---data sudah ada");

Toast.makeText( context,

"Data dengan Nama " + nama + " Tahun " + tahun

+ " Sudah Ada", Toast.LENGTH_LONG).show();

return false; } else {

System.out.println("---data belum ada"); return true;

} }


(27)

SQLiteDatabase database = this.getWritableDatabase();

// deklarasikan sebuah arraylist yang bisa menampung hashmap ArrayList<HashMap<String, String>> arrayListBiodata = new ArrayList<HashMap<String, String>>();

Cursor cursor = database.rawQuery("SELECT * FROM tabel_biodata", null);

// kursor langsung diarkan ke posisi paling awal data pada tabel_biodata

if (cursor.moveToFirst()) { do {

// deklarasikan sebuah hashmap, yang bisa menamp HashMap<String, String> hashMapBiodata = new HashMap<String, String>();

// masukkan masing-masing field dari tabel_biodata ke

// dalamhashMapBiodata

// pastikan id_biodata, nama dan alamat sama persis dengan field

// yang ada pada tabel_biodata hashMapBiodata.put("id_biodata", cursor.getString(0)); hashMapBiodata.put("nama", cursor.getString(1)); hashMapBiodata.put("ketidak_hadiran", cursor.getString(2)); hashMapBiodata.put("interaksi", cursor.getString(3)); hashMapBiodata.put("kelakuan", cursor.getString(4)); hashMapBiodata.put("kebersihan", cursor.getString(5)); hashMapBiodata.put("tanggung_jawab", cursor.getString(6)); hashMapBiodata.put("kreatif", cursor.getString(7)); hashMapBiodata.put("aktif", cursor.getString(8)); hashMapBiodata.put("disiplin", cursor.getString(9)); hashMapBiodata.put("tahun", cursor.getString(10)); // masukkan hashMapBiodata ke dalam arrayListBiodata

arrayListBiodata.add(hashMapBiodata); } while (cursor.moveToNext());

}

return arrayListBiodata; }

public ArrayList<HashMap<String, String>> tampil_semua_biodata_berdasarkan_tahun() {


(28)

SQLiteDatabase database = this.getWritableDatabase();

// deklarasikan sebuah arraylist yang bisa menampung hashmap ArrayList<HashMap<String, String>> arrayListBiodata = new ArrayList<HashMap<String, String>>();

Cursor cursor = database .rawQuery(

"SELECT * FROM tabel_biodata WHERE tahun="

+ Session.getTahun(), null);

// kursor langsung diarkan ke posisi paling awal data pada tabel_biodata

if (cursor.moveToFirst()) { do {

// deklarasikan sebuah hashmap, yang bisa menamp HashMap<String, String> hashMapBiodata = new HashMap<String, String>();

// masukkan masing-masing field dari tabel_biodata ke

// dalamhashMapBiodata

// pastikan id_biodata, nama dan alamat sama persis dengan field

// yang ada pada tabel_biodata hashMapBiodata.put("id_biodata", cursor.getString(0)); hashMapBiodata.put("nama", cursor.getString(1)); hashMapBiodata.put("ketidak_hadiran", cursor.getString(2)); hashMapBiodata.put("interaksi", cursor.getString(3)); hashMapBiodata.put("kelakuan", cursor.getString(4)); hashMapBiodata.put("kebersihan", cursor.getString(5)); hashMapBiodata.put("tanggung_jawab", cursor.getString(6)); hashMapBiodata.put("kreatif", cursor.getString(7)); hashMapBiodata.put("aktif", cursor.getString(8)); hashMapBiodata.put("disiplin", cursor.getString(9)); hashMapBiodata.put("tahun", cursor.getString(10)); // masukkan hashMapBiodata ke dalam arrayListBiodata

arrayListBiodata.add(hashMapBiodata); } while (cursor.moveToNext());

}


(29)

}

public int update_biodata(int id, String nama, String ketidak_hadiran,

String interaksi, String kelakuan, String kebersihan, String tanggung_jawab, String kreatif, String aktif, String disiplin, String tahun) {

SQLiteDatabase database = this.getWritableDatabase(); ContentValues recordBiodata = new ContentValues(); recordBiodata.put("nama", nama); recordBiodata.put("ketidak_hadiran", ketidak_hadiran); recordBiodata.put("interaksi", interaksi); recordBiodata.put("kelakuan", kelakuan); recordBiodata.put("kebersihan", kebersihan); recordBiodata.put("tanggung_jawab", tanggung_jawab); recordBiodata.put("kreatif", kreatif); recordBiodata.put("aktif", aktif); recordBiodata.put("disiplin", disiplin); recordBiodata.put("tahun", tahun);

return database.update("tabel_biodata", recordBiodata, "id_biodata="

+ id, null); }

public void hapus_biodata(int id) {

SQLiteDatabase database = this.getWritableDatabase();

database.execSQL("DELETE FROM tabel_biodata WHERE id_biodata='" + id

+ "'"); database.close(); }

public HashMap<String, String> tampil_biodata_berdasarkan_id(int id) {

SQLiteDatabase database = this.getReadableDatabase();

HashMap<String, String> hashMapBiodata = new HashMap<String, String>();

Cursor cursor = database

.rawQuery("SELECT * FROM tabel_biodata WHERE id_biodata=" + id

+ "", null); if (cursor.moveToFirst()) {

do { hashMapBiodata.put("id_biodata", cursor.getString(0)); hashMapBiodata.put("nama", cursor.getString(1)); hashMapBiodata.put("ketidak_hadiran", cursor.getString(2)); hashMapBiodata.put("interaksi", cursor.getString(3)); hashMapBiodata.put("kelakuan", cursor.getString(4)); hashMapBiodata.put("kebersihan", cursor.getString(5));


(30)

hashMapBiodata.put("tanggung_jawab", cursor.getString(6));

hashMapBiodata.put("kreatif", cursor.getString(7)); hashMapBiodata.put("aktif", cursor.getString(8)); hashMapBiodata.put("disiplin",

cursor.getString(9));

hashMapBiodata.put("tahun", cursor.getString(10)); } while (cursor.moveToNext());

}

return hashMapBiodata; }

public ArrayList<String> getTahun() {

SQLiteDatabase database = this.getReadableDatabase();

ArrayList<String> arrayListTahun = new ArrayList<String>(); Cursor cursor = database.rawQuery(

"SELECT DISTINCT(tahun) FROM tabel_biodata", null); if (cursor.moveToFirst()) {

do {

arrayListTahun.add(cursor.getString(0)); } while (cursor.moveToNext());

}

return arrayListTahun; }

}

6. Session.java

package com.nanda; publicclass Session {

static String tahun = "2015"; publicstatic String getTahun() {

returntahun; }

publicstaticvoid setTahun(String tahun) { Session.tahun = tahun;

} }

7. About.java

package com.nanda;

import android.app.Activity; import android.os.Bundle;


(31)

public class About extends Activity { @Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.about); }

}

8. activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools" android:id="@+id/LinearLayout1" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="@drawable/latar_duaa" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin"

tools:context="com.nanda.MainActivity"> <TableRow

android:id="@+id/tableRow1"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_marginBottom="108dp"

android:gravity="center"> </TableRow>

<Button

android:id="@+id/buttonDaftarCalon"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="@string/daftar_calon" /> <Button

android:id="@+id/buttonWSMdanSAW"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="@string/wsm_saw" /> <Button

android:id="@+id/buttonAbout"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="@string/about" /> </LinearLayout>

9. biodata.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:id="@+id/LinearLayout1"


(32)

android:layout_height="match_parent"

android:layout_gravity="center"

android:background="@drawable/latar_dua"

android:orientation="vertical"

tools:context=".data"> <Button

android:id="@+id/buttonTambahBiodata"

android:layout_width="186dp"

android:layout_height="wrap_content"

android:layout_gravity="center"

android:text="Tambah Calon" /> <HorizontalScrollView

android:id="@+id/horizontalScrollView"

android:layout_width="match_parent"

android:layout_height="wrap_content"> <ScrollView

android:id="@+id/verticalScrollView"

android:layout_width="wrap_content"

android:layout_height="match_parent"> <TableLayout

android:id="@+id/tableBiodata"

android:layout_width="match_parent"

android:layout_height="wrap_content"> </TableLayout>

</ScrollView>

</HorizontalScrollView> </LinearLayout>

10. hasil_saw_wsm.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="@drawable/latar_dua"

android:orientation="vertical"> <HorizontalScrollView

android:id="@+id/horizontalScrollView1"

android:layout_width="match_parent"

android:layout_height="wrap_content"> <ScrollView

android:id="@+id/scrollView1"

android:layout_width="match_parent"

android:layout_height="wrap_content"> <LinearLayout

android:layout_width="match_parent"

android:layout_height="match_parent"


(33)

<TextView android:id="@+id/TextView01" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center|left" android:text="@string/wsm"

android:textAppearance="?android:attr/textAppearanceLarge" /> <TableLayout

android:id="@+id/tableLayoutWSM"

android:layout_width="match_parent"

android:layout_height="fill_parent"> </TableLayout> <TextView android:id="@+id/textView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center|left" android:text="@string/saw"

android:textAppearance="?android:attr/textAppearanceLarge" /> <TableLayout

android:id="@+id/tableLayoutSAW"

android:layout_width="match_parent"

android:layout_height="wrap_content"> </TableLayout> </LinearLayout> </ScrollView> </HorizontalScrollView> </LinearLayout>

11. spinner_manual.xml

<?xml version="1.0" encoding="utf-8"?>

<TextView xmlns:android="http://schemas.android.com/apk/res/android"

android:id="@+id/cust_view"

android:layout_width="match_parent"

android:layout_height="36dp"

android:gravity="left|center_vertical"

android:textColor="#fff"

android:padding="10dp" />

12. about.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="@drawable/about"

android:orientation="vertical"> </LinearLayout>k


(34)

CURRICULUM VITAE

Nama Lengkap

: Ananda Putr i Ritonga

Nama Nama Panggilan

: Nanda

Tempat/ Tgl. Lahir

: Medan, 18 Apr il 1992

Jenis Kelamin

: Per empuan

Agama

: Islam

War ga Negar a

: Indonesia

Alamat

: Jl. Flor a VI No.69 Komplek

Kejekasaan Medan

No. HP :085778107176

Email :anandaputr ir itonga@gmail.com

Status

:Belum Menikah

Latar Belakang Pendidikan

1. SD

Yayayasan Pendidikan Shafiyyatul Amaliyah

2. SMP

SMP Neger i 1 Medan

3. SMA

SMK Neger i 10Medan

4. Univer sitas

Univer sitas Sumater a Utar a

Pengalaman Kerja

No

Instansi/ Lembaga

Jabatan/ Posisi

Tahun

1

SMKS Nusa Penida

Medan

Pengajar

2012-2015

Softw ar e Aplikasi

: Micr osoft Office, Photoshop , Dr eamw eaver , Flash

Bahasa Pemr ogr aman

: C+ + , C#

Simulator

: Matlab

Data Pribadi


(35)

Pengalaman Organisasi

sss

No

Nama Or ganisasi

Jabatan

Tahun

Menjabat

1

IMILKOM

Bendahar a

Dana

dan Usaha


(36)

DAFTAR PUSTAKA

Afshari, Ali Reza, Mojahid, Majid, Yusuff & Rosnah. 2010.

SimpleAdditive

Weighting Approach to Personnel Selection Problem

, International Journal of

Innovation, Management and Technology. 1,(5),1-5.

Ariyanto .2012.

Sistem Pendukung Keputusan Pemilihan Karyawan Terbaik dengan

Metode Simple Additive Weighting (Studi Kasus : Pamella Swalayan)

. Skripsi.

Yogyakarta: Universitas Islam Negeri Sunan Kalijaga.

Falah, M.F. 2014

.SistemPendukungKeputusanPemilihanSiswaBerprestasdengan Metode

Simple Addative Weighting & Weighted Sum Model( Studikasus : MIN Tanjung

Sari Medan Selayang )

.Skripsi.Medan :Sumatera Utara.

Hartini, D.C. Ruskan, E.L & Ibrahim,A. 2013.

Sistem Pendukung Keputusan

Pemilihan Hotel di Kota Palembang Dengan Metode Simple Addictive Weighting

(SAW)

. Jurnal Sistem Informasi(JSI). 5,(1),546-565

Kasman, A.D. 2013.

Kolaborasi Dahsyat Android dengan PHP & MYSQL

.

Yogyakarta: Lokomedia.

Pristiwanto.2014.

Sistem Pendukung Keputusan Dengan Metode Simple Addictive

Weighting Untuk Menentukan Dosen Pembimbing Skripsi

.INTI. 2,(1),11-15.

Sugiyono & Agani,N. 2012.

Model Peta Digital Rawan Sambaran Petir Dengan

Menggunakan Metode SAW ( Simple Addictive Weighting) : Studi Kasus Propinsi

Lampung

. TELEMATIKA MKOM.4,(1),90-96.

Triantaphyllou & Mann,S.H.

An Examination of the Effectiviness of

Multi-Dimensional Decision-Making Methods: A Decision-Making Paradox.

USA:


(37)

Department of Industrial and Management Systems Engineering The

Pennsylvania State University.

Triantaphyllou,E & Sanchez. 1997.

A Sensitivity Analysis Approach For Some

Deterministic Multi-Criteria Decision Making Methods

. Decision Sciences. 28,(1),

151-194.

Usito,N.J. 2013.

Sistem Pendukung Keputusan Penilaian Proses Belajar Mengajar

Menggunakan Metode Simple Addictive (SAW)

. Tesis. Universitas Diponegoro

Semarang : Jawa Tengah.


(38)

ANALISIS DAN PERANCANGAN SISTEM

4.1. Analisis Sistem

Analisis sistem bertujuan untuk mengidentifikasi persoalan-persoalan yang akan muncul

dalam pembuatan sistem, hal ini dilakukan agar tidak terjadi kesalahan yang berarti pada saat

perancangan sistem, sehingga sistem yang dirancang berjalan dengan baik dan tepat guna.

Sistem yang dibangun ini akan melakukan perhitungan pemilihan calon ketua OSIS.

Sistem ini dirancang dengan menggunakan Metode Simple Additive Weighting dan

Weighted Sum Model dalam pemilihan calon ketua OSIS pada SMK Swasta Nusa Penida

Medan.

4.1.1. Analisis Masalah

SMK Swasta Nusa Penida Medan memiliki kegiatan OSIS untuk membantu kegiatan diluar

pembelajaran sekolah, yang dimana pemilihannya terdiri dari beberapa kandidat peserta.

Hasil dari pemilihan ini adalah terpilihnya satu orang siswa SMK Swasta Nusa Penida Medan

menjadi ketua OSIS. Hal tersebut tentunya didasari oleh berbagai kriteria yang telah

ditentukan dalam proses pemilihan, yaitu ketidak hadiran, interaksi, kelakuan, kebersihan,

tanggung jawab, kreatifitas, keaktifan dan disiplin.

Untuk memilih seorang ketua OSIS, perhitungan dari banyak kandidat dan kriteria yang ada

memiliki waktu yang cukup lama untuk dilakukan secara manual

Dengan adanya Sistem Pendukung Keputusan pemilihan Calon Ketua OSIS,


(39)

proses perhitungan akan menjadi lebih mudah dan cepat. Aplikasi ini hanya ditujukan untuk

permasalahan pemilihan calon ketua OSIS pada SMK Swasta Nusa Penida Medan, maka

aplikasi yang dibangun berbasis

Android.

Untuk mengidentifikasi masalah tersebut digunakan diagram Ishikawa

(fishbone

diagram). Diagram Ishikawa merupakan alat yang digunakan untuk mengidentifikasi berbgai

faktor permasalahan yang berpengaruh secara signifikan terhadap output perusahaan.

Diagram ini membantu mengidentifikasi akar penyebab dari suatu permasalahan yang sedang

dihadapi.

Gambar 3.1 Diagram Ishikawa untuk Analisis Masalah Sistem

4.1.2. Analisis Kebutuhan Sistem

Analisis Kebutuhan Sistem meliputi analisis kebutuhan fungsional sistem dan analisis

kebutuhan non-fungsional sistem.

4.1.2.1. Kebutuhan Fungsional Sistem

Kebutuhan fungsional yang harus dimiliki oleh Sistem Pendukung Keputusan Pemilihan

Calon Ketua OSIS pada SMK Swasta Nusa Penida Medan adalah :

1. Sistem dapat menerima inputan data dan kriteria siswa.

2. Sistem dapat mengetahui siapa yang layak terpilih menjadi calon ketua OSIS berdasarkan

metode Simple Additive Weighting dan Weighted Sum Model

3. Sistem dapat menampilkan hasil perhitungan pemilihan calon ketua OSIS berdasarkan

metode Simple Additive Weighting dan Weighted Sum Model.

proses perhitungan akan menjadi lebih mudah dan cepat. Aplikasi ini hanya ditujukan untuk

permasalahan pemilihan calon ketua OSIS pada SMK Swasta Nusa Penida Medan, maka

aplikasi yang dibangun berbasis

Android.

Untuk mengidentifikasi masalah tersebut digunakan diagram Ishikawa

(fishbone

diagram). Diagram Ishikawa merupakan alat yang digunakan untuk mengidentifikasi berbgai

faktor permasalahan yang berpengaruh secara signifikan terhadap output perusahaan.

Diagram ini membantu mengidentifikasi akar penyebab dari suatu permasalahan yang sedang

dihadapi.

Gambar 3.1 Diagram Ishikawa untuk Analisis Masalah Sistem

4.1.2. Analisis Kebutuhan Sistem

Analisis Kebutuhan Sistem meliputi analisis kebutuhan fungsional sistem dan analisis

kebutuhan non-fungsional sistem.

4.1.2.1. Kebutuhan Fungsional Sistem

Kebutuhan fungsional yang harus dimiliki oleh Sistem Pendukung Keputusan Pemilihan

Calon Ketua OSIS pada SMK Swasta Nusa Penida Medan adalah :

1. Sistem dapat menerima inputan data dan kriteria siswa.

2. Sistem dapat mengetahui siapa yang layak terpilih menjadi calon ketua OSIS berdasarkan

metode Simple Additive Weighting dan Weighted Sum Model

3. Sistem dapat menampilkan hasil perhitungan pemilihan calon ketua OSIS berdasarkan

metode Simple Additive Weighting dan Weighted Sum Model.

proses perhitungan akan menjadi lebih mudah dan cepat. Aplikasi ini hanya ditujukan untuk

permasalahan pemilihan calon ketua OSIS pada SMK Swasta Nusa Penida Medan, maka

aplikasi yang dibangun berbasis

Android.

Untuk mengidentifikasi masalah tersebut digunakan diagram Ishikawa

(fishbone

diagram). Diagram Ishikawa merupakan alat yang digunakan untuk mengidentifikasi berbgai

faktor permasalahan yang berpengaruh secara signifikan terhadap output perusahaan.

Diagram ini membantu mengidentifikasi akar penyebab dari suatu permasalahan yang sedang

dihadapi.

Gambar 3.1 Diagram Ishikawa untuk Analisis Masalah Sistem

4.1.2. Analisis Kebutuhan Sistem

Analisis Kebutuhan Sistem meliputi analisis kebutuhan fungsional sistem dan analisis

kebutuhan non-fungsional sistem.

4.1.2.1. Kebutuhan Fungsional Sistem

Kebutuhan fungsional yang harus dimiliki oleh Sistem Pendukung Keputusan Pemilihan

Calon Ketua OSIS pada SMK Swasta Nusa Penida Medan adalah :

1. Sistem dapat menerima inputan data dan kriteria siswa.

2. Sistem dapat mengetahui siapa yang layak terpilih menjadi calon ketua OSIS berdasarkan

metode Simple Additive Weighting dan Weighted Sum Model

3. Sistem dapat menampilkan hasil perhitungan pemilihan calon ketua OSIS berdasarkan

metode Simple Additive Weighting dan Weighted Sum Model.


(40)

4.1.2.2. Kebutuhan Non-Fungsional Sistem

Untuk mendukung kinerja sistem, sistem sebaiknya dapat berfungsi sebagai berikut :

1. Sistem dapat melakukan perhitungan pemilihan calon ketua OSIS secara cepat.

2. Sistem harus mudah digunakan sehingga dapat dioperasikan dengan baik oleh pengguna.

4.1.3. Pemodelan

Pemodelan sistem dilakukan untuk memperoleh gambaran jelas tentang hal-hal apa saja yang

harus dilakukan oleh sebuah sistem sehingga sistem dapat berfungsi sesuai dengan

kegunaannya.

Pada penelitian ini digunakan

UML

(Unified Modeling Language) sebagai bahasa

pemodelan untuk mendesain dan merancang Sistem Pendukung Keputusan Pemilihan Calon

Ketua OSIS pada SMK Swasta Nusa Penida Medan. Model UML yang digunakan antara lain

use case diagram, activity diagram,

dan

sequence diagram.

4.1.3.1. Use Case Diagram

Use Case Diagram

adalah sebuah diagram yang dapat merepresentasikan interaksi yang

terjadi antara

user

dengan sistem.

Use Case Diagram

akan menjelaskan fungsi apa saja yang

dikerjakan oleh sistem.


(41)

Gambar 3.2

Use Case Diagram

Sistem Pendukung Keputusan Pemilihan Calon Ketua

OSIS

Pada Gambar 3.2 dapat dilihat

user

dapat memilih 2 aksi yaitu tambah data dan

mendapatkan hasil perhitungan serta perangkingan dari sistem berdasarkan metode WSM dan

SAW. Proses Perhitungan Pemilihan Calon Ketua OSIS, dapat dinyatakan dalam Tabel 3.1

dibawah ini.


(42)

Tabel 3.1. Tabel

Use Case

dalam Proses Perhitungan Pemilihan Calon Ketua OSIS

Name

Proses Perhitungan Pemilihan Calon Ketua OSIS

Actors

Guru dan Staff yang telah ditentukan

Description

Use Case

ini mendeskripsikan proses perhitungan dalam

pemilihan calon ketua OSIS pada SMK swasta Nusa Penida

Basic Flow

Guru dan Staff akan memasukkan seluruh daftar nama dan

bobot kriteria calon ketua OSIS

Alternate Flow

Guru dan Staff dapat kembali ke tampilan awal dan memilih

metode lainnya

Pre Condition

Guru dan Staff dapat melihat nilai kriteria dari setiap alternatif

yang ada

Post Condition

Guru dan Staff mengetahui siapa yang terpilih menjadi ketua

OSIS

Adapun

Activity Diagram

untuk proses Perhitungan Pemilihan Calon Ketua OSIS

pada SMK Swasta Nusa Penida dapat dilihat pada gambar berikut.

Gambar 3.3

Activity Diagram

untuk Daftar Calon

Pada gambar 3.3 dapat dilihat pengguna melakukan pemilihan tambah data kemudian sistem

menampilkan

form

tambah data dan pengguna memasukkan data sesuai

form

yang disediakan

sistem, setelah itu pengguna menyimpan data serta sistem juga melakukan proses

penyimpanan data.


(43)

Gambar 3.4

Activity Diagram

untuk WSM dan SAW

Pada Gambar 3.4 dapat dilihat pengguna memilih metode WSM dan SAW lalu melakukan

pemilihan periode yang ingin ditampilkan, sistem mengambil data sesuai periode dan

melakukan perhitungan dengan metode WSM dan SAW serta menampilkan hasil

perangkingan dari setiap alternatif.

4.1.3.2. Analisis Proses Sistem

Berikut ini akan dijelaskan mengenai proses memasukkan data dan proses perhitungan yang

terjadi pada Sistem Pendukung Keputusan Pemilihan Calon Ketua OSIS pada SMK Swasta

Nusa Penida Medan dengan menggunakan

Sequence diagram.

Pada proses Perhitungan Pemilihan Calon Ketua OSIS, sistem dapat melakukan

perhitungan dengan kedua metode, maka

Sequence Diagram

diperlihatkan pada Gambar 3.5

dan Gambar 3.6 berikut.


(44)

Gambar 3.5

Sequence Diagram

untuk Daftar Calon

Gambar 3.6

Sequence Diagram

untuk WSM dan SAW

Pada Gambar 3.6 terlihat bahwa pengguna mengakses

form

perhitungan dengan kedua

metode, kemudian sistem akan menampilkan

form

perhitungan dengan kedua metode dan

pengguna dapat melihat hasil perhitungan serta perangkingannya.


(45)

4.1.3.3. Flowchart Sistem

Berikut adalah

flowchart

Sistem Pendukung Keputusan Pemilihan Calon Ketua OSIS SMK

Swasta Nusa Penida Medan.

Gambar 3.7

Flowchart

Sistem Pendukung Keputusan Pemilihan Calon Ketua OSIS

Pada Gambar 3.7 jika pengguna mengakses

form

tambah calon maka akan muncul

form

nama calon beserta kriteria yang dapat disimpan, data yang telah disimpan akan di tampilkan

oleh sistem. Jika tidak maka akan keluar pilihan lain yang berupa WSM dan SAW, jika

pengguna mengakses

form

WSM dan SAW maka akan muncul

form

pemilihan periode

setelah periode dipilih maka sistem akan menampilkan hasil perangkingan. Jika tidak maka

akan keluar pilihan terakhir yaitu

form

About.

4.2. Perancangan Sistem

Proses perancangan antarmuka

(interface)

sebuah sistem adalah proses yang cukup penting

dalam perancangan sebuah sistem. Sebuah antarmuka harus dirancang dengan

memperhatikan faktor pengguna sehingga sistem yang dibangun dapat memberikan

kenyamanan dan kemudahan untuk digunakan oleh pengguna.


(46)

4.2.1. Tampilan Awal

Tampilan awal dari Sistem Pendukung Keputusan Pemilihan Calon Ketua OSIS pada SMK

Swasta Nusa Penida Medan. Pada tampilan ini disajikan

form

yang akan dipilih oleh

pengguna untuk menggunakan aplikasi.

Gambar 3.8 Tampilan Awal Pemilihan Calon Ketua OSIS

4.2.2. Antarmuka Daftar Calon

Tampilan Input Data adalah tampilan awal dari Sistem Pendukung Keputusan Pemilihan

Calon Ketua OSIS pada SMK Swasta Nusa Penida Medan. Pada tampilan ini disajikan

form

yang akan diisi oleh pengguna untuk menyimpan data nilai kriteria dari setiap alternatif. Pada

form

ini juga ditampilkan data dan seluruh alternatif yang telah disimpan serta menu ubah

dan hapus.

Gambar 3.9 Antarmuka Input Data Pemilihan Calon Ketua OSIS

4.2.1. Tampilan Awal

Tampilan awal dari Sistem Pendukung Keputusan Pemilihan Calon Ketua OSIS pada SMK

Swasta Nusa Penida Medan. Pada tampilan ini disajikan

form

yang akan dipilih oleh

pengguna untuk menggunakan aplikasi.

Gambar 3.8 Tampilan Awal Pemilihan Calon Ketua OSIS

4.2.2. Antarmuka Daftar Calon

Tampilan Input Data adalah tampilan awal dari Sistem Pendukung Keputusan Pemilihan

Calon Ketua OSIS pada SMK Swasta Nusa Penida Medan. Pada tampilan ini disajikan

form

yang akan diisi oleh pengguna untuk menyimpan data nilai kriteria dari setiap alternatif. Pada

form

ini juga ditampilkan data dan seluruh alternatif yang telah disimpan serta menu ubah

dan hapus.

Gambar 3.9 Antarmuka Input Data Pemilihan Calon Ketua OSIS

4.2.1. Tampilan Awal

Tampilan awal dari Sistem Pendukung Keputusan Pemilihan Calon Ketua OSIS pada SMK

Swasta Nusa Penida Medan. Pada tampilan ini disajikan

form

yang akan dipilih oleh

pengguna untuk menggunakan aplikasi.

Gambar 3.8 Tampilan Awal Pemilihan Calon Ketua OSIS

4.2.2. Antarmuka Daftar Calon

Tampilan Input Data adalah tampilan awal dari Sistem Pendukung Keputusan Pemilihan

Calon Ketua OSIS pada SMK Swasta Nusa Penida Medan. Pada tampilan ini disajikan

form

yang akan diisi oleh pengguna untuk menyimpan data nilai kriteria dari setiap alternatif. Pada

form

ini juga ditampilkan data dan seluruh alternatif yang telah disimpan serta menu ubah

dan hapus.

Gambar 3.9 Antarmuka Input Data Pemilihan Calon Ketua OSIS


(47)

Gambar 3.10 Antarmuka List Pemilihan Calon Ketua OSIS

Keterangan :

1. Kolom kriteria dari setiap alternatif

2. Tombol ubah untuk mengubah data dari setiap alternatif

3. Tombol hapus untuk menghapus data dari setiap alternatif

4. List nama dari setiap alternatif

5. Tombol tambah calon ketua OSIS

6. kolom ID dari setiap alternatif

7. kolom nama dari setiap alternatif

8. List nama calon ketua OSIS

4.2.3. Antarmuka Perhitungan dengan Metode SAW dan WSM

Pada Tampilan Perhitungan dengan metode SAW dan WSM, akan ditampilkan data yang

telah disimpan dan pengguna dapat melihat hasil perhitungan dengan kedua metode tersebut,

yang hasilnya akan ditampilkan pada

form

tersebut

Gambar 3.11 Antarmuka Perhitungan dengan Metode SAW dan WSM

Gambar 3.10 Antarmuka List Pemilihan Calon Ketua OSIS

Keterangan :

1. Kolom kriteria dari setiap alternatif

2. Tombol ubah untuk mengubah data dari setiap alternatif

3. Tombol hapus untuk menghapus data dari setiap alternatif

4. List nama dari setiap alternatif

5. Tombol tambah calon ketua OSIS

6. kolom ID dari setiap alternatif

7. kolom nama dari setiap alternatif

8. List nama calon ketua OSIS

4.2.3. Antarmuka Perhitungan dengan Metode SAW dan WSM

Pada Tampilan Perhitungan dengan metode SAW dan WSM, akan ditampilkan data yang

telah disimpan dan pengguna dapat melihat hasil perhitungan dengan kedua metode tersebut,

yang hasilnya akan ditampilkan pada

form

tersebut

Gambar 3.11 Antarmuka Perhitungan dengan Metode SAW dan WSM

Gambar 3.10 Antarmuka List Pemilihan Calon Ketua OSIS

Keterangan :

1. Kolom kriteria dari setiap alternatif

2. Tombol ubah untuk mengubah data dari setiap alternatif

3. Tombol hapus untuk menghapus data dari setiap alternatif

4. List nama dari setiap alternatif

5. Tombol tambah calon ketua OSIS

6. kolom ID dari setiap alternatif

7. kolom nama dari setiap alternatif

8. List nama calon ketua OSIS

4.2.3. Antarmuka Perhitungan dengan Metode SAW dan WSM

Pada Tampilan Perhitungan dengan metode SAW dan WSM, akan ditampilkan data yang

telah disimpan dan pengguna dapat melihat hasil perhitungan dengan kedua metode tersebut,

yang hasilnya akan ditampilkan pada

form

tersebut

Gambar 3.11 Antarmuka Perhitungan dengan Metode SAW dan WSM


(48)

4.2.4. Antarmuka About

Pada Tampilan About akan dijelaskan secara singkat mengenai OSIS SMK Swasta Nusa

Penida Medan, yang ditampilkan pada

form

tersebut.

Gambar 3.12 Antarmuka About

4.2.4. Antarmuka About

Pada Tampilan About akan dijelaskan secara singkat mengenai OSIS SMK Swasta Nusa

Penida Medan, yang ditampilkan pada

form

tersebut.

Gambar 3.12 Antarmuka About

4.2.4. Antarmuka About

Pada Tampilan About akan dijelaskan secara singkat mengenai OSIS SMK Swasta Nusa

Penida Medan, yang ditampilkan pada

form

tersebut.

Gambar 3.12 Antarmuka About


(49)

BAB 4

IMPLEMENTASI DAN PENGUJIAN SISTEM

4.1 Implementasi Sistem

Implementasi sistem merupakan tahapan yang harus dilalui dalam proses pengembangan

perangkat lunak dari suatu sistem. Tahap ini dilakukan setelah terlebih dahulu melalui tahap

analisis dan perancangan sistem yang telah diuraikan pada bab sebelumnya.

4.1.1. Implementasi Metode Simple Additive Weighting

Penerapan Metode Simple Additive Weighting dalam sistem yang dibuat adalah pada proses

perhitungan dengan metode Simple Additive Weighting dalam pemilihan calon ketua OSIS

pada SMK Swasta Nusa Penida Medan. Seluruh siswa yang aktif mengikuti kegiatan belajar

mengajar di SMK Swasta Nusa Penida Medan akan dijadikan alternatif dalam mengambil

keputusan siapa yang berhak dipilih menjadi calon ketua OSIS.

Adapun langkah pertama yang dilakukan adalah melakukan normalisasi nilai criteria

dari seluruh alternatif yang telah dimasukkan kedalam sistem. Selanjutnya data hasil proses

normalisasi tersebut dikalikan dengan bobot dari kriteria yang ditentukan. Selanjutnya hasil

perkalian data dengan semua criteria akan dijumlahkan untuk memperoleh nilai SAW dari

setiap alternatif.

4.1.2. Implementasi Weighted Sum Model

Penerapan Metode Weighted Sum Model dalam sistem yang dibuat adalah pada

proses perhitungan dengan metode Weighted Sum Model dalam pemilihan calon ketua OSIS

pada SMK Swasta Nusa Penida Medan. Seluruh siswa yang aktifmengikuti kegiatan belajar

mengajar di SMK Swasta Nusa Penida Medanakan dijadikan alternatif dalam mengambil

keputusan siapa yang berhak dipilih menjadi calon ketua OSIS.


(50)

Adapun langkah yang dilakukan untuk memperoleh nilai WSM dari setiap alternative

adalah melakukan perkalian bobot dari kriteria yang ditentukan dengan data nilai criteria dari

seluruh alternatif. Selanjutnya hasil perkalian data dengan semua criteria akan dijumlahkan

untuk memperoleh nilai WSM dari setiap alternatif.

4.2. Antarmuka Sistem

Pada Sistem Pendukung Keputusan Pemilihan Calon Ketua OSIS pada SMK Swasta Nusa

Penida Medan ini terdapat empat tampilan, yaitu :

1. Tampilan Awal

2. Daftar Calon

3. WSM dan SAW

4. About

4.2.1. Tampilan Awal

Tampilan Awal adalah tampilan pertama yang muncul saat sistem dijalankan. Tampilan ini

berisikan

form

yang akan dipilih oleh pengguna untuk menggunakan sistem.

Gambar 4.1 TampilanAwal


(51)

4.2.2. TampilanDaftar Calon

Pada Menu DaftarCalonterdapat satu

button

tambah calon untuk menginput nama dan kriteria

calon ketua OSIS, dan setelah diinput dalam menu ini juga terdapat tampilan seluruh calon

ketua OSIS yang dimana setiap calon memiliki menu ubah dan hapus pada menu

actionnya.

Gambar 4.2 Tampilan Menu Daftar Calon


(52)

4.2.3. Tampilan Menu WSM dan SAW

Pada Menu WSM dan SAW ini menampilkan hasil perhitungan dan perengkingan dari setiap

alternatif yang ada berdasarkan kedua metode dan periodisasinya.

Gambar 4.3Tampilan Menu Periodisasi


(53)

Gambar 4.4 Tampilan Menu WSM dan SAW

4.2.4. Tampilan Menu About

Pada menu ini, akan diberikan petunjuk penggunaan dari Sistem Pendukung Keputusan

Pemilihan Calon Ketua OSIS pada SMK Swasta Nusa Penida Medan.

Gambar 4.5 Tampilan Menu About


(54)

4.3. Pengujian Sistem

Pengujian sistem dilakukan untuk mengetahui bagaimana kinerja sistem dalam melakukan

proses perhitungan pemilihan calon ketua OSIS menggunakan Metode Simple Additive

Weighting dan Weighted Sum Model. Hasil yang diberikan oleh kedua metode nantinya

berupa rangking dari peringkat awal sampai akhir. Bobot dari kriteria yang ditetapkan dapat

dilihat pada Tabel 4.1

Tabel 4.1. Tabel Bobot Kriteria

Kriteria

Bobot (%)

Ketidak hadiran

10 %

Interaksi

20 %

Kelakuan

10 %

Kebersihan

10 %

Tanggung Jawab

20 %

Kreatif

10 %

Aktif

10 %

Disiplin

10 %

Dari data yang telah dikumpulkan, maka dapat dilihat perolehan hasil dari

perhitungan manual dan perhitungan sistem. Berikut adalah gambar hasil perhitungan manual

dari kedua metode.

Tahun 2011

Perhitungan WSM dengan rumus (1) sebagai berikut :

=

.

,

=

, , …

Keterangan :

Ai

= referensi

= hasil penjumlahan

n

= batas atas

j

= batas bawah

w

= bobot

u

= kriteria


(55)

Tabel 4.2 Perhitungan WSM tahun 2011

Perhitungan SAW dengan rumus sebagai berikut, dimana nilai ketidakhadiran adalah atribut

kerugian yang dihitung menggunakan rumus(2) biaya(cost) dan selebihnya atribut

keuntungan yang dihitung dengan rumus(3) keuntungan, setelah mendapatkan hasil dari

rumus pertama lanjut ke rumus(4) yaitu perkalian matriks rating kepentingan bobot (w) dan

rating (r) sehingga mendapatkan hasil V sebagai nilai Matriks.

rumus(2)

rumus(3)

rumus(4)


(1)

ABSTRACT

The election of the best OSIS chairman in SMK Swasta Nusa Penida Medan aims to getthe best osis chairman. The election is based on determined criterion such as absence, interaction, behaviour, hygiene, responsibility, creativity, liveliness and discipline. Decision support systemis needed to assist the election. The method used are Simple Additive Weighting (SAW) andWeighting Sum Model (WSM). On WSM method, the averagesum from year 2011-2015 are 4,88, 5,26, 5,17, 5,29 and 5,21. On SAW method, the average sum from year 2011-2015 are0,69, 0,77, 0,73, 0,79 and 0,71.This system can beusedto assist the election of the best osis chairman problem in SMK Swasta NusaPenida Medan.

Keywords: Decision Support System, Simple Additive Weighting, SAW, Weighted Sum Model, WSM, OSIS, SMK Swasta Nusa Penida Medan.


(2)

DAFTAR ISI

Halaman

Persetujuan ii

Pernyataan iii

Penghargaan iv

Abstrak vi

Abstract vii

Daftar Isi viii

Daftar Tabel x

Daftar Gambar xi

Daftar Lampiran xii

Bab I Pendahuluan

1.1 Latar Belakang 1

1.2 Rumusan Masalah 2

1.3 Batasan Masalah 2

1.4Tujuan Penelitian 3

1.5 Manfaat Penelitian 3

1.6 Metodologi Penelitian 3

1.7 Sistematika Penulisan 4

Bab II Landasan Teori

2.1 Sistem Pendukung Keputusan 6

2.1.1 Komponen Sistem Pendukung Keputusan 6

2.2Android 7

2.2.1 VersiAndroid 7

2.3 Simple Additive Weighting (SAW) 8

2.4Weighting Sum Model (WSM) 11

Bab III Analisis dan Perancangan

3.1 Analisis Sistem 14

3.1.1 Analisis Masalah 14

3.1.2 Analisis Kebutuhan Sistem 15 3.1.2.1Kebutuhan Fungsional Sistem 15 3.1.2.2Kebutuhan Non-fungsional Sistem 16

3.1.3 Pemodelan 16

3.1.3.1 Use case diagram 16

3.1.3.2 Analisis Proses Sistem 19

3.1.3.3Flowchart Sistem 21

3.2 Perancangan Sistem 21

3.2.1 Tampilan Awal 22

3.2.2 Antarmuka Daftar Calon 22

3.2.3 Antarmuka Perhitungan dengan Metode SAW dan WSM 23


(3)

Bab IV Implementasi dan Pengujian

4.1 Implementasi Sistem 25

4.1.1 Implementasi Metode Simple Additive Weighting 25 4.1.2 Implementasi Weighted Sum Model 25

4.2 Antarmuka Sistem 26

4.2.1 Tampilan Awal 26

4.2.2 Tampilan Daftar Calon 27

4.2.3 Tampilan Menu WSM dan SAW 28

4.2.4Tampilan Menu About 29

4.3 Pengujian Sistem 30

Bab V Kesimpulan dan Saran

5.1 Kesimpulan 47

5.2Saran 47

Daftar Pustaka 48


(4)

DAFTAR TABEL Nomor

Tabel Nama Tabel Halaman

2.1 2.2 2.3 3.1 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10 4.11

ContohNilai SAW HasilNormalisasiNilai ContohNilai WSM

Use Case dalam Proses PerhitunganPemilihanCalonKetua OSIS BobotKriteria

Perhitungan WSM tahun 2011 Perhitungan SAW tahun 2011 Perhitungan WSM tahun 2012 Perhitungan SAW tahun 2012 Perhitungan WSM tahun 2013 Perhitungan SAW tahun 2013 Perhitungan WSM tahun 2014 Perhitungan SAW tahun 2014 Perhitungan WSM tahun 2015 Perhitungan SAW tahun 2015

10 10 12 18 30 31 32 34 35 38 38 41 42 44 45


(5)

DAFTAR GAMBAR

Nomor

Gambar Nama Gambar Halaman

2.1 2.2 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10 4.11 4.12 4.13 4.14 4.15

Flowchart MetodeSimple Additive Weighting Flowchart MetodeWeighted Sum Model

Diagram Ishikawa UntukAnalisisMasalahSistem

Use Case Diagram

SistemPendukungKeputusanPemilihanCalonKetua OSIS Actifity Diagram untuk Daftar Calon

Actifity Diagram untuk WSM dan SAW Squance Diagram UntukDaftar Calon Squance Diagram untuk WSM dan SAW

Flowchart Sistem Pendukung Keputusan Pemilihan Calon Ketua OSIS

TampilanAwalPemilihanCalonKetua OSIS

Antarmuka Input Data PemilihanCalonKetua OSIS Antarmuka List PemilihanCalonKetua OSIS

AntarmukaPerhitungandenganMetode SAW dan WSM Antarmuka About

TampilanAwal

TampilanMenu DaftarCalon Tampilan Menu Periodisasi TampilanMenu WSM dan SAW TampilanMenu About

Perhitungan Sistem WSM tahun 2011 Perhitungan Sistem SAW tahun 2011 Perhitungan Sistem WSM tahun 2012 Perhitungan Sistem SAW tahun 2012 Perhitungan Sistem WSM tahun 2013 Perhitungan Sistem SAW tahun 2013 Perhitungan Sistem WSM tahun 2014 Perhitungan Sistem SAW tahun 2014 Perhitungan Sistem WSM tahun 2015 Perhitungan Sistem SAW tahun 2015

9 12 15 17 18 19 20 20 21 22 22 23 23 24 26 27 28 29 29 33 34 36 37 39 40 43 44 46 47 xi


(6)

DAFTAR LAMPIRAN

Listing Program 52


Dokumen yang terkait

Implementasi Perbandingan Metode Simple Additive Weighting Dengan Weighted Sum Model Dalam Pemilihan Siswa Berprestasi

8 109 134

Sistem Pendukung Keputusan Pemilihan Ketua Kompetensi Keahlian (K3) dengan Metode Simple Additive Weighting (SAW) pada SMKN 11 Semarang.

0 3 9

Perbandingan Sistem Pendukung Keputusan Pemilihan Calon Ketua Osis Pada Smk Swasta Nusa Penida Medan Dengan Metodesimple Additive Weighting & Weighted Summodel Berbasis Android

0 0 13

Perbandingan Sistem Pendukung Keputusan Pemilihan Calon Ketua Osis Pada Smk Swasta Nusa Penida Medan Dengan Metodesimple Additive Weighting & Weighted Summodel Berbasis Android

0 0 2

Perbandingan Sistem Pendukung Keputusan Pemilihan Calon Ketua Osis Pada Smk Swasta Nusa Penida Medan Dengan Metodesimple Additive Weighting & Weighted Summodel Berbasis Android

0 0 5

Perbandingan Sistem Pendukung Keputusan Pemilihan Calon Ketua Osis Pada Smk Swasta Nusa Penida Medan Dengan Metodesimple Additive Weighting & Weighted Summodel Berbasis Android

0 0 8

Perbandingan Sistem Pendukung Keputusan Pemilihan Calon Ketua Osis Pada Smk Swasta Nusa Penida Medan Dengan Metodesimple Additive Weighting & Weighted Summodel Berbasis Android

0 0 2

Perbandingan Sistem Pendukung Keputusan Pemilihan Calon Ketua Osis Pada Smk Swasta Nusa Penida Medan Dengan Metodesimple Additive Weighting & Weighted Summodel Berbasis Android

0 0 35

SISTEM PENDUKUNG KEPUTUSAN PEMILIHAN CALON PENERIMA BEASISWA DENGAN FUZZY METODE SIMPLE ADDITIVE WEIGHTED

0 0 12

SISTEM PENDUKUNG KEPUTUSAN PEMILIHAN RESTORAN DI KOTA BENGKULU DENGAN METODE SIMPLE ADDITIVE WEIGHTING (SAW) BERBASIS SISTEM OPERASI ANDROID

0 0 10