Upload
others
View
10
Download
0
Embed Size (px)
Citation preview
20
BAB III
PEMBAHASAN
3.1. Tinjauan Perusahaan
3.1.1. Sejarah Perusahsaan
Sekolah Menengah Kejurusan (SMK) Insan Tazakka merupakan salah satu
sekolah swasta yang berlokasi di Jl. Ir. H. Juanda no 27 Kotabaru Karawang. SMK
Insan Tazakka berdiri pada tahun 2014 dengan SK Pendirian Sekolah NOMER
AHU-02744_50.10.2014 tanggal 17 Juni 2014 dan SK Izin Operasional
421.9/kep.09/I/SMK-BPMPT/V/2016 tanggal 26 Mei 2016 yang ditandatangani oleh
Bapak Kh. Hasan Nuri Hidayatullah selaku Ketua Yayasan Pendidikan SMK Insan
Tazakka(Akte Notaris R.K.A. Sachri No. 28 tanggal 09 juni 2014 /Ketua : Kh. Hasan
Nuri Hidayatullah, Sekretaris : Ir. H. Achmad Fauzi, Bendahara : Hj. Ni’matur
Royyanah) . Luas Tanah 1827 M2.
3.1.2. Struktur Organisasi dan Fungsi
Struktur Organisasi adalah suatu susunan dan hubungan antara tiap bagian
serta posisi yang ada pada suatu organisasi atau perusahaan dalam menjalankan
kegiatan operasional untuk mencapai tujuan. Struktur Organisasi menggambarkan
dengan jelas pemisahan kegiatan pekerjaan antara yang satu dengan yang lain dan
bagaimana hubungan aktivitas dan fungsi dibatasi. Dalam struktur organisasi yang
baik harus menjelaskan hubungan wewenang siapa melapor kepada siapa.
Bentuk Struktur Organisasi yang terdapat dalam SMK Insan Tazakka adalah
sebagai berikut :
21
Sumber : Arsip SMK Insan Tazakka (2019)
Gambar III.1.
Struktur Organisasi SMK Insan Tazakka
Berikut adalah fungsi dan wewenang dari tiap bagian yang terdapat pada
struktur organisasi SMK Insan Tazakka, antara lain :
1. Kepala Sekolah
Kepala Sekolah merupakan orang yang bertanggung jawab penuh terhadap
seluruh kegiatan sekolah, di sini kepala sekolah juga berperan sebagai Manager,
Edukator, Leader Motivator dan juga Inovator. baik dari dalam maupun di luar.
Tugasnya :
a. Menyusun program kerja sekolah.
b. Mengawasi proses belajar mengajar, pelaksanaan dan penilaian terhadap proses
dan hasil belajar serta bimbingan dan konseling ( BK ).
c. Sebagai pembina kesiswaan.
22
d. Pelaksanaan bimbingan dan penilaian bagi para guru serta tenaga kependidikan
lainnya.
e. Penyelenggaraan administrasi sekolah yaitu meliputi administrasi ketenagaan,
keuangan, kesiswaan, perlengkapan dan kurikulum.
f. Pelaksanaan hubungan sekolah dengan lingkungan sekitar dan atau
masayarakat.
2. Kurikulum
Guru yang bertugas dalam bidang Kurikulum bertanggung jawab atas semua
kegiatan belajar mengajar. Seperti:
a. Menyusun pembagian tugas para guru.
b. Mengelola semua kegiatan belajar mengajar.
c. Menyusun jadwal evaluasi.
d. Menyusun kriteria untuk kenaikan kelas dan kurikulum.
e. Menyusun pelaksanaan UAS dan UAN.
f. Menyusun instrumen untuk kegiatan belajar mengajar.
g. Menyusun kegiatan ekstrakulikuler.
3. Kesiswaan
Guru yang bertugas dalam bidang Kesiswaan membidangi semua urusan
kesiswaan, bertanggung jawab atas semua kegiatan belajar mengajar, antara lain :
a. Perencanaan dan pelaksanaan kegiatan ekstrakulikuker.
b. Perngadaan pengarahan dan pembina kegiatan OSIS.
c. Penginventarisasian absensi dan pelanggaran – pelanggaran.
d. Pembina sekaligus pelaksana kegiatan 5-K.
e. Penilaian terhadap semua siswa yang mewakili sekolah terhadap kegiatan
diluar sekolah.
23
f. Perencanaan kegiatan setelah siswa lulus.
4. Sanpras
Sanpras bertugas sebagai pelaksana dan menyususn program pengembangan
pemeliharaan saran prasarana.
Tugasnya :
a. Menyusun program kegiatan saran prasarana.
b. Melaksanakan analisis dan kebutuhan sarana prasarana.
c. Memantau pengedaan bahan praktek siswa.
d. Melakukan penerimaan, pemeriksaan, dan pencatatan barang kedalam buku
induk.
e. Melaksanakan pendistribusian barang/alat perunit kerja.
f. Merekapitulasi alat/barang yang rusak ringan atau rusak berat.
g. Mengkoordinasikan dan mengawasi pemeliharaan, perbaikan, pengembangan,
dan penghapusan sarana.
h. Melaksanakan pengelolaan sistem administrasi sarana prasarana.
5. Hubinmas
Bagian Hubinmas membidangi hubungan masyarakat, juga bertanggung jawab
atas semua kegiatan belajar mengajar antara lain sebagai berikut :
a. Membina kerjasama dengan masyarakat sekitar sekolah.
b. Membantu pelaksanaan tugas BP3.
6. Tata Usaha
Tugas pokok bagian Tata Usaha :
a. Menyusun program kerja tata usaha sekolah.
b. Mengelola keuangan sekolah.
c. Mengurus administrasi ketenagaan dan siswa.
24
d. Pembinaan dan pengembangan karir para pegawai tata usaha sekolah.
e. Mengkoordinasikan dan melaksanakan 7K.
f. Menyusun laporan pelaksanaan kegiatan pengurusan ketata usahaan secara
berkala.
7. Bendahara
Bendahara bertanggung jawab atas perintah dari kepala tata usaha yang
berhubungan dengan semua urusan bagian bendahara, semua waka, dan semua
bagian kaprog.
Tugasnya :
a. Menyusun program kerja bendahara.
b. Mengkoordinasi tugas-tugas bendahara.
c. Membina dan mengembangkan tugas-tugas ketatausahaan.
d. Meneliti dan kemudian membuat surat, baik surat masuk maupun surat keluar
sesuai dengan disposisi/intruksi kepala tata usaha.
e. Memantau pelaksanaan 6k.
f. Membantu kepala tata usaha dalam penyususnan RAPBS.
g. Bertanggung jawab atas penggunaan stempel sekolah.
8. Guru
Tugas pokok guru mata pelajaran :
a. Melaksanakan segala hal kegiatan pembelajaran.
b. Melaksanakan kegiatan Penilaian Proses Belajar, Ulangan (Harian,
Umum, dan Akhir).
c. Melaksanakan penilaian dan analisis hasil ulangan harian.
d. Melaksanakan program perbaikan dan pengayaan.
e. Mengisi daftar nilai siswa.
25
f. Membuat catatan tentang kemajuan dari hasil belajar.
g. Mengisi daftar hadir siswa sebelum memulai pelajaran.
3.2. Tinjauan Kasus
3.2.1. Proses Bisnis Sistem Berjalan
Prosedur yag sedang berjalan dalam pembayaran SPP pada SMK Insan
Tazakka adalah sebagai berikut :
1. Prosedur Pembayaran
Siswa melakukan pembayaran pada batas waktu yang sudah di tentukan, dengan
membawa kartu SPP dan kartu pelajar kepada bagian bendahara.
2. Prosedur Pencatatan
Bagian bendahara akan mencatat setiap pembayaran ke buku transaksi
pembayaran.
3. Prosedur Persetujuan
Setelah mencatat transaksi yang dibayarkan oleh siswa tersebut, maka bagian
bendahara akan memberikan stempel tanggal pada kartu SPP siswa, setelah itu
bendahara akan menandatangani kartu SPP dengan tujuan bahwa siswa tersebut
sudah melakukan pembayaran SPP sekolah.
26
3.2.2. Activity Diagram
Gambar III.2.
Activity Diagram Sistem Berjalan
3.2.3. Dokumen Masukan
1. Kartu Pelajar
Nama dokumen : Kartu Pelajar
Fungsi : Sebagai pengenal identitas resmi siswa disekolah
Sumber : Siswa
Tujuan : Bendahara
Frekuensi : Setiap ada pembayaran SPP
Media : Kertas
act Activity Diagram Usulan
BendaharaSiswa
Mulai
Melakukan pembayaran
dengan menyerahkan kartu
SPP
Menerima pembayaran dan
kartu SPP
Mencatat ke dalam buku
transaksi
Memberika stempel dan
tanggal pada kartu
Memberikan kartu SPP
kembali ke siswa
Menerima kartu SPP
Selesai
27
Jumlah : 1(satu) Lembar
Bentuk : Lampiran A-1
3.2.4. Dokumen Keluaran
1. Kartu Pembayaran
Nama dokumen : Kartu Pembayaran
Fungsi : Sebagai bukti riwayat pembayaran SPP
Sumber : Bendahara
Tujuan : Siswa
Frekuensi : Setiap ada pembayaran
Media : Kertas
Jumlah : -
Bentuk : Lampiran B-1
3.2.5. Permasalahan Pokok
Permasalahan pokok yang terjadi pada saat proses pembayaran SPP di SMK
Insan Tazakka yaitu, sebagai berikut :
1. Karena proses pencatatan dilakukan secara manual, jadi keamanan data sering
tidak bisa dijaga, sering terjadi kehilangan data, sehingga menimbulkan kesalahan
pada proses pembuatan laporan.
2. Selain itu juga, ketika siswa kehilangan kartu pembayaran, maka petugas akan
kesulitan untuk mengetahui jumlah yang sudah dibayarkan oleh siswa.
3. Bila terjadi transaksi pembayaran SPP, petugas harus mencatat data siswa
kedalam sebuah buku, serta bukti pembayaran berupa kartu pembayaran di
28
tuliskan secara manual, yang menyebabkan kurang cepatnya pelayanan terhadap
siswa.
3.2.6. Pemecahan Masalah
1. Dibuat sistem yang terkomputerisasi dengan pembatasan akses agar keamanan
data terjaga.
2. Dibuat sistem yang dapat menelusuri riwayat pembayaran siswa.
3. Dibuat sistem yang dapat mencatat pembayaran siswa dan mencetak keluarannya.
3.3. Analisis Kebutuhan Software
3.3.1. Analisa Kebutuhan
Agar dalam perancangan sistem informasi menjadi tepat guna, maka
dibutuhkan analisa kebutuhan baik dari segi lingkungan sistem sampai kepada
kebutuhan pengguna itu sendiri. Berikut analisa kebutuhan pengguna pada SMK
Insan Tazakka
A. Kepala Tata Usaha
A.1. Melakukan Login
A.2. Mengelola Pengguna
A.3. Mengelola Data Siswa
A.4. Melihat Laporan Pembayaran SPP
A.5. Melihat Laporan Jurnal
B. Bendahara
B.1. Melakukan Login
B.2. Melihat Data Siswa
B.3. Mengelola Pembayaran SPP
29
B.4. Mengelola Perkiraan
B.5. Mengelola Jurnal Umum
B.6. Melihat Laporan Pembayaran SPP
B.7. Melihat Laporan Jurnal
3.3.2. Use Case Diagram
1. Use Case Diagram Kepala Tata Usaha
A. Gambar Use Case Diagram
Gambar III.3
Use Case Diagram Kepala Tata Usaha
B. Deskripsi Use Case
1) Deskripsi Use Case Diagram Menambah Pengguna
uc Use Case Diagram Kepala TU
Kepala TU
Login
Mengelola
Pengguna
Menambah
PenggunaMengubah
Pengguna
Menghapus
PenggunaMelihat Pengguna
Mencari
Pengguna
Mengelola Siswa Menambah Siswa
Menguah Siswa
Melihat Siswa
Mencari SiswaMelihat Laporan
Menghapus Siswa
Melihat Laporan
Pembayaran
Melihat Laporan
Jurnal
«include»
«include»
«include»
30
Tabel III.1
Deskripsi Use Case Diagram Menambah Pengguna
Tujuan Kepala Tata Usaha dapat menambah data
Pengguna
Deskripsi Sistem ini memungkinkan aktor
menambah Pengguna yang berbeda-beda
Aktor Kepala Tata Usaha
Kondisi Awal Kepala Tata Usaha sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Menginput data Pengguna baru
2. Memeriksa apakah valid tidaknya
masukan
3. Menyimpan data Pengguna ke basis
data
4. Menampilkan pesan berhasil
disimpan
Skenario Alternatif
1. Menginput data Pengguna baru
4. Memperbaiki masukan yang
salah.
2. Memeriksa apakah valid tidaknya
masukan
3. Menampilkan pesan peringatan
bahwa data yang diinput tidak valid
5. Memeriksa apakah valid tidaknya
masukan
6. Menyimpan data Pengguna ke basis
data
7. Menampilkan pesan berhasil
disimpan
Kondisi Akhir Sistem dapat menyimpan data Pengguna
baru
31
2) Deskripsi Use Case Diagram Mengubah Pengguna
Tabel III.2
Deskripsi Use Case Diagram Mengubah Pengguna
Tujuan Kepala Tata Usaha dapat mengubah data
Pengguna
Deskripsi Sistem ini memungkinkan aktor
mengubah Pengguna.
Aktor Kepala Tata Usaha
Kondisi Awal Kepala Tata Usaha sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Memasukkan nama Pengguna
yang dicari
4. Melakukan perubahan pada
data Pengguna
2. Mencari data Pengguna yang akan
dibuah.
3. Menampilkan data Pengguna
5. Melakukan validasi terhadap
masukan.
6. Menyimpan data Pengguna ke basis
data
7. Menampilkan pesan berhasil
disimpan
Skenario Alternatif
1. Memasukkan nama Pengguna
yang dicari
4. Melakukan perubahan pada
data Pengguna
7. Memperbaiki masukan yang
salah
2. Mencari data Pengguna yang akan
dibuah.
3. Menampilkan data Pengguna
5. Melakukan validasi terhadap
masukan.
6. Menampilkan pesan peringatan
bahwa data yang diinput tidak valid
8. Melakukan validasi terhadap
32
masukan.
9. Menyimpan data Pengguna ke basis
data
10. Menampilkan pesan berhasil
disimpan
Kondisi Akhir Sistem dapat menyimpan data Pengguna
yang telah diubah
3) Deskripsi Use Case Diagram Mencari Pengguna
Tabel III.3
Deskripsi Use Case Diagram Mencari Pengguna
Tujuan Kepala Tata Usaha dapat mencari data
pengguna
Deskripsi Sistem ini memungkinkan aktor mencari
Pengguna.
Aktor Kepala Tata Usaha
Kondisi Awal Kepala Tata Usaha sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Memasukkan nama Pengguna
yang dicari
2. Mencari data Pengguna di basis data.
3. Menampilkan daftar Pengguna yang
sesuai.
Kondisi Akhir Sistem dapat mencari data Pengguna
4) Deskripsi Use Case Diagram Menghapus Pengguna
Tabel III.4
Deskripsi Use Case Diagram Menghapus Pengguna
Tujuan Kepala Tata Usaha dapat menghapus data
pengguna
Deskripsi Sistem ini memungkinkan aktor
menghapus pengguna.
Aktor Kepala Tata Usaha
33
Kondisi Awal Kepala Tata Usaha sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Memasukkan nama pengguna
yang dicari
3. Klik hapus
5. Memilih Ya
2. Mencari data Pengguna yang akan
dibuah.
4. Konfirmasi Hapus
6. Menghapus data Pengguna dari basis
data
7. Menampilkan pesan berhasil dihapus
Kondisi Akhir Sistem dapat menghapus data Pengguna
5) Deskripsi Use Case Diagram Menambah Siswa
Tabel III.5
Deskripsi Use Case Diagram Menambah Siswa
Tujuan Bendahara dapat menambah data siswa
Deskripsi Sistem ini memungkinkan aktor
menambah siswa yang berbeda-beda
Aktor Bendahara
Kondisi Awal Bendahara sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Menginput data siswa baru
2. Memeriksa apakah valid tidaknya
masukan
3. Menyimpan data siswa ke basis data
4. Menampilkan pesan berhasil
disimpan
Skenario Alternatif
1. Menginput data siswa baru
2. Memeriksa apakah valid tidaknya
masukan
3. Menampilkan pesan peringatan
bahwa data yang diinput tidak valid
34
4. Memperbaiki masukan yang
salah.
5. Memeriksa apakah valid tidaknya
masukan
6. Menyimpan data siswa ke basis data
7. Menampilkan pesan berhasil
disimpan
Kondisi Akhir Sistem dapat menyimpan data siswa baru
6) Deskripsi Use Case Diagram Mengubah Siswa
Tabel III.6
Deskripsi Use Case Diagram Mengubah Siswa
Tujuan Kepala Tata Usaha dapat mengubah data
siswa
Deskripsi Sistem ini memungkinkan aktor
mengubah siswa.
Aktor Bendahara
Kondisi Awal Bendahara sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Memasukkan nama siswa yang
dicari
4. Melakukan perubahan pada
data siswa
2. Mencari data siswa yang akan
dibuah.
3. Menampilkan data siswa
5. Melakukan validasi terhadap
masukan.
6. Menyimpan data siswa ke basis data
7. Menampilkan pesan berhasil
disimpan
Skenario Alternatif
1. Memasukkan nama siswa yang
dicari
2. Mencari data siswa yang akan
dibuah.
35
4. Melakukan perubahan pada
data siswa
7. Memperbaiki masukan yang
salah
3. Menampilkan data siswa
5. Melakukan validasi terhadap
masukan.
6. Menampilkan pesan peringatan
bahwa data yang diinput tidak valid
8. Melakukan validasi terhadap
masukan.
9. Menyimpan data siswa ke basis data
10. Menampilkan pesan berhasil
disimpan
Kondisi Akhir Sistem dapat menyimpan data siswa yang
telah diubah
7) Deskripsi Use Case Diagram Mencari Siswa
Tabel III.7
Deskripsi Use Case Diagram Mencari Siswa
Tujuan Kepala Tata Usaha dapat mencari data
siswa
Deskripsi Sistem ini memungkinkan aktor mencari
siswa.
Aktor Bendahara
Kondisi Awal Bendahara sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Memasukkan nama siswa yang
dicari
2. Mencari data siswa di basis data.
3. Menampilkan daftar siswa yang
sesuai.
Kondisi Akhir Sistem dapat mencari data siswa
36
8) Deskripsi Use Case Diagram Menghapus Siswa
Tabel III.8
Deskripsi Use Case Diagram Menghapus Siswa
Tujuan Kepala Tata Usaha dapat menghapus data
siswa
Deskripsi Sistem ini memungkinkan aktor
menghapus siswa.
Aktor Kepala Tata Usaha
Kondisi Awal
Kepala Tata Usaha sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Memasukkan nama siswa yang
dicari
3. Klik hapus
5. Memilih Ya
2. Mencari data siswa yang akan
dibuah.
4. Konfirmasi Hapus
6. Menghapus data siswa dari basis data
7. Menampilkan pesan berhasil dihapus
Kondisi Akhir Sistem dapat menghapus data siswa
37
2. Use Case Diagram Bendahara
1. Gambar Use Case Diagram
Gambar III.4
Use Case Diagram Bendahara
uc Use Case Diagram Bendahara
Bendahara
LoginMelihat Siswa
Mengelola
Perkiraan
Mengubah
Perkiraan
Menghapus
Perkiraan
Mencari
Perkiraan
Menambah
Perkiraan
Melihat
Perkiraan
Melihat Laporan
Melihat Laporan
Jurnal
Mengelola
Pembayaran SPP
Menambah
Pembayaran
Melihat
PembayaranMencari
Pembayaran
Mengelola Jurnal
Umum
Menambah
Jurnal Umum
Melihat Jurnal
Umum
Mencari Jurnal
Umum
Melihat Laporan
Pembayaran
«include»
«include»
«include»
«include»«include»
38
2. Deskripsi Use Case
1) Deskripsi Use Case Diagram Menambah Pembayaran SPP
Tabel III.9
Deskripsi Use Case Diagram Menambah Pembayaran SPP
Tujuan Bendahara dapat menambah data
pembayaran SPP
Deskripsi
Sistem ini memungkinkan aktor
menambah pembayaran SPP yang
berbeda-beda
Aktor Bendahara
Kondisi Awal Bendahara sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Menginput data pembayaran
SPP baru
2. Memeriksa apakah valid tidaknya
masukan
3. Menyimpan data pembayaran SPP ke
basis data
4. Menampilkan pesan berhasil
disimpan
Skenario Alternatif
1. Menginput data pembayaran
SPP baru
4. Memperbaiki masukan yang
salah.
2. Memeriksa apakah valid tidaknya
masukan
3. Menampilkan pesan peringatan
bahwa data yang diinput tidak valid
5. Memeriksa apakah valid tidaknya
masukan
6. Menyimpan data pembayaran SPP ke
basis data
7. Menampilkan pesan berhasil
disimpan
Kondisi Akhir Sistem dapat menyimpan data
pembayaran SPP baru
39
2) Deskripsi Use Case Diagram Mencari Pembayaran SPP
Tabel III.10
Deskripsi Use Case Diagram Mencari Pembayaran SPP
Tujuan Bendahara dapat mencari data
pembayaran SPP
Deskripsi Sistem ini memungkinkan aktor mencari
pembayaran SPP.
Aktor Bendahara
Kondisi Awal Bendahara sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Memasukkan periode
pembayaran SPP yang dicari
2. Mencari data pembayaran SPP di
basis data.
3. Menampilkan daftar pembayaran
SPP yang sesuai.
Kondisi Akhir Sistem dapat mencari data pembayaran
SPP
3) Deskripsi Use Case Diagram Mencetak Bukti Pembayaran
Tabel III.11
Deskripsi Use Case Diagram Mencetak Bukti Pembayaran
Tujuan Kepala Tata Usaha dapat mencetak
invoice penagihan
Deskripsi
Sistem ini memungkinkan aktor
mencetak bukti pembayaran sPP
penagihan.
Aktor Bendahara
Kondisi Awal Bendahara sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Memasukkan periode
penagihan yang dicari
3. Klik Cetak
2. Mencari data penagihan yang akan
dibuah.
40
4. Menampilkan invoice untuk dicetak
Kondisi Akhir Sistem dapat menghapus data penagihan
4) Deskripsi Use Case Diagram Menambah Perkiraan
Tabel III.12
Deskripsi Use Case Diagram Menambah Perkiraan
Tujuan Bendahara dapat menambah data
perkiraan
Deskripsi Sistem ini memungkinkan aktor
menambah perkiraan yang berbeda-beda
Aktor Bendahara
Kondisi Awal Bendahara sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Menginput data perkiraan baru
2. Memeriksa apakah valid tidaknya
masukan
3. Menyimpan data perkiraan ke basis
data
4. Menampilkan pesan berhasil
disimpan
Skenario Alternatif
1. Menginput data perkiraan baru
4. Memperbaiki masukan yang
salah.
2. Memeriksa apakah valid tidaknya
masukan
3. Menampilkan pesan peringatan
bahwa data yang diinput tidak valid
5. Memeriksa apakah valid tidaknya
masukan
6. Menyimpan data perkiraan ke basis
data
7. Menampilkan pesan berhasil
disimpan
41
Kondisi Akhir Sistem dapat menyimpan data perkiraan
baru
5) Deskripsi Use Case Diagram Mengubah Perkiraan
Tabel III.13
Deskripsi Use Case Diagram Mengubah Perkiraan
Tujuan Bendahara dapat mengubah data
perkiraan
Deskripsi Sistem ini memungkinkan aktor
mengubah perkiraan.
Aktor Bendahara
Kondisi Awal Bendahara sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Memasukkan nama perkiraan
yang dicari
4. Melakukan perubahan pada
data perkiraan
2. Mencari data perkiraan yang akan
dibuah.
3. Menampilkan data perkiraan
5. Melakukan validasi terhadap
masukan.
6. Menyimpan data perkiraan ke basis
data
7. Menampilkan pesan berhasil
disimpan
Skenario Alternatif
1. Memasukkan nama perkiraan
yang dicari
4. Melakukan perubahan pada
data perkiraan
2. Mencari data perkiraan yang akan
dibuah.
3. Menampilkan data perkiraan
5. Melakukan validasi terhadap
masukan.
6. Menampilkan pesan peringatan
42
7. Memperbaiki masukan yang
salah
bahwa data yang diinput tidak valid
8. Melakukan validasi terhadap
masukan.
9. Menyimpan data perkiraan ke basis
data
10. Menampilkan pesan berhasil
disimpan
Kondisi Akhir Sistem dapat menyimpan data perkiraan
yang telah diubah
6) Deskripsi Use Case Diagram Mencari Perkiraan
Tabel III.14
Deskripsi Use Case Diagram Mencari Perkiraan
Tujuan Bendahara dapat mencari data perkiraan
Deskripsi Sistem ini memungkinkan aktor mencari
perkiraan.
Aktor Bendahara
Kondisi Awal Bendahara sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Memasukkan nama perkiraan
yang dicari
2. Mencari data perkiraan di basis data.
3. Menampilkan daftar perkiraan yang
sesuai.
Kondisi Akhir Sistem dapat mencari data perkiraan
7) Deskripsi Use Case Diagram Menghapus Perkiraan
Tabel III.15
Deskripsi Use Case Diagram Menghapus Perkiraan
Tujuan Bendahara dapat menghapus data
perkiraan
Deskripsi Sistem ini memungkinkan aktor
43
menghapus perkiraan.
Aktor Bendahara
Kondisi Awal Bendahara sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Memasukkan nama perkiraan
yang dicari
3. Klik hapus
5. Memilih Ya
2. Mencari data perkiraan yang akan
dibuah.
4. Konfirmasi Hapus
6. Menghapus data perkiraan dari basis
data
7. Menampilkan pesan berhasil dihapus
Kondisi Akhir Sistem dapat menghapus data perkiraan
8) Deskripsi Use Case Diagram Menambah Jurnal Umum
Tabel III.16
Deskripsi Use Case Diagram Menambah Jurnal Umum
Tujuan Bendahara dapat menambah data jurnal
umum
Deskripsi
Sistem ini memungkinkan aktor
menambah jurnal umum yang berbeda-
beda
Aktor Bendahara
Kondisi Awal Bendahara sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Menginput data jurnal umum
baru
2. Memeriksa apakah valid tidaknya
masukan
3. Menyimpan data jurnal umum ke
basis data
4. Menampilkan pesan berhasil
disimpan
44
Skenario Alternatif
1. Menginput data jurnal umum
baru
4. Memperbaiki masukan yang
salah.
2. Memeriksa apakah valid tidaknya
masukan
3. Menampilkan pesan peringatan
bahwa data yang diinput tidak valid
5. Memeriksa apakah valid tidaknya
masukan
6. Menyimpan data jurnal umum ke
basis data
7. Menampilkan pesan berhasil
disimpan
Kondisi Akhir Sistem dapat menyimpan data jurnal
umum baru
9) Deskripsi Use Case Diagram Mencari Jurnal Umum
Tabel III.17
Deskripsi Use Case Diagram Mencari Jurnal Umum
Tujuan Bendahara dapat mencari data jurnal
umum
Deskripsi Sistem ini memungkinkan aktor mencari
jurnal umum.
Aktor Bendahara
Kondisi Awal Bendahara sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Memasukkan periode jurnal
umum yang dicari
2. Mencari data jurnal umum di basis
data.
3. Menampilkan daftar jurnal umum
yang sesuai.
Kondisi Akhir Sistem dapat mencari data jurnal umum
45
10) Deskripsi Use Case Diagram Melihat Laporan
Tabel III.18
Deskripsi Use Case Diagram Melihat Laporan
Tujuan Bendahara dapat melihat laporan
Deskripsi Sistem ini memungkinkan Bendahara
melihat laporan yang diinginkan
Aktor Bendahara
Kondisi Awal Bendahara sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Menginput periode laporan
2. Klik Lihat
3. Menampilkan Laporan yang diminta
Kondisi Akhir Sistem dapat menampilkan laporan
46
3.3.3. Activity Diagram
1. Activity Diagram Login
Gambar III.5
Activity Diagram Login
act Activity Login
SistemPengguna
Mulai
Input ID Pengguna dan
Password
Klik Login Validasi Login
Valid?Tampilkan Pesan Error
Tampilkan Menu Utama
Selesai
Form Login
Tidak
Ya
47
2. Activity Diagram Mengelola Pengguna
Gambar III.6
Activity Diagram Mengelola Pengguna
act Mengelola Pengguna
SistemKepala Tata Usaha
Mulai
Pilih
Tambah
Input Data Pengguna
Simpan
Input Nama Pengguna
Validasi
Valid?
Simpan Data
Cari Data
Pilh Data Pengguna
Ubah
Ubah DataSimpan?
Batal
Selesai
Hapus Hapus Data
Ada
data?
Tampilkan Pessan Error
Cari
Tidak
Ya
Ya
Ya
Tidak
Tidak
48
3. Activity Diagram Mengelola Siswa
Gambar III.7
Activity Diagram Mengelola Siswa
act Mengelola Siswa
SistemKepala Tata Usaha
Mulai
Pilih
Tambah
Input Data Siswa
Simpan
Input Nama Siswa
Validasi
Valid?
Simpan Data
Cari Data
Pilh Data Siswa
Ubah
Ubah DataSimpan?
Batal
Selesai
Hapus Hapus Data
Ada
data?
Tampilkan Pessan Error
Cari
Ya
Tidak
Tidak
Ya
Tidak
Ya
49
4. Activity Diagram Mengelola Pembayaran SPP
Gambar III.8
Activity Diagram Mengelola Pembayaran SPP
act Mengelola Pembayaran SPP
SistemBendahara
Mulai
Pilih
Tambah
Input Data Pembayaran
Simpan
Input Periode
Validasi
Valid?
Simpan Data
Cari Data
Pilh Data Pembayaran
Simpan?
Batal
Selesai
Hapus Hapus Data
Ada
data?
Tampilkan Pesan Error
Cetak
Cetak Bukti
Pembayaran
Cari
Cari data Siswa
Ya
[Tidak][Ya]
Ya
Tidak
Tidak
50
5. Activity Diagram Mengelola Perkiraan
Gambar III.9
Activity Diagram Perkiraan
act Mengelola Perkiraan
SistemBendahara
Mulai
Pilih
Tambah
Input Data Perkiraan
Simpan
Input Nama Akun
Validasi
Valid?
Simpan Data
Cari Data
Pilh Data Perkiraan
Ubah
Ubah DataSimpan?
Batal
Selesai
Hapus Hapus Data
Ada
data?
Tampilkan Pessan Error
Cari
Tidak
Ya
Tidak
Tidak
Ya
Ya
51
6. Activity Diagram Mengelola Jurnal
Gambar III.10
Activity Diagram Jurnal
act Mengelola Jurnal
SistemBendahara
Mulai
Pilih
Tambah
Input Data Jurnal
Simpan
Input Periode
Validasi
Valid?
Simpan Data
Cari Data
Tampilkan Data
Simpan?
Batal
Selesai
Ada?
Cari
[Ya]
[Ya]
Tidak
Ya
[Tidak]
Tidak
52
7. Activity Diagram Melihat Laporan
Gambar III.11
Activity Diagram Melihat Laporan
act Melihat Laporan
SistemPengguna
Mulai
Input Periode Pembuatan
Laporan
Klik Lihat Tampil Laporan
Selesai
Cetak Laporan
53
3.4. Desain
3.4.1. Entity Relationship Diagram (ERD)
Gambar III.12
Entity Relationship Diagram
54
3.4.2. Logical Record Structure (LRS)
Gambar III.13
Logical Record Structure
dm SMK Insan Tazakka
detail_spp
«column»
*FK no_pembayaran: CHAR(10)
* bulan: CHAR(2)
* tahun: CHAR(4)
* jumlah_pembayaran: INT
«FK»
+ FK_detail_spp_spp(CHAR)
jurnal
«column»
*PK no_jurnal: CHAR(10)
* tanggal_jurnal: DATE
* no_referensi: CHAR(10)
*FK nip: CHAR(10)
«PK»
+ PK_jurnal(CHAR)
«FK»
+ FK_jurnal_pengguna(CHAR)
jurnal_detail
«column»
*FK no_jurnal: CHAR(10)
*FK kode_akun: VARCHAR(5)
* kredit: INT
* debet: INT
«FK»
+ FK_jurnal_detail_perkiraan(VARCHAR)
+ FK_jurnal_detail_jurnal(CHAR)
pengguna
«column»
*PK nip: CHAR(18)
* nama_pengguna: VARCHAR(20)
* kata_sandi: VARCHAR(35)
«PK»
+ PK_pengguna(CHAR)
perkiraan
«column»
*PK kode_akun: VARCHAR(5)
* nama_akun: VARCHAR(20)
* jenis_akun: VARCHAR(20)
«PK»
+ PK_perkiraan(VARCHAR)
siswa
«column»
*PK nis: CHAR(12)
* nama_siswa: VARCHAR(35)
* tempat_lahir: VARCHAR(12)
* tanggal_lahir: DATE
* kelas: VARCHAR(3)
* jenis_kelamin: VARCHAR(10)
* alamat_siswa: VARCHAR(255)
* no_telp: VARCHAR(15)
* semester: INT
«PK»
+ PK_siswa(CHAR)
spp
«column»
*PK no_pembayaran: CHAR(10)
* tanggal_pembayaran: DATE
* total_pembayaran: DOUBLE
* tahun_ajaran: CHAR(9)
*FK nis: CHAR(12)
*FK nip: CHAR(18)
«PK»
+ PK_spp(CHAR)
«FK»
+ FK_spp_pengguna(CHAR)
+ FK_spp_siswa(CHAR)
1
M
1
M
1
M
1
M
1
M
1
M
55
3.4.3. Spesifikasi File
1. Spesifikasi File Tabel Pengguna
Nama Database : smk_insan_tazakka
Nama File : Pengguna
Tipe File : File Master
Akses File : Random
Record Size : 98 Karakter
Field Key : nip
Tabel III.19
Spesifikasi File Tabel Pengguna
No Elemen Data Akronim Tipe Panjang Keterangan
1 NIP nip VARCHAR 18 Primary Key
2 Nama Pengguna nama_pengguna VARCHAR 35
3 Kata Sandi kata_sandi VARCHAR 35
4 Hak Akses hak_akses VARCHAR 10
2. Spesifikasi File Tabel Siswa
Nama Database : smk_insan_tazakka
Nama File : siswa
Tipe File : File Master
Akses File : Random
Record Size : 354 Karakter
Field Key : nis
Tabel III.20
Spesifikasi File Tabel Siswa
No Elemen Data Akronim Tipe Panjang Keterangan
1 NIS nis CHAR 5 Primary Key
2 Nama Siswa nama_siswa VARCHAR 35
3 Tempat Lahir tempat_lahir VARCHAR 30
4 Tanggal Lahir tanggal_lahir DATE
56
5 Kelas kelas VARCHAR 3
6 Jenis Kelamin jenis_kelamin VARCHAR 10
7 Alamat Siswa alamat_siswa VARCHAR 255
8 No Telp no_telp VARCHAR 15
9 Semester semester INT 1
3. Spesifikasi File Tabel Pembayaran SPP
Nama Database : smk_insan_tazakka
Nama File : spp
Tipe File : File Transaksi
Akses File : Random
Record Size : 66 Karakter
Field Key : no_pembayaran
Tabel III.21
Spesifikasi File Tabel Pembayaran SPP
No Elemen Data Akronim Tipe Panjang Keterangan
1 No
Pembayaran no_pembayaran CHAR 16 Primary Key
2 Tanggal
Pembayaran tgl_pembayaran DATE
3 Tahun Ajaran tahun_ajaran CHAR 9
4 Total
Pembayararn total_pembayaran INT 11
5 NIS nis CHAR 12 Foreign Key
6 NIP nip CHAR 18 Foreign Key
4. Spesifikasi File Tabel Detail Pembayaran SPP
Nama Database : smk_insan_tazakka
Nama File : detail_spp
Tipe File : File Master
Akses File : Random
Record Size : 24 Karakter
57
Field Key : -
Tabel III.22
Spesifikasi File Tabel Detail Pembayaran SPP
No Elemen Data Akronim Tipe Panjang Keterangan
1 No
Pembayaran no_pembayaran CHAR 17 Foreign Key
2 Bulan bulan CHAR 2
3 Tahun tahun CHAR 4
4 Jumlah
Pembayaran jumlah_pembayaran INT 1
5. Spesifikasi File Tabel Perkiraan
Nama Database : smk_insan_tazakka
Nama File : perkiraan
Tipe File : File Master
Akses File : Random
Record Size : 51 Karakter
Field Key : kode_akun
Tabel III.23
Spesifikasi File Tabel Perkiraan
No Elemen Data Akronim Tipe Panjang Keterangan
1 Kode Akun kode_akun CHAR 5 Primary Key
2 Nama Akun nama_akun VARCHAR 20
3 Jenis Akun jenis_akun VARCHAR 20
4 Saldo Normal saldo_normal VARCHAR 6
6. Spesifikasi File Tabel Jurnal
Nama Database : smk_insan_tazakka
Nama File : jurnal
Tipe File : File Transaksi
Akses File : Random
58
Record Size : 98 Karakter
Field Key : no_jurnal
Tabel III.24
Spesifikasi File Tabel Jurnal
No Elemen Data Akronim Tipe Panjang Keterangan
1 No Jurnal no_jurnal CHAR 10 Primary Key
2 Tanggal Jurnal tgl_jurnal DATE
3 Keterangan keterangan VARCHAR 50
4 No Referensi no_referensi CHAR 20 Foreign Key
5 NIP nip VARCHAR 18 Foreign Key
7. Spesifikasi File Tabel Detail Jurnal
Nama Database : smk_insan_tazakka
Nama File : detail_jurnal
Tipe File : File Transaksi
Akses File : Random
Record Size : 15 Karakter
Field Key : -
Tabel III.25
Spesifikasi File Tabel Detail Jurnal
No Elemen Data Akronim Tipe Panjang Keterangan
1 No Jurnal no_jurnal CHAR 10 Primary Key
2 Kode Akun kode_akun CHAR 5 Foreign Key
3 Debet debet DOUBLE
4 Kredit kredit DOUBLE
59
3.4.4. Sequence Diagram
1. Sequence Diagram Mengelola Pengguna
Gambar III.14
Sequence Diagram Mengelola Pengguna
sd Sequence Diagram Pengguna
Kepala TUForm Pengguna Control Pengguna
Pengguna
tambahPengguna()
[Buka Form Pengguna]:
[Validasi]:
«create»
[status="Tambah"]:
btnsimpanActionPerformed()
[Input Data Pengguna]:
bersihInputan()
[Tampil Error]:
FormPengguna()
«create»
aktifNonaktif()
[Set Data]:
btntambahActionPerformed()
60
2. Sequence Diagram Mengelola Siswa
Gambar III.15
Sequence Diagram Mengelola Siswa
sd Sequence Diagram Siswa
Kepala TUForm Siswa Control Siswa
Siswa
tambahSiswa()
aktifNonaktif()
[Validasi]:
bersihInputan()
btnsimpanActionPerformed()
«create»
[Buka Form Siswa]:
[Tampil Error]:
[Status= "Tambah"]:
setData()
btntambahActionPerformed()
[Input Data Siswa]:
FormSiswa()
«create»
61
3. Sequence Diagram Mengelola Pembayaran SPP
Gambar III.16
Sequence Diagram Mengelola Pembayaran SPP
sd Sequnce Diagram Pembayaran SPP
BendaharaForm SPP Control SPP
SPP
Siswa
Detail SPP
[Pilih Siswa]:
[Input Pewmbayaran SPP]:
«create»
[No Pembayaran Baru]:
[Tampil Data Siswa]:
FormSPP()
«create»
buatNoPembayaranAuto()
tambahSPP()
aktifNonaktif()
[Validasi]:
bersihInputan()
cariSiswa()
btnsimpanActionPerformed()
«create»
[Tampilkan No Pembayaran]:
[Tampil Data Siswa]:
«create»
[Buat No Pembayaran Baru]:
[Data Siswa]:
[Buka Form SPP]:
tambahDetailSPP()
buatNoPembayaran()
[Tampil Pesan Error]:
[status= "Tambah"]:
cariSiswaByNis()
[Set Data]:
btntambahActionPerformed()
62
3.4.5. Deployment Diagram
Gambar III.17
Deployment Diagram
deployment Deployment
Aplikasi
Aplikasi Pembayaran
SPP
Jasper Report
Database Server
MySQL Server
Java
Java Runtime Environment Versi
8.1
smk_insan_tazakka
«use»
MySQL JDBC Driver
«use»
63
3.4.6. Pengguna Interface
1. Form Login
Gambar III.18
Form Login
2. Form Menu
Gambar III.19
Form Menu
64
3. Form Pengguna
Gambar III.20
Form Pengguna
4. Form Siswa
Gambar III.21
Form Siswa
65
5. Form Pembayaran SPP
Gambar III.22
Form Pembayaran SPP
6. Form Laporan
Gambar III.23
Form Laporan
66
3.5. Implementasi
3.5.1. Code Generation
1. Model Pembayaran SPP
package model;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
public class SPP {
private final Connection Koneksi;
private String No_Pembayaran;
private Date Tanggal_Pembayaran;
private int Total_Pembayaran;
private String Tahun_Ajaran;
private String Nis;
private String Nip;
private String PesanError;
public SPP(Connection Koneksi) {
this.Koneksi = Koneksi;
if (this.Koneksi == null) {
System.out.println("Koneksi Gagal dibuat");
System.exit(0);
}
}
public String getNo_Pembayaran() {
return No_Pembayaran;
}
public void setNo_Pembayaran(String No_Pembayaran) {
this.No_Pembayaran = No_Pembayaran;
}
public Date getTanggal_Pembayaran() {
return Tanggal_Pembayaran;
}
67
public void setTanggal_Pembayaran(Date Tanggal_Pembayaran) {
this.Tanggal_Pembayaran = Tanggal_Pembayaran;
}
public int getTotal_Pembayaran() {
return Total_Pembayaran;
}
public void setTotal_Pembayaran(int Total_Pembayaran) {
this.Total_Pembayaran = Total_Pembayaran;
}
public String getTahun_Ajaran() {
return Tahun_Ajaran;
}
public void setTahun_Ajaran(String Tahun_Ajaran) {
this.Tahun_Ajaran = Tahun_Ajaran;
}
public String getNis() {
return Nis;
}
public void setNis(String Nis) {
this.Nis = Nis;
}
public String getNip() {
return Nip;
}
public void setNip(String Nip) {
this.Nip = Nip;
}
public String getPesanError() {
return PesanError;
}
public void setPesanError(String PesanError) {
this.PesanError = PesanError;
}
public String noSppOtomatis() {
try {
String Sql = "SELECT * FROM spp ORDER BY SUBSTR(no_pembayaran ,3,10) *
1 DESC LIMIT 1";
Statement st = this.Koneksi.createStatement();
ResultSet rs = st.executeQuery(Sql);
if (rs.next()) {
String No = rs.getString("no_pembayaran");
No = No.substring(2, 10);
No = "PM" + String.format("%08d", Integer.parseInt(No) + 1);
68
return No;
} else {
return "PM00000001";
}
} catch (SQLException ex) {
this.PesanError = ex.getMessage();
return "";
}
}
public List<SPP> tampilSPP() {
try {
String Sql = "SELECT * FROM SPP ORDER BY no_pembayaran";
List<SPP> lb = new ArrayList();
Statement st = this.Koneksi.createStatement();
ResultSet rs = st.executeQuery(Sql);
while (rs.next()) {
SPP spp = new SPP(Koneksi);
spp.setNo_Pembayaran(rs.getString("no_pembayaran"));
spp.setTanggal_Pembayaran(rs.getDate("tanggal_pembayaran"));
spp.setTotal_Pembayaran(rs.getInt("total_pembayaran"));
spp.setTahun_Ajaran(rs.getString("tahun_ajaran"));
spp.setNis(rs.getString("nis"));
spp.setNip(rs.getString("nip"));
lb.add(spp);
}
return lb;
} catch (SQLException ex) {
this.PesanError = ex.getMessage();
return null;
}
}
public List<SPP> cariSPP(String NamaSiswa) {
try {
String Sql = "SELECT * FROM spp INNER JOIN siswa ON siswa.nis=spp.nis
WHERE upper(siswa.nama_siswa) LIKE ? ORDER BY no_pembayaran DESC";
List<SPP> lb = new ArrayList();
PreparedStatement ps = this.Koneksi.prepareStatement(Sql);
ps.setString(1, "%"+NamaSiswa.toUpperCase()+"%");
ResultSet rs = ps.executeQuery();
while (rs.next()) {
SPP spp = new SPP(Koneksi);
spp.setNo_Pembayaran(rs.getString("no_pembayaran"));
spp.setTanggal_Pembayaran(rs.getDate("tanggal_pembayaran"));
spp.setTotal_Pembayaran(rs.getInt("total_pembayaran"));
spp.setTahun_Ajaran(rs.getString("tahun_ajaran"));
spp.setNis(rs.getString("nis"));
spp.setNip(rs.getString("nip"));
lb.add(spp);
}
return lb;
69
} catch (SQLException ex) {
this.PesanError = ex.getMessage();
return null;
}
}
public List<SPP> cariSPPByNis(String Nis) {
try {
String Sql = "SELECT * FROM spp WHERE upper(nis) = ? ORDER BY
no_pembayaran DESC";
List<SPP> lb = new ArrayList();
PreparedStatement ps = this.Koneksi.prepareStatement(Sql);
ps.setString(1, Nis.toUpperCase());
ResultSet rs = ps.executeQuery();
while (rs.next()) {
SPP spp = new SPP(Koneksi);
spp.setNo_Pembayaran(rs.getString("no_pembayaran"));
spp.setTanggal_Pembayaran(rs.getDate("tanggal_pembayaran"));
spp.setTotal_Pembayaran(rs.getInt("total_pembayaran"));
spp.setTahun_Ajaran(rs.getString("tahun_ajaran"));
spp.setNis(rs.getString("nis"));
spp.setNip(rs.getString("nip"));
lb.add(spp);
}
return lb;
} catch (SQLException ex) {
this.PesanError = ex.getMessage();
return null;
}
}
public SPP cariSpp(String noSpp) {
try {
String Sql = "SELECT * FROM spp WHERE UPPER(no_pembayaran)= ? ORDER
BY no_pembayaran";
PreparedStatement ps = this.Koneksi.prepareStatement(Sql);
ps.setString(1, noSpp.toUpperCase());
ResultSet rs = ps.executeQuery();
if (rs.next()) {
this.setNo_Pembayaran(rs.getString("no_pembayaran"));
this.setTanggal_Pembayaran(rs.getDate("tanggal_pembayaran"));
this.setTotal_Pembayaran(rs.getInt("total_pembayaran"));
this.setTahun_Ajaran(rs.getString("tahun_ajaran"));
this.setNis(rs.getString("nis"));
this.setNip(rs.getString("nip"));
} else {
this.setNo_Pembayaran(null);
this.setTanggal_Pembayaran(null);
this.setTotal_Pembayaran(0);
this.setTahun_Ajaran(null);
this.setNis(null);
this.setNip(null);
}
return this;
70
} catch (SQLException ex) {
Logger.getLogger(SPP.class.getName()).log(Level.SEVERE, null, ex);
this.PesanError = ex.getMessage();
return this;
}
}
public int tambahSPP() {
try {
String Sql = "INSERT INTO SPP (no_pembayaran, tanggal_pembayaran,
total_pembayaran, tahun_ajaran, nis, nip) VALUES( ?,?,?,?,?,?)";
PreparedStatement ps = this.Koneksi.prepareStatement(Sql);
ps.setString(1, this.No_Pembayaran);
ps.setDate(2, this.Tanggal_Pembayaran);
ps.setInt(3, this.Total_Pembayaran);
ps.setString(4, this.Tahun_Ajaran);
ps.setString(5, this.Nis);
ps.setString(6, this.Nip);
return ps.executeUpdate();
} catch (SQLException ex) {
this.PesanError = ex.getMessage();
return 1;
}
}
public int hapusSPP(String No_Pembayaran) {
try {
String Sql = "DELETE FROM SPP WHERE no_pembayaran=?";
PreparedStatement ps = this.Koneksi.prepareStatement(Sql);
ps.setString(1, No_Pembayaran);
return ps.executeUpdate();
} catch (SQLException ex) {
this.PesanError = ex.getMessage();
return -1;
}
}
}
71
2. Form Pembayaran SPP
package form;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.KeyEvent;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.List;
import java.util.ListIterator;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
import model.Koneksi;
import model.SPP;
import model.SPPDetail;
import model.Siswa;
import smkinsantazakka.SMKInsanTazakka;
public class FormSpp extends javax.swing.JFrame {
String status = "";
String NoPembayaran = "";
DefaultTableModel dtModel = null;
SPP spp = new SPP(Koneksi.bukaKoneksi());
SPPDetail detail = new SPPDetail(Koneksi.bukaKoneksi());
Siswa siswa = new Siswa(Koneksi.bukaKoneksi());
int selisih;
NumberFormat nf = new DecimalFormat("#00");
public FormSpp() {
initComponents();
Toolkit tk = Toolkit.getDefaultToolkit();
Dimension d = tk.getScreenSize();
int x, y;
x = (int) ((d.getWidth() - getSize().width) / 2);
y = (int) ((d.getHeight() - getSize().height) / 2);
setLocation(x, y);
dtModel = (DefaultTableModel) tblSPP.getModel();
tblSPP.setRowHeight(24);
daftarSPP();
bersihForm();
aktifTombol();
}
private void aktifTombol() {
btnTambah.setEnabled("".equals(this.status));
btnSimpan.setEnabled(!"".equals(this.status));
btnBatal.setEnabled(!"".equals(this.status));
btnSimpan.setEnabled(!"".equals(this.status));
btnCari.setEnabled("".equals(this.status));
72
txtNoPembayaran.setEnabled(!"".equals(this.status));
txtTanggalPembayaran.setEnabled(!"".equals(this.status));
txtNis.setEnabled(!"".equals(this.status));
txtNamaSiswa.setEnabled(!"".equals(this.status));
txtBulan1.setEnabled(!"".equals(this.status));
txtTahun1.setEnabled(!"".equals(this.status));
txtBulan2.setEnabled(!"".equals(this.status));
txtTahun2.setEnabled(!"".equals(this.status));
txtTahunAjaran.setEnabled(!"".equals(this.status));
txtTotalPembayaran.setEnabled(!"".equals(this.status));
txtCari.setEnabled("".equals(this.status));
}
private void bersihForm() {
txtNoPembayaran.setText("");
txtTanggalPembayaran.setDate(null);
txtNis.setText("");
txtNamaSiswa.setText("");
txtBulan1.setMonth(1);
txtBulan2.setMonth(1);
txtTahun1.setYear(2019);
txtTahun2.setYear(2019);
txtTahunAjaran.setText("");
txtTotalPembayaran.setText("");
}
private boolean periksaPembayaran() {
if ((txtTahun2.getYear() < txtTahun1.getYear()) || (txtBulan2.getMonth() <
txtBulan1.getMonth())) {
return false;
}
return true;
}
private int hitungPembayaran() {
selisih = 0;
int sbulan = txtBulan2.getMonth() - txtBulan1.getMonth();
int stahun = txtTahun2.getYear() - txtTahun1.getYear();
if (stahun > 0) {
sbulan += (stahun * 12);
}
sbulan += 1;
selisih = sbulan;
return sbulan * 120000;
}
private void daftarSPP() {
List<SPP> lp = spp.tampilSPP();
ListIterator li = lp.listIterator();
73
dtModel.setRowCount(0);
tblSPP.repaint();
String No = "";
Object[] data;
while (li.hasNext()) {
SPP spp = (SPP) li.next();
siswa = siswa.cariSiswa(spp.getNis());
List<SPPDetail> ld = detail.listSPPDetail(spp.getNo_Pembayaran());
ListIterator it = ld.listIterator();
while (it.hasNext()) {
detail = (SPPDetail) it.next();
if (No.equalsIgnoreCase(detail.getNo_Pembayaran())) {
Object[] jdata = {
"",
"",
"",
"",
"",
detail.getBulan(),
detail.getTahun(),
detail.getJumlah_Pembayaran()
};
data = jdata;
} else {
Object[] jdata = {
spp.getNo_Pembayaran(),
spp.getTanggal_Pembayaran(),
spp.getNis(),
siswa.getNama_siswa(),
spp.getTahun_Ajaran(),
detail.getBulan(),
detail.getTahun(),
detail.getJumlah_Pembayaran()
};
data = jdata;
}
No = detail.getNo_Pembayaran();
dtModel.addRow(data);
}
}
}
private void daftarSPP(String Nis) {
List<SPP> lp = spp.cariSPPByNis(Nis);
ListIterator li = lp.listIterator();
dtModel.setRowCount(0);
tblSPP.repaint();
String No = "";
Object[] data;
while (li.hasNext()) {
SPP spp = (SPP) li.next();
siswa = siswa.cariSiswa(spp.getNis());
74
List<SPPDetail> ld = detail.listSPPDetail(spp.getNo_Pembayaran());
ListIterator it = ld.listIterator();
while (it.hasNext()) {
detail = (SPPDetail) it.next();
if (No.equalsIgnoreCase(detail.getNo_Pembayaran())) {
Object[] jdata = {
"",
"",
"",
"",
"",
detail.getBulan(),
detail.getTahun(),
detail.getJumlah_Pembayaran()
};
data = jdata;
} else {
Object[] jdata = {
spp.getNo_Pembayaran(),
spp.getTanggal_Pembayaran(),
spp.getNis(),
siswa.getNama_siswa(),
spp.getTahun_Ajaran(),
detail.getBulan(),
detail.getTahun(),
detail.getJumlah_Pembayaran()
};
data = jdata;
}
No = detail.getNo_Pembayaran();
dtModel.addRow(data);
}
}
}
private void txtNisActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void btnTambahActionPerformed(java.awt.event.ActionEvent evt) {
this.status = "Tambah";
this.NoPembayaran = "";
bersihForm();
txtNoPembayaran.setText(spp.noSppOtomatis());
aktifTombol();
txtNoPembayaran.requestFocus();
// TODO add your handling code here:
}
private void btnSimpanActionPerformed(java.awt.event.ActionEvent evt) {
if ("".equals(txtNoPembayaran.getText())
|| "".equals(txtNis.getText())
|| "".equals(txtNamaSiswa.getText())
75
|| txtTanggalPembayaran.getDate() == null
|| "".equals(txtTahunAjaran.getText())
|| "".equals(txtTotalPembayaran.getText())) {
JOptionPane.showMessageDialog(rootPane, "Mohon isi dulu semua data", "Error",
JOptionPane.ERROR_MESSAGE);
return;
}
String[] bulan = {"", "Januari", "Pebruari", "Maret", "April", "Mei", "Juni", "Juli",
"Agustus", "September", "Oktober", "Nopember", "Desember"};
int x = txtBulan1.getMonth() + 1;
int y = txtTahun1.getYear();
for (int i = 1; i <= selisih; i++) {
if (x > 12) {
x = 1;
y++;
}
detail = detail.cariDetailSPP(txtNis.getText(), String.valueOf(x), String.valueOf(y));
if (detail.getBulan() != null) {
JOptionPane.showMessageDialog(rootPane, "Pembayaran pada bulan " +
bulan[Integer.parseInt(detail.getBulan())] + " sudah pernah dilakukan!", "Info",
JOptionPane.ERROR_MESSAGE);
return;
}
x++;
}
spp.setNo_Pembayaran(txtNoPembayaran.getText());
spp.setTanggal_Pembayaran(new
java.sql.Date(txtTanggalPembayaran.getDate().getTime()));
spp.setTahun_Ajaran(txtTahunAjaran.getText());
spp.setNis(txtNis.getText());
spp.setNip(SMKInsanTazakka.NIP);
spp.setNo_Pembayaran(txtNoPembayaran.getText());
if ("Tambah".equals(this.status)) {
if (spp.tambahSPP() > 0) {
x = txtBulan1.getMonth() + 1;
y = txtTahun1.getYear();
for (int i = 1; i <= selisih; i++) {
if (x > 12) {
x = 1;
y++;
}
detail.setNo_Pembayaran(txtNoPembayaran.getText());
detail.setBulan(String.valueOf(x));
detail.setTahun(String.valueOf(y));
detail.setJumlah_Pembayaran(120000);
detail.tambahSPPDetail();
x++;
76
}
JOptionPane.showMessageDialog(rootPane, "Data spp berhasil disimpan!", "Info",
JOptionPane.INFORMATION_MESSAGE);
} else {
JOptionPane.showMessageDialog(rootPane, "Data spp gagal disimpan.\n" +
spp.getPesanError(), "Error", JOptionPane.ERROR_MESSAGE);
return;
}
}
this.status = "";
this.NoPembayaran = "";
bersihForm();
daftarSPP();
aktifTombol();
// TODO add your handling code here:
}
private void btnBatalActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
this.status = "";
this.NoPembayaran = "";
bersihForm();
aktifTombol();
}
private void tblSPPMouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
int row = tblSPP.getSelectedRow();
this.NoPembayaran = dtModel.getValueAt(row, 0).toString();
aktifTombol();
}
private void btnCariActionPerformed(java.awt.event.ActionEvent evt) {
if ("".equals(txtCari.getText())) {
daftarSPP();
} else {
daftarSPP(txtCari.getText().replace("'", "\'"));
}
// TODO add your handling code here:
}
private void btnHitungActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
if (periksaPembayaran() == false) {
JOptionPane.showMessageDialog(rootPane, "Bulan dan tahun yang dipilih tidak
valid");
txtTotalPembayaran.setText("0");
return;
}
txtTotalPembayaran.setText(nf.format(hitungPembayaran()));
}
77
private void txtTahunAjaranActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void txtNisKeyPressed(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
siswa = siswa.cariSiswa(txtNis.getText());
if (siswa.getNama_siswa() != null) {
txtNamaSiswa.setText(siswa.getNama_siswa());
txtTahunAjaran.requestFocus();
} else {
txtNis.setText("");
txtNamaSiswa.setText("");
JOptionPane.showMessageDialog(rootPane, "Siswa yang Anda cari tidak ada!",
"Error", JOptionPane.ERROR_MESSAGE);
}
}
}
private void btnTutupActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
dispose();
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and
feel.
* For details see
http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info :
javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Windows".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(FormSpp.class.getName()).log(java.util.logging.Level.S
EVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(FormSpp.class.getName()).log(java.util.logging.Level.S
EVERE, null, ex);
} catch (IllegalAccessException ex) {
78
java.util.logging.Logger.getLogger(FormSpp.class.getName()).log(java.util.logging.Level.S
EVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(FormSpp.class.getName()).log(java.util.logging.Level.S
EVERE, null, ex);
}
//</editor-fold>
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new FormSpp().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton btnBatal;
private javax.swing.JButton btnCari;
private javax.swing.JButton btnHitung;
private javax.swing.JButton btnSimpan;
private javax.swing.JButton btnTambah;
private javax.swing.JButton btnTutup;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel10;
private javax.swing.JLabel jLabel11;
private javax.swing.JLabel jLabel12;
private javax.swing.JLabel jLabel13;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JLabel jLabel8;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JSeparator jSeparator1;
private javax.swing.JTable tblSPP;
private com.toedter.calendar.JMonthChooser txtBulan1;
private com.toedter.calendar.JMonthChooser txtBulan2;
private javax.swing.JTextField txtCari;
private javax.swing.JTextField txtNamaSiswa;
private javax.swing.JTextField txtNis;
private javax.swing.JTextField txtNoPembayaran;
private com.toedter.calendar.JYearChooser txtTahun1;
private com.toedter.calendar.JYearChooser txtTahun2;
private javax.swing.JTextField txtTahunAjaran;
private com.toedter.calendar.JDateChooser txtTanggalPembayaran;
private javax.swing.JTextField txtTotalPembayaran;
// End of variables declaration
}
79
3.5.2. Blackbox Testing
1. Form Login
Tabel III.26
Hasil Pengujian Black Box Testing Form Login
No Skenario
Pengujian Test Case
Hasil yang
diharapkan
Hasil
Pengujian Kesimpulan
1
NIP dan kata
sandi tidak
diisi kemudian
klik tombol
login
NIP: Sistem akan
menolak akses
dan
menampilkan
pesan " NIP
dan Kata
Sandi tidak
boleh kosong!"
Sesuai
Harapan Valid
(Kosong)
Kata Sandi:
(Kosong)
2
NIP sedangkan
Kata Sandi
tidak diisi
kemudian klik
tombol login
NIP: Sistem akan
menolak akses
dan
menampilkan
pesan " Kata
Sandi tidak
boleh kosong "
Sesuai
Harapan Valid
123456789111
Kata Sandi:
(Kosong)
3
NIP tidak di isi
atau (kosong)
dan Kata
Sandi diisi
kemudian klik
tombol login
NIP: Sistem akan
menolak akses
dan
menampilkan
pesan " NIP
tidak boleh
kosong "
Sesuai
Harapan Valid
(Kosong)
Kata Sandi:
12345678
4
Mengetikkan
salah satu
kondisi salah
pada NIP atau
kata sandi
kemudian klik
tombol Login
NIP:
bendahara
(benar)
Sistem akan
menolak akses
dan
menampilkan
pesan " Kata
Sandi keliru!"
Sesuai
Harapan
Valid
Kata Sandi:
123456 (salah)
5
Mengetikkan
NIP dan kata
sandi dengan
data yang
benar
kemudian klik
tombol Login
NIP: Sistem akan
menerima
akses Login
dan
menampilkan
Form Menu
Utama
Sesuai
Harapan Valid
bendahara
(benar)
Kata Sandi:
12345678
(benar)
80
2. Form Siswa
Tabel III.27
Hasil Pengujian Black Box Testing Form Siswa
No Skenario
Pengujian Test Case
Hasil yang
diharapkan
Hasil
Pengujian Kesimpulan
1
Tidak ada
satupun field
yang diisi atau
salah satu field
ada yang
kosong
kemudian klik
Simpan
NIS:
(Kosong)
Nama Siswa:
(Kosong)
Tempat Lahir:
(Kosong)
Tanggal Lahir:
(Kosong)
Kelas:
(Kosong)
Jenis Kelamin:
(Kosong)
Alamat Siswa:
(Kosong)
No Telp:
(Kosong)
Semester:
(Kosong)
Sistem akan
menolak dan
menampilkan
pesan "Mohon
isi dulu semua
data"
Sesuai
Harapan Valid
2
Salah satu
field tidak
diisi,
kemudian klik
Simpan
NIS:
123456789123
Nama Siswa:
(Kosong)
Tempat Lahir:
Cikampek
Tanggal Lahir:
22-07-2004
Kelas:
XII
Jenis Kelamin:
Laki-laki
Alamat Siswa:
Kota Baru
No Telp:
08787654332
Semester:
1
Sistem akan
menolak dan
menampilkan
pesan "Mohon
isi dulu semua
data"
Sesuai
Harapan Valid
3
Semua field
diisi namun,
nama siswa
tidak diisi
NIS:
123456789123
Nama Siswa:
Willy Satria123
Sistem akan
menolak dan
menampilkan
pesan "Nama
Sesuai
Harapan Valid
81
dengan format
yang benar
kemudian klik
Simpan
Tempat Lahir:
Cikampek
Tanggal Lahir:
22-07-2004
Kelas:
XII
Jenis Kelamin:
Laki-laki
Alamat Siswa:
Kota Baru
No Telp:
08787654332
Semester:
1
Siswa hanya
boleh berupa
alfabet"
4
Semua field
diisi namun,
no telp tidak
diisi dengan
format yang
benar
kemudian klik
Simpan
NIS:
123456789123
Nama Siswa:
Willy Satria
Tempat Lahir:
Cikampek
Tanggal Lahir:
22-07-2004
Kelas:
XII
Jenis Kelamin:
Laki-laki
Alamat Siswa:
Kota Baru
No Telp:
1234
Semester:
1
Sistem akan
menolak dan
menampilkan
pesan "No
Telp tidak
valid"
Sesuai
Harapan Valid
5
Semua field
format yang
benar
kemudian klik
Simpan
NIS:
123456789123
Nama Siswa:
Willy Satria
Tempat Lahir:
Cikampek
Tanggal Lahir:
22-07-2004
Kelas:
XII
Jenis Kelamin:
Laki-laki
Alamat Siswa:
Kota Baru
No Telp:
08787654332
Semester: 1
Sistem akan
menerima dan
menampilkan
pesan "Data
siswa berhasil
disimpan"
Sesuai
Harapan Valid
82
3. Form Pembayaran SPP
Tabel III.28
Hasil Pengujian Black Box Testing Form Pembayaran SPP
No Skenario
Pengujian Test Case
Hasil yang
diharapkan
Hasil
Pengujian Kesimpulan
1
Tidak ada
satupun field
yang diisi atau
salah satu field
ada yang
kosong
kemudian klik
Simpan
No Pembayaran
SPP:
(Otomatis)
Tanggal
Pembayaran
SPP:
(Otomatis)
Nis:
(Kosong)
Nama siswa:
(Kosong)
Tahun Ajaran:
(Kosong)
Bulan dan tahun
pembayaran
(Belum Dipilih)
Sistem akan
menolak dan
menampilkan
pesan "Mohon
isi dulu semua
data!"
Sesuai
Harapan Valid
2
Semua field
diisi dengan
benar
kemudian klik
Simpan
No Pembayaran
SPP:
0001/SPP/08/20
19
Tanggal
Pembayaran
SPP:
30-08-2010
Nis:
123456789123
Nama siswa:
Willy Satria
Tahun Ajaran:
2019/2020
Bulan dan tahun
pembayaran
08-2019
09-2019
Sistem akan
menerima dan
menampilkan
pesan “Data
pembayaran
berhasil
disimpan"
Sesuai
Harapan Valid
83
3.5.3. Spesifikasi Hardware dan Software
Agar perangkat lunak berjalan dengan optimal, maka dibutuhkan konfigurasi
perangkat keras (hardware) dan juga perangkat lunak (software) yang tepat. Berikut
spesifikasi hardware dan software yang dibutuhkan antara lain :
Tabel III.29
Spesifikasi Hardware dan Software
Kebutuhan Keterangan
Sistem Windows 7 32-bit atau 64-bit atau di atasnya
Processor Intel Core 2 Duo @1.9GHz atau yang setara
RAM 2 GB
Harddisk 4 GB (minimal instalasi)
Monitor 15" LED (Wide Screen lebih baik)
Keyboard 102 key
Printer Inkjet
Mouse Standard
Software
Kebutuhan menjalankan aplikasi secara local:
Bahasa Pemgrograman : Java
IDE : Netbeans IDE 8.1
DBMS : MySQL