Otomatisasi Indeks Ebook Algorithms Dengan Menggunakan Algoritma Knuth-Morris- Pratt Dan Algoritma Quicksort

(1)

Listing Program

/*

* To change this template, choose Tools | Templates * and open the template in the editor.

*/

package skripsi2; /**

*

* @author Fazil */

public class Tentangalgoritma extends javax.swing.JFrame { /**

* Creates new form Tentangalgoritma */

public Tentangalgoritma() { initComponents();

} /**

* This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor.

*/

@SuppressWarnings("unchecked")

// <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() {

jPanel1 = new javax.swing.JPanel(); kmp = new javax.swing.JButton(); menu = new javax.swing.JButton(); quicksort = new javax.swing.JButton();

jScrollPane1 = new javax.swing.JScrollPane(); hasilalgoritma = new javax.swing.JTextArea(); jPanel2 = new javax.swing.JPanel();

jLabel1 = new javax.swing.JLabel();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); jPanel1.setBackground(new java.awt.Color(0, 0, 204));

kmp.setBackground(new java.awt.Color(255, 255, 255));

kmp.setFont(new java.awt.Font("Times New Roman", 1, 12)); // NOI18N kmp.setText("Knuth-Morris-Pratt");


(2)

public void actionPerformed(java.awt.event.ActionEvent evt) { kmpActionPerformed(evt);

} });

menu.setBackground(new java.awt.Color(255, 255, 255));

menu.setFont(new java.awt.Font("Times New Roman", 1, 14)); // NOI18N menu.setText("Kembali Ke Menu");

menu.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { menuActionPerformed(evt);

} });

quicksort.setBackground(new java.awt.Color(255, 255, 255));

quicksort.setFont(new java.awt.Font("Times New Roman", 1, 12)); // NOI18N quicksort.setText("Quicksort");

quicksort.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { quicksortActionPerformed(evt); } }); hasilalgoritma.setColumns(20); hasilalgoritma.setRows(5); jScrollPane1.setViewportView(hasilalgoritma);

jLabel1.setBackground(new java.awt.Color(248, 248, 248));

jLabel1.setFont(new java.awt.Font("Times New Roman", 1, 18)); // NOI18N jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel1.setText("Tentang Algoritma Skripsi");

javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); jPanel2.setLayout(jPanel2Layout); jPanel2Layout.setHorizontalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) ); jPanel2Layout.setVerticalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, 42, Short.MAX_VALUE)


(3)

javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup()

.addGap(21, 21, 21) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment. LEADING) .addComponent(menu, javax.swing.GroupLayout.PREFERRED_SIZE, 168, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(quicksort, javax.swing.GroupLayout.PREFERRED_SIZE, 168, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(kmp, javax.swing.GroupLayout.PREFERRED_SIZE, 168, javax.swing.GroupLayout.PREFERRED_SIZE))

.addGap(38, 38, 38)

.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 465, Short.MAX_VALUE) .addContainerGap()) .addComponent(jPanel2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(8, 8, 8)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment. LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addComponent(kmp, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(29, 29, 29) .addComponent(quicksort,

javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(28, 28, 28)

.addComponent(menu, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(0, 129, Short.MAX_VALUE))


(4)

Listing Program

/*

* To change this template, choose Tools | Templates * and open the template in the editor.

*/

package skripsi2;

import java.io.BufferedReader; import java.io.File;

import java.io.FileReader; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JFileChooser; import javax.swing.JOptionPane; /**

*

* @author Fazil */

public class Bacabuku extends javax.swing.JFrame { /**

* Creates new form Bacabuku */

public Bacabuku() { initComponents(); }

/**

* This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor.

*/

jPanel1.setBackground(new java.awt.Color(51, 102, 255)); jButton3.setBackground(new java.awt.Color(255, 255, 255));

jButton3.setFont(new java.awt.Font("Times New Roman", 0, 14)); // NOI18N jButton3.setText("Cari kata");

jButton3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton3ActionPerformed(evt);

} });


(5)

jButton4.setBackground(new java.awt.Color(255, 255, 255));

jButton4.setFont(new java.awt.Font("Times New Roman", 0, 14)); // NOI18N jButton4.setText("Kembali Ke Menu");

jButton4.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton4ActionPerformed(evt);

} });

jButton5.setBackground(new java.awt.Color(255, 255, 255));

jButton5.setFont(new java.awt.Font("Times New Roman", 0, 14)); // NOI18N jButton5.setText("Upload File");

jButton5.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton5ActionPerformed(evt);

} });

javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap(108, Short.MAX_VALUE) .addComponent(teksfile, javax.swing.GroupLayout.PREFERRED_SIZE, 1053, javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(87, 87, 87))

.addGroup(jPanel1Layout.createSequentialGroup() .addGap(220, 220, 220)

.addComponent(jButton5, javax.swing.GroupLayout.PREFERRED_SIZE, 208, javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(87, 87, 87)

.addComponent(jButton3, javax.swing.GroupLayout.PREFERRED_SIZE, 208, javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(96, 96, 96)

.addComponent(jButton4, javax.swing.GroupLayout.PREFERRED_SIZE, 208, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap()


(6)

.addComponent(teksfile, javax.swing.GroupLayout.PREFERRED_SIZE, 432, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 23, Short.MAX_VALUE) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment. BASELINE) .addComponent(jButton3, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jButton4, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jButton5, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(21, 21, 21))

);

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) );

java.awt.Dimension screenSize =

java.awt.Toolkit.getDefaultToolkit().getScreenSize();

setBounds((screenSize.width-1274)/2, (screenSize.height-573)/2, 1274, 573); }// </editor-fold>

private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:

Menu masuk = new Menu(); masuk.setVisible(true); dispose();

}


(7)

// TODO add your handling code here: Pencariankata masuk = new Pencariankata(); masuk.setVisible(true);

dispose();

}

/**

* @param args the command line arguments */

public static void main(String args[]) { /* Set the Nimbus look and feel */

//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">

/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.

* For details see

http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html */

try {

for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { if ("Nimbus".equals(info.getName())) {

javax.swing.UIManager.setLookAndFeel(info.getClassName()); break;

} }

} catch (ClassNotFoundException ex) {

java.util.logging.Logger.getLogger(Bacabuku.class.getName()).log(java.util.logging.L evel.SEVERE, null, ex);

} catch (InstantiationException ex) {

java.util.logging.Logger.getLogger(Bacabuku.class.getName()).log(java.util.logging.L evel.SEVERE, null, ex);

} catch (IllegalAccessException ex) {

java.util.logging.Logger.getLogger(Bacabuku.class.getName()).log(java.util.logging.L evel.SEVERE, null, ex);

} catch (javax.swing.UnsupportedLookAndFeelException ex) {

java.util.logging.Logger.getLogger(Bacabuku.class.getName()).log(java.util.logging.L evel.SEVERE, null, ex);

}

//</editor-fold>

/* Create and display the form */

java.awt.EventQueue.invokeLater(new Runnable() { public void run() {


(8)

new Bacabuku().setVisible(true); }

}); }

// Variables declaration - do not modify private javax.swing.JButton jButton3;

private javax.swing.JButton jButton4; private javax.swing.JButton jButton5; private javax.swing.JPanel jPanel1; private java.awt.TextArea teksfile;

// End of variables declaration }

/*

* To change this template, choose Tools | Templates * and open the template in the editor.

*/

package skripsi2; /**

*

* @author Fazil */

public class Help extends javax.swing.JFrame { /**

* Creates new form Help */

public Help() {

initComponents(); }

/**

* This method is called from within the constructor to initialize the form.

* WARNING: Do NOT modify this code. The content of this method is always

* regenerated by the Form Editor. */

@SuppressWarnings("unchecked")

// <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() {

jPanel1 = new javax.swing.JPanel(); jButton1 = new javax.swing.JButton(); jButton3 = new javax.swing.JButton(); keluar = new javax.swing.JButton(); jButton5 = new javax.swing.JButton();

jScrollPane1 = new javax.swing.JScrollPane(); panduan = new javax.swing.JTextArea();

jPanel2 = new javax.swing.JPanel(); jLabel2 = new javax.swing.JLabel();


(9)

jPanel1.setBackground(new java.awt.Color(0, 51, 153)); jButton1.setBackground(new java.awt.Color(255, 255, 255)); jButton1.setText("Cara Melakukan Pencarian kata");

jButton1.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jButton1ActionPerformed(evt); }

});

jButton3.setBackground(new java.awt.Color(255, 255, 255)); jButton3.setText("Cara Mengupload File");

jButton3.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) { jButton3ActionPerformed(evt); } }); jButton3.addAncestorListener(new javax.swing.event.AncestorListener() {

public void ancestorMoved(javax.swing.event.AncestorEvent evt) {

}

public void ancestorAdded(javax.swing.event.AncestorEvent evt) {

jButton3AncestorAdded(evt); }

public void

ancestorRemoved(javax.swing.event.AncestorEvent evt) { }

});

keluar.setBackground(new java.awt.Color(255, 255, 255)); keluar.setText("Keluar");

keluar.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

keluarActionPerformed(evt); }

});

jButton5.setBackground(new java.awt.Color(255, 255, 255)); jButton5.setText("Kembali Ke Menu");

