Tabel KelasMataKuliah. Tabel Timeslot. Tabel Jadwal. Tabel Permintaan. Pengujian dengan menggunakan 13 ruang. Hasil pengujian disajikan dalam tabel 4.4 berikut :

Atribut Tipe data Panjang Primary key Not null KodeWaktu Varchar2 10   Jam Varchar2 50 

5. Tabel Ruang.

Atribut Tipe data Panjang Primary key Not null KodeRuang Varchar2 10   Ruang Varchar2 100  Kapasitas Number 10  Jenis Varchar2 50 

6. Tabel KelasMataKuliah.

Atribut Tipe data Panjang Primary key Foreign Key Not null KodeKM Varchar2 10   IDMatKul Varchar2 10   NIP Varchar2 10   Kelas Varchar2 5  Semester Varchar2 10 

7. Tabel Timeslot.

Atribut Tipe data Panjang Primary key Foreign Key Not null KodeTS Varchar2 10   KodeHari Varchar2 10   KodeWaktu Varchar2 10  

8. Tabel Jadwal.

Atribut Tipe data Panjang Primary key Foreign Key Not null KodeJadwal Varchar2 10   KodeKM Varchar2 10   KodeTS Varchar2 10   KodeRuang Varchar2 10  

9. Tabel Permintaan.

Atribut Tipe data Panjang Primary key Foreign Key Not null KodeJadwal Varchar2 10   KodeKM Varchar2 10   KodeTS Varchar2 10   KodeRuang Varchar2 10  

10. Tabel Pelanggaran.

Atribut Tipe data Panjang Primary key Foreign Key Not null KodePelanggaran Varchar2 10   KodeJadwal Varchar2 10   JenisPelanggaran Varchar2 10  

3.5.4. Desain Model Interaksi Antar Kelas.

