Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
SISTEM INFORMASI AKADEMIK
MENGGUNAKAN JAVA 5 DAN MYSQL 5
(Studi Kasus SMA Pangudi Luhur Van Lith)
Skripsi
Disusun Oleh :
NAMA : Liliani
NIM : 045314005
PROGRAM STUDI TEKNIK INORMATIKA
JURUSAN TEKNIK INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA
YOGYAKARTA
2008
ACADEMIC INFORMATION SYSTEM
USING JAVA 5 AND MYSQL 5
(Case Study in Pangudi Luhur Van Lith Senior High School)
S k r i p s i
Presented as Partial Fullfillment of the requirements
To Obtain the Sarjana Teknik Degree
In Informatics Engineering
Disusun Oleh :
NAMA : Liliani
NIM : 045314005
INFORMATICS ENGINEERING STUDY PROGRAM
DEPARTMENT OF INFORMATICS ENGINEERING
FACULTY OF SAINS AND TECHNOLOGY
SANATA DHARMA UNIVERSITY
YOGYAKARTA
2008
i
SISTEM INFORMASI AKADEMIK
MENGGUNAKAN JAVA 5 DAN MYSQL 5
(Studi Kasus SMA Pangudi Luhur Van Lith)
S k r i p s i
Diajukan untuk memenuhi salah satu syarat
memperoleh Gelar Sarjana Teknik
Jurusan Teknik Informatika
Disusun Oleh :
NAMA : Liliani
NIM : 045314005
PROGRAM STUDI TEKNIK INORMATIKA
JURUSAN TEKNIK INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA
YOGYAKARTA
2008
ii
HALAMAN PERSEMBAHAN
Penulis mempersembahkan tugas akhir ini kepada :
Tuhan Yesus Kristus dan Bunda Maria
Terima kasih atas kasih dan rahmatNya
Papah dan Mamah
Terima kasih atas segala bentuk doa, restu, dan dukungannya. Tak akan ada
yang bisa melebihi kasih kalian
Mas Senwen & Mba’ Siti, Mas Anton, Mba’ Anik, Alm. Mas Wawan,
Mba’ Iin dan Si Kecil Kevin
Terima kasih atas kebersamaan selama ini. Aku mencintai kalian !
Iyo – Yohannes Rio Falmy
Terima kasih atas pengorbanan tenaga, waktu, cinta, doa, dan apapun
wujudnya.
trimakasih udah ada di kisahku, sekarang bukan Cuma kisahku melainkan
kisah kita.
v
HALAMAN TERIMAKASIH
Terimakasih banyak untuk :
Tuhan Yesus Kristus
terimakasih karena Kamu selalu membuatku kuat dan karena Kamu selalu
bersinar di hatiku..
Papah dan Mamah
semua karena kalian
tanpa kalian aku gak akan pernah jadi seperti ini
makasih ya, pah, mah..maaf buat segala kesalahan yang terjadi
aku sayang kalian..selalu..
Mas Senwen & Mba’ Siti, Mas Anton, Mba’ Anik, Alm. Mas Wawan,
Mba’ Iin dan Si Kecil Kevin
terimakasih atas setiap ejekan untukku, aku tau itu tanda sayang kalian
untukku..dan terimakasih atas setiap hal yang telah diberikan, aku tau itu
takkan pernah terganti oleh apapun..
„Cepin nDut“, cepet gede & jadi anak yang baik yaa, hehe..
aku sayang kalian..selalu..
Yohannes Rio Falmy
terimakasih banyak untuk setiap cinta kasih dan pengorbanannya, itu
membuatku benar-benar merasa indah..banyak hal yang telah kita lalui dan
masih banyak hal yang akan kita lalui bersama, SEMANGAT ya, yang!
memang penting jadi orang penting tapi lebih penting jadi orang baik..
aku sayang kamu, Iyo..
Bapak, Ibu, Mba’ Iin, De’ Loren
terimakasih atas semua perhatian yang diberikan, suatu penghargaan
menerima perhatian dari kalian.
Bapak, aku mau belajar terus..Ibu, kuenya enak..
vi
H ’n L Community
ayni & angga, jumpret & nena, buntas & fenti, b0mi, mas angga & alma,
antok, wawaw & diah, sepep
terimakasih banyak atas segala canda tawa, tangis haru dan kesetiakawanan
kalian.. tanpa kalian aku bukan apa apa.. SEMANGAT!
ayn, yum makasi ya telah berjalan bersamaku melewati tugas akhir ini..
Intan Mahanani, Leonardus Beni, Victor Hasiholan
Terimakasih banyak atas segala ketenangan yang diberikan saat aku lemah..
Intan, aku datang, hehehe...
Vic, makasi banyak ya atas segala bantuan yang diberikan, sangat berarti
buatku.. thx 4 being my friend..
Anak2 Ti’04
Terimakasih atas kebersamaan selama 4 tahun ini..
mba’ Dea Ti’03, mas abe Ti’03, mas JJ Ti’03 & pak darmaji
mba’ Dea yang membantu kelancaran ketemu Bu Rido, & atas setiap
obrolannya di komjut..
mas abe untuk setiap hal yang di ajarkan dan dinasehatkan..
mas JJ buat semua bantuannya selama bareng-bareng bimbingan..
makasi ya pak dar buat setiap senyum ramah penuh kenyamanan ketemu
bapak selama kuliah..
vii
HALAMAN MOTTO
Senyum, SEMANGAT & Niat..
Positive Thinking..
Terima setiap perubahan dalam hidupmu dan teruslah
menjadi lebih baik..
Senyaman kamu aja, yang penting gak ngrugiin orang
lain..
Jangan pernah ngecewain orang yang kamu sayang..
vii
PERNYATAAN KEASLIAN NASKAH
Saya menyatakan dengan sesungguhnya bahwa skripsi yang saya tulis ini
tidak memuat karya atau bagian karya orang lain, kecuali yang telah disebutkan
dalam kutipan dan daftar pustaka sebagaimana layaknya karya ilmiah.
Yogyakarta, 20 September 2008
Penulis
Liliani
ix
LEMBAR PERNYATAAN PERSETUJUAN
PUBLIKASI KARYA ILMIAH UNTUK KEPENTINGAN AKADEMIS
Yang bertanda tangan dibawah ini, saya mahasiswa Universitas Sanata Dharma :
Nama : Liliani
Nomor Mahasiswa : 045314005
Demi pengembangan ilmu pengetahuan, saya memberikan kepada
Perpustakaan Universitas Sanata Dharma karya ilmiah saya yang berjudul
:“SISTEM INFORMASI AKADEMIK MENGGUNAKAN JAVA 5 DAN
MYSQL5 (STUDI KASUS SMA PANGUDI LUHUR VAN LITH)”
beserta perangkat yang diperlukan (bila ada). Dengan demikian saya
memberikan kepada Perpustakaan Universitas Sanata Dharma hak untuk
menyimpan, mengalihkan dalam bentuk media lain, mengelolanya dalam bentuk
pangkalan data, mandistribusikan secara terbatas, dan mempublikasikannya di
Internet atau media lain untuk kepentingan akademis tanpa perlu meminta izin
dari saya maupun memberikan royalti kepada saya selama tetap mencantumkan
nama saya sebagai penulis.
Demikian pernyataan ini saya buat dengan sebenarnya.
Dibuat di Yogyakarta
Pada tanggal : 20 September 2008
Yang menyatakan
(Liliani)
x
KATA PENGANTAR
Ucapan syukur tak henti-hentinya penulis ucapkan pada Allah yang penuh
kasih hingga penulis dapat menyelesaikan Tugas Akhir dengan judul “Sistem
Informasi Akademik Menggunakan Java 5 dan Mysql 5 (Studi Kasus SMA
Pangudi Luhur Van Lith)“.
Tugas Akhir ini disusun untuk memenuhi salah satu syarat memperoleh
gelar sarjana teknik Program Studi Teknik Informatika, di Fakultas Sains dan
Teknologi Universitas Sanata Dharma Yogyakarta.
Dalam menyelesaikan Tugas Akhir ini, penulis telah memperoleh banyak
bantuan dari berbagai pihak. Untuk itu penulis dengan tulus menyampaikan
banyak terimakasih yang tak terhingga dan penghargaan kepada :
1. Ir. Greg. Heliarko S.J.,S.S., B.S.T., M.A., M.Sc. selaku Dekan Fakultas
Sains dan Teknologi Universitas Sanata Dharma Yogyakarta.
2. Bapak Puspaningtyas Sanjoyo Adi, S.T., M.T. selaku Ketua Jurusan
Teknik Informatika Universitas Sanata Dharma.
3. Ibu Ridowati Gunawan, S.Kom, M.T. yang telah membimbing dan
mendampingi penulis dengan penuh kesabaran hingga penulis dapat
menyelesaikan Tugas Akhir ini.
4. Br. Albertus Suwarto, S.Pd, FIC selaku Kepala Sekolah SMA Pangudi
Luhur Van Lith yang telah memberikan ijin melakukan studi kasus di
SMA Pangudi Luhur Van Lith.
xi
5. Seluruh Dosen, Laboran, Staf Sekretariat , dan karyawan Jurusan Teknik
Informatika Universitas Sanata Dharma Yogyakarta.
6. Papah, Mamah, Mas Senwen, Mas Anton, Mba’ Anik, Alm. Mas Wawan,
Mba’ Iin serta keluarga besar yang tidak dapat penulis sebutkan satu-
persatu atas segala bentuk dukungannya. Aku sayang kalian.
7. Yohannes Rio Falmy, terimakasih atas segala pengorbanan cinta kasih dan
kesabaran yang tak terhingga untukku. Kamu tidak hanya indah, Kamu
juga yang membuatku menjadi sesuatu yang berharga.
8. H n L Community : Buntas & Fenti, Jumpret & Nena, Ayni & Angga, Mas
Angga & Alma, B0mi, Antok, Wawaw & Diah, Sepep, terimakasih atas
canda tawanya dan tangis haru 4 tahun ini, kalian teman terbaik.
9. Intan Mahanani, Leonardus Beni & Victor Hasiholan makasi banyak telah
mendukungku di berbagai situasi, menenangkan disaat aku lemah dan
berbagi disaat apapun.
10. Temen-temen TI’04, SEMANGAT!
Akhir kata, penulis menyadari bahwa Tugas Akhir yang penulis buat masih
jauh dari sempurna, hal ini disebabkan karena kemampuan dan pengetahuan
penulis yang terbatas. Oleh karena itu penulis sangat mengharapkan saran dan
kritik yang membangun dari semua pihak sehingga Tugas Akhir ini akan menjadi
lebih sempurna dan dapat bermanfaat bagi penulis serta seluruh civitas akademika
Universitas Sanata Dharma Yogyakarta.
Penulis
xii
ABSTRAK
Tujuan pengembangan sistem ini adalah untuk memudahkan pelayanan
akademik pada suatu sekolah. Sistem ini akan menangani pendaftaran siswa,
pencatatan nilai, pencatatan data master, pembuatan laporan akademik siswa (
raport ), penentuan siswa naik kelas atau tidak naik kelas, pencataan siswa keluar
dan siswa tidak naik kelas.
Oleh karena itu sistem ini perlu dikembangkan dengan sebaik-baiknya
agar dapat mendukung kegiatan akademik pada sekolah. Sistem ini dikembangkan
berbasis client-server. Pembuatannya menggunakan Java Standard Edition 5
dengan menggunakan database MySQL versi 5.x.xx. Untuk melakukan
manipulasi data pada database digunakan stored procedure, stored function dan
trigger yang sudah didukung oleh MySQL versi 5.
Hasil pengembangan sistem menunjukkan bahwa sistem dapat membantu
pelaksanaan belajar mengajar pada suatu SMA. Sistem mempermudah dan
mengurangi pekerjaan yang dilakukan secara manual.
xiii
ABSTRACT
This system development aimed at facilitating the academic service in a
school. This system would had managing student registration, mark recording and
mater data recording, creating the students’ academic report, deciding whether
students go up their grade or not, and recording student who leave the school and
student who was not go up.
Therefore, this system has to be best develops to supporting the academics
activities in school. The system was created with Java Standard Edition 5 using
MySQL Database Version 5.x.x.x. To perform the data manipulation in database,
the system using stored procedure, stored function and trigger that already
supported with MySQL version 5.
Result of the system development suggesting that the system able to
facilitate the teaching-learning activities in a high school. The system facilitating
and reducing the jobs that performed manually.
xiv
DAFTAR ISI
HALAMAN JUDUL ………………………………….…….....…………………….... i
HALAMAN PERSETUJUAN ………………………………….……………………… iv
HALAMAN PENGESAHAN ………………………………….……………….……... v
HALAMAN PERSEMBAHAN ………………………………..……………….……... vi
HALAMAN TERIMAKASIH ……………………………….. ……………….……... vii
HALAMAN MOTTO …………………. ……………………….……………….……... ix
PERNYATAAN KEASLIAN NASKAH ……………………... ……………………… x
KATA PENGANTAR ………………………………………… ……………………… xii
ABSTRAK ……………………………………………………….……………………. xiv
ABSTRACT ……………………………………………………...…………………….. xv
DAFTAR ISI …………………………………………………….………………….…... xvi
DAFTAR GAMBAR …………………………………………………………………… xxi
DAFTAR TABEL . ……………………………………………………………………… xxv
BAB I PENDAHULUAN ……………………………………………………….……... 1
1.1 Latar Belakang Masalah ..…………………………….……………….……... 1
1.2 Rumusan Masalah …………………………………….……………….……... 2
1.3 Batasan Masalah ….…………………………………. ………………….…... 3
1.4 Tujuan dan Manfaat Penelitian .……..………………. ………………….…... 4
1.5 Metodologi Penelitian ……………………………….. ………………….…... 4
1.6 Sistematika Penulisan …………………………………………………….…... 6
BAB II LANDASAN TEORI ……………………......................………………….…... 7
2.1 Konsep Dasar Informasi …………………………………………………….... 7
xv
2.2 Konsep Dasar Sistem ...…...…………………………. ……………….……... 8
2.3 Konsep Dasar Sistem Informasi ……………….…………………….………... 9
2.4 Pengembangan dan Pengadaan SI ..…………………..…………………..... 11
2.5 Alat Bantu Pengembangan Sistem ..…………………..…………………..... 13
2.6 Database ……..….…………………………………………………………… 17
2.7 Organisasi Database dengan Mysql …………….…………………………… 19
2.8 Store Procedure, Strore Function dan Trigger ……… …………………….. 21
2.9 Transaksi …………………………………………………………………….. 22
2.10 Pemrograman Java Berorientasi Objek …….………..…………………….. 23
2.11 GUI dengan Java ......………………………………….……………………. 24
2.12 Event Handling ...…………………………………....……………………. 25
2.13 Koneksi Java MySQL ....…………………………….……………………. 27
2.14 JCalendar...............…………………………………. ……………………. 28
2.15 Jasper Report ........…………………………………. ……………………. 29
BAB III ANALISIS DAN DESAIN SISTEM ………................……………….……... 30
3.1 Analisis Sistem ………………………………………..……………….……... 30
3.1.1 Analisis masalah sistem lama ..………………….………………….…... 30
3.1.2 Gambaran umun sistem baru ..………………….………………….…... 37
3.1.3 Pemodelan Use Case ..…………………………..………………….…... 38
3.2 Context Diagram …………………………………….. ………………….…... 41
3.3 DFD (Data Flow Diagram) ……………….………….……………….……... 42
3.3.1 Bagan Berjenjang …………...…………………. ………………….…... 42
3.3.2 Data Flow Diagram Level 0 ..…………………. ………………….…... 45
xvi
3.3.3 Data Flow Diagram Level 1 ..…………………. ………………….…... 47
3.4 Desain Basisdata ……………….……………………. ……………….……... 54
3.4.1 E-R Diagram …………………………………………………………. 54
3.4.2 Relasi Antar Tabel ……………………………………………………. 59
3.4.3 Rancangan Tabel ….…………………………… ……………………. 60
3.5 Rancangan Sistem ……………….…………………….……………….……... 69
3.5.1 Rancangan Tampilan Login ……....……............……………….……... 69
3.5.2 Rancangan Tampilan Utama ……....……............……………….……... 70
3.5.3 Rancangan Menu Item Data Provinsi …............ ……………….……... 71
3.5.4 Rancangan Menu Item Data Kodya / Kabupaten .……………….……... 71
3.5.5 Rancangan Menu Item Data SMP ...……............……………….……... 72
3.5.6 Rancangan Menu Item Data Mata Pelajaran Raport SMP .....……..…… 73
3.5.7 Rancangan Menu Item Data Mata Pelajaran UNAS SMP .....………… 74
3.5.8 Rancangan Menu Item Data Mata Pelajaran ........……………….……... 75
3.5.9 Rancangan Menu Item Detil Mata Pelajaran .........……………….……... 76
3.5.10 Rancangan Menu Item Data Extrakurikuler ........……………….……... 77
3.5.11 Rancangan Menu Item Data Kelas ...…............ ……………….……... 78
3.5.12 Rancangan Menu Item Siswa Keluar .……..........……………….……... 79
3.5.13 Rancangan Menu Item Input Calon Siswa ...........……………….……... 80
3.5.14 Rancangan Menu Item Pencarian Calon Siswa ...……………….……... 84
3.5.15 Rancangan Menu Item Input Calon Siswa yang Diterima ..……………. 85
3.5.16 Rancangan Menu Item Pencarian Calon Siswa yang Diterima ….….. 86
3.5.17 Rancangan Menu Item Pencarian Ortu Calon Siswa yang Diterima...... 87
xvii
3.5.18 Rancangan Menu Item Input Absensi & Kepribadian Siswa ...……… 88
3.5.19 Rancangan Menu Item Input Nilai Afektif ...... ……………….……... 89
3.5.20 Rancangan Menu Item Input Nilai Ulangan Harian .....……………… 90
3.5.21 Rancangan Menu Item Input Nilai Tugas ...........……………….……... 91
3.5.22 Rancangan Menu Item Input Nilai Psikomotorik ……………….…… 92
3.5.23 Rancangan Menu Item Input Nilai Extrakurikuler ……………….…… 93
3.5.24 Rancangan Menu Item Laporan Nilai per Kelas ....……………….…… 94
3.5.25 Rancangan Menu Item Laporan Tengah Semester ......………………. 96
3.5.26 Rancangan Menu Item Laporan Akhir Semester ...……………….…… 97
3.5.27 Rancangan Menu Item Kenaikan Kelas .............. ……………….…… 99
3.5.28 Rancangan Menu Item Konfigurasi .................. .....……………….…… 99
BAB IV IMPLEMENTASI ……………………………......…….…………………….. 100
4.1 Analisa Kebutuhan …………………………………....……………………... 100
4.2.1 Kebutuhan Perangkat Lunak ……..…………… ……………………... 100
4.2.2 Kebutuhan Perangkat Keras …………….……………………………... 101
4.2 Karakteristik Pengguna ……………………………..………………………... 102
4.3 Implementasi Database …………………..…………………………………... 102
4.4 Implementasi Program …………………..…………………………………... 102
4.4.1 Koneksi Database ……..……………..................……………………... 103
4.4.2 Form Login ……..……………............................……………………... 103
4.4.3 Form Utama ……..……………............................……………………... 105
4.4.4 Form-Form Data Master ...……............................……………………... 106
4.4.5 Form Input Data Calon Siswa …............................……………………... 112
xviii
4.4.6 Form Pencarian Calon Siswa ...............................……………………... 126
4.4.7 Form Input Calon Siswa yang Diterima ……..………………………... 128
4.4.8 Form Pencarian Calon Siswa yang Diterima
dan Form Pencarian Orangtua Calon Siswa
yang Diterima ……..……………........................……………………... 128
4.4.9 Form Absensi dan Kepribadian Siswa, Form
Nilai Afektif Deskripsi NMS NUS, Form Nilai
Deskripsi NMS NUS, Form Nilai Ulangan
Harian, Form Nilai Tugas, Form Nilai
Psikomotorik dan Form Nilai Extrakurikuler ... ……………………...
129
4.4.10 Form Laporan Nilai per Kelas ...............……..………………………... 132
4.4.11 Form Laporan Akhir Semester ...............……..………………………... 141
BAB V ANALISIS HASIL ..…………...……………………………………………... 156
5.1 Analisis Metodologi …………………………………. ……………………... 156
5.2 Analisis Tools .……..………………………………………………………... 156
5.2 Analisis Implementasi ………………………………………………………... 157
BAB V PENUTUP ……………………...……………………………………………... 158
5.1 Kesimpulan ……..…………………………………….……………………... 158
5.2 Saran ………………..………………………………………………………... 159
DAFTAR PUSTAKA
xix
DAFTAR GAMBAR
Gambar 2.1 Siklus Informasi ……..………………………………………………...... 7
Gambar 2.2 Simbol Use Case ……..………………………………………………...... 17
Gambar 2.1 Simbol Actor ……..……………………………………….... ………...... 17
Gambar 2.4 JCalencar ...........……..………………………………………………...... 28
Gambar 3.1 Use Case SI Akademik ………………………………………………...... 38
Gambar 3.2 Use Case Penerimaan Siswa Baru …………………………..……...…... 39
Gambar 3.3 Use Case Data Akademik …………………………………………..….... 39
Gambar 3.4 Use Case Data Nilai …………………………………………….….…… 40
Gambar 3.5 Use Case Data Master ……………………………..................……..…... 41
Gambar 3.6 Context Diagram …..………..……………………………… ……..….... 41
Gambar 3.7 Bagan Berjenjang ………….………..……………………….……...…... 42
Gambar 3.8 Bagan Berjenjang Lanjutan ……….………….………..…… ……...…... 43
Gambar 3.9 Bagan Berjenjang Lanjutan ……….………….………..…… ….…..…... 44
Gambar 3.10 Data Flow Diagram Level 0 (1) ..….………….………..… ……...…... 45
Gambar 3.11 Data Flow Diagram Level 0 (2) ...….………….………..… ……...…... 46
Gambar 3.12 Data Flow Diagram Level 1 Process 1 ……….………….…….…..…... 47
Gambar 3.13 Data Flow Diagram Level 1 Process 2 ……….………….…….…..…... 47
Gambar 3.14 Data Flow Diagram Level 1 Process 5 ……….………….…….…..…... 48
Gambar 3.15 Data Flow Diagram Level 1 Process 6 ……….………….…….…..…... 48
Gambar 3.16 Data Flow Diagram Level 1 Process 7 ……….………….…….…..…... 48
Gambar 3.17 Data Flow Diagram Level 1 Process 8 ……….………….…….…..…... 49
Gambar 3.18 Data Flow Diagram Level 1 Process 9 ……….………….…….…..…... 49
xx
Gambar 3.19 Data Flow Diagram Level 1 Process 10 ……….…………. ….…..…... 49
Gambar 3.20 Data Flow Diagram Level 1 Process 11 ……….…………. ….…..…... 50
Gambar 3.21 Data Flow Diagram Level 1 Process 12 ……….…………. ….…..…... 50
Gambar 3.22 Data Flow Diagram Level 1 Process 13 ……….…………. ….…..…... 50
Gambar 3.23 Data Flow Diagram Level 1 Process 14 ……….…………. ….…..…... 51
Gambar 3.24 Data Flow Diagram Level 1 Process 15 ……….…………. ….…..…... 51
Gambar 3.25 Data Flow Diagram Level 1 Process 18 ……….…………. ….…..…... 51
Gambar 3.26 Data Flow Diagram Level 1 Process 19 ……….…………. ….…..…... 52
Gambar 3.27 Data Flow Diagram Level 1 Process 20 ……….…………. ….…..…... 52
Gambar 3.28 Data Flow Diagram Level 1 Process 21 ……….…………. ….…..…... 52
Gambar 3.29 Data Flow Diagram Level 1 Process 22 ……….…………. ….…..…... 53
Gambar 3.30 Data Flow Diagram Level 1 Process 23 ……….…………. ….…..…... 53
Gambar 3.31 Data Flow Diagram Level 1 Process 24 ……….…………. ….…..…... 53
Gambar 3.32 E-R Diagram ……….…………………………………….. ….…..…... 54
Gambar 3.33 Relasi Antar Tabel ……….…………………………………….…..…... 59
Gambar 3.34 Rancangan Login ……….………………………………… ….…..…... 69
Gambar 3.35 Rancangan Input Tahun Ajaran ....………………………………...…... 70
Gambar 3.36 Rancangan Menu Utama ..………………………………… ……...…... 70
Gambar 3.37 Rancangan Menu Item Data Provinsi ……………………………...…... 71
Gambar 3.38 Rancangan Menu Item Data Kodya / Kabupaten …………………...…... 72
Gambar 3.39 Rancangan Menu Item Data SMP .………………………………...…... 73
Gambar 3.40 Rancangan Menu Item Data Mata Pelajaran SMP ……………….……. 74
Gambar 3.41 Rancangan Menu Item Data Mata Pelajaran UNAS SMP ………………. 75
xxi
Gambar 3.42 Rancangan Menu Item Data Mata Pelajaran .....…………………………. 76
Gambar 3.43 Rancangan Menu Item Data Detil Mata Pelajaran ....……………………. 77
Gambar 3.44 Rancangan Menu Item Data Extrakurikuler .……………… …….……… 78
Gambar 3.45 Rancangan Menu Item Data Kelas .……………………………….……… 79
Gambar 3.46 Rancangan Menu Item Data Siswa Keluar ……………………….……… 80
Gambar 3.47 Rancangan Input Calon Siswa Tab Pribadi Siswa ……………….……… 81
Gambar 3.48 Rancangan Input Calon Siswa Tab Alamat Siswa ……………….……… 81
Gambar 3.49 Rancangan Input Calon Siswa Tab Ayah Siswa …………...…….……… 82
Gambar 3.50 Rancangan Input Calon Siswa Tab Ibu Siswa …………......…….……… 82
Gambar 3.51 Rancangan Input Calon Siswa Tab Wali Siswa …………... …….……… 83
Gambar 3.52 Rancangan Input Calon Siswa Tab SMP Siswa ………….. …….……… 83
Gambar 3.53 Rancangan Input Calon Siswa Tab Akademik SMP ........……….……… 84
Gambar 3.54 Rancangan Menu Item Pencarian Calon Siswa ………….... …….……… 85
Gambar 3.55 Rancangan Input Calon Siswa yang Diterima ............................…….… 86
Gambar 3.56 Rancangan Pencarian Calon Siswa yang Diterima .....................….…… 87
Gambar 3.57 Rancangan Pencarian Orangtua Calon Siswa yang Diterima .….………. 88
Gambar 3.58 Rancangan Input Absensi dan Kepribadian Siswa ...........………….…… 89
Gambar 3.59 Rancangan Input Nilai Afektif ........…................................. ……….…… 90
Gambar 3.60 Rancangan Input Nilai Ulangan Harian ............................………….…… 91
Gambar 3.61 Rancangan Input Nilai Tugas ...........................................… ……….…… 92
Gambar 3.62 Rancangan Input Nilai Psikomotorik ................................………….…… 93
Gambar 3.63 Rancangan Input Nilai Extrakurikuler ................................………….…… 94
Gambar 3.64 Rancangan Laporan Nilai Per Kelas Tab Nilai Per Mapel ………….…… 95
xxii
Gambar 3.65 Rancangan Laporan Nilai Per Kelas Tab Nilai Rapor ..........……….…… 95
Gambar 3.66 Rancangan Laporan Tengah Semester ................................. ……….…… 96
Gambar 3.67 Rancangan Laporan Akhir Semester Tab Angka ...................……….…… 97
Gambar 3.68 Rancangan Laporan Akhir Semester Tab Deskripsi ...............……….…… 98
Gambar 3.69 Rancangan Laporan Akhir Semester Tab Extrakurikuler .....……….…… 98
Gambar 3.69 Rancangan Kenaikan Kelas ............................................. .....……….…… 99
Gambar 3.70 Rancangan Konfigurasi ........................................................ …….……… 99
Gambar 4.1 File CSV Dibuka dengan Notepad ..........................................…….………130
Gambar 4.2 File CSV Dibuka dengan Microsoft Office Excel .....................…….………130
xxiii
DAFTAR TABEL
Tabel 2.1 Simbol – Simbol pada DFD ........................................................…………..... 13
Tabel 2.2 Simbol Hubungan ERD ............……………………...................………….... 16
Tabel 2.3 Mahasiswa ...................................................................................………….... 18
Tabel 2.4 Variabel pada Kelas Event ...................................................……………….... 26
Tabel 2.5 Tipe Kejadian pada Kelas Event ..................................................………….... 26
Tabel 2.6 Interface Untuk Koneksi Database ..............................................………….... 27
Tabel 3.1 Struktur Tabel Calon Siswa ………………...............................………….... 60
Tabel 3.2 Struktur Tabel Siswa .................……………………...................………….... 61
Tabel 3.3 Struktur Tabel Orangtua .............................................................………….... 61
Tabel 3.4 Struktur Tabel Alamat ........................................................……………….... 62
Tabel 3.5 Struktur Tabel Piagam .................................................................………….... 62
Tabel 3.6 Struktur Tabel Rapor_SMP .......................................................………….... 62
Tabel 3.7 Struktur Tabel Siswa_Keluar ...........................…………………………….... 63
Tabel 3.8 Struktur Tabel Siswa_tdk_naik_kelas ..................………………………….... 63
Tabel 3.9 Struktur Tabel Kelas ...................................................................……………. 64
Tabel 3.10 Struktur Tabel Detil_kelas_siswa ...............................................……………. 64
Tabel 3.11 Struktur Tabel Extra ...................................................................……………. 64
Tabel 3.12 Struktur Tabel Detil_nilai_extra .................................................……………. 64
Tabel 3.13 Struktur Tabel Mapel ..................................................................……………. 65
Tabel 3.14 Struktur Tabel Detil_mapel ........................................................……………. 65
Tabel 3.15 Struktur Tabel Detil_mapel_yg_ditempuh .................................……………. 65
Tabel 3.16 Struktur Tabel Detil_nilai_sikap .................................................……………. 65
xxiv
Tabel 3.17 Struktur Tabel Nilai_sikap ..........................................................……………. 66
Tabel 3.18 Struktur Tabel Nilai_psikomotorik .............................................……………. 66
Tabel 3.19 Struktur Tabel Detil_nilai_kognitif ............................................……………. 67
Tabel 3.20 Struktur Tabel Nilai_kognitif .....................................................……………. 67
Tabel 3.9 Struktur Tabel Nilai_tugas ......................................................... ……………. 68
Tabel 3.9 Struktur Tabel Provinsi .............................................................. ……………. 68
Tabel 3.9 Struktur Tabel Kabupaten .............................................................……………. 68
Tabel 3.9 Struktur Tabel SMP ................................................................... ……………. 69
Tabel 3.9 Struktur Tabel MapelSMP ......................................................... ……………. 69
Tabel 3.9 Struktur Tabel MapelUNAS .......................................................……………. 69
xxv
1
BAB I
PENDAHULUAN
1.1 Latar Belakang Masalah
Pemanfaatan teknologi informasi dapat membantu manusia
mengurangi pekerjaan yang dilakukannya secara manual. Pekerjaan yang
dilakukan secara manual oleh manusia sangat memungkinkan timbulnya
resiko yang disebabkan oleh keterbatasan manusia. Selain itu, pekerjaan
yang dilakukan secara manual oleh manusia membuang waktu dan tidak
efisien. Dengan penggunaan teknologi informasi, resiko yang disebabkan
keterbatasan manusia dapat teratasi, mengurangi waktu yang dibutuhkan
untuk melakukan suatu pekerjaan dan proses dapat berjalan efektif. Hal ini
dikarenakan teknologi informasi memproses data dengan efektif dan akurat.
Salah satu pemanfaatannya adalah untuk pemrosesan data akademik
sekolah.
Pada kebanyakan sekolah, pemrosesan data akademik dilakukan oleh
wali kelas atau karyawan sekolah. Pemrosesan data akademik meliputi
pencatatan data pendaftaran siswa baru, pencatatan data siswa, pencatatan
data akademik siswa dan pembuatan laporan hasil belajar siswa serta
laporan-laporan lainnya. Data akademik yang diproses secara manual dan
disimpan dalam bentuk hardcopy (kertas) oleh guru atau karyawan
memungkinkan timbulnya resiko data hilang, kesalahan penyajian data dan
2
membuang waktu karena keterbatasan guru atau karyawan yang
memprosesnya.
1.2 Rumusan Masalah
Dari latar belakang masalah di atas, dapat dirumuskan suatu rumusan
masalah yaitu bagaimana mengimplementasikan
1. pencatatan data-data master seperti data provinsi, data kodya /
kabupaten, data SMP, data mata pelajaran raport SMP serta data
mata pelajaran UNAS SMP,
2. pencatatan data akademik yang meliputi data mata pelajaran, data
mata pelajaran yang ditempuh oleh setiap siswa beserta nilai ulangan
harian dan perhitungan nilai akhir untuk rapor, data pendaftaran
siswa yang meliputi data pribadi calon siswa, detil rapor SMP calon
siswa, piagam-piagam calon siswa serta data orangtua calon siswa,
3. pembuatan laporan-laporan yang meliputi rapor tiap semester, rapor
tengah semester, laporan nilai siswa per kelas untuk tiap mata
pelajaran, daftar calon siswa putri berdasarkan SMP asal, daftar
calon siswa putra berdasarkan SMP asal, daftar calon siswa putri
berdasarkan daerah asal, daftar calon siswa putra berdasarkan daerah
asal, daftar orangtua calon siswa putri, daftar orangtua calon siswa
putra, daftar siswa putri yang diterima dan daftar siswa putra yang
diterima,
4. penanganan kenaikan kelas siswa dan rekomendasi penjurusan
3
5. pencatatan siswa yang Drop Out dan keluar
dalam sebuah program sehingga dapat diterapkan dalam sebuah sekolah
untuk membantu karyawan atau guru dalam pencatatan data akademik yang
dilakukan serta pembuatan laporan-laporan yang dibutuhkan.
1.3 Batasan Masalah
Dalam penelitian Tugas Akhir ini terdapat beberapa batasan, antara
lain:
1. Sistem informasi ini hanya menangani pencatatan data calon siswa,
pencatatan data calon siswa yang diterima, pencatatan data pribadi
siswa, pencatatan mata pelajaran, pencatatan extrakurikuler, pencatatan
nilai yang diperoleh siswa berserta perhitungan nilai akhirnya untuk
aspek kognitif dan psikomotorik dan pencatatan nilai kepribadian
siswa serta nilai extrakurikuler.
2. Sistem tidak menangani penyatuan data-data pendaftaran online
dengan data-data pada sistem.
3. Struktur database yang digunakan sistem ini menjadi satu dengan
sistem informasi keuangan dan sistem informasi kepegawaian.
4. Sistem berbasis client-server hanya pada sistem database (share
database).
5. Bahasa pemrograman yang digunakan adalah Java 2 Standard Edition
versi 5 dan menggunakan database server MySQL 5.0 yang bekerja di
bawah sistem operasi Windows.
4
1.4 Tujuan dan Manfaat Penelitian
Tujuan dari penelitian dalam Tugas Akhir ini adalah untuk
mengimplementasikan pencatatan data akademik, pendaftaran siswa,
pembuatan laporan serta penanganan kenaikan kelas siswa dalam sebuah
program sehingga dapat diterapkan dalam sebuah sekolah dengan
menggunakan teknologi J2SE dan MySQL 5.
Manfaat dari penelitian dalam Tugas Akhir ini adalah :
1. Membantu pengolahan data penerimaan siswa baru, pengolahan data
siswa dan pengolahan data akademik siswa.
2. Membantu mempercepat pembuatan laporan-laporan hasil belajar siswa.
1.5 Metodologi Penelitian
Metodologi penelitian yang digunakan dalam pemodelan sistem pada
Tugas Akhir ini adalah sebagai berikut:
1. Studi pustaka tentang Pengolahan database MySQL 5 dengan J2SE,
Teknik Pencentakan Laporan, dan materi-materi lain yang
berhubungan dengan pembuatan sistem. Bahan referensinya diambil
baik dari buku-buku maupun hasil penelusuran materi di internet.
2. Melakukan pendekatan SDLC (Software Development Life Cycle)
menurut Fabbri dan Schwab (1992).
a. Analisis Sistem (Analysis)
Analisis sistem berguna untuk mengidentifikasi dan
mengevaluasi permasalahan-permasalahan yang dihadapi dan
5
kebutuhan-kebutuhan yang diharapkan, sehingga dapat
menyelesaikan hambatan-hambatan yang terjadi ke arah
perbaikan sistem. Analisis sistem dilakukan dengan cara
wawancara, dan untuk memudahkan pemodelan sistem
informasi ini digunakan DFD (Data Flow Diagram).
b. Rancangan (Design)
Merupakan langkah multi proses yang memusatkan kerja pada
perancangan sistem secara umum, seperti : desain database
dan desain input Output.
c. Implementasi (Implementation).
Setelah melakukan rancangan system, maka hasil rancangan
tersebut diterjemahkan kedalam bahasa pemrograman
(coding).
3. Menganalisa sistem.
Kegiatan yang dilakukan pada tahap ini adalah mencari atau
menemukan kelebihan dan kekurangan dari sistem yang dibuat.
1.6 Sistematika Penulisan
Sistematika penulisan tugas akhir ini adalah sebagai berikut:
BAB I. PENDAHULUAN
Bab ini memberikan gambaran singkat namun menyeluruh mengenai
sistem yang dibuat yang meliputi latar belakang masalah, rumusan
masalah, batasan masalah, tujuan penelitian, metodologi penelitian,
6
dan sistematika penulisan.
BAB II. LANDASAN TEORI
Bab ini berisi teori-teori yang mendukung dan memberi landasan
dalam analisa, desain dan implementasi sistem.
BAB III. ANALISIS DAN DESAIN SISTEM
Bab ini menjelaskan analisa dan desain sistem yang akan dibangun.
BAB IV. IMPLEMENTASI SISTEM
Bab ini menjelaskan tentang proses penerapan dari analisa dan desain
sistem ke dalam proses pengkodean.
BAB V. ANALISIS HASIL
Dalam bab ini berisi hasil-hasil dari analisa metodologi, analisa
manfaat, analisa teknologi, kelebihan dan kekurangan sistem.
BAB VI. PENUTUP
Bab ini berisi kesimpulan dan saran-saran dari sistem yang dibuat.
7
BAB II
LANDASAN TEORI
2.1 Konsep Dasar Informasi
Menurut Davis (1999), informasi dapat didefiniskan sebagai berikut :
Informasi adalah data yang telah diproses menjadi sebuah bentuk
yang berarti bagi penerimanya dan bermanfaat dalam pengambilan
keputusan saat ini atau saat yang akan datang.
Gambar 2.1 memperlihatkan siklus informasi (Burch dan Grudnitski,
1989), yang menggambarkan pengolahan data menjadi informasi dan
pemakaian informasi untuk mengambil keputusan, hingga ahkirnya dari
tindakan hasil pengambilan keputusan tersebut akan dihasilkan data
kembali.
Gambar 2.1 Siklus Informasi
8
2.2 Konsep Dasar Sistem
Menurut Abdul Kadir (2003), sistem dapat didefinisikan sebagai
berikut:
Sekumpulan elemen yang saling terkait atau terpadu yang
dimaksudkan untuk mencapai suatu tujuan.
Ada beberapa elemen yang membentuk sebuah sistem, yaitu :
1. Tujuan
Setiap sistem memiliki tujuan (goal), mungkin hanya satu atau
banyak. Tujuan inilah yang menjadi pemotivasi yang mengarahkan
sistem. Tanpa tujuan, sistem menjadi tidak terarah dan tidak
terkendali. Tujuan antar satu sistem dengan sistem lain tentu saja
berbeda.
2. Masukkan
Masukkan (input) sistem adalah segala sesuatu yang masuk ke dalam
sistem dan selanjutnya menjadi bahan untuk diproses.
3. Keluaran
Keluaran (output) merupakan hasil dari pemrosesan. Pada sistem
informasi, keluaran bisa berupa suatu informasi, saran, cetakan
laporan, dan sebagainya.
4. Proses
Proses merupakan bagian yang melakukan perubahan atau
transformasi dari masukkan menjadi keluaran yang berguna. Pada
sistem informasi, proses dapat berupa tindakan yang bermacam-
9
macam. Misal, meringkas data, melakukan perhitungan dan
mengurutkan data.
5. Batas
Batas (Boundary) sistem adalah, pemisah antara sistem dan daerah di
luar sistem. Batas sistem menentukan konfigurasi, ruang lingkup,
atau kemampuan sistem.
2.3 Konsep Dasar Sistem Informasi
Menurut (Hall, 2001), yang dimaksudkan dengan sistem informasi
adalah:
Sebuah rangkaian prosedur formal di mana data dikelompokkan,
diproses menjadi informasi, dan didistribusikan kepada pemakai.
Jenis-jenis sistem informasi :
1. Sistem Pemrosesan Transaksi (TPS)
TPS merupakan hasil perkembangan dari pembentukan kantor
elektronik, dimana sebagian dari pekerjaan rutin diotomatisasi
termasuk untuk pemrosesan transaksi. Pada TPS, data yang
dimasukkan merupakan data-data transaksi yang terjadi. Kemudian
data-data tersebut akan diproses untuk menghasilkan informasi yang
akurat sesuai dengan kebutuhannya.
10
2. Sistem Informasi Manajemen (SIM)
SIM adalah sebuah kelengkapan pengelolaan dari proses-proses yang
menyediakan informasi untuk manajer guna mendukung operasi-
operasi dan pembuatan keputusan dalam sebuah organisasi.
3. Sistem Pendukung Keputusan (SPK)
SPK merupakan peningkatan dari SIM dengan penyediaan prosedur-
prosedur khusus dan pemodelan yang unik yang akan membantu
manajer dalam memperoleh alternatif keputusan.
4. Sistem Informasi Akuntansi (SIA)
SIA merupakan sistem informasi yang menyediakan informasi yang
dipakai oleh fungsi akuntansi. Sistem ini mencakup semua transaksi
yang berhubungan dengan keuangan dalam perusahaan.
5. Sistem Informasi Manufaktur (SIM)
Sistem yang bekerja sama dengan sistem informasi lain untuk
mendukung manajemen perusahaan dalam menyelesaikan masalah
yang berhubungan dengan produk atau jasa yang dihasilkan
perusahaan.
6. Sistem Informasi Pemasaran (SIP)
SIP menyediakan informasi yang dipakai oleh fungsi pemasaran.
Misalnya berupa ringkasan penjualan.
7. Sistem Informasi Akademik
Sistem yang digunakan untuk membantu proses belajar mengajar di
suatu instansi pendidikan.
11
8. Sistem Informasi SDM
Sistem informasi yang menyediakan informasi yang dipakai oleh
fungsi personalia. Misalnya berisi informasi gaji, ringkasan pajak,
tunjangan hingga kinerja pegawai.
2.4 Pengembangan dan Pengadaan SI
Untuk mengembangkan suatu sistem inforomasi, kebanyakan
perusahaan menggunakan suatu metodologi yang disebut metodologi
pengembangan sistem. Yang dimaksud dengan metodologi ini adalah, suatu
proses standar yang diikuti oleh organisasi untuk melaksanakan seluruh
langkah yang diperlukan untuk menganalisa, merancang,
mengimplementasikan, dan memelihara sistem (Hoffer dkk., 1998).
Pada pengembangan sistem informasi, sistem informasi juga memiliki
daur hidup. Daur hidupnya disebut secara lebih umum(Fabbri dan Schwab,
1992) SDLC (System Development Life Cycyle) atau daur hidup
pengembangan sistem. SDLC merupakan metodologi klasik yang digunakan
untuk mengembangkan, memelihara, dan menggunakan sistem informasi.
Metode ini mencakup beberapa fase atau tahapan, yaitu
1. Analisis Sistem
Tahapan analisis dimulai karena adanya permintaan terhadap sistem
yang baru. Permintaan dapat datang karena pihak perusahaan melihat
adanya peluang yang baru. Tujuan utama analisis sistem adalah
12
untuk menentukan hal-hal detail tentang apa yang akan dikerjakan
oleh sistem yang diusulkan. Analisis mencakup studi kelayakan dan
analisis kebutuhan.
2. Desain Sistem
Target ahkir Desain ini adalah menghasilkan rancangan yang
memenuhi kebutuhan yang ditentukan selama tahapan analisis
sisitem. Hasil ahkirnya berupa spesifikasi rancangan yang sangat
rinci sehingga mudah diwujudkan pada saat pemograman.
3. Implementasi Sistem
Pada tahap ini meruapakan kegiatan untuk mengimplementasikan
rancangan yang telah disusun kedalam bahasa pemrograman agar
dapat menghasilkan suatu sistem aplikasi.
4. Pengujian
Pengujian dimaksudkan untuk memastikan bahwa program yang
dibuat sudah sesuai dengan rancangan yang diinginkan dan terbebas
dari kesalahan.
5. Pemeliharaan
Pada tahap ini dilakukan pemeliharaan terhadap sistem yang sudah
jadi, yang meliputi : penambahan fungsi atau peningkatan kualitas
sistem, mem-backup database.
13
2.5 Alat Bantu Pengembangan Sistem
1. Data Flow Diagram (DFD)
DFD menggambarkan sistem yang sedang berjalan dan diusulkan secara
logika tanpa mempertimbangkan lingkungan fisik data. DFD memiliki
beberapa simbol yaitu :
Tabel 2.1 Simbol-simbol pada data flow diagram
Simbol Nama Keterangan
Kesatuan luar
(external entity)
Kesatuan di lingkungan luar sistem
yang berupa orang, organisasi atau
sistem lain yang akan memberikan
input atau menerima output dari
sistem.
Proses (proses) Kegiatan atau kerja yang dilakukan
oleh orang, mesin atau komputer
dari arus data yang masuk kedalam
proses untuk dihasilkan arus data
yang akan keluar dari proses.
Simbol arus
data (data flow)
Arus data yang mengalir diantara
proses, simpan data dan kesatuan
luar
Simbol
simpanan data
(data store)
Dapat berupa file atau database pada
sistem komputer, arsip, catatan
manual, kotak tempat data, table
acuan manual, buku agenda.
Dalam membuat DFD mempunyai beberapa aturan, yaitu :
a) Tidak boleh menghubungkan external entity ke external entity secara
langsung.
14
b) Tidak boleh menghubungkan data storage ke data storage lainnya
secara langsung.
c) Tidak boleh menghubungkan data storage dengan external entity
secara lansung.
d) Pada setiap proses harus ada data flow masuk dan keluar dan
sebaliknya.
e) Tidak boleh ada proses dari arus data tidak memiliki nama (nama
harus ada)
f) Tidak boleh ada proses yang tidak memiliki nomor.
Selain itu DFD mempunyai beberapa metode-metode membuatnya,
antara lain :
a) Mulai dari yang umum sampai yang detail
b) Jabarkan setiap proses
c) Pelihara konsistensi antar proses
d) Berikan label nama yang bermakna untuk ke empat simbol tersebut.
e) Menjaga konsistensi dengan model lainnya
Ada beberapa tahapan dalam pembuatan DFD, antara lain :
a) Buat Context Diagram (Top Level Diagram)
b) Buat diagram level 0
15
c) Buat diagram level 1 (diagram detail)
Diagram ini digunakan untuk menjelaskan tahapan-tahapan proses
dari diagram level 0.
Dalam membuat suatu DFD terdapat beberapa cara-cara, antara lain:
a) Identifikasi semua external entity dalam sistem
b) Identifikasi semua input dan ouput yang terlibatdengan external
entity.
c) Urutan pengambaran dimulai dari context diagram, diagram level 0,
diagram level 1.
2. Entity Relationship Diagram (ERD)
Entity Relationship Diagram (ERD) adalah metode konseptual
yang mendeskripsikan hubungan antara penyimpanan dalam DFD
untuk memodelkan struktur data dan hubungan antar data. ERD
mempunyai tiga macam simbola yang digunakan (Peter Chen, 1996) :
a) Simbol Entiti
Suatu objek yang dapat di identifikasikan dalam lingkungan
pemakai dan sesuatu yang penting bagi pemakai dalam konteks
system yang dibuat.
16
b) Atribut
Atribut berfungsi untuk mendeskripsikan entiti yang dalam
hal ini untuk setiap ERD bisa terdapat lebih dari satu atribut.
c) Hubungan
Hubungan adalah asosiasi atau kaitan antara dua entitas.
Sebagai mana halnya entiti maka dalam hubunganpun harus
dibedakan antara hubungan atau bentuk hubungan antar entiti
dengan isi dari hubungan itu sendiri.
Tabel 2.2 Simbol hubungan ERD
3 Use Case Diagram
Use case diagram adalah sebuah diagram yang menggambarkan
interaksi antara sistem, eksternal sistem dan pemakai. Use case
17
diagram dapat digunakan selama proses analisis untuk menangkap
semua kebutuhan sistem (system requirement) dan untuk memahami
bagaimana sistem seharusnya bekerja. Selama tahap desain, use case
diagram menetapkan perilaku sistem (system behaviour) pada saat
diimplementasikan. Dalam sebuah model mungkin terdapat satu atau
lebih use case diagram.
Use case merupakan bagian dari keseluruhan sistem. Use case
merupakan sebuah pekerjaan tertentu, misalnya login ke sistem,
membuat sebuah daftar belanja, dan sebagainya. Seorang atau sebuah
actor adalah sebuah entitas manusia atau mesin yang berinteraksi
dengan sistem untuk melakukan pekerjaan-pekerjaan tertentu.
Gambar 2.2 Simbol Use Case
Gambar 2.3 Simbol Actor
2.6 Database
Database merupakan kumpulan data yang terorganisasi dalam file-file
terstruktur yang khusus digunakan untuk menampung data. Contoh database
adalah buku induk mahasiswa. Buku ini berisi kumpulan data tentang
18
mahasiswa dengan item meliputi nim, nama, tanggal lahir dan sebagainya.
Contoh tabel database :
Tabel 2.3 Mahasiswa
Nim Nama Alamat Tanggal Lahir
045314005 Liliani Gendeng Cantel 03-09-1986
045314021 Ayni Ladisa Lampung 11-09-1986
Jika tabel di atas dilihat sebagai sebuah tabel database, berikut ini adalah
unsur-unsur yang membentuk database tersebut :
1. Tabel : kumpulan record sejenis yang mempunyai panjang elemen
yang sama, atribut yang sama, namun berbeda nilai datanya.
Kumpulan data di atas merupakan contoh tabel data mahasiswa.
2. Field atau atribut : data item yang digunakan untuk menerangkan
suatu entitas dan mempunyai harga tertentu. Pada tabel di atas
memiliki 4 buah field yaitu Nim, Nama, Alamat dan Tanggal
Lahir.
3. Data value : informasi atau data aktual yang disimpan pada tiap
data, elemen atau atribut. Atribut nama menunjukkan tempat
informasi nama mahasiswa disimpan, nilai datanya adalah Liliani
atau Ayni Ladisa yang merupakan isi data nama mahasiswa.
4. Record atau tuple : kumpulan elemen yang saling berkaitan yang
menginformasikan tentang suatu entitas secara lengkap. Satu
record mewakili satu data atau informasi. Sebagai contoh,
045314005, Liliani, Gendeng Cantel, 03-09-1986 merupakan
19
contoh yang mewakili satu record. Tabel di atas memiliki 2 buah
record.
2.7 Organisasi Database dengan MySQL
MySQL adalah perangkat lunak pengolah database. Badan yang
membuat MySQL adalah MySQL AB, Swedia. MySQL merupakan
perangkat lunak yang bersifat open source. Sesuai dengan namanya, bahasa
standar yang digunakan oleh MySQL adalah SQL. SQL merupakan
singkatan dari Structured Query Language. SQL merupakan bahasa standar
untuk pengolahan database.
Sintaks - sintaks dalam bahasa MySQL antara lain :
1. Create Database.
Perintah ini digunakan untuk membuat suatu database. Sintaksnya
sebagai berikut :
create database[if not exist] namadatabase;
Jika pernyataan If Not Exist tidak disertakan, maka apabila ada nama
yang database yang sama dengan nama database di server, akan
terjadi error.
2. Create Table.
Perintah ini digunakan untuk membuat tabel. Sintaksnya adalah
sebagai berikut :
create table namatabel
(
struktur
20
);
3. Update Record.
Update Record untuk memodifikasi atau mengubah isi record tertentu
dengan menggunakan perintah sebagai berikut:
update namatabel set kolom1=nilaibaru1,
kolom2=nilaibaru2 … where kriteria;
5. Insert.
Perintah ini digunakan untuk menyisipkan suatu data ke dalam tabel.
Data yang disisipkan dapat berupa data yang diambil dari tabel lain,
ataupun data yang berupa nilai - nilai tertentu yang disebutkan secara
eksplisit. Untuk data yang diambil dari tabel lain, sintaksnya sebagai
berikut :
insert [into] namatabel [(namafiled…)] perintah
select
Untuk data yang disebutkan secara eksplisit, sintaksnya sebagai berikut
:
insert[into] namatabel [(namafiled…)] VALUES
ekspresi
7. Select.
Perintah ini digunakan untuk mengambil data dari suatu tabel.
Sintaksnya sebagai berikut :
select {*:namafield} from namatabel
[into tabeltujuan] [where kondisi];
21
8. Delete.
Perintah ini digunakan untuk menghapus sebuah record dari tabel.
Sintaksnya sebagai berikut :
delete from namatabel where kondisi;
9. Use.
Perintah ini digunakan untuk memilih database yang akan digunakan.
Sintaksnya sebagai berikut :
use namatabel;
2.8 Strored Procedure, Stored Function dan Trigger
Stored procedure adalah suatu sub program atau sekelompok perintah
SQL yang tersimpan dan menyatu dalam suatu database. Stored function
adalah sebuah blok PL/SQL yang memiliki nama yang mengembailkan nilai
balik. Trigger adalah sebuah blok PL/SQL atau procedur PL/SQL yang
berhubungan dengan table, view, schema atau database yang akan
dieksekusi secara implicit pada saat kejadian tertentu terjadi. Sintak :
1. Membuat procedure. Perintah :
CREATE PROCEDURE nama_procedure ([parameter_proc[,…]])
[characteristic ..] routine_body
2. Membuat function. Perintah :
CREATE FUNCTION nama_function ([parameter_proc[,…]])
RETURN type [characteristic ..] routine_body
3. Membuat trigger. Perintah :
CREATE [DEFINER = { user | current_user } ] TRIGGER
trigger_name trigger_time trigger_event ON table_name
FOR EACH ROW trigger_statement
22
4. Pemanggilan procedure. Perintah :
CALL nama_proc(parameter_proc);
5. Pemanggilan function. Perintah :
SELECT nama_function(parameter_function);
2.9 Transaksi
Transaksi adalah serangkaian kelompok dari operasi manipulasi
database, yang dilakukan seolah-olah sebagai unit kerja secara individu.
Dengan kata lain, transaksi belum dapat dipenuhi jika setiap operasi
individu di dalam sebuah kelompok kerja berhasil dijalankan. Jika sebuah
operasi di dalam transaksi gagal dijalankan, maka keseluruhan transaksi
juga akan gagal dijalankan.
Secara praktis, caranya dengan mengelompokkan banyak query
SQL ke dalam sebuah group dan mengeksekusi seluruh query tersebut
secara bersama-sama sebagai bagian dari sebuah transaksi.
Terdapat 4 standar yang dimiliki dari transaksi pada MySQL, yang
lebih dikenal dengan “ACID”:
1. Atomicity : Memastikan bahwa seluruh operasi dalam unit kerja
diselesaikan dengan baik.
2. Consistency: Memastikan bahwa database secara tepat mengubah
keadaan pada transaksi yang berhasil dijalankan dengan commit.
3. Isolation: Memungkinkan transaksi beroperasi secara independent.
4. Durability: Memastikan bahwa hasil dari transaksi dapat bertahan
apabila sistem mengalami kegagalan.
23
Tidak semua jenis tabel pada MySQL mendukung transaksi. Hanya
saja tabel InnoDB dan BDB yang mendukung transaksi.
2.10 Pemrograman Java Berorientasi Objek
Setiap program Java, agar bisa berjalan, minimal memiliki satu
buah kelas. Oleh karena itu Java sering disebut sebagai bahasa
pemrograman berorientasi objek murni.
Karena kelas merupakan suatu entitas data yang mendukung objek,
maka ia harus memenuhi kriteria-kriteria berikut:
1. Memiliki sejumlah informasi sehingga satu objek dapat dibedakan dari
objek lain karena informasi ini.
2. Sesuai dengan prinsip utama pemrograman berorientasi objek, bahwa
data tidak bersifat pasif, tetapi dapat melakukan aksi tertentu (aktif).
Oleh karena itu kelas harus memiliki sejumlah aksi yang dapat
dilaksanakan oleh objek.
3. Dapat menginstansiasi objek, artinya menciptakan objek dari tipenya.
Adanya kriteria-kriteria ini melahirkan struktur kelas untuk
memenuhinya, yaitu:
1. Field data, menyatakan informasi yang dibawa kelas.
2. Method, menyatakan aksi yang dapat dilakukan objek dari kelas.
3. Constructor, digunakan untuk menciptakan objek dari kelas.
24
2.11 GUI dengan Java
Terdapat 2 item yang penting dalam pembuatan GUI yaitu component
dan container. Component adalah item-item yang dapat ditampilkan pada
sebuah graphics screen seperti tombol, textfield dan lain-lain. Sedangkan
container adalah sebuah item yang digunakan untuk menampung beberapa
set komponen sehingga menjadi satu grup.
Bagian-bagian dasar GUI :
1. JLabel, kelas ini digunakan untuk membuat label. Tampilan :
2. JTextField, kelas ini digunakan untuk membentuk isian text.
Tampilan :
3. JButton, kelas ini digunakan untuk membentuk tombol. Tampilan:
4. JComboBox, kelas ini digunakan untuk membentuk menu optional.
Tampilan:
5. JMenuBar, kelas ini digunakan untuk membentuk bar menu.
Tampilan :
6. JMenu, kelas ini digunakan untuk membentuk item menu pada
menu bar. Tampilan :
25
7. JmenuItem, kelas ini digunakan untuk membentuk menu item pada
menu. Sintak :
8. JFrame, kelas ini digunakan untuk membuat window.
JPanel, kelas ini digunakan untuk membuat suatu area dalam
window.
2.12 Event Handling
Event handling berfungsi untuk memproses kejadian masukan dari
pemakai, misalnya ketika pemakai meng-klik suatu tombol. Dengan
menuliskan kode pada metode actionPerformed yang dimilik tombol, kita
dapat melakukan pengendalian terhadap tanggapan dari pemakai. Contoh
potongan program :
private void
btnOkActionPerformed(java.awt.event.ActionEvent evt){
System.out.println(“Ini action performed btnOk…”);
}
Pada saat btnOk diklik, maka statement yang dieksekusi adalah
System.out.println(“Ini action performed btnOk…”);
Argumen dari metode actionPerformed di atas adalah objek berkelas Event.
Event merupakan kelas pada paket AWT. Objek berkelas Event memiliki
sejumlah variabel yang bersifat public. Daftar variabel pada kelas Event :
26
Tabel 2.4 Variabel pada Kelas Event
Variabel dan bentuk deklarasi Keterangan
public Object target; Menyatakan objek yang mengalami
kejadian
public long when; Menyatakan waktu terjadinya kejadian
public int id; Menyatakan identitas atau tipe
kejadian
public int x; Menyatakan koordinat tempat
terjadinya kejadian
public int y; Menyatakan koordinat tempat
terjadinya kejadian
public int key; Menyatakan kode tombol yang
ditekan (berlaku untuk keadian yang
berhubungan dengan keyboard)
public Object arg; Menyatakan argumen untuk kejadian.
Nilainya tergantung pada tipe
kejadian.
Daftar tipe kejadian yang didefinisikan pada kelas Event :
Tabel 2.5 Tipe Kejadian pada Kelas Event
Tipe kejadian Keterangan
ACTION_EVENT Kejadian yang berhubungan dengan
tindakan pemakai terhadap komponen-
komponen seperti tombol, checkbox
dll
GOT_FOCUS Kejadian yang berlangsung saat suatu
komponen mendapatkan fokus
LOST_FOCUS Kejadian yang berlangsung saat suatu
komponen kehilangan fokus
27
WINDOW_DESTROY Kejadian saat window ditutup
2.13 Koneksi Java MySQL
Koneksi Java MySQL menggunakan JDBC. Yang perlu diketahui adalah
sejumlah interface yang tersedia pada paket java.sql. Daftar interface untuk
koneksi database :
Tabel 2.6 Interface Untuk Koneksi Database
Interface Keterangan
Connection Mendefinisikan koneksi ke database
Driver Mendefinisikan driver yang digunakan untuk
melakukan koneksi ke suatu database. Kelas yang
mengimplementasikan interface ini juga terdapat pada
paket java.sql dengan nama DriverManager.
Statement Mendefinisikan sejumlah metode yang berhubungan
dengan pernyataan SQL.
ResultSet Interface yang mendefinisikan pengaksesan hasil
pernyataan SQL.
Contoh koneksi database MySQL dengan nama database:
public static boolean insertRelasi(String nama) {
try {
Class.forName("com.mysql.jdbc.Driver");
Connection connection =
DriverManager.getConnection("jdbc:mysql://localhost:3306/k
ambium", “kambium”,”kambium”);
Statement statement =
connection.createStatement();
String sql ="insert into relasi(nama)
values('"+nama+"')";
28
statement.executeUpdate(sql);
statement.close();
connection.close();
return true;
} catch(Exception e){
System.out.println("Errror :" +e);
return false;
}
}
2.14 Jcalendar
JCalendar adalah komponen GUI untuk memilih tanggal.
JCalendar tersusun oleh beberapa Java bean yang lain, yaitu JDayChooser,
JMonthChooser, dan JYearChooser. Tidak terlupakan bagian dari package
juga terdapat JDateChooser, yang merupakan tersusun dari JDateEditor
(untuk mengganti tanggal secara langsung) dan tombol untuk membuka
JCalendar untuk memilih tanggal.
Gambar 2.4 Jcalendar
JCalendar memperbolehkan untuk memilih tahun, bulan, dan
tanggal. JYearChooser adalah JSpinField yang memperbolehkan untuk
memilih tahun dengan memasukkan angka tahun dari keyboard atau
dengan tombol spin untuk menambah atau mengurangi tahun.
29
JMonthChooser adalah JComboBox yang memungkinkan untuk memilih
bulan dengan combo box atai dengan tombol spin. JDayChooser
memungkinkan untuk memilih tanggal dengan meng-klik pada angka
tanggal.
2.15 Jasper Report
Jasper Reports adalah sebuah pembuat laporan dari Java yang
sangat handal. Jasper Reports mempunyai kemampuan untuk mengirimkan
hasilnya dalam bentuk tampilan di layar, kemudian mencetaknya ke
printer atau ke file PDF, HTML, RTF, XLS, CSV, dan XML. Jasper
Reports ditulis dengan bahasa pemrograman Java dan dapat digunakan
pada berbagai macam aplikasi Java, termasuk J2EE atau aplikasi web.
30
BAB III
ANALISIS DAN DESAIN SISTEM
Bab ini akan membahas analisis perangkat lunak yang akan dibangun dan
perancangan sistem berdasarkan analisis yang sudah didapat. Analisa sistem
adalah proses untuk menguraikan suatu sistem informasi yang utuh ke dalam
bagian-bagian komponennya dengan maksud untuk mengidentifikasikan dan
mengevaluasi permasalahan-permasalahan yang ada.
3.1 Analisis Sistem
3.1.1 Analisis masalah sistem lama
Pemrosesan penerimaan siswa baru dan data akademik pada suatu
SMA, dalam tugas akhir ini diambil studi kasus SMA Pangudi Luhur Van
Lith Muntilan, masih dilakukan secara manual yang dikerjakan oleh
manusia.
Untuk pendaftaran siswa baru, dibentuk suatu tim yang
menanganinya. Calon siswa diharuskan mengisi formulir pendaftaran. Dari
formulir-formulir pendafataran calon siswa baru tersebut, tim
mengolahnya dan membuat daftar calon siswa putra berdasarkan SMP
asal, daftar calon siswa putri berdasarkan SMP asal, daftar calon siswa
putra berdasarkan daerah asal dan daftar calon peserta putri berdasarkan
daerah asal.
31
Calon siswa mengikuti tes masuk yang meliputi tes berpikir verbal
A (analogi verbal) yang mengukur kemampuan berpikir verbal khususnya
dalam memahami relasi-relasi antara pengertian-pengertian yang
dinyatakan secara verbal, tes berpikir verbal B (verbal klasiifikasi) yang
mengukur kemampuan berpikir secara logis, khususnya dalam
mengklasifikasikan pengertian-pengertian, tes matematis A (barisan
bilangan) yang mengukur kemampuan berpikir khususnya memahami pola
relasi dari sederetan bilangan menurut pola yang ada, tes matematis B
(penalaran numerik) yang mengukur kemampuan induktif-deduktif
khususnya dalam menerapkan prinsip-prinsip kuantitatif untuk
menyelesaikan persoalan-persoalan yang membutuhkan perhitungan
matematis, dan tes vokabuler yang mengukur luasnya pengetahuan bahasa
khususnya arti kata.
Hasil tes calon siswa digunakan untuk menyeleksi apakah calon
siswa layak untuk diterima atau tidak. Setelah terdapat calon-calon siswa
yang dinyatakan diterima, ditentukan kelas dari tiap siswa, jumlah uang
asrama, SPP dan uang kegiatan. Kemudian tim membuat daftar calon
siswa putra yang diterima, daftar calon siswa putri yang diterima, daftar
orangtua calon siswa putra yang diterima dan daftar calon siswa putri yang
diterima.
Siswa yang diterima mengikuti kegiatan belajar mengajar dan
tinggal di asrama. Dalam mengikuti belajar mengajar tersebut, siswa
mendapatkan nilai untuk setiap mata pelajaran yang diikuti sesuai
32
kurikulum yang berlaku, nilai kegiatan-kegiatan extrakurikuler yang
diikuti dan nilai kepribadian yang diberikan oleh masing-masing wali
kelas.
Kurikulum yang berlaku di SMA saat ini adalah kurikulum 2004
yang dibuat dengan mengacu pada kebijakan pemerintah untuk
menggunakan kurikulum berbasis kompetensi (KBK) sesuai dengan PP
Nomor 5 tahun 2000.
Hasil kegiatan belajar peserta didik dinilai dalam tiga aspek, yaitu
aspek kemampuan kognitif, kemampuan psikomotorik, dan kondisi afektif.
Kemampuan kognitif adalah kemampuan berpikir, kemampujan
memperoleh pengetahuan, kemampuan yang berkaitan dengan
pemerolehan pengetahuan, pengenalan, pemahaman, konseptualisasi,
penentuan, dan penalaran. Kemampuan psikomotorik adalah kemampuan
berketrampilan, seperti ketrampilan adaptif sederhana, ketrampilan adaptif
gabungan, ketrampilan adaptif kompleks, dan ketrampilan komunikasi
berkesinambungan baik gerak ekspresif maupun gerak interpretatif.
Sedangkan kemampuan afektif adalah semua hal yang berkenaan dengan
perasaan atau sikap, kemampuan ini tidak dapat dideteksi dengan tes,
tetapi dapat diperoleh melalui angket, inventori, atau pengamatan yang
sistematik dan berkelanjutan.
Berdasarkan buku petunjuk pelaksanaan penilaian kurikulum
SMA, skala penilaian yang berlaku adalah :
33
1) Nilai (kognitif, psikomotorik, dan afektif) dinyatakan dalam bentuk
bilangan bulat, dengan rentang 0 -100.
2) Nilai ketuntasan belajar maksimum adalah 100.
Standar ketuntasan adalah aturan penilaian pencapaian belajar
peserta didik. Adapun contoh standar ketuntasan mata pelajaran di SMA
adalah :
1) Agama 65
2) Kewarganegaraan 65
3) Bhs & Sastra Indonesia 65
4) Bhs Inggris / Conversation 65
5) Matematika 6
Untuk nilai setiap mata pelajaran, terdapat 3 aspek penilaian yaitu
kognitif atau pengetahuan dan pemahaman konsep, psikomotorik atau
praktik dan afektif atau sikap.
Penilaian untuk aspek kognitif menggunakan rumus sebagai
berikut :
1) Nilai semester pertama
NR 1 = 2)(
)1(
+
++
n
NUSNMSUHn
2) Nilai semester kedua
NR 2 = 3
1)2(
+
+++
n
NRNUSNMSUHn
34
Rata-rata nilai harian diperoleh dari :
UH = 4
3 ugasrataNilaiTRataanlanganHarirataNilaiUxRata −+−
Keterangan :
NR 1 : Nilai Rapor Semester I
NR 2 : Nilai Rapor Semester II
UH1 : Rata-rata Nilai Harian Semester 1
UH2 : Rata-rata Nilai Harian Semester 2
NMS : Nilai Mid Semester
NUS : Nilai Ulangan Umum Semester
n : Frekuensi Ulangan Harian
Dalam satu semester, pendamping mengadakan ulangan minimal empat
kali, satu kali ulangan mid semester dan satu kali tes akhir semester. Nilai
psikomotorik akhir dihitung dari rata-rata nilai praktek harian yang didapat
siswa.
Laporan hasil belajar siswa diberikan pada tengah semester yang
meliputi ulangan-ulangan harian dan ujian tengah semester siswa serta
laporan hasil belajar siswa pada akhir semester yang meliputi aspek
kognitif, psikomotorik dan afektif.
Kenaikan kelas dan penjurusan pada program ilmu-ilmu alam atau
ilmu-ilmu sosial diatur sebagai berikut :
1) Skala Penilaian
a. Nilai (pemahaman konsep dan praktek) dinyatakan dalam
bentuk angka bulat, dengan rentang 0-100 dan huruf.
35
b. Batas nilai makasimum ketuntasan 100.
c. Batas nilai Kriteria Ketuntasan Minimal (KKM) per mata
pelajaran ditentukan oleh sekolah dan guru sebelum kegiatan
pembelajaran dan penilaian dilakukan.
d. Kriteria Ketuntasan Minimal (KKM) sebagai tolok ukur
ketuntasan belajar ranah pemahaman konsep dan praktek.
2) Kenaikan Kelas
a. Siswa dinyatakan naik kelas, apabila memiliki nilai kurang dan
nilai D paling banyak pada tiga mata pelajaran, yang bukan
merupakan mata pelajaran yang menjadi ciri khas
program/jurusan yang akan/sedang diambil/diikuti. Dengan
demikian, mata pelajaran-mata pelajaran yang menjadi ciri
khas jurusan harus mencapai nilai minimum ketuntasan yang
ditetapkan oleh sekolah yang bersangkutan.
b. Yang dimaksud nilai kurang adalah nilai yang jumlahnya lebih
sedikit dari Kriterian Ketuntasan Minimal (KKM) pada setiap
mata pelajaran
3) Penjurusan
a. Kriteria penjurusan meliputi : minat, nilai akademik,
pertimbangan Bimbingan dan Konseling dan orang tua/walis
siswa.
b. Dalam menentukan jurusan, siswa terlebih dahulu ditanyakan
minatnya, apakah hendak :
36
1) Melanjutkan ke pendidikan yang lebih tinggi (ke
universitas)
2) Bekerja di masyarakat atau
3) Ke program studi Ilmu Alam atau Ilmu Sosial sesuai
dengan minat setelah lulus dari SMA.
Minat siswa dapat diketahui melalui angket/kuesioner,
wawancara, test bakat dan minat (psikotest)
c. Peran guru Bimbingan dan Koseling sangat berarti dalam
menentukan penjurusan seorang siswa, yang dilakukan baik
dengan wawancara maupun dengan pengisian
angket/kuesioner, serta hasil tes psikologi.
d. Siswa yang akan memasuki program Ilmu-ilmu Alam atau
Ilmu-ilmu Sosial dipersyaratkan mencapai ketuntasan dalam
mata pelajaran yang sesuai dengan karakteristik program
tersebut.
e. Jika jumlah siswa yang memenuhi syarat suatu jurusan
melebihi kapasitas yang dimiliki oleh sekolah, maka hak masuk
program/jurusan tertentu diberikan kepada peraih nilai terbaik
pada mata pelajaran yang menjadi karakteristik jurusan.
Ketentuan lain mengenai kenaikan kelas dan penjurusan
diputuskan oleh rapat dewan pendamping. Setiap pendamping pengampu
mata pelajaran wajib menyampaikan Kriteria Ketuntasan Minima (KKM)
belajar kepada siswa setiap awal semeter.
37
Proses-proses pengolahan data tersebut di atas masih dilakukan
secara manual oleh manusia. Dibuatnya sistem yang mengolah data-data
tersebut diharapkan dapat membantu proses yang terjadi sehingga dapat
berjalan cepat, efisien dan tidak membuang-buang tenaga.
3.1.2 Gambaran umum sistem baru
Sistem yang akan dibuat, menggunakan bahasa pemrograman Java
5 dan basisdata MySQL 5. Sistem yang baru menyediakan fungsi-fungsi
sebagai berikut :
1) Pencatatan data provinsi, kodya / kabupaten, SMP, mata pelajaran
rapor SMP dan mata pelajaran UNAS SMP.
2) Pencatatan data calon siswa baru.
3) Pembuatan daftar calon siswa putra berdasarkan SMP asal, daftar
calon siswa putri berdasarkan SMP asal, daftar calon siswa putra
berdasarkan daerah asal dan daftar calon siswa putri berdasarkan
daerah asal.
4) Pencatatan data calon siswa yang diterima.
5) Pembuatan daftar calon siswa putra yang diterima, daftar calon siswa
putri yang diterima, daftar orang tua calon siswa putra yang diterima
dan daftar orang tua calon siswa putri yang diterima.
6) Pencatatan data mata pelajaran dan Kriteria Ketuntasan Minimal
(KKM) setiap mata pelajaran.
7) Pencatatan pengampu setiap mata pelajaran.
38
8) Pencatatan data extrakurikuler.
9) Pencatatan data nilai ulangan harian siswa, nilai praktik harian siswa,
nilai afektif siswa, nilai kepribadian, nilai extrakurikuler siswa dan
catatan wali kelas.
10) Perhitungan nilai kognitif dan psikomotorik siswa.
11) Penentuan siswa naik kelas dan tidak.
12) Penanganan siswa yang tidak naik kelas dan berpindah kelas.
13) Penanganan siswa yang keluar.
14) Pembuatan laporan hasil belajar tengah semester siswa.
15) Pembuatan laporan hasil belajar akhir semester siswa.
16) Pembuatan laporan nilai semua mata pelajaran siswa per kelas.
3.1.3 Pemodelan Use Case
Gambar 3.1 Use Case SI Akademik
41
menghapus data
provinsi
memasukkan data
provinsi
mengubah data
provinsi
Pengolahan Data
Provinsi
menghapus data
kabupaten
memasukkan data
kabupaten
mengubah data
kabupaten
Pengolahan Data
Kabupaten
menghapus data SMP
memasukkan data SMP
mengubah data SMP
Pengolahan Data SMP
menghapus data
mapel rapor SMP
memasukkan data
mapel rapor SMP
mengubah data
mapel rapor SMP
Pengolahan Data
Mapel Rapor SMP
menghapus data
mapel unas
memasukkan data
mapel unas
mengubah data
mapel unas
Pengolahan Data
Mapel Unas
Administrator
Login<<depend on>>
Gambar 3.5 Use Case Data Master
3.2 Context Diagram
Gambar 3.6 Context Diagram
44
19
Mengolah data kenaikan
kelas
20
Mengolah data
provinsi
21
Mengolah data
kabupaten
22
Mengolah data
SMP
19.1
Input data
kenaikan
kelas
19.2
Cari data
kenaikan
kelas
19.3
Edit data
kenaikan
kelas
20.1
Input data
provinsi
20.2
Ubah
data
provinsi
20.3
Hapus
data
provinsi
23
Mengolah data
mapel SMP
B
24
Mengolah data
mapel unas SMP
21.1
Input data
kabupaten
21.2
Ubah data
kabupaten
21.3
Hapus
data
provinsi
22.1
Input data
SMP
22.2
Ubah data
SMP
22.3
Hapus
data SMP
23.1
Input data
mapel
SMP
23.2
Ubah data
mapel SMP
23.3
Hapus
data
mapel
SMP
24.1
Input data
mapel
unas SMP
24.2
Ubah data
mapel unas
SMP
24.3
Hapus
data
mapel
unas
SMP
Gambar 3.9 Diagram Berjenjang Lanjutan
45
3.3.2 Data Flow Diagram Level 0
1
Memproses data
calon siswa
2
Memproses data
siswa yg diterima
3p
Membuat daftar calon
siswa yang diterima
4p
Membuat daftar
orangtua calon siswa
yg diterima
5
Memproses data mata
pelajaran
7
Memproses data
extrakurikuler
6
Memproses data detil
mata pelajaran
8
Memproses data
kelas
9
Memproses data
siswa keluar
D1 CALON_SISWA
D5 PIAGAM
Data pribadi calon siswa
Rapor SMP calon siswa valid
Nilai rapor SMP calon siswa valid
Data orangtua calon siswa valid
Data piagam calon siswa valid
Data alamat calon siswa dan
orangtua valid
Data pribadi calon siswa valid
D7 SISWAData siswa dan kata kunci valid
Data alamat calon siswa dan
orangtua
D1 CALON_SISWA
D7 SISWA
D6 ALAMAT
D2 RAPOR_SMP
D3 NILAI_RAPOR_SMP
D6 ALAMAT
D2 RAPOR_SMP
D3 NILAI_RAPOR_SMP
Data pribadi calon siswa
Rapor SMP calon siswa
Nilai rapor SMP calon siswa
Data siswa
Data alamat calon siswa
D1 CALON_SISWA
D7 SISWA
D4 ORANGTUA
D4 ORANGTUA
Data pribadi calon siswa
Data siswa
Data orangtua calon siswa
D8 MAPELData mapel valid
D9 DETIL_MAPELData detil mapel valid
D10 EXTRAData extra valid
D11 KELASData kelas valid
D12 SISWA_KELUARData siswa keluar valid
Administrator
Data calon siswa,
kata kunci,
no_pendaftaran
Data calon siswa yang
diterima, kata kunci
Daftar calon siswa yang
diterima, kata kunci
Daftar orangtua calon siswa
yang diterima, kata kunci
Data mata pelajaran,kata
kunci, id_mapel
Data detil mata pelajaran,
kata kunci, id_detil_mapel
Data extrakurikuler, kata
kunci, id_extra
Data kelas, kata kunci,
id_kelas
Data siswa keluar, kata
kunci, id_siswa_keluar
Gambar 3.10 Data Flow Diagram Level 0 (1)
46
10
Memproses data absensi,
kepribadian, catatan wali
kelas
11
Memproses data nilai afektif,
deskripsi, NMS, NUS
12
Memproses data
nilai kognitif
13
Memproses data
nilai psikomotorik
16p
Membuat laporan
nilai per kelas
14
Memproses nilai extra
17p
Membuat laporan
hasil belajar
tengah semester
D7 SISWA
D13 DETIL_NILAI_SIKAP
D14 NILAI_SIKAP
Nama, no induk
No_induk, id_nilai_sikap
valid
nilai_sikap valid
D7 SISWA
D15 DETIL_NILAI_KOGNITIF
Nama, no induk
Afektif, deskripsi, NMS,
NUS valid
D7 SISWA
D17 NILAI_KOGNITIF
Nama, no induk
Nilai ulangan harian valid
D7 SISWA
D18 DETIL_MAPEL_YG_DITEMPUH
D19 NILAI_PSIKOMOTORIK
Nama, no induk
No_induk, id_nilai_psikomotorik valid
Nilai psikomotorik harian valid
D7 SISWA
D20 DETIL_NILAI_EXTRANo_induk, id_nilai_psikomotorik valid
Nama, no induk
D7 SISWA
D15 DETIL_NILAI_KOGNITIF
D17 NILAI_KOGNITIF
D13 DETIL_NILAI_SIKAP
D14 NILAI_SIKAP
D19 NILAI_PSIKOMOTORIK
Nama, no induk
Data nilai kognitif
Data nilai kognitif
Data nilai sikap
Data nilai sikap
Data nilai psikomotorik
Data nilai psikomotorik
Nama, no induk
Data nilai kognitif
Data nilai kognitif
D7 SISWA
D15 DETIL_NILAI_KOGNITIF
D17 NILAI_KOGNITIF
Data absensi, kepribadian, catatan
wali kelas,kata kunci
Data nilai afektif, deskripsi, NMS,
NUS, kata kunci
Data nilai kognitif, kata kunci
Data nilai psikomotorik, kata
kunci
Data nilai extrakurikuler,
kata kunci
Laporan nilai per kelas
Laporan hasil belajar tengah semester
18
Membuat laporan
akhir semester
D7 SISWA
D15 DETIL_NILAI_KOGNITIF
D17 NILAI_KOGNITIF
D13 DETIL_NILAI_SIKAP
D14 NILAI_SIKAP
D19 NILAI_PSIKOMOTORIK
Data siswa tidak naik kelas valid
Data nilai kognitif
Data nilai kognitif
Data nilai sikap
Data nilai sikap
Data nilai psikomotorik
Data nilai psikomotorik
D21 SISWA_TDK_NAIK_KELAS
Nama, no induk
Laporan akhir semester
Administrator
15
Memproses data
nilai tugas
D7 SISWA
D28 NILAI_TUGAS
Nama, no induk
No_induk, id_nilai_tugas valid
Nilai tugas harian valid
Data nilai tugas, kata
kunci
20
Memproses data
provinsi
D22 PROVINSIData provinsi valid
21
Memproses data
kodya / kabupaten
D23 KABUPATENData kodya / kabupaten valid
22
Memproses data SMP
D24 SMPData SMP valid
23
Memproses data
mapel rapor SMP
D25 MAPEL_SMPData mapel rapor SMP valid
24
Memproses data
mapel unas SMP
D26 MAPEL_UNASData mapel unas valid
Data provinsi
Data kodya / kabupaten
Data SMP
Data mapel rapor SMP
Data mapel unas
19
Mengolah data
kenaikan kelas
D7 SISWA
D15 DETIL_NILAI_KOGNITIF
D17 NILAI_KOGNITIF
D13 DETIL_NILAI_SIKAP
D14 NILAI_SIKAP
D19 NILAI_PSIKOMOTORIK
Data siswa tidak naik kelas valid
Data nilai kognitif
Data nilai kognitif
Data nilai sikap
Data nilai sikap
Data nilai psikomotorik
Data nilai psikomotorik
D21 SISWA_TDK_NAIK_KELAS
Laporan hasil belajar akhir
semester
Data kenaikan kelas
Nama, no induk
D18 DETIL_MAPEL_YG_DITEMPUH
D18 DETIL_MAPEL_YG_DITEMPUH
D18 DETIL_MAPEL_YG_DITEMPUH
D18 DETIL_MAPEL_YG_DITEMPUH
Gambar 3.11 Data Flow Diagram Level 0 (2)
47
3.3.3 Data Flow Diagram Level 1
Gambar 3.12 Data Flow Diagram Level 1 Process 1
2.1p
Input data
calon siswa
yg diterima
2.2p
Cari data
calon siswa
yg diterima
2.3p
Ubah data
calon siswa
yang
diterima
administratorD1 SISWA
Data siswa
Kata kunci
Data siswa
Data siswa
Data siswaData siswa
Gambar 3.13 Data Flow Diagram Level 1 Process 2
48
Gambar 3.14 Data Flow Diagram Level 1 Process 5
6.1p
Input data
detil mapel
6.2p
Cari data
detil mapel
6.4p
Hapus data
detil mapel
administratorD9 DETIL_MAPEL
Data detil mapel
Id_detil_mapel
Data mapel
Kata kunci tahun
6.3p
Ubah data
detil mapel
D9 DETIL_MAPEL
D9 DETIL_MAPEL
D9 DETIL_MAPEL
Data detil mapel
Data detil mapel
Data detil mapel
Id_detil_mapel
Gambar 3.15 Data Flow Diagram Level 1 Process 6
Gambar 3.16 Data Flow Diagram Level 1 Process 7
49
Gambar 3.17 Data Flow Diagram Level 1 Process 8
Gambar 3.18 Data Flow Diagram Level 1 Process 9
Gambar 3.19 Data Flow Diagram Level 1 Process 10
50
Gambar 3.20 Data Flow Diagram Level 1 Process 11
Gambar 3.21 Data Flow Diagram Level 1 Process 12
Gambar 3.22 Data Flow Diagram Level 1 Process 13
51
Gambar 3.23 Data Flow Diagram Level 1 Process 14
Gambar 3.24 Data Flow Diagram Level 1 Process 15
Gambar 3.25 Data Flow Diagram Level 1 Process 18
52
Gambar 3.26 Data Flow Diagram Level 1 Process 19
Gambar 3.27 Data Flow Diagram Level 1 Process 20
Gambar 3.28 Data Flow Diagram Level 1 Process 21
53
Gambar 3.29 Data Flow Diagram Level 1 Process 22
Gambar 3.30 Data Flow Diagram Level 1 Process 23
Gambar 3.31 Data Flow Diagram Level 1 Process 24
55
Keterangan atribut entitas :
1. Entitas calon_siswa :
- no_pendaftaran (PK) - SMP_asal
- nama_lengkap - SMP_lain
- nama_panggilan - STL_SMP_nomor
- jenis_kelamin - STL_SMP_tahun
- tempat_lahir - ijasah_SMP_nomor
- tanggal_lahir - ijasah_SMP_tahun
- agama - nama_wali
- anak_ke - alamat_wali
- status_dlm_keluarga - telp_wali
- jumlah_saudara - pekerjaan_wali
- bahasa_harian - keyakinan_biaya
- tanggal_lahir_wali - ijasah_wali
- keyakinan_biaya - diterima_tidak
- tahun
2. Entitas siswa_tdk_naik_kelas :
- id_siswa_tdk_naik_kelas(PK) - no_induk
- tahun_ajaran - kelas_lama
- kelas_baru
3. Entitas siswa_keluar :
- id_siswa_keluar(PK) - no_induk
- tahun_ajaran - kelas
- keluar_per - keterangan
4. Entitas siswa :
56
- no_induk(PK) - no_pendaftaran
- diterima_dikelas - diterima_tanggal
- diterima_semester
5. Entitas mapel :
- id_mapel(PK) - nama_mapel
- tahun - kognitif
- psikomotorik - afektif
6. Entitas detil_mapel :
- id_detil_mapel(PK) - id_mapel
- kelas - nik
- alokasi_waktu - SKBM
7. Entitas extra :
- id_extra(PK) - nama_extra
- tahun
8. Entitas nilai_kognitif :
- id_nilai_kognitif - id_detil_nilai_kognitif
- UH1 - UH2
- UH3 - UH4
- UH5 - UH6
- UH7 - UH8
- UH9 - UH10
9. Entitas nilai_psikomotorik :
- id_nilai_psikomotorik - id_detil_mapel_yg_ditempuh
- P1 - P2
- P3 - P4
57
- P5 - P6
- P7 - P8
- P9 - P10
10. Entitas nilai_sikap :
- id_nilai_sikap - id_detil_nilai_sikap
- kelakuan - kerapihan
- kebersihan - kedisiplinan
- catatan_wali_kelas - S
- I - A
11. Entitas alamat :
- id_alamat - no_pendaftaran
- jalan_nomor - kota_kecamatan
- kodya_kabupaten - provinsi
- kode_pos - telp
- fax - email
- jenis
12. Entitas rapor_SMP :
- id_rapor_SMP - kelas
- semester - rangking
- b_ing - b_ind
- IPS - Mat
- IPA - Kelakuan
- Kerajian - Kerapian
- S - I
- A
58
13. Entitas orangtua :
- id_ortu - no_pendaftaran
- nama_ayah - tanggal_lahir_ayah
- agama_ayah - ijasah_terakhir_ayah
- pekerjaan_ayah - penghasilan_ayah
- nama_ibu - tanggal_lahir_ibu
- agama_ibu - ijasah_terakhir_ibu
- pekerjaan_ibu - penghasilan_ibu
14. Entitas piagam :
- Id_piagam - no_pendafataran
- jenis_piagam - Tahun
- sebagai - event
- tingkat
15. Entitas kelas :
- id_kelas - kelas
- tahun
16. Entitas nilai_psikomotorik :
- id_nilai_psikomotorik - id_detil_mapel_yg_ditempuh
- t1 - t2
- t3 - t4
- t5 - t6
- t7 - t8
- t9 - t10
60
3.4.3 Rancangan tabel
Tabel 3.1 Struktur Tabel Calon_Siswa (Data Store D1)
Field Type Length Null? Key
No_pendaftaran Integer No Primary
Nama_lengkap Varchar 100 No
Nama_panggilan Varchar 30 No
Jenis_kelamin Enum (’P’, ’L’) No
Tempat_lahir Varchar 50 No
Tanggal_lahir Date No
Agama Varchar 15 No
Anak_ke Varchar 2 No
Status_dlm_keluarga Enum (’anak
kandung’,
’anak tiri’,
’anak’angkat)
No
Jumlah_saudara Varchar 2 No
Bahasa_harian Varchar 20 No
SMP_asal Varchar 100 No
SMP_lain Varchar 100 Yes
STL_SMP_nomor Varchar 50 No
STL_SMP_tahun Varchar 4 No
Ijasah_SMP_nomor Varchar 50 No
Ijasah_SMP_tahun Varchar 4 No
Nama_wali Varchar 100 Yes
Tanggal_lahir date Yes
Alamat_wali Varchar 100 Yes
Telp_wali Varchar 15 Yes
Pekerjaan_wali Varchar 50 Yes
Ijasah_wali Varchar 15 Yes
Keyakinan_biaya Enum (’Y’,’T’) Yes
61
Diterima_tidak Enum (’Y’,’T’) Yes
Tahun Varchar 4 No
Tabel 3.2 Struktur Tabel Siswa (Data Store D7)
Field Type Length Null? Key
No_induk Integer No Primary
No_pendaftaran Integer No Foreign
Diterima_dikelas Varchar 10 No
Diterima_tanggal Date No
Diterima_semester Varchar 1 No
Tabel 3.3 Struktur Tabel Orangtua (Data Store D4)
Field Type Length Null? Key
Id_ortu Integer No Primary
No_pendaftaran Integer No Foreign
Nama_ayah Varchar 100 No
Agama_ayah Varchar 15 No
Pekerjaan_ayah Varchar 50 No
Umur_ayah Varchar 3 No
Ijasah_terakhir_ayah Varchar 50 No
Penghasilan_ayah Varchar 30 No
Nama_ibu Varchar 100 No
Agama_ibu Varchar 15 No
Pekerjaan_ibu Varchar 50 No
Umur_ibu Varchar 3 No
Ijasah_terakhir_ibu Varchar 50 No
Penghasilan_ibu Varchar 30 No
62
Tabel 3.4 Struktur Tabel Alamat (Data Store D6)
Field Type Length Null? Key
Id_alamat Integer No Primary
No_pendaftaran Integer No Foreign
Jalan_nomor Varchar 100 No
Kota_kecamatan Varchar 50 No
Kodya_kabupaten Varchar 50 No
Provinsi Varchar 50 No
Kode_pos Varchar 10 Yes
Telp Varchar 15 Yes
Fax Varchar 15 Yes
Email Varchar 100 Yes
Jenis Enum(’calon
siswa’,
‘Ayah’,’Ibu’,
’wali’)
No
Tabel 3.5 Struktur Tabel Piagam (Data Store D5)
Field Type Length Null? Key
Id_piagam Integer No Primary
No_pendaftaran Integer No Foreign
Jenis_piagam Varchar 100 No
Tahun Varchar 4 No
Sebagai Varchar 50 Yes
Event Varchar 100 No
Tingkat Varchar 30 No
Tabel 3.6 Struktur Tabel Rapor_SMP (Data Store D2)
Field Type Length Null? Key
Id_rapor_SMP Integer No Primary
63
No_pendaftaran Integer No Foreign
Kelas Varchar 10 No
Semester Varchar 1 No
Rangking Varchar 1 Yes
B_ing Varchar 3 No
B_ind Varchar 3 No
Mat Varchar 3 No
IPS Varchar 3 No
IPA Varchar 3 No
Kelakuan Varchar 1 No
Kerajinan Varchar 1 No
Kerapian Varchar 1 No
S Varchar 1 No
I Varchar 1 No
A Varchar 1 No
Tabel 3.7 Struktur Tabel Siswa_keluar (Data Store D12)
Field Type Length Null? Key
Id_siswa_keluar Integer No Primary
No_induk Integer No Foreign
Kelas Varchar 10 No
Tahun Varchar 4 No
Keluar_per Date No
Keterangan Varchar 200 Yes
Tabel 3.8 Struktur Tabel Siswa_tdk_naik_kelas (Data Store D21)
Field Type Length Null? Key
Id_siswa_tdk_naik_kls Integer No Primary
No_induk Integer No Foreign
Tahun_ajaran Varchar 4 No
64
Kelas_lama Varchar 10 No
Kelas_baru Varchar 10 No
Tabel 3.9 Struktur Tabel Kelas (Data Store D11)
Field Type Length Null? Key
Id_kelas Integer No Primary
Kelas Varchar 15 No Foreign
Tahun Varchar 4 No
Tabel 3.10 Struktur Tabel Detil_kelas_siswa
Field Type Length Null? Key
Id_detil_kelas_siswa Integer No Primary
Id_kelas Integer No Foreign
No_induk Integer No Foreign
Tabel 3.11 Struktur Tabel Extra (Data Store D10)
Field Type Length Null? Key
Id_extra Integer No Primary
Nama_extra Varchar 50 No
Tahun Varchar 4 No
Tabel 3.12 Struktur Tabel Detil_nilai_extra (Data Store D20)
Field Type Length Null? Key
Id_detil_extra Integer No Primary
No_induk Integer No
Id_extra Integer No
Kelas Varchar 10 No
Semester Varchar 1 No
Nilai Varchar 1 No
Keterangan Text No
65
Tabel 3.13 Struktur Tabel Mapel (Data Store D8)
Field Type Length Null? Key
Id_mapel Integer No Primary
Nama_mapel Varchar 50 No
Kognitif Tinyint 1 Yes
Psikomotorik Tinyint 1 Yes
Afektif Tinyint 1 Yes
Tahun Varchar 4
Tabel 3.14 Struktur Tabel Detil_mapel (Data Store D9)
Field Type Length Null? Key
Id_detil_mapel Integer No Primary
Id_mapel Varchar 50 No
Nik Varchar 20 No
kelas Varchar 10 No
Alokasi Varchar 2 No
skbm Varchar 3 No
Tabel 3.15 Struktur Tabel Detil_mapel_yg_ditempuh (Data Store D18)
Field Type Length Null? Key
Id_detil_mapel_tempuh Integer No Primary
No_induk Integer No Foreign
Id_mapel Integer No Foreign
Id_kelas Varchar 10 No
Semester Varchar 1 No
Tahun Varchar 4 No
Tabel 3.16 Struktur Tabel Detil_nilai_sikap (Data Store D13)
Field Type Length Null? Key
Id_detil_nilai_sikap Integer No Primary
66
No_induk Integer No Foreign
Kelas Varchar 10 No
Semester Varchar 1 No
Tahun Varchar 4 No
Tabel 3.17 Struktur Tabel Nilai_sikap (Data Store D14)
Field Type Length Null? Key
Id_nilai_sikap Integer No Primary
Id_detil_nilai_sikap Integer No Foreign
Kelakuan Varchar 1 No
Kerapihan Varchar 1 No
Kedisiplinan Varchar 1 No
Kebersihan Varchar 1 No
Catatan_wali_kelas Text No
S Varchar 1 No
I Varchar 1 No
A Varchar 1 No
Tabel 3.18 Struktur Tabel Nilai_psikomotorik (Data Store D19)
Field Type Length Null? Key
Id_nilai_psikomotorik Integer No Primary
Id_detil_mapel_yg_ditempuh Integer No Foreign
P1 Varchar 3 Yes
P2 Varchar 3 Yes
P3 Varchar 3 Yes
P4 Varchar 3 Yes
P5 Varchar 3 Yes
P6 Varchar 3 Yes
P7 Varchar 3 Yes
P8 Varchar 3 Yes
67
P9 Varchar 3 Yes
P10 Varchar 3 Yes
Tabel 3.19 Struktur Tabel Detil_nilai_kognitif (Data Store D15)
Field Type Length Null? Key
Id_detil_nilai_kognitif Integer No Primary
Id_detil_mapel_tempuh Integer No Foreign
Afektif Enum (’tinggi
sekali’,
’tinggi’,
’sedang’,
’rendah’,
’rendah
sekali’
No
Deskripsi Text No
NMS Varchar 3 No
NUS Varchar 3 No
Tabel 3.20 Struktur Tabel Nilai_kognitif (Data Store D17)
Field Type Length Null? Key
Id_nilai_kognitif Integer No Primary
Id_detil_nilai_kognitif Integer No Foreign
UH1 Varchar 3 Yes
UH2 Varchar 3 Yes
UH3 Varchar 3 Yes
UH4 Varchar 3 Yes
UH5 Varchar 3 Yes
UH6 Varchar 3 Yes
UH7 Varchar 3 Yes
UH8 Varchar 3 Yes
68
UH9 Varchar 3 Yes
UH10 Varchar 3 Yes
Tabel 3.21 Struktur Tabel Nilai_tugas (Data Store D14)
Field Type Length Null? Key
Id_nilai_tugas Integer No Primary
Id_detil_mapel_yg_ditempuh Integer No Foreign
T1 Varchar 3 Yes
T2 Varchar 3 Yes
T3 Varchar 3 Yes
T4 Varchar 3 Yes
T5 Varchar 3 Yes
T6 Varchar 3 Yes
T7 Varchar 3 Yes
T8 Varchar 3 Yes
T9 Varchar 3 Yes
T10 Varchar 3 Yes
Tabel 3.22 Struktur Tabel Provinsi (Data Store D22)
Field Type Length Null? Key
Id_provinsi Integer No Primary
Provinsi Varchar 100 No
Tabel 3.23 Struktur Tabel Kabupaten (Data Store D23)
Field Type Length Null? Key
Id_kabuaten Integer No Primary
Id_provinsi Integer No Foreign
Kabupaten Varchar 100 No
69
Tabel 3.24 Struktur Tabel SMP (Data Store D24)
Field Type Length Null? Key
Id_smp Integer No Primary
Id_kabupateb Integer No
SMP Varchar 100 No
Tabel 3.25 Struktur Tabel MapelSMP (Data Store D25)
Field Type Length Null? Key
Id_mapelSMP Integer No Primary
Mapel Varchar 100 No
Tahun Varchar 4 No
Tabel 3.26 Struktur Tabel MapelUNAS (Data Store D26)
Field Type Length Null? Key
Id_mapelUNAS Integer No Primary
Mapel Varchar 100 No
Tahun Varchar 4 No
3.5 Rancangan Sistem
3.5.1 Rancangan Tampilan Login
Untuk masuk dalam menu utama, terlebih dahulu ditampilkan
menu Login dimana menu ini menentukan hak akses user sebagai
administrator atau user.
Gambar 3.34 Rancangan Login
70
3.5.2 Rancangan Tampilan Utama
Pada rancangan tampilan utama terlebih dahulu terdapat dialog box
yang berguna untuk memasukkan tahun ajaran untuk sistem. Setelah
memasukkan tahun ajaran, sistem akan menentukan apakah tahun ajaran
yang telah dimasukkan menggunakan model lama atau model baru. Model
lama yang dimaksud adalah sistem penilaian angka, sedangkan model baru
adalah sistem penilaian dengan 3 aspek yaitu kognitif, psikomotorik dan
afektif.
Gambar 3.35 Rancangan Input Tahun Ajaran
Gambar 3.36 Rancangan Menu Utama
71
3.5.3 Rancangan Menu Item Data Provinsi (Proses 20)
Rancangan ini berguna untuk mengolah data provinsi. Pada
rancangan ini ditampilkan data provinsi yang telah ada dan dapat
ditambah, diubah dan dihapus.
Gambar 3.37 Rancangan Menu Item Data Provinsi
3.5.4 Rancangan Menu Item Data Kodya / Kabupaten (Proses 21)
Rancangan ini berguna untuk mengolah data kodya / kabupaten.
Pada rancangan ini ditampilkan data kodya / kabupaten yang telah ada dan
dapat ditambah, diubah dan dihapus.
72
Gambar 3.38 Rancangan Menu Item Data Kodya / Kabupaten
3.5.5 Rancangan Menu Item Data SMP (Proses 22)
Rancangan ini berguna untuk mengolah data SMP. Pada rancangan
ini ditampilkan data SMP yang telah ada dan dapat ditambah, diubah dan
dihapus.
73
Gambar 3.39 Rancangan Menu Item Data SMP
3.5.6 Rancangan Menu Item Data Mata Pelajaran Rapor SMP (Proses 23)
Rancangan ini berguna untuk mengolah data mata pelajaran rapor
SMP. Pada rancangan ini ditampilkan data mata pelajaran rapor SMP yang
telah ada dan dapat ditambah, diubah dan dihapus.
74
Gambar 3.40 Rancangan Menu Item Data Mata Pelajaran Raport SMP
3.5.7 Rancangan Menu Item Data Mata Pelajaran UNAS SMP (Proses 24)
Rancangan ini berguna untuk mengolah data mata pelajaran UNAS
SMP. Pada rancangan ini ditampilkan data mata pelajaran UNAS SMP
yang telah ada dan dapat ditambah, diubah dan dihapus.
75
Gambar 3.41 Rancangan Menu Item Data Mata Pelajaran UNAS SMP
3.5.8 Rancangan Menu Item Data Mata Pelajaran (Proses 5)
Rancangan ini berguna untuk mengolah data mata pelajaran. Pada
rancangan ini ditampilkan data mata pelajaran yang telah ada dan dapat
ditambah, diubah dan dihapus.
76
Gambar 3.42 Rancangan Menu Item Data Mata Pelajaran
3.5.9 Rancangan Menu Item Data Detil Mata Pelajaran (Proses 6)
Rancangan ini berguna untuk mengolah data detil mata pelajaran
yaitu pengampu, alokasi waktu, kelas dan SKBM. Pada rancangan ini
ditampilkan data detil mata pelajaran yang telah ada dan dapat ditambah,
diubah dan dihapus.
77
Gambar 3.43 Rancangan Menu Item Data Detil Mata Pelajaran
3.5.10 Rancangan Menu Item Data Extrakurikuler (Proses 7)
Rancangan ini berguna untuk mengolah data extrakurikuler. Pada
rancangan ini ditampilkan data extrakurikuler yang telah ada dan dapat
ditambah, diubah dan dihapus.
78
Gambar 3.44 Rancangan Menu Item Data Extrakurikuler
3.5.11 Rancangan Menu Item Data Kelas (Proses 8)
Rancangan ini berguna untuk mengolah data kelas. Pada rancangan
ini ditampilkan data kelas yang telah ada dan dapat ditambah, diubah dan
dihapus.
79
Gambar 3.45 Rancangan Menu Item Data Kelas
3.5.12 Rancangan Menu Item Data Siswa Keluar (Proses 9)
Rancangan ini berguna untuk mengolah data siswa keluar. Pada
rancangan ini ditampilkan data siswa keluar yang telah ada dan dapat
ditambah, diubah dan dihapus.
80
Gambar 3.46 Rancangan Menu Item Data Siswa Keluar
3.5.13 Rancangan Menu Item Input Calon Siswa (Proses 1)
Pada rancangan input calon siswa terdapat 7 buah tab yaitu tab
pribadi siswa untuk mengisi data pribadi siswa, tab alamat siswa untuk
mengisi alamat siswa, tab ayah siswa untuk mengisi data ayah siswa, tab
ibu siswa buntuk mengisi data ibu siswa, tab wali untuk mengisi data wali
siswa, tab SMP Siswa untuk mngisi data SMP Siswa dan tab akademik
SMP untuk mengisi data akademik SMP siswa serta piagam atau sertifikat
calon siswa.
81
Gambar 3.47 Rancangan Input Calon Siswa Tab Pribadi Siswa
Gambar 3.48 Rancangan Input Calon Siswa Tab Alamat Siswa
82
Gambar 3.49 Rancangan Input Calon Siswa Tab Ayah Siswa
Gambar 3.50 Rancangan Input Calon Siswa Tab Ibu Siswa
83
Gambar 3.51 Rancangan Input Calon Siswa Tab Wali
Gambar 3.52 Rancangan Input Calon Siswa Tab SMP Siswa
84
Gambar 3.53Rancangan Input Calon Siswa Tab Akademik SMP
3.5.14 Rancangan Menu Item Pencarian Calon Siswa (Proses 1)
Tampilan input pencarian calon siswa merupakan tampilan yang
digunakan untuk mencari calon siswa yang dikelompokan berdasarkan
jenis kelamin kemudian dikelompokan kembali berdasarkan daerah asal
dan SMP asal. User dapat mengubah data calon siswa, menghapus data
calon siswa dan mencetak data calon siswa.
Untuk pencetakan data calon siswa, ketika pencarian yang
dilakukan user berdasarkan daerah asal maka data yang akan dicetak
85
adalah No Pendaftaran, Nama Lengkap, Alamat, Kota/Kabupaten, Provinsi
dan Keterangan yang menunjukkan daerah asal calon siswa.
Ketika pencarian yang dilakukan user berdasarkan SMP asal maka
data yang akan dicetak adalah No Pendaftaran, Nama Lengkap, SMP dan
Kota/Kabupaten, Provinsi.
Gambar 3.54 Rancangan Menu Item Pencarian Calon Siswa
3.5.15 Rancangan Menu Item Input Calon Siswa yang Diterima (Proses 2)
Tampilan input calon siswa yang diterima merupakan tampilan
yang digunakan untuk menginputkan data calon siswa yang diterima dan
lolos seleksi. User harus memasukkan data tahun penerimaan siswa baru,
86
pengelompokan calon siswa berdasarkan jenis kelamin, siswa diterima
pada tanggal dan semester calon siswa diterima.
Gambar 3.55 Rancangan Menu Item Input Calon Siswa yang Diterima
3.5.16 Rancangan Menu Item Pencarian Calon Siswa Diterima (Proses 2)
Tampilan pencarian calon siswa yang diterima merupakan tampilan
yang digunakan untuk mencari calon siswa yang diterima yang
dikelompokkan berdasarkan jenis kelamin. User dapat melakukan
pengubahan data dan pencetakan data melalui tampilan ini.
87
Gambar 3.56 Rancangan Menu Item Pencarian Calon Siswa yang Diterima
3.5.17 Rancangan Menu Item Pencarian Orangtua Calon Siswa yang
Diterima (Proses 4)
Tampilan pencarian orangtua calon siswa yang diterima merupakan
tampilan yang digunakan untuk mencari orangtua calon siswa yang
diterima yang dikelompokkan berdasarkan jenis kelamin calon siswa. User
dapat melakukan pengubahan data dan pencetakan data melalui tampilan
ini.
88
Gambar 3.57 Rancangan Menu Item Pencarian Orangtua Calon Siswa yang
Diterima
3.5.18 Rancangan Menu Item Input Absensi Kepribadian Siswa (Proses 10)
Tampilan input absensi dan kepribadian siswa merupakan tampilan
yang digunakan untuk memasukkan data absensi dan nilai kepribadian
siswa. Selain menyimpan data absensi dan nilai kepribadian siswa, user
juga dapat mengubah data absensi dan nilai kepribadian siswa. Input data
absensi dan nilai kepribadian siswa dilakukan per kelas.
89
Gambar 3.58 Rancangan Menu Item Input Absensi dan Kepribadian Siswa
3.5.19 Rancangan Menu Item Input Nilai Afektif (Proses 11)
Tampilan input nilai afektif merupakan tampilan yang digunakan
untuk memasukkan data nilai afektif, deskripsi, NMS dan NUS siswa.
Selain menyimpan data nilai afektif siswa, user juga dapat mengubah data
nilai afektif siswa. Input data nilai afektif siswa dilakukan per kelas.
90
Gambar 3.59 Rancangan Menu Item Input Nilai Afektif
3.5.20 Rancangan Menu Item Input Nilai Ulangan Harian (Proses 12)
Tampilan input nilai ulangan harian merupakan tampilan yang
digunakan untuk memasukkan data nilai ulangan harian siswa. Selain
menyimpan data nilai ulangan harian siswa, user juga dapat mengubah
data nilai ulangan harian siswa. Input data nilai ulangan harian siswa
dilakukan per kelas.
91
Gambar 3.60 Rancangan Menu Item Input Nilai Ulangan Harian
3.5.21 Rancangan Menu Item Input Nilai Tugas (Proses 15)
Tampilan input nilai tugas merupakan tampilan yang digunakan
untuk memasukkan data nilai tugas siswa. Selain menyimpan data nilai
tugas siswa, user juga dapat mengubah data nilai tugas siswa. Input data
nilai tugas siswa dilakukan per kelas.
92
Gambar 3.61 Rancangan Menu Item Input Nilai Tugas
3.5.22 Rancangan Menu Item Input Nilai Psikomotorik (Proses 13)
Tampilan input nilai psikomotorik merupakan tampilan yang
digunakan untuk memasukkan data nilai psikomotorik siswa. Selain
menyimpan data nilai psikomotorik siswa, user juga dapat mengubah data
nilai psikomotorik siswa. Input data nilai psikomotorik siswa dilakukan
per kelas.
93
Gambar 3.62 Rancangan Menu Item Input Nilai Psikomotorik
3.5.23 Rancangan Menu Item Input Nilai Extrakurikuler (Proses 14)
Tampilan input nilai extrakurikuler merupakan tampilan yang
digunakan untuk memasukkan data nilai extrakurikuler siswa. Selain
menyimpan data nilai extrakurikuler siswa, user juga dapat mengubah data
nilai extrakurikuler siswa. Input data nilai extrakurikuler siswa dilakukan
per kelas.
94
Gambar 3.63 Rancangan Menu Item Input Nilai Extrakurikuler
3.5.24 Rancangan Menu Item Laporan Nilai Per Kelas (Proses 16)
Tampilan cetak nilai per kelas merupakan tampilan yang
digunakan untuk mencetak data nilai akhir per kelas. Data nilai yang
dicetak adalah data nilai semua mata pelajaran, rangking, absensi, nilai
kepribadian, nilai extrakurikuler, rata-rata, nilai maximal, nilai minimum
dan jumlah siswa yang nilainya tidak memenuhi SKBM.
95
Gambar 3.64 Rancangan Menu Item Laporan Nilai Per Kelas Tab Nilai Per
Mata Pelajaran
Gambar 3.65 Rancangan Menu Item Laporan Nilai Per Kelas Tab Nilai
Rapor
96
3.5.25 Rancangan Menu Item Laporan Tengah Semester Hasil Belajar Siswa
(Proses 17)
Tampilan cetak laporan tengah semester hasil belajar siswa
merupakan tampilan yang digunakan untuk mencetak laporan tengah
semester hasil belajar siswa. Data yang dicetak adalah data nilai ulangan
harian dan nilai ujian tengah semester siswa.
Gambar 3.66 Rancangan Menu Item Laporan Tengah Semester Hasil
Belajar Siswa
97
3.5.26 Rancangan Menu Item Laporan Akhir Semester Hasil Belajar Siswa
(Proses 18)
Tampilan cetak laporan akhir semester hasil belajar siswa
merupakan tampilan yang digunakan untuk mencetak laporan akhir
semester hasil belajar siswa. Sistem memberikan perhitungan nilai akhir
dan rekomendasi naik tidaknya.
Gambar 3.67 Rancangan Menu Item Laporan Akhir Semester Hasil Belajar
Siswa Tab Angka
98
Gambar 3.68 Rancangan Laporan Akhir Semester Hasil Belajar Siswa Tab
Deskripsi
Gambar 3.69 Rancangan Laporan Akhir Semester Hasil Belajar Siswa Tab
Extrakurikuler, Ketidakhadiran, Kepribadian & Cat. Wali Kelas
99
3.5.27 Rancangan Menu Item Kenaikan Kelas (Proses 19)
Tampilan kenaikan kelas digunakan untuk menyimpan dan
mengubah data kenaikan kelas serta penetuan siswa masuk di kelas mana.
Gambar 3.70 Rancangan Menu Item Kenaikan Kelas
3.5.28 Rancangan Menu Item Konfigurasi
Pada form ini administrator dapat mengkonfigurasi tentang koneksi
jaringan, dan konfigurasi sekolah.
Gambar 3.71 Rancangan Konfigurasi
100
BAB IV
IMPLEMENTASI
Implementasi merupakan penerapan dari tahapan analisa dan perancangan
Sistem Informasi Akademik yang telah dibuat pada bab sebelumnya. Pada tahap
ini dilakukan proses penulisan instruksi program (pengkodean). Selain itu, bab ini
membahas pertimbangan penggunaan perangkat keras dan perangkat lunak yang
digunakan.
Sistem Informasi Akademik ini diimplementasikan menggunakan bahasa
pemrograman Java 2 Standard Edition dengan Netbeans 5.5 sebagai editor,
database diimplementasikan menggunakan MySQL dengan SQLYog sebagai
interface untuk menjalankan database MySQL di lingkungan windows.
4.1 Analisa Kebutuhan
Analisa kebutuhan adalah tahap pendefinisian kebutuhan akan
perangkat lunak, perangkat keras, maupun sumberdaya manusia (pengguna),
sehingga sistem dapat diakses dengan baik.
4.1.1 Kebutuhan Perangkat Lunak
Agar Sistem Informasi Keuangan Pada Instansi Akademik ini
dapat berjalan dengan baik, maka dibutuhkan :
• Server :
o MySQL Server 5.xx
101
o Sistem Operasi menyesuaikan (Linux, Windows Server
Family).
• Client :
o Sistem Operasi Windows XP
4.1.2 Kebutuhan Perangkat Keras
Kebutuhan perangkat keras minimal yang sesuai untuk SI
Akademik adalah :
• Server:
o Komputer Pentium IV
o Memori 512 MB
o Harddisk 40 GB
o Perangkat Jaringan LAN (LAN Card)
• Client :
o Komputer Pentium IV
o Memori 128 MB
o Harddisk 40 GB
o Layar beresolusi 800X600
o Perangkat masukan yaitu keyboard dan mouse
o Perangkat keluaran printer
o Perangkat Jaringan LAN (LAN Card)
102
4.2 Karakteristik Pengguna
Dalam SI Akademik ini terdapat satu karakteristik pengguna yang
harus memiliki kemampuan minimal agar dapat mengoperasikan sistem,
adapun kemampuan minimal tersebut adalah memahami penggunaan
komputer.
4.3 Implementasi Database
Sub bab ini membahas logika penulisan skrip database untuk setiap
modul. Pembahasan meliputi skrip-skirp utama. Pembuatan tabel tidak akan
dibahas.
Dalam implementasi, sistem ini mengimplementasikan pembuatan
tabel sebanyak xx buah tabel stored procedure sebanyak 117 buah, stored
function sebanyak 29 buah, dan triger sebanyak 1 triger.
Agar mendukung transaksi maka semua tabel harus
diimplementasikan menjadi jenis InnoDB karena hanya tabel berjenis
InnoDB dab BDB saja yang mendukung transaksi.
4.4 Implementasi Program
Bab ini membahas logika penulisan program disertai dengan listing
untuk setiap fungsi. Pembahasan meliputi listing-listing utama dan interface
aplikasi yang dibuat.
103
4.4.1 Koneksi Database
Setelah melakukan proses pembuatan tabel, stored procedure,
stored function, dan trigger pada database, langkah selanjutnya adalah
membuat skrip koneksi agar database yang telah dibuat dapat diakses dari
sistem. Data tentang nama database, username, password, port, dan alamat
database server disimpan dalam sebuah file konfigurasi.
public String database = "akademik"; public String user=conf.getKonfigNet()[1]; public String pwd=conf.getKonfigNet()[2]; public String port=conf.getKonfigNet()[3]; public String address=conf.getKonfigNet()[0]; try { Class.forName("com.mysql.jdbc.Driver"); Connection connection = DriverManager.getConnection("jdbc:mysql://"+address+":"+port+"/"+database, user,pwd); ………….. } catch (Exception e) { }
4.4.2 Form Login
Form digunakan untuk mengetahui siapakah yang menggunakan
sistem. Administrator memiliki privileges sebagai super user, sehingga
seorang administrator memiliki kewenangan untuk mengendalikan sistem.
Sedangkan user memiliki hak akses yang berbeda-beda terhadap form,
tergantung dari hak akses yang diberikan.
Untuk user biasa, proses enkripsi dengan md5 dapat dilakukan
pada database. Tetapi user tidak bisa login jika koneksi server terputus,
untuk mengatasi permasalahan tersebut maka dibuat user admin yang
104
disimpan dalam sebuah file, proses enkripsi password md5 dilakukan oleh
java, berikut adalah fungsi yang digunakan untuk login admin.
if(teks_user.getText().length()>0){ if(teks_user.getText().toUpperCase().compareTo("ADMIN")==0){ username=teks_user.getText(); char[] p=teks_pwd.getPassword(); String password=""; for(int i=0; i<p.length;i++) password+=p[i]; String xxx=getPwdAdmin(); if(md5(password).equals(xxx)){ new sekolah.konfig().setVisible(true); } else javax.swing.JOptionPane.showMessageDialog(this,"Password administrator salah", "Login Sistem Gagal", javax.swing.JOptionPane.ERROR_MESSAGE,new keuangan.gambarIcon().error32()); } else{ javax.swing.JOptionPane.showMessageDialog(this,"Selain Administrator dilarang masuk","Dilarang Masuk Sistem",javax.swing.JOptionPane.ERROR_MESSAGE,new keuangan.gambarIcon().error32()); } } else{javax.swing.JOptionPane.showMessageDialog(this,"Mohon isi username dan password","Peringatan", javax.swing.JOptionPane.ERROR_MESSAGE,new keuangan.gambarIcon().error32()); }
Fungsi md5 yang digunakan untuk proses enkripsi
public String md5(String in){ try{ MessageDigest md = MessageDigest.getInstance("MD5"); md.update(in.getBytes()); return new String(md.digest()); }catch (NoSuchAlgorithmException nsae) {} return null; }
105
4.4.3 Form Utama
Form Utama digunakan sebagai tampilan pertama setelah user
berhasil login ke dalam sistem. Di dalam form utama terdapat link untuk
membuka form yang lain. Link tersebut dibuat dalam bentuk menu bar
pada bagian atas aplikasi program. Dalam penerapan pemrograman
berorientasi objek, maka diciptakan berbagai macam objek dalam
membangun sistem ini.
Sebelum masuk ke form utama, terlebih dahulu user memasukkan
tahun akademik yang akan digunakan sistem untuk menentukan model
sistem apakah menggunakan model penilaian kognitif, psikomotorik,
afektif atau model lama. Sistem akan mengaktifkan menu-menu yang
berhubungan dengan model yang telah ditentukan dan menon-aktifkan
menu-menu yang tidak berhubungan.Berikut listing kodenya :
if(getdata.getModelLamaAtauBaru(tahun).compareTo("lama") == 0) { akd_menu_afektif.setEnabled(false); akd_menu_psikomotorik.setEnabled(false); } else if(getdata.getModelLamaAtauBaru(tahun).compareTo("baru") == 0) { akd_menu_deskripsi.setEnabled(false); } else if(tahun == null) { System.exit(0); } else { JOptionPane.showMessageDialog(this, "Anda perlu memasukkan data-data master terlebih dahulu", "Tahun Ajaran Baru", JOptionPane.INFORMATION_MESSAGE); akd_ics.setEnabled(false); akd_pcs.setEnabled(false); akd_icsyd.setEnabled(false); akd_pcsyd.setEnabled(false); akd_pocsyd.setEnabled(false); akd_aks.setEnabled(false); akd_menu_afektif.setEnabled(false); akd_menu_deskripsi.setEnabled(false); akd_menu_kognitif.setEnabled(false);
106
akd_menu_tugas.setEnabled(false); akd_menu_psikomotorik.setEnabled(false); akd_menu_nilai_extra.setEnabled(false); akd_lap_per_kelas.setEnabled(false); akd_lap_tengah_sem.setEnabled(false); akd_lap_akhir.setEnabled(false); akd_menu_siswa_keluar.setEnabled(false); }
Fungsi getModelLamaAtauBaru ( ) yang memiliki nilai balik
bertipe data String untuk memberikan informasi apakah sistem
menggunakan model lama atau baru. Berikut listing kodenya :
CallableStatement cstmt = connection.prepareCall("{call getModelLamaAtauBaru(?)}"); cstmt.setString(1, tahun); ResultSet rs =cstmt.executeQuery(); while(rs.next()) { return rs.getString(1); } cstmt.close(); connection.close(); return cstmt.getString(1);
4.4.4 Form-Form Data Master
Form-form data master meliputi form data provinsi, form data
kodya / kabupaten, form data SMP, form data mata pelajaran SMP, form
data mata pelajaran UNAS SMP, form data mata pelajaran, form data
detil mata pelajaran, form data extrakurikuler, form data kelas dan form
data siswa keluar.
Form data master pada dasarnya mempunyai kegunaan yang sama
yaitu digunakan untuk melihat, menambah, mengubah dan menghapus
107
data master. Berikut adalah listing kode untuk masing-masing proses
untuk data detil mata pelajaran.
1. Proses menampilkan data detil mata pelajaran
public void getDetilMapel(String jt) { Object[][] data = getdata.getDetilMapel(jt); akd_tabel_detilMapel.setModel(new javax.swing.table.DefaultTableModel( data, new String [] { "ID Detil Mapel", "Nama Mapel", "Kelas", "Pengampu", "SKBM", "Alokasi Waktu" } ) { boolean[] canEdit = new boolean [] { false, true, true, true, true, true }; public boolean isCellEditable(int rowIndex, int columnIndex) { return canEdit [columnIndex]; } }); String[] namaKelas = {"X", "XI-IPA", "XI-IPS", "XI-BAHASA", "XII-IPA", "XII-IPS", "XII-BAHASA"}; String[] namaGuru = getdata.getNamaGuru(); String[] alokasi = {"1", "2", "3", "4", "5", "6", "7", "8"}; String[] namaMapel = getdata.getNamaMapel(tahun); javax.swing.JComboBox kelas = new javax.swing.JComboBox(namaKelas); javax.swing.JComboBox mapel = new javax.swing.JComboBox(namaMapel); javax.swing.JComboBox guru = new javax.swing.JComboBox(namaGuru); javax.swing.JComboBox alo = new javax.swing.JComboBox(alokasi); javax.swing.table.TableColumn kls = akd_tabel_detilMapel.getColumn("Kelas"); javax.swing.table.TableColumn mpl = akd_tabel_detilMapel.getColumn("Nama Mapel"); javax.swing.table.TableColumn gr = akd_tabel_detilMapel.getColumn("Pengampu"); javax.swing.table.TableColumn al = akd_tabel_detilMapel.getColumn("Alokasi Waktu"); kls.setCellEditor(new javax.swing.DefaultCellEditor(kelas)); mpl.setCellEditor(new
108
javax.swing.DefaultCellEditor(mapel)); gr.setCellEditor(new javax.swing.DefaultCellEditor(guru)); al.setCellEditor(new javax.swing.DefaultCellEditor(alo)); akd_tabel_detilMapel.setCellEditor(new javax.swing.DefaultCellEditor(kelas)); akd_tabel_detilMapel.setCellEditor(new javax.swing.DefaultCellEditor(mapel)); akd_tabel_detilMapel.setCellEditor(new javax.swing.DefaultCellEditor(guru)); akd_tabel_detilMapel.setCellEditor(new javax.swing.DefaultCellEditor(alo)); }
Method getdata.getDetilMapel() merupakan method bernilai balik
array object dimensi 2 yang digunakan untuk mengeksekusi stored
procedure getDetilMapel(). Berikut listing kode method
getDetilMapel() dan stored procedure getDetilMapel.
CallableStatement cstmt = connection.prepareCall("{call getDetilMapel(?)}"); cstmt.setString(1, tahun); ResultSet rs =cstmt.executeQuery(); rs.last(); int n = rs.getRow(); hasil = new Object[n][6]; int p = 0; rs.beforeFirst(); while(rs.next()) { hasil[p][0]= rs.getString(1); hasil[p][1]= rs.getString(2); hasil[p][2]= rs.getString(3); hasil[p][3]= rs.getString(4); hasil[p][4]= rs.getString(5); hasil[p][5]= rs.getString(6); p++; } cstmt.close(); connection.close(); return hasil;
109
CREATE PROCEDURE `akademik`.`getDetilMapel` (ptahun varchar(4)) BEGIN START TRANSACTION; select d.id_detil_mapel, getNamaMapel(d.id_mapel), d.kelas, getNamaGuru(d.nik), d.skbm, d.alokasi_waktu from detil_mapel d, mapel m where m.tahun = ptahun and d.id_mapel = m.id_mapel; COMMIT; END$$
2. Proses menambah data detil mata pelajaran
insertCalonSiswa.insertDetilMapel(akd_combo_detilMapel_namaMapel.getSelectedItem().toString(), akd_combo_detilMapel_pengampu.getSelectedItem().toString(), akd_combo_detilMapel_kelas.getSelectedItem().toString(), akd_combo_detilMapel_alokasi.getSelectedItem().toString(), akd_tf_detilMapel_skbm.getText(), tahun);
Method insertdata.insertDetilMapel () merupakan method yang
digunakan untuk mengeksekusi stored procedure insertDetilMapel().
Berikut listing kode method insertDetilMapel() dan stored procedure
insertDetilMapel.
CallableStatement cstmt = connection.prepareCall("{call insertDetilMapel(?, ?, ?, ?, ?, ?)}"); cstmt.setString(1, id_mapel); cstmt.setString(2, nik); cstmt.setString(3, kelas); cstmt.setString(4, alokasi_waktu); cstmt.setString(5, skbm); cstmt.setString(6, tahun); cstmt.execute(); cstmt.close(); connection.close();
CREATE PROCEDURE `akademik`.`insertDetilMapel` ( pid_mapel varchar(50), pnik varchar(20),
110
pkelas varchar(10), palokasi_waktu varchar(2), pskbm varchar(3), ptahun varchar(4) ) BEGIN declare p int default 0; declare vid_mapel, vid_kelas int default 0; declare vnik varchar(20) default ''; START TRANSACTION; select getIdMapel(pid_mapel, ptahun) into vid_mapel; select getNIK(pnik) into vnik; select cekInsertDetilMapel( vid_mapel, vnik, vid_kelas, palokasi_waktu, pskbm) into p; if (p<1) then BEGIN insert into detil_mapel(id_mapel, nik, kelas, alokasi_waktu, skbm) values(vid_mapel, vnik, pkelas, palokasi_waktu, pskbm); COMMIT; END; else ROLLBACK; end if; END$$
3. Proses mengubah data detil mata pelajaran
for(int i=0; i<akd_tabel_detilMapel.getRowCount(); i++) { editdata.editDetilMapel(akd_tabel_detilMapel.getValueAt(i,0).toString(), akd_tabel_detilMapel.getValueAt(i,1).toString(), akd_tabel_detilMapel.getValueAt(i,3).toString(), akd_tabel_detilMapel.getValueAt(i,2).toString(), akd_tabel_detilMapel.getValueAt(i,5).toString(), akd_tabel_detilMapel.getValueAt(i,4).toString(), tahun); }
Method editdata.editDetilMapel() merupakan method yang
digunakan untuk mengeksekusi stored procedure editDetilMapel().
111
Berikut listing kode method editDetilMapel() dan stored procedure
editDetilMapel.
CallableStatement cstmt = connection.prepareCall("{call editDetilMapel(?, ?, ?, ?, ?, ?, ?)}"); cstmt.setString(1, id_detil_mapel); cstmt.setString(2, id_mapel); cstmt.setString(3, nik); cstmt.setString(4, kelas); cstmt.setString(5, alokasi_waktu); cstmt.setString(6, skbm); cstmt.setString(7, tahun); cstmt.execute(); cstmt.close(); connection.close();
CREATE PROCEDURE `akademik`.`editDetilMapel` ( pid_detil_mapel int(11), pid_mapel varchar(50), pnik varchar(20), pkelas varchar(10), palokasi_waktu varchar(2), pskbm varchar(3), ptahun varchar(4) ) BEGIN declare vid_mapel, vid_kelas int default 0; declare vnik varchar(20) default ''; START TRANSACTION; select getIdMapel(pid_mapel, ptahun) into vid_mapel; select getNIK(pnik) into vnik; update detil_mapel set id_mapel = vid_mapel, nik = vnik, kelas = pkelas, alokasi_waktu = palokasi_waktu, skbm = pskbm where id_detil_mapel = pid_detil_mapel; COMMIT; END$$
4. Proses menghapus data detil mata pelajaran
deletedata.deleteDetilMapel(akd_tabel_detilMapel.getValueAt(akd_tabel_detilMapel.getSelectedRow(), 0).toString());
112
Method deletedata.deleteDetilMapel() merupakan method yang
digunakan untuk mengeksekusi stored procedure deleteDetilMapel().
Berikut listing kode method deleteDetilMapel() dan stored procedure
deleteDetilMapel.
CallableStatement cstmt = connection.prepareCall("{call deleteDetilMapel(?)}"); cstmt.setString(1, id_detil_mapel); cstmt.execute(); cstmt.close(); connection.close();
CREATE PROCEDURE `akademik`.`deleteDetilMapel` (pid_detil_mapel int(11)) BEGIN START TRANSACTION; delete from detil_mapel where id_detil_mapel = pid_detil_mapel; COMMIT; END$$
Perbedaan proses pada setiap data master adalah method yang
dipanggil dan stored procedure yang digunakan.
4.4.5 Form Data Input Calon Siswa
Form input calon siswa digunakan untuk menyimpan data calon
siswa. Berikut adalah listing kodenya.
insertCalonSiswa.insertCalonSiswa(akd_tf_input_cs_namaLengkap.getText(), akd_tf_input_cs_panggilan.getText(), akd_combo_input_cs_jenisKel.getSelectedItem().toString(), akd_tf_input_cs_lahirDi.getText(), tanggalLahir, akd_combo_input_cs_agama.getSelectedItem().toString(), akd_tf_input_cs_anake.getText(), akd_combo_input_cs_status.getSelectedItem().toString(), akd_tf_input_cs_saudara.getText(),_label_tf_cs_bhsHarian.getText(), kd_tf_input_cs_smpAsal.getSelectedItem().toString(), akd_tf_input_cs_smpLain.getSelectedItem().toString(),
113
akd_tf_input_cs_noSTL.getText(), akd_tf_input_cs_tahunSTL.getText(), akd_tf_input_cs_noIjasah.getText(), akd_tf_input_cs_tahunIjasah.getText(), akd_tf_input_cs_namaWali.getText(), tanggalLahirWali, akd_tf_input_cs_pekerjaanWali.getText(), akd_combo_input_cs_yakin.getSelectedItem().toString(), akd_tf_input_cs_tahun.getText(), akd_tf_input_cs_namaAyah.getText(), akd_combo_input_cs_agamaAyah.getSelectedItem().toString(), akd_tf_input_cs_pekerjaanAyah.getText(), tanggalLahirAyah, akd_combo_input_cs_ijasahAyah.getSelectedItem().toString(), akd_tf_input_cs_hasilAyah.getText(), akd_tf_input_cs_namaIbu.getText(), akd_combo_input_cs_agamaIbu.getSelectedItem().toString(), akd_tf_input_cs_pekerjaanIbu.getText(),tanggalLahirIbu, akd_combo_input_cs_ijasahIbu.getSelectedItem().toString(), akd_tf_input_cs_hasilIbu.getText(), akd_tf_input_cs_jlnNo.getText(), akd_tf_input_cs_kota.getText(), akd_tf_input_cs_kodya.getSelectedItem().toString(), akd_tf_input_cs_prov.getSelectedItem().toString(), akd_tf_input_cs_kodePos.getText(), akd_tf_input_cs_telp.getText(), akd_tf_input_cs_fax.getText(), akd_tf_input_cs_email.getText(), akd_tf_input_cs_jln_ayah.getText(), akd_tf_input_cs_kota_ayah.getText(), akd_tf_input_cs_kodya_ayah.getSelectedItem().toString(), akd_tf_input_prov_ayah.getSelectedItem().toString(), akd_tf_input_cs_kodePos_ayah.getText(), "", "", "", akd_tf_input_cs_jln_ibu.getText(), akd_tf_input_cs_kota_ibu.getText(), akd_tf_input_cs_kodya_ibu.getSelectedItem().toString(), akd_tf_input_prov_ibu.getSelectedItem().toString(), akd_tf_input_cs_kodePos_ibu.getText(), "", "", "", akd_tf_input_cs_jlnWali.getText(), akd_tf_input_cs_kotaWali.getText(), akd_tf_input_cs_kodyaWali.getSelectedItem().toString(), akd_tf_input_provWali.getSelectedItem().toString(), akd_tf_input_cs_kodePosWali.getText(), akd_tf_input_cs_telpWali.getText(), akd_tf_input_cs_faxWali.getText(), akd_tf_input_cs_emailWali.getText(), akd_tabel_input_cs_peringkat.getValueAt(0,2).toString(), akd_tabel_input_cs_peringkat.getValueAt(0,3).toString(), akd_tabel_input_cs_peringkat.getValueAt(0,4).toString(), akd_tabel_input_cs_peringkat.getValueAt(0,5).toString(),
114
akd_tabel_input_cs_peringkat.getValueAt(0,6).toString(), akd_tabel_input_cs_peringkat.getValueAt(0,7).toString(), akd_tabel_input_cs_peringkat.getValueAt(0,8).toString(), akd_tabel_input_cs_peringkat.getValueAt(0,9).toString(), akd_tabel_input_cs_peringkat.getValueAt(0,10).toString(), akd_tabel_input_cs_peringkat.getValueAt(0,11).toString(), akd_tabel_input_cs_peringkat.getValueAt(0,12).toString(), akd_tabel_input_cs_peringkat.getValueAt(0,13).toString(), akd_tabel_input_cs_peringkat.getValueAt(1,2).toString(), akd_tabel_input_cs_peringkat.getValueAt(1,3).toString(), akd_tabel_input_cs_peringkat.getValueAt(1,4).toString(), akd_tabel_input_cs_peringkat.getValueAt(1,5).toString(), akd_tabel_input_cs_peringkat.getValueAt(1,6).toString(), akd_tabel_input_cs_peringkat.getValueAt(1,7).toString(), akd_tabel_input_cs_peringkat.getValueAt(1,8).toString(), akd_tabel_input_cs_peringkat.getValueAt(1,9).toString(), akd_tabel_input_cs_peringkat.getValueAt(1,10).toString(), akd_tabel_input_cs_peringkat.getValueAt(1,11).toString(), akd_tabel_input_cs_peringkat.getValueAt(1,12).toString(), akd_tabel_input_cs_peringkat.getValueAt(1,13).toString(), akd_tabel_input_cs_peringkat.getValueAt(2,2).toString(), akd_tabel_input_cs_peringkat.getValueAt(2,3).toString(), akd_tabel_input_cs_peringkat.getValueAt(2,4).toString(), akd_tabel_input_cs_peringkat.getValueAt(2,5).toString(), akd_tabel_input_cs_peringkat.getValueAt(2,6).toString(), akd_tabel_input_cs_peringkat.getValueAt(2,7).toString(), akd_tabel_input_cs_peringkat.getValueAt(2,8).toString(), akd_tabel_input_cs_peringkat.getValueAt(2,9).toString(), akd_tabel_input_cs_peringkat.getValueAt(2,10).toString(), akd_tabel_input_cs_peringkat.getValueAt(2,11).toString(), akd_tabel_input_cs_peringkat.getValueAt(2,12).toString(), akd_tabel_input_cs_peringkat.getValueAt(2,13).toString(), akd_tabel_input_cs_peringkat.getValueAt(3,2).toString(), akd_tabel_input_cs_peringkat.getValueAt(3,3).toString(), akd_tabel_input_cs_peringkat.getValueAt(3,4).toString(), akd_tabel_input_cs_peringkat.getValueAt(3,5).toString(),
115
akd_tabel_input_cs_peringkat.getValueAt(3,6).toString(), akd_tabel_input_cs_peringkat.getValueAt(3,7).toString(), akd_tabel_input_cs_peringkat.getValueAt(3,8).toString(), akd_tabel_input_cs_peringkat.getValueAt(3,9).toString(), akd_tabel_input_cs_peringkat.getValueAt(3,10).toString(), akd_tabel_input_cs_peringkat.getValueAt(3,11).toString(), akd_tabel_input_cs_peringkat.getValueAt(3,12).toString(), akd_tabel_input_cs_peringkat.getValueAt(3,13).toString(), akd_tabel_input_cs_peringkat.getValueAt(4,2).toString(), akd_tabel_input_cs_peringkat.getValueAt(4,3).toString(), akd_tabel_input_cs_peringkat.getValueAt(4,4).toString(), akd_tabel_input_cs_peringkat.getValueAt(4,5).toString(), akd_tabel_input_cs_peringkat.getValueAt(4,6).toString(), akd_tabel_input_cs_peringkat.getValueAt(4,7).toString(), akd_tabel_input_cs_peringkat.getValueAt(4,8).toString(), akd_tabel_input_cs_peringkat.getValueAt(4,9).toString(), akd_tabel_input_cs_peringkat.getValueAt(4,10).toString(), akd_tabel_input_cs_peringkat.getValueAt(4,11).toString(), akd_tabel_input_cs_peringkat.getValueAt(4,12).toString(), akd_tabel_input_cs_peringkat.getValueAt(4,13).toString(), akd_tabel_input_cs_piagam.getValueAt(0,0).toString(), akd_tabel_input_cs_piagam.getValueAt(0,1).toString(), akd_tabel_input_cs_piagam.getValueAt(0,2).toString(), akd_tabel_input_cs_piagam.getValueAt(0,3).toString(), akd_tabel_input_cs_piagam.getValueAt(0,4).toString(), akd_tabel_input_cs_piagam.getValueAt(1,0).toString(), akd_tabel_input_cs_piagam.getValueAt(1,1).toString(), akd_tabel_input_cs_piagam.getValueAt(1,2).toString(), akd_tabel_input_cs_piagam.getValueAt(1,3).toString(), akd_tabel_input_cs_piagam.getValueAt(1,4).toString(), akd_tabel_input_cs_piagam.getValueAt(2,0).toString(), akd_tabel_input_cs_piagam.getValueAt(2,1).toString(), akd_tabel_input_cs_piagam.getValueAt(2,2).toString(), akd_tabel_input_cs_piagam.getValueAt(2,3).toString(),
116
akd_tabel_input_cs_piagam.getValueAt(2,4).toString(), akd_tabel_input_cs_piagam.getValueAt(3,0).toString(), akd_tabel_input_cs_piagam.getValueAt(3,1).toString(), akd_tabel_input_cs_piagam.getValueAt(3,2).toString(), akd_tabel_input_cs_piagam.getValueAt(3,3).toString(), akd_tabel_input_cs_piagam.getValueAt(3,4).toString(), akd_tabel_input_cs_piagam.getValueAt(4,0).toString(), akd_tabel_input_cs_piagam.getValueAt(4,1).toString(), akd_tabel_input_cs_piagam.getValueAt(4,2).toString(), akd_tabel_input_cs_piagam.getValueAt(4,3).toString(), akd_tabel_input_cs_piagam.getValueAt(4,4).toString(), akd_combo_input_cs_ijasahWali.getSelectedItem().toString());
Method insertdata.insertCalonSiswa() merupakan method yang
digunakan untuk mengeksekusi stored procedure insertCalonSiswa().
Berikut listing kode method insertCalonSiswa() dan stored procedure
insertCalonSiswa.
CallableStatement cstmt = connection.prepareCall("{call insertCalonSiswa(?, ?, ?, ?, ?, ?, ?, ?, ?" + ", ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?," + "?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?," + "?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?," + "?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?," + " ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)}"); cstmt.setString(1, nama_lengkap); cstmt.setString(2, nama_panggilan); cstmt.setString(3, jenis_kelamin); cstmt.setString(4, tempat_lahir); cstmt.setString(5, tanggal_lahir);
117
cstmt.setString(6, agama); cstmt.setString(7, anak_ke); cstmt.setString(8, status_dlm_keluarga); cstmt.setString(9, jumlah_saudara); cstmt.setString(10, bahasa_harian); cstmt.setString(11, smp_asal); cstmt.setString(12, smp_lain); cstmt.setString(13, stl_smp_nomor); cstmt.setString(14, stl_smp_tahun); cstmt.setString(15, ijasah_smp_nomor); cstmt.setString(16, ijasah_smp_tahun); cstmt.setString(17, nama_wali); cstmt.setString(18, tanggal_lahir_wali); cstmt.setString(19, pekerjaan_wali); cstmt.setString(20, keyakinan_biaya); cstmt.setString(21, tahun); cstmt.setString(22, nama_ayah); cstmt.setString(23, agama_ayah); cstmt.setString(24, pekerjaan_ayah); cstmt.setString(25, tanggal_lahir_ayah); cstmt.setString(26, ijasah_terakhir_ayah); cstmt.setString(27, penghasilan_ayah); cstmt.setString(28, "Ayah"); cstmt.setString(29, nama_ibu); cstmt.setString(30, agama_ibu); cstmt.setString(31, pekerjaan_ibu); cstmt.setString(32, tanggal_lahir_ibu); cstmt.setString(33, ijasah_terakhir_ibu); cstmt.setString(34, penghasilan_ibu); cstmt.setString(35, "Ibu"); cstmt.setString(36, jalan_nomor_siswa); cstmt.setString(37, kota_kecamatan_siswa); cstmt.setString(38, kodya_kabupaten_siswa); cstmt.setString(39, provinsi_siswa); cstmt.setString(40, kode_pos_siswa); cstmt.setString(41, telp_siswa); cstmt.setString(42, fax_siswa); cstmt.setString(43, email_siswa); cstmt.setString(44, "Calon Siswa"); cstmt.setString(45, jalan_nomor_ayah); cstmt.setString(46, kota_kecamatan_ayah); cstmt.setString(47, kodya_kabupaten_ayah); cstmt.setString(48, provinsi_ayah); cstmt.setString(49, kode_pos_ayah); cstmt.setString(50, telp_ayah); cstmt.setString(51, fax_ayah); cstmt.setString(52, email_ayah); cstmt.setString(53, "Ayah"); cstmt.setString(54, jalan_nomor_ibu); cstmt.setString(55, kota_kecamatan_ibu); cstmt.setString(56, kodya_kabupaten_ibu);
118
cstmt.setString(57, provinsi_ibu); cstmt.setString(58, kode_pos_ibu); cstmt.setString(59, telp_ibu); cstmt.setString(60, fax_ibu); cstmt.setString(61, email_ibu); cstmt.setString(62, "Ibu"); cstmt.setString(63, jalan_nomor_wali); cstmt.setString(64, kota_kecamatan_wali); cstmt.setString(65, kodya_kabupaten_wali); cstmt.setString(66, provinsi_wali); cstmt.setString(67, kode_pos_wali); cstmt.setString(68, telp_wali); cstmt.setString(69, fax_wali); cstmt.setString(70, email_wali); cstmt.setString(71, "Wali"); cstmt.setString(72, r1rangking); cstmt.setString(73, r1b_ing); cstmt.setString(74, r1b_ind); cstmt.setString(75, r1mat); cstmt.setString(76, r1ips); cstmt.setString(77, r1ipa); cstmt.setString(78, r1kelakuan); cstmt.setString(79, r1kerajinan); cstmt.setString(80, r1kerapian); cstmt.setString(81, r1s); cstmt.setString(82, r1i); cstmt.setString(83, r1a); cstmt.setString(84, r2rangking); cstmt.setString(85, r2b_ing); cstmt.setString(86, r2b_ind); cstmt.setString(87, r2mat); cstmt.setString(88, r2ips); cstmt.setString(89, r2ipa); cstmt.setString(90, r2kelakuan); cstmt.setString(91, r2kerajinan); cstmt.setString(92, r2kerapian); cstmt.setString(93, r2s); cstmt.setString(94, r2i); cstmt.setString(95, r2a); cstmt.setString(96, r3rangking); cstmt.setString(97, r3b_ing); cstmt.setString(98, r3b_ind); cstmt.setString(99, r3mat); cstmt.setString(100, r3ips); cstmt.setString(101, r3ipa); cstmt.setString(102, r3kelakuan); cstmt.setString(103, r3kerajinan); cstmt.setString(104, r3kerapian); cstmt.setString(105, r3s); cstmt.setString(106, r3i); cstmt.setString(107, r3a);
119
cstmt.setString(108, r4rangking); cstmt.setString(109, r4b_ing); cstmt.setString(110, r4b_ind); cstmt.setString(111, r4mat); cstmt.setString(112, r4ips); cstmt.setString(113, r4ipa); cstmt.setString(114, r4kelakuan); cstmt.setString(115, r4kerajinan); cstmt.setString(116, r4kerapian); cstmt.setString(117, r4s); cstmt.setString(118, r4i); cstmt.setString(119, r4a); cstmt.setString(120, r5rangking); cstmt.setString(121, r5b_ing); cstmt.setString(122, r5b_ind); cstmt.setString(123, r5mat); cstmt.setString(124, r5ips); cstmt.setString(125, r5ipa); cstmt.setString(126, r5kelakuan); cstmt.setString(127, r5kerajinan); cstmt.setString(128, r5kerapian); cstmt.setString(129, r5s); cstmt.setString(130, r5i); cstmt.setString(131, r5a); cstmt.setString(132, r1jenis_piagam); cstmt.setString(133, r1tahun); cstmt.setString(134, r1sebagai); cstmt.setString(135, r1event); cstmt.setString(136, r1tingkat); cstmt.setString(137, r2jenis_piagam); cstmt.setString(138, r2tahun); cstmt.setString(139, r2sebagai); cstmt.setString(140, r2event); cstmt.setString(141, r2tingkat); cstmt.setString(142, r3jenis_piagam); cstmt.setString(143, r3tahun); cstmt.setString(144, r3sebagai); cstmt.setString(145, r3event); cstmt.setString(146, r3tingkat); cstmt.setString(147, r4jenis_piagam); cstmt.setString(148, r4tahun); cstmt.setString(149, r4sebagai); cstmt.setString(150, r4event); cstmt.setString(151, r4tingkat); cstmt.setString(152, r5jenis_piagam); cstmt.setString(153, r5tahun); cstmt.setString(154, r5sebagai); cstmt.setString(155, r5event); cstmt.setString(156, r5tingkat); cstmt.setString(157, ijasah_wali);
120
cstmt.execute(); cstmt.close(); connection.close();
DELIMITER $$; DROP PROCEDURE IF EXISTS `akademik_lie`.`insertCalonSiswa`$$ CREATE PROCEDURE `insertCalonSiswa`( pnama_lengkap varchar(100), pnama_panggilan varchar(30), pjenis_kelamin enum('Laki - Laki','Perempuan'), ptempat_lahir varchar(50), ptanggal_lahir date, pagama varchar(15), panak_ke varchar(2), pstatus_dlm_keluarga enum('Anak Kandung','Anak Tiri','Anak Angkat'), pjumlah_saudara varchar(2), pbahasa_harian varchar(20), psmp_asal varchar(100), psmp_lain varchar(100), pstl_smp_nomor varchar(50), pstl_smp_tahun varchar(4), pijasah_smp_nomor varchar(50), pijasah_smp_tahun varchar(4), pnama_wali varchar(100), ptanggal_lahir_wali date, ppekerjaan_wali varchar(50), pkeyakinan_biaya enum('Sanggup','Tidak Sanggup'), ptahun varchar(4), apnama varchar(100), apagama varchar(15), appekerjaan varchar(50), aptanggal_lahir date, apijasah_terakhir varchar(50), appenghasilan varchar(30), apjenis enum('Ayah','Ibu'), ipnama varchar(100), ipagama varchar(15), ippekerjaan varchar(50), iptanggal_lahir date, ipijasah_terakhir varchar(50), ippenghasilan varchar(30), ipjenis enum('Ayah','Ibu'), spjalan_nomor varchar(100), spkota_kecamatan varchar(50), spkodya_kabupaten varchar(50), spprovinsi varchar(50), spkode_pos varchar(10), sptelp varchar(15), spfax varchar(15), spemail varchar(100),
121
spjenis enum('Calon Siswa', 'Ayah', 'Ibu', 'Wali'), apjalan_nomor varchar(100), apkota_kecamatan varchar(50), apkodya_kabupaten varchar(50), approvinsi varchar(50), apkode_pos varchar(10), aptelp varchar(15), apfax varchar(15), apemail varchar(100), apjenisalamat enum('Calon Siswa','Ayah', 'Ibu', 'Wali'), ipjalan_nomor varchar(100), ipkota_kecamatan varchar(50), ipkodya_kabupaten varchar(50), ipprovinsi varchar(50), ipkode_pos varchar(10), iptelp varchar(15), ipfax varchar(15), ipemail varchar(100), ipjenisalamat enum('Calon Siswa','Ayah', 'Ibu', 'Wali'), wpjalan_nomor varchar(100), wpkota_kecamatan varchar(50), wpkodya_kabupaten varchar(50), wpprovinsi varchar(50), wpkode_pos varchar(10), wptelp varchar(15), wpfax varchar(15), wpemail varchar(100), wpjenis enum('Calon Siswa','Ayah', 'Ibu', 'Wali'), r1rangking varchar(2), r1b_ing varchar(3), r1b_ind varchar(3), r1mat varchar(3), r1ips varchar(3), r1ipa varchar(3), r1kelakuan varchar(1), r1kerajinan varchar(1), r1kerapian varchar(1), r1s varchar(1), r1i varchar(1), r1a varchar(1), r2rangking varchar(2), r2b_ing varchar(3), r2b_ind varchar(3), r2mat varchar(3), r2ips varchar(3), r2ipa varchar(3), r2kelakuan varchar(1), r2kerajinan varchar(1), r2kerapian varchar(1), r2s varchar(1), r2i varchar(1), r2a varchar(1),
122
r3rangking varchar(2), r3b_ing varchar(3), r3b_ind varchar(3), r3mat varchar(3), r3ips varchar(3), r3ipa varchar(3), r3kelakuan varchar(1), r3kerajinan varchar(1), r3kerapian varchar(1), r3s varchar(1), r3i varchar(1), r3a varchar(1), r4rangking varchar(2), r4b_ing varchar(3), r4b_ind varchar(3), r4mat varchar(3), r4ips varchar(3), r4ipa varchar(3), r4kelakuan varchar(1), r4kerajinan varchar(1), r4kerapian varchar(1), r4s varchar(1), r4i varchar(1), r4a varchar(1), r5rangking varchar(2), r5b_ing varchar(3), r5b_ind varchar(3), r5mat varchar(3), r5ips varchar(3), r5ipa varchar(3), r5kelakuan varchar(1), r5kerajinan varchar(1), r5kerapian varchar(1), r5s varchar(1), r5i varchar(1), r5a varchar(1), r1jenis_piagam varchar(100), r1tahun varchar(4), r1sebagai varchar(50), r1event varchar(100), r1tingkat varchar(30), r2jenis_piagam varchar(100), r2tahun varchar(4), r2sebagai varchar(50), r2event varchar(100), r2tingkat varchar(30), r3jenis_piagam varchar(100), r3tahun varchar(4), r3sebagai varchar(50), r3event varchar(100), r3tingkat varchar(30), r4jenis_piagam varchar(100), r4tahun varchar(4), r4sebagai varchar(50), r4event varchar(100), r4tingkat varchar(30),
123
r5jenis_piagam varchar(100), r5tahun varchar(4), r5sebagai varchar(50), r5event varchar(100), r5tingkat varchar(30), pijasah_wali varchar(15) ) BEGIN declare p int default 0; declare vno_pendaftaran varchar(15); select createNoPendaftaran() into vno_pendaftaran; -- insert table calon_siswa START TRANSACTION; insert into calon_siswa( no_pendaftaran, nama_lengkap, nama_panggilan, jenis_kelamin, tempat_lahir, tanggal_lahir, agama, anak_ke, status_dlm_keluarga, jumlah_saudara, bahasa_harian, smp_asal, smp_lain, stl_smp_nomor, stl_smp_tahun, ijasah_smp_nomor, ijasah_smp_tahun, nama_wali, tanggal_lahir_wali, pekerjaan_wali, keyakinan_biaya, tahun, ijasah_wali) values( vno_pendaftaran, pnama_lengkap, pnama_panggilan, pjenis_kelamin, ptempat_lahir, ptanggal_lahir, pagama, panak_ke, pstatus_dlm_keluarga, pjumlah_saudara, pbahasa_harian, psmp_asal, psmp_lain, pstl_smp_nomor, pstl_smp_tahun, pijasah_smp_nomor, pijasah_smp_tahun, pnama_wali, ptanggal_lahir_wali, ppekerjaan_wali, pkeyakinan_biaya, ptahun, pijasah_wali); insert into orangtua( no_pendaftaran, nama_ayah, agama_ayah, pekerjaan_ayah, tanggal_lahir_ayah, ijasah_terakhir_ayah, penghasilan_ayah, nama_ibu, agama_ibu, pekerjaan_ibu, tanggal_lahir_ibu, ijasah_terakhir_ibu, penghasilan_ibu) values( vno_pendaftaran, apnama, apagama, appekerjaan, aptanggal_lahir, apijasah_terakhir, appenghasilan, ipnama, apagama, ippekerjaan, iptanggal_lahir, ipijasah_terakhir, ippenghasilan); insert into alamat( no_pendaftaran, jalan_nomor, kota_kecamatan, kodya_kabupaten, provinsi, kode_pos, telp, fax, email, jenis) values( vno_pendaftaran, spjalan_nomor, spkota_kecamatan, spkodya_kabupaten, spprovinsi, spkode_pos, sptelp, spfax, spemail, spjenis); insert into alamat( no_pendaftaran, jalan_nomor, kota_kecamatan, kodya_kabupaten, provinsi, kode_pos,
124
telp, fax, email, jenis) values( vno_pendaftaran, apjalan_nomor, apkota_kecamatan, apkodya_kabupaten, approvinsi, apkode_pos, aptelp, apfax, apemail, apjenisalamat); insert into alamat( no_pendaftaran, jalan_nomor, kota_kecamatan, kodya_kabupaten, provinsi, kode_pos, telp, fax, email, jenis) values( vno_pendaftaran, ipjalan_nomor, ipkota_kecamatan, ipkodya_kabupaten, ipprovinsi, ipkode_pos, iptelp, ipfax, ipemail, ipjenisalamat); insert into alamat( no_pendaftaran, jalan_nomor, kota_kecamatan, kodya_kabupaten, provinsi, kode_pos, telp, fax, email, jenis) values( vno_pendaftaran, wpjalan_nomor, wpkota_kecamatan, wpkodya_kabupaten, wpprovinsi, wpkode_pos, wptelp, wpfax, wpemail, wpjenis); insert into rapor_smp( no_pendaftaran, kelas, semester, rangking, b_ing, b_ind, mat, ips, ipa, kelakuan, kerajinan, kerapian, s, i, a) values( vno_pendaftaran, 'VII', '1', r1rangking, r1b_ing, r1b_ind, r1mat, r1ips, r1ipa, r1kelakuan, r1kerajinan, r1kerapian, r1s, r1i, r1a); insert into rapor_smp( no_pendaftaran, kelas, semester, rangking, b_ing, b_ind, mat, ips, ipa, kelakuan, kerajinan, kerapian, s, i, a) values( vno_pendaftaran, 'VII', '2', r2rangking, r2b_ing, r2b_ind, r2mat, r2ips, r2ipa, r2kelakuan, r2kerajinan, r2kerapian, r2s, r2i, r2a); insert into rapor_smp( no_pendaftaran, kelas, semester, rangking, b_ing, b_ind, mat, ips, ipa, kelakuan, kerajinan, kerapian, s, i, a) values( vno_pendaftaran, 'VIII', '1', r3rangking, r3b_ing, r3b_ind, r3mat, r3ips, r3ipa, r3kelakuan, r3kerajinan, r3kerapian, r3s, r3i, r3a);
125
insert into rapor_smp( no_pendaftaran, kelas, semester, rangking, b_ing, b_ind, mat, ips, ipa, kelakuan, kerajinan, kerapian, s, i, a) values( vno_pendaftaran, 'VIII', '2', r4rangking, r4b_ing, r4b_ind, r4mat, r4ips, r4ipa, r4kelakuan, r4kerajinan, r4kerapian, r4s, r4i, r4a); insert into rapor_smp( no_pendaftaran, kelas, semester, rangking, b_ing, b_ind, mat, ips, ipa, kelakuan, kerajinan, kerapian, s, i, a) values( vno_pendaftaran, 'IX', '1', r5rangking, r5b_ing, r5b_ind, r5mat, r5ips, r5ipa, r5kelakuan, r5kerajinan, r5kerapian, r5s, r5i, r5a); if (r1jenis_piagam not like '') then insert into piagam( no_pendaftaran, jenis_piagam, tahun, sebagai, event, tingkat) values( vno_pendaftaran, r1jenis_piagam, r1tahun, r1sebagai, r1event, r1tingkat); end if; if (r2jenis_piagam not like "") then insert into piagam( no_pendaftaran, jenis_piagam, tahun, sebagai, event, tingkat) values( vno_pendaftaran, r2jenis_piagam, r2tahun, r2sebagai, r2event, r2tingkat); end if; if (r3jenis_piagam not like "") then insert into piagam( no_pendaftaran, jenis_piagam, tahun, sebagai, event, tingkat) values( vno_pendaftaran, r3jenis_piagam, r3tahun, r3ebagai, r3event, r3tingkat); end if; if (r4jenis_piagam not like "") then insert into piagam( no_pendaftaran, jenis_piagam, tahun, sebagai, event, tingkat) values( vno_pendaftaran, r4enis_piagam, r4tahun, r4ebagai, r4event, r4tingkat); end if; if (r5jenis_piagam not like "") then insert into piagam(
126
no_pendaftaran, jenis_piagam, tahun, sebagai, event, tingkat) values( vno_pendaftaran, r5jenis_piagam, r5tahun, r5ebagai, r5event, r5tingkat); end if; COMMIT; END$$ DELIMITER ;$$
4.4.6 Form Pencarian Calon Siswa
Form data pencarian calon siswa digunakan untuk menampilkan
calon siswa, mengubah data calon siswa, menghapus data calon siswa dan
mencetak laporan data-data calon siswa. Inti method menampilkan,
mengubah dan menghapus data calon siswa pada dasarnya sama dengan
method-method menampilkan, mengubah dan menghapus data yang telah
dijelaskan sebelumnya. Berikut listing kode untuk proses pencetakan
laporan.
private void akd_btn_cari_cs_cetakActionPerformed(java.awt.event.ActionEvent evt) { try { Class.forName("org.gjt.mm.mysql.Driver"); Connection connection=DriverManager.getConnection("jdbc:mysql://"+address+":"+port+"/"+database, user,pwd); JasperPrint jasperPrint = null; String jasperFile = ""; if(akd_combo_cari_cs_dasarCari.getSelectedIndex() == 0) jasperFile ="jasper\\CariCalonSiswaDaerah.jasper"; else jasperFile ="jasper\\CariCalonSiswaSMP.jasper"; HashMap map = new HashMap(); map.put("gambar","jasper\\logo_vanlith.jpg"); map.put("jenisKelamin",akd_combo_cari_cs_jenisKel.getSelectedItem().toString());
127
map.put("tahun",tahun); map.put("tahun",tahun); map.put("yayasanSekolah","YAYASAN PANGUDI LUHUR"); map.put("namaSekolah",conf.getKonfigSekolah()[0]); map.put("alamatSekolah",conf.getKonfigSekolah()[1]); if(!new File(jasperFile).exists()){ throw new FileNotFoundException(); } jasperPrint = JasperFillManager.fillReport(jasperFile,map,connection); if(jasperPrint != null) { JasperViewer jv = new JasperViewer(jasperPrint,false); jv.setVisible(true); } } catch(JRException ex1){ ex1.printStackTrace(); JOptionPane.showMessageDialog(null,"Tidak ada data yang diprint","Warning",JOptionPane.WARNING_MESSAGE); } catch(Exception ex){ JOptionPane.showMessageDialog(null,"File Report tidak ditemukan","Warning",JOptionPane.ERROR_MESSAGE); } }
File CariCalonSiswaDaerah.jasper merupakan file laporan
yang dibuat menggunakan aplikasi pembuat laporan yaitu iReport-
1.3.2. File CariCalonSiswaDaerah.jasper memanggil stored procedure
getCalonSiswa(). Selain itu, dalam File CariCalonSiswaDaerah.jasper
juga terdapat parameter-parameter yang akan digunakan untuk
pemanggilan stored procedure getCalonSiswa() serta untuk
kelngkapan laporan. Berikut listing kode stored procedure
getCalonSiswa().
CREATE PROCEDURE `akademik`.`getCalonSiswa` (ptahun varchar(4), pjeniskelamin enum('Laki - Laki','Perempuan'), jenis int) BEGIN
128
START TRANSACTION; if (jenis < 1) then select c.no_pendaftaran, c.nama_lengkap, concat(a.jalan_nomor, ', ', a.kota_kecamatan), concat(a.kodya_kabupaten, ', ', a.provinsi), a.provinsi from calon_siswa c, alamat a where c.tahun = ptahun and c.jenis_kelamin = pjeniskelamin and c.no_pendaftaran = a.no_pendaftaran group by c.no_pendaftaran; else select c.no_pendaftaran, c.nama_lengkap, c.smp_asal, concat(a.kodya_kabupaten, ', ', a.provinsi) from calon_siswa c, alamat a where c.tahun = ptahun and c.jenis_kelamin = pjeniskelamin and c.no_pendaftaran = a.no_pendaftaran group by c.no_pendaftaran; end if; COMMIT; END$$
4.4.7 Form Input Calon Siswa yang Diterima
Form input calon siswa yang diterima digunakan untuk menyimpan
calon siswa yang diterima dan mengubah data calon siswa yang diterima.
Inti method menyimpan dan mengubah data calon siswa yang diterima
pada dasarnya sama dengan method-method menyimpan dan mengubah
data yang telah dijelaskan sebelumnya. Perbedaan pada setiap method
adalah stored procedure yang dipanggil serta parameter-parameter yang
digunakan.
4.4.8 Form Pencarian Calon Siswa yang Diterima dan Form Pencarian
Orangtua CalonSiswa yang Diterima
Form data pencarian calon siswa digunakan untuk menampilkan
calon siswa, dan mencetak laporan data-data calon siswa yang diterima.
129
Calon siswa yang diterima ditampilkan berdasarkan jenis kelamin calon
siswa.
Form pencarian orangtua calon siswa digunakan untuk
menampilkan orangtua calon siswa, dan mencetak laporan data-data
orangtua calon siswa yang diterima. Orangtua calon siswa yang diterima
ditampilkan berdasarkan jenis kelamin calon siswa.
Inti method menampilkan dan mencetak laporan data-data calon
siswa yang diterima pada dasarnya sama dengan method-method
menampilkan data dan mencetak laporan yang telah dijelaskan
sebelumnya. Perbedaan pada setiap method pencetakan laporan adalah file
jasper yang dipanggil dan parameter-parameternya.
4.4.9 Form Absensi dan Kepribadian Siswa, Form Nilai Afektif Deskripsi
NMS NUS, Form Nilai Deskripsi NMS NUS, Form Nilai Ulangan
Harian, Form Nilai Tugas, Form Nilai Psikomotorik dan Form Nilai
Extrakurikuler
Form Absensi dan Kepribadian Siswa, Form Nilai Afektif
Deskripsi NMS NUS, Form Nilai Deskripsi NMS NUS, Form Nilai
Ulangan Harian, Form Nilai Tugas, Form Nilai Psikomotorik dan Form
Nilai Extrakurikuler mempunyai method-method yang sama yaitu
menyimpan, mengubah dan meng-import data dari file CSV. File CSV
yang di gunakan memakai pemisah berupa titik koma (;). Berikut contoh
file CSV yang dibuka menggunakan Notepad dan Microsoft Office Excel :
130
Gambar 4.1 File CSV Dibuka Dengan Notepad
Gambar 4.2 File CSV Dibuka Dengan Microsoft Office Excel
Pada saat tombol import file CSV ditekan, sistem akan mengambil
data file CSV dan memasukkannya ke dalam tabel nilai sehingga
pengguna dapat melihat isi file CSV dan memastikan kebenaran isinya
sebelum menyimpannya. Berikut listing kode yang digunakan untuk
penanganan import file CSV.
private void akd_btn_afektif_importActionPerformed(java.awt.event.ActionEvent evt) { JFileChooser fileChooser = new JFileChooser(); fileChooser.setFileSelectionMode(
131
JFileChooser.FILES_ONLY ); Object[][] data = new Object[0][0]; int result = fileChooser.showOpenDialog(null); if ( result == JFileChooser.CANCEL_OPTION ) return; File fileName = fileChooser.getSelectedFile(); if ( fileName == null || fileName.getName().equals( "" ) ) JOptionPane.showMessageDialog( null, "Invalid File Name", "Invalid File Name", JOptionPane.ERROR_MESSAGE ); if(fileName.exists()) { if(fileName.isFile()) { try{ BufferedReader input = new BufferedReader(new FileReader(fileName)); StringTokenizer st; String text = "", bantu = ""; int jumlah = 0, bantu1 = 0; while ( ( text = input.readLine() ) != null ) { jumlah++; } input = new BufferedReader(new FileReader(fileName)); data = new Object[jumlah - 1][9]; jumlah = 0; while ( ( text = input.readLine() ) != null ) { st = new StringTokenizer(text, ";"); try{ for(int i=0; i<6; i++) { bantu = st.nextToken(); if(bantu.compareToIgnoreCase("no induk") == 0 || bantu.compareToIgnoreCase("") == 0) { bantu1 = 1; break; } data[jumlah][i] = bantu; } } catch(Exception e) { } if(bantu1 == 0) { jumlah++; }
132
bantu1 = 0; } } catch(IOException ioException) { System.out.println("File Error"); } } } akd_tabel_afektif.setModel(new javax.swing.table.DefaultTableModel( data, new String [] { "No Induk", "Nama Lengkap", "Afektif", "Deskripsi", "NMS", "NUS" } ) { boolean[] canEdit = new boolean [] { false, false, true, true, true, true }; public boolean isCellEditable(int rowIndex, int columnIndex) { return canEdit [columnIndex]; } }); akd_btn_afektif_import.setEnabled(false); }
4.4.10 Form Laporan Nilai per Kelas
Laporan nilai per kelas yang dibuat adalah laporan nilai per mata
pelajaran dan laporan nilai raport per kelas. Berikut listing kode yang
digunakan untuk masing-masing laporan.
1. Laporan per mata pelajaran
Object[][] data = getdata.getNilaiMapelKelas(tahun, akd_combo_akhirSem_kelas.getSelectedItem().toString(), akd_combo_akhirSem_kelas3.getSelectedItem().toString(), akd_combo_akhirSem_kelas4.getSelectedItem().toString()); jTable1.setModel(new javax.swing.table.DefaultTableModel( data, new String [] { "No Induk", "Nama Siswa", "Kognitif ", "Psikomotorik", "Afektif" } ) { boolean[] canEdit = new boolean [] {
133
false, false, false, false, false }; public boolean isCellEditable(int rowIndex, int columnIndex) { return canEdit [columnIndex]; } });
Method getdata.getNilaiMapelKelas merupakan method
yang digunakan untuk memanggil stored procedure
getNilaiMapelKelas(). Berikut listing kode method
getNilaiMapelKelas() dan stored procedure getNilaiMapelKelas().
CallableStatement cstmt = connection.prepareCall("{call getNilaiMapelKelas(?,?,?,?)}"); cstmt.setString(1, tahun); cstmt.setString(2, kelas); cstmt.setString(3, semester); cstmt.setString(4, mapel); ResultSet rs =cstmt.executeQuery(); rs.last(); int n = rs.getRow(); hasil = new Object[n][5]; int p = 0; rs.beforeFirst(); while(rs.next()) { hasil[p][0]= rs.getString(1); hasil[p][1]= rs.getString(2); hasil[p][2]= rs.getString(3); hasil[p][3]= rs.getString(4); hasil[p][4]= rs.getString(5); p++; } cstmt.close(); connection.close(); return hasil;
CREATE PROCEDURE `akademik`.`getNilaiMapelKelas` ( ptahun varchar(4), pkelas varchar(10), psemester varchar(1), pnama_mapel varchar(50))
134
BEGIN declare jumlah_keluar int default 0; START TRANSACTION; select count(id_siswa_keluar) into jumlah_keluar from siswa_keluar; if psemester = '1' then begin if (jumlah_keluar = 0) then select distinct s.no_induk, c.nama_lengkap, hitungNilaiKognitif1(ptahun, s.no_induk, pnama_mapel, pkelas, psemester), hitungNilaiPsikomotorik(ptahun, s.no_induk, pnama_mapel, pkelas, psemester), dk.afektif from calon_siswa c, kelas k, siswa s, detil_kelas_siswa d, detil_nilai_kognitif dk, detil_mapel_yang_ditempuh dm where k.tahun = ptahun and k.kelas = pkelas and k.id_kelas = d.id_kelas and c.no_pendaftaran = s.no_pendaftaran and s.no_induk = d.no_induk and dk.id_detil_mapel_yg_ditempuh = dm.id_detil_mapel_yg_ditempuh and dm.semester = psemester and dm.tahun = ptahun and dm.no_induk = s.no_induk and dm.id_kelas = (select id_kelas from kelas where kelas = pkelas and tahun = ptahun) group by s.no_induk order by no_induk; else select distinct s.no_induk, c.nama_lengkap, hitungNilaiKognitif1(ptahun, s.no_induk, pnama_mapel, pkelas, psemester), hitungNilaiPsikomotorik(ptahun, s.no_induk, pnama_mapel, pkelas, psemester), dk.afektif from calon_siswa c, kelas k, siswa s, detil_kelas_siswa d, detil_nilai_kognitif dk, detil_mapel_yang_ditempuh dm where k.tahun = ptahun and k.kelas = pkelas and k.id_kelas = d.id_kelas and c.no_pendaftaran = s.no_pendaftaran and s.no_induk = d.no_induk and dk.id_detil_mapel_yg_ditempuh = dm.id_detil_mapel_yg_ditempuh and dm.semester = psemester and dm.tahun = ptahun and dm.no_induk = s.no_induk and dm.id_kelas = (select id_kelas from kelas where kelas = pkelas and tahun = ptahun)
135
group by s.no_induk order by no_induk; end if; end; else begin if (jumlah_keluar = 0) then select distinct s.no_induk, c.nama_lengkap, hitungNilaiKognitif1(ptahun, s.no_induk, pnama_mapel, pkelas, psemester), hitungNilaiPsikomotorik(ptahun, s.no_induk, pnama_mapel, pkelas, psemester), dk.afektif from calon_siswa c, kelas k, siswa s, detil_kelas_siswa d, detil_nilai_kognitif dk, detil_mapel_yang_ditempuh dm where k.tahun = ptahun and k.kelas = pkelas and k.id_kelas = d.id_kelas and c.no_pendaftaran = s.no_pendaftaran and s.no_induk = d.no_induk and dk.id_detil_mapel_yg_ditempuh = dm.id_detil_mapel_yg_ditempuh and dm.semester = psemester and dm.tahun = ptahun and dm.no_induk = s.no_induk and dm.id_kelas = (select id_kelas from kelas where kelas = pkelas and tahun = ptahun) group by s.no_induk order by no_induk; else select distinct s.no_induk, c.nama_lengkap, hitungNilaiKognitif1(ptahun, s.no_induk, pnama_mapel, pkelas, psemester), hitungNilaiPsikomotorik(ptahun, s.no_induk, pnama_mapel, pkelas, psemester), dk.afektif from calon_siswa c, kelas k, siswa s, detil_kelas_siswa d, detil_nilai_kognitif dk, detil_mapel_yang_ditempuh dm where k.tahun = ptahun and k.kelas = pkelas and k.id_kelas = d.id_kelas and c.no_pendaftaran = s.no_pendaftaran and s.no_induk = d.no_induk and dk.id_detil_mapel_yg_ditempuh = dm.id_detil_mapel_yg_ditempuh and dm.semester = psemester and dm.tahun = ptahun and dm.no_induk = s.no_induk and dm.id_kelas = (select id_kelas from kelas where kelas = pkelas and tahun = ptahun) group by s.no_induk order by no_induk;
136
end if; end; end if; COMMIT; END$$
2. Laporan raport per kelas
Object[][] dataSiswa = getdata.getNilaiSikapData(tahun, akd_combo_nilaiKelas_kelas.getSelectedItem().toString()); String kelas = akd_combo_nilaiKelas_kelas.getSelectedItem().toString(); if(getdata.cekString(kelas, "XI-IPA")) kelas = "XI-IPA"; else if(getdata.cekString(kelas, "XI-IPS")) kelas = "XI-IPS"; else if(getdata.cekString(kelas, "XI-BAHASA")) kelas = "XI-BAHASA"; else if(getdata.cekString(kelas, "XI-IPA")) kelas = "XII-IPA"; else if(getdata.cekString(kelas, "XI-IPS")) kelas = "XII-IPS"; else if(getdata.cekString(kelas, "XII-BAHASA")) kelas = "XII-BAHASA"; else if(getdata.cekString(kelas, "X-")) kelas = "X"; String[] mapel = getdata.getMapelKelas(kelas, tahun); String[] extra = getdata.getNamaExtra(tahun); int jum = ((mapel.length + 1) * 3) + extra.length + 10; Object[][] leger = new Object[dataSiswa.length + 5][jum]; Object[][] dataNilai, dataAbsen, dataKepribadian, dataExtra; int bantu = 0, bantu1 = 0; leger[0][0] = "NOIND"; leger[0][1] = "NAMA"; bantu = 2; for(int i=0; i<mapel.length; i++) { leger[0][bantu++] = "K-" + mapel[i]; leger[0][bantu++] = "A-" + mapel[i]; leger[0][bantu++] = "P-" + mapel[i]; } leger[0][bantu + 0] = "JUM"; leger[0][bantu + 1] = "RATA"; leger[0][bantu + 2] = "RANG"; leger[0][bantu + 3] = "S"; leger[0][bantu + 4] = "I";
137
leger[0][bantu + 5] = "A"; for(int i=0; i<extra.length; i++) { leger[0][bantu+6+i] = extra[i]; bantu1 = bantu + 6 + i; } leger[0][bantu1 + 1] = "KL"; leger[0][bantu1 + 2] = "KR"; leger[0][bantu1 + 3] = "KR"; leger[0][bantu1 + 4] = "KB"; leger[0][bantu1 + 5] = "KET"; for(int i=1; i<dataSiswa.length + 1; i++) { leger[i][0] = dataSiswa[i-1][0]; leger[i][1] = dataSiswa[i-1][1]; } StringTokenizer st; String sbantu = ""; int bantu2 = 1; for(int i=1; i<dataSiswa.length + 1; i++) { dataNilai = getdata.getRaporSiswa(tahun, dataSiswa[i-1][0].toString(), akd_combo_nilaiKelas_kelas.getSelectedItem().toString(), akd_combo_nilaiKelas_sem.getSelectedItem().toString()); dataAbsen = getdata.getRaporSiswaAbsen(tahun, dataSiswa[i-1][0].toString(), akd_combo_nilaiKelas_kelas.getSelectedItem().toString(), akd_combo_nilaiKelas_sem.getSelectedItem().toString()); dataKepribadian = getdata.getRaporSiswaPribadi(tahun, dataSiswa[i-1][0].toString(), akd_combo_nilaiKelas_kelas.getSelectedItem().toString(), akd_combo_nilaiKelas_sem.getSelectedItem().toString()); dataExtra = getdata.getRaporSiswaExtra(tahun, dataSiswa[i-1][0].toString(), akd_combo_nilaiKelas_kelas.getSelectedItem().toString(), akd_combo_nilaiKelas_sem.getSelectedItem().toString()); for(int j=2; j<dataNilai.length + 2; j++) { for(int k=0; k<mapel.length; k++) { if(dataNilai[j-2][0].toString().compareTo(mapel[k]) == 0) { leger[i][k*3+2] = dataNilai[j-2][2]; leger[i][k*3+3] = dataNilai[j-2][4]; leger[i][k*3+4] = dataNilai[j-2][6]; } } } int a = mapel.length * 3 + 5;
138
for(int j=2; j<dataExtra.length + 2; j++) { for(int k=0; k<extra.length; k++) { if(dataExtra[j-2][0].toString().compareTo(extra[k]) == 0) { leger[i][a + k + 3] = dataExtra[j-2][1]; } } } leger[i][a++] = dataAbsen[0][0]; leger[i][a++] = dataAbsen[0][1]; leger[i][a++] = dataAbsen[0][2]; a = a + extra.length; leger[i][a++] = dataKepribadian[0][0]; leger[i][a++] = dataKepribadian[0][2]; leger[i][a++] = dataKepribadian[0][1]; leger[i][a++] = dataKepribadian[0][3]; } for(int i=0; i<leger.length-4; i++) { insertdata.legerKelas(leger, jum, i); } Object[][] dataSum = getdata.getSumLeger(); String data = ""; for(int i=0; i<jum - 2; i++) { data = dataSum[0][i].toString(); if(data.compareTo("0") != 0 && Integer.parseInt(data) > 10) { leger[dataSiswa.length + 1][i+2] = dataSum[0][i]; } else{ leger[dataSiswa.length + 1][i+2] = ""; } } leger[dataSiswa.length + 1][1] = "RATA-RATA"; insertdata.legerKelas(leger, jum, dataSiswa.length + 1); Object[][] dataMax = getdata.getMaxLeger(); String max = ""; char[] huruf; int b; for(int i=0; i<jum - 2; i++) { max = dataMax[0][i].toString(); huruf = max.toCharArray(); try { b = Integer.parseInt(max); } catch(Exception e) { b = 0; }
139
if(b > 10 && huruf[0]>=48 && huruf[0]<=57) { leger[dataSiswa.length + 2][i+2] = dataMax[0][i]; } else{ leger[dataSiswa.length + 2][i+2] = ""; } } leger[dataSiswa.length + 2][1] = "MAX"; insertdata.legerKelas(leger, jum, dataSiswa.length + 2); Object[][] dataMin = getdata.getMinLeger(); String min = ""; char[] hurufMin; int bMin; for(int i=0; i<jum - 2; i++) { min = dataMax[0][i].toString(); hurufMin = min.toCharArray(); try { b = Integer.parseInt(min); } catch(Exception e) { b = 0; } if(b > 10 && hurufMin[0]>=48 && hurufMin[0]<=57) { leger[dataSiswa.length + 3][i+2] = dataMin[0][i]; } else{ leger[dataSiswa.length + 3][i+2] = ""; } } leger[dataSiswa.length + 3][1] = "MIN"; insertdata.legerKelas(leger, jum, dataSiswa.length + 3); int thn = Integer.parseInt(tahun) + 1; String judul = "LEGER KELAS " + akd_combo_nilaiKelas_kelas.getSelectedItem().toString() + " " + "SEM " + akd_combo_nilaiKelas_sem.getSelectedItem().toString() + " " + "TAHUN " + tahun + "-" + thn;
Listing kode di atas digunakan untuk membuat tabel dalam
database yang berfungsi sebagai tabel sementara. Tabel tersebut
berisi raport per siswa untuk 1 kelas. Data siswa per kelas
140
diperoleh dari method getdata.getNilaiSikapData() yang
memanggil stored procedure getNilaiSikapData. Berikut listing
kode stored procedure getNilaiSikapData.
CREATE PROCEDURE `akademik`.`getNilaiSikapData` (ptahun varchar(4), pkelas varchar(10)) BEGIN declare jumlah_keluar int default 0; START TRANSACTION; select count(id_siswa_keluar) into jumlah_keluar from siswa_keluar; if (jumlah_keluar = 0) then select s.no_induk, c.nama_lengkap from calon_siswa c, kelas k, siswa s, detil_kelas_siswa d where k.tahun = ptahun and k.kelas = pkelas and k.id_kelas = d.id_kelas and c.no_pendaftaran = s.no_pendaftaran and s.no_induk = d.no_induk order by no_induk; else select s.no_induk, c.nama_lengkap from calon_siswa c, kelas k, siswa s, detil_kelas_siswa d, siswa_keluar sk where k.tahun = ptahun and k.kelas = pkelas and k.id_kelas = d.id_kelas and c.no_pendaftaran = s.no_pendaftaran and s.no_induk = d.no_induk and s.no_induk not like sk.no_induk order by no_induk; end if; COMMIT; END$$
Sedangkan data rapor per siswa diperoleh dari method
getdata.getRaporSiswa yang memanggil stored procedure
getRaporSiswa. Stored procedure getRaporSiswa akan dibahas
pada subbab berikutnya.
141
4.4.11 Form Laporan Akhir Semester Hasil Belajar Siswa
Laporan akhir semester hasil belajar siswa terdiri dari Laporan
angka, laporan deskripsi dan laporan extrakurikuler, ketidakhadiran,
kepribadian & catatan wali kelas. Berikut listing kode yang digunakan
untuk menampilkan ketiga laporan tersebut.
public void tampilRapor1() { akd_tf_akhirSem_tahun2.setText(getdata.getNoInduk(tahun, akd_combo_akhirSem_kelas.getSelectedItem().toString(), akd_combo_akhirSem_kelas2.getSelectedItem().toString())); Object[][] dataNilai = getdata.getRaporSiswa(tahun, akd_tf_akhirSem_tahun2.getText(), akd_combo_akhirSem_kelas.getSelectedItem().toString(), akd_combo_akhirSem_kelas3.getSelectedItem().toString()); jTable1.setModel(new javax.swing.table.DefaultTableModel( dataNilai, new String [] { "Mata Pelajaran", "SKBM", "Kognitif - Angka", "Kognitif - Huruf", "Psikomotorik - Angka", "Psikomotorik - Huruf", "Afektif" } ) { boolean[] canEdit = new boolean [] { false, false, false, false, false, false, false }; public boolean isCellEditable(int rowIndex, int columnIndex) { return canEdit [columnIndex]; } }); javax.swing.table.TableColumn psiangka = jTable1.getColumn("Psikomotorik - Angka"); javax.swing.table.TableColumn psihuruf = jTable1.getColumn("Psikomotorik - Huruf"); javax.swing.table.TableColumn skbm = jTable1.getColumn("SKBM"); javax.swing.table.TableColumn afe = jTable1.getColumn("Afektif"); psiangka.setPreferredWidth(85); psihuruf.setPreferredWidth(80); skbm.setPreferredWidth(20); afe.setPreferredWidth(30); if(akd_combo_akhirSem_kelas3.getSelectedIndex() != 0
142
&& getdata.cekString(akd_combo_akhirSem_kelas.getSelectedItem().toString(), "X-")) { akd_tf_akhirSem_tahun3.setText(getdata.getNaikTidakNaik(tahun, akd_tf_akhirSem_tahun2.getText(), akd_combo_akhirSem_kelas.getSelectedItem().toString())); } else { akd_tf_akhirSem_tahun3.setText(""); } Object[][] dataDeskripsi = getdata.getRaporSiswaDeskripsi(tahun, akd_tf_akhirSem_tahun2.getText(), akd_combo_akhirSem_kelas.getSelectedItem().toString(), akd_combo_akhirSem_kelas3.getSelectedItem().toString()); jTable2.setModel(new javax.swing.table.DefaultTableModel( dataDeskripsi, new String [] { "Mata Pelajaran", "Keterangan" } ) { boolean[] canEdit = new boolean [] { false, false }; public boolean isCellEditable(int rowIndex, int columnIndex) { return canEdit [columnIndex]; } }); Object[][] dataExtra = getdata.getRaporSiswaExtra(tahun, akd_tf_akhirSem_tahun2.getText(), akd_combo_akhirSem_kelas.getSelectedItem().toString(), akd_combo_akhirSem_kelas3.getSelectedItem().toString()); jTable4.setModel(new javax.swing.table.DefaultTableModel( dataExtra, new String [] { "Jenis Kegiatan", "Nilai", "Keterangan" } ) { boolean[] canEdit = new boolean [] { false, false, false }; public boolean isCellEditable(int rowIndex, int columnIndex) { return canEdit [columnIndex]; } }); Object[][] dataKehadiran =
143
getdata.getRaporSiswaAbsen(tahun, akd_tf_akhirSem_tahun2.getText(), akd_combo_akhirSem_kelas.getSelectedItem().toString(), akd_combo_akhirSem_kelas3.getSelectedItem().toString()); jTable5.setModel(new javax.swing.table.DefaultTableModel( dataExtra, new String [] { "Sakit", "Izin", "Tanpa Keterangan" } ) { boolean[] canEdit = new boolean [] { false, false, false }; public boolean isCellEditable(int rowIndex, int columnIndex) { return canEdit [columnIndex]; } }); Object[][] dataKepribadian = getdata.getRaporSiswaPribadi(tahun, akd_tf_akhirSem_tahun2.getText(), akd_combo_akhirSem_kelas.getSelectedItem().toString(), akd_combo_akhirSem_kelas3.getSelectedItem().toString()); jTable3.setModel(new javax.swing.table.DefaultTableModel( dataExtra, new String [] { "Kelakuan", "Kerapihan", "Kedisiplinan", "Kebersihan" } ) { boolean[] canEdit = new boolean [] { false, false, false, false }; public boolean isCellEditable(int rowIndex, int columnIndex) { return canEdit [columnIndex]; } }); } public void cariSiswaTerima() { Object[][] data = getdata.getSiswaDiTerima(tahun, akd_combo_cari_cs_diterima_jenisKelamin.getSelectedItem().toString()); akd_tabel_cari_cs_diterima.setModel(new javax.swing.table.DefaultTableModel( data, new String [] { "No Pend.", "Nama Lengkap", "Tempat Lahir", "SMP", "Kota/Kabupaten, Provinsi", "Telp", "Rapor", "Kelas" }
144
)); javax.swing.table.TableColumn prov = akd_tabel_cari_cs_diterima.getColumn("Kota/Kabupaten, Provinsi"); javax.swing.table.TableColumn kls = akd_tabel_cari_cs_diterima.getColumn("Kelas"); javax.swing.table.TableColumn no = akd_tabel_cari_cs_diterima.getColumn("No Pend."); javax.swing.table.TableColumn rap = akd_tabel_cari_cs_diterima.getColumn("Rapor"); prov.setPreferredWidth(140); kls.setPreferredWidth(30); no.setPreferredWidth(40); rap.setPreferredWidth(30); if(akd_tabel_cari_cs_diterima.getRowCount() != 0) akd_btn_cari_cs_diterima_cetak.setEnabled(true); else akd_btn_cari_cs_diterima_cetak.setEnabled(false); }
1. Laporan angka
Untuk laporan angka, method yang digunakan adalah
getdata.getRaporSiswa() yang memanggil stored procedure
getRaporSiswa(). Berikut listing kode stored proceduer
getRaporSiswa.
CREATE PROCEDURE `akademik`.`getRaporSiswa` ( ptahun varchar(4), pno_induk int, pid_kelas varchar(10), psemester varchar(1)) BEGIN START TRANSACTION; if psemester = '1' then begin select distinct m.nama_mapel, dm.skbm, hitungNilaiKognitif1(ptahun, pno_induk, nama_mapel, pid_kelas, psemester), angkaKeHuruf(hitungNilaiKognitif1(ptahun, pno_induk, nama_mapel, pid_kelas, psemester)), hitungNilaiPsikomotorik(ptahun, pno_induk,
145
nama_mapel, pid_kelas, psemester), angkaKeHuruf(hitungNilaiPsikomotorik(ptahun, pno_induk, nama_mapel, pid_kelas, psemester)), d.afektif from detil_nilai_kognitif d, mapel m, detil_mapel_yang_ditempuh mt, nilai_psikomotorik p, detil_mapel dm where d.id_detil_mapel_yg_ditempuh = mt.id_detil_mapel_yg_ditempuh and m.id_mapel = mt.id_mapel and p.id_detil_mapel_yg_ditempuh = mt.id_detil_mapel_yg_ditempuh and mt.tahun = ptahun and mt.no_induk = pno_induk and mt.semester = psemester group by m.nama_mapel order by m.nama_mapel; end; else begin select distinct m.nama_mapel, dm.skbm, hitungNilaiKognitif2(ptahun, pno_induk, nama_mapel, pid_kelas, psemester), angkaKeHuruf(hitungNilaiKognitif2(ptahun, pno_induk, nama_mapel, pid_kelas, psemester)), hitungNilaiPsikomotorik(ptahun, pno_induk, nama_mapel, pid_kelas, psemester), angkaKeHuruf(hitungNilaiPsikomotorik(ptahun, pno_induk, nama_mapel, pid_kelas, psemester)), d.afektif from detil_nilai_kognitif d, mapel m, detil_mapel_yang_ditempuh mt, nilai_psikomotorik p, detil_mapel dm where d.id_detil_mapel_yg_ditempuh = mt.id_detil_mapel_yg_ditempuh and m.id_mapel = mt.id_mapel and p.id_detil_mapel_yg_ditempuh = mt.id_detil_mapel_yg_ditempuh and mt.tahun = ptahun and mt.no_induk = pno_induk and mt.semester = psemester group by m.nama_mapel order by m.nama_mapel; end; end if; COMMIT; END$$
Perhitungan nilai kognitif dilakukan oleh stored function
hitungNilaiKognitif1() untuk perhitungan nilai kognitif semester 1
146
dan hitungNilaiKognitif() untuk perhitungan nilai kognitif semester
2. Berikut listing kode stored function hitungNilaiKognitif1() dan
stored function hitungNilaiKognitif2().
CREATE FUNCTION `akademik`.`hitungNilaiKognitif1` ( ptahun varchar(4), pno_induk int, pid_mapel varchar(50), pid_kelas varchar(10), psemester varchar(1)) RETURNS double BEGIN declare hasil, ratauh, ratatugas double default 0; declare jumlah, jumlah_tugas int default 0; declare uh double default 0; declare vid_detil_mapel_tempuh, vid_detil_nilai_kognitif int default 0; declare pp1, pp2, pp3, pp4, pp5, pp6, pp7, pp8, pp9, pp10 int default 0; declare pt1, pt2, pt3, pt4, pt5, pt6, pt7, pt8, pt9, pt10 int default 0; select id_detil_mapel_yg_ditempuh into vid_detil_mapel_tempuh from detil_mapel_yang_ditempuh where tahun = ptahun and no_induk = pno_induk and id_mapel = getIdMapel(pid_mapel, ptahun) and id_kelas = getIdKelas(pid_kelas, ptahun) and semester = psemester; select id_detil_nilai_kognitif into vid_detil_nilai_kognitif from detil_nilai_kognitif where id_detil_mapel_yg_ditempuh = vid_detil_mapel_tempuh; select uh1, uh2, uh3, uh4, uh5, uh6, uh7, uh8, uh9, uh10 into pp1, pp2, pp3, pp4, pp5, pp6, pp7, pp8, pp9, pp10 from nilai_kognitif where id_detil_nilai_kognitif = vid_detil_nilai_kognitif; if (pp1 is not null) then set jumlah = 1; else set pp1 = 0; end if; if (pp2 is not null) then set jumlah = 2; else set pp2 = 0; end if; if (pp3 is not null) then set jumlah = 3; else set pp3 = 0; end if; if (pp4 is not null) then set jumlah = 4; else set pp4 = 0; end if; if (pp5 is not null) then set jumlah = 5; else set pp5 = 0; end if;
147
if (pp6 is not null) then set jumlah = 6; else set pp6 = 0; end if; if (pp7 is not null) then set jumlah = 7; else set pp7 = 0; end if; if (pp8 is not null) then set jumlah = 8; else set pp8 = 0; end if; if (pp9 is not null) then set jumlah = 9; else set pp9 = 0; end if; if (pp10 is not null) then set jumlah = 10; else set pp10 = 0; end if; select t1, t2, t3, t4, t5, t6, t7, t8, t9, t10 into pt1, pt2, pt3, pt4, pt5, pt6, pt7, pt8, pt9, pt10 from nilai_tugas where id_detil_mapel_yg_ditempuh = vid_detil_mapel_tempuh; if (pt1 is not null) then set jumlah_tugas = 1; else set pt1 = 0; end if; if (pt2 is not null) then set jumlah_tugas = 2; else set pt2 = 0; end if; if (pt3 is not null) then set jumlah_tugas = 3; else set pt3 = 0; end if; if (pt4 is not null) then set jumlah_tugas = 4; else set pt4 = 0; end if; if (pt5 is not null) then set jumlah_tugas = 5; else set pt5 = 0; end if; if (pt6 is not null) then set jumlah_tugas = 6; else set pt6 = 0; end if; if (pt7 is not null) then set jumlah_tugas = 7; else set pt7 = 0; end if; if (pt8 is not null) then set jumlah_tugas = 8; else set pt8 = 0; end if; if (pt9 is not null) then set jumlah_tugas = 9; else set pt9 = 0; end if; if (pt10 is not null) then set jumlah_tugas = 10; else set pt10 = 0; end if; set ratauh = (pp1 + pp2 + pp3 + pp4 + pp5 + pp6 + pp7 + pp8 + pp9 + pp10) / jumlah; set ratatugas = (pt1 + pt2 + pt3 + pt4 + pt5 + pt6 + pt7 + pt8 + pt9 + pt10) / jumlah_tugas; set uh = ((3 * ratauh) + ratatugas) / 4; select (jumlah * uh + nms + nus) / (jumlah + 2) into hasil from detil_nilai_kognitif where id_detil_nilai_kognitif = vid_detil_nilai_kognitif; return round(hasil); END$$
CREATE FUNCTION `akademik`.`hitungNilaiKognitif2` ( ptahun varchar(4),
148
pno_induk int, pid_mapel varchar(50), pid_kelas varchar(10), psemester varchar(1) ) RETURNS double BEGIN declare hasil, ratauh, ratatugas, nr1 double default 0; declare jumlah, jumlah_tugas int default 0; declare uh double default 0; declare vid_detil_mapel_tempuh, vid_detil_nilai_kognitif int default 0; declare pp1, pp2, pp3, pp4, pp5, pp6, pp7, pp8, pp9, pp10 int default 0; declare pt1, pt2, pt3, pt4, pt5, pt6, pt7, pt8, pt9, pt10 int default 0; select hitungNilaiKognitif1(ptahun, pno_induk, pid_mapel, pid_kelas, '1') into nr1; select id_detil_mapel_yg_ditempuh into vid_detil_mapel_tempuh from detil_mapel_yang_ditempuh where tahun = ptahun and no_induk = pno_induk and id_mapel = getIdMapel(pid_mapel, ptahun) and id_kelas = getIdKelas(pid_kelas, ptahun) and semester = psemester; select id_detil_nilai_kognitif into vid_detil_nilai_kognitif from detil_nilai_kognitif where id_detil_mapel_yg_ditempuh = vid_detil_mapel_tempuh; select uh1, uh2, uh3, uh4, uh5, uh6, uh7, uh8, uh9, uh10 into pp1, pp2, pp3, pp4, pp5, pp6, pp7, pp8, pp9, pp10 from nilai_kognitif where id_detil_nilai_kognitif = vid_detil_nilai_kognitif; if (pp1 is not null) then set jumlah = 1; else set pp1 = 0; end if; if (pp2 is not null) then set jumlah = 2; else set pp2 = 0; end if; if (pp3 is not null) then set jumlah = 3; else set pp3 = 0; end if; if (pp4 is not null) then set jumlah = 4; else set pp4 = 0; end if; if (pp5 is not null) then set jumlah = 5; else set pp5 = 0; end if; if (pp6 is not null) then set jumlah = 6; else set pp6 = 0; end if; if (pp7 is not null) then set jumlah = 7; else set pp7 = 0; end if;
149
if (pp8 is not null) then set jumlah = 8; else set pp8 = 0; end if; if (pp9 is not null) then set jumlah = 9; else set pp9 = 0; end if; if (pp10 is not null) then set jumlah = 10; else set pp10 = 0; end if; select t1, t2, t3, t4, t5, t6, t7, t8, t9, t10 into pt1, pt2, pt3, pt4, pt5, pt6, pt7, pt8, pt9, pt10 from nilai_tugas where id_detil_mapel_yg_ditempuh = vid_detil_mapel_tempuh; if (pt1 is not null) then set jumlah_tugas = 1; else set pt1 = 0; end if; if (pt2 is not null) then set jumlah_tugas = 2; else set pt2 = 0; end if; if (pt3 is not null) then set jumlah_tugas = 3; else set pt3 = 0; end if; if (pt4 is not null) then set jumlah_tugas = 4; else set pt4 = 0; end if; if (pt5 is not null) then set jumlah_tugas = 5; else set pt5 = 0; end if; if (pt6 is not null) then set jumlah_tugas = 6; else set pt6 = 0; end if; if (pt7 is not null) then set jumlah_tugas = 7; else set pt7 = 0; end if; if (pt8 is not null) then set jumlah_tugas = 8; else set pt8 = 0; end if; if (pt9 is not null) then set jumlah_tugas = 9; else set pt9 = 0; end if; if (pt10 is not null) then set jumlah_tugas = 10; else set pt10 = 0; end if; set ratauh = (pp1 + pp2 + pp3 + pp4 + pp5 + pp6 + pp7 + pp8 + pp9 + pp10) / jumlah; set ratatugas = (pt1 + pt2 + pt3 + pt4 + pt5 + pt6 + pt7 + pt8 + pt9 + pt10) / jumlah_tugas; set uh = ((3 * ratauh) + ratatugas) / 4; select (jumlah * uh + nms + nus + nr1) / (jumlah + 3) into hasil from detil_nilai_kognitif where id_detil_nilai_kognitif = vid_detil_nilai_kognitif; return round(hasil); END$$
Perbedaan stored function hitungNilaiKognitif1 dan
hitungNilaiKognitif2 adalah perhitungan nilai akhirnya.
150
Perhitungan pada hitungNilaiKognitif2 melibatkan hasil dari
hitungNilaiKognitif1.
Sedangkan perhitungan nilai psikomotorik dilakukan oleh
stored function hitungNilaiPsikomotorik(). Berikut listing kode
stored function hitungNilaiPsikomotorik.
CREATE FUNCTION `akademik`.`hitungNilaiPsikomotorik` ( ptahun varchar(4), pno_induk int, pid_mapel varchar(50), pid_kelas varchar(10), psemester varchar(1)) RETURNS double BEGIN declare hasil double default 0; declare vid_detil_mapel_tempuh int default 0; declare jumlah int default 0; declare pp1, pp2, pp3, pp4, pp5, pp6, pp7, pp8, pp9, pp10 int default 0; select id_detil_mapel_yg_ditempuh into vid_detil_mapel_tempuh from detil_mapel_yang_ditempuh where tahun = ptahun and no_induk = pno_induk and id_mapel = getIdMapel(pid_mapel, ptahun) and id_kelas = getIdKelas(pid_kelas, ptahun) and semester = psemester; select p1, p2, p3, p4, p5, p6, p7, p8, p9, p10 into pp1, pp2, pp3, pp4, pp5, pp6, pp7, pp8, pp9, pp10 from nilai_psikomotorik where id_detil_mapel_yg_ditempuh = vid_detil_mapel_tempuh; if (pp1 is not null) then set jumlah = 1; else set pp1 = 0; end if; if (pp2 is not null) then set jumlah = 2; else set pp2 = 0; end if; if (pp3 is not null) then set jumlah = 3; else set pp3 = 0; end if; if (pp4 is not null) then set jumlah = 4; else set pp4 = 0; end if; if (pp5 is not null) then set jumlah = 5; else set pp5 = 0; end if; if (pp6 is not null) then set jumlah = 6; else set pp6 = 0; end if; if (pp7 is not null) then set jumlah = 7; else set pp7 = 0; end if; if (pp8 is not null) then set jumlah = 8; else set pp8
151
= 0; end if; if (pp9 is not null) then set jumlah = 9; else set pp9 = 0; end if; if (pp10 is not null) then set jumlah = 10; else set pp10 = 0; end if; set hasil = (pp1 + pp2 + pp3 + pp4 + pp5 + pp6 + pp7 + pp8 + pp9 + pp10) / jumlah; return round(hasil); END$$
Penentuan kenaikan kelas ditentukan oleh storedd
procedured getNaikTidakNaik. Berikut listing programnya.
DELIMITER $$; DROP PROCEDURE IF EXISTS `akademik`.`getNaikTidakNaik`$$ CREATE PROCEDURE `akademik`.`getNaikTidakNaik` (ptahun varchar(4), pno_induk int, pid_kelas varchar(10)) BEGIN DECLARE hasil text; DECLARE counter, counteripa, counterips, counterbhs int default 0; DECLARE nama varchar(50); DECLARE skbm varchar(3); DECLARE kognitif double; DECLARE psikomotorik double; DECLARE afektif enum('Tinggi Sekali','TInggi','Sedang','Rendah','Rendah Sekali'); DECLARE done INT DEFAULT 0; DECLARE cur CURSOR FOR select m.nama_mapel, dm.skbm, hitungNilaiKognitif2(ptahun, pno_induk, nama_mapel, pid_kelas, '2'), hitungNilaiPsikomotorik(ptahun, pno_induk, nama_mapel, pid_kelas, '2'), d.afektif from detil_nilai_kognitif d, mapel m, detil_mapel_yang_ditempuh mt, nilai_psikomotorik p, detil_mapel dm where d.id_detil_mapel_yg_ditempuh = mt.id_detil_mapel_yg_ditempuh and m.id_mapel = mt.id_mapel and p.id_detil_mapel_yg_ditempuh = mt.id_detil_mapel_yg_ditempuh and mt.tahun = ptahun and mt.no_induk = pno_induk and mt.semester = '2' and m.id_mapel = dm.id_mapel order by m.nama_mapel; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done
152
= 1; START TRANSACTION; set counter = 1; set counteripa = 0; set counterips = 0; set counterbhs = 0; set hasil = ''; OPEN cur; REPEAT FETCH cur into nama, skbm, kognitif, psikomotorik, afektif; if skbm > kognitif or skbm > psikomotorik or afektif = 'Rendah' or afektif = 'Rendah Sekali' then begin set counter = counter + 1; if nama like '%biologi%' or nama like '%fisika%' or nama like '%matematika%' or nama like '%kimia%' then set counteripa = counteripa + 1; elseif nama like '%sejarah%' or nama like '%ekonomi%' or nama like '%sosiologi%' then set counterips = counterips + 1; elseif nama like '%bahasa%' then set counterbhs = counterbhs + 1; end if; end; end if; UNTIL done END REPEAT; CLOSE cur; if counter > 3 then set hasil = 'Tidak Naik Kelas'; else begin set hasil = 'Naik Kelas\nDapat masuk ke jurusan :'; if counteripa < 1 then set hasil = concat(hasil, '\nIPA'); end if; if counterips < 1 then set hasil = concat(hasil, '\nIPS'); end if; if counterbhs < 1 then set hasil = concat(hasil, '\nBAHASA'); end if; end; end if; select hasil; COMMIT; END$$
153
DELIMITER ;$$
2. Laporan deskripsi
Untuk laporan deskripsi digunakan method
getdata.getRaporSiswaDeskripsi() yang memanggil stored
procedure getRaporSiswaDeskripsi. Berikut listing kode stored
procedure getRaporSiswaDeskripsi.
CREATE PROCEDURE `akademik`.`getRaporSiswaDeskripsi` ( ptahun varchar(4), pno_induk int, pid_kelas varchar(10), psemester varchar(1)) BEGIN START TRANSACTION; select distinct m.nama_mapel, d.deskripsi from detil_nilai_kognitif d, mapel m, detil_mapel_yang_ditempuh mt, detil_mapel dm where d.id_detil_mapel_yg_ditempuh = mt.id_detil_mapel_yg_ditempuh and m.id_mapel = mt.id_mapel and mt.tahun = ptahun and mt.no_induk = pno_induk and mt.semester = psemester order by m.nama_mapel; COMMIT; END$$
3. Laporan extrakurikuler, ketidakhadiran, kepribadian & catatan wali
kelas
Untuk laporan extrakurikuler, ketidakhadiran, kepribadian
& catatan wali kelas digunakan method
getdata.getRaporSiswaExtra() yang memanggil stored procedure
getRaporSiswaExtra, method getdata.getRaporSiswaAbsen() yang
memanggil stored procedure getRaporSiswaAbsen,
getdata.getRaporSiswaPribadi() yang memanggil stored procedure
154
getRaporSiswaPribadi dan getdata.getCatWaliKelas() yang
memanggil stored procedure getCatWaliKelas. Berikut listing
kode masing-masing stored procedure.
CREATE PROCEDURE `akademik`.`getRaporSiswaExtra` ( ptahun varchar(4), pno_induk int, pid_kelas varchar(10), psemester varchar(1)) BEGIN START TRANSACTION; select e.nama_extra, d.nilai, d.keterangan from detil_nilai_extra d, extra e where e.tahun = ptahun and d.no_induk = pno_induk and d.kelas = getIdKelas(pid_kelas, ptahun) and d.semester = psemester AND d.id_extra = e.id_extra; COMMIT; END$$
CREATE PROCEDURE `akademik`.`getRaporSiswaAbsen` ( ptahun varchar(4), pno_induk int, pid_kelas varchar(10), psemester varchar(1) ) BEGIN START TRANSACTION; select n.s, n.i, n.a from nilai_sikap n, detil_nilai_sikap d where d.tahun = ptahun and d.no_induk = pno_induk and d.semester = psemester and n.id_detil_nilai_sikap = d.id_detil_nilai_sikap; COMMIT; END$$
CREATE PROCEDURE `akademik`.`getRaporSiswaPribadi` ( ptahun varchar(4), pno_induk int, pid_kelas varchar(10), psemester varchar(1)) BEGIN START TRANSACTION; select n.kelakuan, n.kerapihan, n.kedisiplinan, n.kebersihan from nilai_sikap n, detil_nilai_sikap d where d.tahun = ptahun and d.no_induk = pno_induk
155
and d.semester = psemester and n.id_detil_nilai_sikap = d.id_detil_nilai_sikap; COMMIT; END$$
CREATE PROCEDURE `akademik`.`getCatWaliKelas` ( ptahun varchar(4), pno_induk int, pid_kelas varchar(10), psemester varchar(1)) BEGIN START TRANSACTION; select n.catatan_wali_kelas from nilai_sikap n, detil_nilai_sikap d where d.tahun = ptahun and d.no_induk = pno_induk and d.semester = psemester and n.id_detil_nilai_sikap = d.id_detil_nilai_sikap; COMMIT; END$$
156
BAB V
ANALISIS HASIL
5.1. Analisis Motodologi
Metode yang digunakan dalam pengembangan sistem ini
menggunakan metode SDLC (System Development Life Cycle) / Siklus
Hidup Pengembangan Sistem. Metode ini ditekankan pada pijakan dasar
pada awal proses pengembangan yang kuat, sehingga solusi yang
diusulkan dapat dicapai dengan baik. Dengan metode ini, sistem dapat
dikembangkan sesuai dengan keinginan user.
Agar sistem ini menjadi user friendly dan mudah digunakan oleh
user, maka sangat tepat jika pengembangannya menggunakan metode
SDLC. Dengan menggunakan teknik ini, dapat diketahui proses apa saja
yang dibutuhkan oleh sistem dan dapat diketahui arus data yang ada.
5.2. Analisis Tools
Sistem ini dibangun menggunakan MySQL Server sebagai server
database dan J2SE dengan JDK 1.5 sebagai bahasa pengembangannya.
Bahasa pamrograman Java merupakan bahasa yang sangat baik digunakan
untuk pemrograman berorientasi obyek. Java bersifat Open Source
sehingga tidak memerlukan biaya tambahan untuk penggunaannya. Java
juga bersifat flexible, dapat dijalankan pada sistem operasi apa saja dengan
syarat memiliki Java Virtual Machine.
157
MySQL Server telah mendukung pengembangan basis data
berbasis client-server dengan ukuran yang cukup besar. Database MySQL
versi 5 juga sudah mendukung stored procedure, stored function, dan
trigger yang sangat mendukung dalam penerapan server-client. Pada
MySQL Server versi 5 ini juga memiliki jenis tabel InnoDB yang
mendukung transaction manager. Disamping itu, MySQL mempunyai
sifat Free (gratis).
5.3. Analisis Implementasi
Dengan menggunakan kedua Tools diatas (MySQL Server dan
J2SE), maka sistem informasi akademik untuk Yayasan Pangudi Luhur
dapat dibangun. Namun sistem ini haruslah diujicobakan terlebih dahulu
sebelum diputuskan untuk digunakan.
158
BAB VI
PENUTUP
Dari sistem informasi akademik SMA ini, dapat diambil kesimpulan dan
saran. Adapun kesimpulannya adalah sebagai berikut :
5.4. Kesimpulan
Kesimpulan dari sistem yang telah dibuat adalah sebagai berikut:
1. Metode SDLC dapat digunakan untuk merancang sistem informasi
akademik untuk SMA.
2. J2SE dengan JDK 1.5 dapat digunakan untuk membangun sebuah
aplikasi Client/Server, karena tools yang ada padanya mendukung
untuk melakukan pembuatan sistem informasi akademik yang
dinamis.
3. Pengembangan Sistem Informasi Akademik SMA untuk Yayasan
Pangudi Luhur ini jika diterapkan dapat memberi kemudahan
kepada:
• panitia penerimaan siswa baru untuk mengelola calon siswa.
• petugas pembuat rapor untuk membuat rapor dan
penghitungan ulang nilai akhir siswa yang kemudian
dicocokan dengan hasil akhir yang diberikan oleh guru mata
pelajaran yang bersangkutan.
• petugas penentu kenaikan kelas dan penjurusan karena sistem
memberikan rekomendasi kenaikan kelas dan penjurusan.
159
• pihak sekolah karena sistem menyediakan fasilitas untuk 2
model penyelenggaraan pendidikan yang perbedaannya
terletak pada sistem penilaian yaitu model lama hanya
terdapat 1 nilai angka untuk tiap mata pelajaran sedangkan
model baru terdapat 3 aspek yaitu kognitif, afektif dan
psikomotorik.
• pihak sekolah karena sistem menyediakan pengolahan data-
data master secara dinamis sehingga pihak sekolah dapat
menambah, mengubah ataupun menghapus data-data master.
• pihak yayasan karena sistem dapat dipakai di semua cabang
SMA sehingga yayasan dapat memperoleh laporan yang
serupa dari cabang-cabangnya.
5.2 Saran
Selanjutnya, agar sistem informasi ini menjadi lebih berkembang,
penulis mempunyai saran :
1. Sistem belum menyediakan fasilitas backup data untuk tiap periode.
2. Sebaiknya dilakukan backup database secara rutin agar sistem dapat
berjalan dangan cepat.
3. Sistem belum menyediakan fasilitas yang mendukung agar data
dalam pendaftaran calon siswa baru online dapat di satukan dengan
data-data dalam sistem.
160
DAFTAR PUSTAKA
Kadir, A. 2004. Dasar Pemrograman Java 2. Andi Yogyakarta. Yogyakarta.
Prasetyo, D.D. 2007. 150 Rahasia Pemrograman Java. PT Elex Media
Komputindo. Jakarta.
Fikri, R.; Adam, F.I.; Prakoso, I.. 2005. Pemrograman Java. Andi Yogyakarta.
Yogyakarta.
Tomy. 2008. Tip dan Trik Profesional MySQL 5. PT Elex Media Komputindo.
Jakarta.
Sanjaya, R. 2005. Pengolahan Database MySQL 5 dengan Java 2. Andi
Yogyakarta. Yogyakarta
Utama, G. 2002. Berfikir Objektif: Cara Efektif Menguasai Java.
http://ilmukomputer.com
Polina, A.M..; Siang, J.J. 2005. Kiat Jitu Menyusun Skripsi Jurusan
Informatika/Komputer. Andi Yogyakarta. Yogyakarta.
Situs Resmi Java: http://www.java.sun.com