• Tidak ada hasil yang ditemukan

4.1. Implementasi

4.1.3. Implementasi User Interface

4.1.4.2. Buat Jadwal Kuliah

Dalam membuat jadwal kuliah ada beberapa tahap yang harus

dipenuhi. Pemilihan semester (ganjil/genap), 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

Gambar 4. 40 Proses Tahap 2

Kode program yang digunakan untuk mengambil matakuliah berdasarkan semester :

public List<Matakuliah> getAllMataKuliahSemester(String semester) throws SQLException {

PreparedStatement psmt = null; ResultSet rset = null;

connection.setAutoCommit(false);

String sql = "select * from matakuliah where semester=?"; psmt = (PreparedStatement) connection.prepareStatement(sql); psmt.setString(1, semester);

rset = psmt.executeQuery();

List<Matakuliah> matkul = new ArrayList<>(); int no = 1;

while (rset.next()) {

Matakuliah mk = new Matakuliah(); mk.setId(no);

Jika ditambah, maka akan muncul halaman penambahan matakuliah

seperti berikut.

Gambar 4. 41 penambahan matakuliah mk.setKodeMatKul(rset.getString(2)); mk.setNamaMatKul(rset.getString(3)); mk.setJumlahSKS(rset.getInt(4)); mk.setJp(rset.getInt(5)); mk.setSemester(rset.getInt(6)); mk.setJenis(rset.getString(7)); matkul.add(mk); 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

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.prepareStatement(sql); statement.setString(1, matkul.getKodeKM()); statement.setString(2, makul); statement.setString(3, matkul.getKelas()); statement.setString(4, kodedsn); statement.setString(5, tahunAjaran); statement.executeUpdate(); connection.commit(); }

public void tambahKelasMataKuliah(KelasMatakuliah matkul) throws SQLException {

PreparedStatement statement = null; connection.setAutoCommit(false); 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

public List<KelasMatakuliah> getAllKelasMataKuliahSemester(String semester) throws SQLException {

PreparedStatement psmt = null; ResultSet rset = null;

connection.setAutoCommit(false);

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.prepareStatement(sql); psmt.setString(1, semester);

List<KelasMatakuliah> km = new ArrayList<>(); int no = 1;

while (rset.next()) {

KelasMatakuliah kelasmatkul = new KelasMatakuliah(); Matakuliah matkul = new Matakuliah();

matkul.setIdMatKul(rset.getString(2)); matkul.setNamaMatKul(rset.getString(5)); matkul.setSemester(rset.getInt(6)); matkul.setJenis(rset.getString(7)); Dosen dosen = new Dosen(); dosen.setNIP(rset.getString(4)); Dosen dsn = KontrolDosen.getKoneksi().getAllDosenKode(dosen.getNIP()); dosen.setNamaDosen(dsn.getNamaDosen()); kelasmatkul.setId(no); kelasmatkul.setKodeKM(rset.getString(1)); kelasmatkul.setId_matkul(matkul); kelasmatkul.setKelas(rset.getString(3)); kelasmatkul.setKodeDosen(dosen); km.add(kelasmatkul); 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.

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.

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.

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.

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

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

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

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

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

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 tambahPermintaan(Jadwal solusi) throws SQLException { PreparedStatement statement = null;

connection.setAutoCommit(false);

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.prepareStatement(sql); statement.setString(1, kodesolusi); statement.setString(2, kodeKM); statement.setString(3, kodeTS); statement.setString(4, 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.

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

Gambar 4. 75 Proses Tahap 11

public static void Simulated_Engine(JProgressBar 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.println("Membaik"); Update_jadwalSkrg_dgn_jadwalBaru(); if (fungsiBiaya_jadwal_baru.size() < fungsiBiaya_jadwal_terbaik.size()) { System.out.println("Solusi terbaik"); Update_jadwalTerbaik_dgn_jadwalBaru(); }

fungsiBiaya_jadwal_baru.removeAll(fungsiBiaya_jadwal_baru); } else {

double p = Math.exp((-delta_evaluation) / suhu_awal); double r = Math.random();

if (r<p) {

System.out.println("Tidak membaik, diterima dengan probalitas = " + r + " < " + p); Update_jadwalSkrg_dgn_jadwalBaru(); } else { System.out.println("tidak diterima"); cariSolusi_kembali_dari_jadwalSkrg(); } fungsiBiaya_jadwal_baru.removeAll(fungsiBiaya_jadwal_baru); } } }

suhu_awal = alpha * suhu_awal;

System.out.println("Suhu sekarang : " + suhu_awal); //membuat progress bar

progres.setValue((100 - fungsiBiaya_jadwal_terbaik.size())); }

System.out.println("Selesai !!! "); SimpanDatabase();

System.out.println("Tersimpan dalam database"); kosongkanSemuaLarik();

} else {

System.out.println("Selesai tanpa proses SA !!! "); SimpanDatabaseJadwalAwal();

Setelah selesai maka akan muncul jendela pemberitahuan bahwa proses telah selesai.

Gambar 4. 76 pemberitahuan pembuatan telah selesai

Dokumen terkait