Interaksi antar kelas merupakan bagan yang menjelaskan secara rinci langkah-langkah dari proses program secara logika. Berikut ini adalah Interaksi antar kelas dari program aplikasi Penjadwalan yang dibuat : 1. Tambah Matakuliah Pengguna Data Matakuliah Interface :Tampilan Data MataKuliah Kontrol :KontrolMataKuliah MataKuliah Tambah Matakuiah tambahMatakuliah Matakuliah tambahMatakuliahMatakuliah Data Matakuliah ditambah Data tidak lengkap 2. Edit MataKuliah 3. Hapus MataKuliah 4. Lihat MataKuliah Pengguna Pengguna Data Matakuliah Interface :Tampilan Data MataKuliah Kontrol :KontrolMataKuliah MataKuliah updateMatakuiah updateMatakuiah Matakuliah updateMatakuliah Matakuliah Data Matakuliah ter-Update Data tidak lengkap Data Matakuliah Interface :Tampilan Data MataKuliah Kontrol :KontrolMataKuliah MataKuliah HapusMatakuiah hapusMatakuiah Kodematkul hapusMatakuliah Kodematkul Data Matakuliah terhapus Kodematkul tidak ada 5. Tambah Dosen 6. Edit Dosen Pengguna Pengguna Data Matakuliah Interface :Tampilan Data MataKuliah Kontrol :KontrolMataKuliah MataKuliah Lihat Matakuliah getAllMataKuliah getAllMataKuliah Data Matakuliah Data masih Kosong Data Dosen Interface :Tampilan Data Dosen Kontrol :KontrolDosen Dosen Tambah Dosen tambahDosenDosen tambahDosenDosen Data Dosen ditambah Data tidak lengkap 7. Hapus Dosen 8. Lihat Dosen Pengguna Pengguna Data Dosen Interface :Tampilan Data Dosen Kontrol :KontrolDosen Dosen Edit Dosen updateDosenDosen updateDosenDosen Data Dosen ter-Update Data tidak lengkap Data Dosen Interface :Tampilan Data Dosen Kontrol :KontrolDosen Dosen Hapus Dosen hapusDosen NIP hapusDosenNIP Data Dosen terhapus NIP tidak ada 9. Tambah Ruang 10. Edit Ruang Pengguna Pengguna Data Dosen Interface :Tampilan Data Dosen Kontrol :KontrolDosen Dosen Lihat Dosen getAllDosen getAllDosen Data Dosen Data masih Kosong Data Ruang Interface :Tampilan Data Ruang Kontrol :KontrolRuang Ruang Tambah Ruang tambahRuangRuang tambahRuangRuang Data Ruang ditambah Data tidak lengkap 11. Hapus Ruang 12. Lihat Ruang Pengguna Pengguna Data Ruang Interface :Tampilan Data Ruang Kontrol :KontrolRuang Ruang Edit Ruang updateRuangRuang updateRuangRuang Data Ruang ter-Update Data tidak lengkap Data Ruang Interface :Tampilan Data Ruang Kontrol :KontrolRuang Ruang Hapus Ruang hapusRuangKodeRuang hapusRuangKodeRuang Data Ruang terhapus KodeRuang tidak ada 13. Lihat Waktu dan Hari Pengguna Pengguna Data Ruang Interface :Tampilan Data Ruang Kontrol :KontrolRuang Ruang Lihat Ruang getAllRuangSemua getAllRuangSemua Data Ruang Data masih Kosong Data Waktu Interface :Tampilan Data Waktu Kontrol :KontrolWaktu Waktu Lihat Waktu getAllWaktu getAllWaktu Data Waktu Data masih Kosong 14. Buat Jadwal Kuliah Pengguna Data Hari Interface :Tampilan Data Waktu Kontrol :KontrolHari Hari Lihat Hari getAllHari getAllHari Data Hari Data masih Kosong 88 Pengguna Interface :Beranda Buat Jadwal Interface :Buat_jadwal_tahap_ 1 Interface :Buat_jadwal_tahap_ 2_1 Interface :Buat_jadwal_tahap_ 2_2 Buat jadwal kuliah Isi Semester dan tahun ajaran Pemilihan matakuliah semester 1 atau 2 Mengisi dosen pegampu matakuliah semester 1 atau 2 kontrol :KontrolKelasMataku liah tambahKMsemeste r,jumlah kelas KelasMatakuliah Data matakuliah semester 1 atau 2 Data matakuliah semester 1 atau 2 Sambung 89 Pengguna Sambungan Interface :Buat_jadwal_tahap_ 2_2 Interface :Buat_jadwal_tahap_ 3 1 Mengisi dosen pegampu Memilih matakuliah semester 3 atau 4 kontrol :KontrolKelasMataku liah Updatekelasmataku liah kelasmatakuliah KelasMatakuliah Data matakuliah semester 1 atau 2 Data matakuliah semester 1 atau 2 Pemilihan matakuliah semester 3 atau 4 kontrol :KontrolKelasMataku liah Updatekelasmataku liah kelasmatakuliah KelasMatakuliah Data matakuliah semester 3 atau 4 Data matakuliah semester 3 atau 4 Sambung Mengisi dosen pegampu semester 3 atau 4 90 Pengguna Sambungan Interface :Buat_jadwal_tahap_ 3_2 Interface :Buat_jadwal_tahap_ 4 1 Mengisi dosen pegampu Memilih matakuliah semester 5 atau 6 kontrol :KontrolKelasMataku liah Updatekelasmataku liah kelasmatakuliah KelasMatakuliah Data matakuliah semester 3 atau 4 Data matakuliah semester 3 atau 4 Pemilihan matakuliah semester 5 atau 6 kontrol :KontrolKelasMataku liah Updatekelasmataku liah kelasmatakuliah KelasMatakuliah Data matakuliah semester 5 atau 6 Data matakuliah semester 5 atau 6 Sambung Mengisi dosen pegampu semester 5 atau 6 91 Pengguna Sambungan Interface :Buat_jadwal_tahap_ 4_2 Interface :Buat_jadwal_tahap_ 5 1 Mengisi dosen pegampu Memilih matakuliah semester 7 atau 8 kontrol :KontrolKelasMataku liah Updatekelasmataku liah kelasmatakuliah KelasMatakuliah Data matakuliah semester 5 atau 6 Data matakuliah semester 5 atau 6 Pemilihan matakuliah semester 7 atau 8 kontrol :KontrolKelasMataku liah Updatekelasmataku liah kelasmatakuliah KelasMatakuliah Data matakuliah semester 7 atau 8 Data matakuliah semester 7 atau 8 Sambung Mengisi dosen pegampu semester 7 atau 8 92 Pengguna Sambungan Interface :Buat_jadwal_tahap_ 5_2 Interface :Buat_jadwal_tahap_ 6 1 Mengisi dosen pegampu Mengisi jadwal permintaan kontrol :KontrolKelasMataku liah Updatekelasmataku liah kelasmatakuliah KelasMatakuliah Data matakuliah semester 7 atau 8 Data matakuliah semester 7 atau 8 Mengisi jadwal permintaan kontrol :KontrolPermintaan Tambah Permintaanjadwal Jadwal Data jadwal Data jadwal Sambung Membuatmen-create jadwal dengan algortima SA 93 Pengguna Sambungan Interface :Buat_jadwal_tahap_ 6_2 Interface :Penjadwalan Mengklik tombol buat Jadwal Kelas matakuliah kontrol :KontrolSA SimulatedEngine Jadwal Data jadwal Data jadwal 94 15. Lihat Jadwal Kuliah 16. Menu Bantuan. Pengguna Pengguna PDF file Interface :Beranda Kontrol :KontrolMenuBantuan PDF File Lihat bantuan LihatBantuan LihatBantuan PDF file File tidak ditemukan Data Jadwal Interface :Penjadwalan Kontrol :KontrolSolusi Solusi Lihat Jadwal getAllJadwal getAllJadwal Data jadwal Data masih Kosong 95

