186
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

SISTEM INFORMASI AKADEMIK MENGGUNAKAN JAVA 5 DAN …repository.usd.ac.id/32316/2/045314005_Full.pdf · Tugas Akhir ini disusun untuk memenuhi salah satu syarat memperoleh gelar sarjana

  • 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

iii

iv

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

39

Gambar 3.2 Use Case Penerimaan Siswa Baru

Gambar 3.3 Use Case Data Akademik

40

Gambar 3.4 Use Case Data Nilai

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

42

3.3 DFD (Data Flow Diagram)

3.3.1 Bagan Berjenjang

Gambar 3.7 Diagram Berjenjang

43

Gambar 3.8 Diagram Berjenjang Lanjutan

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

54

3.4 Desain Basisdata

3.4.1 E-R Diagram

Gambar 3.32 ER-Diagram

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

59

3.4.2 Relasi antar tabel

Gambar 3.33 Relasi antar Tabel

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