Perbandingan penggunaan algoritma dijkstra dan algoritma floyd warshall untuk pencarian jalur terpendek pada bus trans jogja

(1)

PERBANDINGAN PENGGUNAAN ALGORITMA

DIJKSTRA

DAN ALGORITMA

FLOYD-WARSHALL

UNTUK PENCARIAN

JALUR TERPENDEK PADA BUS TRANS JOGJA

Skripsi

Diajukan Untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Komputer

Program Studi Teknik Informatika

Oleh:

Agustinus Wikrama Darmadipta 095314053

PROGRAM STUDI TEKNIK INFORMATIKA

FAKULTAS SAINS DAN TEKNOLOGI

UNIVERSITAS SANATA DHARMA

YOGYAKARTA

2013

i


(2)

(3)

SKRIPSI

PERBANDINGAN PENGGUNAAN ALGORITMA

DIJKSTRA

DAN ALGORITMA

FLOYD-WARSHALL

UNTUK PENCARIAN

JALUR TERPENDEK PADA BUS TRANS JOGJA

Oleh:

Agustinus Wikrama Darmadipta NIM: 095314053

Telah disetujui oleh:

Dosen Pembimbing Tugas Akhir

Sri Hartati Wijono, S.Si., M. Kom. Tanggal: ………

ii


(4)

(5)

LEMBAR MOTTO

The dreams cannot come to you.

The only one who can make the distance between you and your dreams

getting closer is yourself.

SO GO CHASE IT!

iv


(6)

(7)

PUBLIKASI KARYA ILMIAH UNTUK KEPERLUAN AKADEMIS

Yang bertanda tangan di bawah ini, saya mahasiswa Universitas Sanata Dharma: Nama : Agustinus Wikrama Darmadipta

Nomor Mahasiswa : 095314053

Demi mengembangkan ilmu pengetahuan, saya memberikan kepada perpustakaan Universitas Sanata Dharma karya ilmiah saya yang berjudul:

PERBANDINGAN PENGGUNAAN ALGORITMA DIJKSTRA DAN ALGORITMA FLOYD-WARSHALL UNTUK PENCARIAN JALUR

TERPENDEK PADA BUS TRANS JOGJA

Beserta perangkat yang diperlukan. Dengan demikian saya memberikan kepada Perpustakaan Universitas Sanata Dharma hak untuk menyimpan, mengalihkan dalam bentuk media lain, mengelolanya dalam bentuk pangkalan data, mendistribusikan secara terbatas, dan mempublikasikannya di Internet atau media lain untuk kepentingan akademis tanpa perlu meminta izin dari saya maupun memberikan royalti kepada saya selama tetap mencantumkan nama saya sebagai penulis.

Demikian pernyataan ini saya buat dengan sebenarnya.

Yogyakarta, 22 Agustus 2013

Agustinus Wikrama Darmadipta

vi


(8)

(9)

ABSTRACT

The confusing about how to decide what trayek someone must take in the case of Bus Trans Jogja has became a problem for the user that want to go to a destination from the source that he wanted in Yogyakarta. That problem made the writer want to solve it by making an Android based mobile application that can give an advice to the user of Bus Trans Jogja about the trayek that he must take to get to a destination by the shortest path .

The shortest path is calculated using two shortest path algorithms, Dijkstra and Floyd-Warshall algorithm. Dijkstra algorithm, using greedy as its method, on the other way Floyd-Warshall algorithm using dynamic programming as it method. The reason why using those two algorithm is because this research want to know which algorithm that more optimal to be implemented in the case of the shortest path search in the route of Bus Trans Jogja.

Comparisons that be used to decide the optimal algorithm are complexity of asimptotik time and the running time of each algorithm. The validity that have given by each algorithm is also a thing that decide the optimality of each algorithm.

viii


(10)

(11)

tidak menyerah dan selalu bersemangat untuk menyelesaikan tugas akhir ini dengan baik dan tepat waktu.

5. Fransiskus Ageng Widodo dan Audris Evan Utomo, selaku teman penulis yang telah membantu dalam menyelesaikan permasalahan coding yang penulis alami sewaktu pembuatan aplikasi.

6. Ardha, Eki, Aden, Yosi, Surya, dan Fidi yang selalu menghibur penulis dalam menyelesaikan tugas akhir ini sehingga penulis dapat selalu ceria ketika mengerjakan tugas akhir bersama-sama di laboratorium komputer basis data.

Yogyakarta, 22 Agustus 2013

Agustinus Wikrama Darmadipta Penulis

x


(12)

(13)

3.4. Diagram Aktivitas ... 51

3.4.1. Diagram Aktivitas Menentukan Titik Awal ... 52

3.4.2. Diagram AktivitasMenentukan Titik Tujuan ... 52

3.4.3. Diagram Aktivitas Mencari Halte ... 53

3.4.4. Diagram Aktivitas Melihat Jalur Bus yang Ditempuh, Melihat Nilai Jarak yang Ditempuh, Melihat Saran Trayek Bus yang Harus Dipilih, dan Melihat Running Time Algoritma ... 54

3.4.5. Diagram Aktivitas Melihat Help ... 55

3.5. Diagram Sekuensial ... 55

3.5.1. Diagram Sekuensial Menentukan Titik Awal ... 55

3.5.2. Diagram Sekuensial Menentukan Titik Tujuan ... 56

3.5.3. Diagram Sekuensial Mencari Halte ... 56

3.5.4. Diagram Sekuensial Melihat Jalur Bus yang Ditempuh, Melihat Nilai Jarak yang Ditempuh, Melihat Saran Trayek Bus yang Harus Dipilih, dan Melihat Running Time Algoritma ... 57

3.5.5. Diagram Sekuensial Melihat Help ... 58

3.6. Diagram Kelas ... 59

3.7. Kelas Analisis ... 60

3.8. Operasi dan Atribut Tiap Kelas ... 63

3.9. Cara Pengujian... 72

3.10. Skenario Pengujian ... 73

3.11. Desain Antarmuka ... 78

3.11.1. Desain Antarmuka Tampilan Awal ... 79

3.11.2. Desain Antarmuka Jalur Terpendek Telah Ditemukan ... 79

3.11.3. Desain Antarmuka Tampilan Details ... 80

BAB IV :IMPLEMENTASI ... 81

4.1. Spesifikasi Perangkat Keras dan Lunak ... 81

4.2. Pengolahan Data ... 82

4.3. Implementasi Kelas Graph ... 83

4.3.1. Implementasi Metode Greedy dengan Algoritma Dijkstra ... 84

xii


(14)

(15)

Lampiran 8: Source Code Kelas TemporaryJalur_n_Jarak ... 154

Lampiran 9: Source Code Kelas PathOverlay ... 155

Lampiran 10: Source Code Kelas SitesOverlay ... 156

Lampiran 11: Source Code Kelas Help ... 166

Lampiran 12: Source Code Kelas MainActivity ... 166

Lampiran 13: Source Code Kelas Map ... 168

