Bab Hasil Pembuatan Aplikasi

dokumen-dokumen yang mirip
Bab 3 Metode dan Perancangan Sistem

BAB IV HASIL DAN PEMBAHASAN

Bab IV Implementasi Sistem

Bab 4 Hasil dan Pembahasan

KA2173 Pemrograman Berorientasi Objek. 10 BAB X PENGAKSESAN DATABASE. H a l 64

Link Nama digunakan untuk menuju halaman Data Absensi Siswa.

Bab 4 Hasil dan Pembahasan

Koneksi Java GUI-Database

Bab Implementasi Sistem

BAB 4 HASIL DAN PEMBAHASAN

Koneksi Sederhana Database dengan C# (Lihat, Tambah, dan Hapus Data)

visit :

BAB IV PROTOTYPE. 4.1 Perancangan Antarmuka

BAB IV HASIL DAN UJI COBA

BAB IV IMPLEMENTASI DAN PEMBAHASAN SISTEM. Pada tahap ini merupakan tahapan implementasi dari

Gambar 4.1 Menu List Anggota Menu Anggota Menu ini adalah menu yang di gunakan untuk Insert, Update, Delete, dan Read Data.

Penjadwalan Ujian Skripsi Berbasis Web Service Menggunakan Metode TOPSIS (Studi Kasus : FTI UKSW)

SISTEM TERDISTRIBUSI PERTEMUAN IV ASP.NET WEB SERVICE (1)

3 BAB III METODOLOGI

Bab 4. Hasil dan Pembahasan

BAB III ANALISIS DAN DESAIN SISTEM

BAB III METODE DAN PERANCANGAN SISTEM

Bab 4 Pembahasan dan Hasil

int i = 0; while (i < 10) { System.out.println( Informatika Unpas ); i++; }

Gambar 4.22 Tampilan Halaman Semester

Pendahuluan Tinjauan Pustaka

KA2173 Pemrograman Berorientasi Objek. 9 BAB IX PEMROGRAMAN GUI: SWING. H a l 56

Bab 4 Pembahasan Dan Hasil Pengujian

Bab 4 Hasil dan Pembahasan

BAB IV HASIL DAN UJI COBA

BAB IV HASIL DAN UJI COBA

Perancangan Halaman Tampil Pelunasan Perancangan Halaman Tampil Transaksi

BAB III RANCANGAN PENGUJIAN. aplikasi ini adalah black box testing. Black box testing atau tes fungsional adalah

BAB IV IMPLEMENTASI DAN PENGUJIAN

Firma Firmansyah Adi B. Resume Web Service

SMART LOGIN PADASITUSWEB MENGGUNAKANQR-CODE. Masdito Bachtiar Pembimbing 1 : Ary Mazharuddin S., S.Kom., M.Comp.Sc

BAB IV HASIL DAN PEMBAHASAN

BAB IV IMPLEMENTASI DAN PENGUJIAN

BAB IV IMPLEMENTASI DAN TESTING

Pengenalan JavaScript

BAB IV PEMBAHASAN. commit to user

BAB III ANALISIS DAN DESAIN SISTEM

BAB IV IMPLEMENTASI DAN PENGUJIAN SISTEM

tentang perubahan kondisi aplikasi dijalankan :

Bab 4. Hasil Dan Pembahasan

BAB IV HASIL DAN UJI COBA

BAB III ANALISA DAN PERANCANGAN

3 BAB III METODOLOGI PENELITIAN

BAB IV HASIL DAN PEMBAHASAN. yang sering dialami dan penanganan yang bisa dilakukan oleh cat lover.

Bab 4 Hasil dan Pembahasan

BAB IV HASIL DAN UJI COBA

MODUL 6 JDBC (JAVA DATABASE CONNECTIVITY)

BAB III ANALISIS DAN DESAIN SISTEM

TUTORIAL SEDERHANA, JAVA (Swing) dan MYSQL (SELECT dan INSERT)

LAMPIRAN A. Universitas Sumatera Utara

Berikut ini adalah petunjuk pemakaian aplikasi basis data layanan online pada. Dimulai dengan halaman login.

BAB IV IMPLEMENTASI DAN PENGUJIAN. Dalam pembuatan program ini penulis menggunakan Visual Basic. Net

Badiyanto, S.Kom., M.Kom. PBO java

BAB III METODE DAN PERANCANGAN SISTEM. menggunakan referensi jurnal, e-book, dan artikel terkait.

TUJUAN. Memahami Koneksi dan Pemrosesan Basis Data di Java Memahami JDBC Menggunakan MySQL pada program Java

DAO design pattern diimplementasi dengan beberapa langkah, yaitu :