3.6 Perancangan Menu Antar Muka

Dalam merancang sebuah sistem aplikasi tentu memiliki desain antar muka untuk mengetahui informasi-informasi apa saja yang akan terlibat didalamnya. Dalam rancangan antar muka aplikasi penjadwalan ini diharapkan mampu memenuhi aspek-aspek, seperti mudah dimengerti dan sederhana. Rancangan yang akan dibuat adalah sebagai berikut :

A. Tampilan Halaman Utama

Gambar 3. 4 Tampilan Halaman Utama Halaman utama terdiri dari 4 tombol utama yaitu Kelola DataBase, Buat Jadwal Kuliah, Lihat Jadwal Kuliah, dan menu bantuan. Dalam setiap tombol akan memiliki informasi yang berbeda. B. Kelola DataBase. Pada halaman Kelola Database terdapat 4 pengelolaan yang dilakukan yaitu ; pengelolaan data matakuliah, Dosen, Ruang, Waktu dan Hari. 96 1. Pengelolaan Matakuliah. Pada halaman ini dilakukan 4 proses yaitu ; tambah, edit, hapus dan lihat Matakuliah. Berikut ini rancangan untuk pengelolaan Matakuliah : Gambar 3. 5 Tampilan Pengelolaan Matakuliah 2. Pengelolaan Dosen. Pada halaman ini dilakukan 4 proses yaitu ; tambah, edit, hapus dan lihat Dosen. Berikut ini rancangan untuk pengelolaan Dosen : 97 Gambar 3. 6 Tampilan Pengelolaan Dosen 3. Pengelolaan Ruang. Pada halaman ini dilakukan 4 proses yaitu ; tambah, edit, hapus dan lihat Ruang. Berikut ini rancangan untuk pengelolaan Ruang : Gambar 3. 7 Tampilan Pengelolaan Ruang 98 4. Pengelolaan Waktu dan Hari. Pada halaman hanya terdapat lihat Waktu dan Hari, berikut ini rancangan untuk pengelolaan Waktu dan Hari : Gambar 3. 8 Tampilan Pengelolaan Waktu dan Hari

C. Buat Jadwal Kuliah.