xiv


(16)

(17)

Gambar 4.1 Gambar Source Code untuk Algoritma Dijkstra ... 87

Gambar 4.2 Gambar Source Code untuk Algoritma Floyd-Warshall ... 89

Gambar 4.3 Gambar Source Code untuk Perpindahan Bus ... 92

Gambar 4.4 Gambar Source Code untuk Penghitungan Running Time Algoritma ... 93

Gambar 4.5 Tampilan Halaman Menu ... 94

Gambar 4.6 Title.xml ... 95

Gambar 4.7 Tampilan Halaman Peta ... 97

Gambar 4.8 activity_main.xml ... 98

Gambar 4.9 mydropdownstle.xml ... 99

Gambar 4.10 Tampilan Halaman Details ... 100

Gambar 4.11 Source Code Halaman Details ... 100

Gambar 4.12 Tampilan Halaman Help ... 101

Gambar 4.13 help.xml ... 108

Gambar 5.1Source Code Method getMin ... 116

Gambar 5.2Source Code Method adjust_sPath ... 117

Gambar 5.3 Source Code Method displayPaths ... 118

Gambar 5.4 Source Code Method findIndex ... 119

Gambar 5.5Source Code Method dijkstra ... 120

Gambar 5.6Source Code Method findIndex ... 121

Gambar 5.7Source Code Method deepCopyIntMatrix ... 122

Gambar 5.8Source Code Method Floyd ... 124

xvi


(18)

(19)

Tabel 3.10 Tabel Tanggung Jawab Kelas Analisis ... 63

Tabel 3.11 Tabel Operasi dan Atribut Kelas Graph ... 66

Tabel 3.12 Tabel Operasi dan Atribut Kelas Halte ... 67

Tabel 3.13 Tabel Operasi dan Atribut Kelas TemporaryJalur_n_Jarak ... 68

Tabel 3.14 Tabel Operasi dan Atribut Kelas MainActivity ... 68

Tabel 3.15 Tabel Operasi dan Atribut Kelas Map ... 70

Tabel 3.16 Tabel Operasi dan Atribut Kelas PathOverlay ... 70

Tabel 3.17 Tabel Operasi dan Atribut Kelas SitesOverlay ... 72

Tabel 3.18 Tabel Operasi dan Atribut Kelas Help ... 72

Tabel 3.19 Skenario Pengujian ... 78

Tabel 5.1 Tabel Hasil Pengujian ... 114

Tabel 5.2 Tabel Hasil Pengujian Running Time Kedua Algoritma ... 126

xviii


(20)

(21)

penelitian ini adalah algoritma yang masing-masing menggunakan strategi/cara berpikir greedy dan dynamic programming (pemrograman dinamis). Algoritma Dijkstra merupakan salah satu algoritma yang digunakan dalam penelitian ini di mana cara kerja algoritma tersebut adalah menggunakan strategi greedy. Algoritma jalur terpendek yang juga digunakan dalam penelitian ini yang menggunakan strategi pemrograman dinamis adalah algoritma Floyd – Warshall. Alasan digunakannya kedua algoritma tersebut adalah kedua algoritma tersebut telah sering digunakan untuk kasus pencarian jalur terpendek. Sebagai contoh algoritma Dijkstra pernah dilakukan dalam penilitian kasus pencarian jalur terpendek yang ditempuh oleh sebuah taksi (Noviani, Enik., dkk., 2012) dan pencarian jalur terpendek yang ditempuh oleh dua transportasi umum di Jakarta, yakni Bus Trans Jakata dan KRL commuter line (Arifianto, Sofyan., 2012). Algoritma Floyd – Warshall juga telah sering digunakan dalam beberapa penlitian mengenai pencarian jalur terpendek, seperti pada penilitian pencarian rute terpendek di kota Surabaya (Purwananto, Yudhi., dkk., 2005) dan pencarian rute terpendek antar gedung di suatu kampus (Fanani, Lutfi., 2012).

Kasus pencarian jalur terpendek yang digunakan dalam penelitian ini adalah kasus pencarian jalur terpendek pada Bus Trans Jogja. Kasus Bus Trans Jogja sesuai digunakan untuk pencarian jalur terpendek karena Bus Trans Jogja memiliki total enam trayek di mana masing-masing trayek memiliki jalur-jalur perjalanan yang berbeda untuk menuju suatu tempat


(22)

(23)

para pengguna tidak mengalami kebingungan dalam menentukan Bus Trans Jogja yang harus dipakai guna mencapai suatu tujuan tertentu.

1.2. Rumusan Masalah

Seberapa optimal dan efisienkah penggunaan strategi berpikir greedy (algoritma Dijkstra) dan pemrograman dinamis (algoritma Floyd – Warshall) dalam kasus penentuan jalur terpendek yang ditempuh oleh Bus Trans Jogja?

Rumusan masalah di atas diselesaikan dengan mencari nilai dari Big Oh dan waktu yang ditempuh oleh setiap algoritma dalam menyelesaikan kasus pencarian jalur terpendek pada Bus Trans Jogja. Nilai Big Oh dan waktu yang diperoleh kemudian akan dibandingkan satu sama lain untuk menentukan algoritma mana yang paling optimal untuk kasus tersebut.

1.3. Tujuan Penelitian

Tujuan yang ingin dicapai dari penelitian ini adalah:

1. Untuk mendapatkan kompleksitas waktu asimtotik dan nilai kecepatan waktu dari algoritma greedy dan pemrograman dinamis pada kasus pencarian jalur terpendek pada Bus Trans Jogja.

1.4. Batasan Masalah

Batasan masalah dari penelitian ini adalah:


(24)

(25)

Trans Jogja. Kesesuaian tersebut diukur berdasarkan perbandingan dari Big Oh dan waktu penyelesaian yang dihasilkan oleh masing-masing algoritma.

Manfaat yang lain yang diperoleh dari penelitian ini adalah sebuah aplikasi berbasis android yang dapat digunakan oleh para pengguna Bus Trans Jogja dalam menentukan bus yang harus dipakai dalam menuju ke suatu tujuan tertentu. Aplikasi tersebut akan mampu memberikan keluaran berupa saran kepada pengguna mengenai bus dengan trayek mana yang harus dipakai guna menuju suatu tempat dengan cepat. Aplikasi tersebut diharapkan memberi pertolongan kepada masyarakat pengguna Bus Trans Jogja, terutama para wisatawan pengguna Bus Trans Jogja yang belum paham betul mengenai jalur-jalur yang ditempuh oleh Bus Trans Jogja dalam mencapai suatu tujuan tertentu.


(26)

(27)

satu algoritma yang mampu digunakan untuk menyelesaikan satu masalah. Masalah yang timbul dari hal tersebut kemudian adalah dalam memilih algoritma manakah yang paling optimal atau yang terbaik dalam menyelesaikan masalah yang dihadapi tersebut. Menurut Suryadi MT (1996), pemilihan algoritma terbaik dapat dilakukan dengan memperhatikan kriteria-kriteria berikut ini:

