PREDIKSI PRESTASI AKADEMIK MAHASISWA BERDASARKAN HASIL SELEKSI PENERIMAAN MAHASISWA BARU JALUR PRESTASI DENGAN METODE POHON KEPUTUSAN MENGGUNAKAN ALGORITMA J48
Skripsi Diajukan untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Komputer Program Studi Teknik Informatika
Oleh: Florensia Dwinta Parmeska Kustanto 075314022
JURUSAN TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS SANATA DHARMA YOGYAKARTA 2011
i
PREDICTION OF STUDENT ACADEMIC ACHIEVEMENT BASED ON THE RESULTS OF LANE ACHIEVEMENT STUDENT SELECTION ADMISSIONS WITH DECISION TREE METHOD USING J48 ALGORITHM
A Thesis Presented as Partial Fullfillment of the Requirements To Obtain Sarjana Komputer in Department of Informatics Engineering
By: Florensia Dwinta Parmeska Kustanto 075314022
INFORMATICS ENGINEERING STUDY PROGRAM FACULTY OF SCIENCE AND TECHNOLOGY SANATA DHARMA UNIVERSITY YOGYAKARTA 2011
ii
iii
iv
HALAMAN PERSEMBAHAN
Apa yang kau alami kini mungkin tak dapat engkau mengerti Satu hal tanamkan di Hati, “Indah Semua yang Tuhan Beri “.. Tuhanmu tak akan memberi ular beracun pada yang minta roti Cobaan yang engkau alami takkan melebihi kekuatan mu .. Tangan Tuhan sedang merenda suatu karya yang agung mulia Saatnya kan tiba nanti, kau lihat pelangi kasih-Nya..
Tangan Tuhan, by: Nikita
Ku Persembahkan untuk: Tuhan Yesus dan Bunda Maria, Keluarga Tercinta, Dosen Pembimbing, Kekasih dan Teman-teman
Terima Kasih untuk Motivasi dan Doanya …………
v
vi
PREDIKSI PRESTASI AKADEMIK MAHASISWA BERDASARKAN HASIL SELEKSI PENERIMAAN MAHASISWA BARU JALUR PRESTASI DENGAN METODE POHON KEPUTUSAN MENGGUNAKAN ALGORITMA J48
ABSTRAK
Dalam hal seleksi penerimaan mahasiswa baru melalui jalur prestasi, Universitas Sanata Dharma memberikan syarat khusus untuk mendaftar. Hal tersebut dilakukan oleh Universitas Sanata Dharma agar mampu menyaring calon mahasiswa yang unggul. Diharapkan mereka saat kuliah akan mendapat prestasi akademik yang baik pula. Muncul sebuah pertanyaan yaitu bagaimana prestasi akademik mahasiswa tersebut pada saat kuliah, yang tercermin dalam IPK mahasiswa yang bersangkutan? Jawaban dari pertanyaan itu bisa didapatkan dengan menggali informasi dari data mahasiswa jalur prestasi tersebut. Informasi yang ingin didapat dari data tersebut adalah latar belakang mahasiswa dari jalur prestasi yang seperti apakah yang pada saat kuliah akan mendapatkan prestasi akademik Dengan Pujian dengan kategori “A”, Sangat Memuaskan dengan kategori “B”, Memuaskan dengan kategori “C” dan kurang memuaskan dengan kategori “D”. Penelitian Tugas Akhir ini menerapkan teknik klasifikasi dengan pendekatan pohon keputusan pada penambangan data. Data mahasiswa yang diteliti adalah data PMB Jalur Prestasi dan data akademik seluruh Program Studi di Universitas Sanata Dharma. Data diperoleh dari Biro Administrasi Perencanaan dan Sistem Informasi (BAPSI) Universitas Sanata Dharma. Data tersebut diolah dengan algoritma J48 untuk menemukan pola dari klasifikasi latar belakang mahasiswa berdasarkan prestasi akademik mahasiswa sesuai kategori IPK. Tingkat rata-rata akurasi yang dihasilkan dari uji coba pola klasifikasi untuk program studi Teknik Informatika adalah sebesar 49.31 % , sedangkan untuk program studi Farmasi adalah sebesar 39.79%.
vii
PREDICTION OF STUDENT ACADEMIC ACHIEVEMENT BASED ON THE RESULTS OF LANE ACHIEVEMENT STUDENT SELECTION ADMISSIONS WITH DECISION TREE METHOD USING J48 ALGORITHM
ABSTRACT
In terms of selection of new admissions through the path of achievement, Sanata Dharma provide special conditions for registering. This is done by the University of Sanata Dharma in order to be able to filter out students who excelent. Hopefully they will get GPA is also good. An emerging question is how the academic achievement of students are at college, which is reflected in the GPA of the students concerned? The answer to that question can be obtained by collecting information from the data track student achievement. Who wish to obtain information from these data is the background of student achievement path as if that is when the college was going to get academic achievement with praise by the category "A", Very Satisfying the category "B", Satisfy the category "C" and less satisfactory with the category "D". This final study applying classification techniques to approach the decision tree in data mining. Data of students studied were PMB data points throughout the academic achievement data and Studies Program at the University of Sanata Dharma. Data obtained from Biro Administrasi Perencanaan dan Sistem Informasi (BAPSI) Sanata Dharma University. The data is processed with the J48 algorithm to find patterns of student background classification is based on academic achievement of students by category GPA. The average level of accuracy resulting from the test pattern for the classification of Informatic Engineering study program amounted to 49.31%, while for Pharmacy courses is 39.79%.
viii
ix
KATA PENGANTAR
Puji syukur penulis panjatkan atas Kehadirat Tuhan Yang Maha Esa, yang telah melimpahkan rahmat dan berkatNya sehingga penulis dapat menyelesaikan tugas akhir yang berjudul “ Prediksi Prestasi Akademik Mahasiswa Berdasarkan Hasil Seleksi Penerimaan Mahasiswa Baru Jalur Prestasi Dengan Metode Pohon Keputusan Menggunakan Algoritma J48 “ dan penulis selalu diberi kekuatan untuk berkembang dan menjadi lebih. Tugas akhir ini ditulis sebagai salah satu syarat memperoleh gelar sarjana komputer program studi Teknik Informatika, Fakultas Sains dan Teknologi Universitas Sanata Dharma. Terima kasih sebesar-besarnya kepada semua pihak yang turut memberikan dukungan, semangat dan bantuan sehingga selesainya skripsi ini: 1. Tuhan Yesus Kristus dan Bunda Maria yang telah memberikan semuanya sehingga penulis bisa menyelesaikan tugas akhir ini. 2. Ibu P. H . Prima Rosa, S.Si., M.Sc. selaku dosen pembimbing atas kesabaran, bimbingan, waktu, saran dan terlebih atas dukungan yang diberikan. 3. Laboran komputer atas bantuan kepada penulis ketika melakukan ujian akhir. 4. Kedua orang tua, papa Drs. Yohanes Kustanto, S.Pd dan mama Dra. Damiana Dwi Tanti, S.Pd yang telah memberikan cinta dalam bentuk semangat, perhatian dan doa sehingga penulis dapat menyelesaikan tugas akhir ini. 5. Semua saudara, Adik Theodorin Hanna Vebrita Kustanto dan Angelina Widiyanti Purwoko, Tante Agustina Sri Kadaryanti, Mbah Kakung Ign. Darso Roesyanto dan Mbah Putri M. M. Sukeni Wotowiharjo yang telah memberikan semangat, perhatian dan doa sehingga penulis dapat menyelesaikan tugas akhir ini. 6. Kekasih tercinta, Antonius Hari Widiatmoko yang selalu menyemangati dan menghibur ketika dalam kesulitan, dan juga terimakasih untuk doanya.
x
7. Sahabat dan teman-teman, Fabian Fransiskus Paranso, S.T. , Gregorius Arief Sudarmo Wicaksono, S.T. , Sari Indah Anatta, Arum Citra Dewi, Ni Made Kristianingsih Kuatra, Ana Suryaningsih, Leonardus Ardyandita, M. Bangkit
Widyatmoko
dan
teman-teman
seperjuangan
dalam
menyelesaikan tugas akhir ini. 8. Semua pihak yang berperan baik secara langsung maupun tidak langsung sehingga penulis dapat menyelesaikan tugas akhir ini.
Penulis menyadari bahwa masih banyak kekurangan yang terdapat pada laporan tugas akhir ini. Saran dan kritik penulis harapkan untuk perbaikan-perbaikan pada masa yang akan dating dan penulis berharap semoga skripsi ini dapat bermanfaat bagi pembaca.
Yogyakarta, 24 Juli 2011 Penulis
(Florensia Dwinta Parmeska Kustanto)
xi
DAFTAR ISI Halaman Judul.......................................................................................................... i Halaman Judul (Bahasa Inggris) ............................................................................. ii Halaman Persetujuan .............................................................................................. iii Halaman Pengesahan ............................................................................................. iv Halaman Persembahan .............................................................................................v Abstrak .................................................................................................................. vii Abstract ................................................................................................................. vii Persetujuan Publikasi Karya Ilmiah ..................................................................... viii Kata Pengantar .........................................................................................................x Daftar Isi................................................................................................................ xii Daftar Gambar........................................................................................................xv Daftar Tabel ........................................................................................................ xvii BAB I PENDAHULUAN .......................................................................................1 1.1. Latar Belakang Masalah .........................................................................1 1.2. Perumusan Masalah ...............................................................................3 1.3. Batasan Masalah.....................................................................................3 1.4. Tujuan ....................................................................................................4 1.5. Luaran ....................................................................................................4 1.6. Kegunaan................................................................................................5 1.7. Metodologi Penelitian ............................................................................5 1.8. Sistematika Penulisan.............................................................................7 BAB II LANDASAN TEORI ..................................................................................8 2.1. Pengertian Penambangan Data (Data Mining) ......................................8 2.2. Proses Penambangan Data .....................................................................9 2.3. Teknik Klasifikasi ................................................................................11 2.4. Pengertian Pohon Keputusan ...............................................................13 2.5. Manfaat Pohon Keputusan ...................................................................14 2.6. Kelebihan Pohon Keputusan ................................................................15 2.7. Kekurangan Pohon Keputusan .............................................................16 2.8. Algoritma J48 .......................................................................................16 BAB III ANALISIS DAN PERANCANGAN SISTEM ......................................32 3.1. Identifikasi Sistem................................................................................32 3.2. Pemrosesan Data Awal, Input, Proses dan Output Sistem ...................33 3.2.1. Pemrosesan Data Awal ..............................................................37 3.2.2. Input Sistem ...............................................................................48 3.2.3. Proses Sistem .............................................................................55 3.2.4. Output Sistem .............................................................................56 3.3. Perancangan Struktur Data ...................................................................57 3.4. Perancangan Umum Sistem .................................................................58 3.4.1. Diagram Use Case ......................................................................58 3.4.2. Narasi Use Case .........................................................................59 3.4.3. Diagram Aktivitas ......................................................................69 3.4.3.1. Diagram Aktivitas Login..................................................69
xii
3.5. 3.6.
3.7.
3.8. 3.9.
3.4.3.2. Diagram Aktivitas Tambah Data .....................................70 3.4.3.3. Diagram Aktivitas Transformasi Data .............................71 3.4.3.4. Diagram Aktivitas Buat Aturan .......................................71 3.4.3.5. Diagram Aktivitas Lihat Detail Aturan ............................72 3.4.3.6. Diagram Aktivitas Simpan Aturan ...................................72 3.4.3.7. Diagram Aktivitas Prediksi Prestasi Kelompok ...............73 3.4.3.8. Diagram Aktivitas Prediksi Prestasi Personal ..................74 3.4.3.9. Diagram Aktivitas Logout................................................75 Diagram Kelas ......................................................................................76 Atribut dan Method ..............................................................................77 3.6.1. LoginSPPA .................................................................................77 3.6.2. SelectedProdiSemesterSPPA .....................................................78 3.6.3. HomeSPPA ................................................................................78 3.6.4. PrediksiPersonalSPPA ...............................................................80 3.6.5. PrediksiKelompokSPPA ............................................................81 3.6.6. PreprocessingSPPA ....................................................................83 3.6.7. Aturan .........................................................................................85 3.6.8. Mahasiswa ..................................................................................88 3.6.9. TransformasiData .......................................................................90 3.6.10. HasilPreprocessingSPPA .........................................................91 3.6.11. DatabaseConnection.................................................................92 3.6.12. enumAtribut .............................................................................93 3.6.13. enumNilaiKeputusanIPK .........................................................94 3.6.14. enumNilaiJenisKelamin ...........................................................94 3.6.15. enumNilaiJurusan.....................................................................94 3.6.16. enumNilaiKeteranganSekolah..................................................94 3.6.17. enumNilaiKabupaten................................................................94 3.6.18. enumNilaiRapor .......................................................................95 3.6.19. CrossValidation ........................................................................95 3.6.20. Pengguna ..................................................................................97 Model Analisis .....................................................................................97 3.7.1. Model Analisis Tiap Usecase .....................................................97 3.7.2. Model Analisis Usecase Login...................................................98 3.7.3. Model Analisis Usecase Tambah Data ......................................99 3.7.4. Model Analisis Usecase Transformasi Data ............................100 3.7.5. Model Analisis Usecase Buat Aturan ......................................101 3.7.6. Model Analisis Usecase Lihat Detail Aturan ...........................102 3.7.7. Model Analisis Usecase Simpan Aturan ..................................103 3.7.8. Model Analisis Usecase Prediksi Kelompok ...........................104 3.7.9. Model Analisis Usecase Prediksi Personal ..............................105 3.7.10. Model Analisis Usecase Logout.............................................106 Diagram Relasional Entitas ................................................................108 Perancangan Antar Muka ...................................................................109 3.9.1. Halaman Login .........................................................................109 3.9.2. Halaman SelectProdiSemester .................................................110 3.9.3. Halaman HomeSPPA ...............................................................110
xiii
3.9.4. Halaman PreprocessingSPPA ..................................................111 3.9.5. Halaman HasilPreprocessing ...................................................112 3.9.6. Halaman PrediksiPersonalSPPA ..............................................112 3.9.7. Halaman PrediksiKelompokSPPA ...........................................113 BAB IV IMPLEMENTASI SISTEM .................................................................114 4.1. Implementasi Data .............................................................................114 4.2. Implementasi File ...............................................................................117 4.3. Implementasi Antar Muka..................................................................119 4.3.1. Tampilan Login ........................................................................119 4.3.2. Tampilan Set Program Studi dan Semester..............................120 4.3.3. Tampilan Halaman Utama Sistem ...........................................121 4.3.4. Tampilan Preproses ..................................................................122 4.3.5. Tampilan Hasil Preprosess .......................................................123 4.3.6. Tampilan Prediksi Personal......................................................124 4.3.7. Tampilan Prediksi Kelompok ..................................................125 BAB V126 ANALISIS HASIL...........................................................................126 5.1. Pengujian Validitas Program..............................................................126 5.1.1. Perbandingan pertama ..............................................................126 5.1.2. Perbandingan kedua .................................................................129 5.2. Akurasi Cross Validation 3 folds .......................................................131 5.2.1. Analisis Hasil Pola Program Studi Teknik Informatika ...........132 5.2.2. Analisis Hasil Pola Program Studi Farmasi .............................133 BAB VI PENUTUP ............................................................................................134 6.1. Kesimpulan ........................................................................................134 6.2. Saran...................................................................................................134 6.2.1. Untuk Pengembangan Program..........................................................134 6.2.2 Untuk Universitas Sanata Dharma ....................................................135 6.2.3 Untuk Mahasiswa PMB Jalur Prestasi ...............................................135 DAFTAR PUSTAKA ..........................................................................................136 LAMPIRAN .........................................................................................................139 Lampiran 1 Daftar Nama Program Studi .....................................................139 Lampiran 2 Daftar Nama Kabupaten di Indonesia ......................................140 Lampiran 3 Listing Program Form Login ....................................................141 Lampiran 4 Listing Program Form Prodi Semester .....................................149 Lampiran 5 Listing Program Form Home ....................................................154 Lampiran 6 Listing Program Form Preprocessing .......................................160 Lampiran 7 Listing Program Form Hasil Preprocessing..............................212 Lampiran 8 Listing Program Form Prediksi Personal .................................220 Lampiran 9 Listing Program Form Prediksi Kelompok ..............................273
xiv
DAFTAR GAMBAR
Gambar 2.1 Data Mining dan teknologi basis data lainnya .....................................8 Gambar 2.2 Proses Data Mining ............................................................................11 Gambar 2. 3 Proses Klasifikasi dan kaitannya dengan prediksi ............................13 Gambar 2.4 Gambaran Pohon Keputusan ..............................................................14 Gambar 2.5 Pohon Keputusan Untuk Node 1 ........................................................22 Gambar 2.6 Pohon Keputusan Untuk Node 1.1 .....................................................23 Gambar 2.7 Pohon Keputusan Untuk Node 1.1.1 ..................................................25 Gambar 2. 8 Pohon Keputusan Untuk Node 1.1.1.1 ..............................................26 Gambar 2. 9 Pohon Keputusan Untuk Node 1.2 ....................................................28 Gambar 2. 10 Pohon Keputusan Untuk Node 1.1.2 ...............................................29 Gambar 2. 11 Pohon Keputusan Untuk Node 1.1.2.2 ............................................31 Gambar 3. 1 Deskripsi Tabel Data Mentah PMB 2005 .........................................37 Gambar 3. 2 Deskripsi Tabel Data Mentah PMB 2006 .........................................38 Gambar 3. 3 Deskripsi Tabel Data Mentah Nilai Matakuliah 2005 ......................38 Gambar 3. 4 Deskripsi Tabel Data Mentah Nilai Matakuliah 2006 ......................39 Gambar 3. 5 Deskripsi Tabel SKS per Program Studi ...........................................39 Gambar 3. 6 Deskripsi Tabel Hasil Penggabungan Data Mentah ..........................41 Gambar 3. 7 Proses Pembagian data ke dalam 3 Folds.........................................47 Gambar 3.8 DiagramUse Case ...............................................................................58 Gambar 3. 9 Diagran Aktivitas Login ....................................................................69 Gambar 3. 10 Gambar Diagram Aktivitas Tambah Data .......................................70 Gambar 3. 11 Diagram Aktivitas Transformasi Data ............................................71 Gambar 3. 12 Diagram Aktivitas Buat Aturan......................................................71 Gambar 3. 13 Diagram Aktivitas Lihat Detail Aturan ...........................................72 Gambar 3. 14 Diagram Aktivitas Simpan Aturan ..................................................72 Gambar 3. 15 Diagram Aktivitas Prediksi Prestasi Kelompok ..............................73 Gambar 3. 16 Diagram Aktivitas Prediksi Prestasi Personal .................................74 Gambar 3. 17 Diagram Aktivitas Logout ...............................................................75 Gambar 3. 18 Gambar model analisis login ...........................................................98 Gambar 3. 19 Diagram Sekuensial Login ..............................................................98 Gambar 3. 20 Model analisis Tambah data ............................................................99 Gambar 3. 21 Diagram Sekuensial Tambah Data ..................................................99 Gambar 3. 22 Model Analisis Transformasi Data ...............................................100 Gambar 3. 23 Diagram Sekuensial Transformasi data.........................................100 Gambar 3. 24 Model Analisis Buat Aturan ..........................................................101 Gambar 3. 25 Diagram Sekuensial Buat Aturan ..................................................102 Gambar 3. 26 Model Analisis Lihat Detail Aturan ..............................................102 Gambar 3. 27 Diagram Sekuensial Lihat Detail Aturan ......................................102 Gambar 3. 28 Model Analisis Simpan Aturan .....................................................103 Gambar 3. 29 Diagram Sekuensial Simpan Aturan .............................................103 Gambar 3. 30 Model Analisis Prediksi Kelompok ..............................................104 Gambar 3. 31 Diagram Sekuensial Prediksi Kelompok.......................................105 xv
Gambar 3. 32 Model Analisi Prediksi Personal ...................................................105 Gambar 3. 33 Diagram Sekuensial Prediksi Personal ..........................................106 Gambar 3. 34 Model Analisis Logout ..................................................................106 Gambar 3. 35 Diagram Sekuensial Logout ..........................................................107 Gambar 3. 36 ER tabel pola semester dengan tabel senester dan prodi ...............108 Gambar 3. 37 Halaman Login ..............................................................................109 Gambar 3. 38 Halaman Select Prodi Semester ....................................................110 Gambar 3. 39 Halaman HomeSPPA ....................................................................110 Gambar 3. 40 Halaman PreprocessingSPPA .......................................................111 Gambar 3. 41 Halaman HasilPreprocessingSPPA ...............................................112 Gambar 3. 42 Halaman PrediksiPersonalSPPA ...................................................112 Gambar 3. 43 Halaman PrediksiKelompokSPPA ................................................113 Gambar 4. 1 Tree Perhitungan Manual dengan Excel ........................................114 Gambar 4. 2 Hasil Tree dengan menggunakan WEKA ......................................115 Gambar 4. 3 Hasil Tree menggunakan Sistem SPPA .........................................116 Gambar 4. 4 Tampilan Login Sistem ..................................................................119 Gambar 4. 5 Tampilan Setting Prodi dan Semester ............................................120 Gambar 4. 6 Tampilan Home SPPA ...................................................................121 Gambar 4. 7 Tampilan Preproses ........................................................................122 Gambar 4. 8 Halaman Hasil Proses.....................................................................123 Gambar 4. 9 Tampilan Prediksi Personal ............................................................124 Gambar 4. 10 Tampilah Prediksi Kelompok.......................................................125 Gambar 5. 1 Pola Semester 1 Prodi Teknik Informatika ( Hasil Weka ) .............127 Gambar 5. 2 Pola Semester 1 Prodi Teknik Informatika ( Hasil Sistem ) ..........128 Gambar 5. 3 Hasil Prediksi Manual, Sistem dan Weka Semester 1 ....................128 Gambar 5. 4 Pola Semester 2 Prodi Teknik Informatika ( Hasil Weka ) .............129 Gambar 5. 5 Pola Semester 2 Prodi Teknik Informatika ( Hasil Sistem ) ...........130 Gambar 5. 6 Hasil Prediksi Manual, Sistem dan Weka semester 2 ....................130
xvi
DAFTAR TABEL Tabel 2. 1 Tabel Data IPK semester 1...................................................................19 Tabel 2. 2 Tabel Perhitungan Node 1....................................................................21 Tabel 2. 3 Tabel Perhitungan Node 1.1.................................................................23 Tabel 2. 4 Tabel Perhitungan Node 1.1.1..............................................................24 Tabel 2. 5 Tabel Perhitungan Node 1.1.1.1...........................................................25 Tabel 2. 6 Tabel Perhitungan Node 1.2..................................................................27 Tabel 2. 7 Tabel Perhitungan Node 1.1.2...............................................................28 Tabel 2. 8 Tabel Perhitungan Node 1.1.2.2............................................................30 Tabel 3.1 Tabel Data PMB jalur prestasi ...............................................................34 Tabel 3.2 Tabel Data Nilai Mahasiswa jalur prestasi per Matakuliah ...................35 Tabel 3.3 Tabel Data SKS Matakuliah per Program Studi ....................................36 Tabel 3.4 Tabel data PMB .....................................................................................42 Tabel 3. 5 Tabel Aturan Pengkategorisasian Nilai Rapor dan IPK........................43 Tabel 3.6 Hasil Transformasi untuk nilai rapor angkatan 2005 .............................44 Tabel 3.7 Tabel Data Pelatihan PMB Jalur Prestasi ..............................................49 Tabel 3.8 Tabel Data Uji PMB Jalur Prestasi ........................................................52 Tabel 3.9 Tabel Visualisasi Penyimpanan Pohon ..................................................57 Tabel 3.10 Deskripsi Use Case ..............................................................................59 Tabel 3. 11 Kelas Interface LoginSPPA ................................................................77 Tabel 3. 12 Kelas Interface SelectedProdiSemesterSPPA .....................................78 Tabel 3. 13 Kelas Interface HomeSPPA ................................................................78 Tabel 3. 14 Kelas Interface PrediksiPersonalSPPA ...............................................80 Tabel 3. 15 Kelas Interface PrediksiKelompokSPPA ............................................81 Tabel 3. 16 Kelas Interface PreprocessingSPPA ...................................................83 Tabel 3. 17 Kelas Entity Aturan .............................................................................85 Tabel 3. 18 Kelas Entity Mahasiswa ......................................................................88 Tabel 3. 19 Kelas Entity TransformasiData ...........................................................90 Tabel 3. 20 Kelas Interface HasilPreprocessingSPPA ...........................................91 Tabel 3. 21 Kelas Controller DatabaseConnection ................................................92 Tabel 3. 22 Kelas enumeration enumAtribut .........................................................93 Tabel 3. 23 Kelas Enumeration enumNilaiKeputusan ...........................................94 Tabel 3. 24 Kelas Enumeration enumNilaiJenisKelamin ......................................94 Tabel 3. 25 Kelas Enumeration enumNilaiJurusan ................................................94 Tabel 3. 26 Kelas Enumeration enumNilaiKeteranganSekolah .............................94 Tabel 3. 27 Kelas enumNilaiKabupaten ................................................................94 Tabel 3. 28 Kelas Enumeration enumNilaiRapor ..................................................95 Tabel 3. 29 Kelas Entity CrossValidation ..............................................................95 Tabel 3. 30 Kelas Entity Pengguna ........................................................................97 Tabel 3. 31 Tabel Kelas Analisis login ..................................................................98 Tabel 3. 32 Tabel Kelas Analisis Tambah Data .....................................................99 Tabel 3. 33 Kelas Analisis Transformasi Data.....................................................100 Tabel 3. 34 Kelas Analisis Buat Aturan ...............................................................101 Tabel 3. 35 Kelas Analisis Lihat Detail Aturan ...................................................102
xvii
Tabel 3. 36 Kelas Analisis Simpan Aturan ..........................................................103 Tabel 3. 37 Kelas Analisis Prediksi Kelompok ...................................................104 Tabel 3. 38 Kelas Analisis Prediksi Personal.......................................................105 Tabel 3. 39 Kelas Analisis Logout .......................................................................106 Tabel 4. 1 Tabel Impelementasi file ....................................................................117 Tabel 5. 1 Perbandingan Akurasi Pola (Prodi: Teknik Informatika) ...................131 Tabel 5. 2 Distribusi IPK Program Studi Teknik Informatika .............................131 Tabel 5. 3 Perbandingan Akurasi Pola (Prodi: Farmasi)......................................132 Tabel 5. 4 Distribusi IPK Program Studi Farmasi ...............................................131
xviii
BAB I PENDAHULUAN 1.1. Latar Belakang Masalah Seiring dengan perkembangan teknologi, semakin berkembang pula kemampuan kita dalam mengumpulkan dan mengolah data. Data dikumpulkan dan disimpan bisa dalam bentuk softcopy maupun hardcopy. Data-data yang terkumpul ini merupakan suatu tambang emas yang dapat digunakan sebagai informasi apabila diolah terlebih dahulu agar dapat diutarakan secara jelas dan tepat sehingga dapat dimengerti oleh orang lain yang tidak langsung mengalaminya sendiri. Universitas Sanata Dharma (USD) merupakan salah satu instansi akademik yang memiliki banyak data. Tidak hanya data akademik saja tetapi masih banyak lagi data yang tersimpan, salah satunya adalah data Penerimaan Mahasiswa Baru (PMB). Setiap tahunnya Universitas Sanata Dharma membuka pendaftaran untuk penerimaan mahasiswa baru. Seleksi penerimaan mahasiswa baru dilakukan dalam berbagai cara, antara lain penerimaan mahasiswa baru melalui jalur prestasi, melalui jalur reguler dan melalui jalur kerja sama. Setiap dibuka pendaftaran maka akan ada banyak data yang terkumpul dari pendaftar sebagai syarat untuk pendaftaran. Data tersebut seiring berjalannya waktu akan semakin bertambah dan potensial menjadi kuburan data karena tidak dimanfaatkan. Dalam hal seleksi penerimaan mahasiswa baru melalui jalur prestasi, Universitas Sanata Dharma memberikan syarat utama untuk mendaftar yaitu dengan melampirkan hasil belajar siswa SMA / sederajat saat kelas XI semester 1 dan semester 2 dan kelas XII semester 1. Syarat kedua adalah nilai rata-rata kognitif sejumlah mata pelajaran minimal 67. Untuk siswa jurusan IPA, nilai tersebut meliputi mata pelajaran Bahasa Indonesia, Bahasa Inggris, Matematika, Fisika, Kimia dan Biologi, sedangkan untuk siswa jurusan IPS meliputi Bahasa Indonesia, Sejarah, Bahasa Inggris, Matematika, dan Ekonomi. Selain itu terdapat syarat khusus yaitu untuk pendaftar program studi Farmasi harus berasal dari
2
SMA jurusan IPA/SMF sedangkan khusus pendaftar program studi Pendidikan Bahasa Inggris dan Sastra Inggris harus memiliki nilai mata pelajaran Bahasa Inggris pada rapor kelas XI semester 1 dan 2 minimal 8. Tujuan dari beberapa syarat tersebut agar Universitas Sanata Dharma mampu menyaring calon mahasiswa yang unggul. Diharapkan mereka nantinya saat kuliah akan mendapatkan Indeks Prestasi (IP) yang baik di setiap semesternya dan lulus dengan Indeks Prestasi Kumulatif (IPK) yang baik pula. Calon mahasiswa yang berhasil lolos seleksi PMB Jalur Prestasi di Universitas Sanata Dharma merupakan orang-orang yang memenuhi kategori sebagai mahasiswa yang diterima secara khusus, karena prestasi akademik pada saat SMA. Setelah calon mahasiswa dinyatakan lolos seleksi dan diterima sebagai mahasiswa di Universitas Sanata Dharma karena prestasi akademik saat SMA, muncul sebuah pertanyaan yaitu bagaimana prestasi akademik mahasiswa tersebut pada saat kuliah, yang tercermin dalam IPK mahasiswa yang bersangkutan? Jawaban dari pertanyaan itu bisa didapatkan dengan menggali informasi dari data mahasiswa jalur prestasi tersebut. Informasi yang ingin didapat dari data tersebut adalah latar belakang mahasiswa dari jalur prestasi yang seperti apakah yang pada saat kuliah akan mendapatkan prestasi akademik Dengan Pujian dengan kategori “A”, Sangat Memuaskan dengan kategori “B”, Memuaskan dengan kategori “C” dan kurang memuaskan dengan kategori “D”. Selanjutnya klasifikasi tersebut akan dimanfaatkan untuk melakukan prediksi prestasi akademik mahasiswa yang mendaftar melalui jalur prestasi. Penelitian Tugas Akhir ini menerapkan teknik klasifikasi melalui pendekatan pohon keputusan pada penambangan data. Data mahasiswa yang akan diteliti dan diolah merupakan data PMB Jalur Prestasi dan data akademik seluruh Program Studi di Universitas Sanata Dharma. Data diperoleh dari Biro Administrasi Perencanaan dan Sistem Informasi (BAPSI) Universitas Sanata Dharma. Data tersebut akan diolah dengan algoritma J48 untuk menemukan pola dari klasifikasi latar belakang mahasiswa berdasarkan prestasi akademik mahasiswa sesuai kategori IPK. Data latar belakang mahasiswa meliputi nilai rapor kelas XI semester 1 dan 2, kelas XII semester 1, mata pelajaran untuk siswa jurusan IPA,
3
nilai tersebut meliputi mata pelajaran Bahasa Indonesia, Bahasa Inggris, Matematika, Fisika, Kimia dan Biologi, sedangkan untuk siswa jurusan IPS meliputi Bahasa Indonesia, Sejarah, Bahasa Inggris, Matematika, dan Ekonomi, asal sekolah, daerah asal sekolah, jurusan saat sekolah, dan jenis kelamin. Berdasarkan pola klasifikasi tersebut, diharapkan akan dapat dilakukan prediksi prestasi akademik mahasiswa berdasarkan hasil seleksi penerimaan mahasiswa baru jalur prestasi dengan metode pohon keputusan menggunakan algoritma J48.
1.2. Perumusan Masalah Berdasarkan latar belakang masalah diatas, rumusan masalah yang diidentifikasi adalah: 1. Bagaimana cara mengklasifikasikan latar belakang mahasiswa dari jalur prestasi yang meliputi nilai rapor, asal sekolah, daerah asal sekolah, jurusan saat sekolah, dan jenis kelamin berdasarkan prestasi akademiknya menurut kategori IPK Dengan Pujian dengan kategori “A”, Sangat Memuaskan dengan kategori “B”, Memuaskan dengan kategori “C” dan kurang memuaskan dengan kategori “D”? 2. Bagaimana memprediksi prestasi akademik mahasiswa berdasarkan hasil seleksi penerimaan mahasiswa baru jalur prestasi dengan metode pohon keputusan menggunakan algoritma J48? 1.3. Batasan Masalah Dalam tugas akhir ini batasan masalah yang akan diambil dalam pembahasan adalah sebagai berikut: 1. Penelitian ini hanya menerapkan metode pohon keputusan dengan menggunakan algoritma J48. 2. Data mahasiswa diambil dari data PMB Jalur Prestasi dan data akademik mahasiswa seluruh Program Studi di Universitas Sanata Dharma tahun angkatan 2005-2006 karena mahasiswa pada tahun angkatan tersebut
4
sudah menempuh perkuliahan lebih dari 8 semester sehingga diharapkan ketika proses pengolahan data akan didapatkan pola yang menarik. Dan untuk data angkatan 2007 akan dijadikan data testing yang akan digunakan untuk menguji pola yang terbentuk. Data PMB dan data akademik yang didapat meliputi nomor alias, jenis kelamin, daerah asal, alamat asal, nama sekolah, jurusan saat SMA / sederajat, nilai rapor kelas XI semester 1 dan 2, kelas XII semester 1, mata pelajaran (untuk IPA: Bahasa Indonesia, Bahasa Inggris, Matematika, Fisika, Kimia dan Biologi. Untuk IPS: Bahasa Indonesia, Sejarah, Bahasa Inggris, Matematika, dan Ekonomi.), program studi, sks yang telah ditempuh, nilai per semester, Indeks Prestasi Kumulatif(IPK), ketua program studi, dan dosen pembimbing akademik yang diperoleh dari Biro Administrasi Perencanaan dan Sistem Informasi (BAPSI) Universitas Sanata Dharma. 3. Data akademik yang akan diolah adalah IPK mahasiswa dari semester 1 – semester 8 karena diasumsikan bahwa lama studi yang ideal adalah 4 tahun atau 8 semester.
1.4. Tujuan Tujuan dari penelitian ini adalah : 1. Mencari pola klasifikasi dari latar belakang mahasiswa PMB jalur prestasi berdasarkan prestasi akademiknya. 2. Memprediksi prestasi akademik mahasiswa. 1.5. Luaran Sebuah sistem berbasis teknologi informasi yang mampu mengenali pola dan memprediksi prestasi akademik mahasiswa berdasarkan masukan latar belakang mahasiswa (nilai rapor, asal sekolah, daerah asal sekolah, jurusan saat sekolah, kabupaten asal, kabupaten sekolah dan jenis kelamin).
5
1.6. Kegunaan Hasil prediksi tersebut dapat digunakan oleh: 1. Dosen Pembimbing Akademik Sebagai bahan konseling mahasiswa bimbingannya. 2. Ketua Program Studi Sebagai alat bantu dalam seleksi PMB jalur prestasi.
1.7. Metodologi Penelitian Metodologi yang digunakan untuk menyelesaikan masalah pada tugas akhir ini menurut Jiawei Han dan Kamber [1]: 1. Pembersihan Data ( Data Cleaning ) Pada tahap ini dilakukan proses membuang data yang tidak konsisten dan noise. Contohnya: data yang kadaluarsa, salah pengetikan maupun data yang kosong. 2. Penggabungan Data ( Data Integration ) Penggabungan data dari beberapa sumber agar seluruh data terangkum dalam satu table yang utuh. (denormalisasi) 3. Seleksi Data ( Data Selection ) Menyeleksi data dimana data yang relevan diambil dari database. 4. Transformasi Data ( Data Transformation ) Mentranformasikan atau merubah data kedalam bentuk yang sesuai untuk ditambang. 5. Penambangan Data ( Data Mining ) Penerapan teknik penambangan data untuk mengekstrak pola.
6
Dalam penilitian Tugas Akhir ini, teknik yang digunakan adalah teknik klasifikasi dengan membuat pohon keputusan. Algoritma yang digunakan untuk membuat pohon keputusan adalah algoritma J48. 6. Evaluasi Pola ( Pattern Evaluation ) Untuk
mengidentifikasikan
pola
yang
menarik
untuk
merepresentasikan sebuah pengetahuan. 7. Presentasi Pengetahuan ( Knowledge Presentation ) Pada tahap ini pola yang didapat direpresentasikan kepada pengguna akhir kedalam bentuk yang dapat dipahami,
7
1.8. Sistematika Penulisan Adapun sistematika penulisan tugas akhir ini adalah sebagai berikut: Halaman Judul Abstrak, berisi tentang rangkuman Tugas Akhir. Daftar Isi Bab I Pendahuluan Pendahuluan berisi tentang latar belakang masalah, perumusan masalah, batasan masalah, tujuan, luaran, kegunaan, metodologi penelitian dan sistematika penulisan. Bab II Landasan Teori
Landasan Teori di dalam bab II ini berisi tentang teori yang digunakan dalam penulisan Tugas Akhir, meliputi: pengertian penambangan data, proses penambangan data, teknik klasifikasi, pengertian pohon keputusan, manfaat pohon keputusan, kelebihan pohon keputusan, kekurangan pohon keputusan, dan algoritma J48. Bab III Analisis dan Perancangan Sistem Analisis dan Perancangan Sistem berisi tentang identifikasi sistem, pemrosesan data awal, Input, Proses dan Output , dan perancangan sistem. Bab IV Implementasi Program Implementasi Program berisi implementasi dari program yang dibuat. Bab V Analisis Hasi Analisis Hasil berisi tentang pembahasan hasil yang terbentuk dari program, baik akurasi ataupun pola klasifikasinya. Bab VI Kesimpulan dan Saran Kesimpulan dan saran berisi tentang kesimpulan penelitian dan saran untuk pengembangan penelitian selanjutnya. Daftar Pustaka
BAB II LANDASAN TEORI
2.1. Pengertian Penambangan Data (Data Mining) Definisi umum dari penambangan data itu sendiri adalah “serangkaian proses untuk menggali nilai tambah berupa pengetahuan yang selama ini tidak diketahui secara manual dari suatu kumpulan data” [2]. Penambangan data juga dikenal dengan nama Knowledge Discovery in Databases (KDD). Kehadiran penambangan data dilatar belakangi problema explosion data yang dialami akhir-akhir ini dimana banyak organisasi telah mengumpulkan data sekian tahun lamanya (data pembelian, data penjualan, data nasabah, data transaksi dsb) dan yang terjadi adalah banyak data tapi miskin informasi. Hampir semua data tersebut dimasukkan dengan menggunakan aplikasi komputer yang digunakan untuk menangani transaksi sehari-hari. Pada Gambar 2.1 di bawah ini menunjukkan posisi masing-masing teknologi:
Gambar 2.1 Data Mining dan teknologi basis data lainnya[3]
9
Perbedaan penambangan data dengan gudang data adalah pada bagian pengolahannya. Pada penambangan data terjadi On-line Transaction Processing (OLTP), sedangkan pada gudang data terjadi On-line Analytical Processing (OLAP). Gambar 2.1 di atas terlihat bahwa teknologi data warehouse digunakan untuk melakukan OLAP, sedangkan penambangan data digunakan untuk melakukan information discovery yang informasinya lebih ditujukan untuk seorang Data Analyst dan Business Analyst dengan ditambah visualisasi tentunya. Dalam prakteknya, penambangan data juga mengambil data dari data warehouse, hanya saja aplikasi dari penambangan data lebih spesifik dibandingkan OLAP mengingat database bukan satu-satunya bidang ilmu yang mempengaruhi penambangan data. Banyak lagi bidang ilmu yang turut memperkaya penambangan data
seperti: information science
(ilmu informasi), high
performance computing, visualisasi, machine learning, statistik, neural networks (jaringan
syaraf
tiruan),
pemodelan
matematika,
information
retrieval
(pemerolehan informasi) dan information extraction serta pengenalan pola. Pengolahan citra (image processing) juga digunakan dalam rangka melakukan penambangan data terhadap data image atau spatial. 2.2. Proses Penambangan Data Proses penambangan data menurut Jiawei Han dan Kamber [1] terdiri dari beberapa tahap, yaitu:
1. Pembersihan Data ( Data Cleaning ) Pada tahap ini dilakukan proses membuang data yang tidak konsisten dan noise. Contohnya: data yang kadaluarsa, salah pengetikan maupun data yang kosong. 2. Penggabungan Data ( Data Integration ) Penggabungan data dari beberapa sumber agar seluruh data terangkum dalam satu tabel yang utuh.
10
3. Seleksi Data ( Data Selection ) Menyeleksi data dimana data yang relevan diambil dari database. 4. Transformasi Data ( Data Transformation ) Mentranformasikan atau merubah data kedalam bentuk yang sesuai untuk ditambang. 5. Penambangan Data ( Data Mining ) Penerapan teknik penambangan data untuk mengekstrak pola. 6. Evaluasi Pola ( Pattern Evaluation ) Pola yang didapat dari proses penambangan data akan dievaluasi dengan hipotesa yang telah dibentuk sebelumnya. Akhir dari tahap ini adalah diperolehnya persentase akurasi data. 7. Presentasi Pengetahuan ( Knowledge Presentation ) Pada tahap ini pola yang didapat direpresentasikan kepada pengguna akhir kedalam bentuk yang dapat dipahami, misalnya melalui tahap visualisasi.
11
Dapat diilustrasikan tahapan penambangan data melalui gambar 2.2 berikut ini:
Gambar 2.2 Proses Data Mining[1] 2.3. Teknik Klasifikasi Didalam penambangan data terdapat beberapa teknik untuk mendapatkan informasi dari data. Teknik Asosiasi, Teknik Klastering dan Teknik Klasifikasi dapat digunakan untuk melakukan penambangan data. Teknik Klasifikasi merupakan salah satu teknik dalam penambangan data dengan melihat pada kelakuan dan atribut dari kelompok yang telah didefinisikan. Teknik ini dapat memberikan klasifikasi pada data baru dengan memanipulasi data yang ada yang telah diklasifikasi dan dengan menggunakan hasilnya untuk memberikan sejumlah aturan. Aturan-aturan tersebut digunakan pada data-data baru untuk diklasifikasi.
12
Proses teknik klasifikasi terdiri dari dua tahap utama, yaitu [4]:
1. Membangun model Tujuan dari tahap ini adalah menggambarkan satu set dari kelas-kelas yang ditentukan sebelumnya. Sampel diasumsikan merupakan kepunyaan suatu kelas yang sudah diketahui berdasarkan pada nilainilai atributnya. Kelas ditentukan oleh atribut label kelas. Sampel yang digunakan untuk membangun model disebut himpunan data pelatihan. Model direpresentasikan sebagai pola klasifikasi, atau formula matematis.
2. Penggunaan Model Tahap ini bertujuan untuk mengklasifikasikan objek yang baru akan didapatkan atau belum dikenal. Penilaian keakuratan dari model dapat dilakukan dengan menggunakan suatu himpunana tes. Label yang sudah diketahui dari contoh himpunan tes akan dibandingkan dengan hasil klasifikasi dari model. Tingkat keakuratan sendiri berupa persentase dari contoh himpunan tes yang diklasifikasikan secara benar oleh model.
13
Kaitan klasifikasi dengan prediksi akan dijelaskan dengan ilustrasi dari gambar berikut: Membangun model Algoritma Klasifikasi
Data Pelatihan
menghasilkan Penggunaan model Klasifikasi (Aturan)
Data Uji
Prediksi Data Baru
Aturan menghasilkan Hasil klasifikasi (hasil prediksi)
Gambar 2. 3 Proses Klasifikasi dan kaitannya dengan prediksi [5]
2.4. Pengertian Pohon Keputusan Pohon keputusan merupakan metode klasifikasi dan prediksi yang sangat kuat dan terkenal. Metode pohon keputusan mengubah fakta menjadi pohon keputusan yang merepresentasikan aturan. Sebuah pohon keputusan adalah “sebuah struktur yang dapat digunakan untuk membagi kumpulan data yang besar menjadi himpunan record yang lebih kecil dengan menerapkan serangkaian aturan keputusan, dengan masing-masing rangkaian pembagian, anggota himpunan hasil menjadi mirip satu dengan yang lain” [6]. Banyak algoritma yang dapat dipakai dalam pembentukan pohon
14
keputusan, antara lain: ID3, CART, J48 (C4.5). Pada pohon keputusan, setiap titik (node) di bagian dalam merupakan sebuah atribut, setiap cabang (branch) menggambarkan keluaran dari logical tes dan leaf node atau titik daun memnggambarkan kelas-kelas atau suatu kelas distribusi. Titik yang terletak di paling atas merupakan akar (root node). Gambar 2.4 di bawah ini akan menjelaskan bentuk dari pohon keputusan.
Akar (root node)
cabang (branches) Daun (leaf node)
Kemungkinan kejadian
Daun (leaf node)
Kemungkinan kejadian
Gambar 2.4 Gambaran Pohon Keputusan 2.5. Manfaat Pohon Keputusan Manfaat utama dari penggunaan pohon keputusan adalah “kemampuannya untuk memecah proses pengambilan keputusan yang kompleks menjadi lebih simpel sehingga pengambil keputusan akan lebih menginterpretasikan solusi dari permasalahan” [7]. Pohon Keputusan juga berguna untuk mengeksplorasi data, menemukan hubungan tersembunyi antara sejumlah calon variabel input dengan sebuah variabel target. Pohon keputusan memadukan antara eksplorasi data dan pemodelan, sehingga sangat bagus sebagai langkah awal dalam proses pemodelan bahkan ketika dijadikan sebagai model akhir dari beberapa teknik lain.
15
2.6. Kelebihan Pohon Keputusan Kelebihan dari metode pohon keputusan adalah [7]: 1. Daerah pengambilan keputusan yang sebelumnya kompleks dan sangat global, dapat diubah menjadi lebih simpel dan spesifik. 2. Eliminasi
perhitungan-perhitungan
yang
tidak
diperlukan, karena ketika menggunakan metode pohon keputusan maka contoh diuji hanya berdasarkan kriteria atau kelas tertentu. 3. Fleksibel untuk memilih fitur dari internal node yang berbeda, fitur yang terpilih akan membedakan suatu kriteria dibandingkan kriteria yang lain dalam node yang sama. Kefleksibelan metode pohon keputusan ini meningkatkan kualitas keputusan yang dihasilkan jika dibandingkan
ketika
menggunakan
metode
penghitungan satu tahap yang lebih konvensional 4. Dalam analisis multivariat, dengan kriteria dan kelas yang jumlahnya sangat banyak, seorang penguji biasanya
perlu untuk mengestimasikan baik itu
distribusi dimensi tinggi ataupun parameter tertentu dari distribusi kelas tersebut. Metode pohon keputusan dapat menghindari munculnya permasalahan ini dengan menggunakan kriteria yang jumlahnya lebih sedikit pada setiap node internal tanpa banyak mengurangi kualitas keputusan yang dihasilkan.
16
2.7. Kekurangan Pohon Keputusan Kekurangan dari metode pohon keputusan adalah [7]: 1. Terjadi overlap, terutama ketika kelas-kelas dan kriteria yang digunakan jumlahnya sangat banyak. Hal tersebut juga
dapat
menyebabkan
meningkatnya
waktu
pengambilan keputusan dan jumlah memori yang diperlukan. 2. Pengakumulasian jumlah kesalahan dari setiap tingkat dalam sebuah pohon keputusan yang besar. 3. Kesulitan dalam mendesain pohon keputusan yang optimal. 4. Hasil kualitas keputusan yang didapatkan dari metode pohon keputusan sangat tergantung pada bagaimana pohon tersebut didesain.
2.8. Algoritma J48 Pada penelitian Tugas Akhir ini akan menggunakan algoritma J48. “J48 (also known as C4.5) is an algorithm introduced by Ross Quinlan (1993) for inducing Classification Models, also called Decision Trees” dikemukakan oleh Witten[8], maka prinsip kerja algoritma J48 sama dengan C4.5 dalam proses belajar yaitu membaca seluruh sampel atau kasus dari tempat penyimpanan dan memuatnya ke memori, kemudian melakukan komputasi dengan membaca sampel-sampel di memori untuk membangun pohon yang juga disimpan di memori. Dalam algoritma J48 atau yang biasa dikenal dengan algoritma C4.5, pohon dibangun dengan cara membagi data secara rekursif hingga tiap bagian terdiri dari data yang berasal dari kelas yang sama. Bentuk pembagian(split) yang digunakan untuk membagi data itu tergantung dari jenis atribut yang digunakan. Algoritma J48 dapat menangani data numerik (kontinyu) dan diskret. Split untuk atribut numerik yaitu mengurutkan contoh
17
berdasarkan atribut kontiyu A, kemudian membentuk minimum permulaan (threshold) M dari contoh-contoh yang ada dari kelas mayoritas pada setiap partisi yang bersebelahan, lalu menggabungkan partisi-partisi yang bersebelahan tersebut dengan kelas mayoritas yang sama. Split untuk atribut diskret A mempunyai bentuk value (A) ε X dimana X ⊂ domain(A). Jika suatu himpunan data mempunyai beberapa pengamatan dengan record dengan beberapa nilai variabel tidak ada (missing value) dan jika jumlah pengamatan terbatas maka atribut dengan missing value dapat diganti dengan nilai rata-rata dari variabel yang bersangkutan. Untuk melakukan pemisahan obyek (split) dilakukan uji terhadap atribut dengan mengukur tingkat ketidakmurnian pada sebuah simpul (node). Pada algoritma J48 menggunakan rasio perolehan (gain ratio). Sebelum menghitung rasio perolehan, perlu menghitung dulu nilai informasi dalam satuan bits dari suatu kumpulan objek. Cara menghitungnya dilakukan dengan menggunakan konsep entropi. Entropi adalah pengukuran ketidakpastian rata-rata pengumpulan data. Untuk menghitung Entropi menggunakan rumus (2.1).
Entropi( S ) ( p log p ) ( p log p ) 2 2
……. (2.1)
Keterangan: S
= ruang (data) sampel yang digunakan untuk pelatihan.
p+ = jumlah kejadian yang bersolusi positif atau mendukung pada data sampel untuk kriteria tertentu. p- = adalah jumlah kejadian yang bersolusi negatif atau tidak mendukung pada data sampel untuk kriteria tertentu.
18
Catatan: 1. Entropi(S) = 0, jika semua contoh pada S berada dalam kelas yang sama. 2. Entropi(S) = 1, jika jumlah contoh positif dan negatif dalam S adalah sama. 3. 0 > Entropi(S) < 1, jika jumlah contoh positif dan negatif dalam S tidak sama
Kemudian menghitung perolehan informasi dari output data atau variabel dependent S yang dikelompokkan berdasarkan atribut A, dinotasikan dengan gain (S,A). Perolehan informasi, gain (S,A), dari atribut A relative terhadap output data S adalah:
n Si Gain( S , A) Entropy( S ) Entropy( Si ) i1 S
….. (2. 2)
Keterangan: S
: Himpunan Kasus (keadaan yang sebenarnya dari suatu urusan atau perkara atau lebih dikenal dengan kejadian).
A
: semua nilai yang mungkin dari atribut A
n
: Jumlah pemisah atau partisi pada “ A “ atau atribut
|Si|
: Jumlah kasus pada atribut ke-i
|S|
: Jumlah kasus dalam “ S ” atau himpunan kasus.
Term pertama dalam persamaan (2.2) adalah entropi total S dan term kedua adalah entropi sesudah dilakukan pemisahan data berdasarkan atribut A.
Untuk menghitung rasio perolehan perlu diketahui suatu term baru yang disebut pemisahan informasi (SplitInfo). Pemisahan informasi dihitung dengan persamaan (2.3) di bawah ini :
SplitInfo( S , A)
c
Si Si log2 S t 1 S
…..(2.3)
19
bahwa Si sampai Sc adalah c subset yang dihasilkan dari pemecahan S dengan menggunakan atribut A yang mempunyai sebanyak c nilai.
Selanjutnya rasio perolehan (gain ratio) dapat dihitung dengan persamaan (2.4) di bawah ini :
GainRatio( S , A)
Gain( S , A) … (2.4)
SplitInformation( S , A)
Jika dirangkum secara umum, algoritma J48 (C4.5) untuk membangun pohon keputusan adalah sebagai berikut: 1. Pilih atribut sebagai akar menggunakan persamaan (2.2) 2. Buat Cabang untuk masing-masing nilai menggunakan persamaan (2.3) 3. Bagi kasus dalam cabang menggunakan persamaan (2.4) 4. Ulangi proses untuk masing-masing cabang sampai semua kejadian pada cabang memiliki kelas yang sama. Contoh kasus pembuatan pohon keputusan dengan menerapkan gain dan entropi: Tabel 2. 1 Tabel Data IPK semester 1 Jenis Kelamin Perempuan Laki-Laki Perempuan Laki-Laki Laki-Laki Laki-Laki Laki-Laki Perempuan Laki-Laki Laki-Laki Perempuan Perempuan
Keterangan Sekolah Negeri Swasta Negeri Negeri Swasta Swasta Swasta Swasta Negeri Negeri Negeri Negeri
Mtk3smt1 C B C B C B C C B B B C
Fis3smt1 B B B B B B D B B B B B
IPK1 B B B B B C C B B B C C
20
Perempuan Laki-Laki Perempuan Perempuan Perempuan Perempuan Perempuan Laki-Laki Laki-Laki Laki-Laki Laki-Laki Perempuan Laki-Laki Laki-Laki
Swasta Swasta Negeri Swasta Swasta Swasta Swasta Swasta Swasta Swasta Swasta Swasta Swasta Swasta
C D B B C C B B C C C C C C
B D B B D B D B D B D B B B
B C B B B B C C C B C D B B
Pada Tabel 2.1 akan dibuat pohon keputusan untuk menentukan besar IPK semester 1 dalam kategori A, B, C dan D dengan melihat dari atribut Jenis Kelamin, Keterangan Sekolah, Nilai Matematika Kelas 3 semester 1 dan Fisika Kelas 3 semester 1. Berikut ini adalah penjelasan lebih rinci mengenai masing-masing langkah dalam pembentukan pohon keputusan dengan menggunakan algoritma J48(C4.5) untuk menyelesaikan permasalahan pada Tabel 2.1. Menghitung jumlah kasus, jumlah kasus untuk keputusan A, B, C, D dan Entropi dari semua kasus dan kasus yang dibagi berdasarkan atribut
Jenis Kelamin, Keterangan Sekolah, Nilai
Matematika Kelas 3 semester 1 dan Fisika Kelas 3 semester 1. Setelah itu lakukan penghitungan Gain untuk masing-masing atribut. Hasil perhitungan ditunjukkan oleh Tabel 2.2.
21
Tabel 2. 2 Tabel Perhitungan Node 1 JUMLAH KASUS
Node 1
TOTAL
A
26
0
B
C
D
ENTROPY
16
9
1
1.14161952
Jenis Kelamin Laki-Laki
14
0
8
6
0
0.98522813
Perempuan
12
0
8
3
1
1.18872187
Keterangan Sekolah Negeri
8
0
6
2
0
0.81127812
Swasta Matematika XII Semester 1
18
0
10
7
1
1.23266025
A
0
0
0
0
0
0
B
10
0
6
4
0
0.97095059
C
15
0
10
4
1
1.15893853
D
1
0
0
1
0
0
Fisika XII Semester 1 A
0
0
0
0
0
0
B
20
0
15
4
1
0.99176014
C
0
0
0
0
0
0
D
6
0
1
5
0
0.65002242
GAIN
SPLIT
GAIN RATIO
0.06247
0.99572
0.06273925
0.03861
0.89049
0.04336403
0.09955
1.1688
0.08518020
0.22872
0.77935
0.29347786
Baris TOTAL kolom Entropy pada Tabel 2.2 dihitung dengan persamaan (2.1), sebagai berikut:
Entropi(Total)
16 *log 26 2
16
26
9 *log 26 2
9
26
1 *log 26 2
1
26
Entropi (Total) = 1.141619525
Entropi( JenisKela min, laki laki )
8 *log 2 14
8
14
6 *log 2 14
6
14
Entropi (Jenis kelamin, laki-laki) = 0.985228136
Entropi( JenisKela min, perempuan)
8 *log 2 12
8
12
3 *log 2 12
Entropi (Jenis kelamin, Perempuan) = 1.188721876
3
12
1 *log 2 12
1
12
22
Nilai Gain pada baris Jenis Kelamin dihitung dengan menggunakan persamaan (2.2) sebagai berikut: 14 12 Gain (Total , jenisKela min) 1.141619525 * 0.985228136 * 1.188721876 26 26
Gain(total,jenis kelamin)= 0.062471 14 14 12 12 SplitInfo( total, jeniskelamin) log log 26 2 26 2 26 26
SplitInfo(total, Jenis kelamin)= 0.995727
GainRatio( total, JenisKela min)
0.062471 0.995727
GainRatio(total,Jenis Kelamin)= 0.062739258
Perhitungan tersebut dilakukan untuk semua atribut. Dari hasil tabel 2.2 dapat diketahui bahwa atribut dengan Gain tertinggi adalah Fisika XII semester 1 yaitu sebesar 0.293477869. Fisika XII semester 1 dapat menjadi node akar. Ada 2 nilai atribut Fisika XII semester 1, yaitu B dan D.
Dari hasil tersebut dapat
digambarkan pohon keputusan sementaranya, tampak pada gambar 2.5 dibawah ini: 1 Fis3smt1
B
1.1 ?
D
1.2 ?
Gambar 2.5 Pohon Keputusan Untuk Node 1
23
Selanjutnya menghitung jumlah kasus untuk keputusan B, dan Entropi dari semua kasus yang dibagi berdasarkan atribut Jenis Kelamin, Keterangan Sekolah dan Nilai Matematika Kelas 3 semester 1. Setelah itu, lakukan perhitungan Gain untuk tiap atribut. Hasil perhitungan seperti pada tabel 2.3. Tabel 2. 3 Tabel Perhitungan Node 1.1 Node 1.1
JUMLAH KASUS
A
B
C
D
ENTROPY
20
0
15
4
1
0.991760148
Fisika XII Semester 1-B
GAIN
Jenis Kelamin Laki-Laki
10
0
8
2
0
0.721928095
Perempuan
10
0
7
2
1
1.156779649
Keterangan Sekolah Negeri
8
0
6
2
0
0.811278124
Swasta
12
0
9
2
1
1.040852083
0
0
0
0
0
0
B
9
0
6
3
0
0.918295834
C
11
0
9
1
1
0.865856617
D
0
0
0
0
0
0
Matematika XII Semester 1 A
SPLIT
GAIN RATIO
0.052406
1
0.052406276
0.042738
0.970951
0.044016296
0.102306
0.992774
0.103050479
Tabel 2.3 dapat diketahui bahwa atribut dengan Gain tertinggi adalah Nilai Matematika Kelas 3 semester 1, yaitu sebesar 0.103050479. Dengan demikian Matematika Kelas 3 semester 1 dapat menjadi node cabang dari nilai atribut Fisika XII semester 1-B. Pohon keputusan selanjutnya sampai pada tahap ini seperti pada gambar 2.6 berikut ini: 1 Fis3smt1
B
D
1.2 ?
1.1 Mtk3smt1 B
1.1.1 ?
C
1.1.2 ?
Gambar 2.6 Pohon Keputusan Untuk Node 1.1
24
Selanjutnya menghitung jumlah kasus Matematika Kelas 3 semester 1 untuk keputusan B, dan Entropi dari semua kasus yang dibagi berdasarkan atribut Jenis Kelamin dan Keterangan Sekolah. Setelah itu, lakukan perhitungan Gain untuk tiap atribut. Hasil perhitungan seperti pada tabel 2.4. Tabel 2. 4 Tabel Perhitungan Node 1.1.1 Node 1.1.1
Fis3smt1-B, Mtk3smt1-B
JUMLAH KASUS
A
B
C
D
ENTROPY
9
0
6
3
0
0.918296
Jenis Kelamin Laki-Laki
6
0
4
2
0
0.918296
Perempuan
3
0
2
1
0
0.918296
Keterangan Sekolah Negeri
5
0
4
1
0
0.721928
Swasta
4
0
2
2
0
1
GAIN
SPLIT
GAIN RATIO
0
0.91829
0
0.0727
0.99107
0.0734355
Tabel 2.4 dapat diketahui bahwa atribut dengan Gain tertinggi adalah Keterangan sekolah, yaitu sebesar 0.07343556. Dengan demikian Keterangan sekolah dapat menjadi node cabang dari nilai atribut Fis3smt1-B, Mtk3smt1-B. Ada dua buah nilai atribut yang dimiliki oleh Keterangan sekolah, yaitu Negeri, dan Swasta. Dari kedua nilai atribut tersebut, nilai atribut Swasta sudah mengklasifikasikan kasus 1, yaitu keputusan B dan nilai atribut Negeri masih perlu dilakukan perhitungan lebih lanjut untuk nilai atribut ini. Dengan demikian Pohon keputusan pada gambar 2.7.
25
1 Fis3smt1
B
D
1.2 ?
1.1 Mtk3smt1 B
C
1.1.1 KetSekolah
1.1.2 ?
Negeri
Swasta
1.1.1.1 ?
B
Gambar 2.7 Pohon Keputusan Untuk Node 1.1.1 Selanjutnya menghitung jumlah kasus Fis3smt1-B, Mtk3smt1-B, keterangan sekolah-Negeri, dan Entropi dari semua kasus yang dibagi berdasarkan atribut Jenis Kelamin. Setelah itu, lakukan perhitungan Gain untuk tiap atribut. Hasil perhitungan seperti pada tabel 2.5. Tabel 2. 5 Tabel Perhitungan Node 1.1.1.1
Node
1.1.1.1
Fis3smt1-B, Mtk3smt1-B, ket-Negri
JUMLAH KASUS
A
B
C
D
ENTROPY
5
0
4
1
0
0.721928
Jenis Kelamin Laki-Laki
3
0
3
0
0
0
Perempuan
2
0
1
1
0
1
GAIN
SPLIT
GAIN RATIO
0.32192
0.97095
0.3315597
Tabel 2.5 dapat diketahui bahwa atribut dengan Gain tertinggi adalah Jenis Kelamin, yaitu sebesar 0.331559707. Dengan demikian Jenis Kelamin dapat menjadi node cabang dari nilai atribut Fis3smt1-B, Mtk3smt1-B, ket-Negri. Atribut Jenis Kelamin memiliki nilai perempuan yang sudah mengklasifikasikan kasus 1, yaitu keputusan C dan nilai laki-laki sudah mengklasifikasikan kasus 0, yaitu keputusan B. Dengan demikian Pohon keputusan pada gambar 2.8.
26
1 Fis3smt1
B
D
1.2 ?
1.1 Mtk3smt1 B
C
1.1.1 KetSekolah
Negeri
1.1.1.1 Jenis Kelamin Laki-laki
B
1.1.2 ? Swasta
B
perempuan
C
Gambar 2. 8 Pohon Keputusan Untuk Node 1.1.1.1 Selanjutnya menghitung jumlah kasus untuk keputusan Fisika XII semester 1D, dan Entropi dari semua kasus yang dibagi berdasarkan atribut Jenis Kelamin, Keterangan Sekolah dan Matematika XII semester 1. Setelah itu, lakukan perhitungan Gain untuk tiap atribut. Hasil perhitungan seperti pada tabel 2.6.
27
Tabel 2. 6 Tabel Perhitungan Node 1.2 Node 1.2
Fisika XII Semester 1-D
JUMLAH KASUS
A
B
C
D
ENTROPY
6
0
1
5
0
0.6500224
Jenis Kelamin Laki-Laki
4
0
0
4
0
0
Perempuan
2
0
1
1
0
1
Keterangan Sekolah Negeri
0
0
0
0
0
0
Swasta
6
0
1
5
0
0.6500224
Matematik a XII Semester 1 A
0
0
0
0
0
0
B
1
0
0
1
0
0
C
4
0
1
3
0
0.8112781
D
1
0
0
1
0
0
GAIN
SPLIT
GAIN RATIO
0.3166
0.91829
0.344866
0
0
0
0.1091
0.8208
0.133004
Tabel 2.6 dapat diketahui bahwa atribut dengan Gain tertinggi adalah Jenis Kelamin, yaitu sebesar 0.344866084. Dengan demikian Jenis Kelamin dapat menjadi node cabang dari nilai atribut Fis3smt1-D. Atribut Jenis Kelamin memiliki nilai perempuan yang sudah mengklasifikasikan kasus 1, yaitu keputusan B. Dengan demikian Pohon keputusan pada gambar 2.9.
28
1 Fis3smt1
B
D 1.2 Jenis Kelamin
1.1 Mtk3smt1 B
Perempuan
C B
1.1.1 KetSekolah
Negeri
1.1.2 ? Swasta
1.1.1.1 Jenis Kelamin
B
Laki-laki
perempuan
B
C
Gambar 2. 9 Pohon Keputusan Untuk Node 1.2 Selanjutnya menghitung jumlah kasus untuk keputusan Fis3smt1-B, Mtk3smt1-C, dan Entropi dari semua kasus yang dibagi berdasarkan atribut Jenis Kelamin, dan Keterangan Sekolah. Setelah itu, lakukan perhitungan Gain untuk tiap atribut. Hasil perhitungan seperti pada tabel 2.7. Tabel 2. 7 Tabel Perhitungan Node 1.1.2 Node 1.1.2
Fis3smt1-B, Mtk3smt1-C
JUMLAH KASUS
A
B
C
D
ENTROPY
11
0
9
1
1
0.865856
Jenis Kelamin Laki-Laki
4
0
4
0
0
0
Perempuan
7
0
5
1
1
0.747784
Keterangan Sekolah Negeri
3
0
2
1
0
0.918295
Swasta
8
0
7
0
1
0.543564
GAIN
SPLIT
GAIN RATIO
0.38999
0.94566
0.412403
0.22009
0.84535
0.260356
29
Tabel 2.7 dapat diketahui bahwa atribut dengan Gain tertinggi adalah Jenis Kelamin, yaitu sebesar 0.41240388. Dengan demikian Jenis Kelamin dapat menjadi node cabang dari nilai atribut Fis3smt1-B, Mtk3smt1-C. Atribut Jenis Kelamin memiliki nilai laki-laki yang sudah mengklasifikasikan kasus 0, yaitu keputusan B. Namun untuk nilai perempuan harus dilakukan perhitungan kembali. Dengan demikian Pohon keputusan pada gambar 2.10. 1 Fis3smt1
B
D
1.2 Jenis Kelamin
1.1 Mtk3smt1 B
Perempuan
C
B 1.1.1 KetSekolah
Negeri
Swasta
1.1.1.1 Jenis Kelamin Laki-laki
B
1.1.2 Jenis Kelamin Laki-laki
B
Perempuan
B 1.1.2.2 ?
perempuan
C
Gambar 2. 10 Pohon Keputusan Untuk Node 1.1.2
Selanjutnya menghitung jumlah kasus untuk keputusan Fis3smt1-B, Mtk3smt1-C, jenis kelamin-perempuan, dan Entropi dari semua kasus yang dibagi berdasarkan atribut Keterangan Sekolah. Setelah itu, lakukan perhitungan Gain untuk tiap atribut. Hasil perhitungan seperti pada tabel 2.8.
30
Tabel 2. 8 Tabel Perhitungan Node 1.1.2.2 Node
1.1.2.2
Fis3smt1-B, Mtk3smt1C, perempuan
JUMLAH KASUS
A
B
C
D
ENTROPY
7
0
5
1
1
1.14883485
Keterangan Sekolah Negeri
4
0
2
2
0
1
Swasta
3
0
3
0
0
0
GAIN
SPLIT
GAIN RATIO
0.57740
0.98522
0.5860635
Tabel 2.8 dapat diketahui bahwa atribut dengan Gain tertinggi adalah Keterangan Sekolah, yaitu sebesar 0.58606353. Dengan demikian Keterangan Sekolah dapat menjadi node cabang dari nilai atribut Fis3smt1-B, Mtk3smt1-C, jenis kelamin-perempuan. Atribut Keterangan Sekolah memiliki nilai negeri yang sudah mengklasifikasikan kasus 1, yaitu keputusan C dan nilai swasta sudah mengklasifikasikan kasus 0 yaitu keputusan B. Dengan demikian Pohon keputusan pada gambar 2.11 merupakan gambar pohon keputusan terakhir yang terbentuk.
31
1 Fis3smt1
B
D
1.2 Jenis Kelamin
1.1 Mtk3smt1 B
Perempuan
C
B 1.1.1 KetSekolah
Negeri
Swasta
1.1.1.1 Jenis Kelamin Laki-laki
1.1.2 Jenis Kelamin Laki-laki
B
Perempuan
B
1.1.2.2 Keterangan Sekolah
perempuan
Negeri
B
Swasta
C C
Gambar 2. 11 Pohon Keputusan Untuk Node 1.1.2.2
B
BAB III ANALISIS DAN PERANCANGAN SISTEM
3.1. Identifikasi Sistem Universitas Sanata Dharma setiap tahunnya membuka pendaftaran untuk penerimaan mahasiswa baru. Dalam hal seleksi penerimaan mahasiswa baru melalui jalur prestasi, Universitas Sanata Dharma memberikan syarat utama untuk mendaftar yaitu dengan melampirkan hasil belajar siswa SMA / sederajat saat kelas XI semester 1 dan semester 2 dan kelas XII semester 1. Tujuan dari syarat tersebut agar Universitas Sanata Dharma mampu menyaring calon mahasiswa yang unggul. Diharapkan mereka nantinya saat kuliah akan mendapatkan Indeks Prestasi (IP) yang baik di setiap semesternya dan lulus dengan Indeks Prestasi Kumulatif (IPK) yang baik pula. Calon mahasiswa yang berhasil lolos seleksi PMB Jalur Prestasi di Universitas Sanata Dharma merupakan orang-orang yang memenuhi kategori sebagai mahasiswa yang diterima secara khusus, karena prestasi akademik pada saat SMA. Setelah calon mahasiswa dinyatakan lolos seleksi dan diterima sebagai mahasiswa di Universitas Sanata Dharma karena prestasi akademik saat SMA, muncul sebuah pertanyaan yaitu bagaimana prestasi akademik mahasiswa tersebut pada saat kuliah, yang tercermin dalam IPK mahasiswa yang bersangkutan? Jawaban dari pertanyaan itu bisa didapatkan dengan menggali informasi dari data mahasiswa jalur prestasi tersebut. Informasi yang ingin didapat dari data tersebut adalah latar belakang mahasiswa dari jalur prestasi yang seperti apakah yang pada saat kuliah akan mendapatkan prestasi akademik Dengan Pujian dengan kategori “A”, Sangat Memuaskan dengan kategori “B”, Memuaskan dengan kategori “C” dan kurang memuaskan dengan kategori “D”. Selanjutnya klasifikasi tersebut akan dimanfaatkan untuk melakukan prediksi prestasi akademik mahasiswa yang mendaftar melalui jalur prestasi. Sebuah sistem yang akan dibangun ini diharapkan mampu mengenali pola dan memprediksi prestasi akademik mahasiswa berdasarkan masukan latar
33
belakang mahasiswa (nilai rapor, kategori asal sekolah, daerah asal sekolah, daerah asal siswa ,jurusan saat sekolah, dan jenis kelamin). Sistem tersebut menerapkan teknik klasifikasi melalui pendekatan pohon keputusan dengan algoritma J48 pada penambangan data. Data mahasiswa yang akan diteliti dan diolah merupakan data PMB Jalur Prestasi dan data akademik tahun angkatan 2005-2006 seluruh Program Studi di Universitas Sanata Dharma. Data diperoleh dari Biro Administrasi Perencanaan dan Sistem Informasi (BAPSI) Universitas Sanata Dharma.
3.2. Pemrosesan Data Awal, Input Sistem, Proses Sistem dan Output Sistem Obyek pada penelitian ini adalah Universitas Sanata Dharma Yogyakarta, yang setiap tahunnya membuka pendaftaran untuk penerimaan mahasiswa baru. Tugas Akhir ini
akan meneliti mengenai prestasi siswa saat SMA
apakah dapat mempengaruhi perkembangan prestasi akademik saat kuliah. Perlu dicari faktor-faktor apa saja yang mempengaruhi prestasi akademik dari mahasiswa. Untuk mengetahui faktor-faktor yang dapat menentukan perkembangan prestasi akademik mahasiswa jalur prestasi, maka akan dilakukan langkah-langkah penelitian sebagai berikut, yang diawali dengan proses pengumpulan data terlebih dahulu. Data yang akan diperoleh dari Universitas Sanata Dharma Yogyakarta dan yang akan diteliti adalah sebagai berikut:
34
a. Data PMB Jalur Prestasi Data PMB Jalur Prestasi ini berformat .xls. Data PMB yang didapat merupakan data tahun akademik 2005-2007. Tahun akademik 2005 jumlah data sebanyak 1734 data. Tahun akademik 2006 jumlah data sebanyak 2134 data. Tahun akademik 2007 berjumlah 2790 data.
Data PMB jalur prestasi akan dijabarkan dalam bentuk tabel 3.1 berikut ini: Tabel 3.1 Tabel Data PMB jalur prestasi No. 1.
Nama Atribut Diterima
Penjelasan
Nilai
Atribut ini menyimpan
nama program studi di Universitas
nama Program Studi
Sanata Dharma. Daftar nama program studi pada lampiran 1.
2.
3.
Nomor Alias
Jenis Kelamin
Atribut ini menyimpan
Nomor alias sebagai identitas siswa
nomor unik setiap siswa.
saat mendaftar.
Atribut ini menyimpan
Laki-laki atau perempuan.
jenis kelamin siswa. 4.
5.
Nama Kabupaten
Atribut ini menyimpan
Nama kabupaten di Indonesia. Daftar
Asal
nama kabupaten.
kabupaten pada lampiran 2.
Alamat Asal
Atribut ini menyimpan
Alamat rumah.
Alamat tempat tinggal siswa. 6.
7.
8.
Nama Kabupaten
Atribut ini menyimpan
Nama kabupaten di Indonesia. Daftar
Sekolah
nama kabupaten.
kabupaten pada lampiran 2.
Nama Sekolah
Atribut ini menyimpan
Nama sekolah.
Asal
nama sekolah siswa
Jurusan
Atribut ini menyimpan
SMU_MA_IPA, SMU_MA_IPS,
jurusan saat SMA.
SMU_MA_BUDAYA_BAHASA, SMK_EKONOMI_SMEA_SMKK, SMK_TEKNIK_STM dan SMF.
9.
Nilai rapor Kelas
Atribut ini menyimpan
XI semester 1
nilai rata-rata setiap mata
A, B, C, D
pelajaran Kelas XI semester 1. 10.
Nilai rapor Kelas
Atribut ini menyimpan
A, B, C, D
35
XI semester 2
nilai rata-rata setiap mata pelajaran Kelas XI semester 2.
11.
Nilai rapor Kelas
Atribut ini menyimpan
XII semester 1.
nilai rata-rata setiap mata
A, B, C, D
pelajaran Kelas XII semester 1. 12.
Mata Pelajaran
Atribut ini menyimpan
Untuk IPA: Bahasa Indonesia, Bahasa
nama mata pelajaran.
Inggris, Matematika, Fisika, Kimia dan Biologi. Untuk IPS: Bahasa Indonesia, Sejarah, Bahasa Inggris, Matematika, dan Ekonomi.
b. Data Nilai per Matakuliah Untuk Mahasiswa Jalur Prestasi Data Nilai per Matakuliah Untuk Mahasiswa Jalur Prestasi berformat .xls. Tahun akademik 2005 berjumlah 15429 data. Tahun akademik 2006 berjumlah 19141 data. Tahun akademik 2007 berjumlah 22191 data. Data SKS dan Nilai mahasiswa jalur prestasi untuk setiap matakuliah akan dijabarkan dalam tabel 3.2 berikut ini:
Tabel 3.2 Tabel Data Nilai Mahasiswa jalur prestasi per Matakuliah
No. 1.
Nama Atribut Fakultas
Penjelasan
Nilai
Atribut ini menyimpan
Nama fakultas di Universitas Sanata
nama fakultas.
Dharma yang dipilih dan menerima mahasiswa.
2.
3.
4.
Program Studi
Nomor Alias
Ambil
Atribut ini menyimpan
nama program studi yang dipilih dan
nama program studi.
menerima mahasiswa.
Atribut ini menyimpan
Nomor alias sebagai identitas siswa
nomor unik setiap siswa.
saat mendaftar.
Atribut ini menyimpan
Gabungan dari tahun dan semester
tahun dan semester.
yang ditempuh mahasiswa yang nantinya akan digunakan untuk
36
menghitung IPS dan IPK mahasiswa, 5.
6.
Nama
Atribut ini menyimpan
nama matakuliah yang diambil oleh
Matakuliah
nama matakuliah.
mahasiswa setiap semester.
Nilai
Atribut ini menyimpan
A, B, C, D, E, F
nilai mahasiswa.
c. Data SKS Per Program Studi Data SKS Per Program Studi berformat .xls dengan jumlah 6243 data. Data SKS per program studi akan dijabarkan dalam tabel 3.3 berikut ini:
Tabel 3.3 Tabel Data SKS Matakuliah per Program Studi
No. 1.
Nama Atribut Nama Prodi
Penjelasan
Nilai
Atribut ini menyimpan
nama seluruh program studi. Daftar
nama
Program
Studi
nama program studi pada lampiran 1.
yang
dimiliki
oleh
Universitas
Sanata
Dharma. 2.
Kode Mtk
Atribut ini menyimpan
Kode matakuliah.
kode unik matakuliah. 3.
Nama Mtk
Atribut ini menyimpan
Nama matakuliah
nama matakuliah yang dimiliki Program Universitas
oleh
setiap
Studi
di
Sanata
Dharma. 4.
Sks
Atribut ini menyimpan
1, 2, 3, 4, 5, 6
jumlah SKS matakuliah.
Data mentah tersebut nantinya akan diproses agar siap dipakai untuk proses pengolahan data.
37
3.2.1. Pemrosesan Data Awal Sebelum data diolah menggunakan sistem yang akan dibuat, dilakukan pemrosesan data awal dengan menyimpan data mentah yang semula berasal dari file excel ke dalam basis data terlebih dulu. Rincian data mentah yang digunakan: a. Data PMB Jalur Prestasi Tahun Akademik 2005 Data PMB Jalur Prestasi yang semula berupa file excel disimpan ke dalam basis data menjadi sebuah tabel dengan format penamaan 1datamentah_pmb_jp05. Tabel tersebut merupakan tabel yang menyimpan seluruh data mentah mahasiswa jalur prestasi untuk tahun akademik 2005.
Gambar 3. 1 Deskripsi Tabel Data Mentah PMB 2005
b. Data PMB Jalur Prestasi Tahun Akademik 2006 Data PMB Jalur Prestasi yang semula berupa file excel disimpan ke dalam basis data menjadi sebuah tabel dengan format penamaan 1datamentah_pmb_jp06. Tabel tersebut merupakan tabel yang menyimpan seluruh data mentah mahasiswa jalur prestasi untuk tahun akademik 2006.
38
Gambar 3. 2 Deskripsi Tabel Data Mentah PMB 2006
c. Data Nilai Matakuliah Tahun Akademik 2005 Data Nilai Matakuliah pun semula berupa file excel yang kemudian disimpan ke dalam basis data menjadi sebuah tabel dengan format penamaan 1datamentah_sks05. Tabel tersebut merupakan tabel yang menyimpan seluruh data mentah nilai matakuliah mahasiswa jalur prestasi untuk tahun akademik 2005.
Gambar 3. 3 Deskripsi Tabel Data Mentah Nilai Matakuliah 2005
39
d. Data Nilai Matakuliah Tahun Akademik 2006 Data Nilai Matakuliah pun semula berupa file excel yang kemudian disimpan ke dalam basis data menjadi sebuah tabel dengan format penamaan 1datamentah_sks06. Tabel tersebut merupakan tabel yang menyimpan seluruh data mentah nilai matakuliah mahasiswa jalur prestasi untuk tahun akademik 2006.
Gambar 3. 4 Deskripsi Tabel Data Mentah Nilai Matakuliah 2006
e. Data SKS per Program Studi. Data sks per program studi yang awalnya bertipe .xls digabungkan dan disimpan ke dalam basis data menjadi sebuah tabel dengan format penamaan 1datamentah_sks_prodi. Tabel tersebut merupakan tabel data mentah sks per program studi.
Gambar 3. 5 Deskripsi Tabel SKS per Program Studi
40
Setelah seluruh data mentah tersimpan di dalam basis data, selanjutnya dilakukan pemrosesan terhadap data awal. Penjelasan rinci memproses data awal adalah sebagai berikut: 1.
Pembersihan Data (Data Cleaning) Pada tahap ini akan dilakukan pembersihan terhadap data
PMB jalur prestasi, data nilai per matakuliah untuk mahasiswa jalur prestasi, data sks per program studi, data ketua program studi dan data dosen pembimbing akademik mahasiswa jalur prestasi yaitu menghapus baris data yang bernilai null atau kosong terutama pada kolom Nomor alias pada tabel Data PMB jalur prestasi dan tabel data nilai per matakuliah untuk mahasiswa jalur prestasi dengan jumlah data terhapus sebanyak 100 data, kolom nama program studi pada tabel data sks per program studi dengan jumlah data terhapus sebanyak 5 data karena diasumsikan bahwa bila nomor alias dan nama prodi tidak ada isinya atau null maka terjadi kesalahan ketika proses penyimpanan data, maka baris tersebut dihapus. Data yang telah dibersihkan tidak akan dipakai pada langkah-langkah selanjutnya.
2.
Integrasi Data (Data Integration) Pada tahap ini akan dilakukan penggabungan seluruh data
mentah yang telah didapat. Data yang didapat harus diintegrasikan ke
dalam
satu
5konvert_gabung_pmb.
tabel
dengan
format
penamaan
41
Gambar 3. 6 Deskripsi Tabel Hasil Penggabungan Data Mentah
3.
Penyeleksian Data (Data Selection) Pada tahap ini akan dilakukan penyeleksian data-data yang
kurang relevan dengan penelitian. Berdasarkan data yang telah didapat, maka data yang diseleksi(data yang tidak akan dipakai) adalah kolom alamat asal pada tabel 1datamentah_pmb_jp05 dan 1datamentah_pmb_jp06 karena dianggap tidak dapat dijadikan variabel penentu dalam pembentukan pohon keputusan.
4.
Transformasi Data (Data Transformation) Pada tahap ini akan dilakukan proses pengubahan data
mentah menjadi data yang mudah dikelola. Berdasarkan data-data yang didapat dari Universitas, sebagian besar data berupa nilai angka, sehingga untuk memudahkan proses penambangan data,
42
maka data-data angka tersebut akan dikelompokkan berdasarkan jangkauan(interval) pengkategorian nilai.
tertentu.
Hal
ini
untuk
memudahkan
Proses tranformasi data akan dilakukan
untuk data PMB Jalur Prestasi 2005 – 2006 untuk setiap nilai rapor kelas XI semester 1-semester2 dan kelas XII semester 1 per mata pelajaran (Bahasa Indonesia, Bahasa Inggris, Matematika, Fisika, Kimia, Biologi, Sejarah dan Ekonomi) dan untuk data akademik ipk dari semester 1- semester 8.
1. Transformasi untuk data PMB Pengelompokan interval untuk data PMB menggunakan asumsi bahawa data terdistribusi normal [10]. Contoh data di bawah ini menggambarkan proses transformasi data untuk nilai rapor kelas XI semester 1 dan 2 serta nilai rapor kelas XII semester 1 menjadi kategorial dari sebuah interval tertentu sesuai perhitungan distribusi normal.
Tabel 3.4 Tabel data PMB NoAlias 159 159 159 159 159 159 159 159 141 141 141 141 141 141 141 141
Kls2Smt1 8 8 5 7 6 7 7 5 7.2 7.2 7.5 7.2 6.6 6.6 7.7 0
Kls2Smt2 8 7 5 6 6 8 8 8 7.8 7 7.2 7.8 6.8 7.9 7.8 0
Kls3Smt1 6 8 6 6 6 6 6 0 7.3 0 7.6 6.8 6 6.5 7 0
MataPelajaran Bahasa Indonesia Sejarah Bahasa Inggris Matematika Fisika Biologi Kimia Ekonomi Bahasa Indonesia Sejarah Bahasa Inggris Matematika Fisika Biologi Kimia Ekonomi
43
Dari table 3.4 di atas, data dibagi berdasarkan nilai rapor kelas dan semester. Atribut nilai rapor dipartisi menjadi 4 interval, masing-masing interval dinyatakan dalam kategori A, B, C, D.
Maka aturan untuk interval nilai rapor adalah:
Tabel 3. 5 Tabel Aturan Pengkategorisasian Nilai Rapor dan IPK No.
Aturan
Kategori
Interval 1.
Jika x < m - 1.5 * σ
D
2.
Jika m – 1.5 * σ ≤ x < m
C
3.
Jika m ≤ x < m + 1.5 * σ
B
4.
Jika x ≥ m + 1.5 * σ
A
Keterangan: x= nilai rapor kelas XI semester 1 dan 2 serta nilai rapor kelas XII semester 1 yang terdistribusi normal m =Mean atau nilai rata-rata dari jumlah x σ = Standard deviasi xi= skor pada saat i(index) = rata-rata skor
rumus standard deviasi yang digunakan:
…….(3.1)
Dari data diketahui bahwa: m = 7.60 σ = 0.66
44
Hasil dari pengelompokan nilai rapor kelas XI semester 1 dan 2 serta nilai rapor kelas XII semester 1 terlihat pada tabel 3.5 berikut: Tabel 3.6 Hasil Transformasi untuk nilai rapor angkatan 2005 NoAlias
Konvert_Kls2Smt1
Konvert_Kls2Smt2
Konvert_Kls3Smt1
MataPelajaran
159
A
A
A
Bahasa Indonesia
159
A
A
A
Sejarah
159
A
A
A
Bahasa Inggris
159
A
A
A
Matematika
159
A
A
A
Fisika
159
A
A
A
Biologi
159
A
A
A
Kimia
159
A
A
A
Ekonomi
141
A
A
A
Bahasa Indonesia
141
A
A
A
Sejarah
141
A
A
A
Bahasa Inggris
141
A
A
A
Matematika
141
A
A
A
Fisika
141
A
A
A
Biologi
141
A
A
A
Kimia
141
D
D
D
Ekonomi
5.
Penambangan Data (Data Mining) Data-data yang telah diolah akan dianalisis menggunakan
metode pohon keputusan dengan menggunakan algoritma J48. Data yang diteliti akan dibatasi pada data 2 tahun angkatan di Universitas Sanata Dharma yaitu tahun angakatan 2005-2006 karena pada tahun akademik tersebut mahasiswa telah menempuh perkulihan selama lebih dari 8 semester sehingga diharapkan ketika proses pengolahan data akan didapatkan pola yang menarik. Pada tahap ini, akan ditentukan juga variabel-variabel yang akan
45
digunakan untuk menambang data. Variabel-variabel tersebut antara lain sebagai beikut: 1)
Variabel input, yang dibedakan menjadi 2 yaitu input untuk data pelatihan (training) dan data uji (testing) yang terdiri dari: a. Nilai beberapa mata pelajaran meliputi Bahasa Indonesia, Bahasa Inggris, Matematika, Fisika, Kimia, Biologi, Sejarah dan Ekonomi pada rapor tiap semester sejak kelas XI sampai kelas XII semester gasal, ini merupakan variabel input untuk data percobaan dan data uji. b. IPK Mahasiswa dari semester 1 – semester 8 karena diasumsikan bahwa lama studi yang ideal adalah 4 tahun atau 8 semester.
2) Variabel output, yaitu pola klasifikasi dari latar belakang mahasiswa PMB jalur prestasi berdasar prestasi akademiknya dalam bentuk aturan dan hasil prediksi prestasi akademik mahasiswa berupa IPK.
6.
Evaluasi Pola yang Ditemukan (Pattern Evaluation) Pada tahap ini, pengetahuan atau pola yang didapat dari
proses penambangan data akan dievaluasi dengan hipotesa yang telah dibentuk sebelumnya. Akhir dari tahap ini adalah diperolehnya persentase akurasi antara data pelatihan dengan data uji, sehingga dapat ditentukan tingkat keberhasilan proses penambangan data yang telah dilakukan.
46
Pada penelitian Tugas Akhir ini, teknik akurasi yang digunakan yaitu K-Fold Cross Validation yang didefinisikan oleh W. Sarle [11] sebagai berikut: “Validasi silang dan bootstrapping merupakan metode dalam memperkirakan generalisasi kesalahan (error) berdasarkan resampling “. Metode k-fold cross validation membagi sebuah himpunan contoh secara acak menjadi k subset yang saling bebas. “Dilakukan pengulangan sebanyak k-kali untuk pelatihan dan pengujian. Pada setiap ulangan, disisakan satu subset untuk pengujian dan subset lainnya untuk pelatihan” [12]. Tingkat akurasi dihitung dengan “membagi jumlah keseluruhan klasifikasi yang benar dengan jumlah semua instance pada data awal “[1] atau dapat dinyatakan ke dalam bentuk sebagai berikut:
tingkat akurasi = data uji benar pada klasifikasi
x 100 %
total data uji
Penelitian Tugas Akhir ini akan menggunakan 3 Folds. Proses pembagian data ke dalam folds akan diilustrasikan sebagai berikut:
Contoh kasus : Program Studi Teknik Informatika Jumlah data: 21 data Keputusan IPK: A, B, C, D ( 4 Keputusan)
47
Langkah-langkah: 1. Pisahkan data pelatihan berdasarkan masing-masing keputusan kemudian 3 folds diisi dengan data data dari masing-masing keputusan. Fold 1 Mahasiswa Fold 2
Fold 3
Gambar 3. 7 Proses Pembagian data ke dalam 3 Folds Proses iterasi yang terjadi, sebagai berikut: 1. Iterasi pertama Data pada fold 1 dan 2 akan menjadi data pelatihan sedangkan untuk data uji adalah fold 3. 2.Iterasi kedua Data pada fold 1 dan 3 akan menjadi data pelatihan sedangkan untuk data uji adalah fold 2.
3. Iterasi ketiga Data pada fold 2 dan 3 akan menjadi data pelatihan sedangkan untuk data uji adalah fold 1.
48
Menurut Witten H [8] “Why 10? Extensive tests on numerous datasets, with different learning techniques, have shown that 10 is about the right number of folds to get the best estimate of error, and there is also some theoretical evidence that backs this up”. Setelah dilakukan percobaan terhadap data pelatihan dengan menggunakan WEKA, akurasi paling tinggi dihasilkan oleh 10 folds kemudian diurutan kedua tertinggi yaitu 3 folds dan akurasi paling rendah dihasilkan jika menggunakan 5 folds, namun ketika melihat dari jumlah data yang dimiliki hanya 482 data untuk seluruh prodi, maka dalam penelitian tugas akhir ini perhitungan akurasi menggunakan teknik validasi silang dengan 3 Folds.
7.
Presentasi Pengetahuan (Pengetahuan Presentation) Tahap ini merupakan tahap akhir dari penelitian. Pola yang
didapat perlu ditampilkan kedalam bentuk yang mudah dimenrti oleh pihak yang berkepentingan. Oleh karena itu, pada tahap ini akan dilakukan pembuatan aplikasi dengan antar muka pengguna yang mudah dimengerti oleh pihak Universitas. 3.2.2. Input Sistem Dalam penelitian Tugas Akhir ini akan terdapat 38 atribut yang digunakan. Untuk 30 atribut merupakan atribut input, sedangkan 1 atribut yaitu IPK merupakan atribut tujuan, dan IPK merupakan atribut untuk menyimpan hasil prediksi IPK semester tertentu saja sesuai dengan settingan atribut oleh pengguna sebelum melakukan prediksi. Daftar atribut seperti pada Tabel 3.7 dibawah ini.
49
a. Input Data Pelatihan PMB Jalur Prestasi Data Pelatihan PMB jalur prestasi akan dijabarkan dalam bentuk tabel 3.7 berikut ini: Tabel 3.7 Tabel Data Pelatihan PMB Jalur Prestasi No.
Nama Atribut
Penjelasan
Nilai
1.
Jurusan SMA
Atribut ini menyimpan jurusan siswa saat SMA
SMU_MA_IPA, SMU_MA_IPS, SMU_MA_BUDAYA_BAHASA, SMK_EKONOMI_SMEA_SMKK, SMK_TEKNIK_STM dan SMF.
2.
Kategori SMA
Swasta / Negeri
3. 4.
Nama Kabupaten Sekolah Nama Kabupaten Asal
5.
Jenis Kelamin
6.
Bindo_Kls2sms1
7.
Bing_ Kls2sms1
8.
Matematika_ Kls2sms1
9.
Fisika_ Kls2sms1
10.
Kimia_ Kls2sms1
11.
Biologi_ Kls2sms1
13.
Ekonomi_ Kls2sms1
Atribut ini menyimpan kategori sekolah asal. Atribut ini menyimpan nama kabupaten. Atribut ini menyimpan nama kabupaten. Atribut ini menyimpan jenis kelamin siswa. Atribut ini menyimpan nilai rapor siswa untuk mata pelajaran Bahasa Indonesia kelas XI semester I. Atribut ini menyimpan nilai rapor siswa untuk mata pelajaran Bahasa Inggris kelas XI semester I. Atribut ini menyimpan nilai rapor siswa untuk mata pelajaran Matematika kelas XI semester I. Atribut ini menyimpan nilai rapor siswa untuk mata pelajaran Fisika kelas XI semester I. Atribut ini menyimpan nilai rapor siswa untuk mata pelajaran Kimia kelas XI semester I. Atribut ini menyimpan nilai rapor siswa untuk mata pelajaran Biologi kelas XI semester I. Atribut ini menyimpan nilai rapor siswa untuk mata pelajaran Ekonomi
Nama kabupaten di Indonesia. Nama kabupaten di Indonesia. laki-laki / perempuan. A, B, C, D
A, B, C, D
A, B, C, D
A, B, C, D
A, B, C, D
A, B, C, D
A, B, C, D
50
13.
Sejarah_ Kls2sms1
14.
Bindo_Kls2sms2
15.
Bing_Kls2sms2
16.
Matematika_Kls2sms2
17.
Fisika_Kls2sms2
18.
Kimia_Kls2sms2
19.
Biologi_Kls2sms2
20.
Ekonomi_Kls2sms2
21.
Sejarah_Kls2sms2
22.
Bindo_Kls3sms1
23.
Bing_Kls3sms1
24.
Matematika_Kls3sms1
kelas XI semester I. Atribut ini menyimpan nilai rapor siswa untuk mata pelajaran Sejarah kelas XI semester I. Atribut ini menyimpan nilai rapor siswa untuk mata pelajaran Bahasa Indonesia kelas XI semester II. Atribut ini menyimpan nilai rapor siswa untuk mata pelajaran Bahasa Inggris kelas XI semester II. Atribut ini menyimpan nilai rapor siswa untuk mata pelajaran Matematika kelas XI semester II. Atribut ini menyimpan nilai rapor siswa untuk mata pelajaran Fisika kelas XI semester II. Atribut ini menyimpan nilai rapor siswa untuk mata pelajaran Kimia kelas XI semester II. Atribut ini menyimpan nilai rapor siswa untuk mata pelajaran Biologi kelas XI semester II. Atribut ini menyimpan nilai rapor siswa untuk mata pelajaran Ekonomi kelas XI semester II. Atribut ini menyimpan nilai rapor siswa untuk mata pelajaran Sejarah kelas XI semester II. Atribut ini menyimpan nilai rapor siswa untuk mata pelajaran Bahasa Indonesia kelas XII semester I. Atribut ini menyimpan nilai rapor siswa untuk mata pelajaran Bahasa Inggris kelas XII semester I. Atribut ini menyimpan nilai rapor siswa untuk mata pelajaran Matematika kelas XII semester I.
A, B, C, D
A, B, C, D
A, B, C, D
A, B, C, D
A, B, C, D
A, B, C, D
A, B, C, D
A, B, C, D
A, B, C, D
A, B, C, D
A, B, C, D
A, B, C, D
51
25.
Fisika_Kls3sms1
26.
Kimia_Kls3sms1
27.
Biologi_Kls3sms1
28.
Ekonomi_Kls3sms1
29.
Sejarah_Kls3sms1
30.
IPK_SemesterI
31.
IPK_SemesterII
32
IPK_SemesterIII
33.
IPK_SemesterIV
34.
IPK_SemesterV
35.
IPK_SemesterVI
36.
IPK_SemesterVII
37.
IPK_SemesterVIII
Atribut ini menyimpan nilai rapor siswa untuk mata pelajaran Fisika kelas XII semester I. Atribut ini menyimpan nilai rapor siswa untuk mata pelajaran Kimia kelas XII semester I. Atribut ini menyimpan nilai rapor siswa untuk mata pelajaran Biologi kelas XII semester I. Atribut ini menyimpan nilai rapor siswa untuk mata pelajaran Ekonomi kelas XII semester I. Atribut ini menyimpan nilai rapor siswa untuk mata pelajaran Sejarah kelas XII semester I. Atribut ini menyimpan IPK mahasiswa semester I. Atribut ini menyimpan IPK mahasiswa semester II. Atribut ini menyimpan IPK mahasiswa semester III. Atribut ini menyimpan IPK mahasiswa semester IV. Atribut ini menyimpan IPK mahasiswa semester V. Atribut ini menyimpan IPK mahasiswa semester VI. Atribut ini menyimpan IPK mahasiswa semester VII. Atribut ini menyimpan IPK mahasiswa semester VIII.
A, B, C, D
A, B, C, D
A, B, C, D
A, B, C, D
A, B, C, D
A, B, C, D
A, B, C, D
A, B, C, D
A, B, C, D
A, B, C, D
A, B, C, D
A, B, C, D
A, B, C, D
Sedangkan masukan untuk data uji hampir sama dengan masukan untuk data pelatihan, hanya saja masukan untuk data uji tidak mempunyai atribut IPK; yang ada adalah atribut prediksi. Masukan untuk data uji juga terdiri dari terdiri dari 30 atribut . Untuk 29 atribut yaitu atribut nomor 1-29 di dalam tabel 3.8 merupakan
52
atribut input, sedangkan atribut ke-30 merupakan prediksi. Atribut prediksi digunakan untuk menyimpan hasil uji yang dibuat oleh penggolong (classifier). Berikut ini adalah masukan untuk data uji.
Tabel 3.8 Tabel Data Uji PMB Jalur Prestasi No.
Nama Atribut
Penjelasan
1.
Jurusan SMA
Atribut ini menyimpan jurusan siswa saat SMA
2.
Kategori SMA
3.
Nama Kabupaten Sekolah
4.
Nama Kabupaten Asal
5.
Jenis Kelamin
6.
Bindo_Kls2sms1
7.
Bing_ Kls2sms1
8.
Matematika_ Kls2sms1
9.
Fisika_ Kls2sms1
10.
Kimia_ Kls2sms1
Atribut ini menyimpan kategori sekolah asal. Atribut ini menyimpan nama kabupaten. Atribut ini menyimpan nama kabupaten. Atribut ini menyimpan jenis kelamin siswa. Atribut ini menyimpan nilai rapor siswa untuk mata pelajaran Bahasa Indonesia kelas XI semester I. Atribut ini menyimpan nilai rapor siswa untuk mata pelajaran Bahasa Inggris kelas XI semester I. Atribut ini menyimpan nilai rapor siswa untuk mata pelajaran Matematika kelas XI semester I. Atribut ini menyimpan nilai rapor siswa untuk mata pelajaran Fisika kelas XI semester I. Atribut ini menyimpan nilai rapor siswa untuk mata pelajaran Kimia kelas XI semester I.
Nilai SMU_MA_IPA, SMU_MA_IPS, SMU_MA_BUDAYA_BAHASA, SMK_EKONOMI_SMEA_SMKK, SMK_TEKNIK_STM dan SMF. Swasta / Negeri
Nama kabupaten di Indonesia.
Nama kabupaten di Indonesia.
laki-laki / perempuan.
A, B, C, D
A, B, C, D
A, B, C, D
A, B, C, D
A, B, C, D
53
11.
Biologi_ Kls2sms1
13.
Ekonomi_ Kls2sms1
13.
Sejarah_ Kls2sms1
14.
Bindo_Kls2sms2
15.
Bing_Kls2sms2
16.
Matematika_Kls2sms2
17.
Fisika_Kls2sms2
18.
Kimia_Kls2sms2
19.
Biologi_Kls2sms2
20.
Ekonomi_Kls2sms2
21.
Sejarah_Kls2sms2
Atribut ini menyimpan nilai rapor siswa untuk mata pelajaran Biologi kelas XI semester I. Atribut ini menyimpan nilai rapor siswa untuk mata pelajaran Ekonomi kelas XI semester I. Atribut ini menyimpan nilai rapor siswa untuk mata pelajaran Sejarah kelas XI semester I. Atribut ini menyimpan nilai rapor siswa untuk mata pelajaran Bahasa Indonesia kelas XI semester II. Atribut ini menyimpan nilai rapor siswa untuk mata pelajaran Bahasa Inggris kelas XI semester II. Atribut ini menyimpan nilai rapor siswa untuk mata pelajaran Matematika kelas XI semester II. Atribut ini menyimpan nilai rapor siswa untuk mata pelajaran Fisika kelas XI semester II. Atribut ini menyimpan nilai rapor siswa untuk mata pelajaran Kimia kelas XI semester II. Atribut ini menyimpan nilai rapor siswa untuk mata pelajaran Biologi kelas XI semester II. Atribut ini menyimpan nilai rapor siswa untuk mata pelajaran Ekonomi kelas XI semester II. Atribut ini menyimpan nilai rapor siswa untuk mata
A, B, C, D
A, B, C, D
A, B, C, D
A, B, C, D
A, B, C, D
A, B, C, D
A, B, C, D
A, B, C, D
A, B, C, D
A, B, C, D
A, B, C, D
54
22.
Bindo_Kls3sms1
23.
Bing_Kls3sms1
24.
Matematika_Kls3sms1
25.
Fisika_Kls3sms1
26.
Kimia_Kls3sms1
27.
Biologi_Kls3sms1
28.
Ekonomi_Kls3sms1
29.
Sejarah_Kls3sms1
30.
IPK
pelajaran Sejarah kelas XI semester II. Atribut ini menyimpan nilai rapor siswa untuk mata pelajaran Bahasa Indonesia kelas XII semester I. Atribut ini menyimpan nilai rapor siswa untuk mata pelajaran Bahasa Inggris kelas XII semester I. Atribut ini menyimpan nilai rapor siswa untuk mata pelajaran Matematika kelas XII semester I. Atribut ini menyimpan nilai rapor siswa untuk mata pelajaran Fisika kelas XII semester I. Atribut ini menyimpan nilai rapor siswa untuk mata pelajaran Kimia kelas XII semester I. Atribut ini menyimpan nilai rapor siswa untuk mata pelajaran Biologi kelas XII semester I. Atribut ini menyimpan nilai rapor siswa untuk mata pelajaran Ekonomi kelas XII semester I. Atribut ini menyimpan nilai rapor siswa untuk mata pelajaran Sejarah kelas XII semester I. Atribut ini menyimpan IPK mahasiswa.
A, B, C, D
A, B, C, D
A, B, C, D
A, B, C, D
A, B, C, D
A, B, C, D
A, B, C, D
A, B, C, D
A, B, C, D
55
3.2.3. Proses Sistem Setelah data dimasukan, dilakukan pemrosesan data. Proses yang akan terjadi di dalam sistem adalah: a. Pembentukan pohon Langkah-langkah dalam pembentukan pohon di dalam sistem akan dijelaskan lebih rinci sebagai berikut: 1. Mencari simpul akar Data yang telah dimasukan dan dibersihkan dicari nilai perolehan (gain). Sebelum menghitung nilai perolehan, perlu menghitung dulu nilai informasi dalam satuan bits dari suatu kumpulan
objek.
Cara
menghitungnya
dilakukan
dengan
menggunakan konsep entropi pada persamaan (2.1). Setelah entropi setiap atribut telah dihitung dapat dicari nilai gain yang tertinggi dengan menggunakan persamaan (2.2) agar ditemukan simpul akar.
2. Pembentukan node cabang Lakukan proses perhitungan nilai gain dan entropi seperti pada proses pencarian simpul akar untuk atribut-atribut yang masih terbagi dalam semua kelas sampai semua atribut terbagi dalam 1 kelas yang sama.
b. Pemangkasan Pohon Proses pemangkasan pohon dilakukan didalam sistem. Proses pemangkasan pohon bertujuan untuk menyederhanakan pohon keputusan agar lebih mudah untuk diterjemahkan. Selain itu juga pemangkasan pohon dapat mengurangi tingkat kesalahan dalam proses prediksi.
56
3.2.4. Output Sistem Setiap tahapan proses dalam program mempunyai keluaran sebagai berikut: a. Proses input data menampilkan: 1) Jumlah sampel data keseluruhan. 2) Jumlah atribut keseluruhan. 3) Nilai dari atribut masukan. b. Proses klasifikasi menampilkan: 1) Pola dari klasifikasi. 2) Hasil prediksi untuk setiap record pada data uji. 3) Tingkat validitas prediksi.
57
3.3. Perancangan Struktur Data Setelah dilakukan proses percobaan pada data maka pohon yang terbentuk akan disimpan ke dalam vector. Pemilihan penggunaan model struktur data vector karena tidak diperlukan pendeklarasian panjang vector yang akan digunakan untuk tempat penyimpan data. Kapasitas vector akan langsung bertambah sesuai dengan jumlah data yang akan disimpan. Vector pada index pertama menyimpan nomor node, index kedua menyimpan tingat pohon, Index ketiga menyimpan nomor akar sebelumnya atau parent node, Index keempat menyimpan node, dan index kelima menyimpan nilai (value) cabang. Tabel 3.9 menjelaskan penyimpanan pohon secara visual.
Tabel 3.9 Tabel Visualisasi Penyimpanan Pohon
Id Node 1 2 3
Level
Id Parent
1 2 3
0 1 2
Node JenisKelamin Jurusan B
Keputusan (Null) Laki-laki IPA
58
3.4. Perancangan Umum Sistem 3.4.1. Diagram Use Case Login
<< depends on >>
Pre-Processing Tambah data << depends on >>
Transformasi data
Buat aturan
Pengguna
Lihat detail aturan
Simpan aturan << depends on >>
Prediksi Kelompok
<< depends on >>
Prediksi Personal Logout
Gambar 3.8 DiagramUse Case
59
Tabel 3.10 di bawah ini merupakan penggambaran umum mengenai Use Case yang terdapat pada sistem prediksi prestasi akademik. Tabel 3.10 Deskripsi Use Case Nomor Use Case PPA-001
Nama Use Case Login
PPA-002
Tambah Data
PPA-003
Transformasi Data
PPA-004
Buat Aturan
PPA-005
Lihat Detail Aturan
PPA-006
Simpan Aturan
PPA-007
Prediksi Prestasi Akademik (Prediksi Kelompok)
PPA-008
Prediksi Prestasi Akademik (Prediksi Personal)
PPA-009
Logout
Deskripsi
Aktor
Use case ini menggambarkan proses login sebelum masuk ke sistem. Pengguna harus memasukan username dan password untuk dapat masuk ke sistem. Use case ini menggambarkan proses input data untuk proses pelatihan ataupun pengujian. Use case ini menggambarkan proses Transformasi data untuk data pada proses pelatihan ataupun uji. Use case ini menggambarkan proses dimana pengguna melakukan proses pembuatan aturan baru yang akan digunakan untuk prediksi. Use case ini menggambarkan proses menampilkan aturan yang terbentuk dari proses penambangan data. Use case ini menggambarkan proses menyimpan aturan yang terbentuk dari proses penambangan data. Use case ini menggambarkan proses penambangan data untuk melakukan prediksi terhadap prestasi akademik mahasiswa untuk sekumpulan mahasiswa. Use case ini menggambarkan proses penambangan data untuk melakukan prediksi terhadap prestasi akademik mahasiswa untuk 1 mahasiswa. Use case ini menggambarkan proses dimana pengguna ingin keluar dari sistem.
Pengguna
Pengguna
Pengguna
Pengguna
Pengguna
Pengguna
Pengguna
Pengguna
Pengguna
3.4.2. Narasi Use Case Setiap usecase pada bagian sebelumnya akan dijelaskan lebih rinci dalam sebuah narasi yang merupakan deskripsi tekstual dari kejadian bisnis dan bagaimana pengguna berinteraksi dengan sistem untuk menyelesaikan tugas tersebut.
60
Tanggal : 08 February 2011 Versi : 1.0
Penulis :Florensia Dwinta Nama Use-case: ID Use-case: Prioritas : Pelaku Bisnis Utama: Pelaku Lain yang Terlibat: Pihak Lain yang Berkepentingan: Deskripsi:
Login PPA-001 Tinggi Pengguna -
Kondisi Awal:
Pengguna telah memiliki password.
Pemicu:
Use case ini digunakan apabila ada Pengguna yang ingin masuk ke dalam sistem.
Urutan Akrivitas Normal:
Aksi Aktor Step 1: membuka tampilan pertama sistem prediksi prestasi akademik (SPPA)
Use case ini menggambarkan proses login sebelum masuk ke sistem.
Step 3: memasukan username dan password lalu klik login. Step 5: mendapat pemberitahuan bahwa berhasil masuk ke sistem Aktivitas Alternatif: Kesimpulan: Kondisi Akhir:
Prosedur Bisnis: Asumsi:
Jenis Use-Case Kebutuhan Operasional:
Respon Sistem
Step 2: Sistem meminta untuk memasukan username dan password.
Step 4: Sistem melakukan cek validasi di database.
Step 6: Sistem menampilkan halaman utama.
Use case ini berhenti apabila Pengguna telah berhasil masuk ke dalam menu utama. Pengguna berhasil login dan masuk ke menu utama. Pengguna tidak jadi masuk ke sistem. Pengguna harus memasukan username dan password dengan benar. Pengguna sudah mengetahui username dan password
61
Tanggal : 08 February 2011 Versi : 1.0
Penulis :Florensia Dwinta Nama Use-case: ID Use-case: Prioritas : Pelaku Bisnis Utama: Pelaku Lain yang Terlibat: Pihak Lain yang Berkepentingan: Deskripsi:
Tambah Data PPA-002 Tinggi Pengguna -
Kondisi Awal:
Pengguna telah berhasil login
Pemicu:
- usecase ini digunakan apabila pengguna ingin melakukan proses pembuatan rule ataupun prediksi. Aksi Aktor Respon Sistem Step 1: Sistem menampilkan halaman SelectProdiSemesterSPPA. Step 2: Pengguna memilih program studi dan semester yang akan dibuat rule dengan mengklik combo box program studi dan semester. Step 3: Sistem menampilkan halaman Preprocessing sesuai dengan parameter semester yang telah dipilih oleh Step 4: Pengguna pengguna. klik tombol browse.
Urutan Akrivitas Normal:
Use case ini menggambarkan proses input data pelatihan ataupun pengujian.
Step 6: Pengguna memilih data yang akan diinputkan dalam bentuk file yang bertipe .csv
Aktivitas Alternatif:
Jenis Use-Case Kebutuhan Operasional:
Step 5: sistem menampilkan JFileChooser.
Step 7: Sistem melakukan proses pembacaan file kemudian menampilkan data pada JTable. Alt-Step 4: Jika format yang dipilih oleh pengguna bukan .csv maka sistem akan menampilkan dialog
62
pesan yang berisi informasi agar memasukan file dengan tipe .csv . Use case ini berhenti apabila data telah berhasil ditampilkan di dalam sistem. Data berhasil dibaca dan ditampilkan dalam JTable. Data tidak berhasil dibaca dan diinputkan. Pengguna harus memilih file dengan tipe yang sesuai format, yaitu .csv . Data yang ingin diolah memiliki urutan field yang sesuai dengan format.
Kesimpulan: Kondisi Akhir:
Prosedur Bisnis: Asumsi:
Tanggal : 08 February 2011 Versi : 1.0
Penulis :Florensia Dwinta Nama Use-case: ID Use-case: Prioritas : Pelaku Bisnis Utama: Pelaku Lain yang Terlibat:
Transformasi data PPA-003 Tinggi Pengguna -
Pihak Lain yang Berkepentingan: Deskripsi:
-
Kondisi Awal:
-Pengguna telah berhasil login dan berada pada halaman preprocessing. -Pengguna telah memasukkan data. Aksi Aktor Respon Sistem Step 1: pengguna menekan tombol Transformasi Data Step 2: sistem akan menjalankan method untuk melakukan transformasi data dan penampilkan dialog pesan yang berisi proses transformasi data telah berhasil dilakukan dan menampilkan data transformasi ke dalam JTabel. Use case ini berhenti apabila proses transformasi data berhasil dilakukan ataupun gagal dilakukan.
Pemicu: Urutan Akrivitas Normal:
Aktivitas Alternatif: Kesimpulan:
Jenis Use-Case Kebutuhan Operasional:
Use case ini menggambarkan proses transformasi data pelatihan maupun data uji.
63
Kondisi Akhir: Prosedur Bisnis: Asumsi:
Menampilkan data yang telah dilakukan proses transformasi. -Data yang akan ubah telah berhasil disimpan di dalam JTabel. Data yang ingin diolah memiliki urutan field yang sesuai dengan format.
Tanggal : 08 February 2011 Versi : 1.0
Penulis :Florensia Dwinta Nama Use-case: ID Use-case: Prioritas : Pelaku Bisnis Utama: Pelaku Lain yang Terlibat:
Buat Aturan PPA-004 Tinggi Pengguna -
Pihak Lain yang Berkepentingan: Deskripsi:
-
Kondisi Awal:
-Pengguna telah melakukan proses transformasi data.
Pemicu:
-Usecase ini digunakan apabila pengguna ingin melakukan prediksi prestasi akademik. Aksi Aktor Respon Sistem Step 1: Pengguna menekan tombol buat aturan Step 2: sistem akan melakukan proses klasifikasi data sehingga terbentuk aturan baru. Setelah itu aturan yang terbentuk kemudian disimpan ke dalam database.
Urutan Akrivitas Normal:
Jenis Use-Case Kebutuhan Operasional:
Use case ini menggambarkan proses pelatihan data untuk membentuk sebuah aturan yang nantinya akan digunakan untuk prediksi.
Aktivitas Alternatif: Kesimpulan:
Use case ini berhenti apabila sistem telah selesai melakukan proses klasifikasi data dan aturan telah berhasil disimpan di dalam database.
Kondisi Akhir: Prosedur Bisnis: Asumsi:
-
64
Tanggal : 08 February 2011 Versi : 1.0
Penulis :Florensia Dwinta Nama Use-case: ID Use-case: Prioritas : Pelaku Bisnis Utama: Pelaku Lain yang Terlibat:
Lihat Detail Aturan PPA-005 Normal Pengguna -
Pihak Lain yang Berkepentingan: Deskripsi:
-
Kondisi Awal: Pemicu: Urutan Akrivitas Normal:
Jenis Use-Case Kebutuhan Operasional:
Use case ini menggambarkan proses menampilkan aturan yang terbentuk dari proses pembuatan aturan data. -Pengguna telah melakukan proses pembuatan aturan(rule). -Usecase ini berjalan ketika proses pembuatan aturan telah berhasil dilakukan. Aksi Aktor Respon Sistem Step 1: sistem akan menampilkan halaman HasilPreprocessing yang berisi detail aturan yang telah terbentuk dari proses pembuatan aturan.
Aktivitas Alternatif:
-
Kesimpulan:
Use case ini berhenti apabila pengguna keluar dari sistem.
Kondisi Akhir: Prosedur Bisnis: Asumsi:
-
65
Tanggal : 08 February 2011 Versi : 1.0
Penulis :Florensia Dwinta Nama Use-case: ID Use-case: Prioritas : Pelaku Bisnis Utama: Pelaku Lain yang Terlibat:
Simpan Aturan PPA-006 Normal Pengguna -
Pihak Lain yang Berkepentingan: Deskripsi:
-
Kondisi Awal:
-Pengguna telah melakukan proses pembuatan rule.
Pemicu:
-Usecase ini akan berjalan otomatis ketika pengguna melakukan proses pembuatan rule. Aksi Aktor Respon Sistem Step 1: setelah proses pembentukan tree, pengguna menekan Step 2: sistem akan otomatis menyimpan rule yang terbentuk ke dalam database .
Urutan Akrivitas Normal:
Jenis Use-Case Kebutuhan Operasional:
Use case ini menggambarkan proses menyimpan aturan yang terbentuk dari proses pembuatan rule.
Aktivitas Alternatif:
-
Kesimpulan:
Use case ini berhenti apabila pengguna keluar dari sistem. -Pengguna harus melakukan proses penambangan data. -
Kondisi Akhir: Prosedur Bisnis: Asumsi:
66
Tanggal : 08 February 2011 Versi : 1.0
Penulis :Florensia Dwinta Nama Use-case: ID Use-case: Prioritas : Pelaku Bisnis Utama: Pelaku Lain yang Terlibat:
Prediksi Kelompok PPA-007 Tinggi Pengguna -
Pihak Lain yang Berkepentingan: Deskripsi:
-
Kondisi Awal:
-Aturan dan pola sudah terbentuk.
Pemicu: Urutan Akrivitas Normal:
-
Jenis Use-Case Kebutuhan Operasional:
Use case ini menggambarkan proses prediksi terhadap prestasi akademik kumpulan mahasiswa.
Aksi Aktor Step 1: Pengguna memasukkan data uji dengan menekan tombol browse. Kemudian menekan tombol prediksi untuk melakukan prediksi.
Respon Sistem
Step 2: sistem akan mengklasifikasikan kumpulan data data mahasiswa dengan mencocokan data aturan yang terbentuk sebelumnya. Setelah proses, sistem akan menampilkan hasil prediksi.
Aktivitas Alternatif:
-
Kesimpulan:
Use case ini berhenti apabila pengguna keluar dari sistem. -Pengguna harus melakukan proses penambangan data. -
Kondisi Akhir: Prosedur Bisnis: Asumsi:
67
Tanggal : 08 February 2011 Versi : 1.0
Penulis :Florensia Dwinta Nama Use-case: ID Use-case: Prioritas : Pelaku Bisnis Utama: Pelaku Lain yang Terlibat: Pihak Lain yang Berkepentingan: Deskripsi:
Prediksi Personal PPA-008 Tinggi Pengguna -
Kondisi Awal:
-Aturan dan pola sudah terbentuk.
Pemicu: Urutan Akrivitas Normal:
-
Jenis Use-Case Kebutuhan Operasional:
Use case ini menggambarkan proses untuk melakukan prediksi terhadap prestasi akademik seorang mahasiswa.
Aksi Aktor Step 1: Pengguna memasukan data seorang mahasiswa satu per satu, kemudian pengguna menekan tombol proses untuk melakukan prediksi.
Respon Sistem
Step 2: sistem akan mengklasifikasikan kumpulan data data mahasiswa dengan mencocokan data aturan yang terbentuk sebelumnya. Setelah proses, sistem akan menampilkan hasil prediksi.
Aktivitas Alternatif:
-
Kesimpulan:
Use case ini berhenti apabila pengguna keluar dari sistem. -Pengguna harus melakukan proses penambangan data. -
Kondisi Akhir: Prosedur Bisnis: Asumsi:
68
Tanggal : 08 February 2011 Versi : 1.0
Penulis :Florensia Dwinta Nama Use-case: ID Use-case: Prioritas : Pelaku Bisnis Utama: Pelaku Lain yang Terlibat:
Logout PPA-009 Normal Pengguna -
Pihak Lain yang Berkepentingan: Deskripsi:
-
Kondisi Awal: Pemicu: Urutan Akrivitas Normal:
Jenis Use-Case Kebutuhan Operasional:
Use case ini menggambarkan proses dimana pengguna ingin keluar dari sistem. Pengguna telah login. Aksi Aktor Step 1: pengguna memilih menu logout
Respon Sistem
Step 2: Sistem menampilkan halaman login Aktivitas Alternatif: Kesimpulan: Kondisi Akhir: Prosedur Bisnis: Asumsi:
Use case ini berhenti apabila Pengguna telah kembali ke halaman login. -
69
3.4.3. Diagram Aktivitas Diagram Aktivitas merupakan diagram yang menjelaskan aktivitas pengguna dengan program. 3.4.3.1.
Diagram Aktivitas Login
Sistem
Pengguna Awal Menjalankan program sistem prediksi prestasi akademik (SPPA)
Menampilkan form login Input username dan password kemudian login
Melakukan autentifikasi pengguna Tidak cocok
Cocok
Menampilkan form login dan keterangan username dan password tidak cocok
Menampilkan halaman utama sistem
Akhir
Gambar 3. 9 Diagran Aktivitas Login
70
3.4.3.2.
Diagram Aktivitas Tambah Data
Pengguna
Sistem Awal
Menampilkan halaman SelectProdiSemesterSPPA
Memilih program studi dan semester yang akan diteliti.
Menampilkan halaman PreprocessingSPPA sesuai semester yang diteliti Menekan tombol browse
Menampilkan file chooser
Pilih data
Menampilkan dalam JTable
Menampilkan data
Akhir
Gambar 3. 10 Gambar Diagram Aktivitas Tambah Data
71
3.4.3.3.
Diagram Aktivitas Transformasi Data
Pengguna
Sistem
Awal Klik tombol Transformasi Data
Menjalankan fungsi Transformasi data
Menampilkan data yang telah dibersihkan ke dalam JTable
Akhir
Gambar 3. 11 Diagram Aktivitas Transformasi Data
3.4.3.4.
Diagram Aktivitas Buat Aturan
Pengguna
Sistem
Awal Klik tombol buat aturan
Melakukan proses klasifikasi data dan menyimpan aturan baru ke Dalam database
Akhir
Gambar 3. 12 Diagram Aktivitas Buat Aturan
72
3.4.3.5.
Diagram Aktivitas Lihat Detail Aturan
Pengguna
Sistem
Awal Klik tombol buat aturan saat klasifikasi
Menampilkan halaman HasilPreprocessingSPPA
Akhir
Gambar 3. 13 Diagram Aktivitas Lihat Detail Aturan 3.4.3.6.
Diagram Aktivitas Simpan Aturan
Pengguna
Sistem
Awal
Klik tombol buat aturan
Sistem langsung menjalankan fungsi membuat tree dan menyimpannya ke Database
Akhir
Gambar 3. 14 Diagram Aktivitas Simpan Aturan
73
3.4.3.7.
Diagram Aktivitas Prediksi Prestasi Kelompok
Pengguna
Sistem
Awal Klik menu Prediksi Kelompok
Klik tombol browse untuk menginput data berupa file .csv
Menampilkan halaman PrediksiKelompokSPPA
Klik tombol prediksi
Menampilkan hasil prediksi
Akhir
Gambar 3. 15 Diagram Aktivitas Prediksi Prestasi Kelompok
74
3.4.3.8.
Diagram Aktivitas Prediksi Prestasi Personal
Pengguna
Sistem
Awal Klik menu Prediksi Personal
Memasukkan data dari tampilan
Menampilkan halaman PrediksiPersonalSPPA
Klik tombol prediksi
Menampilkan hasil prediksi
Akhir
Gambar 3. 16 Diagram Aktivitas Prediksi Prestasi Personal
75
3.4.3.9.
Diagram Aktivitas Logout
Pengguna
Sistem
Awal
Pilih menu logout
Menampilkan halaman login
Akhir
Gambar 3. 17 Diagram Aktivitas Logout
76
3.5. Diagram Kelas
77
3.6. Atribut dan Method No 1. 2. 3. 4. 5 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
Nama Kelas LoginSPPA SelectedProdiSemesterSPPA HomeSPPA PrediksiPersonalSPPA PrediksiKelompokSPPA PreprocessingSPPA Aturan Mahasiswa TransformasiData HasilPreprocessingSPPA DatabaseConnection enumAtribut enumNilaiKeputusanIPK enumNilaiJenisKelamin enumNilaiJurusan enumNilaiKeteranganSekolah enumNilaiKabupaten enumNilaiRapor CrossValidation Pengguna
Jenis Interface Interface Interface Interface Interface Interface Entities Entities Entities Interface Entities Entities Entities Entities Entities Entities Entities Entities Entities Entities
No. Tabel Tabel 3.11 Tabel 3.12 Tabel 3.13 Tabel 3.14 Tabel 3.15 Tabel 3.16 Tabel 3.17 Tabel 3.18 Tabel 3.19 Tabel 3.20 Tabel 3.21 Tabel 3.22 Tabel 3.23 Tabel 3.24 Tabel 3.25 Tabel 3.26 Tabel 3.27 Tabel 3.28 Tabel 3.29 Tabel 3.30
3.6.1. LoginSPPA Tabel 3. 11 Kelas Interface LoginSPPA Atribut: Method: 1. private void LoginButtonActionPerformed(java.awt.event.ActionEvent evt) Input : username, password Output : Halaman SelectProdiSemesterSPPA Algoritma : String username = UsernameTextBoxGlass.getText(); String paswd = passwordBox.getText(); int rs = 0; try { rs = Pengguna.login(username, paswd); } catch (SQLException ex) { ex.getMessage();
78
} if (rs>0) { SelectProdiSemesterSPPA f = new SelectProdiSemesterSPPA(); f.setVisible(true); this.setVisible(false); } else { JOptionPane.showMessageDialog(null,"Login Gagal"); }
3.6.2. SelectedProdiSemesterSPPA Tabel 3. 12 Kelas Interface SelectedProdiSemesterSPPA Atribut: Method: 1. private void nextJButtonActionPerformed(java.awt.event.ActionEvent evt) Input : kode prodi, kode semester Output : Halaman HomeSPPA Algoritma : a. HomeSPPA test2=new HomeSPPA(kodePro, kodeSmt); b. test2.setVisible(true); c. this.dispose();
3.6.3. HomeSPPA Tabel 3. 13 Kelas Interface HomeSPPA Atribut: private boolean pohonkeputusan; private int prodiPengujian; private int semester; Method: 1. private void jMenuPreprocessingActionPerformed(java.awt.event.ActionEvent evt) Input: Output: Halaman PreprocessingSPPA Algoritma: a. if(pohonkeputusan==false) b. if (semester==1) PreprocessingSPPA testPrepro1 = new PreprocessingSPPA(prodiPengujian, semester); testPrepro1.setVisible(true); this.dispose(); c. else if (semester==2) PreprocessingSPPA2 testPrepro2 = new PreprocessingSPPA2(prodiPengujian, semester);
79
testPrepro2.setVisible(true); this.dispose(); d.else if (semester==3) PreprocessingSPPA3 testPrepro3 = new PreprocessingSPPA3(prodiPengujian, semester); testPrepro3.setVisible(true); this.dispose(); e. else if (semester==4) PreprocessingSPPA4 testPrepro4 = new PreprocessingSPPA4(prodiPengujian, semester); testPrepro4.setVisible(true); this.dispose(); f. else if (semester==5) PreprocessingSPPA5 testPrepro5 = new PreprocessingSPPA5(prodiPengujian, semester); testPrepro5.setVisible(true); this.dispose(); g. else if (semester==6) PreprocessingSPPA6 testPrepro6 = new PreprocessingSPPA6(prodiPengujian, semester); testPrepro6.setVisible(true); this.dispose(); h. else if (semester==7) PreprocessingSPPA7 testPrepro7 = new PreprocessingSPPA7(prodiPengujian, semester); testPrepro7.setVisible(true); this.dispose(); i. else if (semester==8) PreprocessingSPPA8 testPrepro8 = new PreprocessingSPPA8(prodiPengujian, semester); testPrepro8.setVisible(true); this.dispose(); 2. private void GroupPredictionMenuItemActionPerformed(java.awt.event.ActionEvent evt) Input : Output : Halaman PrediksiKelompokSPPA Algoritma: a. if (pohonkeputusan==true) PrediksiKelompokSPPA viewTree = new PrediksiKelompokSPPA(prodiPengujian,semester); viewTree.setVisible(true); this.dispose(); b. else Pesan: “Pohon Belum Terbentuk" 3. private void PersonalPredictionMenuItemActionPerformed(java.awt.event.ActionEvent evt) Input: Output: Halaman PrediksiPersonalSPPA Algoritma: a. if (pohonkeputusan==true)
80
SelectProdiSemesterSPPA test=new SelectProdiSemesterSPPA(); PrediksiPersonalSPPA viewTree = new PrediksiPersonalSPPA(prodiPengujian,semester); viewTree.setVisible(true); this.dispose(); b. else Pesan: "Pohon Belum Terbentuk”
3.6.4. PrediksiPersonalSPPA Tabel 3. 14 Kelas Interface PrediksiPersonalSPPA Atribut: private static Vector pohonKeputusan; private int selectedSemester; private int selectedProdi; private static String konvertBindo1; private static String konvertBindo2; private static String konvertBindo3; private static String konvertBing1; private static String konvertBing2; private static String konvertBing3; private static String konvertMtk1; private static String konvertMtk2; private static String konvertMtk3; private static String konvertFisika1; private static String konvertFisika2; private static String konvertFisika3; private static String konvertBiologi1; private static String konvertBiologi2; private static String konvertBiologi3; private static String konvertKimia1; private static String konvertKimia2; private static String konvertKimia3; private static String konvertEko1; private static String konvertEko2; private static String konvertEko3; private static String konvertSej1; private static String konvertSej2; private static String konvertSej3; private static String konvertIPK1; private static String konvertIPK2; private static String konvertIPK3; private static String konvertIPK4; private static String konvertIPK5; private static String konvertIPK6; private static String konvertIPK7; private static String konvertIPK8; private Mahasiswa dataset; Method: 1. public void generateData(int semester)
81
Input: Vector mahasiswa Output: Dataset Algoritma: a. Object TransformasiData b. if (semester == 1) // sampai semester == 8 c. Object Mahasiswa d. ambil nilai avg dari database e. looping selama masih ada resultset f. if (rs.getString("NamaAtribut").equalsIgnoreCase("bIndo1")) g. ambil nilai avg untuk bahasa indonesia h. ambil nilai stdv untuk bahasa indonesia i. looping sampai avg dan stdv
2. private void PrediksiButtonGlassActionPerformed(java.awt.event.ActionEvent evt) Input: Vector datamahsw Output: Hasil prediksi IPK Algoritma: a. panggil method generateData(selectedSemester); b. buat object Aturan c. panggil method getRoot di kelas aturan untuk mendapatkan id root d. mulai prediksi prediksi.prosesPrediksi(i); e. cek apakah IPK==null f . getKeputusanIPK(); g. jika null tampilkan pesan “Data tidak dapat dipredisi” 3. private void BackButtonGlassActionPerformed(java.awt.event.ActionEvent evt) { Input: Output: halaman HomeSPPA Algoritma: HomeSPPA viewTree = new HomeSPPA(selectedProdi,selectedSemester); viewTree.setVisible(true); this.dispose();
3.6.5. PrediksiKelompokSPPA Tabel 3. 15 Kelas Interface PrediksiKelompokSPPA Atribut: private Mahasiswa mahasiswa[]; private DefaultTableModel tabelModAwal; private static int selectedProdi; private static int selectedSemester; private String semesterTerpilih; private int jumAtributPelatihan = 29;
82
private Vector pohonkeputusan; private Vector dataset; Method: 1. private void ButtonPrediksiActionPerformed(java.awt.event.ActionEvent evt) Input: Vector mahasiswa Output: Hasil prediksi IPK Algoritma: a. buat object Aturan b. buat object TransformasiData c. Looping sebanyak data mahasiswa d. masukan data mahasiswa ke dalam object array mhs e. ResultSet rs = TransformasiData.getRerataStdv(selectedProdi, selectedSemester); f. looping while (rs.next()) { g. cek if (Nama atribut == Bindo) // cek sebanyak jumlah atribut h. set obyek mahasiswa untuk nilai Bindo i. looping object mahasiswa j. cari id root Aturan.getRoot(selectedProdi, selectedSemester); k. mulai proses prediksi prediksi.prosesPrediksi(i); l. cek if (prediksi.getIPK_Keputusan() != null) { m. prediksi.getIPK_Keputusan(), index, 30); n. else pesan: "-" 2. private void ButtonBackActionPerformed(java.awt.event.ActionEvent evt) Input: Output: Halaman HomeSPPA Algoritma: a. HomeSPPA viewTree = new HomeSPPA(selectedProdi, selectedSemester); b. viewTree.setVisible(true); c. this.dispose(); 3. private void ButtonBrowseActionPerformed(java.awt.event.ActionEvent evt) { Input: Output: Data Mahasiswa Algoritma: a. ambil data dari JFileChooser b. cek if (fc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) c. set lokasiFile d. cek if (mahasiswa != null) e. Looping sebanyak mahasiswa f. masukkan data ke dalam JTabel
83
3.6.6. PreprocessingSPPA Tabel 3. 16 Kelas Interface PreprocessingSPPA Atribut: private Mahasiswa mahasiswa[]; private DefaultTableModel tabelModAwal; private DefaultTableModel tabelModKonvert; private int selectedProdi; private int selectedSemester; private String semesterTerpilih; private Mahasiswa mhsi[]; private int jumAtributPelatihan = 29; private Vector pohonkeputusan; private Vector pohonkeputusan2; private Vector dataset;
Method: 1. private void BrowseButtonGlassActionPerformed(java.awt.event.ActionEvent evt)
Input: Output: Data Mahasiswa Algoritma: a. ambil data dari JFileChooser b. cek if (fc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) c. set lokasiFile d. cek if (mahasiswa != null) e. Looping sebanyak mahasiswa f. masukkan data ke dalam JTabel 2. private void TransformasiButtonGlassActionPerformed(java.awt.event.ActionEvent evt) Input: Vector dataset Output: Data transformasi Algoritma: a. buat object [] bertipe double untuk menampung semua nilai yang akan di Transform b. buat object kelas TransformasiData c. Looping sebanyak jumlah dataset d. looping sebanyak jumlah atribut yang akan ditransform e. cek masing-masing nilai kemudian dimasukkan kedalam array [] f. mulai melakukan transformasi sebanyak jumlah atribut yang akan ditransform g. Looping untuk memasukan data yang sudah ditransform ke dalam JTabel h. masukkan data transform ke dalam object vector untuk digunakan proses berikutnya 3. private void CreateClasifikationButtonGlassActionPerformed(java.awt.event.ActionEvent evt)
84
Input: Vector data mahasiswa Output: Akurasi, Halaman HasilPreprocessingSPPA Algoritma: a. buat object vector pohon keputusan b. buat object kelas CrossValidation c. buat object kelas Aturan d. looping untuk menhitung akurasi ( loop sebanyak 3 kali) e. buat object Vector[] untuk menampung data masing-masing folds f. Mulai membuat pohon untuk penghitungan akurasi J48CrossValidation(0, 1, folds[1], null, selectedProdi, selectedSemester, iterasi) g. looping sebanyak jumlah data pada masing-masing folds h. cari root getRootCrossValidation(selectedProdi,selectedSemester,iterasi); i. proses prediksi prediksi.prosesPrediksiCrossValidation(idRoot,iterasi); j. cek if (ipkCrosvalid.equalsIgnoreCase(ipkAsli)) k. hitung akurasi= (jumBenar/totaldata)*100 l. hitung rata-rata akurasi= totalakurasi/3; m. Mulai membuat pola n. panggil method J48(0, 1, dataset, null); o. cek if (pohonkeputusan != null) p. buka halaman HasilPreprocessingSPPA q. tampilkan pola 4. public void J48(int idMaster, int level, Vector dataMhsw, String value) throws SQLException Input: Vector dataset, int semester, int prodi Output:Vector pohonkeputusan Algoritma: a. cari node root test.createNode(dataMhsw, pohonkeputusan, smt) b. buat pohon c. cek if(level
85
a. cari node root test.createNode(dataMhsw, pohonkeputusan, smt) b. buat pohon c. cek if(level
3.6.7. Aturan Tabel 3. 17 Kelas Entity Aturan Atribut: private Mahasiswa mahasiswa private String IPK_Keputusan private int selectedProdi private int selectedSemester Method: 1. public static boolean cekPola(int prod, int smt) throws SQLException Input: kode prodi, kode semeseter Output: true or false Algoritma: a. Open Connection b. Cek dalam database pola yang id prodi= kode prodi dan id semester= kode semester c. jika ada, return true d. else, return false 2. public static boolean cekPolaCrossValidation(int prod, int smt, int iterasi) throws SQLException Input: kode prodi, kode semeseter Output: IdNode root
86
Algoritma: a. Open Connection b. Cek dalam database polaCrossValidation yang id prodi= kode prodi dan id semester= kode semester dan iterasi= kode iterasi c. jika ada, return true d. else, return false 3. public static int getRoot(int prodi, int smt) throws SQLException Input: kode prodi, kode semester Output: Id node root Algoritma: a. Open Connection b. select IdNode dari tabel pola yang idParet=0 dan idprodi= kode prodi dan Idsemester=kode semester c. return id root
4. public static int getRootCrossValidation(int prodi, int smt, int iterasi) throws SQLException Input: kode prodi, kode semester, kode iterasi Output: IdNode root untuk cross validation Algoritma: a. Open Connection b. select IdNode dari tabel pola yang idParet=0 dan idprodi= kode prodi dan Idsemester=kode semester dan IdIterasi=iterasi c. return id root 5. public static ResultSet getChild(int prodi, int smt, int parent) throws SQLException Input: kode prodi, kode semester, kode parent Output: resultset daftar anak dari root Algoritma: a. Open Connection b. select * from pola_semester where IdParent= parent and IdProdi= prodi and IdSemester=smt c. return rset; 6. public static ResultSet getChildCrossValidation(int prodi, int smt, int parent, int iterasi) throws SQLException Input: kode prodi, kode semester, kode parent, iterasi Output: resultset daftar anak dari root untuk cross validation Algoritma: a. Open Connection
87
b. select * from polaCrossValidation where IdParent= parent and IdProdi= prodi and IdSemester=smt and IdIterasi=iterasi c. return rset 7. public static ResultSet getAttribute(int IdNode) throws SQLException Input: kode node Output: daftar seluruh atribut Algoritma: a. Open Connection b. select * from pola_semester where IdNode= IdNode c. return rset 8. public static ResultSet getAttributeCrossValidation(int IdNode) throws SQLException Input: kode node Output: daftar seluruh atribut
Algoritma: a. Open Connection b. select * from polaCrossvalidation where IdNode= IdNode and IdIterasi=iterasi c. return rset; 9. public static String nodeParent(int idChild) throws SQLException Input: kode node anak Output: Nilai Node parent Algoritma: a. Open Connection b. select a.Node from pola_semester a, pola_semester b where b.IdNode=idChild and b.idParent=a.IdNode c. return rset; 10. public static String nodeParentCrossValidation(int idChild, iterasi) throws SQLException Input: kode node anak Output: Nilai Node parent Algoritma: a. Open Connection b. select a.Node from polaCrosValidation a, polaCrosValidation b where b.IdNode=idChild and b.idParent=a.IdNode and b.IdIterasi=iterasi c. return rset; 11. public void prosesPrediksi(int idNode) throws SQLException Input: kode root
88
Output: Keputusan IPK Algoritma: a. mencari anak dari root yang terbaru b. mencari node yang berada pada kedudukan leaf c. cek apakah atribut pada posisi daun d. jika ya, set ipk keputusan e. else f. cek if (resultNode.getInt("IdParent") == 0) cek apakah atribut tersebut atribut root g. resultChild.beforeFirst();//mengembalikan cursor ke posisi awal h.
looping while (resultChild.next()) { // memeriksa nilai anak dari tiap jumlah anak
i. j.
terbentuk dalam pola ambil nilai prediksigetValuePrediction(resultChild.getInt("IdNode")) cek if( ipk prediksi == nilai prediksi) prosesPrediksi(resultChild.getInt("IdNode"));// rekursif prosesPrediksi dengan id
yang
node yang baru break; k.
else cek if (resultNode.getInt("IdParent") == 0) cek apakah atribut tersebut atribut
root l.
resultChild.beforeFirst();//mengembalikan cursor ke posisi awal
m.
looping while (resultChild.next()) { // memeriksa nilai anak dari tiap jumlah anak
n. o.
terbentuk dalam pola ambil nilai prediksigetValuePrediction(resultChild.getInt("IdNode")) cek if( ipk prediksi == nilai prediksi) prosesPrediksi(resultChild.getInt("IdNode"));// rekursif prosesPrediksi dengan id
yang
node yang baru break;
3.6.8. Mahasiswa Tabel 3. 18 Kelas Entity Mahasiswa Atribut: private String noAlias; private String jk; private String jurusan; private String kabupatenAsal; private String kabupatenSekolah; private String ketSekolah; private double bIndo1; private double bIndo2; private double bIndo3; private double bIng1; private double bIng2;
89
private double bIng3; private double mtk1; private double mtk2; private double mtk3; private double fisika1; private double fisika2; private double fisika3; private double kimia1; private double kimia2; private double kimia3; private double bio1; private double bio2; private double bio3; private double sejarah1; private double sejarah2; private double sejarah3; private double eko1; private double eko2; private double eko3; private double ip1; private double ip2; private double ip3; private double ip4; private double ip5; private double ip6; private double ip7; private double ip8; private String kvtBindo1; private String kvtBindo2; private String kvtBindo3; private String kvtBing1; private String kvtBing2; private String kvtBing3; private String kvtMtk1; private String kvtMtk2; private String kvtMtk3; private String kvtFisika1; private String kvtFisika2; private String kvtFisika3; private String kvtKimia1; private String kvtKimia2; private String kvtKimia3; private String kvtBio1; private String kvtBio2; private String kvtBio3; private String kvtSejarah1; private String kvtSejarah2; private String kvtSejarah3; private String kvtEko1; private String kvtEko2; private String kvtEko3; private String kvtIp1; private String kvtIp2; private String kvtIp3; private String kvtIp4;
90
private String kvtIp5; private String kvtIp6; private String kvtIp7; private String kvtIp8; private String kepIPK; Method: 1. public static Mahasiswa[] newFilePrediction(File file, int semester) throws IOException Input: file cvs Output: object mahasiswa Algoritma: a. cek if (file.getName().endsWith(".csv")) BufferedReader br = new BufferedReader(new FileReader(file)); BufferedReader row = new BufferedReader(new FileReader(file)); Mahasiswa[] mhs; String strLine = ""; StringTokenizer st = null; int lineNumber = 0, tokenNumber = 0; int jumrow = 0; b.
selama while ((strLine = row.readLine()) != null) jumrow++;
c. buat object mhs = new Mahasiswa[jumrow]; d. looping sebanyak jumlah data e. set object mahasiswa sesuai f. return mhs
3.6.9. TransformasiData Tabel 3. 19 Kelas Entity TransformasiData Atribut: Method: 1. public double avgNilaiRaport(double[] mhswa) Input: array mahasiswa yang bertipe double Output: nilai rata-rata (mean) Algoritma: a. double average = 0; // jumlah nilai bahasa indonesia b. loopingin sebanyak jum data for (int i = 0; i < mhswa.length; i++) c. hitung rata-rata average += mhswa[i]; d. return average / mhswa.length;
91
2. public double stdvNilaiRaport(double avg, double[] arrNilai) Input: avg, double array nilai Output: standard deviasi tiapatribut Algoritma: a. double sum = 0; b. looping sebanyaj jumlah datafor (int i = 0; i < arrNilai.length; i++) c. hitung jumlah sum += Math.pow((arrNilai[i] - avg), 2); // menghitung jumlah (x-mean^2) d return Math.sqrt(sum / ((arrNilai.length) - 1)); 3. public String KonversiNilai(double avg, double std, double nil) Input: avg, std, nilai Output: Hasil konversi nilai A, B, C, D Algoritma: a. set double batasAtas = 0; b. hitunga batas atas batasAtas = avg + (1.5 * std); c. set double batasBawah = 0; d hitung batas bawah batasBawah = avg - (1.5 * std); e. cek if (nil < batasBawah) f. return "D"; g. else if (batasBawah <= nil && nil < avg) h. return "C"; i . else if (avg <= nil && nil < batasAtas) { j. return "B"; k. else if (nil >= batasAtas) { l. return "A";
3.6.10. HasilPreprocessingSPPA Tabel 3. 20 Kelas Interface HasilPreprocessingSPPA Atribut: private Vector pohonKeputusan; private enumAtribut atribut1; private int selectedSemester; private int selectedProdi; Method: 1. private void JButtonPrediksiActionPerformed(java.awt.event.ActionEvent evt) Input:Output: JTree aturan Algoritma: a. if (pohonKeputusan != null) b. HomeSPPA viewTree = new HomeSPPA(selectedProdi,selectedSemester); c. viewTree.setVisible(true);
92
d. this.dispose(); e. else Tampilkan pesan: "Pohon Belum Terbentuk"
3.6.11. DatabaseConnection Tabel 3. 21 Kelas Controller DatabaseConnection Atribut: String url String user String password ResultSet rs public Statement st Connection conn Method: 1. public DatabaseConnection() // konstruktor Input:Output: koneksi ke dalam database Algoritma: a. set connector ke mysql database Class.forName("com.mysql.jdbc.Driver") b. test koneksi conn = (Connection) DriverManager.getConnection(url, user, password); c. buat statement st = conn.createStatement(); 2.
public ResultSet lihatData(String sql) throws SQLException
Input: query Output: Resultset Algoritma: a. ResultSet rset=null; b. rset=st.executeQuery(sql); c. return rset; 3. public static int getIdProdi(String NamaProdi) throws SQLException Input: Nama prodi Output: Kode prodi Algoritma: a. membuat object kelas DatabaseConnection b. membuat query memanggil store procedureString sql = "call spCariKodeProdi(?,?)" c. open connection dengan callablestatement
93
CallableStatement callst = (CallableStatement) conn.openConnection().prepareCall(sql) d. set parameter namacallst.setString(1, NamaProdi) e. get out parameter kode prodicallst.registerOutParameter(2, java.sql.Types.INTEGER) f. execute querycallst.execute() g. return kode 4. public static int getIdSemester(String smt) throws SQLException Input: Nama semester Output: kode semester Algoritma: a. membuat object kelas databaseconnection b. membuat query memanggil store procedure String sql = "call spCariKodeSemester(?,?)" c. open connection dengan callablestatement CallableStatement callst = (CallableStatement) conn.openConnection().prepareCall(sql) d. set parameter namacallst.setString(1, smt); e. get out parameter kode semester callst.registerOutParameter(2, java.sql.Types.INTEGER); f. execute query callst.execute(); g. return kode 5. public static String getNamaSemester(int kode) throws SQLException Input: kode semester Output: nama semester Algoritma: a. membuat object kelas databaseconnection b. membuat query memanggil store procedure String sql = "call spCariNamaSemester(?,?)" c. open connection dengan callablestatement CallableStatement callst = (CallableStatement) conn.openConnection().prepareCall(sql) d. set parameter kode callst.setInt(1, kode); e. get out parameter nama semester callst.registerOutParameter(2,java.sql.Types.VARCHAR); f. execute query callst.execute(); g. return nama;
3.6.12. enumAtribut Tabel 3. 22 Kelas enumeration enumAtribut Atribut: jurusan, keteranganSekolah, kabupatenSekolah, kabupatenAsal, sex, bIndo1, bIndo2, bIndo3, bIng1, bIng2, bIng3, mtk1, mtk2, mtk3, fisika1, fisika2, fisika3, bio1, bio2, bio3, kimia1, kimia2, kimia3, eko1, eko2, eko3, sejarah1, sejarah2, sejarah3, ip1, ip2, ip3, ip4, ip5, ip6,
94
ip7, ip8; Method: -
3.6.13. enumNilaiKeputusanIPK Tabel 3. 23 Kelas Enumeration enumNilaiKeputusan Atribut: A, B, C, D; Method:-
3.6.14. enumNilaiJenisKelamin Tabel 3. 24 Kelas Enumeration enumNilaiJenisKelamin Atribut: Laki_Laki, Perempuan; Method: -
3.6.15. enumNilaiJurusan Tabel 3. 25 Kelas Enumeration enumNilaiJurusan Atribut: SMU_MA_IPA, SMU_MA_IPS, SMU_MA_BUDAYA_BAHASA, SMK_EKONOMI_SMEA_SMKK, SMK_TEKNIK_STM, SMF; Method:-
3.6.16. enumNilaiKeteranganSekolah Tabel 3. 26 Kelas Enumeration enumNilaiKeteranganSekolah Atribut Negeri, Swasta; Method:-
3.6.17. enumNilaiKabupaten Tabel 3. 27 Kelas enumNilaiKabupaten Atribut Daftar seluruh kabupaten di Indonesia Method:-
95
3.6.18. enumNilaiRapor Tabel 3. 28 Kelas Enumeration enumNilaiRapor Atribut: A, B, C, D; Method:-
3.6.19. CrossValidation Tabel 3. 29 Kelas Entity CrossValidation Atribut: private Vector pohonkeputusan private Vector dataset private int selectedProdi private int selectedSemester private String HasilPrediksiCrossvalidation private String NoAlias Method: 1. public Vector[] setDataFolds(Vector vektorMhswa, int smt) Input: Vector mahasiswa, kode semester Output: Vector[] folds Algoritma: a. Deklarasikan Vector[] ipk dengan isi vector tiap keputusan Vector[] ipkKeputusan = {new Vector(), new Vector(), new Vector(), new Vector()}; b. Deklarasikan Vector[] folds dengan isi vector tiap folds Vector[] folds={new Vector(), new Vector(), new Vector()}; c. buat variable int count = 0; d. buat variable String ipk = ""; e. looping selama count< dari jumlah datawhile (count < vektorMhswa.size()) { f. buat object mahasiswa Mahasiswa temp = (Mahasiswa) vektorMhswa.get(count); g. cek if (smt == 1) h. set ipk = temp.getKvtIp1(); i. cek sampai (smt==8) j. set ipk sesuai dengan semesternya k. memisahkan data ke dalam Vector[] berdasarkan IPK l. cek if (ipk.equals("A")) m. jika ya, set vector ipkKeputusan[0].add(temp) n. else if (ipk.equals("B")) o. ipkKeputusan[1].add(temp); p. else if (ipk.equals("C")) q. ipkKeputusan[2].add(temp); r. else if (ipk.equals("D"))
96
s. ipkKeputusan[3].add(temp); t. tambahkan variable count+1 count++; u. membagi-bagi data dalam Vector ke dalam folds v. loop sebanyak vector keputusan for (int i = 0; i < ipkKeputusan.length; i++) w. loop sebanyak jumlah data dalam vector[] keputusan for (int j = 0; j < ipkKeputusan[i].size(); j++) { x. masukkan data yang sudah dibagi-bagi ke dalam vector folds. folds[count].add(ipkKeputusan[i].get(j)); y. return folds; 2. public Vector[] getTestingTraining(Vector[] vector, int iterasi) Input: Vector[] dataset, iterasi Output: Vector[] dataOlah Algoritma: a. Deklarasi obyek Vector []settingData dengan panjang 2// untuk training dan testing Vector[] settingData = new Vector[2]; b. Buat obyek vector untuk menampung data trainingVector training = new Vector(); c. Buat obyek vector untuk menampung data testingVector testing; d. cek if (iterasi == 1) //fold 1 menjadi testing(vector[0]) e. set vector testing = vector[iterasi - 1]; f. set vector training yang merupakan gabungan fold 2 dan fold 3 training.addAll(vector[iterasi + 1]);// fold 2 (vector[1]) training.addAll(vector[iterasi]);//fold 3 (vector[2]) g. memasukkan data testing dan training ke dalam obyek vector settingData[0] = testing; settingData[1] = training; h. else if (iterasi == 2) //fold 2 menjadi testing (vector[1]) i. set vector testing = vector[iterasi - 1]; training.addAll(vector[iterasi]);// fold 3 (vector[2]) training.addAll(vector[iterasi - 2]);// fold 1 (vector[0]) j. memasukkan data testing dan training ke dalam obyek vector settingData[0] = testing; settingData[1] = training; k. else if (iterasi == 3) l. set vector testing = vector[iterasi - 1];// fold 3 menjadi testing(vector[2]) training.addAll(vector[iterasi - 3]);// fold 1 (vector[0]) training.addAll(vector[iterasi - 2]);//fold 2 (vector[1]) m. memasukkan data testing dan training ke dalam obyek vector settingData[0] = testing; settingData[1] = training; n. return settingData;
97
3.6.20. Pengguna Tabel 3. 30 Kelas Entity Pengguna Atribut: private String NamaPengguna private String paswd Method: 1. public static int login(String username, String passwd) throws SQLException Input: username, password Output: indicator pengguna ada atau tidak Algoritma: a. deklarasi variable status bertipe integer b. beri nilai awal untuk variable status=0 c. open connection d. deklarasi variable rs bertipe ResultSet e. buat variable untuk menampung query String sql = "Select count(Username) From pengguna where password like '" + passwd + "' and username like '" + username + "';" f. set rs = konek.lihatData(sql); g. loop selama masih ada data while(rs.next()) stat=rs.getInt(1); h. return stat;
3.7. Model Analisis Model analisis adalah salah satu proses untuk menterjemahkan scenario use case menjadi kelas analisis. Kelas analisis terdapat tiga buah jenis yaitu
form/bonery, controller dan entitas. Bentuk model analisis
merupakan kelas analisis.
3.7.1. Model Analisis Tiap Usecase Alur proses usecase menjalankan sebuah method akan dijelaskan secara terperinci melalui model analisis tiap usecase sebagai berikut:
98
3.7.2. Model Analisis Usecase Login
Gambar 3. 18 Gambar model analisis login
Tabel 3. 31 Tabel Kelas Analisis login Nama Kelas Tipe Deskripsi LoginSPPA Interface/Boundary Kelas ini menyediakan fungsi login ke sistem DatabaseConnection controller Kelas ini berfungsi untuk mengontrol koneksi ke database Pengguna Entity Kelas ini berfungsi untuk membuat obyek pengguna yang memiliki atribut username dan password
No 1. 2.
3.
<> LoginSPPA
<> DatabaseConnection
<<entity>> :Pengguna
Pengguna Login(user_name,passwd) LoginUser(user_name,passwd)
Return Verifikasi
Verifikasi pengguna
Gambar 3. 19 Diagram Sekuensial Login
99
3.7.3. Model Analisis Usecase Tambah Data
Gambar 3. 20 Model analisis Tambah data
No 1.
2.
3.
Tabel 3. 32 Tabel Kelas Analisis Tambah Data Nama Kelas Tipe Deskripsi HomeSPPA Interface/Boundary Kelas ini menyediakan tampilan utama dari sistem, dan menampilkan fungsifungsi utama sistem. PreprocessingSPPA Interface/Boundary Kelas ini berfungsi menyediakan halaman pre-proses untuk membuat aturan. Mahasiswa Entity Kelas ini berfungsi untuk membuat obyek mahasiswa yang akan digunakan untuk preproses dan proses prediksi.
<> PreprocessingSPPA
<> HomeSPPA
<<entity>> :Mahasiswa
Pengguna Klik menu preprocessing view
Klik tombol browse newFile(File) Menampilkan Data Mahasiswa
Gambar 3. 21 Diagram Sekuensial Tambah Data
100
3.7.4. Model Analisis Usecase Transformasi Data
Gambar 3. 22 Model Analisis Transformasi Data
Tabel 3. 33 Kelas Analisis Transformasi Data Nama Kelas Tipe Deskripsi PreprocessingSPPA Interface/Boundary Kelas ini berfungsi menyediakan halaman pre-proses untuk membuat aturan. Transformasi Data Controller Kelas ini berfungsi untuk menyediakan method atau fungsi untuk mentransform data continue menjadi data diskrit.
No 1.
2.
<> PreprocessingSPPA
<<Jtable>> TabelMhsAwal
<> TransformasiData
Pengguna
Klik Transformasi Ambil data
View data mahasiswa transform
AvgNilaiRapor(double[] mahasiwa) stdvNilaiRaport(double avg, double[] nilai) konversiNilai(double avg, double std, double nil)
Data transform
Gambar 3. 23 Diagram Sekuensial Transformasi data
101
3.7.5. Model Analisis Usecase Buat Aturan
Gambar 3. 24 Model Analisis Buat Aturan
Tabel 3. 34 Kelas Analisis Buat Aturan No Nama Kelas Tipe Deskripsi 1. PreprocessingSPPA Interface/Boundary Kelas ini berfungsi menyediakan halaman pre-proses untuk membuat aturan. 2. Transformasi Data Controller Kelas ini berfungsi untuk menyediakan method atau fungsi untuk mentransform data continue menjadi data diskrit. 3. Node Entity Kelas ini berfungsi menyediakan obyek pohon untuk proses prediksi 4. HasilPreprocessingSPPA Interface/Boundary Kelas ini berfungsi untuk menampilkan aturan yang terbentuk dalam rupa JTree.
<> PreprocessingSPPA
<> HasilPreprocessingSPPA
<> TransformasiData
<<entity>> :Node
Pengguna Klik tombol buat aturan
AvgNilaiRapor(double[] mahasiwa) stdvNilaiRaport(double avg, double[] nilai) konversiNilai(double avg, double std, double nil)
aturan
J48(int parent,int level, Vector mhs, String value)
102
Gambar 3. 25 Diagram Sekuensial Buat Aturan
3.7.6. Model Analisis Usecase Lihat Detail Aturan
Gambar 3. 26 Model Analisis Lihat Detail Aturan
Tabel 3. 35 Kelas Analisis Lihat Detail Aturan No Nama Kelas Tipe Deskripsi 1. PreprocessingSPPA Interface/Boundary Kelas ini berfungsi menyediakan halaman pre-proses untuk membuat aturan. 2. HasilPreprocessingSPPA Interface/Boundary Kelas ini berfungsi untuk menampilkan aturan yang terbentuk dalam rupa JTree.
<> PrerpcessingSPPA
<> HasilPreprocessingSPPA
Pengguna
Klik tombol Proses J48(int parent, int level, Vector Mhs, String Value)
Menampilkan aturan yang terbentuk
Gambar 3. 27 Diagram Sekuensial Lihat Detail Aturan
103
3.7.7. Model Analisis Usecase Simpan Aturan
Gambar 3. 28 Model Analisis Simpan Aturan
Tabel 3. 36 Kelas Analisis Simpan Aturan No Nama Kelas Tipe Deskripsi 1. PreprocessingSPPA Interface/Boundary Kelas ini berfungsi menyediakan halaman pre-proses untuk membuat aturan. 2. Node Entity Kelas ini berfungsi menyediakan obyek pohon untuk proses prediksi 3. DatabaseConnection Controller Kelas ini berfungsi untuk mengontrol koneksi ke database
<> PreprocessingSPPA
<<entity>> :Node
<> DatabaseConnection
Pengguna
Klik tombol Proses
J48(int parent, int level, Vector Mhs, String Value)
saveTree(prodi,smt, parent,atribut,ipk)
Gambar 3. 29 Diagram Sekuensial Simpan Aturan
104
3.7.8. Model Analisis Usecase Prediksi Kelompok
Gambar 3. 30 Model Analisis Prediksi Kelompok
Tabel 3. 37 Kelas Analisis Prediksi Kelompok No Nama Kelas Tipe Deskripsi 1. HomeSPPA Interface/Boundary Kelas ini berfungsi menyediakan halaman pre-proses untuk membuat aturan. 2. PrediksiKelompokSPPA Interface/Boundary Kelas ini berfungsi menyediakan tampilan untuk melakukan prediksi prestasi dengan inputan data kumpulan mahasiswa. 3. Aturan Entity Kelas ini berfungsi untuk membaca pola yang terbentuk
105
<> HomeSPPA
<> PrediksiKelompokSPPA
<<Entity>> :Aturan
Pengguna
Klik menu processing view Klik Browse Set Data model Menekan tombol proses prosesPrediksi(IdNode) IPK
Gambar 3. 31 Diagram Sekuensial Prediksi Kelompok 3.7.9. Model Analisis Usecase Prediksi Personal
Gambar 3. 32 Model Analisi Prediksi Personal
Tabel 3. 38 Kelas Analisis Prediksi Personal No Nama Kelas Tipe Deskripsi 1. HomeSPPA Interface/Boundary Kelas ini berfungsi menyediakan halaman pre-proses untuk membuat aturan. 2. PrediksiPersonalSPPA Interface/Boundary Kelas ini berfungsi menyediakan tampilan untuk melakukan prediksi prestasi dengan inputan data satu mahasiswa. 3. Aturan Entity Kelas ini berfungsi untuk membaca pola
106
yang terbentuk
<> HomeSPPA
<> PrediksiPersonalSPPA
<<Entity>> :Aturan
Pengguna
Input data view Menekan tombol proses prosesPrediksi(IdNode) IPK
Gambar 3. 33 Diagram Sekuensial Prediksi Personal 3.7.10. Model Analisis Usecase Logout
Gambar 3. 34 Model Analisis Logout
Tabel 3. 39 Kelas Analisis Logout No Nama Kelas Tipe Deskripsi 1. HomeSPPA Interface/Boundary Kelas ini berfungsi menyediakan halaman pre-proses untuk membuat aturan. 2. PrediksiPersonalSPPA Interface/Boundary Kelas ini berfungsi menyediakan tampilan untuk melakukan prediksi prestasi dengan inputan data satu mahasiswa. 3. Aturan Entity Kelas ini berfungsi untuk membaca pola yang terbentuk
107
<> LoginSPPA
<> HomeSPPA Pengguna Klik menu logout view
Gambar 3. 35 Diagram Sekuensial Logout
108
3.8. Diagram Relasional Entitas Pada penelitian tugas akhir ini, digunakan dua buah media penyimpan, yaitu penyimpanan dengan struktur data dan penyimpanan dengan menggunakan basis data. Basis data digunakan sebagai media penyimpanan karena memudahkan ketika akan dilakukan proses prediksi kembali. Di bawah ini akan dijelaskan tabel-tabel yang digunakan dalam proses penambangan data:
IdSemester NamaSemester
Semester
IdProdi
IdSemester
Node
1
Has
N
Pola_Semester
N
IdParent
Keputusan
IdNode Has
1
IdProdi
Prodi NamaProdi
Gambar 3. 36 ER tabel pola semester dengan tabel senester dan prodi
109
3.9. Perancangan Antar Muka 3.9.1. Halaman Login
..:: SISTEM PREDIKSI PRESTASI AKADEMIK ( SPPA) ::..
username
Florencia
password
********
Login Login
cancel
Universitas Sanata Dharma Yogyakarta oleh: Florensia
Gambar 3. 37 Halaman Login
110
3.9.2. Halaman SelectProdiSemester
Set Program Studi
SET PROGRAM STUDI
Program Studi Semester
Teknik Informatika Semester 1
Next
Gambar 3. 38 Halaman Select Prodi Semester 3.9.3. Halaman HomeSPPA
File
About
Help
.: SISTEM PREDIKSI PRESTASI AKADEMIK :.
Fakultas Sains dan Teknologi Universitas Sanata Dharma Yogyakarta Florensia Dwinta (c) 2011
Gambar 3. 39 Halaman HomeSPPA
111
3.9.4. Halaman PreprocessingSPPA
Pre-processing
Masukan Data
Diterima BIMBINGAN DAN KONSELING BIMBINGAN DAN KONSELING BIMBINGAN DAN KONSELING BIMBINGAN DAN KONSELING BIMBINGAN DAN KONSELING BIMBINGAN DAN KONSELING BIMBINGAN DAN KONSELING BIMBINGAN DAN KONSELING
NoAlias 159 159 159 159 159 159 159 159
NmSex Perempuan Perempuan Perempuan Perempuan Perempuan Perempuan Perempuan Perempuan
G:\SKRIPSI INTA\DATA SKRIPSI KU\Data PMB Jalur Prestasi
NmKabAsal Bengkulu Bengkulu Bengkulu Bengkulu Bengkulu Bengkulu Bengkulu Bengkulu
AlamatAsal BATU DEWA CURUP,BENGKULU BATU DEWA CURUP,BENGKULU BATU DEWA CURUP,BENGKULU BATU DEWA CURUP,BENGKULU BATU DEWA CURUP,BENGKULU BATU DEWA CURUP,BENGKULU BATU DEWA CURUP,BENGKULU BATU DEWA CURUP,BENGKULU
NmKabSekolahAsal NmSekolahAsal Bantul SMA PANGUDI LUHUR SEDAYU Bantul SMA PANGUDI LUHUR SEDAYU Bantul SMA PANGUDI LUHUR SEDAYU Bantul SMA PANGUDI LUHUR SEDAYU Bantul SMA PANGUDI LUHUR SEDAYU Bantul SMA PANGUDI LUHUR SEDAYU Bantul SMA PANGUDI LUHUR SEDAYU Bantul SMA PANGUDI LUHUR SEDAYU
nama_jns_Smu SMU/MA IPA SMU/MA IPA SMU/MA IPA SMU/MA IPA SMU/MA IPA SMU/MA IPA SMU/MA IPA SMU/MA IPA
Browse
RaporKls2Smt1 8.00 8.00 5.00 7.00 6.00 7.00 7.00 5.00
RaporKls2Smt2 8.00 7.00 5.00 6.00 6.00 8.00 8.00 8.00
RaporKls3Smt1 6.00 8.00 6.00 6.00 6.00 6.00 6.00 0.00
Mata Pelajaran Bahasa Indonesia Sejarah Bahasa Inggris Matematika Fisika Biologi Kimia Ekonomi
Jumlah data awal: 26
Diterima BIMBINGAN DAN KONSELING BIMBINGAN DAN KONSELING BIMBINGAN DAN KONSELING BIMBINGAN DAN KONSELING BIMBINGAN DAN KONSELING BIMBINGAN DAN KONSELING BIMBINGAN DAN KONSELING BIMBINGAN DAN KONSELING
NoAlias 159 159 159 159 159 159 159 159
NmSex Perempuan Perempuan Perempuan Perempuan Perempuan Perempuan Perempuan Perempuan
NmKabAsal Bengkulu Bengkulu Bengkulu Bengkulu Bengkulu Bengkulu Bengkulu Bengkulu
AlamatAsal BATU DEWA CURUP,BENGKULU BATU DEWA CURUP,BENGKULU BATU DEWA CURUP,BENGKULU BATU DEWA CURUP,BENGKULU BATU DEWA CURUP,BENGKULU BATU DEWA CURUP,BENGKULU BATU DEWA CURUP,BENGKULU BATU DEWA CURUP,BENGKULU
NmKabSekolahAsal NmSekolahAsal Bantul SMA PANGUDI LUHUR SEDAYU Bantul SMA PANGUDI LUHUR SEDAYU Bantul SMA PANGUDI LUHUR SEDAYU Bantul SMA PANGUDI LUHUR SEDAYU Bantul SMA PANGUDI LUHUR SEDAYU Bantul SMA PANGUDI LUHUR SEDAYU Bantul SMA PANGUDI LUHUR SEDAYU Bantul SMA PANGUDI LUHUR SEDAYU
nama_jns_Smu SMU/MA IPA SMU/MA IPA SMU/MA IPA SMU/MA IPA SMU/MA IPA SMU/MA IPA SMU/MA IPA SMU/MA IPA
RaporKls2Smt1 8.00 8.00 5.00 7.00 6.00 7.00 7.00 5.00
RaporKls2Smt2 8.00 7.00 5.00 6.00 6.00 8.00 8.00 8.00
RaporKls3Smt1 6.00 8.00 6.00 6.00 6.00 6.00 6.00 0.00
Mata Pelajaran Bahasa Indonesia Sejarah Bahasa Inggris Matematika Fisika Biologi Kimia Ekonomi
Jumlah data setelah transformasi: 26 Transformasi Data
Universitas Sanata Dharma Yogyakarta oleh: Florensia
Gambar 3. 40 Halaman PreprocessingSPPA
Proses
112
3.9.5. Halaman HasilPreprocessing
Gambar 3. 41 Halaman HasilPreprocessingSPPA 3.9.6. Halaman PrediksiPersonalSPPA Prediksi Personal SPPA
Kabupaten Asal Jurusan SMA Kabupaten Sekolah Keterangan Sekolah IPK Semesester III
Bahasa Indonesia Matematika Sejarah Biologi Ekonomi
::: Hasil Prediksi ::: IPK Mahasiswa akurasi
Proses
%
Kembali
Universitas Sanata Dharma Yogyakarta oleh: Florensia
Gambar 3. 42 Halaman PrediksiPersonalSPPA
113
3.9.7. Halaman PrediksiKelompokSPPA
Pre-processing
Masukan Data
Diterima BIMBINGAN DAN KONSELING BIMBINGAN DAN KONSELING BIMBINGAN DAN KONSELING BIMBINGAN DAN KONSELING BIMBINGAN DAN KONSELING BIMBINGAN DAN KONSELING BIMBINGAN DAN KONSELING BIMBINGAN DAN KONSELING
NoAlias 159 159 159 159 159 159 159 159
NmSex Perempuan Perempuan Perempuan Perempuan Perempuan Perempuan Perempuan Perempuan
G:\SKRIPSI INTA\DATA SKRIPSI KU\Data PMB Jalur Prestasi
NmKabAsal Bengkulu Bengkulu Bengkulu Bengkulu Bengkulu Bengkulu Bengkulu Bengkulu
AlamatAsal BATU DEWA CURUP,BENGKULU BATU DEWA CURUP,BENGKULU BATU DEWA CURUP,BENGKULU BATU DEWA CURUP,BENGKULU BATU DEWA CURUP,BENGKULU BATU DEWA CURUP,BENGKULU BATU DEWA CURUP,BENGKULU BATU DEWA CURUP,BENGKULU
NmKabSekolahAsal NmSekolahAsal Bantul SMA PANGUDI LUHUR SEDAYU Bantul SMA PANGUDI LUHUR SEDAYU Bantul SMA PANGUDI LUHUR SEDAYU Bantul SMA PANGUDI LUHUR SEDAYU Bantul SMA PANGUDI LUHUR SEDAYU Bantul SMA PANGUDI LUHUR SEDAYU Bantul SMA PANGUDI LUHUR SEDAYU Bantul SMA PANGUDI LUHUR SEDAYU
nama_jns_Smu SMU/MA IPA SMU/MA IPA SMU/MA IPA SMU/MA IPA SMU/MA IPA SMU/MA IPA SMU/MA IPA SMU/MA IPA
RaporKls2Smt1 8.00 8.00 5.00 7.00 6.00 7.00 7.00 5.00
Browse
RaporKls2Smt2 8.00 7.00 5.00 6.00 6.00 8.00 8.00 8.00
RaporKls3Smt1 6.00 8.00 6.00 6.00 6.00 6.00 6.00 0.00
Jumlah data awal: 26
Prediksi
Universitas Sanata Dharma Yogyakarta oleh: Florensia
Gambar 3. 43 Halaman PrediksiKelompokSPPA
Kembali
Mata Pelajaran Bahasa Indonesia Sejarah Bahasa Inggris Matematika Fisika Biologi Kimia Ekonomi
BAB IV IMPLEMENTASI SISTEM
Pada bab ini berisi tentang implementasi sistem yang dibuat dan pengujian sistem berdasarkan pada Analisis dan Perancangan Sistem dalam bab sebelumnya 4.1. Implementasi Data Data mahasiswa yang digunakan sebelumnya dihitung secara manual dengan menggunakan aplikasi Microsoft Excel yang kemudian dibandingkan hasil perhitungan secara manual menggunakan Microsoft Excel dengan hasil tree yang terbentuk menggunakan weka dan juga aplikasi Sistem Prediksi Prestasi Akademik ini (SPPA). Di bawah ini adalah hasil percobaan untuk sebuah data PMB untuk program studi Teknik Informatika yang dihitung dengan 3 buah cara.
Contoh data : Program Studi: teknik Informatika Semester: 1 Jumlah Data: 26 a. Tree dari hasil perhitungan manual
Gambar 4. 1 Tree Perhitungan Manual dengan Excel
115
b. Tree dari perhitungan Weka
Gambar 4. 2 Hasil Tree dengan menggunakan WEKA
116
Gambar 4. 3 Hasil Tree menggunakan Sistem SPPA
Analisa: Dari
ketiga
metode
pembentukan
pohon
(menggunakan
Weka,
menggunakan sistem dan juga menggunakan perhitungan manual Excel) didapatkan bentuk pohon yang hamper serupa. Atribut yang menjadi akar dari pohon adalah atribut nilai Fisika Kelas XII semester 1.
117
4.2. Implementasi File Pada bab III sebelumnya sudah dibuat rancangan untuk kelas-kelas yang nantinya akan digunakan oleh sistem. Berikut ini adalah bentuk implementasi dari desain kelas menjadi implementasi file:
Tabel 4. 1 Tabel Impelementasi file Usecase
Kelas Desain
Implementasi File
Jenis
Login
LoginSPPA
LoginSPPA.java
Interface
DatabaseConnection
DatabaseConnection.java
Controller
Pengguna
Pengguna.java
Entity
HomeSPPA
HomeSPPA.java
Interface
PreprocessingSPPA
PreprocessingSPPA.java
Interface
Mahasiswa
Mahasiswa.java
Entity
PreprocessingSPPA
PreprocessingSPPA.java
Interface
TransformasiData
TransformasData. java
Controller
PreprocessingSPPA
PreprocessingSPPA.java
interface
TransformasiData
TransformasiData.java
controller
Node
Node.java
Entity
HasilPreprocessingSPPA
HasilPreprocessingSPPA.java
Interface
PreprocessingSPPA
Preprocessing.sppa
Interface
Tambah Data
Transformasi Data
Buat Aturan
Lihat Detail Aturan
118
Simpan Aturan
Prediksi Kelompok
Prediksi Personal
Logout
HasilPreprocessingSPPA
HasilPreprocessingSPPA.java
interface
PreprocessingSPPA
PreprocessingSPPA.java
Interface
Node
Node.java
Entity
DatabaseConnection
DatabaseConnection.java
controller
HomeSPPA
HomeSPPA.java
interface
PrediksiKelompokSPPA
PrediksiKelompokSPPA.java
Interface
Aturan
Aturan.java
Entity
HomeSPPA
HomeSPPA.java
Intercase
PrediksiPersonalSPPA
PrediksiPersonalSPPA.java
Interface
Aturan
Aturan.java
Entitiy
HomeSPPA
HomeSPPA.java
Interface
Login
Login.java
entity
119
4.3. Implementasi Antar Muka Sistem Prediksi Prestasi Akademik telah berhasil dibangun maka pada bab ini akan ditampilkan antar muka dari sistem tersebut. 4.3.1. Tampilan Login Halaman ini merupakan tampilan awal pada Sistem Prediksi Prestasi Akademik (SPPA). Pengguna diharuskan untuk menginputkan username dan password karena sistem ini tidak digunakan untuk umum, hanya pengguna yang terdaftar saja yang boleh menggunakannya.
Gambar 4. 4 Tampilan Login Sistem Listing program: pada lampiran 3
120
4.3.2. Tampilan Set Program Studi dan Semester Sebelum pengguna melakukan pre-proses ataupun proses prediksi, pengguna terlebih dahulu mengatur program studi apa dan saat semester berapa pengguna ingin melakukan pembuatan pohon maupun prediksi prestasi akademik mahasiswa.
Gambar 4. 5 Tampilan Setting Prodi dan Semester
Listing Program: pada lampiran 4
121
4.3.3. Tampilan Halaman Utama Sistem Tampilan ini akan terdapat tiga buah Menu bar, yaitu menu File, menu About dan menu Help. Pada menu bar File terdapat 3 buah menu yaitu menu preprocessing dan menu processing. Pada menu processing terdapat 2 pilihan menu, yaitu menu Prediksi Personal dan menu Prediksi Kelompok.
Gambar 4. 6 Tampilan Home SPPA
Listing program: pada lampiran 5
122
4.3.4. Tampilan Preproses Tampilan preproses ini digunakan ketika penguna ingin meneliti data baru dengan cara membuat aturan(pohon) baru.
Gambar 4. 7 Tampilan Preproses
Listing Program: pada lampiran 6
123
4.3.5. Tampilan Hasil Preprosess Dalam tampilan ini akan terdapat JTree yang terbentuk dari preprosess, sehingga ketika pengguna telah melakukan preproses maka akan muncul tampilan hasil preproses. Pada halaman ini akan terdapat button prediksi yang berfungsi untuk menampilkan halaman home, sehingga pengguna dapat memilih menu proses prediksi yang terdapat pada halaman home.
Gambar 4. 8 Halaman Hasil Proses
Listing program: pada lampiran 7
124
4.3.6. Tampilan Prediksi Personal Tampilan ini digunakan ketika pengguna ingin melakukan proses prediksi prestasi akademik untuk satu orang mahasiswa saja.
Gambar 4. 9 Tampilan Prediksi Personal Listing program: pada lampiran 8
125
4.3.7. Tampilan Prediksi Kelompok Tampilan ini digunakan ketika pengguna ingin melakukan proses prediksi prestasi akademik untuk banyak mahasiswa.
Gambar 4. 10 Tampilah Prediksi Kelompok Listing program: pada lampiran 9
BAB V ANALISIS HASIL Pada Bab V ini penulis akan membahas mengenai pengujian validitas program, tingkat akurasi yang dihasilkan program serta menganilis hasilnya. Pengukuran tingkat akurasi pada sistem menggunakan k-folds cross validation, dimana penulis memilih 3 folds untuk perhitungan akurasi.
5.1. Pengujian Validitas Program Sistem Prediksi Prestasi Akademik (SPPA) yang telah berhasil dibuat diuji keakuratanya dengan cara membandingkan hasil prediksi dari sistem, hasil prediksi secara manual dan hasil prediksi dari weka terhadap data uji yang sama.
Pada proses perbandingan validitas program ini akan digunakan pola semester 1 yang merupakan pola dengan akurasi terendah pada Program Studi Teknik Informatika dan semester 2 untuk mewakili semester yang lainnya karena pola yang dihasilkan oleh Weka dari semester 1 – semester 8 sama sehingga cukup diambil salah satu semester saja untuk dijadikan pembanding. 5.1.1. Perbandingan pertama Program Studi
: Teknik Informatika
Semester yang diuji
: semester 1
Jumlah data pelatihan
: 26 data
Jumlah data uji
: 24 data
Hasil pola dari Weka
:
127
Test mode: 3-fold cross-validation === Classifier model (full training set) === J48 pruned tree -----------------FisKls3Smt1 = B: B (20.0/5.0) FisKls3Smt1 = D: C (6.0/1.0) Number of Leaves :
2
Size of the tree :
3
kvtFis3smt1
B
D
Gambar 5. 1 Pola Semester 1 Prodi Teknik Informatika ( Hasil Weka )
Hasil pola dari Sistem
:
128
Gambar 5. 2 Pola Semester 1 Prodi Teknik Informatika ( Hasil Sistem ) Data uji: NoAlias
NamaKabAsal
MtkKls2Smt1 MtkKls2Smt2 FisKls3Smt1 SejKls3Smt1 IPK ASLI IPK Program IPK Manual
074318 074323 074325 074326 074327 074330 074331 074333 074336 074338 074340 074341 074343 074344 074345 074349 074353 074354 074367 074370 074372 074373 074376 074380
Madiun Padang Banten Yogyakarta Kota_Waringin_ Timur Barito_Timur Gunung_Kidul Magelang Balikpapan Bogor Yogyakarta Sleman Yogyakarta Semarang Kulonprogo Magelang Magelang Tulang_Bawang Bantul Banyumas Klaten Yogyakarta Tangerang Magelang
C C C C A A C B B C A C C B B C C B C C C C C B
D B C C C A C A C B B B B C C C D C B C C B C B
D D D D D D D D D D D D D D D D D D D D D D D D
D D D D D D D D D D D D D D D D D D D D D D D D data benar :
C B A B C C B A B C A B B C C B C C A B B A A D
IPK weka
C C C C B B C C C C B C C C C C C C C C C C C C
C C C C B B C C C C B C C C C C C C C C C C C C
C C C C C C C C C C C C C C C C C C C C C C C C
6
6
8
Gambar 5. 3 Hasil Prediksi Manual, Sistem dan Weka Semester 1
129
5.1.2. Perbandingan kedua Program Studi
: Teknik Informatika
Semester yang diuji
: semester 2
Jumlah data pelatihan
: 26 data
Jumlah data uji
: 24 data
Hasil pola dari Weka
:
Test mode: 3-fold cross-validation === Classifier model (full training set) === J48 pruned tree -----------------FisKls3Smt1 = B: B (20.0/5.0) FisKls3Smt1 = D: C (6.0/1.0) Number of Leaves :
2
Size of the tree :
3
kvtFis3smt1
B
D
Gambar 5. 4 Pola Semester 2 Prodi Teknik Informatika ( Hasil Weka )
Hasil pola dari Sistem
:
130
Gambar 5. 5 Pola Semester 2 Prodi Teknik Informatika ( Hasil Sistem ) Data uji: NoAlias 074318 074323 074325 074326 074327 074330 074331 074333 074336 074338 074340 074341 074343 074344 074345 074349 074353 074354 074367 074370 074372 074373 074376 074380
NamaKabAsal Madiun Padang Banten Yogyakarta Kota_Waringi_ Timur Barito_Timur Gunung_Kidul Magelang Balikpapan Bogor Yogyakarta Sleman Yogyakarta Semarang Kulonprogo Magelang Magelang Tulang_Bawang Bantul Banyumas Klaten Yogyakarta Tangerang Magelang
Sex FisKls3Smt1 KimKls2Smt2 SejKls2Smt1 Laki_Laki D D C Laki_Laki D B D Perempuan D B D Laki_Laki D C D Laki_Laki D D B Laki_Laki D B D Perempuan D B C Perempuan D B D Perempuan D B C Perempuan D B C Perempuan D D B Perempuan D B A Perempuan D B B Laki_Laki D D B Laki_Laki D B D Perempuan D B D Laki_Laki D B D Laki_Laki D B D Perempuan D B D Laki_Laki D B D Laki_Laki D B B Laki_Laki D B C Perempuan D B B Laki_Laki D B B
SejKls3Smt1 D D D D D D D D D D D D D D D D D D D D D D D D DATA BENAR:
IPK Asli C B C B B B B A B C A B B C D B C C A C B A B D
IPK Program IPK Manual IPK WEKA C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C 5
5
7
Gambar 5. 6 Hasil Prediksi Manual, Sistem dan Weka semester 2 Analisa: Hasil prediksi dari hitungan manual dan sistem : Pada gambar 5.3 dan gambar 5.6 perbandingan IPK hasil prediksi antara perhitungan manual dan sistem menghasilkan data yang sama dengan IPK yang dimiliki oleh mahasiswa. Data yang diprediksikan oleh hitungan manual dan sistem sama persis, sehingga dapat ditarik
131
kesimpulan bahwa Sistem Prediksi Prestasi Akademik (SPPA) sudah valid.
Hasil prediksi dari sistem dan Weka: Pada gambar 5.3 dan gambar 5.6 perbandingan IPK hasil prediksi antara sistem dan Weka terdapat 2 buah data yang berbeda. Hal ini terjadi karena pola yang dihasilkan oleh Weka dan Sistem Prediksi Prestasi Akademik(SPPA) berbeda. Pola pada Weka merupakan pola yang dipangkas, sehingga proses weka menelusuri pohon saat melakukan prediksi tidak sedalam yang dilakukan oleh SPPA. 5.2. Akurasi Cross Validation 3 folds Pengujian akurasi pola Program Studi Teknik Informatika: Tabel 5. 1 Perbandingan Akurasi Pola (Prodi: Teknik Informatika) Akurasi Pola Program No Semester Iterasi1 Iterasi2 Iterasi3 Rata-rata 1 Semester 1 0% 33.33% 50% 27.78% 2 Semester 2 44.44% 55.56% 12.50% 37.50% 3 Semester 3 55.56% 55.56% 62.50% 57.87% 4 Semester 4 44.44% 44.44% 75% 54.63% 5 Semester 5 77.78% 44.44% 75% 65.74% 6 Semester 6 33.33% 66.67% 62.50% 54.17% 7 Semester 7 33.33% 66.67% 62.50% 54.17% 8 Semester 8 55.56% 22.22% 50% 42.59% Rata-rata akurasi pola prodi Teknik Informatika 49.31%
Akurasi Pola Weka 65.38% 57.69% 69.23% 84.62% 76.92% 53.85% 73.08% 57.69% 67.31%
Tabel 5. 2 Distribusi IPK Program Studi Teknik Informatika No 1 2 3 4 5 6 7 8
Semester semester 1 semester 2 semester 3 semester 4 semester 5 semester 6 semester 7 semester 8
A 0 0 0 0 0 0 0 0
B 16 15 16 16 16 17 18 18
C 9 9 8 9 8 7 6 3
D 1 2 2 1 2 2 2 5
132
5.2.1. Analisis Hasil Pola Program Studi Teknik Informatika Pola yang dihasilkan pada Program Studi Teknik Informatika saat semester 1 semester 8 memiliki struktur pohon yang berbeda-beda, sehingga dapat dikatakan bahwa prestasi saat SMA belum bisa dipakai untuk memprediksikan secara konsisten prestasi saat kuliah. Besar kemungkinan terdapat faktor lain selain prestasi saat SMA yang mempengaruhi IPK mahasiswa. Pada pola semester 1, 2, 3, 6 dan 7 muncul node kabupaten sekolah asal . Hal ini menunjukkan bahwa kabupaten sekolah asal berpengaruh terhadap prestasi saat kuliah. Gagasan awal dibuatnya sistem ini adalah untuk membuktikan apakah mahasiswa jalur prestasi yang pada saat SMA berprestasi apakah akan berprestasi juga ketika kuliah. Melihat rata-rata pola dari hasil uji coba pada program studi Teknik Informatika semester 1-semester 8, latar belakang siswa saat SMA belum dapat dikatakan mempengaruhi prestasi mahasiswa hal ini ditunjukan dari tingkat rata-rata akurasi tersebut hanya sebesar 49.31%. Hal tersebut diduga disebabkan oleh beberapa hal. Pertama, pada saat proses pembersihan data untuk siswa jurusan IPA nilai mata pelajaran IPS diberi nilai 0, begitu juga sebaliknya. Cara tersebut mengaburkan nilai mata pelajaran mahasiswa yang berasal dari jurusan IPA dan IPS. Kedua, pada Tabel 5.2 dari 26 mahasiswa Program Studi Informatika tidak ada mahasiswa yang mendapat IPK dengan kategori “A”. Data mahasiswa yang sudah lulus tidak lagi terekam di dalam SIA Universitas Sanata Dharma, sehingga data mentah yang didapat merupakan data-data dengan kualitas IPK yang kurang baik. Dengan demikian tidak dapat diektrak pola untuk prediksi mahasiswa dengan IPK yang baik.
Pengujian akurasi pola program studi Farmasi:
Tabel 5. 3 Perbandingan Akurasi Pola (Prodi: Farmasi)
133
No 1 2 3 4 5 6 7 8
Akurasi Pola Program Semester Iterasi1 Iterasi2 Iterasi3 Rata-rata Semester 1 30.91% 29.09% 20.00% 26.67% Semester 2 40.00% 40.00% 30.91% 36.97% Semester 3 31.58% 38.60% 41.07% 37.08% Semester 4 36.84% 40.35% 37.50% 38.23% Semester 5 42.11% 43.86% 42.86% 42.94% Semester 6 49.12% 43.86% 46.43% 46.47% Semester 7 47.37% 47.37% 46.43% 47.06% Semester 8 36.84% 50.88% 41.07% 42.93% Rata-rata akurasi pola prodi Farmasi 39.79%
Akurasi Pola Weka 43.03% 56.97% 65.29% 67.65% 70.00% 74.71% 76.47% 64.12% 64.78%
Tabel 5. 4 Distribusi IPK Program Studi Farmasi No 1 2 3 4 5 6 7 8
Semester semester 1 semester 2 semester 3 semester 4 semester 5 semester 6 semester 7 semester 8
A 14 4 0 0 0 0 0 8
B 69 91 111 115 119 127 130 53
C 73 59 47 0 37 28 24 109
D 14 16 12 0 14 15 16 0
5.2.2. Analisis Hasil Pola Program Studi Farmasi
Pada tabel 5.3 dan tabel 5.4 terjadi peningkatan jumlah mahasiswa yang memiliki IPK dengan kategori ”B” dan sekaligus peningkatan akurasi. Hal ini menunjukan bahwa pola yang terbentuk oleh sistem semakin dapat diyakini kebenarannya karena jumlah data yang memadai
BAB VI PENUTUP
6.1. Kesimpulan Beberapa kesimpulan yang dapat diperoleh sebagai hasil selama pembuatan Tugas Akhir ini: 1. Metode pohon keputusan dengan menerapkan algoritma J48 telah berhasil diimplementasikan dan diujicobakan dengan menggunakan data PMB Jalur Prestasi tahun akademik 2005-2006 , sedangkan data uji diambil dari data PMB Jalur Prestasi tahun akademik 2007. 2. Persentase rata-rata keakuratan program yang dihasilkan untuk pengujian program studi Teknik Informatika adalah sebesar 49.31% dan untuk pengujian program studi farmasi sebesar 39.79%. 3. Persentase keakuratan prediksi diduga dipengaruhi oleh isi dan jumlah sampel yang digunakan, variasi dari data pelatihan dan juga teknik folding pada cross validation. 6.2. Saran 6.2.1. Untuk Pengembangan Program Program ini masih memiliki kekurangan maka saran yang diperlukan untuk pengembangan program lebih lanjut adalah: 1. Untuk meningkatkan akurasi, dapat dicoba dilakukan seleksi atribut terlebih dahulu dengan melihat korelasi tiap atribut. Jika korelasi atribut input tinggi terhadap atribut tujuan, maka atribut tersebut yang dijadikan atribut terpilih sebagai atribut input. Setelah itu pemilihan teknik pembagian fold jika menggunakan teknik cross validation dapat mengadopsi dari teknik penarikan sampel sehingga sampel yang terpilih pada setiap fold merata dan dapat mewakili populasinya.
135
2. Program bisa menerima masukan tidak hanya dari file berekstensi .csv tapi juga diharapkan bisa menerima file excel dengan ekstensi .xls atau .xlsx . 4. Pengguna dapat lebih fleksibel memilih atribut antesenden dan Konsekuen yang digunakan ketika proses pelatihan data.
6.2.2 Untuk Universitas Sanata Dharma Setiap mahasiswa memang memiliki kecerdasan berbeda-beda. Tanggung jawab Institusi Pendidikan adalah untuk menggali dan mengembangkannya. Jalur Prestasi di Universitas Sanata Dharma lebih condong menyoroti kecerdasan intelektual (nilai akademis). Hal tersebut baik adanya dan ditingkatkan kualitasnya karena itu semua menjadi fondasi yang sangat kuat berupa intelektual dari calon mahasiwa tersebut untuk mempertahankan prestasinya saat kuliah. Selain itu juga perlu di kembangkan juga kecerdasan-kecerdasan lain yang dimiliki mahasiswa melalui proses pembelajaran atau perkuliahan.
Dengan proses
pembelajaran yang baik terhadap input yang baik ( mahasiswa hasil dari seleksi tes masuk melalui jalur prestasi) diharapkan menghasilkan output yang baik atau bahkan lebih baik. 6.2.3 Untuk Mahasiswa PMB Jalur Prestasi Melihat dari data Jalur Prestasi yang digunakan dalam penelitan, mahasiswa Jalur Prestasi tidak selalu mendapatkan prestasi yang baik saat kuliah, maka diharapkan mahasiswa harus lebih mampu beradaptasi dengan lingkungan perkuliahan ( menyeimbangkan kecerdasan intelektual, kecerdasan sosial dan kecerdasan spiritual.).
DAFTAR PUSTAKA [1]
Han, Jiawei. & Kamber, Micheline. (2006). Data Mining: Concepts And Techniques . Dipungut 15 November, 2010, dari http://www.cs.sfu.ca/~han/dmbook .
[2]
Pramudiono, Iko . (2003). Pengantar Data Mining: Menambang Permata Pengetahuan di Gunung Data. Dipungut 24 Januari, 2011, dari http://ilmukomputer.org/2008/11/25/pengantar-data-mining/.
[3]
Prima, Oky . 2010. Blog Mahasiswa Universitas Brawijaya: Data Warehouse. Dipungut 24 Januari, 2011, dari http://blog.ub.ac.id/okyprima/category/uncategorized/.
[4]
Pritty, Ni Made. (2006). Implementasi Data Mining Pada Data Penerimaan Mahasiswa Baru Dan Data Akademik Mahasiswa Universitas Sanata Dharma Dengan Algoritma Decision Tree. Naskah yang tidak diterbitkan, Universitas Sanata Dharma Yogyakarta.
[5]
Zheng, Jianjun. (2004). Study On The Relationship Of Training Data Size To Error Rate And The Performance Comparison For Two Decision Tree Algorithms. Texas Tech University.
[6]
Berry, M. J. A. dan Linoff, G. S. , (2004). Data Mining Techniques for Marketing,Sales and Customer Relationship Management 2nd edition. Wiley Publishing; Indianapolis. Indiana.
[7]
El Said, Fairuz. (2009). Data Mining: Konsep Pohon Keputusan. Dipungut 15 November, 2010, dari http://fairuzelsaid.wordpress.com/2009/11/24/data-mining-konseppohon-keputusan/ .
137
[8]
Witten, Ian ., Eibe Frank. (2005). Data Mining: Practical Machine Learning Tools and Techniques 2nd edition.United States of America: Morgan Kaufmann Publishers.
[9]
Gayatri N., S. Nicholas, dkk. (2009). Performance Analysis Of Data Mining Algorithms For Software Quality Prediction. India: Department of Computer Aplications National Institute of Technology Tirruchirappalli.
[10] Ernawati. (2007) . Penggalian Kaidah Asosiasi Kuantitatif Prestasi Akademik Mahasiswa Dengan Jenis Kelamin Dan Nilai Test Masuk Mahasiswa(Jurnal Teknologi Industri Vol. XI No.1. Yogyakarta: Universitas Atma Jaya. [11] Sarle W. (2004) . What are cross-validation and bootstrapping? Dipungut 20 Januari, 2011, dari http://www.faqs.org/ai-faq/neuralnets/part3/section-12.html . [12] Liming Fu,. (1994). Neural Network in Computers Intelligence. Singapura: McGraw-Hill. [13] The University of Waikato. WEKA. n.d. Dipungut 20 Januari, 2011, dari http://www.cs.waikato.ac.nz/ml/weka/.
[14] Sucahyo, Yudho Giri. (2003). Data Mining Menggali Informasi yang Terpendam. Dipungut 15 November, 2010, dari http://ilmukomputer.com/populer/yudho-datamining.php .
[15] Pedoman Penulisan Skripsi (cetakan ke-2). (2004). Yogyakarta: Universitas Sanata Dharma.
138
[16] Supratiknya A. (2007). Kiat Merujuk Sumber Acuan dalam Penulisan Karya Ilmiah. Yogyakarta: Universitas Sanata Dharma.
LAMPIRAN Lampiran 1 Daftar Nama Program Studi NamaProdi AKUNTANSI BIMBINGAN DAN KONSELING FARMASI FISIKA ILMU KOMPUTER ILMU SEJARAH ILMU TEOLOGI MAGISTER KAJIAN BAHASA INGGRIS MAGISTER RELIGI DAN BUDAYA MAGISTER TEOLOGI MANAJEMEN MATEMATIKA MEKATRONIKA (D3) PEND. AKUNTANSI PEND. BAHASA INGGRIS PEND. BAHASA,SAS.IND.& DAERAH PEND. EKONOMI PEND. FISIKA PEND. GURU SEKOLAH DASAR PEND. GURU SEKOLAH DASAR (D2) PEND. MATEMATIKA PEND. SEJARAH PENDIDIKAN AGAMA KATOLIK PENDIDIKAN BIOLOGI PROFESI APOTEKER PROGRAM SERTIFIKASI GURU PSIKOLOGI SASTRA INDONESIA SASTRA INGGRIS TEKNIK ELEKTRO TEKNIK INFORMATIKA TEKNIK MESIN
140
Lampiran 2 Daftar Nama Kabupaten di Indonesia Aceh_Barat Aceh_Barat_Daya Aceh_Besar Aceh_Jaya Aceh_Selatan Aceh_Singkil Aceh_Tamiang Aceh_Tengah Aceh_Tenggara Aceh_Timur Aceh_Utara Administrasi_Jakarta_Barat Administrasi_Jakarta_Pusat Administrasi_Jakarta_Selatan Administrasi_Jakarta_Timur Administrasi_Jakarta_Utara Administrasi_Kepulauan_Seribu Agam Alor Ambon Asahan Asmat Badung Balangan Balikpapan Bandar_Lampung Banda_Aceh Bandung Bandung_Barat Banggai Banggai_Kepulauan Bangka Bangkalan Bangka_Barat Bangka_Selatan Bangka_Tengah Bangli Banjar Banjarbaru Banjarmasin Banjarnegara Bantaeng Banten Bantul Banyuasin Banyumas Banyuwangi Barito_Kuala Barito_Selatan Barito_Timur Barito_Utara Batang
Blitar Blora Boalemo Bogor Bojonegoro Bolaang_Mongondow Bolaang_Mongondow_Selatan Bolaang_Mongondow_Timur Bolaang_Mongondow_Utara Bombana Bondowoso Bone Bone_Bolango Bontang Boven_Digoel Boyolali Brebes Bukittinggi Buleleng Bulukumba Bulungan Bungo Buol Buru Buru_Selatan Buton Buton_Utara Ciamis Cianjur Cilacap Cilegon Cimahi Cirebon Dairi Deiyai Deli_Serdang Demak Denpasar Depok Dharmasraya Dogiyai Dompu Donggala Dumai Empat_Lawang Ende Enrekang Fakfak Flores_Timur Garut Barru
Jembrana Jeneponto Jepara Jombang Kaimana Kampar Kapuas Kapuas_Hulu Karanganyar Karangasem Karawang Karimun Karo Katingan Kaur Kayong_Utara Kebumen Kediri Keerom Kendal Kendari Kepahiang Kepulauan_Anambas Kepulauan_Aru Kepulauan_Mentawai Kepulauan_Meranti Kepulauan_Sangihe Kepulauan_Selayar Kepulauan_Siau_Tagulandang_Biaro Kepulauan_Sula Kepulauan_Talaud Kepulauan_Yapen Kerinci Ketapang Klaten Klungkung Kolaka Kolaka_Utara Konawe Konawe_Selatan Konawe_Utara Kotabaru Kotamobagu Kota_Waringin_Barat Kota_Waringin_Timur Kuantan_Singingi Kubu_Raya Kudus Gianyar Gorontalo Gorontalo_Utara
Gowa Gresik Grobogan Gunung_Kidul Gunung_Mas Gunung_Sitoli Halmahera_Barat Halmahera_Selatan Halmahera_Tengah Halmahera_Timur Halmahera_Utara Hulu_Sungai_Selatan Hulu_Sungai_Tengah Hulu_Sungai_Utara Humbang_Hasundutan Indragiri_Hilir Indragiri_Hulu Indramayu Intan_Jaya Jambi Jayapura Jayawijaya Jember Batu Batu_Bara Bau_Bau Bekasi Belitung Belitung_Timur Belu Bener_Meriah Bengkalis Bengkayang Bengkulu Bengkulu_Selatan Bengkulu_Tengah Bengkulu_Utara Benteng Berau Bireuen Kulon_Progo Kuningan Kupang Biak_Numfor Bima Binjai Bintan Gayo_Lues Bitung Batam Batang_Hari
141
Lampiran 3 Listing Program Form Login package SPPA.View; import import import import import import
SPPA.Controller.DatabaseConnection; SPPA.Entity.Pengguna; java.sql.SQLException; java.util.logging.Level; java.util.logging.Logger; javax.swing.JOptionPane;
/** * * @author Florencia */ public class LoginSPPA extends javax.swing.JFrame { /** Creates new form LoginSPPA */ public LoginSPPA() { initComponents(); this.setLocationRelativeTo(null); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { panel1 = new usu.widget.Panel(); panelGlassStyle1 = new usu.widget.glass.PanelGlassStyle(); label1 = new usu.widget.Label(); panel3 = new usu.widget.Panel(); label2 = new usu.widget.Label(); label3 = new usu.widget.Label(); UsernameTextBoxGlass = new usu.widget.glass.TextBoxGlass(); passwordBox = new usu.widget.glass.PasswordBox(); loginButton1 = new usu.widget.Button(); panel2 = new usu.widget.Panel(); aboutButton = new usu.widget.Button(); jPanel1 = new javax.swing.JPanel(); jLabel3 = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel(); jLabel5 = new javax.swing.JLabel(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE ); setTitle("Login");
142
panel1.setBackground(new java.awt.Color(51, 153, 255)); panelGlassStyle1.setBackground(new java.awt.Color(51, 153, 255)); label1.setText("SISTEM PREDIKSI PRESTASI AKADEMIK"); label1.setFont(new java.awt.Font("Tahoma", 1, 24)); javax.swing.GroupLayout panelGlassStyle1Layout = new javax.swing.GroupLayout(panelGlassStyle1); panelGlassStyle1.setLayout(panelGlassStyle1Layout); panelGlassStyle1Layout.setHorizontalGroup( panelGlassStyle1Layout.createParallelGroup(javax.swing.GroupLayout .Alignment.LEADING) .addGroup(panelGlassStyle1Layout.createSequentialGroup() .addGap(30, 30, 30) .addComponent(label1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(319, Short.MAX_VALUE)) ); panelGlassStyle1Layout.setVerticalGroup( panelGlassStyle1Layout.createParallelGroup(javax.swing.GroupLayout .Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelGlassStyle1Layout.createSequentialGroup() .addContainerGap(86, Short.MAX_VALUE) .addComponent(label1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) ); panel3.setBackground(new java.awt.Color(255, 255, 255)); label2.setText("USERNAME"); label2.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 14)); label3.setText("PASSWORD"); label3.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 14)); passwordBox.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { passwordBoxActionPerformed(evt); } });
143
loginButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/SPPA/resources/logi n.png"))); // NOI18N loginButton1.setText("Login"); loginButton1.setFont(new java.awt.Font("Comic Sans MS", 1, 14)); loginButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { loginButton1ActionPerformed(evt); } }); panel2.setBackgroundImage(new javax.swing.ImageIcon(getClass().getResource("/SPPA/resources/logi n-welcome.gif"))); // NOI18N javax.swing.GroupLayout panel2Layout = new javax.swing.GroupLayout(panel2); panel2.setLayout(panel2Layout); panel2Layout.setHorizontalGroup( panel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment .LEADING) .addGap(0, 87, Short.MAX_VALUE) ); panel2Layout.setVerticalGroup( panel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment .LEADING) .addGap(0, 100, Short.MAX_VALUE) ); aboutButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/SPPA/resources/pred iksi.png"))); // NOI18N aboutButton.setText("About"); aboutButton.setFont(new java.awt.Font("Comic Sans MS", 1, 14)); aboutButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { aboutButtonActionPerformed(evt); } }); javax.swing.GroupLayout panel3Layout = new javax.swing.GroupLayout(panel3); panel3.setLayout(panel3Layout); panel3Layout.setHorizontalGroup( panel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment .LEADING) .addGroup(panel3Layout.createSequentialGroup()
144
.addGap(44, 44, 44) .addComponent(panel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(panel3Layout.createParallelGroup(javax.swing.GroupLayout .Alignment.LEADING) .addGroup(panel3Layout.createSequentialGroup() .addGap(18, 18, 18) .addGroup(panel3Layout.createParallelGroup(javax.swing.GroupLayout .Alignment.LEADING) .addComponent(label3, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(label2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(33, 33, 33) .addGroup(panel3Layout.createParallelGroup(javax.swing.GroupLayout .Alignment.LEADING, false) .addComponent(passwordBox, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(UsernameTextBoxGlass, javax.swing.GroupLayout.PREFERRED_SIZE, 140, javax.swing.GroupLayout.PREFERRED_SIZE))) .addGroup(panel3Layout.createSequentialGroup() .addGap(88, 88, 88) .addComponent(loginButton1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATE D) .addComponent(aboutButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addContainerGap(92, Short.MAX_VALUE)) ); panel3Layout.setVerticalGroup( panel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment .LEADING) .addGroup(panel3Layout.createSequentialGroup() .addContainerGap(88, Short.MAX_VALUE) .addComponent(panel2, javax.swing.GroupLayout.PREFERRED_SIZE,
145
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(58, 58, 58)) .addGroup(panel3Layout.createSequentialGroup() .addGap(50, 50, 50) .addGroup(panel3Layout.createParallelGroup(javax.swing.GroupLayout .Alignment.BASELINE) .addComponent(label2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(UsernameTextBoxGlass, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(18, 18, 18) .addGroup(panel3Layout.createParallelGroup(javax.swing.GroupLayout .Alignment.BASELINE) .addComponent(label3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(passwordBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(26, 26, 26) .addGroup(panel3Layout.createParallelGroup(javax.swing.GroupLayout .Alignment.BASELINE) .addComponent(loginButton1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(aboutButton, javax.swing.GroupLayout.PREFERRED_SIZE, 33, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(71, Short.MAX_VALUE)) ); jPanel1.setBackground(new java.awt.Color(51, 153, 255)); jLabel3.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 14)); jLabel3.setText("Fakultas Sains dan Teknologi"); jLabel4.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 14)); jLabel4.setText("Universitas Sanata Dharma Yogyakarta"); jLabel5.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 14)); jLabel5.setText("FLorensia Dwinta ©2011");
146
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayou t.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addGap(8, 8, 8) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayou t.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addGap(26, 26, 26) .addComponent(jLabel3)) .addGroup(jPanel1Layout.createSequentialGroup() .addGap(37, 37, 37) .addComponent(jLabel5)))) .addComponent(jLabel4)) .addGap(505, 505, 505)) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jLabel3) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATE D) .addComponent(jLabel4) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATE D) .addComponent(jLabel5) .addContainerGap()) ); javax.swing.GroupLayout panel1Layout = new javax.swing.GroupLayout(panel1); panel1.setLayout(panel1Layout);
147
panel1Layout.setHorizontalGroup( panel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment .LEADING) .addComponent(panelGlassStyle1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(panel1Layout.createSequentialGroup() .addGap(23, 23, 23) .addComponent(panel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(panel1Layout.createSequentialGroup() .addGap(129, 129, 129) .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 286, javax.swing.GroupLayout.PREFERRED_SIZE)) ); panel1Layout.setVerticalGroup( panel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment .LEADING) .addGroup(panel1Layout.createSequentialGroup() .addComponent(panelGlassStyle1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(panel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATE D, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) ); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI NG) .addComponent(panel1, javax.swing.GroupLayout.PREFERRED_SIZE, 551, javax.swing.GroupLayout.PREFERRED_SIZE) ); layout.setVerticalGroup(
148
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI NG) .addComponent(panel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) ); pack(); }// private void loginButton1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: String username = UsernameTextBoxGlass.getText(); String paswd = passwordBox.getText(); int rs = 0; try { rs = Pengguna.login(username, paswd); } catch (SQLException ex) { ex.getMessage(); } if (rs > 0) { try { SelectProdiSemesterSPPA f = new SelectProdiSemesterSPPA(); f.setVisible(true); this.setVisible(false); } catch (Exception ex) { Logger.getLogger(LoginSPPA.class.getName()).log(Level.SEVERE, null, ex); } } else { JOptionPane.showMessageDialog(null, "Login Gagal"); } } private void passwordBoxActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: } private void aboutButtonActionPerformed(java.awt.event.ActionEvent evt) { AboutSPPA test = new AboutSPPA(); test.setVisible(true); this.dispose(); } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() {
149
public void run() { LoginSPPA a = new LoginSPPA(); a.setVisible(true); } }); } // Variables declaration - do not modify private usu.widget.glass.TextBoxGlass UsernameTextBoxGlass; private usu.widget.Button aboutButton; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JPanel jPanel1; private usu.widget.Label label1; private usu.widget.Label label2; private usu.widget.Label label3; private usu.widget.Button loginButton1; private usu.widget.Panel panel1; private usu.widget.Panel panel2; private usu.widget.Panel panel3; private usu.widget.glass.PanelGlassStyle panelGlassStyle1; private usu.widget.glass.PasswordBox passwordBox; // End of variables declaration }
Lampiran 4 Listing Program Form Prodi Semester package SPPA.View; import import import import
SPPA.Controller.DatabaseConnection; java.sql.SQLException; java.util.logging.Level; java.util.logging.Logger;
/** * * @author Florencia */ public class SelectProdiSemesterSPPA extends javax.swing.JFrame { /** Creates new form SelectProdiSemesterSPPA */ public SelectProdiSemesterSPPA() throws SQLException { initComponents(); this.setLocationRelativeTo(null); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor.
150
*/ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { jPanel1 = new javax.swing.JPanel(); jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); jComboBoxProdi = new javax.swing.JComboBox(); jComboBoxSemester = new javax.swing.JComboBox(); nextJButton = new javax.swing.JButton(); panelGlassStyle1 = new usu.widget.glass.PanelGlassStyle(); jLabel3 = new javax.swing.JLabel(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE ); setTitle("Pre-processing"); // NOI18N jPanel1.setBackground(new java.awt.Color(255, 255, 255)); jLabel1.setFont(new java.awt.Font("Arial Rounded MT Bold", 1, 14)); jLabel1.setText("Program Studi"); jLabel2.setFont(new java.awt.Font("Arial Rounded MT Bold", 1, 14)); jLabel2.setText("Semester "); jComboBoxProdi.setFont(new java.awt.Font("Comic Sans MS", 1, 12)); // NOI18N jComboBoxProdi.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "PEND. BAHASA INGGRIS", "PEND. BAHASA,SAS.IND.& DAERAH", "PEND. SEJARAH", "PEND. EKONOMI", "PEND. AKUNTANSI", "PEND. MATEMATIKA", "PEND. FISIKA", "PENDIDIKAN BIOLOGI", "AKUNTANSI", "MANAJEMEN", "MATEMATIKA", "ILMU KOMPUTER", "FISIKA", "SASTRA INDONESIA", "SASTRA INGGRIS", "ILMU SEJARAH", "MEKATRONIKA (D3)", "TEKNIK ELEKTRO", "TEKNIK MESIN", "TEKNIK INFORMATIKA", "ILMU TEOLOGI", "MAGISTER TEOLOGI", "MAGISTER RELIGI DAN BUDAYA", "MAGISTER KAJIAN BAHASA INGGRIS", "FARMASI", "PROFESI APOTEKER", "PSIKOLOGI" })); jComboBoxProdi.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jComboBoxProdiActionPerformed(evt); } }); jComboBoxSemester.setFont(new java.awt.Font("Comic Sans MS", 1, 14)); // NOI18N jComboBoxSemester.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Semester 1", "Semester 2", "Semester 3", "Semester 4", "Semester 5", "Semester 6", "Semester 7", "Semester 8" }));
151
nextJButton.setFont(new java.awt.Font("Comic Sans MS", 1, 14)); nextJButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/SPPA/resources/ok.p ng"))); // NOI18N nextJButton.setText("OK"); nextJButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { nextJButtonActionPerformed(evt); } }); panelGlassStyle1.setBackground(new java.awt.Color(51, 153, 255)); jLabel3.setFont(new java.awt.Font("Tahoma", 1, 24)); jLabel3.setText("Set Program Studi"); javax.swing.GroupLayout panelGlassStyle1Layout = new javax.swing.GroupLayout(panelGlassStyle1); panelGlassStyle1.setLayout(panelGlassStyle1Layout); panelGlassStyle1Layout.setHorizontalGroup( panelGlassStyle1Layout.createParallelGroup(javax.swing.GroupLayout .Alignment.LEADING) .addGroup(panelGlassStyle1Layout.createSequentialGroup() .addGap(149, 149, 149) .addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 226, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(165, Short.MAX_VALUE)) ); panelGlassStyle1Layout.setVerticalGroup( panelGlassStyle1Layout.createParallelGroup(javax.swing.GroupLayout .Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelGlassStyle1Layout.createSequentialGroup() .addContainerGap(67, Short.MAX_VALUE) .addComponent(jLabel3) .addContainerGap()) ); javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addGap(84, 84, 84)
152
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayou t.Alignment.TRAILING) .addGroup(jPanel1Layout.createSequentialGroup() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayou t.Alignment.LEADING) .addComponent(jLabel1) .addComponent(jLabel2)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATE D) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayou t.Alignment.LEADING) .addComponent(jComboBoxProdi, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jComboBoxSemester, javax.swing.GroupLayout.PREFERRED_SIZE, 201, javax.swing.GroupLayout.PREFERRED_SIZE))) .addComponent(nextJButton))) .addComponent(panelGlassStyle1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() .addComponent(panelGlassStyle1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(60, 60, 60) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayou t.Alignment.BASELINE) .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jComboBoxProdi, javax.swing.GroupLayout.PREFERRED_SIZE, 29, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATE D) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayou t.Alignment.BASELINE) .addComponent(jLabel2)
153
.addComponent(jComboBoxSemester, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATE D, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(nextJButton) .addGap(234, 234, 234)) ); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI NG) .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI NG) .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 384, javax.swing.GroupLayout.PREFERRED_SIZE) ); pack(); }// private void jComboBoxProdiActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: } private void nextJButtonActionPerformed(java.awt.event.ActionEvent evt) { try { //TODO add your handling code here: int kodePro = DatabaseConnection.getIdProdi(jComboBoxProdi.getSelectedItem().toS tring()); int kodeSmt = DatabaseConnection.getIdSemester(jComboBoxSemester.getSelectedItem ().toString()); HomeSPPA test2 = new HomeSPPA(kodePro, kodeSmt); test2.setVisible(true); this.dispose();
154
} catch (SQLException ex) { Logger.getLogger(SelectProdiSemesterSPPA.class.getName()).log(Leve l.SEVERE, null, ex); } } // Variables declaration - do not modify private javax.swing.JComboBox jComboBoxProdi; private javax.swing.JComboBox jComboBoxSemester; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JPanel jPanel1; private javax.swing.JButton nextJButton; private usu.widget.glass.PanelGlassStyle panelGlassStyle1; // End of variables declaration }
Lampiran 5 Listing Program Form Home package SPPA.View; import import import import import
SPPA.Controller.DatabaseConnection; java.sql.SQLException; java.util.logging.Level; java.util.logging.Logger; javax.swing.JOptionPane;
/** * * @author Florencia */ public class HomeSPPA extends javax.swing.JFrame { private boolean pohonkeputusan; private int prodiPengujian; private int semester; /** Creates new form HomeSPPA */ public HomeSPPA(int prodi, int smt) { try { initComponents(); prodiPengujian = prodi; semester = smt; pohonkeputusan = DatabaseConnection.cekPola(prodi, smt); DatabaseConnection.closeConnection(); this.setLocationRelativeTo(null); } catch (SQLException ex) { System.out.println("Error di konstruktor HomeSPPA"); } } public HomeSPPA() { initComponents();
155
} /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { panelBackgroundHalamanHome = new usu.widget.Panel(); jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); jPanel1 = new javax.swing.JPanel(); jLabel3 = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel(); jLabel5 = new javax.swing.JLabel(); menuBarHalamanHome = new javax.swing.JMenuBar(); menuFile = new javax.swing.JMenu(); jMenuPreprocessing = new javax.swing.JMenuItem(); jMenuProcessing = new javax.swing.JMenu(); GroupPredictionMenuItem = new javax.swing.JMenuItem(); PersonalPredictionMenuItem = new javax.swing.JMenuItem(); jMenuExit = new javax.swing.JMenuItem(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE ); panelBackgroundHalamanHome.setBackground(new java.awt.Color(255, 255, 255)); jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/SPPA/resources/bisn is_internet_oywh.jpg"))); // NOI18N jLabel2.setFont(new java.awt.Font("Tahoma", 1, 18)); jLabel2.setText(".:: SISTEM PREDIKSI PRESTASI AKADEMIK ::."); jPanel1.setBackground(new java.awt.Color(255, 255, 255)); jLabel3.setText("Fakultas Sains dan Teknologi"); jLabel4.setText("Universitas Sanata Dharma Yogyakarta"); jLabel5.setText("FLorensia Dwinta ©2011"); javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup(
156
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayou t.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel4)) .addGroup(jPanel1Layout.createSequentialGroup() .addGap(36, 36, 36) .addComponent(jLabel3)) .addGroup(jPanel1Layout.createSequentialGroup() .addGap(47, 47, 47) .addComponent(jLabel5))) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addGap(21, 21, 21) .addComponent(jLabel3) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATE D) .addComponent(jLabel4) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATE D) .addComponent(jLabel5) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); javax.swing.GroupLayout panelBackgroundHalamanHomeLayout = new javax.swing.GroupLayout(panelBackgroundHalamanHome); panelBackgroundHalamanHome.setLayout(panelBackgroundHalamanHomeLay out); panelBackgroundHalamanHomeLayout.setHorizontalGroup( panelBackgroundHalamanHomeLayout.createParallelGroup(javax.swing.G roupLayout.Alignment.LEADING) .addGroup(panelBackgroundHalamanHomeLayout.createSequentialGroup() .addGroup(panelBackgroundHalamanHomeLayout.createParallelGroup(jav ax.swing.GroupLayout.Alignment.LEADING)
157
.addGroup(panelBackgroundHalamanHomeLayout.createSequentialGroup() .addGap(59, 59, 59) .addGroup(panelBackgroundHalamanHomeLayout.createParallelGroup(jav ax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 411, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel2))) .addGroup(panelBackgroundHalamanHomeLayout.createSequentialGroup() .addGap(171, 171, 171) .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addContainerGap(61, Short.MAX_VALUE)) ); panelBackgroundHalamanHomeLayout.setVerticalGroup( panelBackgroundHalamanHomeLayout.createParallelGroup(javax.swing.G roupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelBackgroundHalamanHomeLayout.createSequentialGroup() .addGap(56, 56, 56) .addComponent(jLabel2) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATE D, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jLabel1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATE D) .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) ); menuFile.setText("File"); jMenuPreprocessing.setText("Pre-processing"); jMenuPreprocessing.setToolTipText("membuat tree baru"); jMenuPreprocessing.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jMenuPreprocessingActionPerformed(evt); } }); menuFile.add(jMenuPreprocessing); jMenuProcessing.setText("Processing");
158
GroupPredictionMenuItem.setText("Prediksi Kelompok"); GroupPredictionMenuItem.setToolTipText("Prediksi Kelompok Data"); GroupPredictionMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { GroupPredictionMenuItemActionPerformed(evt); } }); jMenuProcessing.add(GroupPredictionMenuItem); PersonalPredictionMenuItem.setText("Prediksi Personal"); PersonalPredictionMenuItem.setToolTipText("Prediksi Personal Data"); PersonalPredictionMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { PersonalPredictionMenuItemActionPerformed(evt); } }); jMenuProcessing.add(PersonalPredictionMenuItem); menuFile.add(jMenuProcessing); jMenuExit.setText("Exit"); jMenuExit.setToolTipText("Keluar Program"); jMenuExit.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jMenuExitActionPerformed(evt); } }); menuFile.add(jMenuExit); menuBarHalamanHome.add(menuFile); setJMenuBar(menuBarHalamanHome); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI NG) .addComponent(panelBackgroundHalamanHome, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI NG)
159
.addComponent(panelBackgroundHalamanHome, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) ); pack(); }// private void jMenuExitActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: System.exit(0); } private void PersonalPredictionMenuItemActionPerformed(java.awt.event.ActionEve nt evt) { // TODO add your handling code here: if (pohonkeputusan==true) { try { SelectProdiSemesterSPPA test = new SelectProdiSemesterSPPA(); PrediksiPersonalSPPA viewTree = new PrediksiPersonalSPPA(prodiPengujian, semester); viewTree.setVisible(true); this.dispose(); } catch (SQLException ex) { Logger.getLogger(HomeSPPA.class.getName()).log(Level.SEVERE, null, ex); } } else { JOptionPane.showMessageDialog(null, "Pohon Belum Terbentuk"); } } private void GroupPredictionMenuItemActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: if (pohonkeputusan==true) { PrediksiKelompokSPPA viewTree = new PrediksiKelompokSPPA(prodiPengujian,semester); viewTree.setVisible(true); this.dispose(); } else { JOptionPane.showMessageDialog(null, "Pohon Belum Terbentuk"); } } private void jMenuPreprocessingActionPerformed(java.awt.event.ActionEvent evt) {
160
// TODO add your handling code here: if(pohonkeputusan==false){ PreprocessingSPPA testPrepro1 = new PreprocessingSPPA(prodiPengujian, semester); testPrepro1.setVisible(true); this.dispose(); }else{ JOptionPane.showMessageDialog(null, "Pohon sudah terbentuk! Anda bisa langsung melakukan prediksi"); } } // Variables declaration - do not modify private javax.swing.JMenuItem GroupPredictionMenuItem; private javax.swing.JMenuItem PersonalPredictionMenuItem; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JMenuItem jMenuExit; private javax.swing.JMenuItem jMenuPreprocessing; private javax.swing.JMenu jMenuProcessing; private javax.swing.JPanel jPanel1; private javax.swing.JMenuBar menuBarHalamanHome; private javax.swing.JMenu menuFile; private usu.widget.Panel panelBackgroundHalamanHome; // End of variables declaration }
Lampiran 6 Listing Program Form Preprocessing package SPPA.View; import import import import import import import import import import import import import import import import import import import
SPPA.Controller.CrossValidation; SPPA.Controller.DatabaseConnection; SPPA.Entity.Mahasiswa; SPPA.Controller.TransformasiData; SPPA.Entity.Aturan; SPPA.Entity.Node; SPPA.Entity.enumAtribut; SPPA.Entity.enumKeputusanIPK; SPPA.Entity.enumNilaiJenisKelamin; SPPA.Entity.enumNilaiJurusan; SPPA.Entity.enumNilaiKabupaten; SPPA.Entity.enumNilaiKeteranganSekolah; SPPA.Entity.enumNilaiRaport; java.io.FileNotFoundException; java.io.IOException; java.sql.SQLException; java.util.Vector; java.util.logging.Level; java.util.logging.Logger;
161
import javax.swing.JFileChooser; import javax.swing.JOptionPane; import javax.swing.table.DefaultTableModel; /** * * @author Florencia */ public class PreprocessingSPPA extends javax.swing.JFrame { private private private private private private private private private private private private
Mahasiswa mahasiswa[]; DefaultTableModel tabelModAwal; DefaultTableModel tabelModKonvert; int selectedProdi; int selectedSemester; String semesterTerpilih; Mahasiswa mhsi[]; int jumAtributPelatihan = 29; Vector pohonkeputusan; Vector dataset; static float akurasi; String kategori;
/** Creates new form PreprocessingSPPA */ public PreprocessingSPPA(int prod, int smt) { try { pohonkeputusan = new Vector(); initComponents(); semesterTerpilih = DatabaseConnection.getNamaSemester(smt); selectedProdi = prod; selectedSemester = smt; DatabaseConnection.closeConnection(); //this.setLocationRelativeTo(null); } catch (SQLException ex) { System.out.println("error di konstruktor PreprocessingSPPA: " + ex.getMessage()); } } public PreprocessingSPPA() { initComponents(); } public int getSelectedProdi() { return selectedProdi; } public void setSelectedProdi(int selectedProdi) { this.selectedProdi = selectedProdi; } public int getSelectedSemester() { return selectedSemester; }
162
public void setSelectedSemester(int selectedSemester) { this.selectedSemester = selectedSemester; } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { panelTabelPreAwal = new usu.widget.Panel(); jPanel2 = new javax.swing.JPanel(); jScrollPane1 = new javax.swing.JScrollPane(); jTableMahasiswa = new javax.swing.JTable(); jLabel1 = new javax.swing.JLabel(); jTextFieldLokasiFile = new javax.swing.JTextField(); label3 = new usu.widget.Label(); labelJumlahDataAwal = new usu.widget.Label(); BrowseButtonGlass = new usu.widget.ButtonGlass(); jPanelTabelTransform = new javax.swing.JPanel(); label4 = new usu.widget.Label(); labelJumlahDataTransform = new usu.widget.Label(); TransformasiButtonGlass = new usu.widget.ButtonGlass(); CreateTreeButtonGlass = new usu.widget.ButtonGlass(); BackButtonGlass = new usu.widget.ButtonGlass(); jScrollPane3 = new javax.swing.JScrollPane(); jTableMahasiswaTransform = new javax.swing.JTable(); jPanel1 = new javax.swing.JPanel(); jLabel3 = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel(); jLabel5 = new javax.swing.JLabel(); panelGlassStyle1 = new usu.widget.glass.PanelGlassStyle(); jLabel2 = new javax.swing.JLabel(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE ); setTitle("Pre-processing Semester 1"); panelTabelPreAwal.setBackground(new java.awt.Color(51, 153, 255)); jPanel2.setBackground(new java.awt.Color(51, 153, 255)); jTableMahasiswa.setFont(new java.awt.Font("Tahoma", 0, 9)); // NOI18N jTableMahasiswa.setModel(new javax.swing.table.DefaultTableModel( new Object [][] {
163
}, new String [] { "No.Alias", "Jur", "KetSMU", "KabSklh", "KabAsl", "Sex", "Bindo1", "Bindo2", "Bindo3", "Bing1", "Bing2", "Bing3", "Mtk1", "Mtk2", "Mtk3", "Fis1", "Fis2", "Fis3", "Bio1", "Bio2", "Bio3", "Kim1", "Kim2", "Kim3", "Eko1", "Eko2", "Eko3", "Sej1", "Sej2", "Sej3", "IPK" } ) { boolean[] canEdit = new boolean [] { false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false }; public boolean isCellEditable(int rowIndex, int columnIndex) { return canEdit [columnIndex]; } }); jTableMahasiswa.getTableHeader().setReorderingAllowed(false); jScrollPane1.setViewportView(jTableMahasiswa); jLabel1.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 14)); jLabel1.setText("Masukkan Data"); label3.setText("Jumlah data awal :"); label3.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 14)); labelJumlahDataAwal.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 14)); BrowseButtonGlass.setIcon(new javax.swing.ImageIcon(getClass().getResource("/SPPA/resources/brow se.png"))); // NOI18N BrowseButtonGlass.setText("Browse"); BrowseButtonGlass.setFont(new java.awt.Font("Comic Sans MS", 1, 14)); BrowseButtonGlass.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { BrowseButtonGlassActionPerformed(evt); } }); javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); jPanel2.setLayout(jPanel2Layout); jPanel2Layout.setHorizontalGroup(
164
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addGap(43, 43, 43) .addComponent(jLabel1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELA TED) .addComponent(jTextFieldLokasiFile, javax.swing.GroupLayout.DEFAULT_SIZE, 809, Short.MAX_VALUE) .addGap(18, 18, 18) .addComponent(BrowseButtonGlass, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(110, 110, 110)) .addGroup(jPanel2Layout.createSequentialGroup() .addGap(50, 50, 50) .addComponent(label3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATE D) .addComponent(labelJumlahDataAwal, javax.swing.GroupLayout.PREFERRED_SIZE, 104, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(917, Short.MAX_VALUE)) .addGroup(jPanel2Layout.createSequentialGroup() .addContainerGap() .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 1182, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) ); jPanel2Layout.setVerticalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayou t.Alignment.BASELINE) .addComponent(jTextFieldLokasiFile, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel1) .addComponent(BrowseButtonGlass, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(33, 33, 33) .addComponent(jScrollPane1,
165
javax.swing.GroupLayout.PREFERRED_SIZE, 98, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATE D) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayou t.Alignment.LEADING) .addComponent(labelJumlahDataAwal, javax.swing.GroupLayout.DEFAULT_SIZE, 17, Short.MAX_VALUE) .addComponent(label3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGap(26, 26, 26)) ); jPanelTabelTransform.setBackground(new java.awt.Color(51, 153, 255)); label4.setText("Jumlah data setelah transformasi :"); label4.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 14)); labelJumlahDataTransform.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 14)); TransformasiButtonGlass.setIcon(new javax.swing.ImageIcon(getClass().getResource("/SPPA/resources/tran sform.png"))); // NOI18N TransformasiButtonGlass.setText("Transformasi"); TransformasiButtonGlass.setFont(new java.awt.Font("Comic Sans MS", 1, 14)); TransformasiButtonGlass.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { TransformasiButtonGlassActionPerformed(evt); } }); CreateTreeButtonGlass.setIcon(new javax.swing.ImageIcon(getClass().getResource("/SPPA/resources/buat aturan.png"))); // NOI18N CreateTreeButtonGlass.setText("Buat Aturan"); CreateTreeButtonGlass.setFont(new java.awt.Font("Comic Sans MS", 1, 14)); CreateTreeButtonGlass.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { CreateTreeButtonGlassActionPerformed(evt); } }); BackButtonGlass.setIcon(new javax.swing.ImageIcon(getClass().getResource("/SPPA/resources/undo
166
.png"))); // NOI18N BackButtonGlass.setText("Kembali"); BackButtonGlass.setFont(new java.awt.Font("Comic Sans MS", 1, 14)); BackButtonGlass.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { BackButtonGlassActionPerformed(evt); } }); jTableMahasiswaTransform.setFont(new java.awt.Font("Tahoma", 0, 9)); // NOI18N jTableMahasiswaTransform.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { }, new String [] { "No.Alias", "Jur", "KetSMU", "KabSklh", "KabAsl", "Sex", "Bindo1", "Bindo2", "Bindo3", "Bing1", "Bing2", "Bing3", "Mtk1", "Mtk2", "Mtk3", "Fis1", "Fis2", "Fis3", "Bio1", "Bio2", "Bio3", "Kim1", "Kim2", "Kim3", "Eko1", "Eko2", "Eko3", "Sej1", "Sej2", "Sej3", "IPK" } ) { boolean[] canEdit = new boolean [] { false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false }; public boolean isCellEditable(int rowIndex, int columnIndex) { return canEdit [columnIndex]; } }); jTableMahasiswaTransform.getTableHeader().setReorderingAllowed(fal se); jScrollPane3.setViewportView(jTableMahasiswaTransform); javax.swing.GroupLayout jPanelTabelTransformLayout = new javax.swing.GroupLayout(jPanelTabelTransform); jPanelTabelTransform.setLayout(jPanelTabelTransformLayout); jPanelTabelTransformLayout.setHorizontalGroup( jPanelTabelTransformLayout.createParallelGroup(javax.swing.GroupLa yout.Alignment.LEADING) .addGroup(jPanelTabelTransformLayout.createSequentialGroup() .addGap(63, 63, 63) .addComponent(label4,
167
javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATE D) .addComponent(labelJumlahDataTransform, javax.swing.GroupLayout.PREFERRED_SIZE, 122, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(776, Short.MAX_VALUE)) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanelTabelTransformLayout.createSequentialGroup() .addContainerGap(783, Short.MAX_VALUE) .addComponent(TransformasiButtonGlass, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATE D) .addComponent(CreateTreeButtonGlass, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATE D) .addComponent(BackButtonGlass, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(62, 62, 62)) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanelTabelTransformLayout.createSequentialGroup() .addContainerGap() .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 1182, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(72, 72, 72)) ); jPanelTabelTransformLayout.setVerticalGroup( jPanelTabelTransformLayout.createParallelGroup(javax.swing.GroupLa yout.Alignment.LEADING) .addGroup(jPanelTabelTransformLayout.createSequentialGroup() .addGap(38, 38, 38) .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 98, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATE D) .addGroup(jPanelTabelTransformLayout.createParallelGroup(javax.swi ng.GroupLayout.Alignment.TRAILING, false)
168
.addComponent(labelJumlahDataTransform, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(label4, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATE D, 11, Short.MAX_VALUE) .addGroup(jPanelTabelTransformLayout.createParallelGroup(javax.swi ng.GroupLayout.Alignment.BASELINE) .addComponent(TransformasiButtonGlass, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(CreateTreeButtonGlass, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(BackButtonGlass, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap()) ); jPanel1.setBackground(new java.awt.Color(51, 153, 255)); jLabel3.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 14)); jLabel3.setText("Fakultas Sains dan Teknologi"); jLabel4.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 14)); jLabel4.setText("Universitas Sanata Dharma Yogyakarta"); jLabel5.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 14)); jLabel5.setText("FLorensia Dwinta ©2011"); javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addGap(500, 500, 500) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayou t.Alignment.LEADING)
169
.addGroup(jPanel1Layout.createSequentialGroup() .addGap(8, 8, 8) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayou t.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addGap(26, 26, 26) .addComponent(jLabel3)) .addGroup(jPanel1Layout.createSequentialGroup() .addGap(37, 37, 37) .addComponent(jLabel5)))) .addComponent(jLabel4)) .addContainerGap(435, Short.MAX_VALUE)) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel3) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATE D) .addComponent(jLabel4) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATE D) .addComponent(jLabel5) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); panelGlassStyle1.setBackground(new java.awt.Color(51, 153, 255)); panelGlassStyle1.setForeground(new java.awt.Color(255, 255, 255)); jLabel2.setFont(new java.awt.Font("Tahoma", 1, 24)); jLabel2.setText(".: PRE-PROCESSING :."); javax.swing.GroupLayout panelGlassStyle1Layout = new javax.swing.GroupLayout(panelGlassStyle1); panelGlassStyle1.setLayout(panelGlassStyle1Layout); panelGlassStyle1Layout.setHorizontalGroup( panelGlassStyle1Layout.createParallelGroup(javax.swing.GroupLayout .Alignment.LEADING) .addGroup(panelGlassStyle1Layout.createSequentialGroup() .addGap(497, 497, 497) .addComponent(jLabel2)
170
.addContainerGap(390, Short.MAX_VALUE)) ); panelGlassStyle1Layout.setVerticalGroup( panelGlassStyle1Layout.createParallelGroup(javax.swing.GroupLayout .Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelGlassStyle1Layout.createSequentialGroup() .addContainerGap(74, Short.MAX_VALUE) .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) ); javax.swing.GroupLayout panelTabelPreAwalLayout = new javax.swing.GroupLayout(panelTabelPreAwal); panelTabelPreAwal.setLayout(panelTabelPreAwalLayout); panelTabelPreAwalLayout.setHorizontalGroup( panelTabelPreAwalLayout.createParallelGroup(javax.swing.GroupLayou t.Alignment.LEADING) .addGroup(panelTabelPreAwalLayout.createSequentialGroup() .addContainerGap() .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addContainerGap()) .addGroup(panelTabelPreAwalLayout.createSequentialGroup() .addGroup(panelTabelPreAwalLayout.createParallelGroup(javax.swing. GroupLayout.Alignment.TRAILING, false) .addGroup(javax.swing.GroupLayout.Alignment.LEADING, panelTabelPreAwalLayout.createSequentialGroup() .addContainerGap() .addComponent(jPanelTabelTransform, 0, 1200, Short.MAX_VALUE)) .addGroup(javax.swing.GroupLayout.Alignment.LEADING, panelTabelPreAwalLayout.createSequentialGroup() .addContainerGap() .addComponent(jPanel2, 0, 1200, Short.MAX_VALUE)) .addComponent(panelGlassStyle1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); panelTabelPreAwalLayout.setVerticalGroup(
171
panelTabelPreAwalLayout.createParallelGroup(javax.swing.GroupLayou t.Alignment.LEADING) .addGroup(panelTabelPreAwalLayout.createSequentialGroup() .addComponent(panelGlassStyle1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATE D) .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATE D) .addComponent(jPanelTabelTransform, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATE D, 49, Short.MAX_VALUE) .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(22, 22, 22)) ); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI NG) .addComponent(panelTabelPreAwal, javax.swing.GroupLayout.PREFERRED_SIZE, 1218, javax.swing.GroupLayout.PREFERRED_SIZE) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI NG) .addGroup(layout.createSequentialGroup() .addComponent(panelTabelPreAwal, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
172
); pack(); }// private void BrowseButtonGlassActionPerformed(java.awt.event.ActionEvent evt) { JFileChooser fc = new JFileChooser(); if (fc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) { try { jTextFieldLokasiFile.setText(fc.getSelectedFile().getPath()); mahasiswa = Mahasiswa.newFile(fc.getSelectedFile(), selectedSemester); if (mahasiswa != null) { tabelModAwal = (DefaultTableModel) jTableMahasiswa.getModel(); labelJumlahDataAwal.setText(String.valueOf(mahasiswa.length)); //System.out.println("mhs.length " + mahasiswa.length); for (int i = 0; i < mahasiswa.length; i++) { if (selectedSemester == 1) { tabelModAwal.addRow(new Object[]{mahasiswa[i].getNoAlias(), mahasiswa[i].getJurusan(), mahasiswa[i].getKetSekolah(), mahasiswa[i].getKabupatenSekolah(), mahasiswa[i].getKabupatenAsal(), mahasiswa[i].getJk(), mahasiswa[i].getbIndo1(), mahasiswa[i].getbIndo2(), mahasiswa[i].getbIndo3(), mahasiswa[i].getbIng1(), mahasiswa[i].getbIng2(), mahasiswa[i].getbIng3(), mahasiswa[i].getMtk1(), mahasiswa[i].getMtk2(), mahasiswa[i].getMtk3(), mahasiswa[i].getFisika1(), mahasiswa[i].getFisika2(), mahasiswa[i].getFisika3(), mahasiswa[i].getBio1(), mahasiswa[i].getBio2(), mahasiswa[i].getBio3(), mahasiswa[i].getKimia1(), mahasiswa[i].getKimia2(), mahasiswa[i].getKimia3(), mahasiswa[i].getEko1(), mahasiswa[i].getEko2(), mahasiswa[i].getEko3(), mahasiswa[i].getSejarah1(), mahasiswa[i].getSejarah2(), mahasiswa[i].getSejarah3(), mahasiswa[i].getIp1()}); } else if (selectedSemester == 2) { tabelModAwal.addRow(new Object[]{mahasiswa[i].getNoAlias(), mahasiswa[i].getJurusan(), mahasiswa[i].getKetSekolah(), mahasiswa[i].getKabupatenSekolah(), mahasiswa[i].getKabupatenAsal(), mahasiswa[i].getJk(), mahasiswa[i].getbIndo1(), mahasiswa[i].getbIndo2(), mahasiswa[i].getbIndo3(), mahasiswa[i].getbIng1(), mahasiswa[i].getbIng2(), mahasiswa[i].getbIng3(), mahasiswa[i].getMtk1(), mahasiswa[i].getMtk2(), mahasiswa[i].getMtk3(), mahasiswa[i].getFisika1(), mahasiswa[i].getFisika2(), mahasiswa[i].getFisika3(), mahasiswa[i].getBio1(), mahasiswa[i].getBio2(), mahasiswa[i].getBio3(), mahasiswa[i].getKimia1(), mahasiswa[i].getKimia2(), mahasiswa[i].getKimia3(),
173
mahasiswa[i].getEko1(), mahasiswa[i].getEko2(), mahasiswa[i].getEko3(), mahasiswa[i].getSejarah1(), mahasiswa[i].getSejarah2(), mahasiswa[i].getSejarah3(), mahasiswa[i].getIp2()}); } else if (selectedSemester == 3) { tabelModAwal.addRow(new Object[]{mahasiswa[i].getNoAlias(), mahasiswa[i].getJurusan(), mahasiswa[i].getKetSekolah(), mahasiswa[i].getKabupatenSekolah(), mahasiswa[i].getKabupatenAsal(), mahasiswa[i].getJk(), mahasiswa[i].getbIndo1(), mahasiswa[i].getbIndo2(), mahasiswa[i].getbIndo3(), mahasiswa[i].getbIng1(), mahasiswa[i].getbIng2(), mahasiswa[i].getbIng3(), mahasiswa[i].getMtk1(), mahasiswa[i].getMtk2(), mahasiswa[i].getMtk3(), mahasiswa[i].getFisika1(), mahasiswa[i].getFisika2(), mahasiswa[i].getFisika3(), mahasiswa[i].getBio1(), mahasiswa[i].getBio2(), mahasiswa[i].getBio3(), mahasiswa[i].getKimia1(), mahasiswa[i].getKimia2(), mahasiswa[i].getKimia3(), mahasiswa[i].getEko1(), mahasiswa[i].getEko2(), mahasiswa[i].getEko3(), mahasiswa[i].getSejarah1(), mahasiswa[i].getSejarah2(), mahasiswa[i].getSejarah3(), mahasiswa[i].getIp3()}); } else if (selectedSemester == 4) { tabelModAwal.addRow(new Object[]{mahasiswa[i].getNoAlias(), mahasiswa[i].getJurusan(), mahasiswa[i].getKetSekolah(), mahasiswa[i].getKabupatenSekolah(), mahasiswa[i].getKabupatenAsal(), mahasiswa[i].getJk(), mahasiswa[i].getbIndo1(), mahasiswa[i].getbIndo2(), mahasiswa[i].getbIndo3(), mahasiswa[i].getbIng1(), mahasiswa[i].getbIng2(), mahasiswa[i].getbIng3(), mahasiswa[i].getMtk1(), mahasiswa[i].getMtk2(), mahasiswa[i].getMtk3(), mahasiswa[i].getFisika1(), mahasiswa[i].getFisika2(), mahasiswa[i].getFisika3(), mahasiswa[i].getBio1(), mahasiswa[i].getBio2(), mahasiswa[i].getBio3(), mahasiswa[i].getKimia1(), mahasiswa[i].getKimia2(), mahasiswa[i].getKimia3(), mahasiswa[i].getEko1(), mahasiswa[i].getEko2(), mahasiswa[i].getEko3(), mahasiswa[i].getSejarah1(), mahasiswa[i].getSejarah2(), mahasiswa[i].getSejarah3(), mahasiswa[i].getIp4()}); } else if (selectedSemester == 5) { tabelModAwal.addRow(new Object[]{mahasiswa[i].getNoAlias(), mahasiswa[i].getJurusan(), mahasiswa[i].getKetSekolah(), mahasiswa[i].getKabupatenSekolah(), mahasiswa[i].getKabupatenAsal(), mahasiswa[i].getJk(), mahasiswa[i].getbIndo1(), mahasiswa[i].getbIndo2(), mahasiswa[i].getbIndo3(), mahasiswa[i].getbIng1(), mahasiswa[i].getbIng2(), mahasiswa[i].getbIng3(), mahasiswa[i].getMtk1(), mahasiswa[i].getMtk2(), mahasiswa[i].getMtk3(), mahasiswa[i].getFisika1(), mahasiswa[i].getFisika2(), mahasiswa[i].getFisika3(), mahasiswa[i].getBio1(), mahasiswa[i].getBio2(), mahasiswa[i].getBio3(), mahasiswa[i].getKimia1(), mahasiswa[i].getKimia2(), mahasiswa[i].getKimia3(), mahasiswa[i].getEko1(), mahasiswa[i].getEko2(), mahasiswa[i].getEko3(), mahasiswa[i].getSejarah1(),
174
mahasiswa[i].getSejarah2(), mahasiswa[i].getSejarah3(), mahasiswa[i].getIp5()}); } else if (selectedSemester == 6) { tabelModAwal.addRow(new Object[]{mahasiswa[i].getNoAlias(), mahasiswa[i].getJurusan(), mahasiswa[i].getKetSekolah(), mahasiswa[i].getKabupatenSekolah(), mahasiswa[i].getKabupatenAsal(), mahasiswa[i].getJk(), mahasiswa[i].getbIndo1(), mahasiswa[i].getbIndo2(), mahasiswa[i].getbIndo3(), mahasiswa[i].getbIng1(), mahasiswa[i].getbIng2(), mahasiswa[i].getbIng3(), mahasiswa[i].getMtk1(), mahasiswa[i].getMtk2(), mahasiswa[i].getMtk3(), mahasiswa[i].getFisika1(), mahasiswa[i].getFisika2(), mahasiswa[i].getFisika3(), mahasiswa[i].getBio1(), mahasiswa[i].getBio2(), mahasiswa[i].getBio3(), mahasiswa[i].getKimia1(), mahasiswa[i].getKimia2(), mahasiswa[i].getKimia3(), mahasiswa[i].getEko1(), mahasiswa[i].getEko2(), mahasiswa[i].getEko3(), mahasiswa[i].getSejarah1(), mahasiswa[i].getSejarah2(), mahasiswa[i].getSejarah3(), mahasiswa[i].getIp6()}); } else if (selectedSemester == 7) { tabelModAwal.addRow(new Object[]{mahasiswa[i].getNoAlias(), mahasiswa[i].getJurusan(), mahasiswa[i].getKetSekolah(), mahasiswa[i].getKabupatenSekolah(), mahasiswa[i].getKabupatenAsal(), mahasiswa[i].getJk(), mahasiswa[i].getbIndo1(), mahasiswa[i].getbIndo2(), mahasiswa[i].getbIndo3(), mahasiswa[i].getbIng1(), mahasiswa[i].getbIng2(), mahasiswa[i].getbIng3(), mahasiswa[i].getMtk1(), mahasiswa[i].getMtk2(), mahasiswa[i].getMtk3(), mahasiswa[i].getFisika1(), mahasiswa[i].getFisika2(), mahasiswa[i].getFisika3(), mahasiswa[i].getBio1(), mahasiswa[i].getBio2(), mahasiswa[i].getBio3(), mahasiswa[i].getKimia1(), mahasiswa[i].getKimia2(), mahasiswa[i].getKimia3(), mahasiswa[i].getEko1(), mahasiswa[i].getEko2(), mahasiswa[i].getEko3(), mahasiswa[i].getSejarah1(), mahasiswa[i].getSejarah2(), mahasiswa[i].getSejarah3(), mahasiswa[i].getIp7()}); } else if (selectedSemester == 8) { tabelModAwal.addRow(new Object[]{mahasiswa[i].getNoAlias(), mahasiswa[i].getJurusan(), mahasiswa[i].getKetSekolah(), mahasiswa[i].getKabupatenSekolah(), mahasiswa[i].getKabupatenAsal(), mahasiswa[i].getJk(), mahasiswa[i].getbIndo1(), mahasiswa[i].getbIndo2(), mahasiswa[i].getbIndo3(), mahasiswa[i].getbIng1(), mahasiswa[i].getbIng2(), mahasiswa[i].getbIng3(), mahasiswa[i].getMtk1(), mahasiswa[i].getMtk2(), mahasiswa[i].getMtk3(), mahasiswa[i].getFisika1(), mahasiswa[i].getFisika2(), mahasiswa[i].getFisika3(), mahasiswa[i].getBio1(), mahasiswa[i].getBio2(), mahasiswa[i].getBio3(), mahasiswa[i].getKimia1(), mahasiswa[i].getKimia2(), mahasiswa[i].getKimia3(), mahasiswa[i].getEko1(), mahasiswa[i].getEko2(), mahasiswa[i].getEko3(), mahasiswa[i].getSejarah1(), mahasiswa[i].getSejarah2(), mahasiswa[i].getSejarah3(), mahasiswa[i].getIp8()});
175
} } JOptionPane.showMessageDialog(null, "File Berhasil masukan"); } } catch (FileNotFoundException ex) { Logger.getLogger(PreprocessingSPPA.class.getName()).log(Level.SEVE RE, null, ex); } catch (IOException ex) { Logger.getLogger(PreprocessingSPPA.class.getName()).log(Level.SEVE RE, null, ex); } } } private void TransformasiButtonGlassActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: try { tabelModKonvert = (DefaultTableModel) jTableMahasiswaTransform.getModel(); int jumarr = mahasiswa.length; dataset = new Vector(); double[] double[] double[] double[] double[] double[] double[] double[] double[] double[] double[] double[] double[] double[] double[] double[] double[] double[] double[] double[] double[] double[] double[] double[] double[] double[] double[] double[] double[]
arrBindo1 = new double[jumarr]; arrBindo2 = new double[jumarr]; arrBindo3 = new double[jumarr]; arrBing1 = new double[jumarr]; arrBing2 = new double[jumarr]; arrBing3 = new double[jumarr]; arrMtk1 = new double[jumarr]; arrMtk2 = new double[jumarr]; arrMtk3 = new double[jumarr]; arrFis1 = new double[jumarr]; arrFis2 = new double[jumarr]; arrFis3 = new double[jumarr]; arrBio1 = new double[jumarr]; arrBio2 = new double[jumarr]; arrBio3 = new double[jumarr]; arrKimia1 = new double[jumarr]; arrKimia2 = new double[jumarr]; arrKimia3 = new double[jumarr]; arrEko1 = new double[jumarr]; arrEko2 = new double[jumarr]; arrEko3 = new double[jumarr]; arrSej1 = new double[jumarr]; arrSej2 = new double[jumarr]; arrSej3 = new double[jumarr]; arrIp1 = new double[jumarr]; arrIp2 = new double[jumarr]; arrIp3 = new double[jumarr]; arrIp4 = new double[jumarr]; arrIp5 = new double[jumarr];
176
double[] double[] double[] String[] String[] String[] String[] String[] String[] String[] String[]
arrIp6 = new double[jumarr]; arrIp7 = new double[jumarr]; arrIp8 = new double[jumarr]; konvertIP1; konvertIP2; konvertIP3; konvertIP4; konvertIP5; konvertIP6; konvertIP7; konvertIP8;
TransformasiData td = new TransformasiData(); for (int i = 0; i < mahasiswa.length; i++) {//jumlah row (jumlah data) for (int j = 0; j < 25; j++) {// jumlah kolom yang akan ditransform if (j == 0) { arrBindo1[i] = mahasiswa[i].getbIndo1(); } else if (j == 1) { arrBindo2[i] = mahasiswa[i].getbIndo2(); } else if (j == 2) { arrBindo3[i] = mahasiswa[i].getbIndo3(); } else if (j == 3) { arrBing1[i] = mahasiswa[i].getbIng1(); } else if (j == 4) { arrBing2[i] = mahasiswa[i].getbIng2(); } else if (j == 5) { arrBing3[i] = mahasiswa[i].getbIng3(); } else if (j == 6) { arrMtk1[i] = mahasiswa[i].getMtk1(); } else if (j == 7) { arrMtk2[i] = mahasiswa[i].getMtk2(); } else if (j == 8) { arrMtk3[i] = mahasiswa[i].getMtk3(); } else if (j == 9) { arrFis1[i] = mahasiswa[i].getFisika1(); } else if (j == 10) { arrFis2[i] = mahasiswa[i].getFisika2(); } else if (j == 11) { arrFis3[i] = mahasiswa[i].getFisika3(); } else if (j == 12) { arrBio1[i] = mahasiswa[i].getBio1(); } else if (j == 13) { arrBio2[i] = mahasiswa[i].getBio2(); } else if (j == 14) { arrBio3[i] = mahasiswa[i].getBio3(); } else if (j == 15) { arrKimia1[i] = mahasiswa[i].getKimia1(); } else if (j == 16) { arrKimia2[i] = mahasiswa[i].getKimia2(); } else if (j == 17) { arrKimia3[i] = mahasiswa[i].getKimia3(); } else if (j == 18) {
177
arrEko1[i] = mahasiswa[i].getEko1(); } else if (j == 19) { arrEko2[i] = mahasiswa[i].getEko2(); } else if (j == 20) { arrEko3[i] = mahasiswa[i].getEko3(); } else if (j == 21) { arrSej1[i] = mahasiswa[i].getSejarah1(); } else if (j == 22) { arrSej2[i] = mahasiswa[i].getSejarah2(); } else if (j == 23) { arrSej3[i] = mahasiswa[i].getSejarah3(); } else if (j == 24) { if (selectedSemester == 1) { arrIp1[i] = mahasiswa[i].getIp1(); } else if (selectedSemester == 2) { arrIp2[i] = mahasiswa[i].getIp2(); } else if (selectedSemester == 3) { arrIp3[i] = mahasiswa[i].getIp3(); } else if (selectedSemester == 4) { arrIp4[i] = mahasiswa[i].getIp4(); } else if (selectedSemester == 5) { arrIp5[i] = mahasiswa[i].getIp5(); } else if (selectedSemester == 6) { arrIp6[i] = mahasiswa[i].getIp6(); } else if (selectedSemester == 7) { arrIp7[i] = mahasiswa[i].getIp7(); } else if (selectedSemester == 8) { arrIp8[i] = mahasiswa[i].getIp8(); } } }// end loop j }//end loop i // Mulai melakukan konversi // *untuk nilai Bahasa Indonesia kelas2smt1* double avgBindo1 = td.avgNilaiRaport(arrBindo1); double stdBindo1 = td.stdvNilaiRaport(avgBindo1, arrBindo1); TransformasiData.saveRerataStdv(selectedProdi, selectedSemester, "bIndo1", avgBindo1, stdBindo1); String[] konvertArrBindo1 = new String[arrBindo1.length]; // array untuk menyimpan hasil konversi nilai bahasa indonesia kls 2 smst 1 for (int a1 = 0; a1 < arrBindo1.length; a1++) { konvertArrBindo1[a1] = td.KonversiNilai(avgBindo1, stdBindo1, arrBindo1[a1]); } // *untuk nilai Bahasa Indonesia kelas2smt2* double avgBindo2 = td.avgNilaiRaport(arrBindo2); double stdBindo2 = td.stdvNilaiRaport(avgBindo2, arrBindo2); TransformasiData.saveRerataStdv(selectedProdi,
178
selectedSemester, "bIndo2", avgBindo2, stdBindo2); String[] konvertArrBindo2 = new String[arrBindo2.length]; // array untuk menyimpan hasil konversi nilai bahasa indonesia kelas 2 smst 2 for (int a2 = 0; a2 < arrBindo2.length; a2++) { konvertArrBindo2[a2] = td.KonversiNilai(avgBindo2, stdBindo2, arrBindo2[a2]); } // *untuk nilai Bahasa Indonesia kelas3smt1* double avgBindo3 = td.avgNilaiRaport(arrBindo3); double stdBindo3 = td.stdvNilaiRaport(avgBindo3, arrBindo3); TransformasiData.saveRerataStdv(selectedProdi, selectedSemester, "bIndo3", avgBindo3, stdBindo3); String[] konvertArrBindo3 = new String[arrBindo3.length]; for (int a3 = 0; a3 < arrBindo3.length; a3++) { konvertArrBindo3[a3] = td.KonversiNilai(avgBindo3, stdBindo3, arrBindo3[a3]); } // *untuk nilai Bahasa Inggris kelas2smt1* double avgBing1 = td.avgNilaiRaport(arrBing1); double stdBing1 = td.stdvNilaiRaport(avgBing1, arrBing1); TransformasiData.saveRerataStdv(selectedProdi, selectedSemester, "bIng1", avgBing1, stdBing1); String[] konvertArrBing1 = new String[arrBing1.length];// array untuk menyimpan hasil konversi nilai bahasa Inggris kelas 2 smt 1 for (int b1 = 0; b1 < arrBing1.length; b1++) { konvertArrBing1[b1] = td.KonversiNilai(avgBing1, stdBing1, arrBing1[b1]); } // *untuk nilai Bahasa Inggris kelas2smt2* double avgBing2 = td.avgNilaiRaport(arrBing2); double stdBing2 = td.stdvNilaiRaport(avgBing2, arrBing2); TransformasiData.saveRerataStdv(selectedProdi, selectedSemester, "bIng2", avgBing2, stdBing2); String[] konvertArrBing2 = new String[arrBing2.length];// array untuk menyimpan hasil konversi nilai bahasa Inggris kelas 2 smt 2 for (int b2 = 0; b2 < arrBing2.length; b2++) { konvertArrBing2[b2] = td.KonversiNilai(avgBing2, stdBing2, arrBing2[b2]); } // *untuk nilai Bahasa Inggris kelas3smt1* double avgBing3 = td.avgNilaiRaport(arrBing3); double stdBing3 = td.stdvNilaiRaport(avgBing3,
179
arrBing3); TransformasiData.saveRerataStdv(selectedProdi, selectedSemester, "bIng3", avgBing3, stdBing3); String[] konvertArrBing3 = new String[arrBing3.length];// array untuk menyimpan hasil konversi nilai bahasa Inggris kelas 3 smt 1 for (int b3 = 0; b3 < arrBing3.length; b3++) { konvertArrBing3[b3] = td.KonversiNilai(avgBing3, stdBing3, arrBing3[b3]); } // *untuk nilai matematika kelas2smt1* double avgMtk1 = td.avgNilaiRaport(arrMtk1); double stdMtk1 = td.stdvNilaiRaport(avgMtk1, arrMtk1); TransformasiData.saveRerataStdv(selectedProdi, selectedSemester, "mtk1", avgMtk1, stdMtk1); String[] konvertArrMtk1 = new String[arrMtk1.length];// array untuk menyimpan hasil konversi nilai Matematika kelas 2 smt 1 for (int c1 = 0; c1 < arrMtk1.length; c1++) { konvertArrMtk1[c1] = td.KonversiNilai(avgMtk1, stdMtk1, arrMtk1[c1]); } // *untuk nilai matematika kelas2smt2* double avgMtk2 = td.avgNilaiRaport(arrMtk2); double stdMtk2 = td.stdvNilaiRaport(avgMtk2, arrMtk2); TransformasiData.saveRerataStdv(selectedProdi, selectedSemester, "mtk2", avgMtk2, stdMtk2); String[] konvertArrMtk2 = new String[arrMtk2.length];// array untuk menyimpan hasil konversi nilai Matematika kelas 2 smt 2 for (int c2 = 0; c2 < arrMtk2.length; c2++) { konvertArrMtk2[c2] = td.KonversiNilai(avgMtk2, stdMtk2, arrMtk2[c2]); } // *untuk nilai matematika kelas3smt1* double avgMtk3 = td.avgNilaiRaport(arrMtk3); double stdMtk3 = td.stdvNilaiRaport(avgMtk3, arrMtk3); TransformasiData.saveRerataStdv(selectedProdi, selectedSemester, "mtk3", avgMtk3, stdMtk3); String[] konvertArrMtk3 = new String[arrMtk3.length];// array untuk menyimpan hasil konversi nilai Matematika kelas 3 smt 1 for (int c3 = 0; c3 < arrMtk3.length; c3++) { konvertArrMtk3[c3] = td.KonversiNilai(avgMtk3, stdMtk3, arrMtk3[c3]); } // *untuk nilai fisika kelas2smt1* double avgFis1 = td.avgNilaiRaport(arrFis1);
180
double stdFis1 = td.stdvNilaiRaport(avgFis1, arrFis1); TransformasiData.saveRerataStdv(selectedProdi, selectedSemester, "fisika1", avgFis1, stdFis1); String[] konvertArrFis1 = new String[arrFis1.length];// array untuk menyimpan hasil konversi nilai Fisika kelas 2 smt 1 for (int d1 = 0; d1 < arrFis1.length; d1++) { konvertArrFis1[d1] = td.KonversiNilai(avgFis1, stdFis1, arrFis1[d1]); } // *untuk nilai fisika kelas2smt2* double avgFis2 = td.avgNilaiRaport(arrFis2); double stdFis2 = td.stdvNilaiRaport(avgFis2, arrFis2); TransformasiData.saveRerataStdv(selectedProdi, selectedSemester, "fisika2", avgFis2, stdFis2); String[] konvertArrFis2 = new String[arrFis2.length];// array untuk menyimpan hasil konversi nilai Fisika kelas 2 smt 2 for (int d2 = 0; d2 < arrFis2.length; d2++) { konvertArrFis2[d2] = td.KonversiNilai(avgFis2, stdFis2, arrFis2[d2]); } // *untuk nilai fisika kelas3smt1* double avgFis3 = td.avgNilaiRaport(arrFis3); double stdFis3 = td.stdvNilaiRaport(avgFis3, arrFis3); TransformasiData.saveRerataStdv(selectedProdi, selectedSemester, "fisika3", avgFis3, stdFis3); String[] konvertArrFis3 = new String[arrFis3.length];// array untuk menyimpan hasil konversi nilai Fisika kelas 3 smt 1 for (int d3 = 0; d3 < arrFis3.length; d3++) { konvertArrFis3[d3] = td.KonversiNilai(avgFis3, stdFis3, arrFis3[d3]); } // *untuk nilai Bio kelas2smt1* double avgBio1 = td.avgNilaiRaport(arrBio1); double stdBio1 = td.stdvNilaiRaport(avgBio1, arrBio1); TransformasiData.saveRerataStdv(selectedProdi, selectedSemester, "bio1", avgBio1, stdBio1); String[] konvertArrBio1 = new String[arrBio1.length];// array untuk menyimpan hasil konversi nilai Bio kelas 2 smt 1 for (int e1 = 0; e1 < arrBio1.length; e1++) { konvertArrBio1[e1] = td.KonversiNilai(avgBio1, stdBio1, arrBio1[e1]); } // *untuk nilai Bio kelas2smt2* double avgBio2 = td.avgNilaiRaport(arrBio2);
181
double stdBio2 = td.stdvNilaiRaport(avgBio2, arrBio2); TransformasiData.saveRerataStdv(selectedProdi, selectedSemester, "bio2", avgBio2, stdBio2); String[] konvertArrBio2 = new String[arrBio2.length];// array untuk menyimpan hasil konversi nilai Bio kelas 2 smt 2 for (int e2 = 0; e2 < arrBio2.length; e2++) { konvertArrBio2[e2] = td.KonversiNilai(avgBio2, stdBio2, arrBio2[e2]); } // *untuk nilai Bio kelas3smt1* double avgBio3 = td.avgNilaiRaport(arrBio3); double stdBio3 = td.stdvNilaiRaport(avgBio3, arrBio3); TransformasiData.saveRerataStdv(selectedProdi, selectedSemester, "bio3", avgBio3, stdBio3); String[] konvertArrBio3 = new String[arrBio3.length];// array untuk menyimpan hasil konversi nilai Bio kelas 3 smt 1 for (int e3 = 0; e3 < arrBio3.length; e3++) { konvertArrBio3[e3] = td.KonversiNilai(avgBio3, stdBio3, arrBio3[e3]); } // *untuk nilai Kimia kelas2smt1* double avgKimia1 = td.avgNilaiRaport(arrKimia1); double stdKimia1 = td.stdvNilaiRaport(avgKimia1, arrKimia1); TransformasiData.saveRerataStdv(selectedProdi, selectedSemester, "kimia1", avgKimia1, stdKimia1); String[] konvertArrKimia1 = new String[arrKimia1.length];// array untuk menyimpan hasil konversi nilai kimia kelas 2 smt 1 for (int f1 = 0; f1 < arrKimia1.length; f1++) { konvertArrKimia1[f1] = td.KonversiNilai(avgKimia1, stdKimia1, arrKimia1[f1]); } // *untuk nilai Kimia kelas2smt2* double avgKimia2 = td.avgNilaiRaport(arrKimia2); double stdKimia2 = td.stdvNilaiRaport(avgKimia2, arrKimia2); TransformasiData.saveRerataStdv(selectedProdi, selectedSemester, "kimia2", avgKimia2, stdKimia2); String[] konvertArrKimia2 = new String[arrKimia2.length];// array untuk menyimpan hasil konversi nilai kimia kelas 2 smt 2 for (int f2 = 0; f2 < arrKimia2.length; f2++) { konvertArrKimia2[f2] = td.KonversiNilai(avgKimia2, stdKimia2, arrKimia2[f2]); }
182
// *untuk nilai Kimia kelas3smt1* double avgKimia3 = td.avgNilaiRaport(arrKimia3); double stdKimia3 = td.stdvNilaiRaport(avgKimia3, arrKimia3); TransformasiData.saveRerataStdv(selectedProdi, selectedSemester, "kimia3", avgKimia3, stdKimia3); String[] konvertArrKimia3 = new String[arrKimia3.length];// array untuk menyimpan hasil konversi nilai kimia kelas 3 smt 1 for (int f3 = 0; f3 < arrKimia3.length; f3++) { konvertArrKimia3[f3] = td.KonversiNilai(avgKimia3, stdKimia3, arrKimia3[f3]); } // *untuk nilai Ekonomi kelas2smt1* double avgEko1 = td.avgNilaiRaport(arrEko1); double stdEko1 = td.stdvNilaiRaport(avgEko1, arrEko1); TransformasiData.saveRerataStdv(selectedProdi, selectedSemester, "eko1", avgEko1, stdEko1); String[] konvertArrEko1 = new String[arrEko1.length];// array untuk menyimpan hasil konversi nilai Ekonomi kelas 2 smt 1 for (int g1 = 0; g1 < arrEko1.length; g1++) { konvertArrEko1[g1] = td.KonversiNilai(avgEko1, stdEko1, arrEko1[g1]); } // *untuk nilai Ekonomi kelas2smt2* double avgEko2 = td.avgNilaiRaport(arrEko2); double stdEko2 = td.stdvNilaiRaport(avgEko2, arrEko2); TransformasiData.saveRerataStdv(selectedProdi, selectedSemester, "eko2", avgEko2, stdEko2); String[] konvertArrEko2 = new String[arrEko2.length];// array untuk menyimpan hasil konversi nilai Ekonomi kelas 2 smt 2 for (int g2 = 0; g2 < arrEko2.length; g2++) { konvertArrEko2[g2] = td.KonversiNilai(avgEko2, stdEko2, arrEko2[g2]); } // *untuk nilai Ekonomi kelas3smt1* double avgEko3 = td.avgNilaiRaport(arrEko3); double stdEko3 = td.stdvNilaiRaport(avgEko3, arrEko3); TransformasiData.saveRerataStdv(selectedProdi, selectedSemester, "eko3", avgEko3, stdEko3); String[] konvertArrEko3 = new String[arrEko3.length];// array untuk menyimpan hasil konversi nilai Ekonomi kelas 3 smt 1 for (int g3 = 0; g3 < arrEko3.length; g3++) { konvertArrEko3[g3] = td.KonversiNilai(avgEko3, stdEko3, arrEko3[g3]); }
183
// *untuk nilai Sejarah kelas2smt1* double avgSej1 = td.avgNilaiRaport(arrSej1); double stdSej1 = td.stdvNilaiRaport(avgSej1, arrSej1); TransformasiData.saveRerataStdv(selectedProdi, selectedSemester, "sejarah1", avgSej1, stdSej1); String[] konvertArrSej1 = new String[arrSej1.length];// array untuk menyimpan hasil konversi nilai Sejarah kelas 2 smt 1 for (int h1 = 0; h1 < arrSej1.length; h1++) { konvertArrSej1[h1] = td.KonversiNilai(avgSej1, stdSej1, arrSej1[h1]); } // *untuk nilai Sejarah kelas2smt2* double avgSej2 = td.avgNilaiRaport(arrSej2); double stdSej2 = td.stdvNilaiRaport(avgSej2, arrSej2); TransformasiData.saveRerataStdv(selectedProdi, selectedSemester, "sejarah2", avgSej2, stdSej2); String[] konvertArrSej2 = new String[arrSej2.length];// array untuk menyimpan hasil konversi nilai Sejarah kelas 2 smt 2 for (int h2 = 0; h2 < arrSej2.length; h2++) { konvertArrSej2[h2] = td.KonversiNilai(avgSej2, stdSej2, arrSej2[h2]); } // *untuk nilai Sejarah kelas3smt1* double avgSej3 = td.avgNilaiRaport(arrSej3); double stdSej3 = td.stdvNilaiRaport(avgSej3, arrSej3); TransformasiData.saveRerataStdv(selectedProdi, selectedSemester, "sejarah3", avgSej3, stdSej3); String[] konvertArrSej3 = new String[arrSej3.length];// array untuk menyimpan hasil konversi nilai Sejarah kelas 3 smt 1 for (int h3 = 0; h3 < arrSej3.length; h3++) { konvertArrSej3[h3] = td.KonversiNilai(avgSej3, stdSej3, arrSej3[h3]); } if (selectedSemester == 1) { // *untuk nilai IP semester 1* double avgIp1 = td.avgNilaiRaport(arrIp1); double stdIp1 = td.stdvNilaiRaport(avgIp1, arrIp1); TransformasiData.saveRerataStdv(selectedProdi, selectedSemester, "ip1", avgIp1, stdIp1); konvertIP1 = new String[arrIp1.length];// array untuk menyimpan hasil konversi nilai IP Semester 1 for (int p1 = 0; p1 < arrIp1.length; p1++) { konvertIP1[p1] = td.KonversiNilai(avgIp1, stdIp1, arrIp1[p1]);
184
} // memasukkan data ke dalam tabel mahasiswa konvert for (int z = 0; z < mahasiswa.length; z++) { Mahasiswa mhs = new Mahasiswa(); mhs.setNoAlias(mahasiswa[z].getNoAlias()); mhs.setJurusan(mahasiswa[z].getJurusan()); mhs.setKetSekolah(mahasiswa[z].getKetSekolah()); mhs.setKabupatenSekolah(mahasiswa[z].getKabupatenSekolah()); mhs.setKabupatenAsal(mahasiswa[z].getKabupatenAsal()); mhs.setJk(mahasiswa[z].getJk()); mhs.setKvtBindo1(konvertArrBindo1[z]); mhs.setKvtBindo2(konvertArrBindo2[z]); mhs.setKvtBindo3(konvertArrBindo3[z]); mhs.setKvtBing1(konvertArrBing1[z]); mhs.setKvtBing2(konvertArrBing2[z]); mhs.setKvtBing3(konvertArrBing3[z]); mhs.setKvtMtk1(konvertArrMtk1[z]); mhs.setKvtMtk2(konvertArrMtk2[z]); mhs.setKvtMtk3(konvertArrMtk3[z]); mhs.setKvtFisika1(konvertArrFis1[z]); mhs.setKvtFisika2(konvertArrFis2[z]); mhs.setKvtFisika3(konvertArrFis3[z]); mhs.setKvtBio1(konvertArrBio1[z]); mhs.setKvtBio2(konvertArrBio2[z]); mhs.setKvtBio3(konvertArrBio3[z]); mhs.setKvtKimia1(konvertArrKimia1[z]); mhs.setKvtKimia2(konvertArrKimia2[z]); mhs.setKvtKimia3(konvertArrKimia3[z]); mhs.setKvtEko1(konvertArrEko1[z]); mhs.setKvtEko2(konvertArrEko2[z]); mhs.setKvtEko3(konvertArrEko3[z]); mhs.setKvtSejarah1(konvertArrSej1[z]); mhs.setKvtSejarah2(konvertArrSej2[z]); mhs.setKvtSejarah3(konvertArrSej3[z]); mhs.setKvtIp1(konvertIP1[z]);
tabelModKonvert.addRow(new Object[]{ mhs.getNoAlias(), mhs.getJurusan(), mhs.getKetSekolah(), mhs.getKabupatenSekolah(), mhs.getKabupatenAsal(), mhs.getJk(), mhs.getKvtBindo1(), mhs.getKvtBindo2(), mhs.getKvtBindo3(), mhs.getKvtBing1(), mhs.getKvtBing2(),
185
mhs.getKvtBing3(), mhs.getKvtMtk1(), mhs.getKvtMtk2(), mhs.getKvtMtk3(), mhs.getKvtFisika1(), mhs.getKvtFisika2(), mhs.getKvtFisika3(), mhs.getKvtBio1(), mhs.getKvtBio2(), mhs.getKvtBio3(), mhs.getKvtKimia1(), mhs.getKvtKimia2(), mhs.getKvtKimia3(), mhs.getKvtEko1(), mhs.getKvtEko2(), mhs.getKvtEko3(), mhs.getKvtSejarah1(), mhs.getKvtSejarah2(), mhs.getKvtSejarah3(), mhs.getKvtIp1() }); dataset.add(mhs); } } else if (selectedSemester == 2) { // *untuk nilai IP semester 2* double avgIp2 = td.avgNilaiRaport(arrIp2); double stdIp2 = td.stdvNilaiRaport(avgIp2, arrIp2); TransformasiData.saveRerataStdv(selectedProdi, selectedSemester, "ip2", avgIp2, stdIp2); konvertIP2 = new String[arrIp2.length];// array untuk menyimpan hasil konversi nilai IP Semester 2 for (int p2 = 0; p2 < arrIp2.length; p2++) { konvertIP2[p2] = td.KonversiNilai(avgIp2, stdIp2, arrIp2[p2]); } // memasukkan data ke dalam tabel mahasiswa konvert for (int z = 0; z < mahasiswa.length; z++) { Mahasiswa mhs = new Mahasiswa(); mhs.setNoAlias(mahasiswa[z].getNoAlias()); mhs.setJurusan(mahasiswa[z].getJurusan()); mhs.setKetSekolah(mahasiswa[z].getKetSekolah()); mhs.setKabupatenSekolah(mahasiswa[z].getKabupatenSekolah()); mhs.setKabupatenAsal(mahasiswa[z].getKabupatenAsal()); mhs.setJk(mahasiswa[z].getJk()); mhs.setKvtBindo1(konvertArrBindo1[z]); mhs.setKvtBindo2(konvertArrBindo2[z]); mhs.setKvtBindo3(konvertArrBindo3[z]);
186
mhs.setKvtBing1(konvertArrBing1[z]); mhs.setKvtBing2(konvertArrBing2[z]); mhs.setKvtBing3(konvertArrBing3[z]); mhs.setKvtMtk1(konvertArrMtk1[z]); mhs.setKvtMtk2(konvertArrMtk2[z]); mhs.setKvtMtk3(konvertArrMtk3[z]); mhs.setKvtFisika1(konvertArrFis1[z]); mhs.setKvtFisika2(konvertArrFis2[z]); mhs.setKvtFisika3(konvertArrFis3[z]); mhs.setKvtBio1(konvertArrBio1[z]); mhs.setKvtBio2(konvertArrBio2[z]); mhs.setKvtBio3(konvertArrBio3[z]); mhs.setKvtKimia1(konvertArrKimia1[z]); mhs.setKvtKimia2(konvertArrKimia2[z]); mhs.setKvtKimia3(konvertArrKimia3[z]); mhs.setKvtEko1(konvertArrEko1[z]); mhs.setKvtEko2(konvertArrEko2[z]); mhs.setKvtEko3(konvertArrEko3[z]); mhs.setKvtSejarah1(konvertArrSej1[z]); mhs.setKvtSejarah2(konvertArrSej2[z]); mhs.setKvtSejarah3(konvertArrSej3[z]); mhs.setKvtIp2(konvertIP2[z]);
tabelModKonvert.addRow(new Object[]{ mhs.getNoAlias(), mhs.getJurusan(), mhs.getKetSekolah(), mhs.getKabupatenSekolah(), mhs.getKabupatenAsal(), mhs.getJk(), mhs.getKvtBindo1(), mhs.getKvtBindo2(), mhs.getKvtBindo3(), mhs.getKvtBing1(), mhs.getKvtBing2(), mhs.getKvtBing3(), mhs.getKvtMtk1(), mhs.getKvtMtk2(), mhs.getKvtMtk3(), mhs.getKvtFisika1(), mhs.getKvtFisika2(), mhs.getKvtFisika3(), mhs.getKvtBio1(), mhs.getKvtBio2(), mhs.getKvtBio3(), mhs.getKvtKimia1(), mhs.getKvtKimia2(), mhs.getKvtKimia3(), mhs.getKvtEko1(), mhs.getKvtEko2(), mhs.getKvtEko3(), mhs.getKvtSejarah1(), mhs.getKvtSejarah2(), mhs.getKvtSejarah3(),
187
mhs.getKvtIp2() }); dataset.add(mhs); } } else if (selectedSemester == 3) { // *untuk nilai IP semester 3* double avgIp3 = td.avgNilaiRaport(arrIp3); double stdIp3 = td.stdvNilaiRaport(avgIp3, arrIp3); TransformasiData.saveRerataStdv(selectedProdi, selectedSemester, "ip3", avgIp3, stdIp3); konvertIP3 = new String[arrIp3.length];// array untuk menyimpan hasil konversi nilai IP Semester 3 for (int p3 = 0; p3 < arrIp3.length; p3++) { konvertIP3[p3] = td.KonversiNilai(avgIp3, stdIp3, arrIp3[p3]); } // memasukkan data ke dalam tabel mahasiswa konvert for (int z = 0; z < mahasiswa.length; z++) { Mahasiswa mhs = new Mahasiswa(); mhs.setNoAlias(mahasiswa[z].getNoAlias()); mhs.setJurusan(mahasiswa[z].getJurusan()); mhs.setKetSekolah(mahasiswa[z].getKetSekolah()); mhs.setKabupatenSekolah(mahasiswa[z].getKabupatenSekolah()); mhs.setKabupatenAsal(mahasiswa[z].getKabupatenAsal()); mhs.setJk(mahasiswa[z].getJk()); mhs.setKvtBindo1(konvertArrBindo1[z]); mhs.setKvtBindo2(konvertArrBindo2[z]); mhs.setKvtBindo3(konvertArrBindo3[z]); mhs.setKvtBing1(konvertArrBing1[z]); mhs.setKvtBing2(konvertArrBing2[z]); mhs.setKvtBing3(konvertArrBing3[z]); mhs.setKvtMtk1(konvertArrMtk1[z]); mhs.setKvtMtk2(konvertArrMtk2[z]); mhs.setKvtMtk3(konvertArrMtk3[z]); mhs.setKvtFisika1(konvertArrFis1[z]); mhs.setKvtFisika2(konvertArrFis2[z]); mhs.setKvtFisika3(konvertArrFis3[z]); mhs.setKvtBio1(konvertArrBio1[z]); mhs.setKvtBio2(konvertArrBio2[z]); mhs.setKvtBio3(konvertArrBio3[z]); mhs.setKvtKimia1(konvertArrKimia1[z]); mhs.setKvtKimia2(konvertArrKimia2[z]); mhs.setKvtKimia3(konvertArrKimia3[z]); mhs.setKvtEko1(konvertArrEko1[z]); mhs.setKvtEko2(konvertArrEko2[z]); mhs.setKvtEko3(konvertArrEko3[z]); mhs.setKvtSejarah1(konvertArrSej1[z]);
188
mhs.setKvtSejarah2(konvertArrSej2[z]); mhs.setKvtSejarah3(konvertArrSej3[z]); mhs.setKvtIp3(konvertIP3[z]);
tabelModKonvert.addRow(new Object[]{ mhs.getNoAlias(), mhs.getJurusan(), mhs.getKetSekolah(), mhs.getKabupatenSekolah(), mhs.getKabupatenAsal(), mhs.getJk(), mhs.getKvtBindo1(), mhs.getKvtBindo2(), mhs.getKvtBindo3(), mhs.getKvtBing1(), mhs.getKvtBing2(), mhs.getKvtBing3(), mhs.getKvtMtk1(), mhs.getKvtMtk2(), mhs.getKvtMtk3(), mhs.getKvtFisika1(), mhs.getKvtFisika2(), mhs.getKvtFisika3(), mhs.getKvtBio1(), mhs.getKvtBio2(), mhs.getKvtBio3(), mhs.getKvtKimia1(), mhs.getKvtKimia2(), mhs.getKvtKimia3(), mhs.getKvtEko1(), mhs.getKvtEko2(), mhs.getKvtEko3(), mhs.getKvtSejarah1(), mhs.getKvtSejarah2(), mhs.getKvtSejarah3(), mhs.getKvtIp3() }); dataset.add(mhs); } } else if (selectedSemester == 4) { // *untuk nilai IP semester 4* double avgIp4 = td.avgNilaiRaport(arrIp4); double stdIp4 = td.stdvNilaiRaport(avgIp4, arrIp4); TransformasiData.saveRerataStdv(selectedProdi, selectedSemester, "ip4", avgIp4, stdIp4); konvertIP4 = new String[arrIp4.length];// array untuk menyimpan hasil konversi nilai IP Semester 4 for (int p4 = 0; p4 < arrIp4.length; p4++) { konvertIP4[p4] = td.KonversiNilai(avgIp4, stdIp4, arrIp4[p4]); }
189
// memasukkan data ke dalam tabel mahasiswa konvert for (int z = 0; z < mahasiswa.length; z++) { Mahasiswa mhs = new Mahasiswa(); mhs.setNoAlias(mahasiswa[z].getNoAlias()); mhs.setJurusan(mahasiswa[z].getJurusan()); mhs.setKetSekolah(mahasiswa[z].getKetSekolah()); mhs.setKabupatenSekolah(mahasiswa[z].getKabupatenSekolah()); mhs.setKabupatenAsal(mahasiswa[z].getKabupatenAsal()); mhs.setJk(mahasiswa[z].getJk()); mhs.setKvtBindo1(konvertArrBindo1[z]); mhs.setKvtBindo2(konvertArrBindo2[z]); mhs.setKvtBindo3(konvertArrBindo3[z]); mhs.setKvtBing1(konvertArrBing1[z]); mhs.setKvtBing2(konvertArrBing2[z]); mhs.setKvtBing3(konvertArrBing3[z]); mhs.setKvtMtk1(konvertArrMtk1[z]); mhs.setKvtMtk2(konvertArrMtk2[z]); mhs.setKvtMtk3(konvertArrMtk3[z]); mhs.setKvtFisika1(konvertArrFis1[z]); mhs.setKvtFisika2(konvertArrFis2[z]); mhs.setKvtFisika3(konvertArrFis3[z]); mhs.setKvtBio1(konvertArrBio1[z]); mhs.setKvtBio2(konvertArrBio2[z]); mhs.setKvtBio3(konvertArrBio3[z]); mhs.setKvtKimia1(konvertArrKimia1[z]); mhs.setKvtKimia2(konvertArrKimia2[z]); mhs.setKvtKimia3(konvertArrKimia3[z]); mhs.setKvtEko1(konvertArrEko1[z]); mhs.setKvtEko2(konvertArrEko2[z]); mhs.setKvtEko3(konvertArrEko3[z]); mhs.setKvtSejarah1(konvertArrSej1[z]); mhs.setKvtSejarah2(konvertArrSej2[z]); mhs.setKvtSejarah3(konvertArrSej3[z]); mhs.setKvtIp4(konvertIP4[z]);
tabelModKonvert.addRow(new Object[]{ mhs.getNoAlias(), mhs.getJurusan(), mhs.getKetSekolah(), mhs.getKabupatenSekolah(), mhs.getKabupatenAsal(), mhs.getJk(), mhs.getKvtBindo1(), mhs.getKvtBindo2(), mhs.getKvtBindo3(), mhs.getKvtBing1(), mhs.getKvtBing2(), mhs.getKvtBing3(),
190
mhs.getKvtMtk1(), mhs.getKvtMtk2(), mhs.getKvtMtk3(), mhs.getKvtFisika1(), mhs.getKvtFisika2(), mhs.getKvtFisika3(), mhs.getKvtBio1(), mhs.getKvtBio2(), mhs.getKvtBio3(), mhs.getKvtKimia1(), mhs.getKvtKimia2(), mhs.getKvtKimia3(), mhs.getKvtEko1(), mhs.getKvtEko2(), mhs.getKvtEko3(), mhs.getKvtSejarah1(), mhs.getKvtSejarah2(), mhs.getKvtSejarah3(), mhs.getKvtIp4() }); dataset.add(mhs); } } else if (selectedSemester == 5) { // *untuk nilai IP semester 5* double avgIp5 = td.avgNilaiRaport(arrIp5); double stdIp5 = td.stdvNilaiRaport(avgIp5, arrIp5); TransformasiData.saveRerataStdv(selectedProdi, selectedSemester, "ip5", avgIp5, stdIp5); konvertIP5 = new String[arrIp5.length];// array untuk menyimpan hasil konversi nilai IP Semester 5 for (int p5 = 0; p5 < arrIp5.length; p5++) { konvertIP5[p5] = td.KonversiNilai(avgIp5, stdIp5, arrIp5[p5]); } // memasukkan data ke dalam tabel mahasiswa konvert for (int z = 0; z < mahasiswa.length; z++) { Mahasiswa mhs = new Mahasiswa(); mhs.setNoAlias(mahasiswa[z].getNoAlias()); mhs.setJurusan(mahasiswa[z].getJurusan()); mhs.setKetSekolah(mahasiswa[z].getKetSekolah()); mhs.setKabupatenSekolah(mahasiswa[z].getKabupatenSekolah()); mhs.setKabupatenAsal(mahasiswa[z].getKabupatenAsal()); mhs.setJk(mahasiswa[z].getJk()); mhs.setKvtBindo1(konvertArrBindo1[z]); mhs.setKvtBindo2(konvertArrBindo2[z]); mhs.setKvtBindo3(konvertArrBindo3[z]); mhs.setKvtBing1(konvertArrBing1[z]);
191
mhs.setKvtBing2(konvertArrBing2[z]); mhs.setKvtBing3(konvertArrBing3[z]); mhs.setKvtMtk1(konvertArrMtk1[z]); mhs.setKvtMtk2(konvertArrMtk2[z]); mhs.setKvtMtk3(konvertArrMtk3[z]); mhs.setKvtFisika1(konvertArrFis1[z]); mhs.setKvtFisika2(konvertArrFis2[z]); mhs.setKvtFisika3(konvertArrFis3[z]); mhs.setKvtBio1(konvertArrBio1[z]); mhs.setKvtBio2(konvertArrBio2[z]); mhs.setKvtBio3(konvertArrBio3[z]); mhs.setKvtKimia1(konvertArrKimia1[z]); mhs.setKvtKimia2(konvertArrKimia2[z]); mhs.setKvtKimia3(konvertArrKimia3[z]); mhs.setKvtEko1(konvertArrEko1[z]); mhs.setKvtEko2(konvertArrEko2[z]); mhs.setKvtEko3(konvertArrEko3[z]); mhs.setKvtSejarah1(konvertArrSej1[z]); mhs.setKvtSejarah2(konvertArrSej2[z]); mhs.setKvtSejarah3(konvertArrSej3[z]); mhs.setKvtIp5(konvertIP5[z]);
tabelModKonvert.addRow(new Object[]{ mhs.getNoAlias(), mhs.getJurusan(), mhs.getKetSekolah(), mhs.getKabupatenSekolah(), mhs.getKabupatenAsal(), mhs.getJk(), mhs.getKvtBindo1(), mhs.getKvtBindo2(), mhs.getKvtBindo3(), mhs.getKvtBing1(), mhs.getKvtBing2(), mhs.getKvtBing3(), mhs.getKvtMtk1(), mhs.getKvtMtk2(), mhs.getKvtMtk3(), mhs.getKvtFisika1(), mhs.getKvtFisika2(), mhs.getKvtFisika3(), mhs.getKvtBio1(), mhs.getKvtBio2(), mhs.getKvtBio3(), mhs.getKvtKimia1(), mhs.getKvtKimia2(), mhs.getKvtKimia3(), mhs.getKvtEko1(), mhs.getKvtEko2(), mhs.getKvtEko3(), mhs.getKvtSejarah1(), mhs.getKvtSejarah2(), mhs.getKvtSejarah3(), mhs.getKvtIp5()
192
}); dataset.add(mhs); } } else if (selectedSemester == 6) { // *untuk nilai IP semester 6* double avgIp6 = td.avgNilaiRaport(arrIp6); double stdIp6 = td.stdvNilaiRaport(avgIp6, arrIp6); TransformasiData.saveRerataStdv(selectedProdi, selectedSemester, "ip6", avgIp6, stdIp6); konvertIP6 = new String[arrIp6.length];// array untuk menyimpan hasil konversi nilai IP Semester 6 for (int p6 = 0; p6 < arrIp6.length; p6++) { konvertIP6[p6] = td.KonversiNilai(avgIp6, stdIp6, arrIp6[p6]); } // memasukkan data ke dalam tabel mahasiswa konvert for (int z = 0; z < mahasiswa.length; z++) { Mahasiswa mhs = new Mahasiswa(); mhs.setNoAlias(mahasiswa[z].getNoAlias()); mhs.setJurusan(mahasiswa[z].getJurusan()); mhs.setKetSekolah(mahasiswa[z].getKetSekolah()); mhs.setKabupatenSekolah(mahasiswa[z].getKabupatenSekolah()); mhs.setKabupatenAsal(mahasiswa[z].getKabupatenAsal()); mhs.setJk(mahasiswa[z].getJk()); mhs.setKvtBindo1(konvertArrBindo1[z]); mhs.setKvtBindo2(konvertArrBindo2[z]); mhs.setKvtBindo3(konvertArrBindo3[z]); mhs.setKvtBing1(konvertArrBing1[z]); mhs.setKvtBing2(konvertArrBing2[z]); mhs.setKvtBing3(konvertArrBing3[z]); mhs.setKvtMtk1(konvertArrMtk1[z]); mhs.setKvtMtk2(konvertArrMtk2[z]); mhs.setKvtMtk3(konvertArrMtk3[z]); mhs.setKvtFisika1(konvertArrFis1[z]); mhs.setKvtFisika2(konvertArrFis2[z]); mhs.setKvtFisika3(konvertArrFis3[z]); mhs.setKvtBio1(konvertArrBio1[z]); mhs.setKvtBio2(konvertArrBio2[z]); mhs.setKvtBio3(konvertArrBio3[z]); mhs.setKvtKimia1(konvertArrKimia1[z]); mhs.setKvtKimia2(konvertArrKimia2[z]); mhs.setKvtKimia3(konvertArrKimia3[z]); mhs.setKvtEko1(konvertArrEko1[z]); mhs.setKvtEko2(konvertArrEko2[z]); mhs.setKvtEko3(konvertArrEko3[z]); mhs.setKvtSejarah1(konvertArrSej1[z]); mhs.setKvtSejarah2(konvertArrSej2[z]);
193
mhs.setKvtSejarah3(konvertArrSej3[z]); mhs.setKvtIp6(konvertIP6[z]);
tabelModKonvert.addRow(new Object[]{ mhs.getNoAlias(), mhs.getJurusan(), mhs.getKetSekolah(), mhs.getKabupatenSekolah(), mhs.getKabupatenAsal(), mhs.getJk(), mhs.getKvtBindo1(), mhs.getKvtBindo2(), mhs.getKvtBindo3(), mhs.getKvtBing1(), mhs.getKvtBing2(), mhs.getKvtBing3(), mhs.getKvtMtk1(), mhs.getKvtMtk2(), mhs.getKvtMtk3(), mhs.getKvtFisika1(), mhs.getKvtFisika2(), mhs.getKvtFisika3(), mhs.getKvtBio1(), mhs.getKvtBio2(), mhs.getKvtBio3(), mhs.getKvtKimia1(), mhs.getKvtKimia2(), mhs.getKvtKimia3(), mhs.getKvtEko1(), mhs.getKvtEko2(), mhs.getKvtEko3(), mhs.getKvtSejarah1(), mhs.getKvtSejarah2(), mhs.getKvtSejarah3(), mhs.getKvtIp6() }); dataset.add(mhs); } } else if (selectedSemester == 7) { // *untuk nilai IP semester 7* double avgIp7 = td.avgNilaiRaport(arrIp7); double stdIp7 = td.stdvNilaiRaport(avgIp7, arrIp7); TransformasiData.saveRerataStdv(selectedProdi, selectedSemester, "ip7", avgIp7, stdIp7); konvertIP7 = new String[arrIp7.length];// array untuk menyimpan hasil konversi nilai IP Semester 7 for (int p7 = 0; p7 < arrIp7.length; p7++) { konvertIP7[p7] = td.KonversiNilai(avgIp7, stdIp7, arrIp7[p7]); } // memasukkan data ke dalam tabel mahasiswa
194
konvert for (int z = 0; z < mahasiswa.length; z++) { Mahasiswa mhs = new Mahasiswa(); mhs.setNoAlias(mahasiswa[z].getNoAlias()); mhs.setJurusan(mahasiswa[z].getJurusan()); mhs.setKetSekolah(mahasiswa[z].getKetSekolah()); mhs.setKabupatenSekolah(mahasiswa[z].getKabupatenSekolah()); mhs.setKabupatenAsal(mahasiswa[z].getKabupatenAsal()); mhs.setJk(mahasiswa[z].getJk()); mhs.setKvtBindo1(konvertArrBindo1[z]); mhs.setKvtBindo2(konvertArrBindo2[z]); mhs.setKvtBindo3(konvertArrBindo3[z]); mhs.setKvtBing1(konvertArrBing1[z]); mhs.setKvtBing2(konvertArrBing2[z]); mhs.setKvtBing3(konvertArrBing3[z]); mhs.setKvtMtk1(konvertArrMtk1[z]); mhs.setKvtMtk2(konvertArrMtk2[z]); mhs.setKvtMtk3(konvertArrMtk3[z]); mhs.setKvtFisika1(konvertArrFis1[z]); mhs.setKvtFisika2(konvertArrFis2[z]); mhs.setKvtFisika3(konvertArrFis3[z]); mhs.setKvtBio1(konvertArrBio1[z]); mhs.setKvtBio2(konvertArrBio2[z]); mhs.setKvtBio3(konvertArrBio3[z]); mhs.setKvtKimia1(konvertArrKimia1[z]); mhs.setKvtKimia2(konvertArrKimia2[z]); mhs.setKvtKimia3(konvertArrKimia3[z]); mhs.setKvtEko1(konvertArrEko1[z]); mhs.setKvtEko2(konvertArrEko2[z]); mhs.setKvtEko3(konvertArrEko3[z]); mhs.setKvtSejarah1(konvertArrSej1[z]); mhs.setKvtSejarah2(konvertArrSej2[z]); mhs.setKvtSejarah3(konvertArrSej3[z]); mhs.setKvtIp7(konvertIP7[z]);
tabelModKonvert.addRow(new Object[]{ mhs.getNoAlias(), mhs.getJurusan(), mhs.getKetSekolah(), mhs.getKabupatenSekolah(), mhs.getKabupatenAsal(), mhs.getJk(), mhs.getKvtBindo1(), mhs.getKvtBindo2(), mhs.getKvtBindo3(), mhs.getKvtBing1(), mhs.getKvtBing2(), mhs.getKvtBing3(), mhs.getKvtMtk1(),
195
mhs.getKvtMtk2(), mhs.getKvtMtk3(), mhs.getKvtFisika1(), mhs.getKvtFisika2(), mhs.getKvtFisika3(), mhs.getKvtBio1(), mhs.getKvtBio2(), mhs.getKvtBio3(), mhs.getKvtKimia1(), mhs.getKvtKimia2(), mhs.getKvtKimia3(), mhs.getKvtEko1(), mhs.getKvtEko2(), mhs.getKvtEko3(), mhs.getKvtSejarah1(), mhs.getKvtSejarah2(), mhs.getKvtSejarah3(), mhs.getKvtIp7() }); dataset.add(mhs); } } else if (selectedSemester == 8) { // *untuk nilai IP semester 8* double avgIp8 = td.avgNilaiRaport(arrIp8); double stdIp8 = td.stdvNilaiRaport(avgIp8, arrIp8); TransformasiData.saveRerataStdv(selectedProdi, selectedSemester, "ip8", avgIp8, stdIp8); konvertIP8 = new String[arrIp8.length];// array untuk menyimpan hasil konversi nilai IP Semester 8 for (int p8 = 0; p8 < arrIp8.length; p8++) { konvertIP8[p8] = td.KonversiNilai(avgIp8, stdIp8, arrIp8[p8]); } // memasukkan data ke dalam tabel mahasiswa konvert for (int z = 0; z < mahasiswa.length; z++) { Mahasiswa mhs = new Mahasiswa(); mhs.setNoAlias(mahasiswa[z].getNoAlias()); mhs.setJurusan(mahasiswa[z].getJurusan()); mhs.setKetSekolah(mahasiswa[z].getKetSekolah()); mhs.setKabupatenSekolah(mahasiswa[z].getKabupatenSekolah()); mhs.setKabupatenAsal(mahasiswa[z].getKabupatenAsal()); mhs.setJk(mahasiswa[z].getJk()); mhs.setKvtBindo1(konvertArrBindo1[z]); mhs.setKvtBindo2(konvertArrBindo2[z]); mhs.setKvtBindo3(konvertArrBindo3[z]); mhs.setKvtBing1(konvertArrBing1[z]); mhs.setKvtBing2(konvertArrBing2[z]);
196
mhs.setKvtBing3(konvertArrBing3[z]); mhs.setKvtMtk1(konvertArrMtk1[z]); mhs.setKvtMtk2(konvertArrMtk2[z]); mhs.setKvtMtk3(konvertArrMtk3[z]); mhs.setKvtFisika1(konvertArrFis1[z]); mhs.setKvtFisika2(konvertArrFis2[z]); mhs.setKvtFisika3(konvertArrFis3[z]); mhs.setKvtBio1(konvertArrBio1[z]); mhs.setKvtBio2(konvertArrBio2[z]); mhs.setKvtBio3(konvertArrBio3[z]); mhs.setKvtKimia1(konvertArrKimia1[z]); mhs.setKvtKimia2(konvertArrKimia2[z]); mhs.setKvtKimia3(konvertArrKimia3[z]); mhs.setKvtEko1(konvertArrEko1[z]); mhs.setKvtEko2(konvertArrEko2[z]); mhs.setKvtEko3(konvertArrEko3[z]); mhs.setKvtSejarah1(konvertArrSej1[z]); mhs.setKvtSejarah2(konvertArrSej2[z]); mhs.setKvtSejarah3(konvertArrSej3[z]); mhs.setKvtIp8(konvertIP8[z]);
tabelModKonvert.addRow(new Object[]{ mhs.getNoAlias(), mhs.getJurusan(), mhs.getKetSekolah(), mhs.getKabupatenSekolah(), mhs.getKabupatenAsal(), mhs.getJk(), mhs.getKvtBindo1(), mhs.getKvtBindo2(), mhs.getKvtBindo3(), mhs.getKvtBing1(), mhs.getKvtBing2(), mhs.getKvtBing3(), mhs.getKvtMtk1(), mhs.getKvtMtk2(), mhs.getKvtMtk3(), mhs.getKvtFisika1(), mhs.getKvtFisika2(), mhs.getKvtFisika3(), mhs.getKvtBio1(), mhs.getKvtBio2(), mhs.getKvtBio3(), mhs.getKvtKimia1(), mhs.getKvtKimia2(), mhs.getKvtKimia3(), mhs.getKvtEko1(), mhs.getKvtEko2(), mhs.getKvtEko3(), mhs.getKvtSejarah1(), mhs.getKvtSejarah2(), mhs.getKvtSejarah3(), mhs.getKvtIp8() });
197
dataset.add(mhs); } } labelJumlahDataTransform.setText(String.valueOf(mahasiswa.length)) ; } catch (Exception e) { System.out.println("Error di bagian Transformasi data " + e.getMessage()); JOptionPane.showMessageDialog(null, "Transformasi Data Gagal"); } } private void CreateTreeButtonGlassActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: CrossValidation cv = new CrossValidation(selectedProdi, selectedSemester); Aturan prediksi; String noAlias = ""; String ipkCrosvalid = ""; String ipkAsli=""; int jumBenar = 0; int totalBenar = 0; float totalakurasi = 0; int totaldata = dataset.size(); Vector[] dataOlah = cv.setDataFolds(dataset, selectedSemester); for (int iterasi = 1; iterasi < 4; iterasi++) { System.out.println("***** iterasi : " + iterasi + "*****"); jumBenar = 1; Vector[] folds = cv.getTestingTraining(dataOlah, iterasi); try { DatabaseConnection.truncateTabelPolaAkurasi(); // membentuk tree crossvalidation pohonkeputusan.removeAllElements(); J48CrossValidation(0, 1, folds[1], null, iterasi); for (int i = 0; i < folds[0].size(); i++) { Mahasiswa mhs = (Mahasiswa) folds[0].elementAt(i); prediksi = new Aturan(mhs, selectedProdi, selectedSemester); noAlias = mhs.getNoAlias(); if (selectedSemester == 1) { ipkAsli = mhs.getKvtIp1(); } else if (selectedSemester == 2) {
198
ipkAsli = mhs.getKvtIp2(); } else if (selectedSemester == 3) { ipkAsli = mhs.getKvtIp3(); } else if (selectedSemester == 4) { ipkAsli = mhs.getKvtIp4(); } else if (selectedSemester == 5) { ipkAsli = mhs.getKvtIp5(); } else if (selectedSemester == 6) { ipkAsli = mhs.getKvtIp6(); } else if (selectedSemester == 7) { ipkAsli = mhs.getKvtIp7(); } else if (selectedSemester == 8) { ipkAsli = mhs.getKvtIp8(); } int idRoot = Aturan.getRootCrossValidation(selectedProdi, selectedSemester, iterasi); prediksi.prosesPrediksiCrossValidation(idRoot, iterasi); if (prediksi.getIPK_Keputusan() != null) { ipkCrosvalid = prediksi.getIPK_Keputusan(); System.out.println("*********** asli: " + ipkAsli); System.out.println("######### prediksi: " + ipkCrosvalid); if (ipkCrosvalid.equalsIgnoreCase(ipkAsli)) { totalBenar = jumBenar++; } } } } catch (SQLException ex) { System.out.println("erroorrrrr cross validasi: " + ex.getMessage()); ex.printStackTrace(); } akurasi = (float) totalBenar / folds[0].size() * 100; totalakurasi += akurasi; System.out.println("Akurasi: " + akurasi); System.out.println("\nTotal jumlah benar pada iterasi " + iterasi + ": " + totalBenar); } float rerataAkurasi = totalakurasi / 3; System.out.println("\nAkurasi rata-rata: " + rerataAkurasi + " %\n masuk bikin treee prediksi"); try { DatabaseConnection.truncateTabelPolaAkurasi(); pohonkeputusan.removeAllElements(); DatabaseConnection.saveAkuration(selectedProdi, selectedSemester, rerataAkurasi); J48(0, 1, dataset, null); } catch (SQLException ex) { System.out.println("error bikin tree: " + ex.getMessage());
199
} if (pohonkeputusan != null) { JOptionPane.showMessageDialog(null, "Tree sudah dibentuk"); HasilPreprocessingSPPA viewTree = new HasilPreprocessingSPPA(pohonkeputusan, selectedProdi, selectedSemester); viewTree.setVisible(true); this.dispose(); } else { JOptionPane.showMessageDialog(null, "Pohon Belum Terbentuk"); } } private void BackButtonGlassActionPerformed(java.awt.event.ActionEvent evt) { try { // TODO add your handling code here: SelectProdiSemesterSPPA test = new SelectProdiSemesterSPPA(); test.setVisible(true); this.dispose(); } catch (SQLException ex) { Logger.getLogger(PreprocessingSPPA.class.getName()).log(Level.SEVE RE, null, ex); } } public void J48(int idMaster, int level, Vector dataMhsw, String value) throws SQLException { String smt = semesterTerpilih; Node test = new Node(); enumKeputusanIPK keputusan[] = enumKeputusanIPK.values();// menampung keputusan ipk ////...........................mencari node akar..............................//// enumAtribut atribut_terpilih = test.createNode(dataMhsw, pohonkeputusan, smt); ////...........menampung nilai dari atribut terpilih ke dalam array............//// String[] tempNilaiAtribut = nilaiAtributTerpilih(atribut_terpilih); ////.......... Buat Pohon untuk root node.................//// Node pohon = new Node(); int idPohon = pohon.tentukanIdPohon(pohonkeputusan);
200
pohon.setIdTree(idPohon); pohon.setAtrbt(atribut_terpilih); pohon.setIdMaster(idMaster); pohon.setNilaiAtribut(value); pohon.setLevelPohon(level); pohon.setDataset(dataset); pohonkeputusan.add(pohon); level++; idMaster = idPohon; Node.saveTree(selectedProdi, selectedSemester, pohon.getIdTree(), pohon.getIdMaster(), pohon.getAtrbt().toString(), pohon.getNilaiAtribut(), null); Node.saveTree2(pohon.getIdTree(), selectedProdi, selectedSemester, pohon.getIdMaster(), pohon.getAtrbt().toString(), pohon.getNilaiAtribut()); //// ..................cek apakah tinggi pohon masih kurang atau = dari jumlah atribut...............//// if (level < jumAtributPelatihan + 1) { // enumAtribut atribut_terpilih2 = test.createNode(dataMhsw, pohonkeputusan, smt); for (int i = 0; i < tempNilaiAtribut.length; i++) { Vector hasilPisah2 = Node.pisahData(atribut_terpilih, dataMhsw, tempNilaiAtribut[i]); int jumDataTotal2 = hasilPisah2.size(); if (jumDataTotal2 == 0) { } else { float EntropiTotal = Node.EntropyTotal(hasilPisah2, smt); ////.....cek jika ada data dan entropi tidak nol dan juga tidak 1....//// if (jumDataTotal2 != 0 && EntropiTotal != 0 && EntropiTotal != 1) { ////...........rekursif j48 (bikin pohon lagi karena node tersebut dianggap bukan node leaf)..........//// J48(pohon.getIdTree(), level, hasilPisah2, tempNilaiAtribut[i]); ////....... cek apakah entropi bernilai 0....//// } else if (EntropiTotal == 0) { //menentukan keputusan IPK jika pada posisi mutlak int int int for
jumlahPerAtribut = 0; maxSum = 0; indek_keputusan = 0; (int k = 0; k < keputusan.length; k++)
{ jumlahPerAtribut = 0;
201
for (int l = 0; l < hasilPisah2.size(); l++) { Mahasiswa m = (Mahasiswa) hasilPisah2.elementAt(l); if (selectedSemester == 1) { if (m.getKvtIp1().equals(keputusan[k].toString())) { jumlahPerAtribut++; } } else if (selectedSemester == { if (m.getKvtIp2().equals(keputusan[k].toString())) { jumlahPerAtribut++; } } else if (selectedSemester == { if (m.getKvtIp3().equals(keputusan[k].toString())) { jumlahPerAtribut++; } } else if (selectedSemester == { if (m.getKvtIp4().equals(keputusan[k].toString())) { jumlahPerAtribut++; } } else if (selectedSemester == { if (m.getKvtIp5().equals(keputusan[k].toString())) { jumlahPerAtribut++; } } else if (selectedSemester == { if (m.getKvtIp6().equals(keputusan[k].toString())) { jumlahPerAtribut++; } } else if (selectedSemester == { if (m.getKvtIp7().equals(keputusan[k].toString())) { jumlahPerAtribut++; } } else if (selectedSemester == { if (m.getKvtIp8().equals(keputusan[k].toString())) { jumlahPerAtribut++; } } } if (maxSum < jumlahPerAtribut) { maxSum = jumlahPerAtribut; indek_keputusan = k;
2)
3)
4)
5)
6)
7)
8)
202
} } Node pohon2 = new Node(); int idPohon2 = pohon2.tentukanIdPohon(pohonkeputusan); pohon2.setIdTree(idPohon2); pohon2.setAtrbt(atribut_terpilih); pohon2.setIdMaster(idMaster); pohon2.setNilaiAtribut(tempNilaiAtribut[i]); pohon2.setIpkDecission(keputusan[indek_keputusan]); pohon2.setLevelPohon(level); pohonkeputusan.add(pohon2); Node.saveTree(selectedProdi, selectedSemester, pohon2.getIdTree(), pohon2.getIdMaster(), pohon2.getAtrbt().toString(), pohon2.getNilaiAtribut(), pohon2.getIpkDecission().toString()); Node.saveTree2(pohon2.getIdTree(), selectedProdi, selectedSemester, pohon2.getIdMaster(), pohon2.getIpkDecission().toString(), pohon2.getNilaiAtribut()); }// tutup if entropy ==0 } } } else { int jumlahPerAtribut = 0; int maxSum = 0; int indek_keputusan = 0; for (int k = 0; k < keputusan.length; k++) { jumlahPerAtribut = 0; for (int l = 0; l < dataMhsw.size(); l++) { Mahasiswa m = (Mahasiswa) dataMhsw.elementAt(l); if (selectedSemester == 1) { if (m.getKvtIp1().equals(keputusan[k].toString())) { jumlahPerAtribut++; } } else if (selectedSemester == 2) { if (m.getKvtIp2().equals(keputusan[k].toString())) { jumlahPerAtribut++; } } else if (selectedSemester == 3) { if (m.getKvtIp3().equals(keputusan[k].toString())) { jumlahPerAtribut++; } } else if (selectedSemester == 4) { if (m.getKvtIp4().equals(keputusan[k].toString())) { jumlahPerAtribut++; } } else if (selectedSemester == 5) { if (m.getKvtIp5().equals(keputusan[k].toString())) {
203
jumlahPerAtribut++; } } else if (selectedSemester == if (m.getKvtIp6().equals(keputusan[k].toString())) { jumlahPerAtribut++; } } else if (selectedSemester == if (m.getKvtIp7().equals(keputusan[k].toString())) { jumlahPerAtribut++; } } else if (selectedSemester == if (m.getKvtIp8().equals(keputusan[k].toString())) { jumlahPerAtribut++; } } if (maxSum < jumlahPerAtribut) maxSum = jumlahPerAtribut; indek_keputusan = k; } } Node pohon3 = new Node(); int idPohon3 = pohon3.tentukanIdPohon(pohonkeputusan); pohon3.setIdTree(idPohon3); pohon3.setAtrbt(atribut_terpilih); pohon3.setIdMaster(idMaster); pohon3.setNilaiAtribut(value);
6) {
7) {
8) {
{
pohon3.setIpkDecission(keputusan[indek_keputusan]); pohon3.setLevelPohon(level); pohonkeputusan.add(pohon3); Node.saveTree(selectedProdi, selectedSemester, pohon3.getIdTree(), pohon3.getIdMaster(), pohon3.getAtrbt().toString(), pohon3.getNilaiAtribut(), pohon3.getIpkDecission().toString()); Node.saveTree2(pohon3.getIdTree(), selectedProdi, selectedSemester, pohon3.getIdMaster(), pohon3.getIpkDecission().toString(), pohon3.getNilaiAtribut()); } } } public void J48CrossValidation(int idMaster, int level, Vector dataMhsw, String value, int iterasi) throws SQLException { String smt = semesterTerpilih; Node test = new Node(); enumKeputusanIPK keputusan[] = enumKeputusanIPK.values();// menampung keputusan ipk ////...........................mencari node akar..............................//// enumAtribut atribut_terpilih = test.createNode(dataMhsw,
204
pohonkeputusan, smt); ////...........menampung nilai dari atribut terpilih ke dalam array............//// String[] tempNilaiAtribut = nilaiAtributTerpilih(atribut_terpilih); ////.......... Buat Pohon untuk root node.................//// Node pohon = new Node(); int idPohon = pohon.tentukanIdPohon(pohonkeputusan); pohon.setIdTree(idPohon); pohon.setAtrbt(atribut_terpilih); pohon.setIdMaster(idMaster); pohon.setNilaiAtribut(value); pohon.setLevelPohon(level); pohon.setDataset(dataset); pohonkeputusan.add(pohon); level++; idMaster = idPohon; Node.saveTreeCrossValidation(pohon.getIdTree(), selectedProdi, selectedSemester, pohon.getIdMaster(), pohon.getAtrbt().toString(), pohon.getNilaiAtribut(), iterasi); //// ..................cek apakah tinggi pohon masih kurang atau = dari jumlah atribut...............//// if (level < jumAtributPelatihan + 1) { // enumAtribut atribut_terpilih2 = test.createNode(dataMhsw, pohonkeputusan2, smt); for (int i = 0; i < tempNilaiAtribut.length; i++) { Vector hasilPisah2 = Node.pisahData(atribut_terpilih, dataMhsw, tempNilaiAtribut[i]); int jumDataTotal2 = hasilPisah2.size(); if (jumDataTotal2 == 0) { } else { float EntropiTotal = Node.EntropyTotal(hasilPisah2, smt); ////.....cek jika ada data dan entropi tidak nol dan juga tidak 1....//// if (jumDataTotal2 != 0 && EntropiTotal != 0 && EntropiTotal != 1) { ////...........rekursif j48 (bikin pohon lagi karena node tersebut dianggap bukan node leaf)..........//// J48CrossValidation(pohon.getIdTree(), level, hasilPisah2, tempNilaiAtribut[i], iterasi); ////....... cek apakah entropi bernilai 0....//// } else if (EntropiTotal == 0) { //menentukan keputusan IPK jika pada posisi mutlak
205
int int int for
jumlahPerAtribut = 0; maxSum = 0; indek_keputusan = 0; (int k = 0; k < keputusan.length; k++)
{ jumlahPerAtribut = 0; for (int l = 0; l < hasilPisah2.size(); l++) { Mahasiswa m = (Mahasiswa) hasilPisah2.elementAt(l); if (selectedSemester == 1) { if (m.getKvtIp1().equals(keputusan[k].toString())) { jumlahPerAtribut++; } } else if (selectedSemester == { if (m.getKvtIp2().equals(keputusan[k].toString())) { jumlahPerAtribut++; } } else if (selectedSemester == { if (m.getKvtIp3().equals(keputusan[k].toString())) { jumlahPerAtribut++; } } else if (selectedSemester == { if (m.getKvtIp4().equals(keputusan[k].toString())) { jumlahPerAtribut++; } } else if (selectedSemester == { if (m.getKvtIp5().equals(keputusan[k].toString())) { jumlahPerAtribut++; } } else if (selectedSemester == { if (m.getKvtIp6().equals(keputusan[k].toString())) { jumlahPerAtribut++; } } else if (selectedSemester == { if (m.getKvtIp7().equals(keputusan[k].toString())) { jumlahPerAtribut++; } } else if (selectedSemester == { if (m.getKvtIp8().equals(keputusan[k].toString())) { jumlahPerAtribut++;
2)
3)
4)
5)
6)
7)
8)
206
} } } if (maxSum < jumlahPerAtribut) { maxSum = jumlahPerAtribut; indek_keputusan = k; } } Node pohon2 = new Node(); int idPohon2 = pohon2.tentukanIdPohon(pohonkeputusan); pohon2.setIdTree(idPohon2); pohon2.setAtrbt(atribut_terpilih); pohon2.setIdMaster(idMaster); pohon2.setNilaiAtribut(tempNilaiAtribut[i]); pohon2.setIpkDecission(keputusan[indek_keputusan]); pohon2.setLevelPohon(level); pohonkeputusan.add(pohon2); Node.saveTreeCrossValidation(pohon2.getIdTree(), selectedProdi, selectedSemester, pohon2.getIdMaster(), pohon2.getIpkDecission().toString(), pohon2.getNilaiAtribut(), iterasi); }// tutup if entropy ==0 } } } else { int jumlahPerAtribut = 0; int maxSum = 0; int indek_keputusan = 0; for (int k = 0; k < keputusan.length; k++) { jumlahPerAtribut = 0; for (int l = 0; l < dataMhsw.size(); l++) { Mahasiswa m = (Mahasiswa) dataMhsw.elementAt(l); if (selectedSemester == 1) { if (m.getKvtIp1().equals(keputusan[k].toString())) { jumlahPerAtribut++; } } else if (selectedSemester == 2) { if (m.getKvtIp2().equals(keputusan[k].toString())) { jumlahPerAtribut++; } } else if (selectedSemester == 3) { if (m.getKvtIp3().equals(keputusan[k].toString())) { jumlahPerAtribut++; } } else if (selectedSemester == 4) { if (m.getKvtIp4().equals(keputusan[k].toString())) {
207
jumlahPerAtribut++; } } else if (selectedSemester == if (m.getKvtIp5().equals(keputusan[k].toString())) { jumlahPerAtribut++; } } else if (selectedSemester == if (m.getKvtIp6().equals(keputusan[k].toString())) { jumlahPerAtribut++; } } else if (selectedSemester == if (m.getKvtIp7().equals(keputusan[k].toString())) { jumlahPerAtribut++; } } else if (selectedSemester == if (m.getKvtIp8().equals(keputusan[k].toString())) { jumlahPerAtribut++; } } if (maxSum < jumlahPerAtribut) maxSum = jumlahPerAtribut; indek_keputusan = k; } } Node pohon3 = new Node(); int idPohon3 = pohon3.tentukanIdPohon(pohonkeputusan); pohon3.setIdTree(idPohon3); pohon3.setAtrbt(atribut_terpilih); pohon3.setIdMaster(idMaster); pohon3.setNilaiAtribut(value);
5) {
6) {
7) {
8) {
{
pohon3.setIpkDecission(keputusan[indek_keputusan]); pohon3.setLevelPohon(level); pohonkeputusan.add(pohon3); Node.saveTreeCrossValidation(pohon3.getIdTree(), selectedProdi, selectedSemester, pohon3.getIdMaster(), pohon3.getIpkDecission().toString(), pohon3.getNilaiAtribut(), iterasi); } } } public String[] nilaiAtributTerpilih(enumAtribut atribut) { String arrayTemp[] = null; enumNilaiRaport arrEnumNilaiRaport[] = enumNilaiRaport.values();//menampung nilai atribut enumNilaiJenisKelamin arrEnumNilaiJenisKelamin[] = enumNilaiJenisKelamin.values();//menampung nilai atribut enumNilaiJurusan arrEnumNilaiJurusan[] = enumNilaiJurusan.values();//menampung nilai atribut enumNilaiKabupaten arrEnumNilaiKab[] =
208
enumNilaiKabupaten.values();//menampung nilai atribut enumNilaiKeteranganSekolah arrEnumNilaiKetSekolah[] = enumNilaiKeteranganSekolah.values();//menampung nilai atribut if (atribut == enumAtribut.jurusan) { arrayTemp = new String[arrEnumNilaiJurusan.length]; for (int i = 0; i < arrEnumNilaiJurusan.length; i++) { arrayTemp[i] = arrEnumNilaiJurusan[i].toString(); } } else if (atribut == enumAtribut.keteranganSekolah) { arrayTemp = new String[arrEnumNilaiKetSekolah.length]; for (int i = 0; i < arrEnumNilaiKetSekolah.length; i++) { arrayTemp[i] = arrEnumNilaiKetSekolah[i].toString(); } } else if (atribut == enumAtribut.kabupatenSekolah) { arrayTemp = new String[arrEnumNilaiKab.length]; for (int i = 0; i < arrEnumNilaiKab.length; i++) { arrayTemp[i] = arrEnumNilaiKab[i].toString(); } } else if (atribut == enumAtribut.kabupatenAsal) { arrayTemp = new String[arrEnumNilaiKab.length]; for (int i = 0; i < arrEnumNilaiKab.length; i++) { arrayTemp[i] = arrEnumNilaiKab[i].toString(); } } else if (atribut == enumAtribut.sex) { arrayTemp = new String[arrEnumNilaiJenisKelamin.length]; for (int i = 0; i < arrEnumNilaiJenisKelamin.length; i++) { arrayTemp[i] = arrEnumNilaiJenisKelamin[i].toString(); } } else if (atribut == enumAtribut.bIndo1) { arrayTemp = new String[arrEnumNilaiRaport.length]; for (int i = 0; i < arrEnumNilaiRaport.length; i++) { arrayTemp[i] = arrEnumNilaiRaport[i].toString(); } } else if (atribut == enumAtribut.bIndo2) { arrayTemp = new String[arrEnumNilaiRaport.length]; for (int i = 0; i < arrEnumNilaiRaport.length; i++) { arrayTemp[i] = arrEnumNilaiRaport[i].toString(); } } else if (atribut == enumAtribut.bIndo3) { arrayTemp = new String[arrEnumNilaiRaport.length]; for (int i = 0; i < arrEnumNilaiRaport.length; i++) { arrayTemp[i] = arrEnumNilaiRaport[i].toString(); }
209
} else if (atribut == enumAtribut.bIng1) { arrayTemp = new String[arrEnumNilaiRaport.length]; for (int i = 0; i < arrEnumNilaiRaport.length; i++) { arrayTemp[i] = arrEnumNilaiRaport[i].toString(); } } else if (atribut == enumAtribut.bIng2) { arrayTemp = new String[arrEnumNilaiRaport.length]; for (int i = 0; i < arrEnumNilaiRaport.length; i++) { arrayTemp[i] = arrEnumNilaiRaport[i].toString(); } } else if (atribut == enumAtribut.bIng3) { arrayTemp = new String[arrEnumNilaiRaport.length]; for (int i = 0; i < arrEnumNilaiRaport.length; i++) { arrayTemp[i] = arrEnumNilaiRaport[i].toString(); } } else if (atribut == enumAtribut.mtk1) { arrayTemp = new String[arrEnumNilaiRaport.length]; for (int i = 0; i < arrEnumNilaiRaport.length; i++) { arrayTemp[i] = arrEnumNilaiRaport[i].toString(); } } else if (atribut == enumAtribut.mtk2) { arrayTemp = new String[arrEnumNilaiRaport.length]; for (int i = 0; i < arrEnumNilaiRaport.length; i++) { arrayTemp[i] = arrEnumNilaiRaport[i].toString(); } } else if (atribut == enumAtribut.mtk3) { arrayTemp = new String[arrEnumNilaiRaport.length]; for (int i = 0; i < arrEnumNilaiRaport.length; i++) { arrayTemp[i] = arrEnumNilaiRaport[i].toString(); } } else if (atribut == enumAtribut.fisika1) { arrayTemp = new String[arrEnumNilaiRaport.length]; for (int i = 0; i < arrEnumNilaiRaport.length; i++) { arrayTemp[i] = arrEnumNilaiRaport[i].toString(); } } else if (atribut == enumAtribut.fisika2) { arrayTemp = new String[arrEnumNilaiRaport.length]; for (int i = 0; i < arrEnumNilaiRaport.length; i++) { arrayTemp[i] = arrEnumNilaiRaport[i].toString(); } } else if (atribut == enumAtribut.fisika3) { arrayTemp = new String[arrEnumNilaiRaport.length]; for (int i = 0; i < arrEnumNilaiRaport.length; i++) { arrayTemp[i] = arrEnumNilaiRaport[i].toString(); } } else if (atribut == enumAtribut.bio1) {
210
arrayTemp = new String[arrEnumNilaiRaport.length]; for (int i = 0; i < arrEnumNilaiRaport.length; i++) { arrayTemp[i] = arrEnumNilaiRaport[i].toString(); } } else if (atribut == enumAtribut.bio2) { arrayTemp = new String[arrEnumNilaiRaport.length]; for (int i = 0; i < arrEnumNilaiRaport.length; i++) { arrayTemp[i] = arrEnumNilaiRaport[i].toString(); } } else if (atribut == enumAtribut.bio3) { arrayTemp = new String[arrEnumNilaiRaport.length]; for (int i = 0; i < arrEnumNilaiRaport.length; i++) { arrayTemp[i] = arrEnumNilaiRaport[i].toString(); } } else if (atribut == enumAtribut.kimia1) { arrayTemp = new String[arrEnumNilaiRaport.length]; for (int i = 0; i < arrEnumNilaiRaport.length; i++) { arrayTemp[i] = arrEnumNilaiRaport[i].toString(); } } else if (atribut == enumAtribut.kimia2) { arrayTemp = new String[arrEnumNilaiRaport.length]; for (int i = 0; i < arrEnumNilaiRaport.length; i++) { arrayTemp[i] = arrEnumNilaiRaport[i].toString(); } } else if (atribut == enumAtribut.kimia3) { arrayTemp = new String[arrEnumNilaiRaport.length]; for (int i = 0; i < arrEnumNilaiRaport.length; i++) { arrayTemp[i] = arrEnumNilaiRaport[i].toString(); } } else if (atribut == enumAtribut.eko1) { arrayTemp = new String[arrEnumNilaiRaport.length]; for (int i = 0; i < arrEnumNilaiRaport.length; i++) { arrayTemp[i] = arrEnumNilaiRaport[i].toString(); } } else if (atribut == enumAtribut.eko2) { arrayTemp = new String[arrEnumNilaiRaport.length]; for (int i = 0; i < arrEnumNilaiRaport.length; i++) { arrayTemp[i] = arrEnumNilaiRaport[i].toString(); } } else if (atribut == enumAtribut.eko3) { arrayTemp = new String[arrEnumNilaiRaport.length]; for (int i = 0; i < arrEnumNilaiRaport.length; i++) { arrayTemp[i] = arrEnumNilaiRaport[i].toString(); } } else if (atribut == enumAtribut.sejarah1) { arrayTemp = new String[arrEnumNilaiRaport.length]; for (int i = 0; i < arrEnumNilaiRaport.length; i++) {
211
arrayTemp[i] = arrEnumNilaiRaport[i].toString(); } } else if (atribut == enumAtribut.sejarah2) { arrayTemp = new String[arrEnumNilaiRaport.length]; for (int i = 0; i < arrEnumNilaiRaport.length; i++) { arrayTemp[i] = arrEnumNilaiRaport[i].toString(); } } else if (atribut == enumAtribut.sejarah3) { arrayTemp = new String[arrEnumNilaiRaport.length]; for (int i = 0; i < arrEnumNilaiRaport.length; i++) { arrayTemp[i] = arrEnumNilaiRaport[i].toString(); } } else if (atribut == enumAtribut.ip1) { arrayTemp = new String[arrEnumNilaiRaport.length]; for (int i = 0; i < arrEnumNilaiRaport.length; i++) { arrayTemp[i] = arrEnumNilaiRaport[i].toString(); } } else if (atribut == enumAtribut.ip2) { arrayTemp = new String[arrEnumNilaiRaport.length]; for (int i = 0; i < arrEnumNilaiRaport.length; i++) { arrayTemp[i] = arrEnumNilaiRaport[i].toString(); } } else if (atribut == enumAtribut.ip3) { arrayTemp = new String[arrEnumNilaiRaport.length]; for (int i = 0; i < arrEnumNilaiRaport.length; i++) { arrayTemp[i] = arrEnumNilaiRaport[i].toString(); } } else if (atribut == enumAtribut.ip4) { arrayTemp = new String[arrEnumNilaiRaport.length]; for (int i = 0; i < arrEnumNilaiRaport.length; i++) { arrayTemp[i] = arrEnumNilaiRaport[i].toString(); } } else if (atribut == enumAtribut.ip5) { arrayTemp = new String[arrEnumNilaiRaport.length]; for (int i = 0; i < arrEnumNilaiRaport.length; i++) { arrayTemp[i] = arrEnumNilaiRaport[i].toString(); } } else if (atribut == enumAtribut.ip6) { arrayTemp = new String[arrEnumNilaiRaport.length]; for (int i = 0; i < arrEnumNilaiRaport.length; i++) { arrayTemp[i] = arrEnumNilaiRaport[i].toString(); } } else if (atribut == enumAtribut.ip7) { arrayTemp = new String[arrEnumNilaiRaport.length]; for (int i = 0; i < arrEnumNilaiRaport.length; i++) { arrayTemp[i] = arrEnumNilaiRaport[i].toString(); }
212
} else if (atribut == enumAtribut.ip8) { arrayTemp = new String[arrEnumNilaiRaport.length]; for (int i = 0; i < arrEnumNilaiRaport.length; i++) { arrayTemp[i] = arrEnumNilaiRaport[i].toString(); } } return arrayTemp; } // Variables declaration - do not modify private usu.widget.ButtonGlass BackButtonGlass; private usu.widget.ButtonGlass BrowseButtonGlass; private usu.widget.ButtonGlass CreateTreeButtonGlass; private usu.widget.ButtonGlass TransformasiButtonGlass; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanelTabelTransform; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JScrollPane jScrollPane3; private javax.swing.JTable jTableMahasiswa; private javax.swing.JTable jTableMahasiswaTransform; private javax.swing.JTextField jTextFieldLokasiFile; private usu.widget.Label label3; private usu.widget.Label label4; private usu.widget.Label labelJumlahDataAwal; private usu.widget.Label labelJumlahDataTransform; private usu.widget.glass.PanelGlassStyle panelGlassStyle1; private usu.widget.Panel panelTabelPreAwal; // End of variables declaration }
Lampiran 7 Listing Program Form Hasil Preprocessing package SPPA.View; import import import import import import import import import import /**
SPPA.Controller.DatabaseConnection; SPPA.Entity.Aturan; SPPA.Entity.Node; SPPA.Entity.enumAtribut; java.sql.ResultSet; java.sql.SQLException; java.util.Vector; javax.swing.JOptionPane; javax.swing.tree.DefaultMutableTreeNode; javax.swing.tree.DefaultTreeModel;
213
* * @author Florencia */ public class HasilPreprocessingSPPA extends javax.swing.JFrame { private Vector pohonKeputusan; private enumAtribut atribut1; private int selectedSemester; private int selectedProdi; /** Creates new form HasilPreprocessingSPPA */ public HasilPreprocessingSPPA(Vector pohonKeputusan,int prodi, int smt) { this.pohonKeputusan = pohonKeputusan; initComponents(); for (int i = 0; i < pohonKeputusan.size(); i++) { Node tree = (Node) pohonKeputusan.elementAt(i); if (tree.getIdTree() ==1) { atribut1 = tree.getAtrbt(); } } DefaultMutableTreeNode treeModel = new DefaultMutableTreeNode(atribut1.toString()); Node.createTree(1, treeModel,pohonKeputusan); jTreeJ48.setModel(new DefaultTreeModel(treeModel)); selectedProdi=prodi; selectedSemester=smt; } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { panel2 = new usu.widget.Panel(); panelGlassStyle1 = new usu.widget.glass.PanelGlassStyle(); label2 = new usu.widget.Label(); PrediksiButtonGlass = new usu.widget.ButtonGlass(); ButtonLihatDetailAturan = new usu.widget.ButtonGlass(); jScrollPane1 = new javax.swing.JScrollPane(); jTreeJ48 = new javax.swing.JTree(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE ); panel2.setBackground(new java.awt.Color(51, 153, 255));
214
panelGlassStyle1.setBackground(new java.awt.Color(51, 153, 255)); label2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/SPPA/resources/th_d etektive.png"))); // NOI18N label2.setText(":: Pohon Keputusan ::"); label2.setFont(new java.awt.Font("Andalus", 1, 24)); PrediksiButtonGlass.setIcon(new javax.swing.ImageIcon(getClass().getResource("/SPPA/resources/pred iksi.png"))); // NOI18N PrediksiButtonGlass.setText("Prediksi"); PrediksiButtonGlass.setFont(new java.awt.Font("Comic Sans MS", 1, 14)); PrediksiButtonGlass.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { PrediksiButtonGlassActionPerformed(evt); } }); ButtonLihatDetailAturan.setIcon(new javax.swing.ImageIcon(getClass().getResource("/SPPA/resources/logi nsukses.png"))); // NOI18N ButtonLihatDetailAturan.setText("Lihat Detail Aturan"); ButtonLihatDetailAturan.setFont(new java.awt.Font("Comic Sans MS", 1, 14)); ButtonLihatDetailAturan.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { ButtonLihatDetailAturanActionPerformed(evt); } }); javax.swing.GroupLayout panelGlassStyle1Layout = new javax.swing.GroupLayout(panelGlassStyle1); panelGlassStyle1.setLayout(panelGlassStyle1Layout); panelGlassStyle1Layout.setHorizontalGroup( panelGlassStyle1Layout.createParallelGroup(javax.swing.GroupLayout .Alignment.LEADING) .addGroup(panelGlassStyle1Layout.createSequentialGroup() .addComponent(label2, javax.swing.GroupLayout.DEFAULT_SIZE, 374, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATE D) .addComponent(PrediksiButtonGlass, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
215
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATE D) .addComponent(ButtonLihatDetailAturan, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(75, 75, 75)) ); panelGlassStyle1Layout.setVerticalGroup( panelGlassStyle1Layout.createParallelGroup(javax.swing.GroupLayout .Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelGlassStyle1Layout.createSequentialGroup() .addContainerGap(38, Short.MAX_VALUE) .addGroup(panelGlassStyle1Layout.createParallelGroup(javax.swing.G roupLayout.Alignment.TRAILING) .addGroup(panelGlassStyle1Layout.createParallelGroup(javax.swing.G roupLayout.Alignment.BASELINE) .addComponent(PrediksiButtonGlass, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(ButtonLihatDetailAturan, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(label2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap()) ); jTreeJ48.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0), 2)); jScrollPane1.setViewportView(jTreeJ48); javax.swing.GroupLayout panel2Layout = new javax.swing.GroupLayout(panel2); panel2.setLayout(panel2Layout); panel2Layout.setHorizontalGroup( panel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment .LEADING) .addComponent(panelGlassStyle1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(panel2Layout.createSequentialGroup() .addGap(22, 22, 22) .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 725, javax.swing.GroupLayout.PREFERRED_SIZE)
216
.addGap(20, 20, 20)) ); panel2Layout.setVerticalGroup( panel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment .LEADING) .addGroup(panel2Layout.createSequentialGroup() .addComponent(panelGlassStyle1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATE D, 26, Short.MAX_VALUE) .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 414, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(20, 20, 20)) ); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI NG) .addComponent(panel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI NG) .addComponent(panel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) ); pack(); }// private void PrediksiButtonGlassActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: if (pohonKeputusan != null) { HomeSPPA viewTree = new HomeSPPA(selectedProdi,selectedSemester); viewTree.setVisible(true); this.dispose(); } else { JOptionPane.showMessageDialog(null, "Pohon Belum
217
Terbentuk"); } } private void ButtonLihatDetailAturanActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: Vector TreeDecission1 = new Vector(); Vector TreeDecission2 = new Vector(); Vector TreeDecission3 = new Vector(); Vector TreeDecission4 = new Vector(); Vector TreeDecission5 = new Vector(); Vector TreeDecission6 = new Vector(); Vector TreeDecission7 = new Vector(); Vector TreeDecission8 = new Vector(); try { DatabaseConnection bd = new DatabaseConnection(); ResultSet rs = bd.lihatData("select IdTree,IdMaster,Atribut,Nilai_Atribut,IPK_Decission from pola_semester_copy where IdProdi=" + selectedProdi + " and IdSemester=1;"); while (rs.next()) { Aturan regeneratePola = new Aturan(); regeneratePola.setIdPohon(rs.getInt("IdTree")); regeneratePola.setIdParent(rs.getInt("IdMaster")); regeneratePola.setAtribut(rs.getString("Atribut")); regeneratePola.setNilAtribut(rs.getString("Nilai_Atribut")); regeneratePola.setIpk(rs.getString("IPK_Decission")); TreeDecission1.add(regeneratePola); } rs.close(); DatabaseConnection.closeConnection(); DatabaseConnection bd2= new DatabaseConnection(); ResultSet rs2 = bd2.lihatData("select IdTree,IdMaster,Atribut,Nilai_Atribut,IPK_Decission from pola_semester_copy where IdProdi=" + selectedProdi + " and IdSemester=2;"); while (rs2.next()) { Aturan regeneratePola = new Aturan(); regeneratePola.setIdPohon(rs2.getInt("IdTree")); regeneratePola.setIdParent(rs2.getInt("IdMaster")); regeneratePola.setAtribut(rs2.getString("Atribut")); regeneratePola.setNilAtribut(rs2.getString("Nilai_Atribut")); regeneratePola.setIpk(rs2.getString("IPK_Decission")); TreeDecission2.add(regeneratePola); }
218
rs2.close(); DatabaseConnection.closeConnection(); DatabaseConnection bd3 = new DatabaseConnection(); ResultSet rs3 = bd3.lihatData("select IdTree,IdMaster,Atribut,Nilai_Atribut,IPK_Decission from pola_semester_copy where IdProdi=" + selectedProdi + " and IdSemester=3;"); while (rs3.next()) { Aturan regeneratePola = new Aturan(); regeneratePola.setIdPohon(rs3.getInt("IdTree")); regeneratePola.setIdParent(rs3.getInt("IdMaster")); regeneratePola.setAtribut(rs3.getString("Atribut")); regeneratePola.setNilAtribut(rs3.getString("Nilai_Atribut")); regeneratePola.setIpk(rs3.getString("IPK_Decission")); TreeDecission3.add(regeneratePola); } rs3.close(); DatabaseConnection.closeConnection(); DatabaseConnection bd4 = new DatabaseConnection(); ResultSet rs4 = bd4.lihatData("select IdTree,IdMaster,Atribut,Nilai_Atribut,IPK_Decission from pola_semester_copy where IdProdi=" + selectedProdi + " and IdSemester=4;"); while (rs4.next()) { Aturan regeneratePola = new Aturan(); regeneratePola.setIdPohon(rs4.getInt("IdTree")); regeneratePola.setIdParent(rs4.getInt("IdMaster")); regeneratePola.setAtribut(rs4.getString("Atribut")); regeneratePola.setNilAtribut(rs4.getString("Nilai_Atribut")); regeneratePola.setIpk(rs4.getString("IPK_Decission")); TreeDecission4.add(regeneratePola); } rs4.close(); DatabaseConnection.closeConnection(); DatabaseConnection bd5= new DatabaseConnection(); ResultSet rs5 = bd5.lihatData("select IdTree,IdMaster,Atribut,Nilai_Atribut,IPK_Decission from pola_semester_copy where IdProdi=" + selectedProdi + " and IdSemester=5;"); while (rs5.next()) { Aturan regeneratePola = new Aturan(); regeneratePola.setIdPohon(rs5.getInt("IdTree")); regeneratePola.setIdParent(rs5.getInt("IdMaster"));
219
regeneratePola.setAtribut(rs5.getString("Atribut")); regeneratePola.setNilAtribut(rs5.getString("Nilai_Atribut")); regeneratePola.setIpk(rs5.getString("IPK_Decission")); TreeDecission5.add(regeneratePola); } rs5.close(); DatabaseConnection.closeConnection(); DatabaseConnection bd6 = new DatabaseConnection(); ResultSet rs6 = bd6.lihatData("select IdTree,IdMaster,Atribut,Nilai_Atribut,IPK_Decission from pola_semester_copy where IdProdi=" + selectedProdi + " and IdSemester=6;"); while (rs6.next()) { Aturan regeneratePola = new Aturan(); regeneratePola.setIdPohon(rs6.getInt("IdTree")); regeneratePola.setIdParent(rs6.getInt("IdMaster")); regeneratePola.setAtribut(rs6.getString("Atribut")); regeneratePola.setNilAtribut(rs6.getString("Nilai_Atribut")); regeneratePola.setIpk(rs6.getString("IPK_Decission")); TreeDecission6.add(regeneratePola); } rs6.close(); DatabaseConnection.closeConnection(); DatabaseConnection bd7 = new DatabaseConnection(); ResultSet rs7 = bd.lihatData("select IdTree,IdMaster,Atribut,Nilai_Atribut,IPK_Decission from pola_semester_copy where IdProdi=" + selectedProdi + " and IdSemester=7;"); while (rs7.next()) { Aturan regeneratePola = new Aturan(); regeneratePola.setIdPohon(rs7.getInt("IdTree")); regeneratePola.setIdParent(rs7.getInt("IdMaster")); regeneratePola.setAtribut(rs7.getString("Atribut")); regeneratePola.setNilAtribut(rs7.getString("Nilai_Atribut")); regeneratePola.setIpk(rs7.getString("IPK_Decission")); TreeDecission7.add(regeneratePola); } rs7.close(); DatabaseConnection.closeConnection(); DatabaseConnection bd8 = new DatabaseConnection(); ResultSet rs8 = bd8.lihatData("select IdTree,IdMaster,Atribut,Nilai_Atribut,IPK_Decission from pola_semester_copy where IdProdi=" + selectedProdi + " and
220
IdSemester=8;"); while (rs8.next()) { Aturan regeneratePola = new Aturan(); regeneratePola.setIdPohon(rs8.getInt("IdTree")); regeneratePola.setIdParent(rs8.getInt("IdMaster")); regeneratePola.setAtribut(rs8.getString("Atribut")); regeneratePola.setNilAtribut(rs8.getString("Nilai_Atribut")); regeneratePola.setIpk(rs8.getString("IPK_Decission")); TreeDecission8.add(regeneratePola); } rs8.close(); DatabaseConnection.closeConnection(); } catch (SQLException ex) { System.out.println("Erroorrr nih...!!! " + ex.getMessage()); ex.printStackTrace(); System.exit(0); } DetailPolaProdi test = new DetailPolaProdi(selectedProdi,TreeDecission1,TreeDecission2,TreeDe cission3,TreeDecission4,TreeDecission5,TreeDecission6,TreeDecissio n7,TreeDecission8); test.setVisible(true); this.dispose(); } // Variables declaration - do not modify private usu.widget.ButtonGlass ButtonLihatDetailAturan; private usu.widget.ButtonGlass PrediksiButtonGlass; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTree jTreeJ48; private usu.widget.Label label2; private usu.widget.Panel panel2; private usu.widget.glass.PanelGlassStyle panelGlassStyle1; // End of variables declaration }
Lampiran 8 Listing Program Form Prediksi Personal package SPPA.View; import import import import import import import
SPPA.Controller.DatabaseConnection; SPPA.Controller.TransformasiData; SPPA.Entity.Aturan; SPPA.Entity.Mahasiswa; java.sql.ResultSet; java.sql.SQLException; java.util.Vector;
221
import javax.swing.JOptionPane; /** * * @author Florencia */ public class PrediksiPersonalSPPA extends javax.swing.JFrame { private private private private private private private private private private private private private private private private private private private private private private private private private private private private private private private private private private private private private private
static Vector pohonKeputusan; int selectedSemester; int selectedProdi; static String konvertBindo1; static String konvertBindo2; static String konvertBindo3; static String konvertBing1; static String konvertBing2; static String konvertBing3; static String konvertMtk1; static String konvertMtk2; static String konvertMtk3; static String konvertFisika1; static String konvertFisika2; static String konvertFisika3; static String konvertBiologi1; static String konvertBiologi2; static String konvertBiologi3; static String konvertKimia1; static String konvertKimia2; static String konvertKimia3; static String konvertEko1; static String konvertEko2; static String konvertEko3; static String konvertSej1; static String konvertSej2; static String konvertSej3; static String konvertIPK1; static String konvertIPK2; static String konvertIPK3; static String konvertIPK4; static String konvertIPK5; static String konvertIPK6; static String konvertIPK7; static String konvertIPK8; Mahasiswa dataset; Vector nilai; String kategori;
/** Creates new form PrediksiPersonalSPPA */ public PrediksiPersonalSPPA(int prodi, int smt) { dataset = new Mahasiswa(); initComponents(); selectedSemester = smt; selectedProdi = prodi; PrediksiPersonalSPPA.pohonKeputusan = pohonKeputusan; }
222
public PrediksiPersonalSPPA() { initComponents(); } public Mahasiswa getDataset() { return dataset; } public void setDataset(Mahasiswa dataset) { this.dataset = dataset; } public void generateData(int semester) { TransformasiData td = new TransformasiData(); nilai = new Vector(); try { Mahasiswa m = new Mahasiswa(); m.setJurusan(jComboBoxJurusan.getSelectedItem().toString()); m.setKetSekolah(jComboBoxKategoriSma.getSelectedItem().toString()) ; m.setKabupatenSekolah(jComboBoxKabSekolah.getSelectedItem().toStri ng()); m.setKabupatenAsal(jComboBoxKabAsal.getSelectedItem().toString()); m.setJk(jComboBoxJK.getSelectedItem().toString()); ResultSet rs = TransformasiData.getRerataStdv(selectedProdi, selectedSemester); while (rs.next()) { if (rs.getString("NamaAtribut").equalsIgnoreCase("bIndo1")) { m.setbIndo1(Double.parseDouble(Bindo1TextField.getText())); m.setKvtBindo1(td.KonversiNilai(rs.getDouble("RataRata"), rs.getDouble("StandarDev"), Double.parseDouble(Bindo1TextField.getText()))); } else if (rs.getString("NamaAtribut").equalsIgnoreCase("bIndo2")) { m.setbIndo2(Double.parseDouble(Bindo2TextField.getText())); m.setKvtBindo2(td.KonversiNilai(rs.getDouble("RataRata"), rs.getDouble("StandarDev"), Double.parseDouble(Bindo2TextField.getText()))); } else if
223
(rs.getString("NamaAtribut").equalsIgnoreCase("bIndo3")) { m.setbIndo3(Double.parseDouble(Bindo3TextField.getText())); m.setKvtBindo3(td.KonversiNilai(rs.getDouble("RataRata"), rs.getDouble("StandarDev"), Double.parseDouble(Bindo3TextField.getText()))); } else if (rs.getString("NamaAtribut").equalsIgnoreCase("bIng1")) { m.setbIng1(Double.parseDouble(Bing1TextField.getText())); m.setKvtBing1(td.KonversiNilai(rs.getDouble("RataRata"), rs.getDouble("StandarDev"), Double.parseDouble(Bing1TextField.getText()))); } else if (rs.getString("NamaAtribut").equalsIgnoreCase("bIng2")) { m.setbIng2(Double.parseDouble(Bing2TextField.getText())); m.setKvtBing2(td.KonversiNilai(rs.getDouble("RataRata"), rs.getDouble("StandarDev"), Double.parseDouble(Bing2TextField.getText()))); } else if (rs.getString("NamaAtribut").equalsIgnoreCase("bIng3")) { m.setbIng3(Double.parseDouble(Bing3TextField.getText())); m.setKvtBing3(td.KonversiNilai(rs.getDouble("RataRata"), rs.getDouble("StandarDev"), Double.parseDouble(Bing3TextField.getText()))); } else if (rs.getString("NamaAtribut").equalsIgnoreCase("mtk1")) { m.setMtk1(Double.parseDouble(Mtk1TextField.getText())); m.setKvtMtk1(td.KonversiNilai(rs.getDouble("RataRata"), rs.getDouble("StandarDev"), Double.parseDouble(Mtk1TextField.getText()))); } else if (rs.getString("NamaAtribut").equalsIgnoreCase("mtk2")) { m.setMtk2(Double.parseDouble(Mtk2TextField.getText())); m.setKvtMtk2(td.KonversiNilai(rs.getDouble("RataRata"), rs.getDouble("StandarDev"), Double.parseDouble(Mtk2TextField.getText()))); } else if (rs.getString("NamaAtribut").equalsIgnoreCase("mtk3")) {
224
m.setMtk3(Double.parseDouble(Mtk3TextField.getText())); m.setKvtMtk3(td.KonversiNilai(rs.getDouble("RataRata"), rs.getDouble("StandarDev"), Double.parseDouble(Mtk3TextField.getText()))); } else if (rs.getString("NamaAtribut").equalsIgnoreCase("fisika1")) { m.setFisika1(Double.parseDouble(Fis1TextField.getText())); m.setKvtFisika1(td.KonversiNilai(rs.getDouble("RataRata"), rs.getDouble("StandarDev"), Double.parseDouble(Fis1TextField.getText()))); } else if (rs.getString("NamaAtribut").equalsIgnoreCase("fisika2")) { m.setFisika2(Double.parseDouble(Fis2TextField.getText())); m.setKvtFisika2(td.KonversiNilai(rs.getDouble("RataRata"), rs.getDouble("StandarDev"), Double.parseDouble(Fis2TextField.getText()))); } else if (rs.getString("NamaAtribut").equalsIgnoreCase("fisika3")) { m.setFisika3(Double.parseDouble(Fis3TextField.getText())); m.setKvtFisika3(td.KonversiNilai(rs.getDouble("RataRata"), rs.getDouble("StandarDev"), Double.parseDouble(Fis3TextField.getText()))); } else if (rs.getString("NamaAtribut").equalsIgnoreCase("bio1")) { m.setBio1(Double.parseDouble(Bio1TextField.getText())); m.setKvtBio1(td.KonversiNilai(rs.getDouble("RataRata"), rs.getDouble("StandarDev"), Double.parseDouble(Bio1TextField.getText()))); } else if (rs.getString("NamaAtribut").equalsIgnoreCase("bio2")) { m.setBio2(Double.parseDouble(Bio2TextField.getText())); m.setKvtBio2(td.KonversiNilai(rs.getDouble("RataRata"), rs.getDouble("StandarDev"), Double.parseDouble(Bio2TextField.getText()))); } else if (rs.getString("NamaAtribut").equalsIgnoreCase("bio3")) { m.setBio3(Double.parseDouble(Bio3TextField.getText()));
225
m.setKvtBio3(td.KonversiNilai(rs.getDouble("RataRata"), rs.getDouble("StandarDev"), Double.parseDouble(Bio3TextField.getText()))); } else if (rs.getString("NamaAtribut").equalsIgnoreCase("kimia1")) { m.setKimia1(Double.parseDouble(Kim1TextField.getText())); m.setKvtKimia1(td.KonversiNilai(rs.getDouble("RataRata"), rs.getDouble("StandarDev"), Double.parseDouble(Kim1TextField.getText()))); } else if (rs.getString("NamaAtribut").equalsIgnoreCase("kimia2")) { m.setKimia2(Double.parseDouble(Kim2TextField.getText())); m.setKvtKimia2(td.KonversiNilai(rs.getDouble("RataRata"), rs.getDouble("StandarDev"), Double.parseDouble(Kim2TextField.getText()))); } else if (rs.getString("NamaAtribut").equalsIgnoreCase("kimia3")) { m.setKimia3(Double.parseDouble(Kim3TextField.getText())); m.setKvtKimia3(td.KonversiNilai(rs.getDouble("RataRata"), rs.getDouble("StandarDev"), Double.parseDouble(Kim3TextField.getText()))); } else if (rs.getString("NamaAtribut").equalsIgnoreCase("eko1")) { m.setEko1(Double.parseDouble(Eko1TextField.getText())); m.setKvtEko1(td.KonversiNilai(rs.getDouble("RataRata"), rs.getDouble("StandarDev"), Double.parseDouble(Eko1TextField.getText()))); } else if (rs.getString("NamaAtribut").equalsIgnoreCase("eko2")) { m.setEko2(Double.parseDouble(Eko2TextField.getText())); m.setKvtEko2(td.KonversiNilai(rs.getDouble("RataRata"), rs.getDouble("StandarDev"), Double.parseDouble(Eko2TextField.getText()))); } else if (rs.getString("NamaAtribut").equalsIgnoreCase("eko3")) { m.setEko3(Double.parseDouble(Eko3TextField.getText())); m.setKvtEko3(td.KonversiNilai(rs.getDouble("RataRata"), rs.getDouble("StandarDev"),
226
Double.parseDouble(Eko3TextField.getText()))); } else if (rs.getString("NamaAtribut").equalsIgnoreCase("sejarah1")) { m.setSejarah1(Double.parseDouble(Sej1TextField.getText())); m.setKvtSejarah1(td.KonversiNilai(rs.getDouble("RataRata"), rs.getDouble("StandarDev"), Double.parseDouble(Sej1TextField.getText()))); } else if (rs.getString("NamaAtribut").equalsIgnoreCase("sejarah2")) { m.setSejarah2(Double.parseDouble(Sej2TextField.getText())); m.setKvtSejarah2(td.KonversiNilai(rs.getDouble("RataRata"), rs.getDouble("StandarDev"), Double.parseDouble(Sej2TextField.getText()))); } else if (rs.getString("NamaAtribut").equalsIgnoreCase("sejarah3")) { m.setSejarah3(Double.parseDouble(Sej3TextField.getText())); m.setKvtSejarah3(td.KonversiNilai(rs.getDouble("RataRata"), rs.getDouble("StandarDev"), Double.parseDouble(Sej3TextField.getText()))); } } setDataset(m); rs.close(); DatabaseConnection.closeConnection(); } catch (SQLException ex) { System.out.println("error dibagian generateData semester 1: " + ex.getMessage()); } } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { panel1 = new usu.widget.Panel(); label1 = new usu.widget.Label(); panel3 = new usu.widget.Panel(); labelKabupatenSekolah = new usu.widget.Label(); labelKabupatenAsal = new usu.widget.Label();
227
labelKateSMA = new usu.widget.Label(); labelJenisKelamin = new usu.widget.Label(); jPanel12 = new javax.swing.JPanel(); jComboBoxJK = new javax.swing.JComboBox(); jComboBoxKategoriSma = new javax.swing.JComboBox(); jComboBoxJurusan = new javax.swing.JComboBox(); jComboBoxKabAsal = new javax.swing.JComboBox(); jComboBoxKabSekolah = new javax.swing.JComboBox(); labelJurSMA = new usu.widget.Label(); label2 = new usu.widget.Label(); label3 = new usu.widget.Label(); panel8 = new usu.widget.Panel(); jPanel6 = new javax.swing.JPanel(); Bing1TextField = new javax.swing.JTextField(); Mtk1TextField = new javax.swing.JTextField(); Fis1TextField = new javax.swing.JTextField(); Bio1TextField = new javax.swing.JTextField(); Kim1TextField = new javax.swing.JTextField(); Eko1TextField = new javax.swing.JTextField(); Bindo1TextField = new javax.swing.JTextField(); Sej1TextField = new javax.swing.JTextField(); labelBindo1 = new usu.widget.Label(); labelBing1 = new usu.widget.Label(); labelMtk1 = new usu.widget.Label(); labelFisika1 = new usu.widget.Label(); labelBio1 = new usu.widget.Label(); labelSejarah1 = new usu.widget.Label(); labelKimia1 = new usu.widget.Label(); labelEko1 = new usu.widget.Label(); label6 = new usu.widget.Label(); panel9 = new usu.widget.Panel(); labelSejarah2 = new usu.widget.Label(); labelEko2 = new usu.widget.Label(); labelKimia2 = new usu.widget.Label(); labelBio2 = new usu.widget.Label(); labelFisika2 = new usu.widget.Label(); labelMtk2 = new usu.widget.Label(); labelBing2 = new usu.widget.Label(); labelBindo2 = new usu.widget.Label(); jPanel9 = new javax.swing.JPanel(); Bindo2TextField = new javax.swing.JTextField(); Bing2TextField = new javax.swing.JTextField(); Fis2TextField = new javax.swing.JTextField(); Bio2TextField = new javax.swing.JTextField(); Kim2TextField = new javax.swing.JTextField(); Eko2TextField = new javax.swing.JTextField(); Sej2TextField = new javax.swing.JTextField(); Mtk2TextField = new javax.swing.JTextField(); panel10 = new usu.widget.Panel(); labelSejarah3 = new usu.widget.Label(); labelEko3 = new usu.widget.Label(); labelKimia3 = new usu.widget.Label(); labelBio3 = new usu.widget.Label(); labelFisika3 = new usu.widget.Label(); labelMtk3 = new usu.widget.Label(); labelBing3 = new usu.widget.Label();
228
labelBindo3 = new usu.widget.Label(); jPanel10 = new javax.swing.JPanel(); Bindo3TextField = new javax.swing.JTextField(); Bing3TextField = new javax.swing.JTextField(); Mtk3TextField = new javax.swing.JTextField(); Fis3TextField = new javax.swing.JTextField(); Bio3TextField = new javax.swing.JTextField(); Kim3TextField = new javax.swing.JTextField(); Eko3TextField = new javax.swing.JTextField(); Sej3TextField = new javax.swing.JTextField(); panel2 = new usu.widget.Panel(); label4 = new usu.widget.Label(); label7 = new usu.widget.Label(); labelPrediksiIPKSemester = new usu.widget.Label(); textBoxKeputusanIPK = new usu.widget.TextBox(); panelGlassStyle1 = new usu.widget.glass.PanelGlassStyle(); label10 = new usu.widget.Label(); jPanel1 = new javax.swing.JPanel(); jLabel3 = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel(); jLabel5 = new javax.swing.JLabel(); PrediksiButtonGlass = new usu.widget.ButtonGlass(); BackButtonGlass = new usu.widget.ButtonGlass(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE ); setTitle("Prediksi Data Personal"); panel1.setBackground(new java.awt.Color(51, 153, 255)); panel1.setBackgroundImageType(usu.widget.constan.BackgroundConstan .BACKGROUND_IMAGE_RIGHT_BOTTOM); label1.setText("Kelas XI Semester 1"); label1.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 18)); panel3.setBackground(new java.awt.Color(51, 153, 255)); labelKabupatenSekolah.setBackground(new java.awt.Color(204, 204, 255)); labelKabupatenSekolah.setText("Kabupaten Sekolah"); labelKabupatenSekolah.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 14)); labelKabupatenAsal.setText("Kabupaten Asal"); labelKabupatenAsal.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 14)); labelKateSMA.setText("Kategori SMA"); labelKateSMA.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 14)); labelJenisKelamin.setText("Jenis Kelamin"); labelJenisKelamin.setFont(new java.awt.Font("Arial Rounded
229
MT Bold", 0, 14)); jPanel12.setBackground(new java.awt.Color(51, 153, 255)); jComboBoxJK.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Laki_Laki", "Perempuan" })); jComboBoxKategoriSma.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Swasta", "Negeri" })); jComboBoxJurusan.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "SMU_MA_IPA", "SMU_MA_IPS", "SMU_MA_BUDAYA_BAHASA", "SMK_EKONOMI_SMEA_SMKK", "SMK_TEKNIK_STM", "SMF" })); jComboBoxKabAsal.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Aceh_Barat", "Aceh_Barat_Daya", "Aceh_Besar", "Aceh_Jaya", "Aceh_Selatan", "Aceh_Singkil", "Aceh_Tamiang", "Aceh_Tengah", "Aceh_Tenggara", "Aceh_Timur", "Aceh_Utara", "Administrasi_Jakarta_Barat", "Administrasi_Jakarta_Pusat", "Administrasi_Jakarta_Selatan", "Administrasi_Jakarta_Timur", "Administrasi_Jakarta_Utara", "Administrasi_Kepulauan_Seribu", "Agam", "Alor", "Ambon", "Asahan", "Asmat", "Badung", "Balangan", "Balikpapan", "Bandar_Lampung", "Banda_Aceh", "Bandung", "Bandung_Barat", "Banggai", "Banggai_Kepulauan", "Bangka", "Bangkalan", "Bangka_Barat", "Bangka_Selatan", "Bangka_Tengah", "Bangli", "Banjar", "Banjarbaru", "Banjarmasin", "Banjarnegara", "Bantaeng", "Bantul", "Banyuasin", "Banyumas", "Banyuwangi", "Barito_Kuala", "Barito_Selatan", "Barito_Timur", "Barito_Utara", "Barru", "Batam", "Batang", "Batang_Hari", "Batu", "Batu_Bara", "Bau_Bau", "Bekasi", "Belitung", "Belitung_Timur", "Belu", "Bener_Meriah", "Bengkalis", "Bengkayang", "Bengkulu", "Bengkulu_Selatan", "Bengkulu_Tengah", "Bengkulu_Utara", "Benteng", "Berau", "Biak_Numfor", "Bima", "Binjai", "Bintan", "Bireuen", "Bitung", "Blitar", "Blora", "Boalemo", "Bogor", "Bojonegoro", "Bolaang_Mongondow", "Bolaang_Mongondow_Selatan", "Bolaang_Mongondow_Timur", "Bolaang_Mongondow_Utara", "Bombana", "Bondowoso", "Bone", "Bone_Bolango", "Bontang", "Boven_Digoel", "Boyolali", "Brebes", "Bukittinggi", "Buleleng", "Bulukumba", "Bulungan", "Bungo", "Buol", "Buru", "Buru_Selatan", "Buton", "Buton_Utara", "Ciamis", "Cianjur", "Cilacap", "Cilegon", "Cimahi", "Cirebon", "Dairi", "Deiyai", "Deli_Serdang", "Demak", "Denpasar", "Depok", "Dharmasraya", "Dogiyai", "Dompu", "Donggala", "Dumai", "Empat_Lawang", "Ende", "Enrekang", "Fakfak", "Flores_Timur", "Garut", "Gayo_Lues", "Gianyar", "Gorontalo", "Gorontalo_Utara", "Gowa", "Gresik", "Grobogan", "Gunung_Kidul", "Gunung_Mas", "Gunung_Sitoli", "Halmahera_Barat", "Halmahera_Selatan", "Halmahera_Tengah", "Halmahera_Timur", "Halmahera_Utara", "Hulu_Sungai_Selatan", "Hulu_Sungai_Tengah", "Hulu_Sungai_Utara", "Humbang_Hasundutan", "Indragiri_Hilir", "Indragiri_Hulu", "Indramayu", "Intan_Jaya", "Jambi", "Jayapura", "Jayawijaya", "Jember", "Jembrana", "Jeneponto", "Jepara", "Jombang", "Kaimana", "Kampar", "Kapuas", "Kapuas_Hulu",
230
"Karanganyar", "Karangasem", "Karawang", "Karimun", "Karo", "Katingan", "Kaur", "Kayong_Utara", "Kebumen", "Kediri", "Keerom", "Kendal", "Kendari", "Kepahiang", "Kepulauan_Anambas", "Kepulauan_Aru", "Kepulauan_Mentawai", "Kepulauan_Meranti", "Kepulauan_Sangihe", "Kepulauan_Selayar", "Kepulauan_Siau_Tagulandang_Biaro", "Kepulauan_Sula", "Kepulauan_Talaud", "Kepulauan_Yapen", "Kerinci", "Ketapang", "Klaten", "Klungkung", "Kolaka", "Kolaka_Utara", "Konawe", "Konawe_Selatan", "Konawe_Utara", "Kotabaru", "Kotamobagu", "Kotawaringin_Barat", "Kotawaringin_Timur", "Kuantan_Singingi", "Kubu_Raya", "Kudus", "Kulon_Progo", "Kuningan", "Kupang", "Kutai_Barat", "Kutai_Kartanegara", "Kutai_Timur", "Labuhanbatu", "Labuhanbatu_Selatan", "Labuhanbatu_Utara", "Lahat", "Lamandau", "Lamongan", "Lampung_Barat", "Lampung_Selatan", "Lampung_Tengah", "Lampung_Timur", "Lampung_Utara", "Landak", "Langkat", "Langsa", "Lanny_Jaya", "Lebak", "Lebong", "Lembata", "Lhokseumawe", "Lima_Puluh_Kota", "Lingga", "Lombok_Barat", "Lombok_Tengah", "Lombok_Timur", "Lombok_Utara", "Lubuklinggau", "Lumajang", "Luwu", "Luwu_Timur", "Luwu_Utara", "Madiun", "Magelang", "Magetan", "Majalengka", "Majene", "Makassar", "Malang", "Malinau", "Maluku_Barat_Daya", "Maluku_Tengah", "Maluku_Tenggara", "Maluku_Tenggara_Barat", "Mamasa", "Mamberamo_Raya", "Mamberamo_Tengah", "Mamuju", "Mamuju_Utara", "Manado", "Mandailing_Natal", "Manggarai", "Manggarai_Barat", "Manggarai_Timur", "Manokwari", "Mappi", "Maros", "Mataram", "Maybrat", "Medan", "Melawi", "Merangin", "Merauke", "Mesuji", "Metro", "Mimika", "Minahasa", "Minahasa_Selatan", "Minahasa_Tenggara", "Minahasa_Utara", "Mojokerto", "Morowali", "Muara_Enim", "Muaro_Jambi", "Mukomuko", "Muna", "Murung_Raya", "Musi_Banyuasin", "Musi_Rawas", "Nabire", "Nagan_Raya", "Nagekeo", "Natuna", "Nduga", "Ngada", "Nganjuk", "Ngawi", "Nias", "Nias_Barat", "Nias_Selatan", "Nias_Utara", "Nunukan", "Ogan_Ilir", "Ogan_Komering_Ilir", "Ogan_Komering_Ulu", "Ogan_Komering_Ulu_Selatan", "Ogan_Komering_Ulu_Timur", "Pacitan", "Padang", "Padangpanjang", "Padang_Lawas", "Padang_Lawas_Utara", "Padang_Pariaman", "Padang_Sidempuan", "Pagar_Alam", "Pakpak_Bharat", "Palangka_Raya", "Palembang", "Palopo", "Palu", "Pamekasan", "Pandeglang", "Pangkajene_dan_Kepulauan", "Pangkal_Pinang", "Paniai", "Parepare", "Pariaman", "Parigi_Moutong", "Pasaman", "Pasaman_Barat", "Paser", "Pasuruan", "Pati", "Payakumbuh", "Pegunungan_Bintang", "Pekalongan", "Pekanbaru", "Pelalawan", "Pemalang", "Pematangsiantar", "Penajam_Paser_Utara", "Pesawaran", "Pesisir_Selatan", "Pidie", "Pidie_Jaya", "Pinrang", "Pohuwato", "Polewali_Mandar", "Ponorogo", "Pontianak", "Poso", "Prabumulih", "Pringsewu", "Probolinggo", "Pulang_Pisau", "Pulau_Morotai", "Puncak", "Puncak_Jaya", "Purbalingga", "Purwakarta", "Purworejo", "Raja_Ampat", "Rejang_Lebong", "Rembang", "Rokan_Hilir", "Rokan_Hulu", "Rote_Ndao", "Sabang", "Sabu_Raijua", "Salatiga", "Samarinda", "Sambas", "Samosir", "Sampang", "Sanggau", "Sarmi", "Sarolangun", "Sawahlunto", "Sekadau", "Seluma", "Semarang", "Seram_Bagian_Barat", "Seram_Bagian_Timur", "Serang", "Serdang_Bedagai", "Seruyan", "Siak", "Sibolga", "Sidenreng_Rappang", "Sidoarjo", "Sigi", "Sijunjung", "Sikka", "Simalungun", "Simeulue", "Singkawang", "Sinjai", "Sintang", "Situbondo", "Sleman", "Solok", "Solok_Selatan", "Soppeng",
231
"Sorong", "Sorong_Selatan", "Sragen", "Subang", "Subulussalam", "Sukabumi", "Sukamara", "Sukoharjo", "Sumbawa", "Sumbawa_Barat", "Sumba_Barat", "Sumba_Barat_Daya", "Sumba_Tengah", "Sumba_Timur", "Sumedang", "Sumenep", "Sungai_Penuh", "Supiori", "Surabaya", "Surakarta", "Tabalong", "Tabanan", "Takalar", "Tambrauw", "Tanah_Bumbu", "Tanah_Datar", "Tanah_Laut", "Tana_Tidung", "Tana_Toraja", "Tangerang", "Tangerang_Selatan", "Tanggamus", "Tanjung_Balai", "Tanjung_Jabung_Barat", "Tanjung_Jabung_Timur", "Tanjung_Pinang", "Tapanuli_Selatan", "Tapanuli_Tengah", "Tapanuli_Utara", "Tapin", "Tarakan", "Tasikmalaya", "Tebing_Tinggi", "Tebo", "Tegal", "Teluk_Bintuni", "Teluk_Wondama", "Temanggung", "Ternate", "Tidore_Kepulauan", "Timor_Tengah_Selatan", "Timor_Tengah_Utara", "Toba_Samosir", "Tojo_Una_Una", "Tolikara", "Toli_Toli", "Tomohon", "Toraja_Utara", "Trenggalek", "Tual", "Tuban", "Tulang_Bawang", "Tulang_Bawang_Barat", "Tulungagung", "Wajo", "Wakatobi", "Waropen", "Way_Kanan", "Wonogiri", "Wonosobo", "Yahukimo", "Yalimo", "Yogyakarta" })); jComboBoxKabSekolah.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Aceh_Barat", "Aceh_Barat_Daya", "Aceh_Besar", "Aceh_Jaya", "Aceh_Selatan", "Aceh_Singkil", "Aceh_Tamiang", "Aceh_Tengah", "Aceh_Tenggara", "Aceh_Timur", "Aceh_Utara", "Administrasi_Jakarta_Barat", "Administrasi_Jakarta_Pusat", "Administrasi_Jakarta_Selatan", "Administrasi_Jakarta_Timur", "Administrasi_Jakarta_Utara", "Administrasi_Kepulauan_Seribu", "Agam", "Alor", "Ambon", "Asahan", "Asmat", "Badung", "Balangan", "Balikpapan", "Bandar_Lampung", "Banda_Aceh", "Bandung", "Bandung_Barat", "Banggai", "Banggai_Kepulauan", "Bangka", "Bangkalan", "Bangka_Barat", "Bangka_Selatan", "Bangka_Tengah", "Bangli", "Banjar", "Banjarbaru", "Banjarmasin", "Banjarnegara", "Bantaeng", "Bantul", "Banyuasin", "Banyumas", "Banyuwangi", "Barito_Kuala", "Barito_Selatan", "Barito_Timur", "Barito_Utara", "Barru", "Batam", "Batang", "Batang_Hari", "Batu", "Batu_Bara", "Bau_Bau", "Bekasi", "Belitung", "Belitung_Timur", "Belu", "Bener_Meriah", "Bengkalis", "Bengkayang", "Bengkulu", "Bengkulu_Selatan", "Bengkulu_Tengah", "Bengkulu_Utara", "Benteng", "Berau", "Biak_Numfor", "Bima", "Binjai", "Bintan", "Bireuen", "Bitung", "Blitar", "Blora", "Boalemo", "Bogor", "Bojonegoro", "Bolaang_Mongondow", "Bolaang_Mongondow_Selatan", "Bolaang_Mongondow_Timur", "Bolaang_Mongondow_Utara", "Bombana", "Bondowoso", "Bone", "Bone_Bolango", "Bontang", "Boven_Digoel", "Boyolali", "Brebes", "Bukittinggi", "Buleleng", "Bulukumba", "Bulungan", "Bungo", "Buol", "Buru", "Buru_Selatan", "Buton", "Buton_Utara", "Ciamis", "Cianjur", "Cilacap", "Cilegon", "Cimahi", "Cirebon", "Dairi", "Deiyai", "Deli_Serdang", "Demak", "Denpasar", "Depok", "Dharmasraya", "Dogiyai", "Dompu", "Donggala", "Dumai", "Empat_Lawang", "Ende", "Enrekang", "Fakfak", "Flores_Timur", "Garut", "Gayo_Lues", "Gianyar", "Gorontalo", "Gorontalo_Utara", "Gowa", "Gresik", "Grobogan", "Gunung_Kidul", "Gunung_Mas", "Gunung_Sitoli", "Halmahera_Barat", "Halmahera_Selatan", "Halmahera_Tengah", "Halmahera_Timur", "Halmahera_Utara", "Hulu_Sungai_Selatan", "Hulu_Sungai_Tengah", "Hulu_Sungai_Utara", "Humbang_Hasundutan", "Indragiri_Hilir", "Indragiri_Hulu", "Indramayu", "Intan_Jaya", "Jambi", "Jayapura",
232
"Jayawijaya", "Jember", "Jembrana", "Jeneponto", "Jepara", "Jombang", "Kaimana", "Kampar", "Kapuas", "Kapuas_Hulu", "Karanganyar", "Karangasem", "Karawang", "Karimun", "Karo", "Katingan", "Kaur", "Kayong_Utara", "Kebumen", "Kediri", "Keerom", "Kendal", "Kendari", "Kepahiang", "Kepulauan_Anambas", "Kepulauan_Aru", "Kepulauan_Mentawai", "Kepulauan_Meranti", "Kepulauan_Sangihe", "Kepulauan_Selayar", "Kepulauan_Siau_Tagulandang_Biaro", "Kepulauan_Sula", "Kepulauan_Talaud", "Kepulauan_Yapen", "Kerinci", "Ketapang", "Klaten", "Klungkung", "Kolaka", "Kolaka_Utara", "Konawe", "Konawe_Selatan", "Konawe_Utara", "Kotabaru", "Kotamobagu", "Kotawaringin_Barat", "Kotawaringin_Timur", "Kuantan_Singingi", "Kubu_Raya", "Kudus", "Kulon_Progo", "Kuningan", "Kupang", "Kutai_Barat", "Kutai_Kartanegara", "Kutai_Timur", "Labuhanbatu", "Labuhanbatu_Selatan", "Labuhanbatu_Utara", "Lahat", "Lamandau", "Lamongan", "Lampung_Barat", "Lampung_Selatan", "Lampung_Tengah", "Lampung_Timur", "Lampung_Utara", "Landak", "Langkat", "Langsa", "Lanny_Jaya", "Lebak", "Lebong", "Lembata", "Lhokseumawe", "Lima_Puluh_Kota", "Lingga", "Lombok_Barat", "Lombok_Tengah", "Lombok_Timur", "Lombok_Utara", "Lubuklinggau", "Lumajang", "Luwu", "Luwu_Timur", "Luwu_Utara", "Madiun", "Magelang", "Magetan", "Majalengka", "Majene", "Makassar", "Malang", "Malinau", "Maluku_Barat_Daya", "Maluku_Tengah", "Maluku_Tenggara", "Maluku_Tenggara_Barat", "Mamasa", "Mamberamo_Raya", "Mamberamo_Tengah", "Mamuju", "Mamuju_Utara", "Manado", "Mandailing_Natal", "Manggarai", "Manggarai_Barat", "Manggarai_Timur", "Manokwari", "Mappi", "Maros", "Mataram", "Maybrat", "Medan", "Melawi", "Merangin", "Merauke", "Mesuji", "Metro", "Mimika", "Minahasa", "Minahasa_Selatan", "Minahasa_Tenggara", "Minahasa_Utara", "Mojokerto", "Morowali", "Muara_Enim", "Muaro_Jambi", "Mukomuko", "Muna", "Murung_Raya", "Musi_Banyuasin", "Musi_Rawas", "Nabire", "Nagan_Raya", "Nagekeo", "Natuna", "Nduga", "Ngada", "Nganjuk", "Ngawi", "Nias", "Nias_Barat", "Nias_Selatan", "Nias_Utara", "Nunukan", "Ogan_Ilir", "Ogan_Komering_Ilir", "Ogan_Komering_Ulu", "Ogan_Komering_Ulu_Selatan", "Ogan_Komering_Ulu_Timur", "Pacitan", "Padang", "Padangpanjang", "Padang_Lawas", "Padang_Lawas_Utara", "Padang_Pariaman", "Padang_Sidempuan", "Pagar_Alam", "Pakpak_Bharat", "Palangka_Raya", "Palembang", "Palopo", "Palu", "Pamekasan", "Pandeglang", "Pangkajene_dan_Kepulauan", "Pangkal_Pinang", "Paniai", "Parepare", "Pariaman", "Parigi_Moutong", "Pasaman", "Pasaman_Barat", "Paser", "Pasuruan", "Pati", "Payakumbuh", "Pegunungan_Bintang", "Pekalongan", "Pekanbaru", "Pelalawan", "Pemalang", "Pematangsiantar", "Penajam_Paser_Utara", "Pesawaran", "Pesisir_Selatan", "Pidie", "Pidie_Jaya", "Pinrang", "Pohuwato", "Polewali_Mandar", "Ponorogo", "Pontianak", "Poso", "Prabumulih", "Pringsewu", "Probolinggo", "Pulang_Pisau", "Pulau_Morotai", "Puncak", "Puncak_Jaya", "Purbalingga", "Purwakarta", "Purworejo", "Raja_Ampat", "Rejang_Lebong", "Rembang", "Rokan_Hilir", "Rokan_Hulu", "Rote_Ndao", "Sabang", "Sabu_Raijua", "Salatiga", "Samarinda", "Sambas", "Samosir", "Sampang", "Sanggau", "Sarmi", "Sarolangun", "Sawahlunto", "Sekadau", "Seluma", "Semarang", "Seram_Bagian_Barat", "Seram_Bagian_Timur", "Serang", "Serdang_Bedagai", "Seruyan", "Siak", "Sibolga", "Sidenreng_Rappang", "Sidoarjo", "Sigi", "Sijunjung", "Sikka",
233
"Simalungun", "Simeulue", "Singkawang", "Sinjai", "Sintang", "Situbondo", "Sleman", "Solok", "Solok_Selatan", "Soppeng", "Sorong", "Sorong_Selatan", "Sragen", "Subang", "Subulussalam", "Sukabumi", "Sukamara", "Sukoharjo", "Sumbawa", "Sumbawa_Barat", "Sumba_Barat", "Sumba_Barat_Daya", "Sumba_Tengah", "Sumba_Timur", "Sumedang", "Sumenep", "Sungai_Penuh", "Supiori", "Surabaya", "Surakarta", "Tabalong", "Tabanan", "Takalar", "Tambrauw", "Tanah_Bumbu", "Tanah_Datar", "Tanah_Laut", "Tana_Tidung", "Tana_Toraja", "Tangerang", "Tangerang_Selatan", "Tanggamus", "Tanjung_Balai", "Tanjung_Jabung_Barat", "Tanjung_Jabung_Timur", "Tanjung_Pinang", "Tapanuli_Selatan", "Tapanuli_Tengah", "Tapanuli_Utara", "Tapin", "Tarakan", "Tasikmalaya", "Tebing_Tinggi", "Tebo", "Tegal", "Teluk_Bintuni", "Teluk_Wondama", "Temanggung", "Ternate", "Tidore_Kepulauan", "Timor_Tengah_Selatan", "Timor_Tengah_Utara", "Toba_Samosir", "Tojo_Una_Una", "Tolikara", "Toli_Toli", "Tomohon", "Toraja_Utara", "Trenggalek", "Tual", "Tuban", "Tulang_Bawang", "Tulang_Bawang_Barat", "Tulungagung", "Wajo", "Wakatobi", "Waropen", "Way_Kanan", "Wonogiri", "Wonosobo", "Yahukimo", "Yalimo", "Yogyakarta" })); jComboBoxKabSekolah.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jComboBoxKabSekolahActionPerformed(evt); } }); javax.swing.GroupLayout jPanel12Layout = new javax.swing.GroupLayout(jPanel12); jPanel12.setLayout(jPanel12Layout); jPanel12Layout.setHorizontalGroup( jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignme nt.LEADING) .addGroup(jPanel12Layout.createSequentialGroup() .addGroup(jPanel12Layout.createParallelGroup(javax.swing.GroupLayo ut.Alignment.LEADING) .addComponent(jComboBoxJK, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jComboBoxJurusan, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jComboBoxKabAsal, javax.swing.GroupLayout.PREFERRED_SIZE, 183, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jComboBoxKabSekolah, javax.swing.GroupLayout.PREFERRED_SIZE, 181, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jComboBoxKategoriSma, javax.swing.GroupLayout.PREFERRED_SIZE, 71, javax.swing.GroupLayout.PREFERRED_SIZE))
234
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel12Layout.setVerticalGroup( jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignme nt.LEADING) .addGroup(jPanel12Layout.createSequentialGroup() .addComponent(jComboBoxJK, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELA TED) .addComponent(jComboBoxKategoriSma, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(11, 11, 11) .addComponent(jComboBoxJurusan, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELA TED) .addComponent(jComboBoxKabAsal, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELA TED) .addComponent(jComboBoxKabSekolah, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); labelJurSMA.setText("Jurusan SMA"); labelJurSMA.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 14)); javax.swing.GroupLayout panel3Layout = new javax.swing.GroupLayout(panel3); panel3.setLayout(panel3Layout); panel3Layout.setHorizontalGroup( panel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment .LEADING) .addGroup(panel3Layout.createSequentialGroup()
235
.addGroup(panel3Layout.createParallelGroup(javax.swing.GroupLayout .Alignment.LEADING) .addComponent(labelKabupatenSekolah, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(labelJenisKelamin, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(labelKateSMA, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(labelJurSMA, javax.swing.GroupLayout.PREFERRED_SIZE, 98, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(labelKabupatenAsal, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(18, 18, 18) .addComponent(jPanel12, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); panel3Layout.setVerticalGroup( panel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment .LEADING) .addGroup(panel3Layout.createSequentialGroup() .addGap(20, 20, 20) .addComponent(labelJenisKelamin, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(13, 13, 13) .addComponent(labelKateSMA, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELA TED) .addComponent(labelJurSMA, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELA TED) .addComponent(labelKabupatenAsal,
236
javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(labelKabupatenSekolah, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panel3Layout.createSequentialGroup() .addContainerGap(16, Short.MAX_VALUE) .addComponent(jPanel12, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) ); label2.setText("Kelas XII Semester 1"); label2.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 18)); label3.setText("Kelas XI Semester 2"); label3.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 18)); panel8.setBackground(new java.awt.Color(51, 153, 255)); jPanel6.setBackground(new java.awt.Color(51, 153, 255)); Bing1TextField.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { Bing1TextFieldKeyReleased(evt); } }); Mtk1TextField.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { Mtk1TextFieldKeyReleased(evt); } }); Fis1TextField.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { Fis1TextFieldKeyReleased(evt); } }); Bio1TextField.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { Bio1TextFieldKeyReleased(evt); }
237
}); Kim1TextField.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { Kim1TextFieldKeyReleased(evt); } }); Eko1TextField.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { Eko1TextFieldKeyReleased(evt); } }); Bindo1TextField.addKeyListener(new java.awt.event.KeyAdapter() { public void keyPressed(java.awt.event.KeyEvent evt) { Bindo1TextFieldKeyPressed(evt); } public void keyReleased(java.awt.event.KeyEvent evt) { Bindo1TextFieldKeyReleased(evt); } }); Sej1TextField.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { Sej1TextFieldKeyReleased(evt); } }); javax.swing.GroupLayout jPanel6Layout = new javax.swing.GroupLayout(jPanel6); jPanel6.setLayout(jPanel6Layout); jPanel6Layout.setHorizontalGroup( jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.LEADING) .addComponent(Sej1TextField, javax.swing.GroupLayout.DEFAULT_SIZE, 45, Short.MAX_VALUE) .addComponent(Eko1TextField, javax.swing.GroupLayout.DEFAULT_SIZE, 45, Short.MAX_VALUE) .addComponent(Kim1TextField, javax.swing.GroupLayout.DEFAULT_SIZE, 45, Short.MAX_VALUE) .addComponent(Bio1TextField, javax.swing.GroupLayout.DEFAULT_SIZE, 45, Short.MAX_VALUE) .addComponent(Fis1TextField, javax.swing.GroupLayout.DEFAULT_SIZE, 45, Short.MAX_VALUE) .addComponent(Mtk1TextField, javax.swing.GroupLayout.DEFAULT_SIZE, 45, Short.MAX_VALUE) .addComponent(Bing1TextField, javax.swing.GroupLayout.DEFAULT_SIZE, 45, Short.MAX_VALUE) .addComponent(Bindo1TextField, javax.swing.GroupLayout.DEFAULT_SIZE, 45, Short.MAX_VALUE)
238
); jPanel6Layout.setVerticalGroup( jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.LEADING) .addGroup(jPanel6Layout.createSequentialGroup() .addComponent(Bindo1TextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELA TED) .addComponent(Bing1TextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(13, 13, 13) .addComponent(Mtk1TextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELA TED) .addComponent(Fis1TextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(13, 13, 13) .addComponent(Bio1TextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELA TED) .addComponent(Kim1TextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(13, 13, 13) .addComponent(Eko1TextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELA TED) .addComponent(Sej1TextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
239
); labelBindo1.setText("Bahasa Indonesia"); labelBindo1.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 14)); labelBing1.setText("Bahasa Inggris"); labelBing1.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 14)); labelMtk1.setText("Matematika"); labelMtk1.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 14)); labelFisika1.setText("Fisika"); labelFisika1.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 14)); labelBio1.setText("Biologi"); labelBio1.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 14)); labelSejarah1.setText("Sejarah"); labelSejarah1.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 14)); labelKimia1.setText("Kimia"); labelKimia1.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 14)); labelEko1.setText("Ekonomi"); labelEko1.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 14)); javax.swing.GroupLayout panel8Layout = new javax.swing.GroupLayout(panel8); panel8.setLayout(panel8Layout); panel8Layout.setHorizontalGroup( panel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment .LEADING) .addGroup(panel8Layout.createSequentialGroup() .addContainerGap() .addGroup(panel8Layout.createParallelGroup(javax.swing.GroupLayout .Alignment.LEADING) .addComponent(labelKimia1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(panel8Layout.createParallelGroup(javax.swing.GroupLayout .Alignment.TRAILING, false) .addComponent(labelSejarah1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE,
240
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(labelBing1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(labelBindo1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(labelMtk1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(labelEko1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(labelBio1, javax.swing.GroupLayout.PREFERRED_SIZE, 65, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(labelFisika1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(16, 16, 16) .addComponent(jPanel6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(30, 30, 30)) ); panel8Layout.setVerticalGroup( panel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment .LEADING) .addGroup(panel8Layout.createSequentialGroup() .addContainerGap() .addGroup(panel8Layout.createParallelGroup(javax.swing.GroupLayout .Alignment.LEADING) .addGroup(panel8Layout.createSequentialGroup() .addComponent(labelBindo1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELA TED) .addComponent(labelBing1, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(13, 13, 13) .addComponent(labelMtk1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
241
javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(labelFisika1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(13, 13, 13) .addComponent(labelBio1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELA TED) .addComponent(labelKimia1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELA TED) .addComponent(labelEko1, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(13, 13, 13) .addComponent(labelSejarah1, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(jPanel6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap()) ); label6.setText("Data PMB Siswa"); label6.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 17)); panel9.setBackground(new java.awt.Color(51, 153, 255)); labelSejarah2.setText("Sejarah"); labelSejarah2.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 14)); labelEko2.setText("Ekonomi"); labelEko2.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 14)); labelKimia2.setText("Kimia"); labelKimia2.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 14)); labelBio2.setText("Biologi"); labelBio2.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 14));
242
labelFisika2.setText("Fisika"); labelFisika2.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 14)); labelMtk2.setText("Matematika"); labelMtk2.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 14)); labelBing2.setText("Bahasa Inggris"); labelBing2.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 14)); labelBindo2.setText("Bahasa Indonesia"); labelBindo2.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 14)); jPanel9.setBackground(new java.awt.Color(51, 153, 255)); Bindo2TextField.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { Bindo2TextFieldKeyReleased(evt); } }); Bing2TextField.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { Bing2TextFieldKeyReleased(evt); } }); Fis2TextField.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { Fis2TextFieldKeyReleased(evt); } }); Bio2TextField.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { Bio2TextFieldActionPerformed(evt); } }); Bio2TextField.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { Bio2TextFieldKeyReleased(evt); } }); Kim2TextField.addKeyListener(new java.awt.event.KeyAdapter() {
243
public void keyReleased(java.awt.event.KeyEvent evt) { Kim2TextFieldKeyReleased(evt); } }); Eko2TextField.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { Eko2TextFieldKeyReleased(evt); } }); Sej2TextField.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { Sej2TextFieldKeyReleased(evt); } }); Mtk2TextField.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { Mtk2TextFieldKeyReleased(evt); } }); javax.swing.GroupLayout jPanel9Layout = new javax.swing.GroupLayout(jPanel9); jPanel9.setLayout(jPanel9Layout); jPanel9Layout.setHorizontalGroup( jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.LEADING) .addComponent(Bindo2TextField, javax.swing.GroupLayout.DEFAULT_SIZE, 44, Short.MAX_VALUE) .addComponent(Bing2TextField, javax.swing.GroupLayout.DEFAULT_SIZE, 44, Short.MAX_VALUE) .addComponent(Mtk2TextField, javax.swing.GroupLayout.DEFAULT_SIZE, 44, Short.MAX_VALUE) .addComponent(Fis2TextField, javax.swing.GroupLayout.DEFAULT_SIZE, 44, Short.MAX_VALUE) .addComponent(Bio2TextField, javax.swing.GroupLayout.DEFAULT_SIZE, 44, Short.MAX_VALUE) .addComponent(Kim2TextField, javax.swing.GroupLayout.DEFAULT_SIZE, 44, Short.MAX_VALUE) .addComponent(Eko2TextField, javax.swing.GroupLayout.DEFAULT_SIZE, 44, Short.MAX_VALUE) .addComponent(Sej2TextField, javax.swing.GroupLayout.DEFAULT_SIZE, 44, Short.MAX_VALUE) ); jPanel9Layout.setVerticalGroup( jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.LEADING) .addGroup(jPanel9Layout.createSequentialGroup() .addComponent(Bindo2TextField,
244
javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATE D, 15, Short.MAX_VALUE) .addComponent(Bing2TextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELA TED) .addComponent(Mtk2TextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELA TED) .addComponent(Fis2TextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELA TED) .addComponent(Bio2TextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELA TED) .addComponent(Kim2TextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELA TED) .addComponent(Eko2TextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELA TED) .addComponent(Sej2TextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(17, 17, 17)) ); javax.swing.GroupLayout panel9Layout = new
245
javax.swing.GroupLayout(panel9); panel9.setLayout(panel9Layout); panel9Layout.setHorizontalGroup( panel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment .LEADING) .addGroup(panel9Layout.createSequentialGroup() .addContainerGap() .addGroup(panel9Layout.createParallelGroup(javax.swing.GroupLayout .Alignment.LEADING) .addComponent(labelBindo2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(labelBing2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(labelMtk2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(labelFisika2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(labelBio2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(labelKimia2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(labelEko2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(labelSejarah2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(18, 18, 18) .addComponent(jPanel9, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(26, Short.MAX_VALUE)) ); panel9Layout.setVerticalGroup( panel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment .LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panel9Layout.createSequentialGroup()
246
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(panel9Layout.createParallelGroup(javax.swing.GroupLayout .Alignment.LEADING) .addComponent(jPanel9, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(panel9Layout.createSequentialGroup() .addComponent(labelBindo2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(labelBing2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(16, 16, 16) .addComponent(labelMtk2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(16, 16, 16) .addComponent(labelFisika2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELA TED) .addComponent(labelBio2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(labelKimia2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(16, 16, 16) .addComponent(labelEko2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELA TED) .addComponent(labelSejarah2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addGap(30, 30, 30)) );
247
panel10.setBackground(new java.awt.Color(51, 153, 255)); labelSejarah3.setText("Sejarah"); labelSejarah3.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 14)); labelEko3.setText("Ekonomi"); labelEko3.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 14)); labelKimia3.setText("Kimia"); labelKimia3.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 14)); labelBio3.setText("Biologi"); labelBio3.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 14)); labelFisika3.setText("Fisika"); labelFisika3.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 14)); labelMtk3.setText("Matematika"); labelMtk3.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 14)); labelBing3.setText("Bahasa Inggris"); labelBing3.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 14)); labelBindo3.setText("Bahasa Indonesia"); labelBindo3.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 14)); jPanel10.setBackground(new java.awt.Color(51, 153, 255)); Bindo3TextField.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { Bindo3TextFieldKeyReleased(evt); } }); Bing3TextField.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { Bing3TextFieldKeyReleased(evt); } }); Mtk3TextField.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { Mtk3TextFieldActionPerformed(evt);
248
} }); Mtk3TextField.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { Mtk3TextFieldKeyReleased(evt); } }); Fis3TextField.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { Fis3TextFieldKeyReleased(evt); } }); Bio3TextField.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { Bio3TextFieldKeyReleased(evt); } }); Kim3TextField.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { Kim3TextFieldKeyReleased(evt); } }); Eko3TextField.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { Eko3TextFieldActionPerformed(evt); } }); Eko3TextField.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { Eko3TextFieldKeyReleased(evt); } }); Sej3TextField.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { Sej3TextFieldKeyReleased(evt); } }); javax.swing.GroupLayout jPanel10Layout = new javax.swing.GroupLayout(jPanel10); jPanel10.setLayout(jPanel10Layout); jPanel10Layout.setHorizontalGroup(
249
jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignme nt.LEADING) .addComponent(Sej3TextField, javax.swing.GroupLayout.DEFAULT_SIZE, 46, Short.MAX_VALUE) .addComponent(Eko3TextField, javax.swing.GroupLayout.DEFAULT_SIZE, 46, Short.MAX_VALUE) .addComponent(Kim3TextField, javax.swing.GroupLayout.DEFAULT_SIZE, 46, Short.MAX_VALUE) .addComponent(Bio3TextField, javax.swing.GroupLayout.DEFAULT_SIZE, 46, Short.MAX_VALUE) .addComponent(Fis3TextField, javax.swing.GroupLayout.DEFAULT_SIZE, 46, Short.MAX_VALUE) .addComponent(Mtk3TextField, javax.swing.GroupLayout.DEFAULT_SIZE, 46, Short.MAX_VALUE) .addComponent(Bing3TextField, javax.swing.GroupLayout.DEFAULT_SIZE, 46, Short.MAX_VALUE) .addComponent(Bindo3TextField, javax.swing.GroupLayout.DEFAULT_SIZE, 46, Short.MAX_VALUE) ); jPanel10Layout.setVerticalGroup( jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignme nt.LEADING) .addGroup(jPanel10Layout.createSequentialGroup() .addComponent(Bindo3TextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELA TED) .addComponent(Bing3TextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(11, 11, 11) .addComponent(Mtk3TextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELA TED) .addComponent(Fis3TextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELA TED) .addComponent(Bio3TextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELA
250
TED) .addComponent(Kim3TextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(Eko3TextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELA TED) .addComponent(Sej3TextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(19, Short.MAX_VALUE)) ); javax.swing.GroupLayout panel10Layout = new javax.swing.GroupLayout(panel10); panel10.setLayout(panel10Layout); panel10Layout.setHorizontalGroup( panel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.LEADING) .addGroup(panel10Layout.createSequentialGroup() .addContainerGap() .addGroup(panel10Layout.createParallelGroup(javax.swing.GroupLayou t.Alignment.LEADING) .addComponent(labelBindo3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(labelBing3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(labelMtk3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(labelSejarah3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(labelEko3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(labelKimia3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
251
.addComponent(labelBio3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(labelFisika3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(18, 18, 18) .addComponent(jPanel10, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(22, 22, 22)) ); panel10Layout.setVerticalGroup( panel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.LEADING) .addGroup(panel10Layout.createSequentialGroup() .addContainerGap() .addGroup(panel10Layout.createParallelGroup(javax.swing.GroupLayou t.Alignment.LEADING) .addComponent(jPanel10, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(panel10Layout.createSequentialGroup() .addComponent(labelBindo3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(16, 16, 16) .addComponent(labelBing3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(11, 11, 11) .addComponent(labelMtk3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(15, 15, 15) .addComponent(labelFisika3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(labelBio3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(labelKimia3,
252
javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(labelEko3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELA TED) .addComponent(labelSejarah3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addContainerGap()) ); panel2.setBackground(new java.awt.Color(51, 153, 255)); panel2.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(255, 255, 255), 2)); label4.setText("Hasil Prediksi"); label4.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 18)); label7.setText("IPK"); label7.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 14)); labelPrediksiIPKSemester.setText(" "); labelPrediksiIPKSemester.setFont(new java.awt.Font("Tahoma", 0, 12)); javax.swing.GroupLayout panel2Layout = new javax.swing.GroupLayout(panel2); panel2.setLayout(panel2Layout); panel2Layout.setHorizontalGroup( panel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment .LEADING) .addGroup(panel2Layout.createSequentialGroup() .addContainerGap() .addGroup(panel2Layout.createParallelGroup(javax.swing.GroupLayout .Alignment.LEADING) .addGroup(panel2Layout.createSequentialGroup() .addComponent(label7, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(4, 4, 4) .addComponent(labelPrediksiIPKSemester, javax.swing.GroupLayout.DEFAULT_SIZE, 95, Short.MAX_VALUE)
253
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATE D) .addComponent(textBoxKeputusanIPK, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(35, 35, 35)) .addGroup(panel2Layout.createSequentialGroup() .addComponent(label4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(70, Short.MAX_VALUE)))) ); panel2Layout.setVerticalGroup( panel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment .LEADING) .addGroup(panel2Layout.createSequentialGroup() .addGap(6, 6, 6) .addComponent(label4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELA TED) .addGroup(panel2Layout.createParallelGroup(javax.swing.GroupLayout .Alignment.TRAILING) .addComponent(textBoxKeputusanIPK, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(labelPrediksiIPKSemester, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 18, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(label7, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 16, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(21, Short.MAX_VALUE)) ); panelGlassStyle1.setBackground(new java.awt.Color(51, 153, 255)); panelGlassStyle1.setAlignmentY(0.2F); label10.setText(".: PREDIKSI PERSONAL :."); label10.setFont(new java.awt.Font("Tahoma", 1, 24)); javax.swing.GroupLayout panelGlassStyle1Layout = new javax.swing.GroupLayout(panelGlassStyle1); panelGlassStyle1.setLayout(panelGlassStyle1Layout); panelGlassStyle1Layout.setHorizontalGroup(
254
panelGlassStyle1Layout.createParallelGroup(javax.swing.GroupLayout .Alignment.LEADING) .addGroup(panelGlassStyle1Layout.createSequentialGroup() .addGap(480, 480, 480) .addComponent(label10, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(433, Short.MAX_VALUE)) ); panelGlassStyle1Layout.setVerticalGroup( panelGlassStyle1Layout.createParallelGroup(javax.swing.GroupLayout .Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelGlassStyle1Layout.createSequentialGroup() .addContainerGap(77, Short.MAX_VALUE) .addComponent(label10, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(22, 22, 22)) ); jPanel1.setBackground(new java.awt.Color(51, 153, 255)); jLabel3.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 14)); jLabel3.setText("Fakultas Sains dan Teknologi"); jLabel4.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 14)); jLabel4.setText("Universitas Sanata Dharma Yogyakarta"); jLabel5.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 14)); jLabel5.setText("FLorensia Dwinta ©2011"); javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() .addContainerGap(473, Short.MAX_VALUE) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayou t.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addGap(8, 8, 8)
255
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayou t.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addGap(26, 26, 26) .addComponent(jLabel3)) .addGroup(jPanel1Layout.createSequentialGroup() .addGap(37, 37, 37) .addComponent(jLabel5)))) .addComponent(jLabel4)) .addGap(94, 94, 94)) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel3) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATE D) .addComponent(jLabel4) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATE D) .addComponent(jLabel5) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); PrediksiButtonGlass.setIcon(new javax.swing.ImageIcon(getClass().getResource("/SPPA/resources/pred iksi.png"))); // NOI18N PrediksiButtonGlass.setText("Prediksi"); PrediksiButtonGlass.setFont(new java.awt.Font("Comic Sans MS", 1, 14)); PrediksiButtonGlass.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { PrediksiButtonGlassActionPerformed(evt); } }); BackButtonGlass.setIcon(new javax.swing.ImageIcon(getClass().getResource("/SPPA/resources/undo .png"))); // NOI18N BackButtonGlass.setText("Kembali"); BackButtonGlass.setFont(new java.awt.Font("Comic Sans MS", 1, 14)); BackButtonGlass.addActionListener(new java.awt.event.ActionListener() {
256
public void actionPerformed(java.awt.event.ActionEvent evt) { BackButtonGlassActionPerformed(evt); } }); javax.swing.GroupLayout panel1Layout = new javax.swing.GroupLayout(panel1); panel1.setLayout(panel1Layout); panel1Layout.setHorizontalGroup( panel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment .LEADING) .addGroup(panel1Layout.createSequentialGroup() .addGap(67, 67, 67) .addGroup(panel1Layout.createParallelGroup(javax.swing.GroupLayout .Alignment.LEADING) .addGroup(panel1Layout.createSequentialGroup() .addGap(17, 17, 17) .addComponent(label1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(panel8, javax.swing.GroupLayout.PREFERRED_SIZE, 220, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(panel1Layout.createParallelGroup(javax.swing.GroupLayout .Alignment.LEADING) .addGroup(panel1Layout.createSequentialGroup() .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATE D) .addComponent(panel9, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(panel1Layout.createSequentialGroup() .addGap(17, 17, 17) .addComponent(label3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addGroup(panel1Layout.createParallelGroup(javax.swing.GroupLayout .Alignment.LEADING) .addGroup(panel1Layout.createSequentialGroup() .addGap(18, 18, 18) .addComponent(panel10, javax.swing.GroupLayout.PREFERRED_SIZE, 215, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(panel1Layout.createSequentialGroup() .addGap(26, 26, 26) .addComponent(label2, javax.swing.GroupLayout.PREFERRED_SIZE,
257
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addGroup(panel1Layout.createParallelGroup(javax.swing.GroupLayout .Alignment.LEADING) .addGroup(panel1Layout.createSequentialGroup() .addGap(75, 75, 75) .addGroup(panel1Layout.createParallelGroup(javax.swing.GroupLayout .Alignment.LEADING) .addComponent(panel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(label6, javax.swing.GroupLayout.PREFERRED_SIZE, 149, javax.swing.GroupLayout.PREFERRED_SIZE))) .addGroup(panel1Layout.createSequentialGroup() .addGap(169, 169, 169) .addComponent(panel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addContainerGap(51, Short.MAX_VALUE)) .addComponent(panelGlassStyle1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(panel1Layout.createSequentialGroup() .addContainerGap() .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(378, Short.MAX_VALUE)) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panel1Layout.createSequentialGroup() .addContainerGap(913, Short.MAX_VALUE) .addComponent(PrediksiButtonGlass, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATE D) .addComponent(BackButtonGlass, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(75, 75, 75)) ); panel1Layout.setVerticalGroup( panel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment .LEADING) .addGroup(panel1Layout.createSequentialGroup() .addComponent(panelGlassStyle1,
258
javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(40, 40, 40) .addGroup(panel1Layout.createParallelGroup(javax.swing.GroupLayout .Alignment.LEADING) .addGroup(panel1Layout.createParallelGroup(javax.swing.GroupLayout .Alignment.TRAILING) .addGroup(javax.swing.GroupLayout.Alignment.LEADING, panel1Layout.createSequentialGroup() .addComponent(label1, javax.swing.GroupLayout.PREFERRED_SIZE, 19, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(panel8, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(panel1Layout.createSequentialGroup() .addGroup(panel1Layout.createParallelGroup(javax.swing.GroupLayout .Alignment.BASELINE) .addComponent(label3, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(label2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(18, 18, 18) .addGroup(panel1Layout.createParallelGroup(javax.swing.GroupLayout .Alignment.LEADING) .addComponent(panel10, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(panel9, javax.swing.GroupLayout.PREFERRED_SIZE, 274, javax.swing.GroupLayout.PREFERRED_SIZE)))) .addGroup(panel1Layout.createSequentialGroup() .addGap(50, 50, 50) .addComponent(label6, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATE D) .addComponent(panel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
259
.addGap(18, 18, 18) .addComponent(panel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATE D, 47, Short.MAX_VALUE) .addGroup(panel1Layout.createParallelGroup(javax.swing.GroupLayout .Alignment.BASELINE) .addComponent(PrediksiButtonGlass, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(BackButtonGlass, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(5, 5, 5) .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) ); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI NG) .addComponent(panel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI NG) .addComponent(panel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) ); pack(); }// private void Bio2TextFieldActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: } private void
260
Mtk3TextFieldActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: } private void jComboBoxKabSekolahActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: } private void Eko3TextFieldActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: } private void PrediksiButtonGlassActionPerformed(java.awt.event.ActionEvent evt) { boolean cek = false; Bindo1TextField.getText(); Bindo2TextField.getText(); try { generateData(selectedSemester); Aturan prediksi = new Aturan(getDataset(), selectedProdi, selectedSemester); int i = Aturan.getRoot(selectedProdi, selectedSemester); System.out.println("id Root: " + i); prediksi.prosesPrediksi(i); if (prediksi.getIPK_Keputusan() != null) { textBoxKeputusanIPK.setText(prediksi.getIPK_Keputusan()); } else { JOptionPane.showMessageDialog(null, "Maaf Nilai anda tidak dapat kami prediksi"); } } catch (SQLException ex) { System.out.println("Error di prediksi button action: " + ex.getMessage()); } } private void BackButtonGlassActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: HomeSPPA viewTree = new HomeSPPA(selectedProdi, selectedSemester); viewTree.setVisible(true); this.dispose(); } private void Bindo1TextFieldKeyReleased(java.awt.event.KeyEvent evt) { // TODO add your handling code here:
261
if (Bindo1TextField.getText().length() != 0) { if (!Bindo1TextField.getText().matches("[a-z]")) { if (Double.parseDouble(Bindo1TextField.getText()) < 0) { JOptionPane.showMessageDialog(null, "Maaf, Nilai tidak boleh kurang dari 0 !"); } else if (Double.parseDouble(Bindo1TextField.getText()) > 10) { JOptionPane.showMessageDialog(null, "Maaf, Nilai tidak boleh lebih dari 10 !"); Bindo1TextField.setText(null); } } else { JOptionPane.showMessageDialog(null, "Kolom Harus diisi dengan angka"); Bindo1TextField.setText(null); } } else { JOptionPane.showMessageDialog(null, "Kolom Nilai Bahasa Indonesia Kelas XI semester 1 tidak boleh kosong!"); Bindo1TextField.requestFocus(); } } private void Bindo1TextFieldKeyPressed(java.awt.event.KeyEvent evt) { } private void Bing1TextFieldKeyReleased(java.awt.event.KeyEvent evt) { // TODO add your handling code here: if (Bing1TextField.getText().length() != 0) { if (!Bing1TextField.getText().matches("[a-z]")) { if (Double.parseDouble(Bing1TextField.getText()) < 0) { JOptionPane.showMessageDialog(null, "Maaf, Nilai tidak boleh kurang dari 0 !"); } else if (Double.parseDouble(Bing1TextField.getText()) > 10) { JOptionPane.showMessageDialog(null, "Maaf, Nilai tidak boleh lebih dari 10 !"); Bing1TextField.setText(null); } } else { JOptionPane.showMessageDialog(null, "Kolom Harus diisi dengan angka"); Bing1TextField.setText(null); } } else { JOptionPane.showMessageDialog(null, "Kolom Nilai Bahasa Inggris Kelas XI semester 1 tidak boleh kosong!"); Bing1TextField.requestFocus(); } }
262
private void Mtk1TextFieldKeyReleased(java.awt.event.KeyEvent evt) { if (Mtk1TextField.getText().length() != 0) { if (!Mtk1TextField.getText().matches("[a-z]")) { if (Double.parseDouble(Mtk1TextField.getText()) < 0) { JOptionPane.showMessageDialog(null, "Maaf, Nilai tidak boleh kurang dari 0 !"); } else if (Double.parseDouble(Mtk1TextField.getText()) > 10) { JOptionPane.showMessageDialog(null, "Maaf, Nilai tidak boleh lebih dari 10 !"); Mtk1TextField.setText(null); } } else { JOptionPane.showMessageDialog(null, "Kolom Harus diisi dengan angka"); Mtk1TextField.setText(null); } } else { JOptionPane.showMessageDialog(null, "Kolom Nilai Matematika Kelas XI semester 1 tidak boleh kosong!"); Mtk1TextField.requestFocus(); } } private void Fis1TextFieldKeyReleased(java.awt.event.KeyEvent evt) { if (Fis1TextField.getText().length() != 0) { if (!Fis1TextField.getText().matches("[a-z]")) { if (Double.parseDouble(Fis1TextField.getText()) < 0) { JOptionPane.showMessageDialog(null, "Maaf, Nilai tidak boleh kurang dari 0 !"); } else if (Double.parseDouble(Fis1TextField.getText()) > 10) { JOptionPane.showMessageDialog(null, "Maaf, Nilai tidak boleh lebih dari 10 !"); Fis1TextField.setText(null); } } else { JOptionPane.showMessageDialog(null, "Kolom Harus diisi dengan angka"); Fis1TextField.setText(null); } } else { JOptionPane.showMessageDialog(null, "Kolom Nilai Fisika Kelas XI semester 1 tidak boleh kosong!"); Fis1TextField.requestFocus(); } } private void Bio1TextFieldKeyReleased(java.awt.event.KeyEvent evt) { if (Bio1TextField.getText().length() != 0) { if (!Bio1TextField.getText().matches("[a-z]")) {
263
if (Double.parseDouble(Bio1TextField.getText()) < 0) { JOptionPane.showMessageDialog(null, "Maaf, Nilai tidak boleh kurang dari 0 !"); } else if (Double.parseDouble(Bio1TextField.getText()) > 10) { JOptionPane.showMessageDialog(null, "Maaf, Nilai tidak boleh lebih dari 10 !"); Bio1TextField.setText(null); } } else { JOptionPane.showMessageDialog(null, "Kolom Harus diisi dengan angka"); Bio1TextField.setText(null); } } else { JOptionPane.showMessageDialog(null, "Kolom Nilai Biologi Kelas XI semester 1 tidak boleh kosong!"); Bio1TextField.requestFocus(); } } private void Kim1TextFieldKeyReleased(java.awt.event.KeyEvent evt) { if (Kim1TextField.getText().length() != 0) { if (!Kim1TextField.getText().matches("[a-z]")) { if (Double.parseDouble(Kim1TextField.getText()) < 0) { JOptionPane.showMessageDialog(null, "Maaf, Nilai tidak boleh kurang dari 0 !"); } else if (Double.parseDouble(Kim1TextField.getText()) > 10) { JOptionPane.showMessageDialog(null, "Maaf, Nilai tidak boleh lebih dari 10 !"); Kim1TextField.setText(null); } } else { JOptionPane.showMessageDialog(null, "Kolom Harus diisi dengan angka"); Kim1TextField.setText(null); } } else { JOptionPane.showMessageDialog(null, "Kolom Nilai Kimia Kelas XI semester 1 tidak boleh kosong!"); Kim1TextField.requestFocus(); } } private void Eko1TextFieldKeyReleased(java.awt.event.KeyEvent evt) { if (Eko1TextField.getText().length() != 0) { if (!Eko1TextField.getText().matches("[a-z]")) { if (Double.parseDouble(Eko1TextField.getText()) < 0) { JOptionPane.showMessageDialog(null, "Maaf, Nilai tidak boleh kurang dari 0 !");
264
} else if (Double.parseDouble(Eko1TextField.getText()) > 10) { JOptionPane.showMessageDialog(null, "Maaf, Nilai tidak boleh lebih dari 10 !"); Eko1TextField.setText(null); } } else { JOptionPane.showMessageDialog(null, "Kolom Harus diisi dengan angka"); Eko1TextField.setText(null); } } else { JOptionPane.showMessageDialog(null, "Kolom Nilai Ekonomi Kelas XI semester 1 tidak boleh kosong!"); Eko1TextField.requestFocus(); } } private void Sej1TextFieldKeyReleased(java.awt.event.KeyEvent evt) { if (Sej1TextField.getText().length() != 0) { if (!Sej1TextField.getText().matches("[a-z]")) { if (Double.parseDouble(Sej1TextField.getText()) < 0) { JOptionPane.showMessageDialog(null, "Maaf, Nilai tidak boleh kurang dari 0 !"); } else if (Double.parseDouble(Sej1TextField.getText()) > 10) { JOptionPane.showMessageDialog(null, "Maaf, Nilai tidak boleh lebih dari 10 !"); Sej1TextField.setText(null); } } else { JOptionPane.showMessageDialog(null, "Kolom Harus diisi dengan angka"); Sej1TextField.setText(null); } } else { JOptionPane.showMessageDialog(null, "Kolom Nilai Sejarah Kelas XI semester 1 tidak boleh kosong!"); Sej1TextField.requestFocus(); } } private void Bindo2TextFieldKeyReleased(java.awt.event.KeyEvent evt) { if (Bindo2TextField.getText().length() != 0) { if (!Bindo2TextField.getText().matches("[a-z]")) { if (Double.parseDouble(Bindo2TextField.getText()) < 0) { JOptionPane.showMessageDialog(null, "Maaf, Nilai tidak boleh kurang dari 0 !"); } else if (Double.parseDouble(Bindo2TextField.getText()) > 10) { JOptionPane.showMessageDialog(null, "Maaf, Nilai tidak boleh lebih dari 10 !");
265
Bindo2TextField.setText(null); } } else { JOptionPane.showMessageDialog(null, "Kolom Harus diisi dengan angka"); Bindo2TextField.setText(null); } } else { JOptionPane.showMessageDialog(null, "Kolom Nilai Bahasa Indonesia Kelas XI semester 2 tidak boleh kosong!"); Bindo2TextField.requestFocus(); } } private void Bing2TextFieldKeyReleased(java.awt.event.KeyEvent evt) { if (Bing2TextField.getText().length() != 0) { if (!Bing2TextField.getText().matches("[a-z]")) { if (Double.parseDouble(Bing2TextField.getText()) < 0) { JOptionPane.showMessageDialog(null, "Maaf, Nilai tidak boleh kurang dari 0 !"); } else if (Double.parseDouble(Bing2TextField.getText()) > 10) { JOptionPane.showMessageDialog(null, "Maaf, Nilai tidak boleh lebih dari 10 !"); Bing2TextField.setText(null); } } else { JOptionPane.showMessageDialog(null, "Kolom Harus diisi dengan angka"); Bing2TextField.setText(null); } } else { JOptionPane.showMessageDialog(null, "Kolom Nilai Bahasa Inggris Kelas XI semester 2 tidak boleh kosong!"); Bing2TextField.requestFocus(); } } private void Mtk2TextFieldKeyReleased(java.awt.event.KeyEvent evt) { if (Mtk2TextField.getText().length() != 0) { if (!Mtk2TextField.getText().matches("[a-z]")) { if (Double.parseDouble(Mtk2TextField.getText()) < 0) { JOptionPane.showMessageDialog(null, "Maaf, Nilai tidak boleh kurang dari 0 !"); } else if (Double.parseDouble(Mtk2TextField.getText()) > 10) { JOptionPane.showMessageDialog(null, "Maaf, Nilai tidak boleh lebih dari 10 !"); Mtk2TextField.setText(null); } } else { JOptionPane.showMessageDialog(null, "Kolom Harus
266
diisi dengan angka"); Mtk2TextField.setText(null); } } else { JOptionPane.showMessageDialog(null, "Kolom Nilai Matematika Kelas XI semester 2 tidak boleh kosong!"); Mtk2TextField.requestFocus(); } } private void Fis2TextFieldKeyReleased(java.awt.event.KeyEvent evt) { if (Fis2TextField.getText().length() != 0) { if (!Fis2TextField.getText().matches("[a-z]")) { if (Double.parseDouble(Fis2TextField.getText()) < 0) { JOptionPane.showMessageDialog(null, "Maaf, Nilai tidak boleh kurang dari 0 !"); } else if (Double.parseDouble(Fis2TextField.getText()) > 10) { JOptionPane.showMessageDialog(null, "Maaf, Nilai tidak boleh lebih dari 10 !"); Fis2TextField.setText(null); } } else { JOptionPane.showMessageDialog(null, "Kolom Harus diisi dengan angka"); Fis2TextField.setText(null); } } else { JOptionPane.showMessageDialog(null, "Kolom Nilai Fisika Kelas XI semester 2 tidak boleh kosong!"); Fis2TextField.requestFocus(); } } private void Bio2TextFieldKeyReleased(java.awt.event.KeyEvent evt) { if (Bio2TextField.getText().length() != 0) { if (!Bio2TextField.getText().matches("[a-z]")) { if (Double.parseDouble(Bio2TextField.getText()) < 0) { JOptionPane.showMessageDialog(null, "Maaf, Nilai tidak boleh kurang dari 0 !"); } else if (Double.parseDouble(Bio2TextField.getText()) > 10) { JOptionPane.showMessageDialog(null, "Maaf, Nilai tidak boleh lebih dari 10 !"); Bio2TextField.setText(null); } } else { JOptionPane.showMessageDialog(null, "Kolom Harus diisi dengan angka"); Bio2TextField.setText(null); } } else {
267
JOptionPane.showMessageDialog(null, "Kolom Nilai Biologi Kelas XI semester 2 tidak boleh kosong!"); Bio2TextField.requestFocus(); } } private void Kim2TextFieldKeyReleased(java.awt.event.KeyEvent evt) { if (Kim2TextField.getText().length() != 0) { if (!Kim2TextField.getText().matches("[a-z]")) { if (Double.parseDouble(Kim2TextField.getText()) < 0) { JOptionPane.showMessageDialog(null, "Maaf, Nilai tidak boleh kurang dari 0 !"); } else if (Double.parseDouble(Kim2TextField.getText()) > 10) { JOptionPane.showMessageDialog(null, "Maaf, Nilai tidak boleh lebih dari 10 !"); Kim2TextField.setText(null); } } else { JOptionPane.showMessageDialog(null, "Kolom Harus diisi dengan angka"); Kim2TextField.setText(null); } } else { JOptionPane.showMessageDialog(null, "Kolom Nilai Kimia Kelas XI semester 2 tidak boleh kosong!"); Kim2TextField.requestFocus(); } } private void Eko2TextFieldKeyReleased(java.awt.event.KeyEvent evt) { if (Eko2TextField.getText().length() != 0) { if (!Eko2TextField.getText().matches("[a-z]")) { if (Double.parseDouble(Eko2TextField.getText()) < 0) { JOptionPane.showMessageDialog(null, "Maaf, Nilai tidak boleh kurang dari 0 !"); } else if (Double.parseDouble(Eko2TextField.getText()) > 10) { JOptionPane.showMessageDialog(null, "Maaf, Nilai tidak boleh lebih dari 10 !"); Eko2TextField.setText(null); } } else { JOptionPane.showMessageDialog(null, "Kolom Harus diisi dengan angka"); Eko2TextField.setText(null); } } else { JOptionPane.showMessageDialog(null, "Kolom Nilai Ekonomi Kelas XI semester 2 tidak boleh kosong!"); Eko2TextField.requestFocus(); }
268
} private void Sej2TextFieldKeyReleased(java.awt.event.KeyEvent evt) { if (Sej2TextField.getText().length() != 0) { if (!Sej2TextField.getText().matches("[a-z]")) { if (Double.parseDouble(Sej2TextField.getText()) < 0) { JOptionPane.showMessageDialog(null, "Maaf, Nilai tidak boleh kurang dari 0 !"); } else if (Double.parseDouble(Sej2TextField.getText()) > 10) { JOptionPane.showMessageDialog(null, "Maaf, Nilai tidak boleh lebih dari 10 !"); Sej2TextField.setText(null); } } else { JOptionPane.showMessageDialog(null, "Kolom Harus diisi dengan angka"); Sej2TextField.setText(null); } } else { JOptionPane.showMessageDialog(null, "Kolom Nilai Sejarah Kelas XI semester 2 tidak boleh kosong!"); Sej2TextField.requestFocus(); } } private void Bindo3TextFieldKeyReleased(java.awt.event.KeyEvent evt) { if (Bindo3TextField.getText().length() != 0) { if (!Bindo3TextField.getText().matches("[a-z]")) { if (Double.parseDouble(Bindo3TextField.getText()) < 0) { JOptionPane.showMessageDialog(null, "Maaf, Nilai tidak boleh kurang dari 0 !"); } else if (Double.parseDouble(Bindo3TextField.getText()) > 10) { JOptionPane.showMessageDialog(null, "Maaf, Nilai tidak boleh lebih dari 10 !"); Bindo3TextField.setText(null); } } else { JOptionPane.showMessageDialog(null, "Kolom Harus diisi dengan angka"); Bindo3TextField.setText(null); } } else { JOptionPane.showMessageDialog(null, "Kolom Nilai Bahasa Indonesia Kelas XII semester 1 tidak boleh kosong!"); Bindo3TextField.requestFocus(); } } private void Bing3TextFieldKeyReleased(java.awt.event.KeyEvent evt) {
269
if (Bing3TextField.getText().length() != 0) { if (!Bing3TextField.getText().matches("[a-z]")) { if (Double.parseDouble(Bing3TextField.getText()) < 0) { JOptionPane.showMessageDialog(null, "Maaf, Nilai tidak boleh kurang dari 0 !"); } else if (Double.parseDouble(Bing3TextField.getText()) > 10) { JOptionPane.showMessageDialog(null, "Maaf, Nilai tidak boleh lebih dari 10 !"); Bing3TextField.setText(null); } } else { JOptionPane.showMessageDialog(null, "Kolom Harus diisi dengan angka"); Bing3TextField.setText(null); } } else { JOptionPane.showMessageDialog(null, "Kolom Nilai Bahasa Inggris Kelas XII semester 1 tidak boleh kosong!"); Bing3TextField.requestFocus(); } } private void Mtk3TextFieldKeyReleased(java.awt.event.KeyEvent evt) { if (Mtk3TextField.getText().length() != 0) { if (!Mtk3TextField.getText().matches("[a-z]")) { if (Double.parseDouble(Mtk3TextField.getText()) < 0) { JOptionPane.showMessageDialog(null, "Maaf, Nilai tidak boleh kurang dari 0 !"); } else if (Double.parseDouble(Mtk3TextField.getText()) > 10) { JOptionPane.showMessageDialog(null, "Maaf, Nilai tidak boleh lebih dari 10 !"); Mtk3TextField.setText(null); } } else { JOptionPane.showMessageDialog(null, "Kolom Harus diisi dengan angka"); Mtk3TextField.setText(null); } } else { JOptionPane.showMessageDialog(null, "Kolom Nilai Matematika Kelas XII semester 1 tidak boleh kosong!"); Mtk3TextField.requestFocus(); } } private void Fis3TextFieldKeyReleased(java.awt.event.KeyEvent evt) { if (Fis3TextField.getText().length() != 0) { if (!Fis3TextField.getText().matches("[a-z]")) { if (Double.parseDouble(Fis3TextField.getText()) < 0) {
270
JOptionPane.showMessageDialog(null, "Maaf, Nilai tidak boleh kurang dari 0 !"); } else if (Double.parseDouble(Fis3TextField.getText()) > 10) { JOptionPane.showMessageDialog(null, "Maaf, Nilai tidak boleh lebih dari 10 !"); Fis3TextField.setText(null); } } else { JOptionPane.showMessageDialog(null, "Kolom Harus diisi dengan angka"); Fis3TextField.setText(null); } } else { JOptionPane.showMessageDialog(null, "Kolom Nilai Fisika Kelas XII semester 1 tidak boleh kosong!"); Fis3TextField.requestFocus(); } } private void Bio3TextFieldKeyReleased(java.awt.event.KeyEvent evt) { if (Bio3TextField.getText().length() != 0) { if (!Bio3TextField.getText().matches("[a-z]")) { if (Double.parseDouble(Bio3TextField.getText()) < 0) { JOptionPane.showMessageDialog(null, "Maaf, Nilai tidak boleh kurang dari 0 !"); } else if (Double.parseDouble(Bio3TextField.getText()) > 10) { JOptionPane.showMessageDialog(null, "Maaf, Nilai tidak boleh lebih dari 10 !"); Bio3TextField.setText(null); } } else { JOptionPane.showMessageDialog(null, "Kolom Harus diisi dengan angka"); Bio3TextField.setText(null); } } else { JOptionPane.showMessageDialog(null, "Kolom Nilai Biologi Kelas XII semester 1 tidak boleh kosong!"); Bio3TextField.requestFocus(); } } private void Kim3TextFieldKeyReleased(java.awt.event.KeyEvent evt) { if (Kim3TextField.getText().length() != 0) { if (!Kim3TextField.getText().matches("[a-z]")) { if (Double.parseDouble(Kim3TextField.getText()) < 0) { JOptionPane.showMessageDialog(null, "Maaf, Nilai tidak boleh kurang dari 0 !"); } else if (Double.parseDouble(Kim3TextField.getText()) > 10) {
271
JOptionPane.showMessageDialog(null, "Maaf, Nilai tidak boleh lebih dari 10 !"); Kim3TextField.setText(null); } } else { JOptionPane.showMessageDialog(null, "Kolom Harus diisi dengan angka"); Kim3TextField.setText(null); } } else { JOptionPane.showMessageDialog(null, "Kolom Nilai Kimia Kelas XII semester 1 tidak boleh kosong!"); Kim3TextField.requestFocus(); } } private void Eko3TextFieldKeyReleased(java.awt.event.KeyEvent evt) { if (Eko3TextField.getText().length() != 0) { if (!Eko3TextField.getText().matches("[a-z]")) { if (Double.parseDouble(Eko3TextField.getText()) < 0) { JOptionPane.showMessageDialog(null, "Maaf, Nilai tidak boleh kurang dari 0 !"); } else if (Double.parseDouble(Eko3TextField.getText()) > 10) { JOptionPane.showMessageDialog(null, "Maaf, Nilai tidak boleh lebih dari 10 !"); Eko3TextField.setText(null); } } else { JOptionPane.showMessageDialog(null, "Kolom Harus diisi dengan angka"); Eko3TextField.setText(null); } } else { JOptionPane.showMessageDialog(null, "Kolom Nilai Ekonomi Kelas XII semester 1 tidak boleh kosong!"); Eko3TextField.requestFocus(); } } private void Sej3TextFieldKeyReleased(java.awt.event.KeyEvent evt) { if (Sej3TextField.getText().length() != 0) { if (!Sej3TextField.getText().matches("[a-z]")) { if (Double.parseDouble(Sej3TextField.getText()) < 0) { JOptionPane.showMessageDialog(null, "Maaf, Nilai tidak boleh kurang dari 0 !"); } else if (Double.parseDouble(Sej3TextField.getText()) > 10) { JOptionPane.showMessageDialog(null, "Maaf, Nilai tidak boleh lebih dari 10 !"); Sej3TextField.setText(null); }
272
} else { JOptionPane.showMessageDialog(null, "Kolom Harus diisi dengan angka"); Sej3TextField.setText(null); } } else { JOptionPane.showMessageDialog(null, "Kolom Nilai Sejarah Kelas XII semester 1 tidak boleh kosong!"); Sej3TextField.requestFocus(); } } // Variables declaration - do not modify private usu.widget.ButtonGlass BackButtonGlass; private javax.swing.JTextField Bindo1TextField; private javax.swing.JTextField Bindo2TextField; private javax.swing.JTextField Bindo3TextField; private javax.swing.JTextField Bing1TextField; private javax.swing.JTextField Bing2TextField; private javax.swing.JTextField Bing3TextField; private javax.swing.JTextField Bio1TextField; private javax.swing.JTextField Bio2TextField; private javax.swing.JTextField Bio3TextField; private javax.swing.JTextField Eko1TextField; private javax.swing.JTextField Eko2TextField; private javax.swing.JTextField Eko3TextField; private javax.swing.JTextField Fis1TextField; private javax.swing.JTextField Fis2TextField; private javax.swing.JTextField Fis3TextField; private javax.swing.JTextField Kim1TextField; private javax.swing.JTextField Kim2TextField; private javax.swing.JTextField Kim3TextField; private javax.swing.JTextField Mtk1TextField; private javax.swing.JTextField Mtk2TextField; private javax.swing.JTextField Mtk3TextField; private usu.widget.ButtonGlass PrediksiButtonGlass; private javax.swing.JTextField Sej1TextField; private javax.swing.JTextField Sej2TextField; private javax.swing.JTextField Sej3TextField; private javax.swing.JComboBox jComboBoxJK; private javax.swing.JComboBox jComboBoxJurusan; private javax.swing.JComboBox jComboBoxKabAsal; private javax.swing.JComboBox jComboBoxKabSekolah; private javax.swing.JComboBox jComboBoxKategoriSma; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel10; private javax.swing.JPanel jPanel12; private javax.swing.JPanel jPanel6; private javax.swing.JPanel jPanel9; private usu.widget.Label label1; private usu.widget.Label label10; private usu.widget.Label label2; private usu.widget.Label label3;
273
private usu.widget.Label label4; private usu.widget.Label label6; private usu.widget.Label label7; private usu.widget.Label labelBindo1; private usu.widget.Label labelBindo2; private usu.widget.Label labelBindo3; private usu.widget.Label labelBing1; private usu.widget.Label labelBing2; private usu.widget.Label labelBing3; private usu.widget.Label labelBio1; private usu.widget.Label labelBio2; private usu.widget.Label labelBio3; private usu.widget.Label labelEko1; private usu.widget.Label labelEko2; private usu.widget.Label labelEko3; private usu.widget.Label labelFisika1; private usu.widget.Label labelFisika2; private usu.widget.Label labelFisika3; private usu.widget.Label labelJenisKelamin; private usu.widget.Label labelJurSMA; private usu.widget.Label labelKabupatenAsal; private usu.widget.Label labelKabupatenSekolah; private usu.widget.Label labelKateSMA; private usu.widget.Label labelKimia1; private usu.widget.Label labelKimia2; private usu.widget.Label labelKimia3; private usu.widget.Label labelMtk1; private usu.widget.Label labelMtk2; private usu.widget.Label labelMtk3; private usu.widget.Label labelPrediksiIPKSemester; private usu.widget.Label labelSejarah1; private usu.widget.Label labelSejarah2; private usu.widget.Label labelSejarah3; private usu.widget.Panel panel1; private usu.widget.Panel panel10; private usu.widget.Panel panel2; private usu.widget.Panel panel3; private usu.widget.Panel panel8; private usu.widget.Panel panel9; private usu.widget.glass.PanelGlassStyle panelGlassStyle1; private usu.widget.TextBox textBoxKeputusanIPK; // End of variables declaration }
Lampiran 9 Listing Program Form Prediksi Kelompok package SPPA.View; import import import import import import import
SPPA.Controller.TransformasiData; SPPA.Entity.Aturan; SPPA.Entity.Mahasiswa; java.io.FileNotFoundException; java.io.IOException; java.sql.ResultSet; java.sql.SQLException;
274
import import import import import import
java.util.Vector; java.util.logging.Level; java.util.logging.Logger; javax.swing.JFileChooser; javax.swing.JOptionPane; javax.swing.table.DefaultTableModel;
/** * * @author Florencia */ public class PrediksiKelompokSPPA extends javax.swing.JFrame { private Mahasiswa mahasiswa[]; private DefaultTableModel tabelModAwal; private static int selectedProdi; private static int selectedSemester; private String semesterTerpilih; private int jumAtributPelatihan = 29; private Vector pohonkeputusan; private Vector dataset; private String kategori; //private int idMaster; /** Creates new form PrediksiKelompokSPPA */ public PrediksiKelompokSPPA(int pro, int smt) { initComponents(); selectedProdi = pro; selectedSemester = smt; } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { panel1 = new usu.widget.Panel(); panelGlassStyle1 = new usu.widget.glass.PanelGlassStyle(); label10 = new usu.widget.Label(); jPanel2 = new javax.swing.JPanel(); jScrollPane1 = new javax.swing.JScrollPane(); jTableMahasiswa = new javax.swing.JTable(); jLabel1 = new javax.swing.JLabel(); jTextFieldLokasiFile = new javax.swing.JTextField(); label3 = new usu.widget.Label(); labelJumlahDataAwal = new usu.widget.Label(); ButtonBrowse = new usu.widget.ButtonGlass(); jPanel1 = new javax.swing.JPanel(); jLabel3 = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel();
275
jLabel5 = new javax.swing.JLabel(); ButtonPrediksi = new usu.widget.ButtonGlass(); ButtonBack = new usu.widget.ButtonGlass(); ButtonSetProdiSemester = new usu.widget.ButtonGlass(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE ); panel1.setBackground(new java.awt.Color(51, 153, 255)); panelGlassStyle1.setBackground(new java.awt.Color(51, 153, 255)); label10.setText(".: PREDIKSI KELOMPOK :."); label10.setFont(new java.awt.Font("Tahoma", 1, 24)); javax.swing.GroupLayout panelGlassStyle1Layout = new javax.swing.GroupLayout(panelGlassStyle1); panelGlassStyle1.setLayout(panelGlassStyle1Layout); panelGlassStyle1Layout.setHorizontalGroup( panelGlassStyle1Layout.createParallelGroup(javax.swing.GroupLayout .Alignment.LEADING) .addGroup(panelGlassStyle1Layout.createSequentialGroup() .addGap(480, 480, 480) .addComponent(label10, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(461, Short.MAX_VALUE)) ); panelGlassStyle1Layout.setVerticalGroup( panelGlassStyle1Layout.createParallelGroup(javax.swing.GroupLayout .Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelGlassStyle1Layout.createSequentialGroup() .addContainerGap(60, Short.MAX_VALUE) .addComponent(label10, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(22, 22, 22)) ); jPanel2.setBackground(new java.awt.Color(51, 153, 255)); jTableMahasiswa.setFont(new java.awt.Font("Tahoma", 0, 9)); jTableMahasiswa.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { },
276
new String [] { "No.Alias", "Jur", "KetSMU", "KabSklh", "KabAsl", "Sex", "Bindo1", "Bindo2", "Bindo3", "Bing1", "Bing2", "Bing3", "Mtk1", "Mtk2", "Mtk3", "Fis1", "Fis2", "Fis3", "Bio1", "Bio2", "Bio3", "Kim1", "Kim2", "Kim3", "Eko1", "Eko2", "Eko3", "Sej1", "Sej2", "Sej3", "IPK" } ) { boolean[] canEdit = new boolean [] { false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false }; public boolean isCellEditable(int rowIndex, int columnIndex) { return canEdit [columnIndex]; } }); jTableMahasiswa.getTableHeader().setReorderingAllowed(false); jScrollPane1.setViewportView(jTableMahasiswa); jLabel1.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 14)); jLabel1.setText("Masukkan Data"); label3.setText("Jumlah data :"); label3.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 14)); ButtonBrowse.setIcon(new javax.swing.ImageIcon(getClass().getResource("/SPPA/resources/brow se.png"))); // NOI18N ButtonBrowse.setText("Browse"); ButtonBrowse.setFont(new java.awt.Font("Comic Sans MS", 1, 14)); ButtonBrowse.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { ButtonBrowseActionPerformed(evt); } }); javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); jPanel2.setLayout(jPanel2Layout); jPanel2Layout.setHorizontalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayou
277
t.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addGap(48, 48, 48) .addComponent(label3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATE D) .addComponent(labelJumlahDataAwal, javax.swing.GroupLayout.PREFERRED_SIZE, 104, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayou t.Alignment.TRAILING) .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel2Layout.createSequentialGroup() .addContainerGap() .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 1155, Short.MAX_VALUE)) .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel2Layout.createSequentialGroup() .addGap(43, 43, 43) .addComponent(jLabel1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELA TED) .addComponent(jTextFieldLokasiFile, javax.swing.GroupLayout.PREFERRED_SIZE, 804, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELA TED) .addComponent(ButtonBrowse, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))) .addContainerGap(28, Short.MAX_VALUE)) ); jPanel2Layout.setVerticalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayou t.Alignment.BASELINE) .addComponent(jTextFieldLokasiFile, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
278
.addComponent(jLabel1) .addComponent(ButtonBrowse, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(33, 33, 33) .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 289, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATE D) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayou t.Alignment.LEADING, false) .addComponent(labelJumlahDataAwal, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(label3, javax.swing.GroupLayout.PREFERRED_SIZE, 32, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap()) ); jPanel1.setBackground(new java.awt.Color(51, 153, 255)); jLabel3.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 14)); jLabel3.setText("Fakultas Sains dan Teknologi"); jLabel4.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 14)); jLabel4.setText("Universitas Sanata Dharma Yogyakarta"); jLabel5.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 14)); jLabel5.setText("FLorensia Dwinta ©2011"); javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() .addContainerGap(537, Short.MAX_VALUE) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayou t.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addGap(8, 8, 8) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayou
279
t.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addGap(26, 26, 26) .addComponent(jLabel3)) .addGroup(jPanel1Layout.createSequentialGroup() .addGap(37, 37, 37) .addComponent(jLabel5)))) .addComponent(jLabel4)) .addGap(286, 286, 286)) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jLabel3) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATE D) .addComponent(jLabel4) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATE D) .addComponent(jLabel5) .addContainerGap()) ); ButtonPrediksi.setIcon(new javax.swing.ImageIcon(getClass().getResource("/SPPA/resources/pred iksi.png"))); // NOI18N ButtonPrediksi.setText("Prediksi"); ButtonPrediksi.setFont(new java.awt.Font("Comic Sans MS", 1, 14)); ButtonPrediksi.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { ButtonPrediksiActionPerformed(evt); } }); ButtonBack.setIcon(new javax.swing.ImageIcon(getClass().getResource("/SPPA/resources/undo .png"))); // NOI18N ButtonBack.setText("Kembali"); ButtonBack.setFont(new java.awt.Font("Comic Sans MS", 1, 14)); ButtonBack.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent
280
evt) { ButtonBackActionPerformed(evt); } }); ButtonSetProdiSemester.setIcon(new javax.swing.ImageIcon(getClass().getResource("/SPPA/resources/sett ing.png"))); // NOI18N ButtonSetProdiSemester.setText("Atur Prodi dan Semester"); ButtonSetProdiSemester.setFont(new java.awt.Font("Comic Sans MS", 1, 14)); ButtonSetProdiSemester.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { ButtonSetProdiSemesterActionPerformed(evt); } }); javax.swing.GroupLayout panel1Layout = new javax.swing.GroupLayout(panel1); panel1.setLayout(panel1Layout); panel1Layout.setHorizontalGroup( panel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment .LEADING) .addGroup(panel1Layout.createSequentialGroup() .addGap(34, 34, 34) .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(28, Short.MAX_VALUE)) .addGroup(panel1Layout.createSequentialGroup() .addComponent(panelGlassStyle1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panel1Layout.createSequentialGroup() .addContainerGap(728, Short.MAX_VALUE) .addComponent(ButtonPrediksi, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATE D) .addComponent(ButtonSetProdiSemester, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
281
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATE D) .addComponent(ButtonBack, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(67, 67, 67)) .addGroup(panel1Layout.createSequentialGroup() .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) ); panel1Layout.setVerticalGroup( panel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment .LEADING) .addGroup(panel1Layout.createSequentialGroup() .addComponent(panelGlassStyle1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(29, 29, 29) .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, 414, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATE D) .addGroup(panel1Layout.createParallelGroup(javax.swing.GroupLayout .Alignment.BASELINE) .addComponent(ButtonBack, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(ButtonSetProdiSemester, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(ButtonPrediksi, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(27, 27, 27) .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); javax.swing.GroupLayout layout = new
282
javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI NG) .addComponent(panel1, javax.swing.GroupLayout.PREFERRED_SIZE, 1255, javax.swing.GroupLayout.PREFERRED_SIZE) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI NG) .addComponent(panel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) ); pack(); }// private void ButtonPrediksiActionPerformed(java.awt.event.ActionEvent evt) { int index=0; Aturan prediksi ; TransformasiData td = new TransformasiData(); for (int i = 0; i < mahasiswa.length; i++) { try { mahasiswa[i].setJurusan(mahasiswa[i].getJurusan()); mahasiswa[i].setKetSekolah(mahasiswa[i].getKetSekolah()); mahasiswa[i].setKabupatenSekolah(mahasiswa[i].getKabupatenSekolah( )); mahasiswa[i].setKabupatenAsal(mahasiswa[i].getKabupatenAsal()); mahasiswa[i].setJk(mahasiswa[i].getJk()); ResultSet rs = TransformasiData.getRerataStdv(selectedProdi, selectedSemester); while (rs.next()) { if (rs.getString("NamaAtribut").equalsIgnoreCase("bIndo1")) { mahasiswa[i].setKvtBindo1(td.KonversiNilai(rs.getDouble("RataRata" ), rs.getDouble("StandarDev"), mahasiswa[i].getbIndo1())); } else if (rs.getString("NamaAtribut").equalsIgnoreCase("bIndo2")) { mahasiswa[i].setKvtBindo2(td.KonversiNilai(rs.getDouble("RataRata" ), rs.getDouble("StandarDev"), mahasiswa[i].getbIndo2())); } else if (rs.getString("NamaAtribut").equalsIgnoreCase("bIndo3")) {
283
mahasiswa[i].setKvtBindo3(td.KonversiNilai(rs.getDouble("RataRata" ), rs.getDouble("StandarDev"), mahasiswa[i].getbIndo3())); } else if (rs.getString("NamaAtribut").equalsIgnoreCase("bIng1")) { mahasiswa[i].setKvtBing1(td.KonversiNilai(rs.getDouble("RataRata") , rs.getDouble("StandarDev"), mahasiswa[i].getbIng1())); } else if (rs.getString("NamaAtribut").equalsIgnoreCase("bIng2")) { mahasiswa[i].setKvtBing2(td.KonversiNilai(rs.getDouble("RataRata") , rs.getDouble("StandarDev"), mahasiswa[i].getbIng2())); } else if (rs.getString("NamaAtribut").equalsIgnoreCase("bIng3")) { mahasiswa[i].setKvtBing3(td.KonversiNilai(rs.getDouble("RataRata") , rs.getDouble("StandarDev"), mahasiswa[i].getbIng3())); } else if (rs.getString("NamaAtribut").equalsIgnoreCase("mtk1")) { mahasiswa[i].setKvtMtk1(td.KonversiNilai(rs.getDouble("RataRata"), rs.getDouble("StandarDev"), mahasiswa[i].getMtk1())); } else if (rs.getString("NamaAtribut").equalsIgnoreCase("mtk2")) { mahasiswa[i].setKvtMtk2(td.KonversiNilai(rs.getDouble("RataRata"), rs.getDouble("StandarDev"), mahasiswa[i].getMtk2())); } else if (rs.getString("NamaAtribut").equalsIgnoreCase("mtk3")) { mahasiswa[i].setKvtMtk3(td.KonversiNilai(rs.getDouble("RataRata"), rs.getDouble("StandarDev"), mahasiswa[i].getMtk3())); } else if (rs.getString("NamaAtribut").equalsIgnoreCase("fisika1")) { mahasiswa[i].setKvtFisika1(td.KonversiNilai(rs.getDouble("RataRata "), rs.getDouble("StandarDev"), mahasiswa[i].getFisika1())); } else if (rs.getString("NamaAtribut").equalsIgnoreCase("fisika2")) { mahasiswa[i].setKvtFisika2(td.KonversiNilai(rs.getDouble("RataRata "), rs.getDouble("StandarDev"), mahasiswa[i].getFisika2())); } else if (rs.getString("NamaAtribut").equalsIgnoreCase("fisika3")) { mahasiswa[i].setKvtFisika3(td.KonversiNilai(rs.getDouble("RataRata "), rs.getDouble("StandarDev"), mahasiswa[i].getFisika3())); } else if (rs.getString("NamaAtribut").equalsIgnoreCase("bio1")) { mahasiswa[i].setKvtBio1(td.KonversiNilai(rs.getDouble("RataRata"), rs.getDouble("StandarDev"), mahasiswa[i].getBio1())); } else if (rs.getString("NamaAtribut").equalsIgnoreCase("bio2")) { mahasiswa[i].setKvtBio2(td.KonversiNilai(rs.getDouble("RataRata"),
284
rs.getDouble("StandarDev"), mahasiswa[i].getBio2())); } else if (rs.getString("NamaAtribut").equalsIgnoreCase("bio3")) { mahasiswa[i].setKvtBio3(td.KonversiNilai(rs.getDouble("RataRata"), rs.getDouble("StandarDev"), mahasiswa[i].getBio3())); } else if (rs.getString("NamaAtribut").equalsIgnoreCase("kimia1")) { mahasiswa[i].setKvtKimia1(td.KonversiNilai(rs.getDouble("RataRata" ), rs.getDouble("StandarDev"), mahasiswa[i].getKimia1())); } else if (rs.getString("NamaAtribut").equalsIgnoreCase("kimia2")) { mahasiswa[i].setKvtKimia2(td.KonversiNilai(rs.getDouble("RataRata" ), rs.getDouble("StandarDev"), mahasiswa[i].getKimia2())); } else if (rs.getString("NamaAtribut").equalsIgnoreCase("kimia3")) { mahasiswa[i].setKvtKimia3(td.KonversiNilai(rs.getDouble("RataRata" ), rs.getDouble("StandarDev"), mahasiswa[i].getKimia3())); } else if (rs.getString("NamaAtribut").equalsIgnoreCase("eko1")) { mahasiswa[i].setKvtEko1(td.KonversiNilai(rs.getDouble("RataRata"), rs.getDouble("StandarDev"), mahasiswa[i].getEko1())); } else if (rs.getString("NamaAtribut").equalsIgnoreCase("eko2")) { mahasiswa[i].setKvtEko2(td.KonversiNilai(rs.getDouble("RataRata"), rs.getDouble("StandarDev"), mahasiswa[i].getEko2())); } else if (rs.getString("NamaAtribut").equalsIgnoreCase("eko3")) { mahasiswa[i].setKvtEko3(td.KonversiNilai(rs.getDouble("RataRata"), rs.getDouble("StandarDev"), mahasiswa[i].getEko3())); } else if (rs.getString("NamaAtribut").equalsIgnoreCase("sejarah1")) { mahasiswa[i].setKvtSejarah1(td.KonversiNilai(rs.getDouble("RataRat a"), rs.getDouble("StandarDev"), mahasiswa[i].getSejarah1())); } else if (rs.getString("NamaAtribut").equalsIgnoreCase("sejarah2")) { mahasiswa[i].setKvtSejarah2(td.KonversiNilai(rs.getDouble("RataRat a"), rs.getDouble("StandarDev"), mahasiswa[i].getSejarah2())); } else if (rs.getString("NamaAtribut").equalsIgnoreCase("sejarah3")) { mahasiswa[i].setKvtSejarah3(td.KonversiNilai(rs.getDouble("RataRat a"), rs.getDouble("StandarDev"), mahasiswa[i].getSejarah3())); } } } catch (SQLException ex) { System.out.println("Gagal menyiapkan data prediksi semester 1: "+ex.getMessage());
285
} } try { for (int j = 0; j < mahasiswa.length; j++) { prediksi = new Aturan(mahasiswa[j],selectedProdi,selectedSemester); int i = Aturan.getRoot(selectedProdi, selectedSemester); prediksi.prosesPrediksi(i); if (prediksi.getIPK_Keputusan() != null) { tabelModAwal.setValueAt(prediksi.getIPK_Keputusan(), index, 30); // } else { tabelModAwal.setValueAt("-", index, 30); } index++; } } catch (SQLException ex) { System.out.println("Error di prediksi button action: " + ex.getMessage()); } } private void ButtonBackActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: HomeSPPA viewTree = new HomeSPPA(selectedProdi, selectedSemester); viewTree.setVisible(true); this.dispose(); } private void ButtonBrowseActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: JFileChooser fc = new JFileChooser(); if (fc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) { try { jTextFieldLokasiFile.setText(fc.getSelectedFile().getPath()); mahasiswa = Mahasiswa.newFilePrediction(fc.getSelectedFile(), selectedSemester); if (mahasiswa != null) { tabelModAwal = (DefaultTableModel) jTableMahasiswa.getModel(); labelJumlahDataAwal.setText(String.valueOf(mahasiswa.length)); for (int i = 0; i < mahasiswa.length; i++) { tabelModAwal.addRow(new Object[]{mahasiswa[i].getNoAlias(), mahasiswa[i].getJurusan(), mahasiswa[i].getKetSekolah(), mahasiswa[i].getKabupatenSekolah(), mahasiswa[i].getKabupatenAsal(), mahasiswa[i].getJk(),
286
mahasiswa[i].getbIndo1(), mahasiswa[i].getbIndo2(), mahasiswa[i].getbIndo3(), mahasiswa[i].getbIng1(), mahasiswa[i].getbIng2(), mahasiswa[i].getbIng3(), mahasiswa[i].getMtk1(), mahasiswa[i].getMtk2(), mahasiswa[i].getMtk3(), mahasiswa[i].getFisika1(), mahasiswa[i].getFisika2(), mahasiswa[i].getFisika3(), mahasiswa[i].getBio1(), mahasiswa[i].getBio2(), mahasiswa[i].getBio3(), mahasiswa[i].getKimia1(), mahasiswa[i].getKimia2(), mahasiswa[i].getKimia3(), mahasiswa[i].getEko1(), mahasiswa[i].getEko2(), mahasiswa[i].getEko3(), mahasiswa[i].getSejarah1(), mahasiswa[i].getSejarah2(), mahasiswa[i].getSejarah3()}); } JOptionPane.showMessageDialog(null, "File Berhasil dimasukan"); } } catch (FileNotFoundException ex) { Logger.getLogger(PreprocessingSPPA.class.getName()).log(Level.SEVE RE, null, ex); } catch (IOException ex) { Logger.getLogger(PreprocessingSPPA.class.getName()).log(Level.SEVE RE, null, ex); } } } private void ButtonSetProdiSemesterActionPerformed(java.awt.event.ActionEvent evt) { try { // TODO add your handling code here: SelectProdiSemesterSPPA test = new SelectProdiSemesterSPPA(); test.setVisible(true); this.dispose(); } catch (SQLException ex) { Logger.getLogger(PrediksiKelompokSPPA.class.getName()).log(Level.S EVERE, null, ex); } } // Variables declaration - do not modify private usu.widget.ButtonGlass ButtonBack; private usu.widget.ButtonGlass ButtonBrowse; private usu.widget.ButtonGlass ButtonPrediksi; private usu.widget.ButtonGlass ButtonSetProdiSemester; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTable jTableMahasiswa;
287
private javax.swing.JTextField jTextFieldLokasiFile; private usu.widget.Label label10; private usu.widget.Label label3; private usu.widget.Label labelJumlahDataAwal; private usu.widget.Panel panel1; private usu.widget.glass.PanelGlassStyle panelGlassStyle1; // End of variables declaration }