jButton5.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) { jButton5ActionPerformed(evt); } }); panduan.setColumns(20); panduan.setRows(5); jScrollPane1.setViewportView(panduan);


(10)

javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.L EADING) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.A lignment.LEADING, false) .addComponent(jButton3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jButton1,

javax.swing.GroupLayout.DEFAULT_SIZE, 233, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 35, Short.MAX_VALUE) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.A lignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 645, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(32, 32, 32)) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() .addComponent(jButton5, javax.swing.GroupLayout.PREFERRED_SIZE, 153, javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(104, 104, 104) .addComponent(keluar, javax.swing.GroupLayout.PREFERRED_SIZE, 153, javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(135, 135, 135)))) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.L EADING) .addGroup(jPanel1Layout.createSequentialGroup() .addGap(34, 34, 34)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.A lignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addComponent(jButton3, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(41, 41, 41) .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE)


(11)

.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))

.addGroup(jPanel1Layout.createSequentialGroup() .addComponent(jScrollPane1,

javax.swing.GroupLayout.DEFAULT_SIZE, 243, Short.MAX_VALUE) .addGap(35, 35, 35)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.A lignment.BASELINE) .addComponent(jButton5, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(keluar, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE))

.addGap(47, 47, 47)))) );

jPanel2.setBackground(new java.awt.Color(255, 255, 255)); jLabel2.setFont(new java.awt.Font("Times New Roman", 1, 24)); // NOI18N

jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel2.setText("Panduan Menggunakan Aplikasi");

javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); jPanel2.setLayout(jPanel2Layout); jPanel2Layout.setHorizontalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.L EADING) .addComponent(jLabel2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) ); jPanel2Layout.setVerticalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.L EADING) .addComponent(jLabel2,

javax.swing.GroupLayout.DEFAULT_SIZE, 48, Short.MAX_VALUE) );

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) );


(12)

layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) );

java.awt.Dimension screenSize =

java.awt.Toolkit.getDefaultToolkit().getScreenSize();

setBounds((screenSize.width-971)/2, (screenSize.height-494)/2, 971, 494);

}// </editor-fold>

private void keluarActionPerformed(java.awt.event.ActionEvent evt) {

// TODO add your handling code here: dispose();

} private void

jButton3AncestorAdded(javax.swing.event.AncestorEvent evt) { // TODO add your handling code here:

}

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {

// TODO add your handling code here:

panduan.setText("1. Klik button upload dalam halaman Bacabuku \n2. Kemudian ambil sebuah file yang hanya beformat pdf di dalam komputer anda \n3. Lalu klik file tersebut, kemudian klik open, tunggu beberapa saat file akan terbuka");

// panduan.append("");

}

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

// TODO add your handling code here:

panduan.setText("1. Untuk masuk ke halaman pencarian kata, dapat dilakukan melalui menutab di halaman menu \n atau melalui halaman bacabuku dengan mengklik tombol cari kata \n2. Setelah masuk ke halaman pencarian kata, ketikkan kata yang ingin di cari \n3. Setelah selesai lalu klik cari kata, kemudian hasil akan muncul di teks hasil pencarian \n4. Hasil pencarian adalah hasil dimana saja kata tersebut berada, sedangkan waktu pencarian \n ditampilkan di teks Running time agoritma KMP\n6. Lalu klik sortir kata dan kemudian hasilnya akan diurutkan berdasarkan abjad mulai dari yang terkecil\n sampai dengan ");


(13)

panduan.append("yang terbesar berserta waktu penyortiran kata tersebut di teks runiingtime algoritma Quicksort");

}

private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {

// TODO add your handling code here: Menu masuk = new Menu();

masuk.setVisible(true); dispose();

} /**

* @param args the command line arguments */

public static void main(String args[]) { /* Set the Nimbus look and feel */

//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">

/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.

* For details see

http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.h tml

*/ try {

for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {

if ("Nimbus".equals(info.getName())) {

javax.swing.UIManager.setLookAndFeel(info.getClassName()); break;

} }

} catch (ClassNotFoundException ex) {

java.util.logging.Logger.getLogger(Help.class.getName()).log(java.uti l.logging.Level.SEVERE, null, ex);

} catch (InstantiationException ex) {

java.util.logging.Logger.getLogger(Help.class.getName()).log(java.uti l.logging.Level.SEVERE, null, ex);

} catch (IllegalAccessException ex) {

java.util.logging.Logger.getLogger(Help.class.getName()).log(java.uti l.logging.Level.SEVERE, null, ex);

} catch (javax.swing.UnsupportedLookAndFeelException ex) {

java.util.logging.Logger.getLogger(Help.class.getName()).log(java.uti l.logging.Level.SEVERE, null, ex);

}

//</editor-fold>

/* Create and display the form */

java.awt.EventQueue.invokeLater(new Runnable() { public void run() {

new Help().setVisible(true); }

}); }


(14)

// Variables declaration - do not modify private javax.swing.JButton jButton1;

private javax.swing.JButton jButton3; private javax.swing.JButton jButton5; private javax.swing.JLabel jLabel2; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2;

private javax.swing.JScrollPane jScrollPane1; private javax.swing.JButton keluar;

private javax.swing.JTextArea panduan;

// End of variables declaration }

/*

* To change this template, choose Tools | Templates * and open the template in the editor.

*/

package skripsi2;

import javax.swing.JOptionPane; /**

*

* @author Fazil */

public class Login extends javax.swing.JFrame { /**

* Creates new form Login */

public Login() { initComponents(); }

/**

* This method is called from within the constructor to initialize the form.

* WARNING: Do NOT modify this code. The content of this method is always

* regenerated by the Form Editor. */

@SuppressWarnings("unchecked")

// <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() {

jPanel1 = new javax.swing.JPanel(); jPanel2 = new javax.swing.JPanel(); jLabel1 = new javax.swing.JLabel(); jPanel3 = new javax.swing.JPanel(); jLabel3 = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); admin = new javax.swing.JTextField();

passwordtextfield = new javax.swing.JPasswordField(); Cancel = new javax.swing.JButton();

Login = new javax.swing.JButton();


(15)

jPanel1.setBackground(new java.awt.Color(153, 0, 0)); jPanel1.setCursor(new

java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR)); jLabel1.setIcon(new

javax.swing.ImageIcon("D:\\Fazil\\Foto\\aku\\riwayat hidup.jpg")); // NOI18N

javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); jPanel2.setLayout(jPanel2Layout); jPanel2Layout.setHorizontalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.L EADING) .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) ); jPanel2Layout.setVerticalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.L EADING) .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) );

jPanel3.setBackground(new java.awt.Color(153, 0, 0)); jLabel3.setBackground(new java.awt.Color(255, 0, 0)); jLabel3.setFont(new java.awt.Font("Kartika", 0, 12)); // NOI18N

jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel3.setText("Password");

jLabel4.setBackground(new java.awt.Color(204, 0, 0)); jLabel4.setFont(new java.awt.Font("Kartika", 0, 12)); // NOI18N

jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel4.setText("Username");

jLabel2.setBackground(new java.awt.Color(255, 102, 102)); jLabel2.setFont(new java.awt.Font("Trajan Pro", 1, 14)); // NOI18N

jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel2.setText("Login");

Cancel.setBackground(new java.awt.Color(255, 255, 255)); Cancel.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N Cancel.setText("Cancel");

Cancel.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {


(16)

} });

Login.setBackground(new java.awt.Color(255, 255, 255)); Login.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N Login.setText("Login");

Login.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) {

LoginActionPerformed(evt); }

});

javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3); jPanel3.setLayout(jPanel3Layout); jPanel3Layout.setHorizontalGroup( jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.L EADING) .addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup() .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.A lignment.TRAILING) .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel3Layout.createSequentialGroup() .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.A lignment.LEADING, false) .addComponent(jLabel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jLabel4,

javax.swing.GroupLayout.DEFAULT_SIZE, 116, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.A lignment.LEADING) .addComponent(passwordtextfield) .addComponent(admin))) .addGroup(jPanel3Layout.createSequentialGroup() .addContainerGap(118, Short.MAX_VALUE) .addComponent(Login, javax.swing.GroupLayout.PREFERRED_SIZE, 105, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(Cancel, javax.swing.GroupLayout.PREFERRED_SIZE, 105, javax.swing.GroupLayout.PREFERRED_SIZE))) .addGap(59, 59, 59)) );


(17)

jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.L EADING)

.addGroup(jPanel3Layout.createSequentialGroup() .addComponent(jLabel2,

javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.A lignment.BASELINE)

.addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 33, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(admin, javax.swing.GroupLayout.PREFERRED_SIZE, 33, javax.swing.GroupLayout.PREFERRED_SIZE))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED )

.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.A lignment.LEADING, false)

.addComponent(jLabel3, javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(passwordtextfield,

javax.swing.GroupLayout.DEFAULT_SIZE, 33, Short.MAX_VALUE)) .addGap(18, 18, 18)

.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.A lignment.BASELINE)


(18)

DAFTAR PUSTAKA

Abdul, K. 2012. Algoritma dan Pemrograman Menggunakan Java. Edisi 1.C.V Andi Offset: Yogyakarta.

Ana, E. & Asri, P. 2012. Implementasi Algoritma Pencocokan String pada Aplikasi Pengarsipan Berbasis Web, Jurnal Informatika. 3(2) : 3 – 4.