1. ada output

Berdasarkan pada definisi algoritma bahwa algoritma digunakan untuk menyelesaikan suatu masalah, maka berarti suatu algoritma haruslah mempunyai output. Output tersebut merupakan sebuah solusi dari masalah yang dipecahkan. 2. efektivitas dan efisiensi

Efektivitas suatu algoritma dapat dilihat dari solusi yang dihasilkan. Solusi tersebut dikatakan efektif bila sesuai dengan masalah yang dipecahkan dan mampu memecahkan masalah tersebut. Jadi dapat dikatakan bahwa suatu algoritma dikatakan efektif jika tepat guna.

Efisiensi suatu algoritma diukur berdasarkan waktu proses dan penggunaan memory dalam menyelesaikan suatu masalah. Semakin kecil waktu proses dan memory yang dibutuhkan dalam menyelesaikan suatu masalah, maka semakin efisien pula suatu algoritma tersebut.


(28)

(29)

tersusun dengan baik sehingga memudahkan untuk dilakukannya pemeriksaan ulang terhadap algoritma tersebut. Selain untuk hal tersebut, algoritma yang memiliki struktur yang baik dapat memungkinkan memiliki waktu proses yang relatif singkat.

Berdasarkan kelima hal di atas, maka algoritma yang baik dapat didefinisikan sebagai suatu algoritma yang memiliki output yang tepat guna (efektif) dalam waktu yang relatif singkat dan penggunaan memory yang relative sedikit (efisien) dengan langkah yang berhingga dan prosesnya berakhir dengan baik dalam keadaan diperoleh suatu solusi ataupun tidak adanya solusi (Suryadi MT, 1996).

2.2. Pengertian Analisis Algoritma

Analisis algoritma dilakukan dengan memperhatikan dua hal, yaitu waktu tempuh dan jumlah memory yang digunakan. Waktu tempuh memiliki definisi sebagai waktu yang diperlukan suatu algoritma dalam mencari solusi atas permasalahan yang diberikan. Waktu yang singkat memberi arti bahwa algoritma yang digunakan efisien. Waktu tempuh yang diperlukan oleh suatu algoritma menurut Suryadi MT (1996) dipengaruhi oleh beberapa hal, yaitu:

1. banyak langkah

Banyaknya langkah yang digunakan dalam suatu algoritma akan menentukan cepat lambatnya proses yang dilakukan oleh


(30)

(31)

tidak sesuai, maka waktu tempuh yang digunakan algoritma tersebut pun akan membesar (lambat).

Jumlah memory juga perlu diperhatikan dalam menganalisis suatu algoritma agar suatu proses dapat berjalan lancar tanpa ada hambatan. Hal yang mempengaruhi dalam pemakaian memory adalah jenis variable dan data yang digunakan pada suatu algoritma. Oleh karena itu pengalokasian memory perlu diperhitungan berdasarkan dua hal tersebut agar lambatnya waktu tempuh yang terjadi karena kekurangan memory dapat dihindari.

Kompleksitas waktu asimtotik algoritma juga merupakan hal yang peru diperhatikan dalam melakukan analisis terhadap suatu algoritma. Kompleksitas waktu asimtotik algoritma dinyatakan dalam suatu fungsi F(N) untuk kebutuhan waktu tempuh dan penyimpanan untuk sejumlah N masukan data. Fungsi F(N) tersebutlah yang kemudian dinyatakan sebagai Big Oh. Jika F(N) adalah fungsi Polinomial dalam N dengan derajat (tingkat) m, yang ditulis dengan notasi:

F(N) = amNm + am-1Nm-1 + . . . + a1N + a0

maka Big Oh dari F(N) adalah Nm yang dinotasikan: F(N) = O(Nm) (Suryadi MT, 1996). Berikut ini adalah pengelompokan algoritma berdasarkan notasi Big Oh :

Kelompok

Algoritma Nama

O(1) Konstan


(32)

(33)

berikut ini. Graf ini menggambarkan hubungan dari suatu tempat ke tempat yang lain. Node menggambarkan suatu tempat dan vertex menggambarkan bobot atau jarak yang menghubungkan antar tempat.

Gambar 2.1Contoh Graph (Dijkstra)

Langkah pertama yang dilakukan pada strategi ini adalah menentukan titik awal dan titik tujuan (dalam kasus ini node satu adalah titik awal dan node sepuluh adalah titik tujuan). Berangkat dari node satu, terdapat tiga jalur yang dapat ditempuh yakni jalur dengan nilai jarak 300, 200, dan 350. Jalur yang dipilih adalah jalur dengan nilai jarak 200 karena merupakan nilai yang paling optimal (rendah) di antara ketiga nilai tersebut. Pemilihan jalur tersebut menunjukkan bahwa node kedua yang dilalui adalah node tiga. Pada node tiga, nilai jarak yang kemudian dipilih adalah nilai 280 yang kemudian membawa menuju node enam dari nilai 350, 280, dan 410. Node delapan kemudian menjadi tujuan berikutnya setelah melakukan pemilihan nilai jarak yang paling optimal antara nilai 350 dan 380. Langkah berikutnya adalah memilih satu-satunya nilai yang membawa ke tujuan akhir (node sepuluh), yakni memilih jalur dengan nilai 380. Pencarian jalur terpendek menggunakan


(34)

(35)

7. d (7) = ? 8. d (8) = ? 9. d (9) = ? 10. d (10) = ? 1 - 3

Iterasi II (posisi awal di titik 3)

1. d(2) = min {d(2), d(3) + a(3,2)} = min (300, 200 + ?) = 300 2. d(4) = min {d(4), d(3) + a(3,4)} = min (350, 200 + ?) = 350 3. d(5) = min {d(5), d(3) + a(3,5)} = min (?, 200 + 350) = 550 4. d(6) = min {d(6), d(3) + a(3,6)} = min (?, 200 + 280) = 480 5. d(7) = min {d(7), d(3) + a(3,7)} = min (?, 200 + 410) = 610 6. d(8) = min {d(8), d(3) + a(3,8)} = min (?, 200 + ?) = ? 7. d(9) = min {d(9), d(3) + a(3,9)} = min (?, 200 + ?) = ? 8. d(10) = min {d(10), d(3) + a(3,10)} = min (?, 200 + ?) = ? 1 – 2

Iterasi III (posisi awal di titik 2)

1. d(4) = min {d(2), d(2) + a(2,4)} = min (350, 300 + ?) = 350 2. d(5) = min {d(5), d(2) + a(2,5)} = min (550, 300 + 320) = 550 3. d(6) = min {d(6), d(2) + a(2,6)} = min (480, 300 + 350) = 480 4. d(7) = min {d(7), d(2) + a(2,7)} = min (610, 300 + 400) = 610


(36)

(37)

Iterasi VI (posisi awal di titik 5)

