Implementasi User Interface. Implementasi.

4.1.3. Implementasi User Interface.

Tahap-tahap yang harus dilakukan oleh pengguna sebelum membuat penjadwalan yaitu kelola data penjadwalan, buat jadwal kuliah, lihat jadwal. 4.1.4.1.Kelola DataBase. Langkah pertama yang harus dilakukan penguna adalah masuk ke halaman awalberanda. Kemudian pilih Kelola Database Kelola data Penjadwalan. Aplikasi akan menampilkan halaman kelola data matakuliah, dosen, dan ruang kepada pengguna. Gambar 4. 1 Halaman AwalBeranda A. Kelola Data Matakuliah. Kelola Data Matakuliah yaitu sebuah halaman yang terdapat proses tambah, edit, hapus, dan lihat data matakuliah. Data matakuliah terdiri dari : kode matakuliah, nama matakuliah, jumlah SKS, jumlah Jam Pertemuan, semester, dan jenis matakuliah teoripraktikum. 1. Cara menambah matakuliah. Isi data matakuliah secara lengkap. Kemudian klik tombol simpan. Gambar 4. 2 menambah matakuliah Kode program yang digunakan untuk menambah matakuliah : Jika berhasil tersimpan maka akan muncul pemberitahuan berhasil tersimpan. Gambar 4. 3 pemberitahuan berhasil. 2. Cara mengedit matakuliah. public void tambahMataKuliahMatakuliah matkul throws SQLException { PreparedStatement statement = null; connection.setAutoCommitfalse; String sql = insert into matakuliah id_matkul,kode_matakuliah,nama_matakuliah,jumlah_sks,semester,jenis,jp values?,?,?,?,?,?,?; statement = PreparedStatement connection.prepareStatementsql; statement.setString1, matkul.getIdMatKul; statement.setString2, matkul.getKodeMatKul; statement.setString3, matkul.getNamaMatKul; statement.setInt4, matkul.getJumlahSKS; statement.setInt5, matkul.getSemester; statement.setString6, matkul.getJenis; statement.setInt7, matkul.getJp; statement.executeUpdate; connection.commit; } Pilih tombol lihat table, terus pilih matakuliah yang ingin di edit dengan mengklik pada baris table, setelah itu silahkan ubah data, kemudian klik tombol update. - Lihat table. Gambar 4. 4 list matakuliah - Update. Gambar 4. 5 update matakuliah Kode program yang digunakan untuk edit matakuliah : - Pemberitahuan telah ter-update Gambar 4. 6 pemberitahuan ter- update 3. Cara menghapus matakuliah. public void updateMataKuliahMatakuliah matkul throws SQLException { PreparedStatement statement = null; connection.setAutoCommitfalse; String sql = update matakuliah set nama_matakuliah =?,jumlah_sks=?,jp=?, semester=?,jenis=? where id_matkul=?; statement = PreparedStatement connection.prepareStatementsql; statement.setString6, matkul.getIdMatKul; statement.setString1, matkul.getNamaMatKul; statement.setInt2, matkul.getJumlahSKS; statement.setInt3, matkul.getJp; statement.setInt4, matkul.getSemester; statement.setString5, matkul.getJenis; statement.executeUpdate; connection.commit; } Pilih tombol lihat table, terus pilih matakuliah yang ingin di hapus dengan mengklik pada baris table, kemudian klik tombol hapus. - Lihat table. Gambar 4. 7 list matakuliah - Klik tombol hapus. Gambar 4. 8 hapus matakuliah Kode program yang digunakan untuk hapus matakuliah : - Pemberitahuan berhasil dihapus. Gambar 4. 9 pemberitahuan terhapus 4. Cara melihat matakuliah. Klik tombol lihat table, maka akan muncul seluruh data matakuliah. public void hapusMataKuliahString kode_makul throws SQLException { PreparedStatement statement = null; connection.setAutoCommitfalse; String sql = delete from + matakuliah where id_matkul=?; statement = PreparedStatement connection.prepareStatementsql; statement.setString1, kode_makul; statement.executeUpdate; connection.commit; connection.close; } Gambar 4. 10 list matakuliah Kode program yang digunakan untuk lihat matakuliah : public ListMatakuliah getAllMataKuliah throws SQLException { PreparedStatement psmt = null; ResultSet rset = null; connection.setAutoCommitfalse; String sql = select from matakuliah; psmt = PreparedStatement connection.prepareStatementsql; rset = psmt.executeQuery; ListMatakuliah matkul = new ArrayList; int no = 1; while rset.next { Matakuliah mk = new Matakuliah; mk.setIdno; mk.setIdMatKulrset.getString1; mk.setKodeMatKulrset.getString2; mk.setNamaMatKulrset.getString3; mk.setJumlahSKSrset.getInt4; mk.setJprset.getInt5; mk.setSemesterrset.getInt6; 5. Cara import Excel data matakuliah. Klik tombol import excel, kemudian pilih file excel 20032007. Dengan syarat file excel yang dipilih telah ditelah memenuhi dengan format yang telah dibuat. - Memilih file excel, klik tombol open. Gambar 4. 11 import excel matakuliah Kode program yang digunakan untuk import matakuliah : mk.setJenisrset.getString7; matkul.addmk; no++; } connection.commit; return matkul; } private void jButton1ActionPerformedjava.awt.event.ActionEvent evt { TODO add your handling code here: JFileChooser chooser = new JFileChooser; chooser.setFileSelectionModeJFileChooser.FILES_ONLY; chooser.setMultiSelectionEnabledfalse; FileNameExtensionFilter JExcelFilter = new FileNameExtensionFilterExcel 20032007, xls; chooser.setFileFilterJExcelFilter; chooser.setAcceptAllFileFilterUsedfalse; ListMatakuliah mk = new ArrayList; if chooser.showOpenDialogthis == JFileChooser.APPROVE_OPTION { try { File files = chooser.getSelectedFile; File fileExcel = new Filefiles.getPath; System.out.printlnfileExcel; Workbook w = Workbook.getWorkbookfileExcel; Ambil sheet pertama, nomer 0 menandakan sheet ke 1 Sheet sheet = w.getSheets[0]; String idMatkul = ; String KodeMatkul = ; String namaMatkul = ; int jumlahSKS = 0; int jp = 0; int sem = 0; String jenis = ; int kolom = 0; int cekJum = KontrolMataKuliah.getKoneksi.kodeotomatisSolusi; for int baris = 1; baris sheet.getRows; baris++ { idMatkul = M + cekJum + baris; KodeMatkul = sheet.getCellkolom, baris.getContents; namaMatkul = sheet.getCellkolom + 1, baris.getContents; jumlahSKS = new Integersheet.getCellkolom + 2, baris.getContents; jp = new Integersheet.getCellkolom + 3, baris.getContents; sem = new Integersheet.getCellkolom + 4, baris.getContents; jenis = sheet.getCellkolom + 5, baris.getContents; Matakuliah m = new MatakuliahidMatkul, KodeMatkul, namaMatkul, jumlahSKS, jp, sem, jenis; mk.addm; } if CekKodeMatkulmk = true { for int i = 0; i mk.size; i++ { idMatkul = mk.geti.getIdMatKul; KodeMatkul = mk.geti.getKodeMatKul; namaMatkul = mk.geti.getNamaMatKul; jumlahSKS = new Integermk.geti.getJumlahSKS; jp = new Integermk.geti.getJp; sem = new Integermk.geti.getSemester; jenis = mk.geti.getJenis; Matakuliah m = new MatakuliahidMatkul, KodeMatkul, namaMatkul, jumlahSKS, jp, sem, jenis; KontrolMataKuliah.getKoneksi.tambahMataKuliahm; } JOptionPane.showMessageDialogrootPane, Berhasil diImport; }} catch SQLException ex { ex.printStackTrace; } catch IOException | BiffException ex { }}} Pemberitahuan jika berhasil diimport. Gambar 4. 12 pemberitahuan berhasil di import. - Format excel data matakuliah. Gambar 4. 13 format excel matakuliah Catatan : Mengisi data dimulai dari baris ke 2. Kolom tetap seperti gambar diatas. B. Kelola Data Dosen. Kelola Data Dosen yaitu sebuah halaman yang terdapat proses tambah, edit, hapus, dan lihat data Dosen. Data Dosen terdiri dari : NIP dosen, nama dosen, dan status tetaptidak. 1. Cara menambah data dosen. Isi data dosen secara lengkap. Kemudian klik tombol simpan. Gambar 4. 14 menambah dosen Kode program yang digunakan untuk tambah dosen : Jika berhasil tersimpan maka akan muncul pemberitahuan berhasil tersimpan. public void tambahDosenDosen dsn throws SQLException { PreparedStatement statement = null; connection.setAutoCommitfalse; String sql = insert into Dosen values?,?,?; statement = PreparedStatement connection.prepareStatementsql; statement.setString1, dsn.getNIP; statement.setString2, dsn.getNamaDosen; statement.setString3, dsn.getStatus; statement.executeUpdate; connection.commit; } Gambar 4. 15 pemberitahuan berhasil ditambah 2. Cara mengedit data dosen. Pilih tombol lihat table, terus pilih data dosen yang ingin di edit dengan mengklik pada baris table, setelah itu silahkan ubah data, kemudian klik tombol update. - Lihat table. Gambar 4. 16 list dosen - Update. Gambar 4. 17 update dosen Kode program yang digunakan untuk edit dosen : - Pemberitahuan telah ter-update public void updateDosenDosen dsn throws SQLException { PreparedStatement statement = null; connection.setAutoCommitfalse; String sql = update dosen set nama_dosen =?,status=? where nip=?; statement = PreparedStatement connection.prepareStatementsql; statement.setString3, dsn.getNIP; statement.setString1, dsn.getNamaDosen; statement.setString2, dsn.getStatus; statement.executeUpdate; connection.commit; } Gambar 4. 18 pemberitahuan dosen ter- update 3. Cara menghapus data dosen. Pilih tombol lihat table, terus pilih data dosen yang ingin di hapus dengan mengklik pada baris table, kemudian klik tombol hapus. - Lihat table. Gambar 4. 19 list dosen - Klik tombol hapus. Gambar 4. 20 hapus dosen Kode program yang digunakan untuk hapus dosen : - Pemberitahuan berhasil dihapus. Gambar 4. 21 pemberitahuan terhapus public void hapusDosenDosen dsn throws SQLException { PreparedStatement statement = null; connection.setAutoCommitfalse; String sql = delete from + dosen where nip=?; statement = PreparedStatement connection.prepareStatementsql; statement.setString1, dsn.getNIP; statement.executeUpdate; connection.commit; } 4. Cara melihat data dosen. Klik tombol lihat table, maka akan muncul seluruh data dosen. Gambar 4. 22 list dosen Kode program yang digunakan untuk lihat dosen : 5. Cara import Excel data dosen. Klik tombol import excel, kemudian pilih file excel 20032007. Dengan syarat file excel yang dipilih telah ditelah memenuhi dengan format yang telah dibuat. public ListDosen getAllDosen throws SQLException { PreparedStatement psmt = null; ResultSet rset = null; connection.setAutoCommitfalse; String sql = select Nip, nama_dosen, status, substringNip,2 1 as urut from dosen order by urut asc; psmt = PreparedStatement connection.prepareStatementsql; rset = psmt.executeQuery; ListDosen dsn = new ArrayList; int no = 1; while rset.next { Dosen ds = new Dosen; ds.setIdno; ds.setNIPrset.getString1; ds.setNamaDosenrset.getString2; ds.setStatusrset.getString3; dsn.addds; no++; } connection.commit; return dsn; } - Memilih file excel, klik tombol open. Gambar 4. 23 import excel dosen. Kode program yang digunakan untuk import dosen : private void jToggleButton1ActionPerformedjava.awt.event.ActionEvent evt { JFileChooser chooser = new JFileChooser; chooser.setFileSelectionModeJFileChooser.FILES_ONLY; chooser.setMultiSelectionEnabledfalse; FileNameExtensionFilter JExcelFilter = new FileNameExtensionFilterExcel 20032007, xls; chooser.setFileFilterJExcelFilter; chooser.setAcceptAllFileFilterUsedfalse; ListDosen dsn = new ArrayList; if chooser.showOpenDialogthis == JFileChooser.APPROVE_OPTION { try { File files = chooser.getSelectedFile; File fileExcel = new Filefiles.getPath; System.out.printlnfileExcel; Workbook w = Workbook.getWorkbookfileExcel; Ambil sheet pertama, nomer 0 menandakan sheet ke 1 Sheet sheet = w.getSheets[0]; String nip = ; String dosen = ; String status = ; int kolom = 0; for int baris = 1; baris sheet.getRows; baris++ { nip = sheet.getCellkolom, baris.getContents; dosen = sheet.getCellkolom + 1, baris.getContents; status = sheet.getCellkolom + 2, baris.getContents; Dosen d = new Dosennip, dosen, status; dsn.addd; } if CekNIpdsn = true { for int i = 0; i dsn.size; i++ { Dosen d = new Dosendsn.geti.getNIP, dsn.geti.getNamaDosen, dsn.geti.getStatus; KontrolDosen.getKoneksi.tambahDosend; } JOptionPane.showMessageDialogrootPane, Berhasil diImport; } } catch SQLException ex { ex.printStackTrace; } catch IOException | BiffException ex { } } } Pemberitahuan jika berhasil diimport. Gambar 4. 24 pemberitahuan berhasil di import. - Format excel data dosen. Gambar 4. 25 format excel dosen Catatan : Mengisi data dimulai dari baris ke 2. Kolom tetap seperti gambar diatas. C. Kelola Data Ruang. Kelola Data Ruang adalah proses tambah, edit, hapus, dan lihat data Ruang. Data ruang terdiri dari : kode ruang, nama ruang, kapasitas, dan jenis ruang teoripraktikum. 1. Cara menambah data ruang. Isi data ruang secara lengkap. Kemudian klik tombol simpan. Gambar 4. 26 menambah ruang Kode program yang digunakan untuk tambah ruang : Jika berhasil tersimpan maka akan muncul pemberitahuan berhasil tersimpan. Gambar 4. 27 pemberitahuan berhasil ditambah 2. Cara mengedit data ruang. Pilih tombol lihat table, terus pilih data ruang yang ingin di edit dengan mengklik pada baris table, setelah itu silahkan ubah data, kemudian klik tombol update. - Lihat table. public void tambahRuangRuang r throws SQLException { PreparedStatement statement = null; connection.setAutoCommitfalse; String sql = insert into ruang values?,?,?,?; statement = PreparedStatement connection.prepareStatementsql; statement.setString1, r.getKodeRuang; statement.setString2, r.getRuang; statement.setInt3, r.getKapasitas; statement.setString4, r.getJenis; statement.executeUpdate; connection.commit; } Gambar 4. 28 list ruang - Update. Gambar 4. 29 update ruang Kode program yang digunakan untuk edit ruang : - Pemberitahuan telah ter-update Gambar 4. 30 pemberitahuan ter- update 3. Cara menghapus matakuliah. Pilih tombol lihat table, terus pilih matakuliah yang ingin di hapus dengan mengklik pada baris table, kemudian klik tombol hapus. - Lihat table. public void updateRuangRuang r throws SQLException { PreparedStatement statement = null; connection.setAutoCommitfalse; String sql = update ruang set nama_ruang =?,kapasitas=?,jenis=? where kode_ruang=?; statement = PreparedStatement connection.prepareStatementsql; statement.setString4, r.getKodeRuang; statement.setString3, r.getJenis; statement.setString1, r.getRuang; statement.setInt2, r.getKapasitas; statement.executeUpdate; connection.commit; } Gambar 4. 31 list ruang - Klik tombol hapus. Gambar 4. 32 hapus ruang Kode program yang digunakan untuk hapus ruang : - Pemberitahuan berhasil dihapus. Gambar 4. 33 pemberitahuan terhapus 4. Cara melihat data ruang. Klik tombol lihat table, maka akan muncul seluruh data ruang. Gambar 4. 34 list ruang Kode program yang digunakan untuk lihat ruang : public void hapusRuangRuang r throws SQLException { PreparedStatement statement = null; connection.setAutoCommitfalse; String sql = delete from + ruang where kode_ruang=?; statement = PreparedStatement connection.prepareStatementsql; statement.setString1, r.getKodeRuang; statement.executeUpdate; connection.commit; } 5. Cara import Excel data ruang. Klik tombol import excel, kemudian pilih file excel 20032007. Dengan syarat file excel yang dipilih telah ditelah memenuhi dengan format yang telah dibuat. - Memilih file excel, klik tombol open. public ListRuang getAllRuangSemua throws SQLException { PreparedStatement psmt = null; ResultSet rset = null; connection.setAutoCommitfalse; String sql = select from ruang order by nama_ruang ; psmt = PreparedStatement connection.prepareStatementsql; rset = psmt.executeQuery; ListRuang rg = new ArrayList; int no = 1; while rset.next { Ruang r = new Ruang; r.setIdno; r.setKodeRuangrset.getString1; r.setRuangrset.getString2; r.setKapasitasrset.getInt3; r.setJenisrset.getString4; rg.addr; no++; } connection.commit; return rg; } Gambar 4. 35 import excel ruang Kode program yang digunakan untuk import ruang : private void jToggleButton1ActionPerformedjava.awt.event.ActionEvent evt { JFileChooser chooser = new JFileChooser; chooser.setFileSelectionModeJFileChooser.FILES_ONLY; chooser.setMultiSelectionEnabledfalse; FileNameExtensionFilter JExcelFilter = new FileNameExtensionFilterExcel 20032007, xls; chooser.setFileFilterJExcelFilter; chooser.setAcceptAllFileFilterUsedfalse; ListRuang rg = new ArrayList; if chooser.showOpenDialogthis == JFileChooser.APPROVE_OPTION { try { File files = chooser.getSelectedFile; File fileExcel = new Filefiles.getPath; System.out.printlnfileExcel; Workbook w = Workbook.getWorkbookfileExcel; Ambil sheet pertama, nomer 0 menandakan sheet ke 1 Sheet sheet = w.getSheets[0]; String kode = ; String ruang = ; int kapasitas = 0; String jenis = ; int kolom = 0; for int baris = 1; baris sheet.getRows; baris++ { kode = sheet.getCellkolom, baris.getContents; ruang = sheet.getCellkolom + 1, baris.getContents; kapasitas = new Integersheet.getCellkolom + 2, baris.getContents; jenis = sheet.getCellkolom + 3, baris.getContents; Ruang r = new Ruangkode, ruang, kapasitas, jenis; rg.addr; } if CekKodeRuangrg = true { for int i = 0; i rg.size; i++ { Ruang r = new Ruangrg.geti.getKodeRuang, rg.geti.getRuang, rg.geti.getKapasitas, rg.geti.getJenis; KontrolRuang.getKoneksi.tambahRuangr; } JOptionPane.showMessageDialogrootPane, Berhasil diImport; } Pemberitahuan jika berhasil diimport. Gambar 4. 36 pemberitahuan berhasildi import - Format excel data ruang. Gambar 4. 37 format excel ruang Catatan : Mengisi data dimulai dari baris ke 2. Kolom tetap seperti gambar diatas. D. Kelola Data Waktu dan Hari. Kelola Data Waktu adalah proses lihat data waktu dan hari. Tidak bisa ditambah ataupun diedit dan dihapus. Karena data tersebut sudah pasti yaitu waktu dibagi menjadi 4 slot yaitu slot 1 07.00-10.00, slot 2 10.00- 13.00, slot 3 13.00-16.00, dan slot 4 16.00-19.00. kemudian hari yang digunakan senin sampai jumat hanya 5 hari. Gambar 4. 38 waktu dan hari Kode program yang digunakan untuk lihat waktu dan hari : public ListHari getAllHari throws SQLException { PreparedStatement psmt = null; ResultSet rset = null; connection.setAutoCommitfalse; String sql = select from Hari; psmt = PreparedStatement connection.prepareStatementsql; rset = psmt.executeQuery; ListHari hr = new ArrayListHari; while rset.next { Hari h = new Hari; h.setKodeHarirset.getString1; h.setHarirset.getString2; public ListWaktu getAllWaktu throws SQLException { PreparedStatement psmt = null; ResultSet rset = null; connection.setAutoCommitfalse; String sql = select from Waktu; psmt = PreparedStatement connection.prepareStatementsql; rset = psmt.executeQuery; ListWaktu wkt = new ArrayList; while rset.next { Waktu w = new Waktu; w.setKodeWakturset.getString1; w.setJamrset.getString2; wkt.addw; } connection.commit; return wkt; } h.setHarirset.getString2; hr.addh; } connection.commit; return hr; } 4.1.4.2.Buat Jadwal Kuliah. Dalam membuat jadwal kuliah ada beberapa tahap yang harus dipenuhi. Pemilihan semester ganjilgenap, pemilihan matakuliah pada tingkat semester, pembagian kelas, pemilihan dosen pegampu, dan mengisi jadwal permintaan. 1. Proses Tahap 1. Proses Tahap 1 adalah proses pemilihan semester ganjil atau genap dan tahun ajarannya. Jika ganjil maka akan ditampilkan semester 1,3,5,7 dan jika genap 2,4,6,8. Gambar 4. 39 Proses Tahap 1 2. Proses Tahap 2. Proses Tahap 2 adalah proses pemilihan matakuliah apa saja yang akan digunakan pada semester 1 atau 2. jika belum ada maka bisa ditambah dan akan dibagi kedalam berapa kelas. Jika tidak digunakan maka bisa dihapus. Gambar 4. 40 Proses Tahap 2 Kode program yang digunakan untuk mengambil matakuliah berdasarkan semester : public ListMatakuliah getAllMataKuliahSemesterString semester throws SQLException { PreparedStatement psmt = null; ResultSet rset = null; connection.setAutoCommitfalse; String sql = select from matakuliah where semester=?; psmt = PreparedStatement connection.prepareStatementsql; psmt.setString1, semester; rset = psmt.executeQuery; ListMatakuliah matkul = new ArrayList; int no = 1; while rset.next { Matakuliah mk = new Matakuliah; mk.setIdno; mk.setIdMatKulrset.getString1; Jika ditambah, maka akan muncul halaman penambahan matakuliah seperti berikut. Gambar 4. 41 penambahan matakuliah mk.setKodeMatKulrset.getString2; mk.setNamaMatKulrset.getString3; mk.setJumlahSKSrset.getInt4; mk.setJprset.getInt5; mk.setSemesterrset.getInt6; mk.setJenisrset.getString7; matkul.addmk; no++; } connection.commit; return matkul; } Jika sudah selesai dan matakuliah sudah terpilih. Pada menu selanjutnya akan ada konfirmasi untuk menyakinkan pengguna. Gambar 4. 42 konfirmasi matakuliah Setelah melewati konfirmasi, akan muncul halaman pembagian kelas. Gambar 4. 43 pembagian kelas Kode program yang digunakan untuk menambah kelas matakuliah : Kemudian akan muncul konfirmasi untuk pembagian kelas untuk memastikan pengguna. String tahunAjaran = matkul.getTahunAjaran; String sql = insert into kelasmatakuliah kodekm,id_matkul,kelas,kodedosen,tahun_ajaran values?,?,?,?,?; statement = PreparedStatement connection.prepareStatementsql; statement.setString1, matkul.getKodeKM; statement.setString2, makul; statement.setString3, matkul.getKelas; statement.setString4, kodedsn; statement.setString5, tahunAjaran; statement.executeUpdate; connection.commit; } public void tambahKelasMataKuliahKelasMatakuliah matkul throws SQLException { PreparedStatement statement = null; connection.setAutoCommitfalse; Matakuliah mk = matkul.getId_matkul; String makul = mk.getIdMatKul; Dosen ds = matkul.getKodeDosen; String kodedsn = ds.getNIP; Gambar 4. 44 konfirmasi pembagian kelas 3. Proses Tahap 3. Proses Tahap 3 adalah proses penentuan dosen pegampu kelas matakuliah dari semester 1 atau 2. Dalam memilih pegampu langsung klik dibaris tabel kelas matakuliah tersebut. Setelah selesai maka dapat melanjutkan ke selanjutnya dengan syarat semua kelas matakuliah sudah memiliki dosen pegampu. Gambar 4. 45 Proses Tahap 3 Kode program yang digunakan untuk mengambil kelas matakuliah : public ListKelasMatakuliah getAllKelasMataKuliahSemesterString semester throws SQLException { PreparedStatement psmt = null; ResultSet rset = null; connection.setAutoCommitfalse; String sql = select km.kodekm,m.id_matkul,km.kelas,km.kodedosen, + m.nama_matakuliah,m.semester,m.jenis from kelasmatakuliah km,matakuliah m + where km.id_matkul=m.id_matkul and m.semester=? order by m.id_matkul,km.kelas; psmt = connection.prepareStatementsql; psmt.setString1, semester; rset = psmt.executeQuery; ListKelasMatakuliah km = new ArrayList; int no = 1; while rset.next { KelasMatakuliah kelasmatkul = new KelasMatakuliah; Matakuliah matkul = new Matakuliah; matkul.setIdMatKulrset.getString2; matkul.setNamaMatKulrset.getString5; matkul.setSemesterrset.getInt6; matkul.setJenisrset.getString7; Dosen dosen = new Dosen; dosen.setNIPrset.getString4; Dosen dsn = KontrolDosen.getKoneksi.getAllDosenKodedosen.getNIP; dosen.setNamaDosendsn.getNamaDosen; kelasmatkul.setIdno; kelasmatkul.setKodeKMrset.getString1; kelasmatkul.setId_matkulmatkul; kelasmatkul.setKelasrset.getString3; kelasmatkul.setKodeDosendosen; km.addkelasmatkul; no++; } connection.commit; return km; } Pada saat baris table diklik maka akan muncul halaman pemilihan dosen seperti berikut ini. Gambar 4. 46 Memilih Dosen Pegampu 4. Proses Tahap 4. Proses Tahap 3 adalah proses pemilihan matakuliah apa saja yang akan digunakan pada semester 3 atau 4. jika belum ada maka bisa ditambah dan akan dibagi kedalam berapa kelas. Jika tidak digunakan maka bisa dihapus. Gambar 4. 47 Proses Tahap 4 Jika ditambah, maka akan muncul halaman penambahan matakuliah seperti berikut. Gambar 4. 48 Penambahan Matakuliah Jika sudah selesai dan matakuliah sudah terpilih. Pada menu selanjutnya akan ada konfirmasi untuk menyakinkan pengguna. Gambar 4. 49 Konfirmasi matakuliah Setelah melewati konfirmasi, akan muncul halaman pembagian kelas. Gambar 4. 50 Pembagian Kelas Kemudian akan muncul konfirmasi untuk pembagian kelas untuk memastikan pengguna. Gambar 4. 51 Konfirmasi pembagian kelas 5. Proses Tahap 5. Proses Tahap 5 adalah proses penentuan dosen pegampu kelas matakuliah dari semester 3 atau 4. Dalam memilih pegampu langsung klik dibaris tabel kelas matakuliah tersebut. Setelah selesai maka dapat melanjutkan ke selanjutnya dengan syarat semua kelas matakuliah sudah memiliki dosen pegampu. Gambar 4. 52 Proses Tahap 5 Pada saat baris table diklik maka akan muncul halaman pemilihan dosen seperti berikut ini. Gambar 4. 53 Memilih Dosen Pegampu 6. Proses Tahap 6. Proses Tahap 6 adalah proses pemilihan matakuliah apa saja yang akan digunakan pada semester 5 atau 6. jika belum ada maka bisa ditambah dan akan dibagi kedalam berapa kelas. Jika tidak digunakan maka bisa dihapus. Gambar 4. 54 Proses Tahap 6 Jika ditambah, maka akan muncul halaman penambahan matakuliah seperti berikut. Gambar 4. 55 Penambahan Matakuliah Jika sudah selesai dan matakuliah sudah terpilih. Pada menu selanjutnya akan ada konfirmasi untuk menyakinkan pengguna. Gambar 4. 56 Konfirmasi matakuliah Setelah melewati konfirmasi, akan muncul halaman pembagian kelas. Gambar 4. 57 Pembagian Kelas Kemudian akan muncul konfirmasi untuk pembagian kelas untuk memastikan pengguna. Gambar 4. 58 Konfirmasi pembagian kelas 7. Proses Tahap 7. Proses Tahap 7 adalah proses penentuan dosen pegampu kelas matakuliah dari semester 5 atau 6. Dalam memilih pegampu langsung klik dibaris tabel kelas matakuliah tersebut. Setelah selesai maka dapat melanjutkan ke selanjutnya dengan syarat semua kelas matakuliah sudah memiliki dosen pegampu. Gambar 4. 59 Proses tahap 7 Pada saat baris table diklik maka akan muncul halaman pemilihan dosen seperti berikut ini. Gambar 4. 60 Memilih Dosen Pegampu 8. Proses Tahap 8. Proses Tahap 8 adalah proses pemilihan matakuliah apa saja yang akan digunakan pada semester 7 atau 8. jika belum ada maka bisa ditambah dan akan dibagi kedalam berapa kelas. Jika tidak digunakan maka bisa dihapus. Gambar 4. 61 Proses tahap 8 Jika ditambah, maka akan muncul halaman penambahan matakuliah seperti berikut. Gambar 4. 62 Penambahan Matakuliah Jika sudah selesai dan matakuliah sudah terpilih. Pada menu selanjutnya akan ada konfirmasi untuk menyakinkan pengguna. Gambar 4. 63 Konfirmasi matakuliah Setelah melewati konfirmasi, akan muncul halaman pembagian kelas. Gambar 4. 64 Pembagian Kelas Kemudian akan muncul konfirmasi untuk pembagian kelas untuk memastikan pengguna. Gambar 4. 65 Konfirmasi pembagian kelas 9. Proses Tahap 9. Proses Tahap 9 adalah proses penentuan dosen pegampu kelas matakuliah dari semester 7 atau 8. Dalam memilih pegampu langsung klik dibaris tabel kelas matakuliah tersebut. Setelah selesai maka dapat melanjutkan ke selanjutnya dengan syarat semua kelas matakuliah sudah memiliki dosen pegampu. Gambar 4. 66 proses tahap 9 Pada saat baris table diklik maka akan muncul halaman pemilihan dosen seperti berikut ini. Gambar 4. 67 Memilih Dosen Pegampu 10. Proses Tahap 10. Pada proses tahap 10 ini akan diminta mengisikan jadwal permintaan. Pada tahap ini juga bisa dikosongkan jika tidak ada jadwal permintaan. Dalam mengisi jadwal permintaan ada 3 hal yang harus diperhatikan yaitu kelas matakuliah, permintaan waktu, dan ruang yang akan digunakan. Gambar 4. 68 Proses tahap 10 Kode program yang digunakan untuk tambah permintaan : public void tambahPermintaanJadwal solusi throws SQLException { PreparedStatement statement = null; connection.setAutoCommitfalse; KelasMatakuliah KM = solusi.getKodeKm; String kodeKM = KM.getKodeKM; TimeSlot ts = solusi.getKodeTimeSlot; String kodeTS = ts.getKodeTs; String kodesolusi = solusi.getKodeJadwal; Ruang rg = solusi.getKoderuang; 1. Dalam memilih kelas matakuliah maka pertama yang akan dipilih adalah siapa dosen pegampu matakuliah tersebut. Maka untuk selanjutnya akan memilih kelas matakuliah tersebut. Gambar 4. 69 Memilih Dosen pegampu kelas matakuliah Kemudian akan ditampilkan kelas mmatakuliah yang diampu oleh dosen tersebut. String sql = insert into permintaan kodesolusi,kelasmatakuliah, TimeSlot,ruang values?,?,?,?; statement = connection.prepareStatementsql; statement.setString1, kodesolusi; statement.setString2, kodeKM; statement.setString3, kodeTS; statement.setString4, koderuang; statement.executeUpdate; connection.commit; } Gambar 4. 70 Memilih kelas matakuliah 2. Memilih waktu permintaan. Gambar 4. 71 Memilih waktu permintaan 3. Memilih ruang yang akan digunakan. Gambar 4. 72 Memilih Ruang Setelah selesai mengisi ketiga hal tersebut maka selanjutnya tinggal meng- klik tombol tambah, maka jadwal permintaan telah tersimpan. Gambar 4. 73 penambahan jadwal permintaan Kemudian setelah semua permintaan sudah terisi, maka dapat melanjutkan ketahap berikutnya. Sebelum melanjutkan akan terdapat konfirmasi kepada pengguna. Gambar 4. 74 Konfirmasi jadwal permintaan 11. Proses Tahap 11. Ini adalah tahap akhir yaitu proses pembuatan jadwal kuliah, pada tahap ini pengguna hanya meng-klik tombol buat dan menunggu proses. Gambar 4. 75 Proses Tahap 11 Kode program yang digunakan untuk buat jadwal : public static void Simulated_EngineJProgressBar progres, JTextField jumPelangaran throws SQLException { MenetapkanJadwalAwal; int f_jadwalAwal = fungsiBiaya_jadwal_Awal; if f_jadwalAwal 0 { Inisialisasi_jadwalSkrg_dgn_jadwalAwal; Inisialisasi_jadwalTerbaik_dgn_jadwalSkrg; double suhu_awal = 5000; double alpha = 0.99; int iterasi = 3; while suhu_awal 0.01 { for int i = 0; i iterasi; i++ { ProsesPencarianJadwalBaru; int f_jadwalbaru = fungsibiaya_jadwalBaru; if f_jadwalbaru == 0 { Update_jadwalTerbaik_dgn_jadwalBaru; suhu_awal = 0.01; break; } else { int f_jadwalSkrg = fungsiBiaya_jadwal_sekarang.size; int delta_evaluation = f_jadwalbaru - f_jadwalSkrg; if delta_evaluation 0 { System.out.printlnMembaik; Update_jadwalSkrg_dgn_jadwalBaru; if fungsiBiaya_jadwal_baru.size fungsiBiaya_jadwal_terbaik.size { System.out.printlnSolusi terbaik; Update_jadwalTerbaik_dgn_jadwalBaru; } fungsiBiaya_jadwal_baru.removeAllfungsiBiaya_jadwal_baru; } else { double p = Math.exp-delta_evaluation suhu_awal; double r = Math.random; if rp { System.out.printlnTidak membaik, diterima dengan probalitas = + r + + p; Update_jadwalSkrg_dgn_jadwalBaru; } else { System.out.printlntidak diterima; cariSolusi_kembali_dari_jadwalSkrg; } fungsiBiaya_jadwal_baru.removeAllfungsiBiaya_jadwal_baru; } } } suhu_awal = alpha suhu_awal; System.out.printlnSuhu sekarang : + suhu_awal; membuat progress bar progres.setValue100 - fungsiBiaya_jadwal_terbaik.size; } System.out.printlnSelesai ; SimpanDatabase; System.out.printlnTersimpan dalam database; kosongkanSemuaLarik; } else { System.out.printlnSelesai tanpa proses SA ; SimpanDatabaseJadwalAwal; } } Setelah selesai maka akan muncul jendela pemberitahuan bahwa proses telah selesai. Gambar 4. 76 pemberitahuan pembuatan telah selesai 4.1.4.3.Lihat Jadwal Kuliah. Setelah proses pembuatan jadwal kuliah selesai maka jadwal kelas matakuliah dapat dilihat. Gambar 4. 77 Jadwal Kuliah Kode program yang digunakan untuk lihat jadwal : public ListSolusi getAllSolusi throws SQLException { PreparedStatement psmt = null; ResultSet rset = null; connection.setAutoCommitfalse; String sql = SELECT DISTINCTs.kodesolusi,km.kodekm,km.kelas, + m.id_matkul,m.kode_matakuliah,m.nama_matakuliah,m.jumlah_sks,M.JP, M.semester,m.jenis, + ts.kodets,hr.kode_hari,hr.hari,wkt.kode_waktu,wkt.jam,r.kode_ruang,r.nam a_ruang,dsn.nip,dsn.nama_dosen + FROM solusi s, kelasmatakuliah km, matakuliah m, dosen dsn, timeslot ts, waktu wkt,hari hr, ruang r + WHERE s.kelasmatakuliah=km.kodekm AND s.timeslot=ts.kodets AND s.ruang=r.kode_ruang AND km.id_matkul= m.id_matkul AND km.kodedosen=dsn.nip AND ts.kodewaktu=wkt.kode_waktu AND ts.kodehari=hr.kode_hari order by M.semester,m.id_matkul,km.kelas asc; psmt = connection.prepareStatementsql; rset = psmt.executeQuery; ListJadwal st = new ArrayList; int no = 1; while rset.next { Jadwal solusi = new Jadwal ; KelasMatakuliah kodeKm = new KelasMatakuliah; kodeKm.setKodeKMrset.getString2; kodeKm.setKelasrset.getString3; Matakuliah mk = new Matakuliah; mk.setIdMatKulrset.getString4; mk.setKodeMatKulrset.getString5; mk.setNamaMatKulrset.getString6; mk.setJumlahSKSrset.getInt7; mk.setJprset.getInt8; mk.setSemesterrset.getInt9; mk.setJenisrset.getString10; Dosen dsn = new Dosen; dsn.setNIPrset.getString18; dsn.setNamaDosenrset.getString19; kodeKm.setId_matkulmk; kodeKm.setKodeDosendsn; TimeSlot kodeTs = new TimeSlot; kodeTs.setKodeTsrset.getString11; Hari hr = new Hari; hr.setKodeHarirset.getString12; hr.setHarirset.getString13; Waktu wktu = new Waktu; wktu.setKodeWakturset.getString14; String W1SKS2 = 07.00-09.00 WIB; String W1SKS3 = 07.00-10.00 WIB; String W2SKS2 = 10.00-12.00 WIB; String W2SKS3 = 10.00-13.00 WIB; String W3SKS2 = 13.00-15.00 WIB; String W3SKS3 = 13.00-16.00 WIB; String W4SKS2 = 16.00-18.00 WIB; String W4SKS3 = 16.00-19.00 WIB; if rset.getString14.equalsIgnoreCaseW1 rset.getInt7 == 1 { wktu.setJamW1SKS2; } if rset.getString14.equalsIgnoreCaseW1 rset.getInt7 == 2 { wktu.setJamW1SKS2; } if rset.getString14.equalsIgnoreCaseW1 rset.getInt7 2 { wktu.setJamW1SKS3; } if rset.getString14.equalsIgnoreCaseW2 rset.getInt7 == 1 { wktu.setJamW2SKS2; } if rset.getString14.equalsIgnoreCaseW2 rset.getInt7 == 2 { wktu.setJamW2SKS2; } if rset.getString14.equalsIgnoreCaseW2 rset.getInt7 2 { wktu.setJamW2SKS3; } if rset.getString14.equalsIgnoreCaseW3 rset.getInt7 == 1 { wktu.setJamW3SKS2; } if rset.getString14.equalsIgnoreCaseW3 rset.getInt7 == 2 { wktu.setJamW3SKS2; } if rset.getString14.equalsIgnoreCaseW3 rset.getInt7 2 { wktu.setJamW3SKS3; } if rset.getString14.equalsIgnoreCaseW4 rset.getInt7 == 1 { wktu.setJamW4SKS2; } if rset.getString14.equalsIgnoreCaseW4 rset.getInt7 == 2 { wktu.setJamW4SKS2; } if rset.getString14.equalsIgnoreCaseW4 rset.getInt7 2 { wktu.setJamW4SKS3; } 4.1.4.4.Menu Bantuan. Gambar 4. 78 menu bantuan kodeTs.setKodeHarihr; kodeTs.setKodeWaktuwktu; Ruang ruang = new Ruang; ruang.setKodeRuangrset.getString16; ruang.setRuangrset.getString17; solusi.setKodeJadwalrset.getString1; solusi.setKodeTimeSlotkodeTs; solusi.setKodeKmkodeKm; solusi.setKoderuangruang; solusi.setIdno; st.addsolusi; no++; } connection.commit; return st; }

4.2. Pengujian. A. Data Pengujian.