BAB IV HASIL DAN PEMBAHASAN


BAB IV HASIL DAN UJI COBA

BAB IV HASIL DAN UJI COBA

Bab 4. Pembahasan dan Hasil

BAB III PEMBAHASAN. Kegiatan selama kerja praktek di tim PISP Bank Indonesia yaitu :

2. Buka browser, kunjungi dengan menempatkan. folder asuransi pada folder htdocs terlebih dahulu.

Bab 4 Hasil dan Pembahasan

BAB IV HASIL DAN PEMBAHASAN

Lampiran Utama. a. Struktur Organisasi. Factory Manager. Vice Factory Manager. Non Produksi. Produksi. Dept. Power. Dept Greyee. Dept.

BAB III ANALISA DAN DESAIN SISTEM

BAB III ANALISIS DAN PERANCANGAN

MODUL PRAKTIKUM KE 9

BAB IV IMPLEMENTASI SISTEM

BAB 3 PERANCANGAN PROGRAM

BAB IV IMPLEMENTASI DAN PENGUJIAN

BAB IV IMPLEMENTASI DAN EVALUASI. membantu untuk lebih memahami jalannya aplikasi ini. Sistem atau aplikasi dapat

Pemrograman Berorientasi Obyek Lanjut (IT251) Ramos Somya, S.Kom., M.Cs.

BAB IV IMPLEMENTASI DAN PENGUJIAN SISTEM

Pengajar dapat melihat Jadwal Mengajar Pengajar tersebut selama mengajar di

BAB IV IMPLEMENTASI DAN PENGUJIAN

BAB IV IMPLEMENTASI DAN PENGUJIAN

BAB IV IMPLEMENTASI DAN EVALUASI

Modul Praktikum 3 Pemograman Berorientasi Objek

Universitas Mercu Buana

BAB IV HASIL DAN UJI COBA

BAB IV HASIL DAN UJI COBA

TUGAS AKHIR PEMOGRAMAN VISUAL APLIKASI PETERNAKAN AYAM BERBASIS JAVA DI PETERNAKAN AYAM MANDIRI

LAMPIRAN. Daftar Pertanyaan(Interview Pengujian Aplikasi) 2. Apakah anda pernah melihat atau menggunakan aplikasi yang serupa?

BAB IV HASIL DAN UJI COBA

BAB IV IMPLEMENTASI DAN PENGUJIAN

BAB III METODE PENELITIAN. Tujuan tugas akhir ini akan membangun suatu model sistem yang

BAB III PERANCANGAN SISTEM

BAB IV TESTING DAN IMPLEMENTASI

ANALISIS DAN PERANCANGAN SISTEM

BAB IV IMPLEMENTASI DAN EVALUASI. dibangun, dikembangkan menggunakan PHP ( Personal Home Page ) yang

BAB IV IMPLEMENTASI DAN PENGUJIAN SISTEM

Bab 4 Hasil dan Pembahasan

Everybody in this country should learn how to program a computer because it teaches you how to think. Steve Jobs

Transkripsi:

Bab 4 Hasil dan Pembahasan Bab ini berisi tentang hasil pembuatan aplikasi untuk penjadwalan ujian skripsi di Fakultas Teknologi Informasi (FTI) UKSW. Hasil yang dibahas adalah input dan manage data serta jadwal ujian yang terbentuk. 4.1 Hasil Pembuatan Aplikasi Hasil dari aplikasi yang dibuat dari penelitian ini adalah men- yang diberikan oleh generate jadwal ujian dari masukan-masukan user, yang digunakan untuk membantu user dalam melakukan penjadwalan ujian. Aplikasi yang dibuat hanya dibuat untuk seorang user, yaitu admin, yang dapat melakukan semua fungsi yang ada di dalam sistem. 4.1.1 Hasil Pembuatan Aplikasi Penjadwalan Ujian Aplikasi yang dibuat pertama kali akan menampilkan halaman login, yang mengharuskan user untuk melakukan proses login. Proses ini dilakukan untuk menjaga keamanan sistem dan data yang ada di dalamnya. Halaman login dapat dilihat pada Gambar 4.1. Gambar 4.1 Halaman Login 61