1. d(7) = min {d(7), d(5) + a(5,7)} = min (550, 550 + ?) = 550 2. d(8) = min {d(8), d(5) + a(5,8)} = min (830, 550 + 210) = 760 3. d(9) = min {d(9), d(5) + a(5,9)} = min (860, 550 + 230) = 780 4. d(10) = min {d(10), d(5) + a(5,10)} = min (?, 550 + ?) = ? 1 – 4 – 7

Iterasi VII (posisi awal di titik 7)

1. d(8) = min {d(8), d(7) + a(7,8)} = min (760, 550 + 210) = 760 2. d(9) = min {d(9), d(7) + a(7,9)} = min (780, 550 + 290) = 780 3. d(10) = min {d(10), d(7) + a(7,10)} = min (?, 550 + ?) = ? 1 – 3 – 5 – 8

Iterasi VIII (posisi awal di titik 8)

1. d(9) = min {d(9), d(8) + a(8,9)} = min (780, 760 + ?) = 780 2. d(10) = min {d(10), d(8) + a(8,10)} = min (?, 760 + 380) = 1140 1 – 3 – 5 – 9

Iterasi IX (posisi awal di titik 9)

1. d(10) = min {d(10), d(9) + a(9,10)} = min (1140, 780 + 280) = 1060

1 – 3 – 5 – 9 – 10


(38)

(39)

nilai yang terdapat pada vertex-vertex tersebut menggambarkan nilai jarak antara satu node ke node yang lain.

Gambar 2.2 Contoh Graph (Pemrograman Dinamis)

Langkah pertama yang dilakukan adalah ambil salah satu node sebagai tujuan, dalam hal ini node dengan label sepuluh adalah tujuan yang ingin dicapai. Berangkat dari hal tersebut dapat dilihat bahwa untuk mencapai node sepuluh tersebut perlu melalui node delapan atau sembilan. Berdasarkan hal tersebut maka dihasilkanlah sebuah table berikut ini yang menggambarkan langkah pertama.

Langkah I

Node Nilai

Jarak

Jalur yang Ditempuh

8 380 8-10

9 280 9-10

Tabel 2.2 Langkah I Strategi Pemrograman Dinamis

Langkah yang dilakukan berikutnya adalah menentukan jalur terpendek untuk menuju node delapan dan sembilan yang kemudian menuju ke node tujuan. Jika berangkat melalui node lima maka nilai jarak yang


(40)

(41)

870 (200+670). Oleh karena itu, nilai jarak yang dipilih kemudian adalah 810. Tabel yang menggambarkan hasil dari langkah ini adalah tabel 2.4:

Langkah III

Node Nilai

Jarak

Jalur yang Ditempuh

2 830 2-5-9-10

3 860 3-5-9-10

4 810 4-5-9-10

Tabel 2.4 Langkah III Strategi Pemrograman Dinamis

Langkah keempat yang juga merupakan langkah terakhir untuk kasus ini adalah menentukan nilai jalur terpendek jika melalui node satu. Nilai-nilai jarak yang dihasilkan adalah 1130 (300+830), 1060 (200+860), dan 1160 (350+810). Berdasarkan nilai-nilai yang dihasilkan tersebut maka 1060 adalah nilai yang dipilih. Tabel yang dihasilkan dari langkah ini adalah tabel 2.5:

Langkah IV

Node Nilai

Jarak

Jalur yang Ditempuh

1 1060 1-3-5-9-10

Tabel 2.5Langkah IV Strategi Pemrograman Dinamis

Nilai tersebut merupakan nilai akhir yang didapat dari kasus ini. Nilai 1060 juga merupakan nilai jarak terpendek yang dihasilkan untuk mencapai node sepuluh dari node satu. Hal tersebut menunjukkan bahwa jalur 1-3-5-9-10 merupakan jalur yang harus ditempuh agar hasil yang dicapai adalah optimal (jalur terpendek).

Salah satu algoritma pencarian jalur terpendek yang menggunakan strategi pemrograman dinamis dalam cara penyelesaiannya adalah algoritma


(42)

(43)

9 ? ? ? ? ? ? ? ? 0 280

10 ? ? ? ? ? ? ? ? ? 0

Tabel 2.7Iterasi I Algoritma Floyd – Warshall

Iterasi II

1 2 3 4 5 6 7 8 9 10

1 0 300 200 350 620 650 700 ? ? ?

2 ? 0 ? ? 320 350 400 ? ? ?

3 ? ? 0 ? 350 280 410 ? ? ?

4 ? ? ? 0 300 250 200 ? ? ?

5 ? ? ? ? 0 ? ? 210 230 ?

6 ? ? ? ? ? 0 ? 350 380 ?

7 ? ? ? ? ? ? 0 290 400 ?

8 ? ? ? ? ? ? ? 0 ? 380

9 ? ? ? ? ? ? ? ? 0 280

10 ? ? ? ? ? ? ? ? ? 0

Tabel 2.8 Iterasi II Algoritma Floyd – Warshall

Iterasi III

1 2 3 4 5 6 7 8 9 10

1 0 300 200 350 550 480 610 ? ? ?

2 ? 0 ? ? 320 350 400 ? ? ?

3 ? ? 0 ? 350 280 410 ? ? ?

4 ? ? ? 0 300 250 200 ? ? ?

5 ? ? ? ? 0 ? ? 210 230 ?

6 ? ? ? ? ? 0 ? 350 380 ?


(44)

(45)

5 ? ? ? ? 0 ? ? 210 230 ?

6 ? ? ? ? ? 0 ? 350 380 ?

7 ? ? ? ? ? ? 0 290 400 ?

8 ? ? ? ? ? ? ? 0 ? 380

9 ? ? ? ? ? ? ? ? 0 280

10 ? ? ? ? ? ? ? ? ? 0

Tabel 2.11Iterasi V Algoritma Floyd – Warshall

Iterasi VI

1 2 3 4 5 6 7 8 9 10

1 0 300 200 350 550 480 550 760 780 ? 2 ? 0 ? ? 320 350 400 530 550 ? 3 ? ? 0 ? 350 280 410 560 580 ? 4 ? ? ? 0 300 250 200 510 530 ?

5 ? ? ? ? 0 ? ? 210 230 ?

6 ? ? ? ? ? 0 ? 350 380 ?

7 ? ? ? ? ? ? 0 290 400 ?

8 ? ? ? ? ? ? ? 0 ? 380

9 ? ? ? ? ? ? ? ? 0 280

10 ? ? ? ? ? ? ? ? ? 0

Tabel 2.12Iterasi VI Algoritma Floyd – Warshall

Iterasi VII

1 2 3 4 5 6 7 8 9 10

1 0 300 200 350 550 480 550 760 780 ? 2 ? 0 ? ? 320 350 400 530 550 ?


(46)

(47)

1 0 300 200 350 550 480 550 760 780 1060 2 ? 0 ? ? 320 350 400 530 550 830 3 ? ? 0 ? 350 280 410 560 580 860 4 ? ? ? 0 300 250 200 490 530 810