Ardianto, W., Rika, P.S., & Thio, W. Pembuatan Aplikasi Untuk Mendeteksi Kebenaran Perintah SQL Query Menggunakan Metode Knuth-Morris-Pratt (KMP), Jurnal Teknik Informatika. 1(1) : 2 – 4).

Audy. 2015. Komparasi Algoritma Quick Sort dan Bucket Sort Pada Pengurutan Data Integer. Jurnal Teknik Informatika. 7(1) : 9 – 10.

1 Dictionary of Algorithms and Data Structures. 2006. Software and Systems Division, Information Technology Laboratory, NIST : Gaithersburg

Fathoni, M., & Saniman . 2010. Konsep Sorting Dalam Pemrograman.

JurnalSAINTIKOM.7(1):6.

Fatta, H, A. 2007. Analisis dan Perancangan Sistem Informasi Untuk Keunggulan Bersaing Perusahaan dan Organisasi Modern. Edisi 1.C.V Andi Offset :Yogyakarta

Haviluddin. 2011. Memahami Penggunaan UML (Unified Modelling Language).

Jurnal Informatika Mulawarman. Vol 6 No 1( 1 Februari 2011).

Horowitz, E., & Sartaj, S. 1981. Fundamental of Data Structures. 1st Edition. W. H. Freeman & Co : New York.

Kovelamudi, R. 2013. Introduction to Design Analysis of Algorithms - In Simple Way. 1st Edition. Smashwords : Guntur.


(19)

Pankaj, S. 2013. Comparison of Sorting Algorithms (On the Basis of Average Case). International Journal of Advanced Research in Computer Science and Software Engineering. 3 (3): Hal. 522-532.

Sedgewick,R., & Wayne, K. 2011. Algorithms . 4th Edition. Pearson Education International: Boston.

Sismoro, H. 2005. Pengantar Logika Informatika, Algoritma dan Pemrograman Komputer. Edisi 1. C.V. Andi Offset : Yogyakarta

Weiss, M.A. 1992. Data Structures and Algorithm Analysis in C. 2nd Edition. Pearson : Miami.


(20)

BAB 3

ANALISIS DAN PERANCANGAN SISTEM

3.1 Analisis Sistem

Sistem merupakan kumpulan elemen – elemen yang saling terkait dan bekerja sama untuk memproses masukan (input) yang ditujukan kepada sistem tersebut dan mengolah masukan tersebut sampai menghasilkan keluaran (output) yang diinginkan.. Analisis sistem adalah suatu kumpulan atau himpunan dari unsur atau variabel yang saling terorganisasi, saling berinteraksi dan saling bergantung satu sama lain. (Fatta 2007). Berikut adalah diagram ishikawa otomatisasi indek ebook alghoritms.

user membutuhkan Dapat memilih buku sistem dalam mencari dan apa saja yang berformat mensortir setia kata PDF

algoritma KMP dan Quicksort Belum adanya suatu sistem akan mencari dan menyortir yang dapat mencocokkan kata tersebut. Setiap kata yang dicari dan menyortir kata tersebut

Gambar 3.1 Diagram Ishikawa Untuk Analisis Masalah

Masalah utama yang diangkat dari penelitian ini adalah bagaimana membangun sebuah aplikasi yang dapat menyortir dan mengurutkan kata serta menghitung waktu pencarian algoritma berdasarkan huruf sampai dengan angka yang

HUMAN

ALGORITHMS

MATERIAL

MACHINE

Otomatisasi Indeks Ebook Alghoritms


(21)

diberikan oleh seorang user kepada sistem dengan menggunakan algoritma Knuth-Morris-Pratt dan algoritma Quicksort.

Aplikasi indeks ebook yang akan dibangun ini menggunakan algoritma Knuth-Morris-Pratt dan algoritma Quicksort dengan menggunakan software Netbeans yang memberikan kemudahan bagi seorang user dalam melakukan pencarian kata.

Analisis sistem diperlukan untuk mengetahui permasalahan dan kebutuhan yang diperlukan dalam pengembangan sistem. Analisis terdiri dari analisis permasalahan dan analisis kebutuhan sistem.

3.2. Analisis Permasalahan

Analisis sistem dibangun dengan tujuan untuk mengetahui permasalahan dan juga kebutuhan yang diperlukan dalam membuat sebuah sistem aplikasi ini. Aplikasi indeks ebook yang dibangun adalah sistem yang menyortir kata-perkata, huruf-perhuruf sampai dengan angka-angka, setelah melakukan penyortiran sistem juga akan menganalisis waktu pencarian algoritma tersebut dengan satuan waktu microsecond

sehingga nantinya kita akan dapat menyimpulkan apakah algoritma yang diangkat dalam penelitian kali ini adalah algoritma yang termasuk cepat ataukah lambat.

Dari analisis permasalahan tersebut, dibangunlah sebuah aplikasi yang mampu mencari kata dari user berserta waktu pencariannya kepada user. Di mana sistem ini nantinya dapat membantu seseorang mempermudah dalam melakukan pencarian kata dalam sebuah ebook yang berformat PDF. Aplikasi yang dibangun berbasis bahasa Java dengan menggunakan software Netbeans IDE. Sehingga siapapun dapat memakai aplikasi tersebut. Perancangan aplikasi yang dibangun, di rancang secara sederhana dan mudah dipahami, dan juga user memberikan sebuah petunjuk cara pemakaian aplikasi, sehingga user ataupun pengguna lainnya akan cepat mengerti menggunakan aplikasi tersebut, dan hasilnya akan sangat bermanfaat untuk seseorang dalam melakukan pekerjaannya.


(22)

Sebagai langkah awal dari proses analisis kebutuhan sistem ini, akan diuraikan kembali tujuan penelitian ini seperti bab sebelumnya yaitu untuk membuat sebuah aplikasi berbasis Bahasa Java dengan menggunakan algoritma Knuth-Morris-Pratt

dan algoritma Quicksort. Maka sistem ini akan menjadi suatu aplikasi yang sederhana untuk melakukan pencocokan dan penyortiran kata serta menghitung waktu pencariannya sehingga akan sangat mempermudah pembaca dalam melakukan pencarian keberadaan kata tersebut yang dinyatakan dalam indeks di dalam ebook

yang berformat PDF tersebut.

Untuk membangun sebuah sistem, perlu dilakukan sebuah tahap analisis kebutuhan sistem. Analisis kebutuhan sistem dapat dikelompokkan menjadi 2 bagian yaitu: kebutuhan fungsional dan kebutuhan nonfungsional.

3.3.1. Kebutuhan Fungsional

Kebutuhan fungsional adalah jenis kebutuhan yang berisi informasi dan proses apa saja yang harus dilakukan oleh sistem.

Kebutuhan fungsional yang pertama sistem yang akan dibangun harus mampu menerima inputan sebagai berikut :

1. User diminta untuk menginput username dan password pada form Login

sebelum masuk ke halaman menu.

2. User mengupload sebuah ebook yang berekstensi PDF yang dalam penelitian kali ini hanya mengambil buku “Algorithms” sebagai contoh yang ada di

frame Bacabuku.

3. User diminta untuk memasukkan kata yang ingin dicari keberadaannya di dalam ebook.

Kebutuhan fungsional yang kedua sistem yang akan dibangun harus mampu melakukan proses sebagai berikut:

1. Sistem harus mampu menampilkan ebook yang di upload oleh user yang dalam penelitian ini hanya menggunakan format PDF kedalam Netbeans.


(23)

2. Sistem harus mampu melakukan pencarian kata yang diinputkan oleh user

3. Sistem harus mampu menyortir huruf berdasarkan abjad dari yang terkecil sampai dengan yang terbesar.

Kebutuhan fungsional yang ketiga sistem yang akan dibangun harus mampu memberikan output sebagai berikut:

1. Sistem harus mampu memberikan hasil pencarian kata berupa keberadaan kata tersebut dalam ebook tersebut berserta waktu pencarian algoritmanya

2. Sistem harus mampu mengurutkan kata dari abjad yang terkecil sampai dengan yang terbesar, sehingga user mendapatkan informasi yang jelas dan tersusun secara rapi.

3.3.2 Kebutuhan Non-Fungsional

Analisis kebutuhan non fungsional dilakukan untuk mengetahui spesifikasi kebutuhan untuk sistem. Spesifikasi kebutuhan melibatkan analisis perangkat keras/hardware,analisis perangkat lunak/software,analisis pengguna/user. Namun dalam penelitian ini penulis tidak begitu banyak melibatkan komponen dari hardware,

karena yang dihasilkan hanyalah sebuah sistem sederhana yang dibangun melalui software Netbeans IDE dengan menggunakan bahasa java. Sistem ini lebih banyak melibatkan software dan user, maka dari itu kebutuhan non-fungsional dalam penelitian ini adalah untuk mendukung kebutuhan yang sudah ditentukan. Adapun kebutuhan non-fungsional yang menjadi pendukung sistem dapat dikelompokkan berdasarkan:

1. Performance

Sistem ini diharapkan mampu memberikan kemudahan dan mempersingkat waktu pencarian algoritma.

2. Information

Sistem ini diharapkan mampu memberikan informasi keberadaan kata dengan jelas dan dapat dengan mudah dimengerti oleh user.