62 User diharuskan mengisi username dan password pada halaman login sebelum masuk ke dalam sistem. Untuk memastikan bahwa username dan password tersebut sesuai dengan data yang ada dalam database, maka digunakan sebuah fungsi yang digunakan untuk pengecekan login. Fungsi login dapat dilihat pada Kode Program 4.1. Kode Program 4.1 Fungsi Login 1. public boolean ceklogin(string username, String password) { 2. try { 3. ps = conn.preparestatement("select username, password FROM t_user"); 4. rs = ps.executequery(); 5. while (rs.next()) { 6. if (rs.getstring(1).equals(username) && rs.getstring(2).equals(password)) { 7. cek = true; break; 8. }}} catch (SQLException ex) { 9. Logger.getLogger(Method_User.class.getName()).log(Level.SEVER E, null, ex); 10. } finally { 11. try { 12. ps.close();rs.close();conn.close(); 13. } catch (SQLException ex) { 14. Logger.getLogger(Method_List.class.getName()).log(Level.SEVER E, null, ex); 15. }}return cek; 16. } Fungsi login pada Kode Program 4.1 mengembalikan nilai boolean. Nilai kembalian dari fungsi tersebut akan mengembalikan nilai true apabila username dan password yang dimasukkan ada di dalam database, dan bernilai false apabila username dan password tidak sesuai dengan yang ada di dalam database. Untuk mengetahui nilai kembalian dari fungsi login ini, atau dalam kata lain berhasil tidaknya proses login, ditentukan oleh fungsi pada Kode Program 4.2.

63 Kode Program 4.2 Fungsi Validasi Login 1. String username = request.getparameter("username"); 2. String password = request.getparameter("password"); 3. boolean cek = new Method_User().cekLogin(username, password); 4. if (cek == true) { 5. session.setattribute("user", username); 6. rd = request.getrequestdispatcher("./index2.jsp"); 7. rd.include(request, response); 8. } else { 9. request.setattribute("msg", "Invalid Username or Password"); 10. rd = request.getrequestdispatcher("./index.jsp"); 11. rd.include(request, response); 12. } Pada Kode Program 4.2 baris ke 9, fungsi validasi login ini akan mengembalikan pesan yang menunjukan bahwa proses login tidak berhasil. Apabila masukan username dan password tidak sesuai dengan database, maka sistem akan mengeluarkan pesan yang ditampilkan langsung pada halaman login. Hal ini dapat dilihat pada Gambar 4.2 dan Gambar 4.3. Gambar 4..2 Kesalahan Login Gambar 4.3 Pesan Salah Login

64 Apabila proses login berhasil, user dapat masuk ke dalam halaman utama sistem. Halaman utama dari sistem dapat dilihat pada Gambar 4.4. Gambar 4.4 Halaman Home Sebelum melakukan proses penjadwalan, terdapat beberapa proses yang harus dilakukan, diantaranya adalah proses pengaturan ruang ujian. Tampilan halaman pengaturan ruang ujian dapat dilihat pada Gambar 4.5. Gambar 4.5 Halaman Ruang Hal yang dilakukan dalam proses pengaturan ruang ujian ini yaitu penambahan ruang ujian dan penghapusan ruang ujian. Untuk

65 fungsi penambahan ruang ujian, dapat dilihat pada Kode Program 4.3. Kode Program 4.3 Fungsi Tambah Ruang Ujian 1. public boolean addruang(string nama) { 2. try { 3. ps = conn.preparestatement("insert INTO t_ruang VALUES ('" + nama + "')"); 4. if (ps.executeupdate() > 0) { 5. cek = true; 6. }} catch (SQLException ex) { 7. Logger.getLogger(Method_List.class.getName()).log(Level.SEVER E, null, ex); 8. } finally { 9. try { 10. ps.close();conn.close(); 11. } catch (SQLException ex) { 12. Logger.getLogger(Method_List.class.getName()).log(Level.SEVER E, null, ex); 13. }}return cek; } Pada Kode Program 4.3, dapat dilihat bahwa penambahan ruang dimasukkan dalam tabel t_ruang dalam database, dengan memasukkan nama ruang sesuai dengan parameter dari fungsi tersebut ketika dipanggil. Hal yang sama terjadi pada proses penghapusan ruang ujian. Penghapusan ruang dilakukan sesuai dengan parameter dari fungsi yang dapat dilihat pada Kode Program 4.4. Kode Program 4.4 Fungsi Hapus Ruang Ujian 1. public boolean deleteruang(string nama) { 2. try { 3. ps = conn.preparestatement("delete FROM t_ruang WHERE nama_ruang = '" + nama + "'"); 4. if (ps.executeupdate() > 0) { 5. cek = true; 6. }} catch (SQLException ex) { 7. Logger.getLogger(Method_List.class.getName()).log(Level.SEVER E, null, ex); 8. } finally { 9. try { 10. ps.close();conn.close(); 11. } catch (SQLException ex) { 12. Logger.getLogger(Method_List.class.getName()).log(Level.SEVER E, null, ex); 13. }} return cek; }