5 ? ? ? ? 0 ? ? 210 230 510

6 ? ? ? ? ? 0 ? 350 380 660

7 ? ? ? ? ? ? 0 290 400 670

8 ? ? ? ? ? ? ? 0 ? 380

9 ? ? ? ? ? ? ? ? 0 280

10 ? ? ? ? ? ? ? ? ? 0

Tabel 2.15Iterasi IX Algoritma Floyd – Warshall

Iterasi X

1 2 3 4 5 6 7 8 9 10

1 0 300 200 350 550 480 550 830 860 1060 2 ? 0 ? ? 320 350 400 530 550 830 3 ? ? 0 ? 350 280 410 560 580 860 4 ? ? ? 0 300 250 200 490 530 810

5 ? ? ? ? 0 ? ? 210 230 510

6 ? ? ? ? ? 0 ? 350 380 660

7 ? ? ? ? ? ? 0 290 400 670

8 ? ? ? ? ? ? ? 0 ? 380

9 ? ? ? ? ? ? ? ? 0 280

10 ? ? ? ? ? ? ? ? ? 0

Tabel 2.16Iterasi X algoritma Floyd – Warshall

Hasil jalur terpendek yang dihasilkan oleh algoritma ini untuk jalur terpendek yang ditempuh dari node satu ke node sepuluh adalah 1060.


(48)

(49)

1. Jalur 1A

Tempat-tempat yang dilalui oleh jalur ini adalah Candi Prambanan - Bandar Udara Adisutjipto - Jembatan Layang Janti - Ambarrukmo Plaza - UIN Sunan Kalijaga - Saphir Square - Bioskop XXI, Jl. Solo - Rumah Sakit Bethesda, Toko Buku Gramedia, Hotel Novotel - Hotel Santika, Pizza Hut Tugu Jogja - Kantor Kedaulatan Rakyat - Stasiun Tugu – Jogjakarta - Jalan Malioboro (ada 3 buah halte) - Kantor Pos Besar, Kraton, Alun-Alun Utara, Monumen 1 Maret, Benteng Vredeburg - Taman Pintar, Taman Parkir Bank - Indonesia, Pasar Beringhardjo, Gondomanan - Pasar Sentul (Jl. Taman Siswa) - Taman Makan Pahlawan Kusumanegara - Balaikota Jogjakarta - Kebun Binatang - Gembira Loka - Jogja Expo Center - Jembatan Janti (kembali ke arah Kalasan, Bandar Udara Adisutjipto sampai Terminal Prambanan)

2. Jalur 1B

Tempat-tempat yang dilalui oleh jalur ini adalah Terminal Prambanan – Kalasan - Bandara Adisucipto – Maguwoharjo - Janti (lewat bawah) - Blok O – JEC - Babadan Gedongkuning - Gembira Loka – SGM - Pasar Sentul – Gondomanan - Kantor Pos Besar - RS.PKU Muhammadiyah - Pasar Kembang – Badran - Bundaran SAMSAT – Pingit – Tugu – Gramedia -


(50)

(51)

5. Jalur 3A

Tempat-tempat yang dilalui oleh jalur ini adalah Terminal Giwangan – Tegalgendu - HS-Silver - Jl. Nyi Pembayun - Pegadaian Kotagede – Basen – Rejowinangun - Babadan Gedongkuning – JEC - Blok O - Janti (lewat atas) – Janti – Maguwoharjo - Bandara ADISUCIPTO – Maguwoharjo - Ringroad Utara - Terminal Condongcatur – Kentungan - MM UGM – MirotaKampus – Gondolayu – Tugu – Pingit - Bundaran SAMSAT – Badran – PasarKembang - Stasiun TUGU – Malioboro - Kantor Pos Besar - RS PKU Muhammadiyah – Ngabean - Jokteng Kulon - Plengkung Gading - Jokteng Wetan – Tungkak – Wirosaban – Tegalgendu - Terminal Giwangan.

6. Jalur 3B

Tempat-tempat yang dilalui oleh jalur ini adalah Terminal Giwangan – Tegalgendu – Wirosaban – Tungkak - Jokteng Wetan - Plengkung Gading - Jokteng Kulon – Ngabean - RS PKU Muhammadiyah - Pasar Kembang – Badran - Bundaran SAMSAT – Pingit – Tugu – Gondolayu - Mirota Kampus - MM UGM – Kentungan - Terminal Condong Catur - Ringroad Utara – Maguwoharjo - Bandara Adisucipto – Maguwoharjo - JANTI (lewat bawah) - Blok O – JEC - Babadan


(52)

(53)

BAB III

ANALISA DAN PERANCANGAN SISTEM

Pada bab ini akan dijelaskan mengenai analisa dan perancangan sistem yang digunakan dalam penelitian ini.

3.1. Deskripsi Kasus

Kasus penggunaan Bus Trans Jogja yang mungkin dihadapi oleh para penumpangnya adalah ketidaktahuan untuk menentukan jalur Bus Trans Jogja yang harus ditempuh guna mencapai tujuan yang dikehendaki. Selain hal itu, penumpang bahkan juga mungkin tidak tahu trayek apa yang harus ditumpangi dan perpindahan bus yang harus dilakukan guna mencapai titik tujuannya dengan cepat. Berdasarkan hal tersebut salah satu solusi yang dapat diberikan adalah membuat sebuah aplikasi untuk mencari jalur terpendek rute Bus Trans Jogja dari satu titik awal ke satu titik tujuan. Selain kemampuan mencari jalur terpendek, aplikasi yang dibuat juga harus mampu memberikan saran berupa bus yang harus digunakan beserta perpindahan yang harus dilakukan untuk menempuh jalur terpendek yang telah ditemukan.

Aplikasi akan dibuat untuk smartphone bersistem operasi Android. Hal tersebut dilakukan agar aplikasi yang dibuat lebih optimal dalam membantu penumpang karena mampu membantu penumpang pemilik smartphone Android menentukan Bus Trans Jogja yang harus digunakan secara mobile. Pertimbangan hal tersebut muncul karena dengan ukuran

34


(54)

(55)

gambar graph yang terbentuk berdasarkan posisi halte dan jarak antar halte yang ada.

Gambar 3.1Graph Rute Bus Trans Jogja


(56)

(57)

Gambar 3.2 Posisi Halte Bus Trans Jogja


(58)

(59)

12.Untuk int i = 1, selama i < jumlah vertex lakukan langkah dua belas hingga langkah lima belas.

13.Jika vertex ke – i belum dikunjungi dan sPath ke – i < jarakTerpendek maka lakukan langkah tiga belas dan empat belas.

14.jarakTerpendek = sPath[i].getjarak(). 15.minIndeks = i.

16.i++.

17.Buat dan inisialisasi variabel “min” = minIndeks.

18.Buat dan inisialisasi varaibel “minDist” = sPath[min].getJarak().