(24)

Sistem ini hanya dapat digunakan oleh user sendiri, sehingga tidak dapat digunakan oleh pihak yang tidak berwenang.

4. Service

Sistem diharapkan untuk didesign sedemikian mudah yang berguna untuk dapat segera dimengerti cara penggunaannya oleh user.

5. Eficiency

Sistem yang dibangun bertujuan untuk mempermudah user dalam melakukan pencarian kata yang diinput oleh user. Dan apabila user sedang di dalam sebuah pekerjaan dan menggunakan sistem ini untuk menyelesaikan tugasnya, diharapkan mampu berkerja dengan cepat.

3.4. Perancangan Sistem

Penulis akan menguraikan tentang pemodelan sistem yang akan dirancang yang bertujuan untuk menggambarkan kondisi dan bagian-bagian yang berperan dalam sistem yang dirancang. Pemodelan sistem yang dilakukan adalah dengan membuat perancangan flowchart,use-case diagram, activity diagram dan sequence diagram.


(25)

Ya

Ya

Gambar 3.2. Flowchart Sistem Aplikasi

Keterangan :

Pada gambar 3.2 dijelaskan mengenai Menu utama aplikasi otomatisasi indeks ebook Algorithms dengan menggunakan algoritma Knuth-Morris-Pratt dan Quicksort. User

dapat masuk melalui halaman menu utama, namun terlebih dahulu user harus Login. Setelah userLogin dan masuk ke menu utama, user bisa langsung memilih buku untuk dibaca dan menguploadnya kedalam aplikasi ini, yang tentunya dalam penelitian kali ini kita memakai ebook Algorithms saja. Setelah diupload, akan ada sebuah button

pencarian kata yang akan mengarahkan user langsung ke form pencarian kata, di dalam form tersebut user akan diminta untuk memasukkan kata yang ingin dicari, setelah kata di masukkan maka sistem akan menginformasikan kepada user di mana saja letak kata tersebut dengan menggunakan algoritma Knuth-Morris-Pratt, karena kita mencari indeks maka sistem memperbolehkan user untuk mencari kata lebih dari


(26)

satu kali pencarian. Hasil pencarian tersebut akan dimasukkan kedalam data, kemudian data tersebut akan disortir berdasarkan abjad dari yang terkecil sampai dengan yang terbesar dengan menggunakan algoritma Quicksort dan juga akan menampilkan waktu pencariannya dari keseluruhan kata yang ada didalam data, kemudian akan menampilkannya kedalam sebuat teks area yang telah disediakan oleh

user agar kita bisa mengetahui berapa lama waktu pencariannya.

3.4.2. Use-Case Diagram

Use-case diagram adalah diagram yang menggambarkan aktor, use case dan relasinya sebagai suatu urutan tindakan yang memberikan nilai terukur untuk aktor (Haviluddin : 2011). Sebuah use case digambarkan sebagai elips horizontal dalam suatu diagram UML use case. Use case memiliki dua istilah, yaitu:

1. Sistem use case; interaksi dengan sistem.

2. Business use case; interaksi bisnis dengan konsumen atau kejadian nyata

,Gambar 3.3 Use case Sistem Aplikasi

Use case pada gambar 3.3 menjelaskan tentang segala sesuatu yang dapat dilakukan user di dalam sistem aplikasi, mulai dari Login, cara menggunakan aplikasi, informasi tentang algoritma, memilih buku apa saja yang berformat PDF, input kata


(27)

yang ingin di cari, sampai dengan waktu pencarian algoritmanya. Seperti pada tabel 3.1 :

Tabel 3.1. Use case

UC ID Use case

UC-1 Login

UC-2 Menu

UC-3 Baca buku UC-4 Help

UC-5 Tentang algoritma UC-6 Profil

UC-7 Pencarian kata dan hasil pencarian 1.1.1

1.1.2 3.4.3. Skenario Use case ID : SC-01 Nama Use case : Login

Deskripsi : Terlebih dahulu sebelum masuk ke dalam sisem aplikasi, user

diminta untuk mengisi nama dan password. Pre-kondisi :

Tabel 3.2. Scenario-01

Aktor/User Reaksi Sistem

Skenario Normal

1. Login

2. Menampilkan interface desktop untuk

Login

3. Isi nama dan password

4. Memeriksa nama dan password

5. Masuk ke halaman utama sistem aplikasi.

Skenario Alternatif

1. Login

2. Tidak dapat masuk ke halaman yang lain selain hanya di halaman menu.

ID : SC-02 Nama Use case : Form Menu

Deskripsi : Setelah user Login ke dalam sistem, user akan diarahkan langsung oleh sistem ke halaman menu. Form menu adalah form yang dapat menghubungkan ke seluruh form yang lain. Atau dengan kata lain form menu form adalah form utama dari sistem aplikasi ini.


(28)

Tabel 3.3. Scenario-02

Aksi Aktor Reaksi Sistem

Skenario Normal

1. Form menu

2. Masuk ke halaman Tentang algoritma 3. Masuk ke halaman pencarian kata dan hasil pencarian.

4. Masuk ke halaman help Skenario Alternatif

1. Form Menu

2. Dapat masuk ke halaman apa saja

ID : SC-03

Nama Use case : Baca buku

Deskripsi : User diminta utuk mengupload file berformat PDF ke dalam sistem aplikasi dengan cara mengklik button upload file lalu pilih file kemudian klik file tersebut kemudian klik open. Pre-kondisi : User hanya diperbolehkan untuk menguploadfile berformat

PDF saja.

Tabel 3.4. Scenario-03

Aksi Aktor Reaksi Sistem

Skenario Normal

1. Baca buku

2. Uploadfile berformat PDF

3. Menampilkan file PDF ke dalam sistem

4. klik cari kata untuk mencari kata tersebut dan berapa lama waktu pencariannya.

Skenario Alternatif

1. Baca buku

2. Tidak bisa menampilkan file yang berformat lain selain file PDF.

ID : SC-04

Nama Use case : Help

Deskripsi : Di dalam form ini, user akan diberitahu langkah-langkah ataupun panduan dalam menggunakan sistem aplikasi.

Pre-kondisi :

Tabel 3.5. Scenario-04

Aksi Aktor Reaksi Sistem

Skenario Normal

1. Help


(29)

3. Menampilkan panduan cara mencari kata

Skenario Alternatif

1. Help

2. Tidak dapat menampilkan sekaligus cara menguploadfile dan pencarian kata.

ID : SC-05

Nama Use case : Tentang algoritma

Deskripsi : User akan diberitahu algoritma apa yang digunakan oleh sistem aplikasi ini.

Pre-kondisi : Tidak dapat menampilkan informasi dari kedua algoritma dalam sekali klik.

Tabel 3.6. Scenario-05

Aksi Aktor Reaksi Sistem

Skenario Normal

1. Tentang algoritma

2. Menampilkan pengertian algoritma KMP 3. Menampilkan pengertian algoritma

Quicksort Skenario Alternatif

1. Tentang algoritma

2. Menampilkan sesuai algoritma apa yang di klik, tidak dapat di lakukan hanya dalam sekali klik.

ID : SC-06

Nama Use case : Profile

Deskripsi : Disini user akan menampilkan biodata dari penulis. Pre-kondisi :

Tabel 3.7. Scenario-06

Aksi Aktor Reaksi Sistem

Skenario Normal

1. Profile

2. Menampilkan biodata penulis

Skenario Alternatif

1. Profile

ID : SC-07


(30)

Deskripsi : User akan memperoleh hasil dari kata yang ingin dicari baik itu dengan menggunakan algoritma KMP yang melakukan pencarian berdasarkan kata yang diinputkan maupun Quicksort

yang berkerja untuk mengurutkan indeks dari huruf-huruf maupun angka terkecil sampai dengan yang terbesar.

Pre-kondisi :User belum mengetahui apakah algoritma ini cepat atau lambat.

Tabel 3.8. Scenario-07

Aksi Aktor Reaksi Sistem

Skenario Normal

1. Help

2. Menampilkan panduan menguploadfile

3. Menampilkan panduan cara mencari kata

Skenario Alternatif

1. Help

2. Tidak dapat menampilkan sekaligus cara menguploadfile dan pencarian kata.

3.4.4. Activity Diagra m

Mendeskripsikan aktifitas-aktifitas, objek, state, transisi state dan event. Atau dapat kita sebut sebagai alur kerja yang berfungsi untuk menggambarkan proses dari suatu sistem (Haviluddin : 2011).


(31)

Gambar 3.4 Activity Diagram Sistem Aplikasi

Activity diagram pada gambar 3.4 berfungsi sebagai langkah dan proses suatu program aplikasi otomatisasi indeks ebook algorithms dari mulai login kemudian proses pengurutan dan penyortiran kata sampai dengan hasil pencarian algoritma tersebut.

3.4.5. Sequence Diagram

Sequence diagram merupakan interaksi objek yang telah dirancang berdasarkan kepada urutan maupun aturan waktu. Sederhananya adalah gambaran tahap demi tahap, termasuk dengan kronologi urutan secara logis yang berfungsi menghasilkan sesuatu sesuai dengan use case diagram (Haviluddin : 2011). Berikut adalah gambar dari sequence diagram aplikasi indeks ebook :