66 Untuk memberikan proteksi dalam pengaturan ruang ujian ini, dibutuhkan sistem validasi yang digunakan untuk memberikan pesan apakah proses pengaturan ruang ujian yang dilakukan berhasil atau tidak. Fungsi validasi pengaturan ruang ujian dapat dilihat pada Kode Program 4.5. Kode Program 4.5 Fungsi Validasi Pengaturan Ruang Ujian 1. if (pilih.equals("tambah")) { 2. if (new Method_List().isExistRuang(namaAdd)) { 3. request.setattribute("msg", "Ruang " + namaadd + " sudah ada!"); 4. rd = request.getrequestdispatcher("./manageruang"); 5. rd.include(request, response); 6. } else if (new Method_Jadwal().addRuang(namaAdd)) { 7. request.setattribute("msg", "Ruang telah ditambah!"); 8. rd = request.getrequestdispatcher("./manageruang"); 9. rd.include(request, response); }} 10. if (pilih.equals("hapus")) { 11. if (new Method_Jadwal().deleteRuang(namaDelete)) { 12. request.setattribute("msg", "Ruang telah dihapus!"); 13. rd = request.getrequestdispatcher("./manageruang"); 14. rd.include(request, response); }} Pada Kode Program 4.5 baris kedua, dilakukan proteksi dalam penambahan ruang ujian, yaitu melakukan pengecekan apabila nama yang dimasukkan ketika melakukan proses penambahan ruang ujian sama dengan nama ruang yang sudah ada di dalam database. Fungsi untuk mengecek nama ruang ujian yang sudah ada dapat dilihat pada Kode Program 4.6. Kode Program 4.6 Fungsi Cek Ruang Ujian 1. public boolean isexistruang(string nama) { 2. try { 3. ps = conn.preparestatement("select nama_ruang FROM t_ruang WHERE nama_ruang = '" + nama + "'"); 4. rs = ps.executequery(); 5. if (rs.next()) { 6. cek = true;} 7. } catch (SQLException ex) { 8. Logger.getLogger(Method_List.class.getName()).log(Level.SEVER E, null, ex); 9. } finally { 10. try { ps.close(); rs.close(); conn.close(); 11. } catch (SQLException ex) { 12. Logger.getLogger(Method_List.class.getName()).log(Level.SEVER E, null, ex); 13. }} return cek; }

67 Fungsi pada Kode Program 4.6 akan mengembalikan nilai true apabila nama ruang yang ada pada parameter fungsi sudah ada di dalam database, dan false apabila nama ruang tidak ada di dalam database. Apabila nilai kembalian bernilai true, maka fungsi penambahan ruang tidak dapat dilakukan, sedangkan apabila kembalian bernilai false, maka fungsi penambahan ruang dapat dilakukan. Selanjutnya adalah halaman penambahan jadwal dosen. Tampilan dari halaman penambahan jadwal dosen dapat dilihat pada Gambar 4.6. Gambar 4.6 Halaman Penambahan Jadwal Dosen Halaman penambahan jadwal dosen menggunakan fungsi penambahan data tanggal. Fungsi yang digunakan sama dengan fungsi penambahan tanggal ujian. Yang membedakan adalah parameter yang digunakan, yaitu nama dosen, hari, dan waktu. Sedangkan untuk tabel tempatt penyimpanan data, digunakan tabel t_dosen yang menyimpan data jadwal dosen keseluruhan. Tampilan berikutnya adalah halaman penghapusan data. Data yang dihapus dalam halaman ini adalah data tanggal ujian dan data skripsi. Fungsi yang digunakan adalah fungsi penghapusan data. Fungsi yang digunakan samaa dengan fungsi penghapusan pada

68 fungsi-fungsi sebelumnya. Untuk fungsi penghapusan tanggal ujian, akan menghapus semua data tanggal yang ada pada tabel t_tanggalujian, sedangkan fungsi penghapusan skripsi akan menghapus semua data skripsi yang ada pada tabel t_skripsi. Halaman penghapusan data dapat dilihat pada Gambar 4.7. Gambar 4.7 Halaman Penghapusan Data Tampilan selanjutnya adalah halaman pengaturan dosen. Pada halaman ini dapat dilihat daftar dosen FTI secara keseluruhan dan dosen-dosen yang termasuk ke dalam dosen penguji. Tampilan dari halaman pengaturan dosen dapat dilihat pada Gambar 4.8 dan Gambar 4.9. Gambar 4.8 Halaman Dosen Daftar Dosen FTI