19.Jika minDist = infinite, maka break. Jika tidak lakukan langkah dua puluh dan 21.

20.vertSekarang = minIndeks.

21.jarakAwalKini = sPath[min].getJarak().

22.Tandai vertex sekarang bahwa dirinya sudah dikunjungi. 23.jumGraph++.

24.Buat dan inisialisasi variabel int “kolom” = 0.

25.Selama kolom < jumlah vertex, lakukan langkah 26 hingga 31. 26.Jika vertex dengan index kolom sudah dikunjungi, maka

kolom++ dan continue.


(60)

(61)

5. Untuk int i = 0, selama i < path.length lakukan langkah enam hingga langkah sembilan.

6. Untuk int j = 0, selama j < path.length lakukan langkah tujuh hingga langkah delapan.

7. Jika “jarak” sama dengan infinite, maka path[i][j] = -1, jika tidak maka path[i][j] = i.

8. j++. 9. i++.

10.Untuk int i = 0, selama i < jumlah halte, lakukan langkah sebelas hingga langkah dua belas.

11.path[i][i] = 1. 12.i++.

13.Untuk int i = 0, selama i < path.length lakukan langkah empat belas hingga langkah 21.

14.Untuk int j = 0, selama j < path.length lakukan langkah lima belas hingga langkah dua puluh.

15.Untuk int k = 0, selama k < path.length lakukan langkah enam belas hingga langkah sembilan belas.

16.Jika jarak[j][i] + jarak[i][k] < jarak[j][k], lakukan langkah tujuh belas dan delapan belas.

17.jarak[j][k] = jarak[j][i] + jarak[i][k]. 18.path[j][k] = path[i][k].


(62)

(63)

9. Masukkan ke daftarTrayek edgeTrayek untuk nilai awal dan tujuan yang telah ditentukan pada langkah tujuh dan delapan. 10.i++.

11.Inisialisasi bantu yang bertipe List<String> yang merupakan nilai dari variabel daftarTrayek ke-0.

12.Inisialisasi variabel bertipe String baru dan perpindahanBus bernilai empty string.

13.Untuk int i = 1, selama i kurang dari jalurPilihan.size maka lakukan langkah empat belas hingga langkah 29.

14.Ubah nilai variabel baru menjadi empty string.

15.Untuk int j = 0, selama j kurang dari bantu.size, lakukan langkah enam belas hingga sembilan belas.

16.Untuk int k = 0, selama k kurang dari daftarTrayek.get(i).size lakukan langkah tujuh belas hingga delapan belas.

17.Jika nilai variabel bantu sama dengan daftarTrayek.get(i).get(k) maka baru = baru + bantu.get(j).

18.j++. 19.j++.

20.Jika nilai variabel baru sama dengan empty String maka lakukan langkah 21 hingga 25, jika tidak lakukan langkah 26. 21.Untuk j = 0, selama j kurang dari bantu.size lakukan langkah

22 hingga 24.


(64)

(65)

dengan solusi yang diperoleh melalui penghitungan manual. Kemiripan solusi yang diberikan oleh sistem dengan solusi yang didapat secara manual akan menjadi nilai ukur kebenaran dari solusi yang diberikan oleh sistem. Semakin mirip solusi dari sistem dengan solusi yang didapat dari perhitungan manual, maka semakin benar pula solusi yang diberikan oleh sistem. Penghitungan manual akan dilakukan dengan cara:

1. Menentukan semua kemungkinan jalur yang mampu ditempuh dari titik awal dan tujuan yang telah ditentukan, kemudian menghitung jarak untuk setiap kemungkinan jalur yang didapat.

2. Membandingkan semua jarak untuk semua kemungkinan jalur yang telah didapat.

3. Jalur dengan nilai jarak terkecillah yang kemudian dijadikan sebagai solusi dalam penghitungan manual tersebut.

Hal terakhir yang kemudian dilakukan adalah membandingkan kompleksitas waktu asimtotik dari masing-masing algoritma dan running time-nya. Hal ini dilakukan untuk menentukan algoritma mana yang paling optimal untuk digunakan dalam aplikasi yang dibuat. Algoritma yang palling optimallah yang akan benar-benar digunakan dalam aplikasi yang akan dibuat sehingga aplikasi benar-benar siap untuk dipublikasi dan digunakan oleh masyarakat umum.


(66)

(67)

3. Aktor menyentuh kembali titik awal yang telah ditentukan sebelumnya.

2. Sistem telah menandai lokasi awal yang telah ditentukan oleh aktor.

4. Sistem memunculkan dialog apakah titik awal yang telah ditentukan sebelumnya oleh actor akan dibatalkan atau tidak.

Tabel 3.1Tabel Use Case Menentukan Titik Awal

b. Nama Use Case : Menentukan titik tujuan Aktor : User (pengguna aplikasi) Kondisi Awal : Titik awal telah ditentukan

Skenario :

Aksi Aktor Reaksi Sistem

1. Aktor touch titik tujuan yang berupa icon halte Bus Trans Jogja.

2. Sistem menandai lokasi yang telah ditentukan dan kemudian menampilkan jalur yang menghubungkan tiap halte.

Tabel 3.2Tabel Use Case Menentukan Titik Tujuan

c. Nama Use Case : Melihat jalur bus yang ditempuh Aktor : User (pengguna aplikasi)

Kondisi Awal : Titik awal dan tujuan telah ditentukan

Skenario :


(68)

(69)

bus yang harus dipilih aktor berdasarkan jalur terpendek yang telah diperoleh sistem.

Tabel 3.5Tabel Use Case Melihat Saran Trayek Bus yang Harus Dipilih

f. Nama Use Case : Melihat running time algoritma Aktor : User

Kondisi Awal : Titik awal dan tujuan telah ditentukan

Skenario :

Aksi Aktor Reaksi Sistem

1. Aktor touch tombol

“Details”. 2. Sistem menampilkan running time aloritma.

Tabel 3.6Tabel Use Case Melihat Running Time Algoritma

g. Nama Use Case : Mencari halte Aktor : User

Kondisi Awal : -

Skenario :

Aksi Aktor Reaksi Sistem

1. Aktor mengisi

textfield yang ada dengan nama halte yang ingin dicari. 2. Aktor touch tombol

“Cari”.

3. Sistem menunjukkan halte yang dicari jika ada.


(70)

(71)

3.4.1. Diagram Aktivitas Menentukan Titik Awal

Gambar 3.4Diagram Aktivitas Menentukan Titik Awal

3.4.2. Diagram AktivitasMenentukan Titik Tujuan

Gambar 3.5Diagram Aktivitas Menentukan Titik Tujuan


(72)

(73)

3.4.4. Diagram Aktivitas Melihat Jalur Bus yang Ditempuh, Melihat Nilai Jarak yang Ditempuh, Melihat Saran Trayek Bus yang Harus Dipilih, dan Melihat Running Time Algoritma

Gambar 3.7Diagram Akivitas Melihat Jalur Bus yang Ditempuh, Melihat Nilai Jarak yang Ditempuh, Melihat Saran Trayek