(32)

Gambar 3.5 Sequence Sistem Aplikasi

3.5. Analisis Proses

Dalam melakukan pencarian kata, sistem aplikasi ini menggunakan 2 kali tahap penyortiran, yang pertama mencocokkan kata yang diinputkan dengan kata yang ada di dalam teks dengan menggunakan algoritma Knuth-Morris-Pratt, kemudian semua kata yang diinputkan oleh user diurutkan kembali berdasarkan angka atau huruf yang terkecil sampai dengan yang terbesar dengan menggunakan algoritma Quicksort.

Untuk mengetahui bagaimana algoritma ini bekerja dalam sistem aplikasi ini, kita jelaskan dalam perincian analisis proses.

3.5.1. Analisis proses algoritma Knuth-Morris-Pratt

Tahap-tahap yang akan dilakukan oleh algoritma Knuth-Morris-Pratt adalah sebagai berikut:

1. Kata yang diinputkan oleh user disebut dengan pattern.

2. Pattern akan mencocokkan kata dengan teks yang berformat PDF di dalam software Netbeans dengan bergerak melalui kiri ke kanan.


(33)

3. Kemudian mulai mencocokkan huruf perhuruf dengan teks, apabila huruf di indeks pertama sama dengan huruf yang ada di dalam teks, algoritma akan bergeser ke indeks berikutnya, kemudian mencocokkan dengan huruf yang ada di teks, begitu seterusnya algoritma ini mencocokkan indeks sepanjang kata ataupun kalimat yang diinputkan oleh user.

4. Apabila semua kata yang diinputkan user sama dengan bagian teks yang ada di

ebook Algorithms, maka sistem akan menginformasikan keberadaan kata ataupun kalimat tersebut.

5. Apabila tidak sama, maka sistem akan mencari lagi sampai di akhir teks.

3.5.2. Analisis proses algoritma Quicksort

Setelah semua kata yang diinputkan oleh user sudah selesai, maka sistem akan melakukan proses penyortiran kata-kata tersebut, berikut adalah langkah-langkahnya :

1. Semua kata yang diinputkan oleh user disimpan kedalam sebuah database, yang nantinya akan disortir kembali dengan algoritma Quicksort.

2. Semua kata tersebut akan diurutkan, mulai dari angka yang terkecil atau huruf yang terkecil sampai dengan angka atau huruf yang terbesar.

3. Dalam penyortiran huruf, apabila terdapat lebih dari satu huruf yang sama, maka huruf yang berada diindeks yang ke-2 akan disortir kembali dan mencari di mana huruf yang terkecilnya, begitu seterusnya sampai dengan selesai. 4. Kemudian sistem akan menginformasikan waktu pencarian algoritmanya,

mulai dari penyortiran tahap awal sampai dengan akhir dalam satuan waktu

microsecond.

3.6. Perancangan Antarmuka Sistem (Interface)

Sistem yang akan dibangun menggunakan Netbeans IDE, desktop digunakan menampilkan antar muka tempat aplikasi yang akan dijalankan. Antar muka tersebut menggunakan 4 form yaitu Login, menu, help (menjelaskan tentang bagaimana cara menggunakan aplikasi) dan baca buku (upload file).


(34)

3.6.1.Halaman Login

Rancangan halaman utama adalah rancangan tampilan awal pertama kali ketika sistem

aplikasi dijalankan. Rancangan tampilan awal ini adalah form Login,yang di mana form Login hanya terdiri dari 3 label, 2 diantaranya bernama username dan password dan yang satunya lagi digunakan untuk menampung file gambar, 2 text area dan 2

button Login dan cancel. Tujuan dibangunnya form Login sebagai menghindari penyalahgunaan untuk orang yang tidak berwenang yang dalam penelitian ini hanya admin sendiri yang diperbolehkan untuk masuk. Berikut tampilan pada gambar 3.6:

Gambar 3.6 Rancangan Login

Keterangan dari rancangan halaman utama dapat dilihat pada tabel 3.9 :

Tabel 3.9. Keterangan Bagian-Bagian Rancangan Halaman Utama

NO. Jenis Objek Keterangan

1 Label Gambar Foto user/admin

2 Label username Sebagai tanda untuk memberitahukan bahwa text area yang berada disampingnya menandakan

username dari user

3 Label Password Sebagai tanda untuk memberitahukan bahwa text area yang berada disampingnya menandakan password dari user

4 Text Area Untuk tempat mengisikan username

2 3 1

4 5 6 7


(35)

Username

5 Password Field Untuk mengisikan password dari username

6 Button Login Apabila sudah benar username dan password maka

sistem akan mengarahkan user ke menu. 7 Button Cancel Untuk keluar dari sistem aplikasi

3.6.2.Rancangan Menu

Rancangan halaman menu merupakan tahap awal pada penggunaan aplikasi ini

Gambar 3.7 Rancangan Halaman Menu

Pada gambar 3.7 merupakan rancangan halaman menu yang di mana dari halaman ini dapat menghubungkan ke sistem aplikasi penyortiran kata. Keterangan dari rancangan

menu dapat dilihat pada tabel 3.10 :

Tabel 3.10. Keterangan Bagian-Bagian Rancangan Halaman Menu

NO. Jenis Objek Keterangan

1 JMenu Menu Merupakan form dari menu itu sendiri dan juga form tentang algoritma yang menjelaskan tentang algoritma yang berkerja pada sistem aplikasi.


(36)

mengupload ebook berformat pdf dan juga memperbolehkan user untuk melakukan pencarian kata dan waktu pencarian.

3. JMenu Help Memberikan panduan kepada user cara menggunakan aplikasi

4. JMenu Log out Untuk keluar dari system

6 Button Baca buku Button ini akan mengarahkan user ke form baca buku dan meminta user untuk menguploadfile

untuk di baca 7 Button Hasil

Pencarian

Button ini akan mengarahkan anda ke form pencarian kata dan waktu pencarian yang ada di JMenu baca buku

8 Button Tentang Algoritma

Button ini akan mengarahkan anda ke form tentang algoritma yang menjelaskan tentang pengertian dan fungsi dari algoritma Knuth-Morris-Pratt dan algoritma Quicksort yang ada di dalam JMenu menu.

9 Button Log out Button ini berfungsi untuk keluar dari aplikasi. 10 Label gambar Sebuah label yang berfungsi untuk menampung

sebuah gambar yang bertujuan untuk menghias form.

3.6.3.Rancangan Halaman Baca Buku

Rancangan halaman baca buku ialah rancangan halaman yang berisi tentang ebook

yang diupload oleh user dan juga user melakukan pencarian kata sesuai dengan permintaan dari user itu sendiri dan sistem akan memberikan informasi berupa lokasi kata dan waktu yang dibutuhkan.


(37)

Gambar 3.8 Rancangan Halaman Baca Buku

Pada gambar 3.8 terlihat rancangan halaman baca buku yang di mana user diberikan kebebasan dalam melakukan upload buku apa saja yang berformat PDF. Keterangan dari rancangan baca buku dapat dilihat pada tabel 3.11 :

Tabel 3.11. Keterangan Bagian-Bagian Rancangan Halaman Baca buku

NO. Jenis Objek Keterangan

1 Teks area Lokasi ebook untuk ebook ketika dimasukkan kedalam form aplikasi

2 Button Upload File

Meminta user untuk menguploadfile pdf 3 Button Cari

kata

Mengarahkan user ke form pencarian kata untuk mendapatkan informasi hasil pencarian dan waktunya. 4 Button

Kembali ke

menu

Untuk mengembalikan ke form menu

3.6.4.Rancangan Halaman Pencarian Kata

Rancangan halaman pencarian kata merupakan rancangan halaman yang berisikan tentang informasi hasil pencarian kata yang diinputkan oleh user dan waktu pencarian algoritma dalam satuan waktu microsecond.


(38)

Gambar 3.9 Rancangan Halaman Pencariankata

Pada gambar 3.9 terlihat rancangan halaman pencarian kata untuk melakukan pencarian kata. Keterangan dari rancangan halaman pencarian kata dapat dilihat pada tabel 3.12:

Tabel 3.12. Keterangan Rancangan Halaman Pencarian Kata

NO. Jenis Objek Keterangan

1 Teks area Meminta kepada user untuk memasukkan kata yang ingin dicari.

2 Teks area Untuk melihat hasil pencarian kata yang di mana merupakan informasi keberadaan kata tersebut.

3 Button cari kata

Merupakan sebuah button untuk memulai program pencarian kata yang diinputkan oleh user.

4 Button Sortir kata

Merupakan sebuah button untuk menyortir semua hasil dari lokasi pencarian kata, kemudian mengurutkannya berdasarkan urutan yang terendah sampai dengan yang tertinggi.

5 Teks area Hasil dari waktu pencarian algoritma KMP.

6 Teks area Hasil dari waktu penyortiran kata algoritma Quicksort.

7 Button

Kembali

Merupakan sebuah button yang akan mengarahkan user


(39)

Membaca 8 Button

Kembali ke

menu

Merupakan sebuah button untuk mengarahkan user

kembali ke menu awal. 9 Teks Area

untuk hasil penyortiran katanya.

Merupakan teks area yang menjadi tempat untuk menampilkan hasil penyortiran kata-kata yang diinputkan.