Pada halaman inilah proses pembuatan jadwal kelas matakuliah dilakukan. Akan terdapat 11 proses yang harus dilakukan. Berikut ini rancangan proses yang dilakukan : 1. Proses Tahap 1 “Penentuan Semester ganjilgenap dan Tahun Ajaran”. 99 Gambar 3. 9 Tampilan Proses tahap 1 2. Proses Tahap 2,4,6,8 “Penentuan matakuliah yang digunakan dan Jumlah Kelas”. Pada proses ini akan otomatis mengambil matakuliah sesuai pilihan diatas, jika ganjil maka akan di ambil matakuliah semester 1,3,5,7 dan jika genap 2,4,6,8. Kemudian jika matakuliah belum ada disemester tersebut maka bisa ditambah. 100 Gambar 3. 10 Tampilan Proses tahap 2,4,6,8 Jika ada penambahan maka akan muncul rancangan seperti berikut : Gambar 3. 11 Tampilan tambah matakuliah 101 Jika sudah sesuai matakuliah yang digunakan, maka akan dibagi keberapa kelas. Berikut rancangannya: Gambar 3. 12 Tampilan konfirmasi pembagian kelas 3. Proses Tahap 3,5,7,9 “Penentuan Dosen Pegampu”. Pada proses ini adalah penentuan dosen pegampu matakuliah dari matakuliah yang sudah dipilih diatas. Berikut ini rancangannya: 102 Gambar 3. 13 Tampilan Proses Tahap 3,5,7,9 Jika diklik pada baris table maka akan muncul rancangan seperti berikut ini : Gambar 3. 14 Tampilan memilih Dosen pegampu 103 4. Proses Tahap 10 “Mengisi Jadwal Permintaan”. Pada proses ini dilakukan pengisian jadwal permintaan. Berikut ini rancanganya: Gambar 3. 15 Tampilan Proses tahap 10 5. Proses Tahap 11 “Buat Jadwal Kuliah”. Ini adalah proses tahap akhir, akan ada satu tombol untuk membuat jadwal beserta progress bar yang akan menunjukan proses pembuatan. Berikut ini rancangananya: 104 Gambar 3. 16 Tampilan Proses tahap 11

D. Lihat Jadwal Kuliah.

Setelah jadwal terbuat pada bagian halaman ini akan menampilkan jadwal-jadwal tersebut. Berikut ini rancangannya; Gambar 3. 17 Tampilan Lihat Jadwal Kuliah 105

E. Lihat Menu Bantuan.

Pada menu bantuan ini akan muncul file berektensi pdf saat tombol bantuan diklik. 106

BAB IV IMPLEMENTASI DAN ANALISA HASIL

4.1. Implementasi.

Implementasi program adalah penerapan dari analisa dan desain sistem yang telah dibuat sebelumnya pada bab 3. Sehingga dengan adanya implementasi ini dapat dipahami jalannya aplikasi pembuatan jadwal kelas matakuliah menggunakan algoritma Simulated Annealing pada Program Studi PGSD. 4.1.1. Implementasi Kelas. 4.1.1.1.Implementasi Kelas Model. No Nama Kelas Model Nama File Fisik Nama File Executable 1 Dosen Dosen.java Dosen.class 2 Hari Hari.java Hari.class 3 Waktu Waktu.java Waktu.class 4 Ruang Ruang.java Ruang.class 5 Matakuliah Matakuliah.java Matakuliah.class 6 KelasMatakuliah KelasMatakuliah.java KelasMatakuliah.class 7 TimeSlot TimeSlot.java TimeSlot.class 8 Jadwal Jadwal.java Jadwal.class 9 Pelanggaran Pelanggaran.java Pelanggaran.class Tabel 4. 1 Implementasi Kelas Model 4.1.1.2.Implementasi Kelas View. No Nama Kelas View Nama File Fisik Nama File Executable 1 Beranda Beranda.java Beranda.class 2 Tampilan_Data_Dosen Tampilan_Data_Dosen.java Tampilan_Data_Dosen.class 3 Tampilan_Data_Matakuliah Tampilan_Data_Matakuliah.java Tampilan_Data_Matakuliah.class 4 Tampilan_Data_Ruang Tampilan_Data_Ruang .java Tampilan_Data_Ruang.class 5 Tampilan_Data_Waktu Tampilan_Data_Waktu .java Tampilan_Data_Waktu.class 6 Buat_jadwal_tahap_1 Buat_jadwal_tahap_1 .java Buat_jadwal_tahap_1 .class 7 Buat_jadwal_tahap_2_1 Buat_jadwal_tahap_2_1.java Buat_jadwal_tahap_2_1.class 8 Buat_jadwal_tahap_2_2 Buat_jadwal_tahap_2_2.java Buat_jadwal_tahap_2_2.class 9 Buat_jadwal_tahap_3_1 Buat_jadwal_tahap_3_1.java Buat_jadwal_tahap_3_1.class 10 Buat_jadwal_tahap_3_2 Buat_jadwal_tahap_3_2.java Buat_jadwal_tahap_3_2.class 11 Buat_jadwal_tahap_4_1 Buat_jadwal_tahap_4_1.java Buat_jadwal_tahap_4_1.class 12 Buat_jadwal_tahap_4_2 Buat_jadwal_tahap_4_2.java Buat_jadwal_tahap_4_2.class 13 Buat_jadwal_tahap_5_1 Buat_jadwal_tahap_5_1.java Buat_jadwal_tahap_5_1.class 14 Buat_jadwal_tahap_5_2 Buat_jadwal_tahap_5_2.java Buat_jadwal_tahap_5_2.class 15 Buat_jadwal_tahap_6_1 Buat_jadwal_tahap_6_1.java Buat_jadwal_tahap_6_1.class 16 Buat_jadwal_tahap_6_2 Buat_jadwal_tahap_6_2.java Buat_jadwal_tahap_6_2.class 17 Penjadwalan Penjadwalan.java Penjadwalan.class Tabel 4. 2 Implementasi kelas View 4.1.1.3.Implementasi Kelas Kontrol. No Nama Kelas Kontrol Nama File Fisik Nama File Executable 1 Kontrol Dosen KontrolDosen.java KontrolDosen.class 2 Kontrol Hari KontrolHari.java KontrolHari.class 3 Kontrol KelasMatakuliah KontrolKelasMatakuliah.java KontrolKelasMatakuliah.class 4 Kontrol Matakuliah KontrolMatakuliah.java KontrolMatakuliah.class 5 Kontrol Menu Bantuan KontrolMenuBantuan.java KontrolMenuBantuan.class 6 Kontrol Pelanggaran KontrolPelanggaran.java KontrolPelanggaran.class 7 Kontrol Permintaan KontrolPermintaan.java KontrolPermintaan.class 8 Kontrol Ruang KontrolRuang.java KontrolRuang.class 9 Kontrol Jadwal KontrolJadwal.java KontrolJadwal.class 10 Kontrol TimeSlot KontrolTimeSlot.java KontrolTimeSlot.class 11 Kontrol Waktu KontrolWaktu.java KontrolWaktu.class 12 Kontrol Simulated Annealing Engine Kontrol Simulated Annealing Engine.java Kontrol Simulated Annealing Engine.class 13 Pelanggaran Permintaan Pelanggaran_Permintaan.java Pelanggaran_Permintaan.class Tabel 4. 3 Implementasi Kelas Kontrol