Bus yang Harus Dipilih, dan Melihat Running Time Algoritma


(74)

(75)

3.5.2. Diagram Sekuensial Menentukan Titik Tujuan

Gambar 3.10Diagram Sekuensial Menentukan Titik Tujuan

3.5.3. Diagram Sekuensial Mencari Halte

Gambar 3.11Diagram Sekuensial Mencari Halte


(76)

(77)

Gambar 3.13Diagram Sekuensial Melihat Jalur Bus yang Ditempuh, Melihat Nilai Jarak yang Ditempuh, Melihat Saran Trayek Bus yang Harus Dipilih, dan Melihat Running Time Algoritma

Floyd-Warshall

3.5.5. Diagram Sekuensial Melihat Help


(78)

(79)

Gambar 3.16Diagram Kelas Perancangan Keseluruhan

3.7. Kelas Analisis

Tabel 3.9 dan 3.10 adalah tabel kelas-kelas analisis yang digunakan pada sistem. Tabel ini menunjukkan jenis-jenis setiap kelas yang digunakan dan tanggung jawab dari setiap kelas. Daftar attribut setiap kelas juga dimasukkan dalam tabel ini.


(80)

(81)

TemporaryJalur_n_Jarak Membantu untuk menyimpan jarak dan jalur secara sementara yang digunakan dalam pencarian jalur terpendek dengan menggunakan

algoritma dijkstra.

double jarak private int from

MainActivity Menampilkan halaman judul.

Map Menampilkan

tampilan peta. Membuat halte dan jarak antar halte. Membuat posisi-posisi halte dan pengguna pada peta. MapView mapView MapController mapController SitesOverlay sitesOverlays SitesOverlay sitesOverlay2 Graph graph Button buttonDetails List<String> daftarHalte InputStream data Sheet sheet Sheet sheet2 Sheet sheet3 ArrayList<String> trayek String param String[] namaHalte GeoPoint pointHalte1 AutoCompleteTextView autoText

PathOverlay Membuat jalur

terpendek pada peta.

Projection projection ArrayList<GeoPoint> ppoint

SitesOverlay Menampilkan

posisi-posisi halte dan pengguna pada peta. Menampilkan jalur terpendek pada List<OverlayItem> items Drawable marker Drawable markerStart Drawable markerEnd Drawable markerChange Context context

SYSTOOLS DEMO


(82)

(83)

findIndex(String index) public Digunakan untuk mencari index dari node yang dicari dengan masukan berupa nama node.

getMin() public Digunakan untuk

mencari jalur yang terpendek dengan membandingkan dua buah jalur. Fungsi ini digunakan dalam pencarian jalur terpendek dengan algoritma Dijkstra.

adjust_sPath() public Digunakan untuk

membentuk jalur terpendek pada pencarian jalur terpendek dengan algoritma Dijkstra.

displayPaths(int tujuan, int awal)

public Digunakan untuk

menampilkan jarak terpendek dan jalur yang harus ditempuh dalam pencarian jalur terpendek dengan algoritma Dijkstra.

dijkstra(String awal, String public Digunakan untuk


(84)

(85)

diperoleh.

Nama Atribut Visibility Tipe

INFINITE private integer

edge package double[][]

edgeTrayek package ArrayList<String>[][] daftarVertex package Halte[]

jumlah_vertex package integer tujuan package List<Halte>

sPath package TemporaryJalur_n_Jar

ak[]

jumGraph package integer

vertSkrg package integer

mulaiSmpSkrg package double

Tabel 3.11Tabel Operasi dan Atribut Kelas Graph

b. Kelas Halte

Nama Operasi Visibility Keterangan

getNama() public Digunakan untuk

mengambil nama dari halte.

setNama(String nama) public Digunakan untuk memberi nama sebuah halte.

isInGraph() public Digunakan untuk

mengambil tanda sebuah halte apakah sudah dikunjungi atau belum. setInGraph(boolean public Digunakan untuk


(86)

(87)

asal node sementara.

Nama Atribut Visibility Tipe

jarak private double

from private integer

Tabel 3.13Tabel Operasi dan Atribut Kelas TemporaryJalur_n_Jarak

d. Kelas MainActivity

Nama Operasi Visibility Keterangan

onCreate(Bundle savedInstanceState)

public Digunakan untuk

memanggil dan menampilkan halaman

judul.

Nama Atribut Visibility Tipe -

Tabel 3.14Tabel Operasi dan Atribut Kelas MainActivity

e. Kelas Map

Nama Operasi Visibility Keterangan

onCreate(Bundle savedInstanceState)

protected Digunakan untuk

memanggil dan menampilkan peta.

onCreateOptionsMenu(Menu menu)

public Digunakan untuk

membuat menu pada aplikasi.

onBackPressed() public Digunakan untuk

memberi action apa yang harus dilakukan ketika


(88)

(89)

autoText package AutoCompleteTextView

Tabel 3.15Tabel Operasi dan Atribut Kelas Map

f. Kelas PathOverlay

Nama Operasi Visibility Keterangan

draw(Canvas canvas, MapView mapView, boolean shadow, long when)

public Digunakan untuk

membuat gambar path yang akan ditampilkan di peta.

Nama Atribut Visibility Tipe

projection private Projection

ppoint private ArrayList<GeoPoint>

Tabel 3.16Tabel Operasi dan Atribut Kelas PathOverlay

g. Kelas SitesOverlay

Nama Operasi Visibility Keterangan

createItem(int index) protected Digunakan untuk membuat objek gambar (posisi dan halte).

size() public Digunakan untuk

mengambil jumlahnya objek gambar yang dibuat.

addItem(OverlayItem item)

public Digunakan untuk

menambahkan objek gambar.

addFlag(int[] itemSize) public Digunakan untuk


(90)

(91)

int counter3 = -1 package integer

mapView package MapView

param package String

Tabel 3.17 Tabel Operasi dan Atribut Kelas SitesOverlay

h. Kelas Help

Nama Operasi Visibility Keterangan

onCreate(Bundle savedInstanceState)

public Digunakan untuk

memanggil dan menampilkan halaman

Help.

Nama Atribut Visibility Tipe -

Tabel 3.18Tabel Operasi dan Atribut Kelas Help

3.9. Cara Pengujian

Pengujian dilakukan dengan dua macam. Pengujian pertama dilakukan untuk menguji dari kebenaran sistem atau aplikasi yang telah dibuat. Pengujian ini dilakukan dengan memberikan sejumlah kasus terhadap aplikasi yang telah dibuat. Hasil yang diperoleh berdasarkan setiap kasus yang diberikan kemudian akan dibandingkan dengan perhitungan manual untuk kasus yang sama. Perbandingan tersebut dilakukan untuk menguji akurasi kebenaran atas solusi jalur terpendek yang diberikan aplikasi. Setelah perbandingan untuk mengetahui tingkat kebenaran dilakukan maka hal berikutnya yang dilakukan adalah menghitung nilai kompleksitas waktu


(92)

(93)

titik awal. pada peta. disentuh akan ditandai dengan ikon

baru sebagai titik awal.

2 Membatalkan titik awal.

Halte bus yang telah ditentukan sebagai

titk awal sebelumnya.

Muncul pesan apakah titik awal akan dibatalkan atau tidak.

3 Menentukan titik tujuan.

Halte bus yang ada pada peta (selain yang telah ditandai sebagai titik awal).

Halte bus yang disentuh akan ditandai dengan ikon

baru sebagai titik tujuan.

Muncul garis pada

peta yang menghubungkan

antar halte yang merupakan jalur tempuh dari titik awal ke titik tujuan. 4 Melihat jalur

bus yang ditempuh.

Tombol “Details” disentuh.

Rute jalur terpendek yang harus ditempuh menggunakan bus akan muncul berupa poin-poin.

5 Melihat nilai jarak yang ditempuh.

Tombol “Details” disentuh.

Tampil total nilai jarak terpendek yang harus ditempuh


(94)

(95)

SUGIYONO 2 (MUSEUM

PERJUANGAN)

(KENTUNGAN)

User diarahkan ke

posisi halte SUGIYONO 2 (MUSEUM

PERJUANGAN) 9 Mencari halte. “ ”

TINUS

SEMBARANG

Tampil pesan bahwa halte yang dicari tidak diketahui.

Tampil pesan bahwa halte yang dicari tidak diketahui.

Tampil pesan bahwa halte yang dicari tidak diketahui.

10 Menguji

kebenaran jarak terpendek

masing-masing algoritma

Awal: SUDIRMAN 2 (BUMI PUTERA) Tujuan: NGABEAN

Jarak: 4,604 km Jalur: -SUDIRMAN 2 (BUMI PUTERA) -MANGKUBUMI 1 (TUGU) -MANGKUBUMI 2 (PLN) -MALIOBORO 1 (GARUDA)

SYSTOOLS DEMO


(96)

(97)

Naik 2B.

Awal: MT

HARYONO 2 (SMA 7)

Tujuan: TENTARA PELAJAR 1 (SMP 14)

Jarak: 4,299 km Jalur:

-MT HARYONO 2 (SMA 7) -TEJOKUSUMAN -NGABEAN -COKROAMINOTO (SMA 1) -SMPN 11 -TENTARA

PELAJAR 1 (SMP 14)

Saran:

Naik 3B – pindah ke 2B di Ngabean.

Tabel 3.19Skenario Pengujian

3.11. Desain Antarmuka

Gambar-gambar berikut adalah rancangan dari antarmuka untuk sistem yang akan dibuat.


(98)

(99)

3.11.3. Desain Antarmuka Tampilan Details

Gambar 3.19Desain Antarmuka Tampilan Details


(100)

(1)

170

for (int i = 3; i <

sheet2.getColumns(); i++) {

trayek.add(sheet2.getCell(i, j).getContents());

}

graph.insertJarak(sheet2.getCell(0, j).getContents(), sheet2

.getCell(1, j).getContents(), Double.parseDouble(sheet2

.getCell(2, j).getContents()), trayek);

}

} catch (BiffException e) { e.printStackTrace(); } catch (IOException e) {

// TODO Auto-generated catch block e.printStackTrace();

}