69 Gambar 4.9 Halaman Dosen Daftar Dosen Penguji Fungsi yang digunakan dalam halaman pengaturan dosen ini adalah fungsi penambahan dosen menjadi dosen penguji, dan penghapusan dosen penguji dari daftar. Fungsi yang digunakan sama dengan fungsi sebelumnya, yang membedakan adalah tabel yang digunakan. Tabel yang digunakan pada halaman ini adalah tabel t_listdosen untuk mengambil daftar dosen secara keseluruhan dan tabel t_dosenpenguji sebagai penyimpanan data dosen penguji. Tampilan selanjutnya adalah halaman update dosen. Tampilan dari halaman ini dapat dilihat pada Gambar 4.10. Gambar 4.10 Halaman Update Dosen

70 Dalam halaman ini, terdapat beberapa fungsi yang digunakan dalam proses. Untuk penambahan maupun penghapusan kode dosen dan nama dosen, fungsi yang digunakan sama dengan fungsi sebelumnya. Perbedaannya terletak pada tempat penyimpanan data, yaitu pada tabel t_listdosen. Fungsi berikutnya adalah pengaturan tahun semester. Fungsi ini akan mengembalikan nilai boolean dimana akan bernilai true apabila proses update pada database berhasil dan sebaliknya, apabila proses update pada database gagal, maka akan mengembalikan nilai false. Fungsi ini dapat dilihat pada Kode Program 4.7. Kode Program 4.7 Fungsi Pengaturan Tahun Semester 1. public boolean settahunsemester(string tahun, String semester) { 2. try { 3. ps = conn.preparestatement("update t_thnsmt SET tahun = '" + tahun + "', semester = '" + semester + "' WHERE id = 1"); 4. if (ps.executeupdate() > 0) { 5. cek = true; 6. } 7. } catch (SQLException ex) { 8. Logger.getLogger(Method_Jadwal.class.getName()).log(Level.SEV ERE, null, ex); 9. } finally { 10. try { 11. ps.close(); 12. conn.close(); 13. } catch (SQLException ex) { 14. Logger.getLogger(Method_List.class.getName()).log(Level.SEVER E, null, ex); 15. } 16. } 17. return cek; 18. } Fungsi selanjutnya adalah fungsi yang digunakan untuk merefresh jadwal dosen yang diambil dari Web Service SIASAT. Dalam fungsi ini, yang pertama dilakukan adalah mengatur nama host dan port dari Web Service yang digunakan, sehingga sistem dapat berhubungan dengan Web Service SIASAT, seperti yang

71 ditunjukkan pada Kode Program 4.8 baris ke-1 dan ke-2. Proses berikutnya adalah menghapus data jadwal yang terdapat pada database untuk diisi dengan data yang baru. Fungsi ini ditunjukkan pada Kode Program 4.8 baris ke-8. Kode Program 4.8 Fungsi Ambil Data dari Web Service 1. System.setProperty("http.proxyHost", "services.uksw.edu"); 2. System.setProperty("http.proxyPort", "80"); 3. String kode = request.getparameter("kode"); 4. String thnsmt = new Method_Jadwal().getTahunSemester(); 5. try { 6. String x = getjadwalmengajar(kode, thnsmt, "admin67", "adm67pwd"); 7. if (!x.isempty()) { 8. new Method_List().deleteJadwalFromKode(kode); 9. new Method_List().readDataFromWS(x, kode); 10. request.setattribute("msg", "Jadwal telah di-refresh!"); 11. rd = request.getrequestdispatcher("./updatedosen"); 12. rd.include(request, response); 13. } else { 14. request.setattribute("msg", "Jadwal tidak ada!"); 15. rd = request.getrequestdispatcher("./updatedosen"); 16. rd.include(request, response); 17. } 18. } Fungsi getjadwalmengajar() pada baris ke-6 adalah fungsi yang diambil dari Web Service SIASAT. Fungsi ini dapat dilihat pada Kode Program 4.9. Kode Program 4.9 Fungsi Web Service 1. private static String getjadwalmengajar(java.lang.string kodedosen, java.lang.string tahunsem, java.lang.string useracc, java.lang.string pwd) { 2. org.kp.kpservice service = new org.kp.kpservice(); 3. org.kp.kpservicesoap port = service.getkpservicesoap(); 4. return port.getjadwalmengajar(kodedosen, tahunsem, useracc, pwd); 5. } Setelah data jadwal di database dihapus, fungsi akan menyimpan data yang baru yang diambil dari Web Service. Agar data yang diambil dapat disimpan dalam database, data dari Web Service harus dibaca terlebih dahulu. Berikut adalah fungsi untuk