10 Teks area

untuk

menampilkan semua isi dalam

database

Merupakan teks area yang menjadi tempat untuk menampilkan semua kata yang telah diinputkan oleh

user yang memiliki nilai hasil pencarian algoritma KMP

berupa posisi dari kata tersebut yang dinyatakan di dalam indeks.

11 Button untuk memanggil

database

Merupakan sebuah button yang berfungsi untuk memanggil seluruh isi data dalam field “kata” dan

menampilkannya ke dalam teks area.

3.6.5.Rancangan Halaman Help

Rancangan halaman help merupakan rancangan halaman yang menjelaskan tentang bagaimana cara menggunakan sistem aplikasi ini, hanya saja rancangan halaman help ini hanya menjelaskan tentang inti dari penggunaan aplikasi, bukan untuk menjelaskan dari awal penggunaan masuk sampai dengan akhir.


(40)

Gambar 3.10 Rancangan Halaman Help

Pada gambar 3.10 terlihat rancangan halaman cek gejala untuk memberikan petunjuk membuka file sampai dengan melakukan penyortiran dan pencarian kata. Keterangan dari rancangan help dapat dilihat pada tabel 3.13:

Tabel 3.13. Keterangan Rancangan Halaman Help

NO. Jenis Objek Keterangan

1 Button cara untuk memasukkan file PDF

Button ini akan menjelaskan kepada user

bagaimana cara untuk memasukkan file PDF ke dalam sistem aplikasi.

2 Button pencarian kata Button ini berfungsi untuk menjelaskan kepada

user bagaimana sistem melakukan pencarian dan penyortiran kata beserta menginformasikan kepada user hasil pencarian dan waktu pencariannya.

3 Teks area Teks ini sebagai keterang dari button nomor 1 dan 2.

4 Button kembali ke

menu.

Mengembalikan user ke halaman menu. 5 Button keluar Untuk keluar dari sistem.


(41)

BAB 4

IMPLEMENTASI DAN PENGUJIAN

4.1.Implementasi

Tahap implementasi adalah tahap yang dimana sistem telah digunakan oleh pengguna. Namun sebelum itu pengguna wajib telah mengetahui cara menggunakannya, dan sistem haruslah melalui tahap pengujian yang bertujuan untuk menjamin tidak adanya kesalahan ketika pengguna menggunakan sistemnya. (Fatta, H.A 2007)

Sistem aplikasi otomatisasi indeks ebook algorithms ini dibangun dengan menggunakan Bahasa pemrograman java, yang dimana dalam melakukan perancangan dan listing pemrogramannya menggunakan software Netbeans IDE

dengan interface running programnya berbasis desktop. Sistem aplikasi otomatisasi indeks ebookAlgorithms ini dibangun dengan menggunakan algoritma Knuth-Morris-Pratt yang berfugsi untuk mencari kata yang diinputkan oleh user kemudian akan disamakan dengan yang ada di dalam teks, kemudian menyortir kata kata yang diinputkan tersebut berdasarkan abjad yang terkecil sampai dengan yang terbesar dengan menggunakan algoritma Quicksort, dan tentunya sistem akan menghitung waktu pencariannya dalam satuan waktu microsecond.

4.1.1 Tampilan Halaman Utama

Tampilan halaman yang utama adalah tampilan awal yang pertama kali muncul ketika program dirunningkan atau dijalankan. Tampilan halaman utama adalah tampilan form

login yang meminta kepada user untuk memasukkan username dan password untuk bisa masuk ke halaman menu. Berikut adalah tampilan halaman utama sistem aplikasi otomatisasi indeks ebookAlgorithms dapat dilihat pada gambar 4.1.


(42)

Gambar 4.1. Tampilan Halaman Utama

4.1.2. Tampilan Halaman Menu

Halaman menu merupakan halaman yang dapat menghubungkan ke semua halaman

form sistem aplikasi. Dan juga dari tampilan halaman menu disediakan menutab tambahan yaitu form tentang informasi algoritma yaitu form yang akan menjelaskan algoritma apa yang digunakan dan profile dari penulis. Berikut tampilan halaman menu dapat dilihat pada gambar 4.2.


(43)

4.1.3. Tampilan Halaman Baca buku

Pada halaman baca buku ini disediakan 2 menutab, yaitu Pilih Buku yang merupakan

form yang meminta user untuk mengupload file berupa PDF ke dalam sistem dan form Cari Kata yang merupakan form yang akan mencari kata apa saja yang diinputkan oleh user di dalam ebook Alghoritms. Berikut adalah tampilan pilih buku sebelum file PDF diupload pada Gambar 4.3.

Gambar 4.3. Tampilan Halaman Pilih File Sebelum Upload File

.

Kemudian halaman pilih file seteleh file dipilih kemudian diupload, dapat dilihat pada Gambar 4.4


(44)

Kemudian adalah menutab cari kata yang merupakan halaman tempat kerjanya algoritma Knuth-Morris-Pratt dan algoritma Quicksort. Pada halaman ini sistem meminta kepada user untuk mengetikkan kata yang ingin dicari kemudian mengklik tombol cari, kemudian sistem akan mencari kata tersebut dengan menggunakan algoritma Knuth-Morris-Pratt berserta waktu pencariannya, kemudian hasilnya akan ditampilkan di teks box yang ada di bawahnya, kemudian klik tombol sortir kata, maka algoritma Quicksort akan menjalankan tugasnya yaitu menyortir kata tersebut dan kemudian menampilkan hasil dan waktu pencariannya. Berikut adalah tampilan awal menutab Cari Kata sebelum menampilkan hasil dari pencariannya. Tampilan dapat dilihat pada Gambar 4.5.

Gambar 4.5 Tampilan Halaman Sebelum Melakukan Proses Pencarian Kata

4.1.4. Tampilan Halaman Hasil

Halaman hasil adalah halaman dari sistem otomatisasi indeks ebook algorithms

dengan menggunakan algoritma Knuth-Morris-Pratt dan Quicksort, dan dihalaman ini

user dapat melihat hasil pencarian dari suatu kata yaitu posisi kata yang dinyatakan dalam indeks dan waktu pencarian algoritma dalam satuan waktu microsecond. Tampilan halaman hasil dapat dilihat dalam gambar 4.6 :


(45)

Gambar 4.6. Tampilan Halaman Hasil

4.1.5. Tampilan Halaman Help

Berikut adalah halaman help yang merupakan halaman yang memandu user dalam memakai ataupun menggunakan sistem aplikasi dari awal penggunakan sampai dengan selesai. Berikut adalah tampilan halaman help dapat dilihat pada Gambar 4.7.


(46)

4.2. Pengujian

Pengujian sistem merupakan tahap akhir dalam perancangan dan juga pengembangan dari sebuah sistem aplikasi, dan merupakan sebuah proses yang paling banyak memakan waktu proses analisa pengembangan sampai dengan matang. Pemahaman konsep pengujian ini sangatlah penting dimulai dari bagaimana algoritma mencari, seperti apa karakteristiknya, memahami perbedan dari setiap kondisi, pengujian dari sistem, kemudian memperhatikan dan menganalisa teknik prosedur dan juga tool yang di gunakan dalam perancangan dan pengembangan aplikasi ini. Hal ini tentu saja sangat membantu pengguna menyadari setiap masalah yang akan diberikan kepada

user dari penguji sistem serta sangat dibutuhkannya pengujian sistem. (Fatta, H.A 2007)

Tahap pengujian sistem dilakukan untuk menguji hasil dari pencarian algoritma KMP dan Quicksort yang dihitung berdasarkan satuan waktu microsecond.

4.2.1. Pengujian Sistem Algoritma Knuth-Morris-Pratt

Tahap pengujian sistem ini merupakan sebuah lanjutan dari sebuah tahap penginputan data yang diinputkan oleh user, yang dimana setiap kata yang diinputkan oleh user

yang memiliki hasil berupa indeks akan disimpan kedalam database, kemudian waktu dari pencarian algoritma ini juga akan dihitung dari berapa banyak aplikasi yang terbuka, kemudian banyaknya setiap huruf di dalam suatu kalimat yang diinputkan, yang bertujuan untuk melihat apakah waktunya semakin lebih cepat atau lebih lambat.

Pertama-tama di dalam database, tidak ada satupun kata yang terdapat dalam


(47)

Gambar 4.8 Isi Dalam Database Sebelum Dilakukannya Proses Penginputan

Jika seorang user menginput sebuah kata sebagai berikut:

Gambar 4.9 Input Data Sebelum Proses

Pada gambar 4.9 seorang user menginput sebuah kalimat yang berjumlah 3 huruf dan beberapa aplikasi terbuka, maka waktu yang dibutuhkan oleh algoritma ini dalam melakukan pencocokan kata di dalam ebook alghoritms adalah sebesar 37872755 microsecond, seperti pada gambar 4.10 :


(48)

Gambar 4.10 Proses Pencocokan Kata Dengan Beberapa Aplikasi Terbuka

Kemudian kita mencoba untuk menginputkan kata yang sama, hanya saja beberapa aplikasi kita hilangkan. Maka waktu yang dibutuhkan algoritma ini dalam melakukan pencocokan string adalah seperti gambar berikut :

Gambar 4.11 Proses Pencocokan Kata Dengan Beberapa Aplikasi Tertutup