4.1.2. Implementasi Algoritma Simulated Annealing SA.

Implementasi algoritma SA untuk membuat jadwal kelas matakuliah. Dalam algoritma ini, ada beberapa tahap atau proses untuk membuat jadwal kelas matakuliah adalah sebagai berikut : public static void Simulated_EngineJProgressBar progres, JTextField jumPelangaran throws SQLException { Tahap pertama MenetapkanJadwalAwal; hitung jumlah pelanggaran jadwal awal int f_jadwalAwal = fungsiBiaya_jadwal_Awal; jika jadwal awal bukan goal atau fungsi biaya jadwal awal 0 if f_jadwalAwal 0 { Tahap kedua Inisialisasi_jadwalSkrg_dgn_jadwalAwal; Inisialisasi_jadwalTerbaik_dgn_jadwalSkrg; suhu awal dan nilai alpha reduksi suhu, ditetapkan double suhu_awal = 5000 ;suhu awal double alpha = 0.99 ;nilai reduksi huhu int iterasi = 3; jumlah iterasi 3 Tahap ketiga ulangi sampai solusi ditemukan atau suhu awal mencapai 0.01 while suhu_awal 0.01 { for int i = 0; i iterasi; i++ { aturan produksi untuk proses menghasilkan jadwal baru ProsesPencarianJadwalBaru; Evaluasi jadwal baru int f_jadwalbaru = fungsibiaya_jadwalBaru; hitung delta evaluation dengan membandingkan fungsi biaya jadwal baru dengan jadwal sekarang apakah jadwal baru goal atau f_jadwalBaru = 0 if f_jadwalbaru == 0 { ganti jadwal terbaik dengan jadwal terbaru Update_jadwalTerbaik_dgn_jadwalBaru; Keluar dari program suhu_awal = 0.01; break; } else { jika jadwal baru bukan goal int f_jadwalSkrg = fungsiBiaya_jadwal_sekarang.size; int delta_evaluation = f_jadwalbaru - f_jadwalSkrg; cek apakah jadwal baru membaik atau 0, artinya jumlah pelanggaran jadwal baru lebih kecil dari jadwal sekarang if delta_evaluation 0 { System.out.printlnMembaik; ganti jadwal sekarang dengan jadwal baru Update_jadwalSkrg_dgn_jadwalBaru; cek apakah fungsi biaya jadwal baru lebih baik dari fungsi biaya jadwal terbaik sementara if fungsiBiaya_jadwal_baru.size fungsiBiaya_jadwal_terbaik.size { System.out.printlnJadwal terbaik; simpan jadwal terbaik Update_jadwalTerbaik_dgn_jadwalBaru; } Hapus fungsi biaya jadwal baru dari larik, karena akan dicari ulang. fungsiBiaya_jadwal_baru.removeAllfungsiBiaya_jadwal_baru; } else { jika jadwal baru lebih buruk dari jadwal sekarang double p = Math.exp-delta_evaluation suhu_awal; double r = Math.random;membangkitkan nilai random dalam interval 0 sampai 1 if rp { ganti jadwal sekarang dengan jadwal baru, dengan probabilitas System.out.printlnTidak membaik, diterima dengan probalitas = + r + + p; ganti jadwal sekarang dengan jadwal baru Update_jadwalSkrg_dgn_jadwalBaru; } else { System.out.printlntidak diterima; pencarian jadwal baru dikembalikan lagi dari jadwal sekarang karena jadwal baru sudah diubah dan tidak diterima. cariSolusi_kembali_dari_jadwalSkrg;} Hapus fungsi biaya jadwal baru dari larik, karena akan dicari ulang. fungsiBiaya_jadwal_baru.removeAllfungsiBiaya_jadwal_baru; } } } selesai iterasi lakukan update suhu update nilai suhu suhu_awal = alpha suhu_awal; System.out.printlnSuhu sekarang : + suhu_awal;} Tahap ke empat System.out.printlnSelesai ; SimpanDatabase; kosongkanSemuaLarik; } else { System.out.printlnSelesai tanpa proses SA ; SimpanDatabaseJadwalAwal; }} Keterangan : 1. Tahap pertama adalah menetapkan inisialisasi jadwal awal menetapkan jadwal awal, menghitung fungsi biaya jumlah pelanggaran jadwal awal. Jika jadwal awal masih ada pelanggaran, maka masuk ke tahap kedua. 2. Tahap kedua adalah inisialisasi jadwal sekarang dari jadwal awal, fungsi biaya jadwal sekarang dari fungsi biaya jadwal awal, inisialisasi jadwal terbaik dari jadwal sekarang, fungsi biaya jadwal terbaik dari fungsi biaya jadwal sekarang. Dan menetapkan nilai-nilai parameter algoritma SA yaitu suhu awal, alpha, dan jumlah iterasi. 3. Tahap ketiga adalah ulangi sampai solusi baru ditemukan atau sampai suhu awal sudah mencapai 0 lakukan, pencariaan jadwal baru new_state dari jadwal sekarang, evaluasi nilai jadwal baru dan jadwal sekarang. Jika jadwal baru sudah goal jumlah pelanggaran=0 maka keluar program set jadwal baru ke jadwal terbaik. Jika tidak goal, maka cek apakah jadwal baru lebih baik dari jadwal sekarang, jika membaik maka ganti jadwal sekarang dengan jadwal baru. Jika jadwal baru labih buruk maka akan diterima jika memenuhi rumus exponent. Jika tidak memenuhi rumus exponent maka dikembalikan mencari jadwal baru dari jadwal sekarang. Setelah 3 kali iterasi selesai maka update suhu. 4. Simpan jadwal terbaik kedatabase sebagai jadwal.

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.

