Implementasi Algoritma Knuth-Morris Prattstring Matching Untuk Mencari Kata Atau Istilah Pada Kamus Komputer Berbasis Android
Listing Program
CariKata.javapackage com.indah.kmp; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.os.Environment; import android.view.View; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; public class CariKata extends Activity { private AutoCompleteTextView actv; EditText edkata, edarti; Button b1 , b2, btn2kembali; TextView tvarti, tvnotfound; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); b1 = (Button) findViewById (R.id.btncari); b2 = (Button) findViewById
(R.id.button_tambah); btn2kembali= (Button) findViewById (R.id.btn2_cari);
List<String> listkata = new ArrayList<String>();
File fl = new File(Environment.getExternalStorageDirectory() + "/contoh");
String ck = fl.toString()+"/"+"kerjaku.csv"; BufferedReader br = null; String line = ""; String cvsSplitBy = "#"; try { br = new BufferedReader(new
FileReader(ck)); while ((line = br.readLine()) != null) { String[] kamus = line.split(cvsSplitBy);
String kata_b = kamus[0]; listkata.add(kata_b); }
} catch (FileNotFoundException e) { e.printStackTrace();
} catch (IOException e) { e.printStackTrace();
} finally { if (br != null) { try { br.close(); } catch (IOException e) { e.printStackTrace();
} }
} String[] kata = listkata.toArray(new
String[listkata.size()]); ArrayAdapter adapter = new ArrayAdapter (this,android.R.layout.simple_list_item_1,kata); actv = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1); actv.setAdapter(adapter); b1.setOnClickListener( new
View.OnClickListener(){ public void onClick(View arg0) { actv = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1); tvarti = (TextView) findViewById(R.id.tvArti);
File folder = new File(Environment.getExternalStorageDirectory() + "/contoh"); String csv = folder.toString()+"/"+"kerjaku.csv";
KMP k = new KMP(); String cari = actv.getText().toString(); System.out.println("Terjemahan kata "+cari);
BufferedReader br = null; String line = ""; String cvsSplitBy = "#"; int ketemu = 0; try { br = new BufferedReader(new FileReader(csv)); while ((line = br.readLine()) != null) { String[] kamus = line.split(cvsSplitBy); String kata = kamus[0]; String arti = kamus[1]; int first_occur_position = k.kmp(kata , cari); if(first_occur_position >= 0){ tvarti.setText(kata + "="+arti);
System.out.println(kata + "="+arti); ketemu += 1; }
} } catch (FileNotFoundException e) { e.printStackTrace();
} catch (IOException e) { e.printStackTrace(); } finally { if (br != null) { try { br.close(); } catch (IOException e) { e.printStackTrace(); }
} } System.out.println("Proses Baca Data Selesai"); if(ketemu<1){ tvarti.setText("Kata Tidak Ditemukan"); } edkata.setText("");
} }); b2.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) { // TODO Auto-generated method stub Intent i = new Intent(CariKata.this,
TambahKata.class); i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(i);
} }); btn2kembali.setOnClickListener(new
View.OnClickListener() { @Override public void onClick(View v) {
// TODO Auto-generated method stub
Intent i = new Intent(CariKata.this, MainActivity.class); startActivity(i);
} });
} }
KMP.java package com.indah.kmp; publicclass KMP { publicint[] prekmp(String pattern) { int[] next = newint[pattern.length()]; int i=0, j=-1;
next[0]=-1;
while (i<pattern.length()-1) { while (j>=0 &&
pattern.charAt(i)!=pattern.charAt(j)) j = next[j]; i++; j++; next[i] = j;
}
return next;
}
publicint kmp(String text, String pattern) { int[] next = prekmp(pattern); int i=0, j=0; while (i<text.length()) { while (j>=0 &&
text.charAt(i)!=pattern.charAt(j)) j = next[j]; i++; j++;
if (j==pattern.length()) return i-
pattern.length(); }
return -1;
}
}
MainActivity.java package com.indah.kmp; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import android.support.v7.app.ActionBarActivity; import android.content.Intent; //indah tmbah import android.os.Bundle; import android.os.Environment; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; publicclass MainActivity extends ActionBarActivity {
Button cari, tambah; @Override
protectedvoid onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.dashboard); cari = (Button) findViewById (R.id.button_cari); tambah = (Button) findViewById (R.id.button_tambah); cari.setOnClickListener(new View.OnClickListener() {
@Override
publicvoid onClick(View v) {
Intent i = new Intent(MainActivity.this, CariKata.class); startActivity(i);
}
}); tambah.setOnClickListener(new View.OnClickListener() {
@Override
publicvoid onClick(View v) {
// TODO Auto-generated method stub Intent i = new Intent(MainActivity.this,
TambahKata.class); startActivity(i); }
}); }
@Override
publicboolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
returntrue;
} @Override
publicboolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if (id == R.id.action_settings) { returntrue;
}
returnsuper.onOptionsItemSelected(item);
} }
TambahKata.java package com.indah.kmp; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException;
import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.os.Environment; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; publicclass TambahKata extends Activity {
Button btn2; Button b1; Button btnsimpan; TextView tvarti, tvnotfound; EditText edkata, edarti; @Override
protectedvoid onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.tambah_kata); b1 = (Button) findViewById (R.id.btncari); btn2 = (Button)findViewById(R.id.btn2); btn2.setOnClickListener( new
View.OnClickListener(){ @Override
publicvoid onClick(View v) {
Intent i = new Intent(TambahKata.this, MainActivity.class); i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(i);
} }); b1.setOnClickListener(new
View.OnClickListener() { @Override
publicvoid onClick(View v) { edkata = (EditText)findViewById(R.id.edkata); edarti = (EditText)findViewById(R.id.edarti);
String kata = edkata.getText().toString(); String arti = edarti.getText().toString(); List<String> listkata = new
ArrayList<String>(); List<String> listarti = new ArrayList<String>(); File folder = new File(Environment.getExternalStorageDirectory() + "/contoh");
String csvFile = folder.toString()+"/"+"kerjaku.csv"; BufferedReader br = null; String line = ""; String cvsSplitBy = "#";
try {
br = new BufferedReader(new FileReader(csvFile));
while ((line = br.readLine()) != null) {
String[] kamus = line.split(cvsSplitBy); String kata_b = kamus[0]; String arti_b = kamus[1]; listkata.add(kata_b); //terus di masukin ke kotak listarti.add(arti_b); } } catch (FileNotFoundException e) { e.printStackTrace();
} catch (IOException e) { e.printStackTrace();
} finally {
if (br != null) { try {
br.close(); } catch (IOException e) { e.printStackTrace();
} }
} System.out.println("Proses Baca Data
Selesai");
try
{ String NamaFile = folder.toString()+"/"+"kerjaku.csv"; FileWriter writer = new
FileWriter(NamaFile);
int p = listkata.size();
for(int i= 0 ; i < p; i++){
String s_kata = listkata.get(i); String s_arti = listarti.get(i); writer.append(s_kata); writer.append('#'); writer.append(s_arti); writer.append('\n');
} writer.append(kata); writer.append('#'); writer.append(arti); writer.append('\n'); writer.flush(); writer.close(); }
catch(IOException e)
{ e.printStackTrace(); }
System.out.println("Proses Input Selesai");
} });
} }
Tentang.Java
package com.indah.kmp; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; publicclass Tentang extends Activity {
Button btn1; @Override
protectedvoid onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.tentang); btn1 = (Button)findViewById(R.id.button1); btn1.setOnClickListener( new View.OnClickListener(){ @Override
publicvoid onClick(View v) {
Intent i = new Intent(Tentang.this, MainActivity.class); i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(i); }
}); } }
Bantuan.Java package com.indah.kmp; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; publicclass Bantuan extends Activity {
Button btn1; @Override
protectedvoid onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.tentang); btn1 = (Button)findViewById(R.id.button1); btn1.setOnClickListener( new View.OnClickListener(){ @Override
publicvoid onClick(View v) {
Intent i = new Intent(Bantuan.this, MainActivity.class); i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(i); }
}); } }
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android
"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:background="@drawable/kamus" tools:context="com.indah.kmp.MainActivity"> <Button android:id="@+id/button_tambah" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/btncari" android:layout_alignBottom="@+id/btncari" android:layout_alignParentRight="true" android:text="Tambah Kata" /> <Button android:id="@+id/btncari" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/textView3" android:layout_alignLeft="@+id/textView1" android:layout_marginBottom="18dp" android:text="Cari" /> <TextView android:id="@+id/textView3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/btncari" android:layout_centerVertical="true" android:text="Arti" android:textColor="#FF6600" android:textSize="27sp" android:textStyle="bold" /> <TextView android:id="@+id/tvArti" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignRight="@+id/btncari" android:layout_below="@+id/textView3" android:layout_marginTop="20dp" android:text="TextView" android:textColor="#000000" android:textSize="15sp" /> <AutoCompleteTextView android:id="@+id/autoCompleteTextView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView1" android:layout_below="@+id/textView1" android:layout_marginTop="16dp" android:ems="10"> <requestFocus /> </AutoCompleteTextView> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:text="Kata" android:textColor="#FF6600"
android:textSize="27sp" android:textStyle="bold" /> <Button android:id="@+id/btn2_cari" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/button_tambah" android:layout_alignParentBottom="true" android:layout_alignRight="@+id/button_tambah" android:layout_marginBottom="24dp" android:layout_marginRight="17dp" android:text="Kembali" /> </RelativeLayout>bantuan.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:orientation="vertical"> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Bantuan Menggunakan Aplikasi" android:textAppearance="?android:attr/textAppearanceMediu
m" />
<EditText android:id="@+id/editText1" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:inputType="textMultiLine" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Kembali" /> </LinearLayout>
dashboard.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android
"
android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/huruf" android:src="@drawable/icon" > <Button android:id="@+id/button_cari" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_marginRight="35dp" android:layout_marginTop="86dp" android:layout_toLeftOf="@+id/button_tambah" android:height="80dp" android:text="Cari Kata" android:width="120dp" /> <Button android:id="@+id/button_tambah" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_alignTop="@+id/button_cari" android:layout_marginRight="26dp" android:height="80dp" android:text="Tambah Kata" android:width="120dp" /> <Button android:id="@+id/button4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/button_tambah" android:layout_centerVertical="true" android:height="80dp" android:text="Bantuan" android:width="120dp" /> <Button android:id="@+id/button3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/button_cari" android:layout_centerVertical="true" android:height="80dp" android:text="Tentang Aplikasi" android:width="120dp" /> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/button_cari" android:layout_alignParentTop="true" android:layout_alignRight="@+id/button_tambah" android:gravity="center" android:layout_marginTop="28dp" android:text="KAMUS ISTILAH KOMPUTER" android:textAppearance="?android:attr/textAppearanceMediu
m" />
</RelativeLayout>
tambah_kata.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android
"
android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/addkamus" android:orientation="vertical"> <Button android:id="@+id/btn2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:layout_marginBottom="24dp" android:layout_marginRight="27dp" android:text="Kembali" /> <EditText android:id="@+id/edarti" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignBottom="@+id/btncari" android:layout_alignLeft="@+id/textView3" android:layout_alignRight="@+id/btn2" android:layout_marginBottom="57dp" android:ems="10"> <requestFocus /> </EditText> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Kata" android:textColor="#FF6600" android:textSize="27sp" android:textStyle="bold" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginLeft="18dp" android:layout_marginTop="26dp" android:textAppearance="?android:attr/textAppearanceMediu
m" />
<EditText android:id="@+id/edkata" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView3" android:layout_alignRight="@+id/edarti" android:layout_below="@+id/textView2" android:layout_marginTop="27dp" android:ems="10" /> <TextView android:id="@+id/textView3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView2" android:layout_below="@+id/edkata" android:layout_marginTop="26dp" android:text="Arti" android:textSize="27sp" android:textStyle="bold" android:textColor="#FF6600" android:textAppearance="?android:attr/textAppearanceMediu
m" />
<Button android:id="@+id/btncari" android:layout_width="146dp" android:layout_height="wrap_content" android:layout_above="@+id/btn2" android:layout_alignLeft="@+id/textView3" android:layout_marginBottom="76dp" android:text="Simpan" /> </RelativeLayout>
Tentang.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android
"
android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/tentang" android:orientation="vertical" android:singleLine="false"> <TextView android:id="@+id/textView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Tentang Aplikasi Komputer" android:textAppearance="?android:attr/textAppearanceMediu
m" />
<TextView android:id="@+id/textView2" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/textView1" android:layout_marginTop="35dp" android:layout_weight="0.11" android:text="Kamus Istilah Komputer ini yaitu sebuah
alat bantu bagi manusia untuk mendapatkan arti dari suatu
kata atau istilah yang biasanya disusun berdasarkan abjad
sehingga akan lebih mudah mengetahui makna dari istilahkomputer. Dengan menggunakan perangkat teknologi mobile
device berbasis android sebagai alat yang lebih praktis karena sifatnya portable sehingga memudahkan bagi yang ingin mendapatkan informasi mengenai Istilah komputer."/>
<Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/textView2" android:layout_marginTop="47dp" android:text="Kembali" /> </RelativeLayout>
Bantuan.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/bantuan" android:orientation="vertical"> <TextView android:id="@+id/textView2" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0.00" android:text="Bantuan Menggunakan Aplikasi" android:textAppearance="?android:attr/textAppearanceLarge
" />
<TextView android:id="@+id/textView1" android:layout_width="228dp" android:layout_height="wrap_content" android:text="1. Instal KMP.apk pada handpone Android. 2.
lalu buka aplikasi KMP3. Terdapat 4 menu tombol pada Halaman Utama 4. Tombol CARI KATA yaitu halaman untuk melakukan pencarian istilah komputer.5. Tombol TAMBAH
KATA yaitu halaman untuk menambah kosa kata baru istilah
komputer .6. Tombol TENTANG yaitu Halaman untuk mengetahui tentang Aplikasi Komputer 7. Tombol BANTUAN yaitu Halamat untuk mendapatkan cara menggunakan Aplikasi." /><Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Kembali" /> </LinearLayout>
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android
"
package="com.indah.kmp" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="19" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <application android:allowBackup="true" android:icon="@drawable/iconbaru" android:label="@string/app_name" android:theme="@style/AppTheme"> <activity android:name=".MainActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".TambahKata" android:label="@string/app_name"> </activity>
<activity android:name=".CariKata" android:label="@string/app_name"> </activity> <activity android:name=".Tentang" android:label="@string/app_name"> </activity> </application> </manifest>