Terlihat jelas di dalam percobaan kita di atas pada gambar 4.11 bahwa waktu pencocokan string yang dilakukan algoritma ini semakin cepat. Waktu yang


(49)

dibutuhkan algoritma ini sebesar 19700569, sedangkan ketika beberapa aplikasi terbuka waktu pencariannya menjadi lebih lambat. Berikut perhitungan selisih waktu : Waktu and (1) = 37872755 microsecond

Waktu and (2) = 19700569 microsecond

Selisih waktunya = 18172186 microsecond

Kemudian kita akan membandingkan waktu pencarian algoritma berdasarkan jumlah huruf yang terdapat dalam sebuah kalimat. Dalam percobaan ini kalimat pertama yang kita ambil adalah dari kalimat sebelumnya, kemudian kita bandingkan dengan jumlah huruf yang lebih banyak. Maka hasilnya adalah seperti gambar berikut:

Gambar 4.12 Proses Pencocokan Kata Dengan Jumlah Huruf Lebih Banyak

Pada gambar 4.12 diatas terlihat jelas bahwa waktu yang dibutuhkan algoritma ini dalam melakukan pencocokan kata “where” yang berjumlah 5 huruf adalah sebesar 9976034, lebih cepat dari pencarian kata yang dilakukan hanya dari 3 huruf dari percobaan yang dilakukan sebelumnya. Selisih waktu dari pencocokan string yang dilakukan oleh algoritma ini adalah sebagai berikut :

Waktu pencarian kata “and” = 19700569 microsecond

Waktu pencarian kata “where” = 9976034 microsecond

Selisih waktunya adalah = 9724535 microsecond

Dari percobaan yang kita lakukan diatas, maka kesimpulan yang diperolah berbanding terbalik yaitu semakin banyak aplikasi yang berjalan saat melakukan proses pencarian


(50)

string maka waktu yang dibutuhkan akan semakin lama, sedangkan semakin banyak kata di dalam sebuah kalimat maka waktu pencarian stringnya akan semakin lebih cepat.

4.2.2. Pengujian Sistem Algoritma Quicksort

Tahap pengujian sistem ini adalah sebuah tahap paling akhir dari sistem aplikasi otomtisasi indeks ebook ini. Tahap ini adalah tahap yang akan menyortir kata mulai dari huruf yang paling kecil sampai dengan huruf yang paling besar. Semua kata yang ada di dalam database akan ditampilkan kembali ke dalam sistem kemudian disortir dengan algoritma Quicksort. Tidak hanya tersortir di dalam aplikasi saja, akan tetapi

field di dalam database akan ikut tersortir juga. Berikut adalah isi database melalui kata yang telah diinputkan melalui percobaan sebelumnya :

Gambar 4.13 Kata Yang Sudah Tersimpan di Dalam Database


(51)

Gambar 4.14 Kata Di dalam Database Yang Ditampilkan Di dalam Aplikasi

Kemudian kata yang ditampilkan tersebut disortir berdasarkan algoritma Quicksort. Seperti pada gambar 4.15 :

Gambar 4.15 Kata Di dalam Database Yang Telah Tersortir

Hasil yang didapatkan ketika kata telah tersortir memerlukan waktu sebesar 109621

microsecond. Kata yang tersortir tidak hanya di dalam aplikasi saja, akan tetapi kata yang terdapat di dalam database akan tersortir juga. Seperti gambar di bawah :


(52)

Penyortiran kata yang dilakukan oleh algoritma Quicksort adalah tidak langsung menyortir huruf yang terkecil sampai dengan yang terbesar tetapi melainkan dengan cara mengambil nilai dari setiap huruf yang di inputkan oleh user. Berikut adalah tabel huruf dalam kode ASCII :


(53)

BAB 5

KESIMPULAN DAN SARAN

5.1. Kesimpulan

Kesimpulan yang mungkin dapat kita ambil dari sistem apikasi otomatisasi indeks ebook Algorithms ini adalah sebagai berikut:

1. Sistem aplikasi ini akan sangat memberikan kemudahan bagi user ataupun pembaca dalam melakukan pencarian kata di dalam buku apa saja yang berformat pdf, disamping mempersingkat waktu juga meringankan beban bagi seorang yang berkerja yang berhubungan dengan fungsi dari sistem aplikasi ini.

2. Algoritma Knuth-Morris-Pratt dan algoritma Quicksort dalam melakukan pencarian kata berkerja dengan sangat baik dan cepat, hal ini telah dibuktikan dalam pengukuran waktu yang kita lakukan melalui aplikasi dalam satuan waktu microsecond.

3. Proses pencarian algoritma KMP memberikan waktu yang lebih cepat ketika kata yang diinputkan lebih banyak, semakin banyak kata yang diinputkan maka semakin cepat proses pencariannya.

4. Algoritma KMP akan berkerja semakin lama apabila saat menjalankan sistem ini banyak aplikasi yang berjalan. Gambar tidak dapat terbaca melalui sistem aplikasi, sehingga gambar tidak akan diproses oleh sistem.

5. Informasi yang diperoleh terlihat jelas dan tersusun secara rapi melalui sistem.

5.2. Saran

Saran yang dapat diberikan oleh penulis setelah penelitian ini dilakukan adalah : 1. Sistem yang dirancang oleh peneliti seharusnya bisa digunakan untuk semua

tipe file, bukan hanya sekedar file pdf saja.

2. Diharapkan mampu untuk menampilkan gambar yang ada di dalam ebook

tersebut sehingga akan menampilkan isi di dalam interface yang sama persis dengan yang ada dalam ebook tersebut.


(54)

3. Dapat memberikan masukan kata seperti halnya yang dilakukan oleh google. 4. Dapat dikembangkan lebih luas lagi yang bukan hanya sekedar melalui PC, bahkan juga bisa melalui smartphone seperti windowsphone, android, blackberry maupun iphone.

5. Menambahkan bebera fungsi yang dapat dikoneksikan dengan internet.

DAFTAR RIWAYAT HIDUP

Nama : Muhammad TP Fazil

Alamat : Jln. Sakti Lubis No 104 Medan Maimun Tanggal Lahir : Tanjungbalai 07 april 1992

Jenis Kelamin : Laki-laki No Handphone : 082166593576

Email : oncyfazil@gmail.com

Pendidikan Formal

2014 – 2016 : S1 Ilmu Komputer Universitas Sumatera Utara 2011 – 2014 : DIII Teknik Informatika Universitas Sumatera Utara 2007 – 2010 : SMA Negeri 1 Tanjungbalai

2004 – 2007 : SMP Negeri 1 Tanjungbalai 1998 – 2004 : SD N 132406(5) Tanjungbalai

Keahlian


(55)

BAB 2

LANDASAN TEORI

2.1 Desain Analisis Algoritma

Kovelamudi (2013) menyatakan algoritma dapat di definisikan sebagai prosedur komputasi yang mengambil beberapa nilai atau set nilai-nilai sebagai output. Ini adalah tahap-tahap komputasi yang akan mengubah input menjadi output. Dan merupakan alat untuk untuk memecahkan berbagai permasalahan di dalam komputer. Algoritma harus memiliki kriteria sebagai berikut :

Input : nilai 0 atau lebih disisipkan.

Output : setidaknya akan menghasilkan satu kuantitas. Kepastian : setiap instruksi jelas dan tidak ambigu.

Finiteness :Jika kita menelusuri petunjuk dari sebuah algoritma, maka untuk semua kasus, algoritma akan berhenti setelah memasuki langkah

terakhir.

Efektivitas : Setiap instruksi harus dimulai dari awal sehingga dapat diproses. Sebuah program adalah ekspresi dari algoritma dalam bahasa pemrograman. Kumpulan dari instruksi, yang mana komputer akan mengikuti instruksi untuk memecahkan sebuah masalah.

Sekali sebuah algoritma diberikan kepada sebuah permasalahan dan dijamin akan memberikan hasil yang diharapkan, maka langkah penting selanjutnya adalah menentukan besar biaya yang diperlukan algoritma tersebut untuk memperoleh hasil itu. Proses inilah yang disebut dengan analisis algoritma (Weiss.M.A, 1996). Maksud dilakukannya analisis algoritma (Horowitz & Sahni, 1978) adalah untuk:

1. Memenuhi aktivitas intelektual.

2. Meramalkan suatu hal yang akan terjadi atau yang akan didapat dari algoritma tersebut.


(1)

OTOMATISASI INDEKS EBOOK ALGHORITMS DENGAN MENGGUNAKAN ALGORITMA KNUTH-MORRIS-PRATT DAN ALGORITMA QUICKSORT

ABSTRAK