Pengujian menggunakan jadwal Semester Ganjil 20142015 Prodi S1 PGSD Universitas Sanata Dharma. Terdapat 32 Matakuliah teori yang digunakan, semester 1 terdapat 11 matakuliah, semester 3 terdapat 10 matakuliah, semester 5 terdapat 10 matakuliah, dan semester 7 terdapat 1 matakuliah. Untuk semester 1,3,5 masing-masing dibagi kedalam 5 kelas dan semester 7 di bagi kedalam 6 kelas 55+50+50+6=161 kelas. Jadi terdapat 161 calon kelas matakuliah teori yang akan dijadwalkan. Dari 161 terdapat 36 kelas matakuliah permintaan. Dari 161 terdapat 5 kelas matakuliah dengan permintaan tidak menggunakan ruang. Di PGSD terdapat 13 ruang teori yang digunakan. Dalam 1 hari akan mendapat 4 sesi waktu, jadi 5 hari 4 sesi 13 ruang = 260 total slot yang disediakan untuk menjadwalkan kelas matakuliah. 1. Data Jadwal Semester Ganjil 20142015 lihat di lampiran pada tabel 5.10 halaman 246. 2. Data Matakuliah lihat di lampiran pada tabel 5.5 halaman 196. 3. Data Kelas Matakuliah lihat di lampiran pada tabel 5.6 halaman 197. 4. Data Permintaan lihat di lampiran pada tabel 5.7 halaman 202. 5. Data Hari dan Waktu lihat di lampiran pada tabel 5.1 halaman 193. 6. Data Ruang teori lihat di lampiran pada tabel 5.3 halaman 194. 7. Data Dosen lihat di lampiran pada tabel 5.4 halaman 195. B. Penetapan Nilai parameter Suhu Awal, Nilai Reduksi Penurunan Suhu Alpha, dan Jumlah Iterasi pada algoritma SA. Sesuai dengan analisis pada Bab 3 yaitu 3.2.2, nilai-nilai yang ditetapkan sebagai berikut : 1. TemperaturSuhu awal T=5000. 2. Alpha α=0.99. 3. Jumlah iterasi L=3.

