Upload
vanthuan
View
231
Download
0
Embed Size (px)
Citation preview
61
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 AplikasiHasil dari aplikasi yang dibuat dari penelitian ini adalah men-
generate jadwal ujian dari masukan-masukan yang diberikan oleh
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
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 AplikasiHasil dari aplikasi yang dibuat dari penelitian ini adalah men-
generate jadwal ujian dari masukan-masukan yang diberikan oleh
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
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 AplikasiHasil dari aplikasi yang dibuat dari penelitian ini adalah men-
generate jadwal ujian dari masukan-masukan yang diberikan oleh
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
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
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
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
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
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 tempat 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 sama dengan fungsi penghapusan pada
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 tempat 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 sama dengan fungsi penghapusan pada
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 tempat 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 sama 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
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
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
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
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, Stringsemester) {
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 me-
refresh 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.Stringkodedosen, java.lang.String tahunsem, java.lang.Stringuseracc, 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.
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.
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
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
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 topik skripsi. Tahap pertama yang
dilakukan adalah membuat matriks dari nilai alternatif masing-
masing kriteria dan membuat matriks ternormalisasi. Fungsi ini
dapat dilihat pada Kode Program 4.11.Kode Program 4.11 Matriks Nilai dan Matriks Ternormalisasi
1. double[][] matrix = new double[totalPenguji][kriteria]; intidx = 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;}
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 topik skripsi. Tahap pertama yang
dilakukan adalah membuat matriks dari nilai alternatif masing-
masing kriteria dan membuat matriks ternormalisasi. Fungsi ini
dapat dilihat pada Kode Program 4.11.Kode Program 4.11 Matriks Nilai dan Matriks Ternormalisasi
1. double[][] matrix = new double[totalPenguji][kriteria]; intidx = 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;}
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 topik skripsi. Tahap pertama yang
dilakukan adalah membuat matriks dari nilai alternatif masing-
masing kriteria dan membuat matriks ternormalisasi. Fungsi ini
dapat dilihat pada Kode Program 4.11.Kode Program 4.11 Matriks Nilai dan Matriks Ternormalisasi
1. double[][] matrix = new double[totalPenguji][kriteria]; intidx = 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 = newArrayList();
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 fungsi-
fungsi penambahan sebelumnya, yang membedakan adalah tabel
yang digunakan untuk penyimpanan data, yaitu tabel t_jadwalujian.
Pembuatan jadwal ujian dapat dilakukan apabila langkah-
langkah 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 berisi 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
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 berisi 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
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 berisi 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 TestingPengujian 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%.