Wednesday, May 23, 2012

Perhitungan Billing Taxi dengan Menggunakan Metode Shortest Route


Hallo.
Kali ini saya akan mempostingkan hasil tugas besar kelompok saya pada Mata Kuliah Teknik Riset Operasi (TRO).
Tugas besar yang kelompok saya buat adalah mengenai Analisis Jaringan untuk Persoalan Shortest Route. Kami mengambil permasalahan tentang Perhitungan Billing Taxi dengan Menggunakan Metode Shortest Route. Tugas besar kali ini kami menggunakan bahasa pemrograman Java dan kami menggunakan tools Netbeans IDE 6.8

Berikut adalah source codenya.

1. Edge.java

/*
 * Edge.java
 *
 * class ini untuk menyimpan jarak dan node tujuannya
 */

package dijkstra;

public class Edge {
    int jarak;
    Vertex nodeTujuan;
}


2. Vertex.java


3. Graph.java


4. Billing Taxi

/*
 * BillingTaxi.java
 *
 * class ini untuk membuat tampilan program utama
 */

package dijkstra;

public class BillingTaxi extends javax.swing.JFrame {

    Graph graph = new Graph();
   
    public BillingTaxi() {
        initComponents();
        graph.addVertex("UPI");
        graph.addVertex("Ciwalk");
        graph.addVertex("Sabuga");
        graph.addVertex("Itb");
        graph.addVertex("Unisba");
        graph.addVertex("Pasar Bunga");
        graph.addVertex("BIP");
        graph.addEdge(graph.findVertex("UPI"), graph.findVertex("Ciwalk"), 5);
        graph.addEdge(graph.findVertex("UPI"), graph.findVertex("Sabuga"), 7);
        graph.addEdge(graph.findVertex("Ciwalk"), graph.findVertex("Itb"), 7);
        graph.addEdge(graph.findVertex("Ciwalk"), graph.findVertex("Pasar Bunga"), 2);
        graph.addEdge(graph.findVertex("Ciwalk"), graph.findVertex("Sabuga"), 1);
        graph.addEdge(graph.findVertex("Sabuga"), graph.findVertex("Itb"), 1);
        graph.addEdge(graph.findVertex("Sabuga"), graph.findVertex("Ciwalk"), 4);
        graph.addEdge(graph.findVertex("Itb"), graph.findVertex("Pasar Bunga"), 5);
        graph.addEdge(graph.findVertex("Itb"), graph.findVertex("Unisba"), 4);
        graph.addEdge(graph.findVertex("Unisba"), graph.findVertex("BIP"), 3);
        graph.addEdge(graph.findVertex("Pasar Bunga"), graph.findVertex("Unisba"), 1);
        graph.addEdge(graph.findVertex("Pasar Bunga"), graph.findVertex("BIP"), 4);
    }

    /** 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")
    //                           
    private void initComponents() {

        cb_asal = new javax.swing.JComboBox();
        cb_tujuan = new javax.swing.JComboBox();
        jButton1 = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        hasil = new javax.swing.JTextArea();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        cb_asal.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Tempat Asal", "UPI", "Ciwalk", "Sabuga", "Itb", "Unisba", "Pasar Bunga", "BIP" }));
        cb_asal.setName("asal"); // NOI18N

        cb_tujuan.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Tempat Tujuan", "UPI", "Ciwalk", "Sabuga", "Itb", "Unisba", "Pasar Bunga", "BIP" }));
        cb_tujuan.setName("tujuan"); // NOI18N

        jButton1.setLabel("Cek Billing");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        hasil.setColumns(20);
        hasil.setRows(5);
        jScrollPane1.setViewportView(hasil);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addGap(31, 31, 31)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 340, Short.MAX_VALUE)
                    .addComponent(jButton1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 340, Short.MAX_VALUE)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(cb_asal, javax.swing.GroupLayout.PREFERRED_SIZE, 140, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(46, 46, 46)
                        .addComponent(cb_tujuan, 0, 154, Short.MAX_VALUE)))
                .addGap(23, 23, 23))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(cb_tujuan, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(cb_asal, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addComponent(jButton1)
                .addGap(33, 33, 33)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(27, Short.MAX_VALUE))
        );

        pack();
    }//                         

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        lintasan();
    }                                        

    /**
    * @param args the command line arguments
    */
    void lintasan(){
        int asal = cb_asal.getSelectedIndex();
        int tujuan = cb_tujuan.getSelectedIndex();

        Vertex tempatAsal = graph.graph.get(asal-1);
        Vertex tempatTujuan = graph.graph.get(tujuan-1);
     
        graph.dijkstra(tempatAsal,tempatTujuan);
        int tarif = 6000+(tempatTujuan.bobot*3000);
        hasil.setText("Rute : "+tempatTujuan.history +"\nJarak : "+tempatTujuan.bobot+" km \nBiaya Taxi : Rp."+tarif);
    }

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
               }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JComboBox cb_asal;
    private javax.swing.JComboBox cb_tujuan;
    private javax.swing.JTextArea hasil;
    private javax.swing.JButton jButton1;
    private javax.swing.JScrollPane jScrollPane1;
    // End of variables declaration                   

}


5. Main.java

/*
 * Main.java
 *
 * class ini untuk mengakses program utama
 */

package dijkstra;

public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        
        new BillingTaxi().setVisible(true);
    }

}

Berikut adalah screenshot dari program kami :


Spesifikasi Kebutuhan Perangkat Lunak (SKPL)

Kelompok tugas besar Teknik Riset Operasi :

  1. Annisa Daniela - 0905797
  2. Qori Nur Aini - 0908809
  3. Rany Kasman - 0905544
Ilmu Komputer C 2009 Universitas Pendidikan Indonesia

0 komentar:

Post a Comment