String matching adalah susunan dari karakter-karakter (angka, alfabet atau karakter yang lain) dan biasanya direpresentasikan sebagai struktur dan array. String dapat berupa kata, frase, atau kalimat. Pencocokan string (string matching) merupakan bagian penting dari sebuah proses pencarian string (string searching) dalam sebuah dokumen. Hasil dari sebuah pencarian string dalam dokumen tergantung dari teknik dan cara pencocokan string yang digunakan. Desain analisis algoritma adalah prosedur komputasi yang mengambil beberapa nilai atau set nilai-nilai sebagai output. Ini adalah tahap-tahap komputasi yang akan mengubah input menjadi output. Dan merupakan alat untuk untuk memecahkan berbagai permasalahan di dalam komputer. Netbeans adalah suatu proyek open source yaitu platform untuk pengembangan aplikasi desktop java dan sebuah Netbeans IDE (Integrated Development Environment). Pada penelitian ini, penulis akan mengembangkan sebuah sistem analisis perancangan atau bisa juga disebut otomatisasi indeks ebook yang berbasis bahasa pemrograman Java untuk mencari kata-kata yang diinputkan oleh user kemudian menginformasikannya berupa letak dari kata tersebut berupa indeks. Proses pencocokan string yang diinputkan oleh user kepada ebook tersebut menggunakan algoritma KMP, setelah kata yang ditemukan sesuai maka sistem akan menampilkan hasilnya di dalam sistem beserta waktu pencariannya dalam microsecond, setelah itu informasi kata yang diperoleh disimpan ke dalam database kemudian data tersebut disortir kembali berdasarkan abjad yang paling kecil sampai dengan yang paling besar dengan menggunakan algoritma Quicksort, kemudian setelah semua tersortir maka sistem akan menampilkan di dalam interface desktop hasil dari pensortiran kata tersebut dan juga berserta waktu pencariannya.

Kata-kata Kunci : Desain analisis algoritma, String Matching, Knuth-Morris-Pratt, Quicksort, Otomatisasi indeks ebook, Netbeans.


(2)

AUTOMATION INDEX EBOOK OF ALGORITHMS USING KNUTH-MORRIS-PRATT AND QUICKSORT ALGHORITM

ABSTRACT

String matching is the array of characters (numbers, alphabets and other characters), and is usually represented as structures and arrays. String can be a word, phrase, or sentence. Matching string (string matching) is an important part of a process of the search string (string searching) in a document. The results of a search string in a document depends on the technique and the way the string matching used.Design analysis algorithm is a computational procedure that takes some value or set of values as an output. These are the stages computing will transform inputs into outputs. And a tool for to solve various problems in the computer. NetBeans is an open source project that is a platform for the development of java desktop application and a Netbeans IDE (Integrated Development Environment). In this study, the authors will develop a system design analysis, or it could be called an ebook index-based automation Java programming language to search words entered by the user and then inform the form layout of the word in the form of an index. The process of matching the string entered by the user to the ebook using the KMP algorithm, once the word is found appropriate, the system will display the result in the system along with a search in microseconds, after the word information obtained is stored into the database then the data is sorted back alphabetically the smallest to the greatest using Quicksort algorithm, then after all sorted then the system will display in the desktop interface results of sorting the words and also along time search.

Keywords: Design analysis of alghoritms, String Matching, Knuth-Morris-Pratt, Quicksort, Otomatisation of indeks ebook, Netbeans.


(3)

DAFTAR ISI

Halaman

Persetujuan ii

Pernyataan iii

Penghargaan iv

Abstrak vii

Abstract viii

Daftar Isi ix

Daftar Tabel xi

Daftar Gambar xii

BAB 1 PENDAHULUAN

1.1. Latar Belakang 1

1.2. Rumusan Masalah 2

1.3. Batasan Penelitian 3

1.4. Tujuan Penelitian 3

1.5. Manfaat Penelitian 4

1.6. Metodologi Penelitian 4

1.7. Sistematika Penulisan 5

BAB 2 LANDASAN TEORI

2.1. Desain Analisis Algoritma 6

2.2. Jenis-jenis Algoritma 8

2.2.1. Divide and Conquer 8

2.2.2. Dynamic Programming 8

2.2.3. Greedy Algorithm 8

2.3 Algoritma Quicksort 9

2.3.1. Metode Rekursif Dalam Algoritma Quicksort 10 2.3.2.

2.3.3. 2.3.4. 2.3.5.

Implementasi Quicksort

Kasus Terburuk Running Time Quicksort

Analisis Kasus Terburuk Running Time Pada Quicksort Kasus Terbaik Analisis Running Time

11 14 14 15

2.4. Algoritma Knuth-Morris-Pratt (KMP) 15

2.4.1. Kelebihan Algoritma Knuth-Morris-Pratt (KMP) 17 2.4.2. Kekurangan Algoritma Knuth-Morris-Pratt (KMP) 17

2.4.3. Fungsi Pinggiran Pada Metode KMP 17


(4)

2.5. Netbeans 18

2.6. Flowchart 19

BAB 3 ANALISIS DAN PERANCANGAN SISTEM

3.1. Analisis Sistem 22

3.2. Analisis Permasalahan 23

3.3. Analisis Kebutuhan Sistem 24

3.3.1. Kebutuhan fungsional 24

3.3.2. Kebutuhan non fungsional 25

3.4. Perancangan Sistem 26

3.4.1. Perancangan Flowchart 27

3.4.2. Use Case Diagram 28

3.4.3. Skenario Use Case 29

3.4.4. Activity Diagram 32

3.4.5. Sequence Diagram 33

3.5. Analisis Proses 34

3.5.1. 3.5.2

Analisis Proses Algoritma Knuth-Morris-Pratt Analisis Algoritma Quicksort

34 35 3.6. Perancangan Antar Muka Sistem (Interface) 35

3.6.1. Halaman Login 36

3.6.2. Rancangan Menu 37

3.6.3 Rancangan Halaman Baca Buku 38

3.6.4. Rancangan Halaman Pencarian Kata 39

3.6.5. Rancangan Halaman Help 41

BAB 4 IMPLEMENTASI DAN PENGUJIAN

4.1. Implementasi 43

4.1.1. Tampilan Halaman Utama 43

4.1.2. Tampilan Halaman Menu 44

4.1.3. Tampilan Halaman Baca Buku 45

4.1.4. 4.1.5.

Tampilan Halaman Hasil Tampilan Halaman Help

46 47

4.2. Pengujian 48

4.2.1. 4.2.2.

Pengujian sistem Algoritma Knuth-Morris-Pratt Pengujian sistem Algoritma Quicksort

48 52

BAB 5 KESIMPULAN DAN SARAN

5.1. Kesimpulan 55

5.2. Saran 55


(5)

DAFTAR TABEL

Hal.

Tabel 2.1. Running Time Quicksort 14

Tabel 2.2. Fungsi Pinggiran 17

Tabel 2.3. Flowchart Program 19

Tabel 2.4. Flowchart System 20

Tabel 3.1. Use Case 29

Tabel 3.2. Scenario-01 29

Tabel 3.3. Scenario-02 30

Tabel 3.4. Scenario-03 30

Tabel 3.5. Scenario-04 30

Tabel 3.6. Tabel 3.7.

Scenario-05 Scenario-06

31 31

Tabel 3.8. Scenario-07 32

Tabel 3.9. Keterangan Bagian-bagian Rancangan Halaman Utama 36 Tabel 3.10. Keterangan Bagian-bagian Rancangan Halaman Menu 37 Tabel 3.11. Keterangan Bagian-bagian Rancangan Halaman Baca Buku 39 Tabel 3.12. Keterangan Rancangan Halaman Pencarian Kata 40


(6)

DAFTAR GAMBAR

Halaman

Gambar 2.1. Keadaan Setelah Pivot Didapatkan 10

Gambar 2.2. Gambar 3.1

Pergeseran Dalam Algoritma Pencocokan String Diagram Ishikawa Untuk Analisis Masalah

11 22

Gambar 3.2. Flowchart Sistem Aplikasi 27

Gambar 3.3. Use Case Sistem Aplikasi 28

Gambar 3.4. Activity Diagram Sistem Aplikasi 33

Gambar 3.5. Sequence Sistem Aplikasi 34

Gambar 3.6. Rancangan Login 36

Gambar 3.7. Rancangan Halaman Menu 37

Gambar 3.8. Rancangan Halaman Baca Buku 39

Gambar 3.9. Rancangan Halaman Pencarian Kata 40

Gambar 3.10. Rancangan Halaman Help 42

Gambar 4.1. Tampilan Halaman Utama 44

Gambar 4.2. Tampilan Halaman Menu 44

Gambar 4.3. Tampilan Halaman Pilih File Sebelum Upload File 45 Gambar 4.4. Tampilan Halaman Baca Buku Setelah File Diupload 45 Gambar 4.5. Tampilan Halaman Sebelum Melakukan Proses Pencarian kata 46

Gambar 4.6. Tampilan Halaman Hasil 46

Gambar 4.7. Gambar 4.8 Gambar 4.9 Gambar 4.10 Gambar 4.11 Gambar 4.12 Gambar 4.13

Tampilan Halaman Help

Isi Dalam Database Sebelum Dilakukannya Proses Penginputan Input Kata Sebelum Proses

Input Kata Dengan Beberapa Aplikasi Terbuka

Proses Pencocokan Kata Dengan Beberapa Aplikasi Tertutup Proses Pencocokan Kata Dengan Jumlah Huruf Lebih Banyak Kata Yang Sudah Tersimpan di Dalam Database

47 48 49 49 50 51 52 Gambar 4.14 Gambar 4.15 Gambar 4.16 Gambar 4.17

Kata Didalam Database Yang Ditampilkan Di dalam Aplikasi Kata Di dalam Database Yang Telah Tersortir

Kata Didalam Database Yang Telah Tersortir Kode ASCII

52 53 53 54