autoText = (AutoCompleteTextView) findViewById(R.id.editText1);

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,

R.layout.mydropdownstyle, namaHalte);

autoText.setThreshold(1);

autoText.setAdapter(adapter);

Button cariButton = (Button) findViewById(R.id.button1);

cariButton.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub int flag = -1;

for (int i = 0; i <

sitesOverlay2.size(); i++) { if (sitesOverlay2.getItem(i).getTitle()

.equalsIgnoreCase(autoText.getText().toString())) { flag = 1;

mapController.animateTo(sitesOverlay2.getItem(i)

.getPoint());

autoText.setText(""); break;

} }

System.out.println(flag); if (flag == -1) {

SYSTOOLS DEMO

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI


(2)

(3)

172

Drawable iconChangeHalte = getResources().getDrawable(

R.drawable.halte_change);

iconHalte.setBounds(0, 0, iconHalte.getIntrinsicWidth(), iconHalte.getIntrinsicHeight()); iconStart.setBounds(0, 0, iconStart.getIntrinsicWidth(), iconStart.getIntrinsicHeight()); iconEnd.setBounds(0, 0, iconEnd.getIntrinsicWidth(), iconEnd.getIntrinsicHeight()); iconChangeHalte.setBounds(0, 0, iconChangeHalte.getIntrinsicWidth(), iconChangeHalte.getIntrinsicHeight());

sitesOverlay2 = new SitesOverlay(iconHalte, iconStart, iconEnd, graph,

buttonDetails, Map.this, mapView,

param, iconChangeHalte);

for (int j = 0; j < sheet3.getRows(); j++) {

Double latitudeHalte1 = Double.parseDouble(sheet3.getCell(2, j)

.getContents()) * 1E6;

Double longitudeHalte1 = Double.parseDouble(sheet3.getCell(3, j)

.getContents()) * 1E6;

GeoPoint pointHalte1 = new GeoPoint(latitudeHalte1.intValue(),

longitudeHalte1.intValue()); OverlayItem halte1 = new OverlayItem(pointHalte1, sheet3.getCell(0,

j).getContents(),

sheet3.getCell(1, j).getContents());

sitesOverlay2.addItem(halte1); }

int[] items = new int[sitesOverlay2.size()]; for (int i = 0; i < items.length; i++) {

items[i] = 0; }

sitesOverlay2.addFlag(items);

overlays = mapView.getOverlays();

overlays.add(sitesOverlay2);

String provider = locationManager.getBestProvider(criteria, true);

SYSTOOLS DEMO

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI


(4)

(5)

174

Overlay bantu2=null;

// System.out.println(overlays.get(0); if (overlays.size() == 2) {

overlays.remove(1);

overlays.add(sitesOverlays); } else if (overlays.size() == 3) {

bantu = overlays.get(2);

overlays.remove(2);

overlays.remove(1);

overlays.add(sitesOverlays);

overlays.add(bantu); } else {

overlays.add(sitesOverlays); }

mapController.animateTo(myPoint); System.out.println(overlays.size()); }

}

private final LocationListener locationListener = new LocationListener() {

@Override

public void onStatusChanged(String provider, int status, Bundle extras) {

// TODO Auto-generated method stub }

@Override

public void onProviderEnabled(String provider) { // TODO Auto-generated method stub

}

@Override

public void onProviderDisabled(String provider) { // TODO Auto-generated method stub

updateNewLocation(null); }

@Override

public void onLocationChanged(Location location) { // TODO Auto-generated method stub

updateNewLocation(location); }

};

@Override

protected boolean isRouteDisplayed() { // TODO Auto-generated method stub

SYSTOOLS DEMO

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI


(6)