4.2.1. Hasil Pengujian Terhadap Penggunaan Ruang .

Pengujian dilakukan dengan menerapkan seluruh contraints, 36 kelas matakuliah permintaan dan sebanyak 10 kali percobaan. Berikut pengujian untuk 13,12,11,10,9,dan 8 Ruang :

1. Pengujian dengan menggunakan 13 ruang. Hasil pengujian disajikan dalam tabel 4.4 berikut :

Bentrok Solusi Awal Waktu Hasil akhir dari SA Sukses Hard Soft Penyelesaian Hard Soft 100 A B C E D Total Jam:menit:detik A B C E D Total 01 PEN G UJ IAN 1 0 18 36 3 32 89 0:00:03 0 0 0 0 1 2 0 22 36 6 25 89 0:00:04 0 0 0 0 1 3 0 19 35 9 33 96 0:00:03 0 0 0 0 1 4 0 17 44 7 35 103 0:00:03 0 0 0 0 1 5 0 20 44 5 31 100 0:00:04 0 0 0 0 1 6 0 19 36 4 27 86 0:00:04 0 0 0 0 1 7 0 25 37 7 33 102 0:00:04 0 0 0 0 1 8 0 19 36 9 32 96 0:00:03 0 0 0 0 1 9 0 18 41 8 29 96 0:00:04 0 0 0 0 1 10 0 17 40 6 28 91 0:00:04 0 0 0 0 1 Persentasi tingkat keberhasilan dari 10 kali pengujian 100 Dengan rata-rata waktu penyelsaian 0:00:04 Tabel 4. 4 Hasil pengujian dengan 13 ruang Keterangan : 1. A adalah Tidak terjadi bentrok ruang. 2. B adalah Tidak terjadi bentrok dosen. 3. C adalah Tidak terjadi bentrok rombongan dalam tingkat semester yang sama. 4. D adalah Mahasiswa tidak dijadwalkan lebih 3 kali perkuliahan dalam 1 hari. 5. E adalah Dosen tidak dijadwalkan lebih dari 3 kali pertemuan dalam 1 hari. 6. Sukses 100 dilihat dari Total hasil akhir dari SA. Jika Total = 0 semua constraint teratasi maka di beri nilai 1. Jika Total lebih besar dari 0 maka diberi nilai 0 karena constraint tidak semua teratasi. Cara membaca tabel : Diambil sampel pada pengujian 1 . 1. Pada pengujian 1 , bentrok solusi awal hard constraint yaitu A =0, B =18, C =36, E =3 dan soft constraint yaitu D =32 total = 89. Kemudian diselesaikan dalam waktu 3 detik 0:00:03. Hasil akhir dari bentrok solusi awal diselesaikan menggunakan SA yaitu A =0, B =0, C =0, D =0, E =0, total =0. Tidak ada pelanggaran lagi, baik hard constraint maupun soft constraint sukses diberi nilai 1.

2. Pengujian menggunakan 12 ruang. Hasil pengujian disajikan dalam tabel 4.6 di lampiran :