72 membaca data yang diambil dari Web Service yang dapat dilihat pada Kode Program 4.10. Kode Program 4.10 Fungsi Baca Data dari Web Service 1. public void readdatafromws(string x, String kode) { 2. String[] jadwal = x.split("<>"); 3. for (int i = 0; i < jadwal.length; i++) { 4. String[] data = jadwal[i].split("\\ "); 5. String kode_mk = data[0]; 6. String nama_mk = data[1]; 7. String hari = data[2]; 8. String jam1 = data[3].substring(0, 2); 9. String jam2 = data[4].substring(0, 2); 10. String tempat = data[5]; 11. String jam = ""; 12. if (jam1.startswith("0")) { 13. jam1 = jam1.substring(1); 14. } 15. if (jam2.startswith("0")) { 16. jam2 = jam2.substring(1); 17. } 18. jam = jam1 + "-" + jam2; 19. New Method_List ().addjadwaldosen (kode, kode_mk, nama_mk, hari, jam, tempat); 20. } 21. } Fungsi pada Kode Program 4.10, untuk setiap jadwal dari masing-masing dosen, data akan disimpan satu-persatu ke dalam database pada tabel t_dosen, yaitu pada fungsi addjadwaldosen() di Kode Program 4.10 baris ke-19. Selanjutnya adalah halaman pengaturan tanggal. Fungsi yang digunakan dalam pengaturan tanggal adalah fungsi penambahan tanggal. Fungsi yang digunakan memiliki kesamaan dengan fungsi penambahan yang ada pada fungsi penambahan bidang minat. Yang membedakan adalah tabel yang digunakan untuk menyimpan data tanggal, yaitu tabel t_tanggalujian. Tampilan dari halaman pengaturan tanggal dapat dilihat pada Gambar 4.11.

73 Gambar 4.11 Halaman Pengaturan Tanggal Tampilan antarmuka selanjutnya adalah halaman pengaturan skripsi. Tampilan dari halaman pengaturan skripsi dapat dilihat pada Gambar 4.12. Gambar 4.12 Halaman Pengaturan Skripsi Halaman pengaturan skripsi memiliki dua fungsi yang dapat dilakukan, yaitu fungsi penambahan data skripsi dan penghapusan data. Fungsi penambahan dan penghapusan yang ada di halaman ini memiliki kemiripan dengan fungsi sebelumnya, yang membedakan adalah parameter dari fungsi serta tabel yang digunakan untuk penyimpanan data, yaitu tabel t_skripsi. Parameter yang digunakan untuk penambahan data yaitu, NIM, nama, judul, pembimbing 1, pembimbing 2 dan bidang minat.

74 Selanjutnya adalah antarmuka halaman pengaturan bidang minat. Tampilan dari halaman pengaturan bidang minat dapat dilihat pada Gambar 4.13. Gambar 4.13 Halaman Bidang Minat Fungsi yang digunakan dalam pengaturan bidang minat ini hampir sama dengan fungsi untuk pengaturan ruang ujian. Fungsi yang digunakan adalah fungsi penambahan bidang minat dan penghapusan bidang minat. Perbedaannya terletak pada tabel yang digunakan. Tabel yang digunakan dalam pengaturan bidang minat adalah tabel t_bidangminat. Proteksi yang dilakukan sama dengan proteksi dalam pengaturan ruang ujian. Berikutnya adalah halaman pengaturan bidang minat dosen. Bidang minat dari dosen ini akan dijadikan sebagai acuan untuk mendapatkan dosen penguji dari topik skripsi. Fungsi yang digunakan dalam pengaturan bidang minat dosen ini juga memiliki kemiripan dengan fungsi untuk pengaturan bidang minat dan pengaturan ruang, yaitu fungsi penambahan bidang minat dosen dan penghapusan bidang minat dosen. Perbedaan dari fungsinya terletak pada tabel yang digunakan. Tabel yang digunakan dalam pengaturan bidang minat dosen adalah tabel t_bidangminatdosen. Proteksi yang

