Perbandingan Sistem Pendukung Keputusan Pemilihan Calon Ketua Osis Pada Smk Swasta Nusa Penida Medan Dengan Metodesimple Additive Weighting & Weighted Summodel Berbasis Android
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
sssNo
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