75 dilakukan juga sama dengan proteksi untuk pengaturan bidang minat dan pengaturan ruang. Tampilan dari halaman pengaturan bidang minat dosen dapat dilihat pada Gambar 4.14. Gambar 4.14 Halaman Bidang Minat Dosen Bidang minat dosen digunakan sebagai parameter untuk perhitungan dalam metode TOPSIS untuk mendapatkan dosen penguji terbaik untuk setiap dilakukan adalah membuat matriks dari nilai alternatif masing- masing kriteria dan membuat matriks ternormalisasi. Fungsi ini dapat dilihat pada Kode Program 4.11. topik skripsi. Tahap pertama yang Kode Program 4.11 Matriks Nilai dan Matriks Ternormalisasi 1. double[][] matrix = new double[totalpenguji][kriteria]; int idx = 2; 2. for (int j = 0; j < totalpenguji; j++) { 3. for (int k = 0; k < kriteria; k++) { 4. matrix[j][k] = Double.parseDouble(penguji.get(idx).toString()); 5. idx += 3; } 6. double[][] matrixnormal = new double[totalpenguji][kriteria]; 7. double total = 0; 8. for (int k = 0; k < kriteria; k++) { 9. for (int l = 0; l < totalpenguji; l++) { 10. total += Math.pow(matrix[l][k], 2); } 11. for (int j = 0; j < totalpenguji; j++) { 12. matrixnormal[j][k] = matrix[j][k] / Math.sqrt(total);} 13. total = 0;}

76 Tahap selanjutnya adalah mencari solusi ideal positif dan solusi ideal negatif. Fungsi perhitungan ini dapat dilihat pada Kode Program 4.12. Kode Program 4.12 Solusi Ideal Positif dan Negatif 1. double max = 0; List solusipositif = new ArrayList(); 2. for (int k = 0; k < kriteria; k++) { 3. for (int j = 0; j < totalpenguji; j++) { 4. if (matrixnormal[j][k] > max) { 5. max = matrixnormal[j][k]; } 6. }solusipositif.add(max); 7. max = 0; } double min = 0; 8. List solusinegatif = new ArrayList(); 9. double[] baris = new double[totalpenguji]; 10. for (int k = 0; k < kriteria; k++) { 11. for (int j = 0; j < totalpenguji; j++) { 12. baris[j] = matrixnormal[j][k]; } 13. for (int a = 0; a < baris.length - 1; a++) { 14. if (a == 0) { 15. min = Math.min(baris[a], baris[a + 1]); 16. } else { 17. min = Math.min(min, baris[a]); } 18. }solusinegatif.add(min); min = 0; } Setelah didapat solusi ideal positif dan negatif, tahap berikutnya adalah mencari jarak antara alternatif dengan solusi ideal positif dan negatif. Fungsi ini dapat dilihat pada Kode Program 4.13. Kode Program 4.13 Jarak Antara Alternatif dan Solusi Ideal 1. List jarakpositif = new ArrayList(); 2. for (int j = 0; j < totalpenguji; j++) { 3. for (int k = 0; k < kriteria; k++) { 4. total += Math.pow(matrixNormal[j][k] - Double.parseDouble(solusiPositif.get(k).toString()), 2); } 5. jarakpositif.add(math.sqrt(total)); 6. total = 0; } 7. List jaraknegatif = new ArrayList(); 8. for (int j = 0; j < totalpenguji; j++) { 9. for (int k = 0; k < kriteria; k++) { 10. total += Math.pow(matrixNormal[j][k] - Double.parseDouble(solusiNegatif.get(k).toString()), 2); } 11. jaraknegatif.add(math.sqrt(total)); total = 0; } Tahap akhir dari metode TOPSIS ini adalah menentukan nilai preferensi dari masing-masing alternatif. Setelah nilai preferensi didapat, nilai tersebut diurutkan dari nilai terbesar hingga yang paling kecil untuk mendapatkan dosen penguji yang terbaik. Fungsi ini dapat dilihat pada Kode Program 4.14.

77 Kode Program 4.14 Nilai Preferensi 1. List nilai = new ArrayList(); 2. for (int j = 0; j < totalpenguji; j++) { 3. nilai.add(double.parsedouble(jaraknegatif.get(j).tostring()) / (Double.parseDouble(jarakNegatif.get(j).toString()) + Double.parseDouble(jarakPositif.get(j).toString()))); } 4. List urutawal = new ArrayList(); List urutakhir = new ArrayList(); 5. for (int j = 0; j < totalpenguji; j++) { 6. urutawal.add(distinctpenguji.get(j)); 7. urutawal.add(nilai.get(j)); } 8. while (!urutawal.isempty()) { 9. int a = 0; 10. for (int j = 0; j < urutawal.size() / 2; j++) { 11. if (j == 0) { 12. max = Double.parseDouble(urutAwal.get(a + 1).toString()); 13. } else if (urutawal.size() == 2) { 14. urutakhir.add(urutawal.get(0)); 15. urutakhir.add(urutawal.get(1)); 16. urutawal.remove(1); 17. urutawal.remove(0); 18. break; 19. } else { 20. max = Math.max(max, Double.parseDouble(urutAwal.get(a + 1).toString())); } 21. a += 2; } 22. int ind = urutawal.indexof(max); 23. urutakhir.add(urutawal.get(ind - 1)); 24. urutakhir.add(urutawal.get(ind)); 25. urutawal.remove(ind - 1); 26. urutawal.remove(ind - 1); } Setelah didapatkan dosen penguji untuk masing-masing topik skripsi, proses selanjutnya adalah mencari hari dan sesi ujian yang bisa dilakukan oleh dosen pembimbing dan penguji untuk skripsi tersebut. Untuk membuat sebuah jadwal ujian, sistem harus dapat menentukan waktu ujian dimana tidak ada konflik antara jadwal dosen pembimbing dan penguji. Fungsi ini dapat dilihat pada Kode Program 4.15.

78 Kode Program 4.15 Fungsi Pencarian Hari dan Sesi Ujian 1. public boolean cekjadwalujian(list jadwalujian, List dosen) { 2. int j = 0; List bisatidak = new ArrayList(); 3. if (jadwalujian.get(j + 5).toString().equals( 1 )) { 4. return cek = true; 5. } else { 6. for (int k = 0; k < dosen.size(); k += 4) { 7. if (k == 20) { 8. break; } 9. String hr = (String) dosen.get(k + 2); 10. String jam = (String) dosen.get(k + 3); 11. String[] jadwal = (jam.split( - )); 12. int awal = Integer.parseInt(jadwal[0]); 13. int akhir = Integer.parseInt(jadwal[1]); 14. int[] jdwldosen = new int[jadwal.length]; 15. for (int l = 0; l <= (akhir awal); l++) { 16. jdwldosen[l] = awal; awal++; } 17. for (int x1 = (int) Double.parseDouble(jadwalUjian.get(j + 3).toString()); x1 <= (int) Double.parseDouble(jadwalUjian.get(j + 4).toString()); x1++) { 18. for (int y = 0; y < jadwal.length; y++) { 19. if (jdwldosen[y] == x1 && hr.equals(jadwalujian.get(j + 1))) { 20. bisatidak.add( tidak ); 21. } else { 22. bisatidak.add( bisa ); }}} 23. for (int I = 0; I < bisatidak.size(); i++) { 24. if (bisatidak.get(i).tostring().equals( tidak )) { 25. cek = true; 26. break; }}}} return cek;} Dari fungsi yang dilihat pada Kode Program 4.15, fungsi akan mengembalikan nilai boolean, yaitu true apabila jadwal dosen tidak bisa atau terdapat konflik pada hari dan sesi tertentu, dan false apabila semua dosen bisa menghadiri ujian pada hari dan sesi tertentu. Setelah dosen penguji, hari, dan sesi ujian ditemukan, data tersebut akan disimpan ke dalam database. Fungsi yang digunakan sama dengan fungsi penambahan data yang terdapat pada fungsifungsi penambahan sebelumnya, yang membedakan adalah tabel yang digunakan untuk penyimpanan data, yaitu tabel t_jadwalujian. Pembuatan jadwal ujian dapat dilakukan apabila langkahlangkah tersebut telah terpenuhi. Dosen penguji yang didapat juga

79 terdapat alternatif apabila dosen penguji yang telah ditentukan tidak bisa hadir dalam ujian. Halaman jadwal ujian dapat dilihat pada Gambar 4.15. Gambar 4.15 Halaman Jadwal Ujian Halaman ini adalah proses akhir dari sistem, yang akan menampilkan tabel yang berisii jadwal ujian yang terbentuk. Jadwal yang terbentuk dibuat berdasarkan data-data yang telah dimasukkan sebelumnya. Data jadwal ujian yang telah terbentuk, dapat dibuat laporan ke dalam bentuk file.xls. Laporan yang dibuat dapat berdasarkan seluruh jadwal yang terbentuk maupun berdasarkan dosen. Tampilan dari fungsi ini dapat dilihat pada Gambar 4.16. Gambar 4.16 Halaman Laporan

80 4.2 Software Testing Pengujian sistem dilakukan untuk memberikan penilaian terhadap jalannya sebuah sistem. Sistem yang dibuat dapat menghasilkan jadwal ujian dimana terdapat dosen penguji yang sesuai dengan masing-masing topik skripsi dan alternatif dari dosen penguji apabila dosen penguji yang telah ditetapkan tidak dapat menghadiri ujian. Pengujian selanjutnya yang dilakukan adalah melakukan perbandingan antara jadwal yang dibentuk oleh sistem dan jadwal yang dibentuk tanpa menggunakan sistem dalam satu periode ujian. Perbandingan antara kedua jadwal diambil persentase kemiripan dosen penguji pada jadwal yang dibentuk oleh sistem dengan jadwal yang dibentuk tanpa menggunakan sistem. Persentase yang didapat kemudian dijumlah dan dibagi sejumlah topik skripsi yang diujikan pada periode tersebut, sehingga didapatkan persentase kemiripan rata-rata. Pengujian yang dilakukan mendapatkan persentase kemiripan antara kedua jadwal sebanyak 33%.