BAB III PEMBAHASAN · 26 BAB III PEMBAHASAN 3.1. Tinjauan Perusahaan Pengelolaan keuangan pada...

76
26 BAB III PEMBAHASAN 3.1. Tinjauan Perusahaan Pengelolaan keuangan pada Madrasah Tsanawiyah (MTs) Al-Fatah Pabuaran terdapat aturan yang ditentukan, dalam hal ini struktur organisasi yang menggambarkan garis perintah dan penerimaan perintah serta fungsi-fungsi pelaksanaan tersebut sehingga semua menjadi lancar. Penulis akan menerangkan sejarah dan struktur organisasi di tempat penulis melakukan riset untuk penyusunan tugas akhir ini, yaitu sebagai berikut: 3.1.1. Sejarah Perusahaan MTs. Al-Fatah Pabuaran yang terletak di Kp. Siluman Krajan RT 06/02, Desa Siluman, Kecamatan Pabuaran, Kabupaten Subang Jawa Barat, didirikan pada awal tahun 2008, berdiri diatas lahan seluas 1860 m2 yang berasal dari tanah keluarga besar Bapak H. Abdul Fatah (Almarhum) atas persetujuan putra-putri beliau, tanah tersebut di wakafkan untuk kepentingan pendidikan, sosial dan keagamaan dengan Nadzir Bapak K.H. Sayuti Maksudi, kemudian atas kesepakatan para tokoh agama di desa Siluman pada tanggal 13 Agustus 2007 didirikan Yayasan Pendidikan Islam Al- Fatah yang dipimpin oleh Sdr. Mujahid Nasirudin, S.Ag, Nomor pendirian 04 Notaris Endah, SH. Dengan bantuan swadaya masyarakat serta dukungan dari keluarga besar muwakif maka berdiri sekolah swasta setahap Sekolah Lanjutan Tingkat Pertama

Transcript of BAB III PEMBAHASAN · 26 BAB III PEMBAHASAN 3.1. Tinjauan Perusahaan Pengelolaan keuangan pada...

  • 26

    BAB III

    PEMBAHASAN

    3.1. Tinjauan Perusahaan

    Pengelolaan keuangan pada Madrasah Tsanawiyah (MTs) Al-Fatah Pabuaran

    terdapat aturan yang ditentukan, dalam hal ini struktur organisasi yang

    menggambarkan garis perintah dan penerimaan perintah serta fungsi-fungsi

    pelaksanaan tersebut sehingga semua menjadi lancar. Penulis akan menerangkan

    sejarah dan struktur organisasi di tempat penulis melakukan riset untuk penyusunan

    tugas akhir ini, yaitu sebagai berikut:

    3.1.1. Sejarah Perusahaan

    MTs. Al-Fatah Pabuaran yang terletak di Kp. Siluman Krajan RT 06/02, Desa

    Siluman, Kecamatan Pabuaran, Kabupaten Subang Jawa Barat, didirikan pada awal

    tahun 2008, berdiri diatas lahan seluas 1860 m2 yang berasal dari tanah keluarga

    besar Bapak H. Abdul Fatah (Almarhum) atas persetujuan putra-putri beliau, tanah

    tersebut di wakafkan untuk kepentingan pendidikan, sosial dan keagamaan dengan

    Nadzir Bapak K.H. Sayuti Maksudi, kemudian atas kesepakatan para tokoh agama di

    desa Siluman pada tanggal 13 Agustus 2007 didirikan Yayasan Pendidikan Islam Al-

    Fatah yang dipimpin oleh Sdr. Mujahid Nasirudin, S.Ag, Nomor pendirian 04

    Notaris Endah, SH.

    Dengan bantuan swadaya masyarakat serta dukungan dari keluarga besar

    muwakif maka berdiri sekolah swasta setahap Sekolah Lanjutan Tingkat Pertama

  • 27

    (SLTP) atau Madrasah Tsanawiyah (MTs) di bawah naungan Departeman Agama

    yang bercirikan khas pendidikan berkarater Islam yang diberi nama MTs Al-Fatah,

    dengan hanya fasilitas 3 ruang kelas yang sederhana, jumlah siswa awal pendirian

    hanya 23 Siswa, lumlah staf pengajar 12 orang guru honor dan dipimpin 1 orang

    guru PNS yang bertugas sebagai kepala madrasah yaitu Sdr. Drs. Yusuf

    Satori, maka proses pendidikan dan kegiatan belajar mengajar mulai beroperasi.

    Izin opersional secara resmi dari kantor wilayah Depertemen Agama provinsi

    Jawa Barat keluar pada tanggal 8 oktober 2008 dengan nomor statistik madrasah

    (nsm) 12.12.32.13.00.21, sedangkan dari dinas pendidikan Kabupaten Subang keluar

    Nomor Pokok Statistik Nasional (NPSN) 20254598. maka secara resmi MTs Al-

    Fatah terdaftar sebagai sekolah swasta yang siap ikut berpartisipasi dalam

    mewujudkan program pemerintah di bidang pendidikan sesuai dengan amanat UUD

    1945 yaitu program mencerdaskan kehidupan bangsa menuju masyarakat yang adil

    dan makmur.

    MTs Al-Fatah Pabuaran memiliki visi yaitu “Terwujudnya peserta didik yang

    unggul dalam prestasi berdasarkan iman dan taqwa, cerdas, kretaif, dan inovatif

    dalam ilmu dan teknologi serta memiliki keunggulan lokal mapun global yang

    menjadi harapan masyarakat indonesia”. Sedangkan misi yang dijalankan adalah

    sebagai berikut:

    1. Berperan secara aktif sebagai agent of change dan memberikan

    pendidikan serta pembinaan terbaik kepada para murid.

    2. Mendidik generasi muda berbudi luhur, taqwa kepada Tuhan Yang Maha Esa.

    3. Mendidik generasi muda agar cerdas, kreatif, dan bertanggung jawab.

  • 28

    3.1.2. Struktur Organisasi dan Fungsi

    Sumber: MTs. Al-Fatah Pabuaran

    Gambar III.1.

    Struktur Organisasi MTs. Al-Fatah Pabuaran

    Dalam struktur organisasi pada masing-masing jabatan mempunyai tanggung

    jawab dan wewenang yang berbeda sesuai bidangnya, Adapun fungsi dari tiap-tiap

    bagian adalah sebagai berikut:

    1. Kepala Yayasan

    Secara prinsip yaitu sebagai pemegang kekuasaan tertinggi di Yayasan Pendidikan

    Islam Al-Fatah ini, umumnya dewan pembina ini dilakukan secara bersama-sama

    dengan seluruh anggota pengurus yayasan untuk menentukan kebijakan atau

    keputusan yang akan diterapkan pada Yayasan Pendidikan Islam Al-Fatah ini.

  • 29

    2. Kepala Sekolah

    Peran Kepala Sekolah yaitu mengawasi setiap kinerja para pegawai serta

    mengelola perkembangan baik dalam proses belajar mengajar maupun dalam

    keadminitrasian MTs. Al-Fatah Pabuaran.

    3. Bendahara

    Peran Bendahara berperan sebagai Bagian Adm. Keuangan yang mengelola

    keuangan pada MTs. Al-Fatah Pabuaran.

    4. Tata Usaha (TU)

    Peran tata usaha yaitu untuk mengelola mengenai keadministrasian dalam surat-

    menyurat, pencatatan kas masuk harian, kas keluar harian dan pembuatan

    proposal serta lain-lain.

    5. BK (Bimbingan Konseling)

    Secara garis besar peran guru BK (Bimbingan Konseling) adalah membantu

    pengumpulan informasi yang diperlukan dalam rangka penilaian pelayanan

    bimbingan dan konseling serta upaya tindak lanjutnya serta berpartisipasi khusus

    dalam kegiatan penanganan masalah siswa/i.

    6. Wali Kelas

    Memiliki peran sebagai orang yang dapat mengatasi masalah-masalah yang ada di

    dalam kelas serta mampu memberi berbagai pelatihan kepada siswa/i yang

    mendorong timbulnya kesadaran diri.

    7. Guru

    Peran Guru yaitu mengajar siswa/i MTs. Al-Fatah Pabuaran.

  • 30

    8. Siswa

    Peran siswa/i MTs. Al-Fatah Pabuaran yaitu belajar dengan sungguh-sungguh,

    menghormati guru dan mentaati peraturan sekolah.

    3.2. Tinjauan Kasus

    3.2.1. Proses Bisnis Sistem Berjalan

    Pada prosedur sistem berjalan ini ada beberapa prosedur pengelolaan keuangan

    yang ditetapkan pada MTs. Al-Fatah Pabuaran adalah sebagai berikut:

    1. Proses Penerimaan Kas

    a. Pendaftaran Siswa Baru

    Orang tua siswa baru mengumpulkan form persyaratan registrasi kepada

    bagian tata usaha, lalu data siswa baru diproses oleh bagian tata usaha dengan

    mencatatkan nama siswa pada buku pendaftaran peserta didik baru dan buku

    induk siswa baru lalu bagian tata usaha mengarsipkan form registrasi siswa

    baru. Siswa baru mendapatkan kwitansi pembayaran registrasi.

    a. Penerimaan Donasi

    Calon donatur yang ingin menyumbang atau memberikan donasi dapat datang

    langsung ke MTs. Al-Fatah Pabuaran dan menemui bagian tata usaha. Setelah

    itu calon donatur dapat langsung memberikan donasi ke bagian tata usaha dan

    bagian tata usaha akan menerima donasi dari donatur dan mencatatnya kedalam

    buku penerimaan donasi. Lalu bagian tata usaha akan membuat kwitansi dan

    menyerahkannya kepada donatur sebagai bukti telah memberikan donasi.

    b. Dana BOS atau BSM

    Kepala sekolah menerima sejumlah uang dari dana BOS dan BSM lalu setelah

    itu uang akan diberikan kepada bendahara dan bendahara akan mencatat

    penerimaan dana BOS dan BSM tersebut kedalam buku penerimaan kas.

  • 31

    2. Proses Pengeluaran Kas

    Semua bentuk pengeluaran seperti pembayaran listrik dan internet, pembelian alat

    tulis kantor, transportasi guru kecuali penggajian karyawan dicatat oleh bagian

    tata usaha kedalam buku kas yang dilampiri dengan nota pembayaran untuk listrik

    dan internet serta nota pembelian untuk alat tulis kantor. Untuk teknis bagian tata

    usaha harus membuat detail pengeluaran kas yang dibutuhkan, lalu bagian tata

    usaha menyerahkan detail kebutuhan pengeluaran kas tersebut ke bendahara untuk

    permintaan dana dan bendahara akan memberikan langsung sejumlah uang ke

    bagian tata usaha sesuai dengan detail kebutuhan pengeluaran kas yang dibuat

    oleh bagian tata usaha.

    3. Proses Pembuatan Laporan

    Bagian tata usaha menyerahkan laporan penerimaan pembayaran siswa baru dan

    penerimaan donasi kecuali dana BOS dan BSM dan laporan pengeluaran kas

    seperti pembayaran listrik dan internet, alat tulis kantor dan transportasi guru

    terkecuali gaji karyawan dilengkapi dengan nota atau kwitansi dari bukti

    penerimaan maupun pembayaran yang diserahkan kepada bendahara untuk di olah

    kembali menjadi laporan penerimaan dan pengeluaran kas bulanan. laporan

    penerimaan dan pengeluaran kas di serahkan kepada kepala sekolah untuk di

    periksa dan di tandatangani, kemudian laporan tersebut di kembalikan ke

    bendahara untuk di stempel dan di arsipkan.

    3.2.2. Activity Diagram

    Activity diagram sistem berjalan pada MTs. Al-Fatah Pabuaran dibawah ini

    menggambarkan sistem yang berjalan pada proses peenerimaan kas, pengeluaran kas

    serta proses pembuatan laporan yaitu:

  • 32

    1. Proses Penerimaan Kas

    a. Pendaftaran Siswa Baru

    Gambar III.2.

    Activity Diagram Pendaftaran Siswa Baru

  • 33

    b. Penerimaan Donasi

    Gambar III.3.

    Activity Diagram Penerimaan Donasi

  • 34

    c. Dana BOS dan BSM

    Gambar III.4.

    Activity Diagram Permintaan Dana BOS dan BSM

  • 35

    2. Proses Pengeluaran Kas

    Gambar III.5.

    Activity Diagram Proses Pengeluaran Kas

  • 36

    3. Proses Pembuatan Laporan

    Gambar III.6.

    Activity Diagram Proses Pembuatan Laporan

  • 37

    3.2.3. Dokumen Masukan

    1. Nama Masukan : Form Pendaftaran Peserta Didik Baru

    Fungsi : Sebagai Bukti Pendaftaran

    Sumber : Orang Tua Siswa

    Tujuan : Tata Usaha

    Media : Kertas

    Rangkap : 1 Rangkap

    Bentuk : Lampiran A-1

    2. Nama Masukan : Nota Pembelian

    Fungsi : Sebagai Bukti Pembelian Alat Tulis Kantor

    Sumber : Toko Alat Tulis Kantor

    Tujuan : Tata Usaha

    Media : Kertas

    Rangkap : 1 Rangkap

    Bentuk : Lampiran A-2

    3. Nama Masukan : Nota Pembayaran

    Fungsi : Sebagai Bukti Pembayaran Listrik dan Internet

    Sumber : PLN

    Tujuan : Tata Usaha

    Media : Kertas

    Rangkap : 1 Rangkap

    Bentuk : Lampiran A-3

  • 38

    3.2.4. Dokumen Keluaran

    1. Nama Masukan : Kwitansi Pembayaran

    Fungsi : Sebagai Bukti Pembayaran Registrasi

    Sumber : Tata Usaha

    Tujuan : Orang Tua Siswa

    Media : Kertas

    Rangkap : 1 Rangkap

    Bentuk : Lampiran B-1

    2. Nama Masukan : Kwitansi Bukti Donasi

    Fungsi : Sebagai Bukti Pemberian Donasi

    Sumber : Tata Usaha

    Tujuan : Donatur

    Media : Kertas

    Rangkap : 1 Rangkap

    Bentuk : Lampiran B-2

    3. Nama Masukan : Slip Gaji

    Fungsi : Sebagai Bukti Pembayaran Gaji

    Sumber : Bendahara

    Tujuan : Karyawan

    Media : Kertas

    Rangkap : 1 Rangkap

    Bentuk : Lampiran B-3

    4. Nama Masukan : Laporan Penerimaan Kas

    Fungsi : Sebagai Bukti Laporan Penerimaan

    Sumber : Bendahara

  • 39

    Tujuan : Kepala Sekolah

    Media : Kertas

    Rangkap : 1 Rangkap

    Bentuk : Lampiran B-4

    5. Nama Masukan : Laporan Pengeluaran Kas

    Fungsi : Sebagai Bukti Laporan Pengeluaran Kas

    Sumber : Bendahara

    Tujuan : Kepala Sekolah

    Media : Cetakan Manual

    Rangkap : 1 Rangkap

    Bentuk : Lampiran B-5

    3.2.5. Permasalahan Pokok

    Setelah penulis mempelajari dan mengamati bagaimana sistem pengelolaan

    keuangan yang terdapat pada MTs. Al-Fatah Pabuaran, ternyata sistem tersebut

    memiliki beberapa masalah yang dihadapi, diantaranya:

    1. Pengolahan dan pencatatan data masih dilakukan secara manual, sehingga tingkat

    keamanan masih rendah. Serta penyimpanan data arsip masih disimpan dalam

    bentuk arsip kertas yang memiliki tingkat hilang dan rusak cukup tinggi.

    2. Tidak terdapat laporan keuangan sekolah secara detail.

    3.2.6. Pemecahan Masalah

    Untuk mengatasi masalah yang terdapat pada MTs. Al-Fatah Pabuaran, penulis

    mengajukan penggunaan sebuah sistem arus kas secara terkomputerisasi. Langkah-

    langkah yang ingin penulis lakukan adalah sebagai berikut:

  • 40

    1. Pengolahan dan pencatatan data masih dilakukan secara manual dapat disikapi

    dengan cara pengelolaan data dengan cara dibuatkan sistem yang

    terkomputerisasi.

    2. Tidak terdapat laporan keuangan sekolah secara detail sehingga dapat disikapi

    dengan penulis menyusun laporan pengelolaan keuangan dengan melakukan

    penjurnalan terhadap transaksi tersebut.

    3.3. Analisis Kebutuhan Software

    Analisa kebutuhan software merupakan langkah awal untuk menentukan

    gambaran perangkat yang dihasilkan ketika pengembang melaksanakan sebuah

    pembuatan software. Perangkat lunak yang baik dan sesuai dengan kebutuhan

    pengguna sangat tergantung pada keberhasilan dalam melakukan analisis kebutuhan.

    3.3.1. Analisis Kebutuhan

    Tahapan analisis, meliputi tahapan analisis kebutuhan fungsionalitas dari

    masing-masing pengguna yang berinteraksi langsung terhadap sistem informasi arus

    kas.

    A. Tata Usaha:

    A.1. Tata usaha dapat mengakses login kedalam sistem.

    A.2. Tata usaha dapat mengelola master data.

    A.3. Tata usaha dapat mengelola data transaksi penerimaan kas.

    A.4. Tata usaha dapat mengelola data transaksi pengeluaran kas.

    B. Bendahara:

    B.1. Bendahara dapat mengakses login kedalam sistem.

    B.2. Bendahara dapat mengelola data transaksi penerimaan kas.

  • 41

    B.3. Bendahara dapat mengelola data transaksi pengeluaran kas.

    B.4. Bendahara dapat melihat laporan arus kas.

    B.5. Bendahara dapat melihat laporan jurnal.

    C. Kelapa Sekolah:

    C.1. Kepala sekolah dapat mengakses login kedalam sistem.

    C.2. Kelapa sekolah dapat melihat laporan arus kas.

    C.3. Kepala sekolah dapat melihat laporan jurnal.

    3.3.2. Use Case Diagram

    A. Use case Diagram Tata Usaha

    Gambar III.7.

    Use Case Diagram Tata Usaha

    Tabel III.1.

    Deskripsi Use Case Tata Usaha

    Use Case Narrative Tata Usaha

    Tujuan Mengelola data dan transaksi.

    Deskripsi Sistem ini memungkinkan aktor untuk masuk ke halaman

  • 42

    utama yang di dalamnya ada master data dan transaksi.

    Skenario Utama

    Aktor Tata usaha.

    Kondisi Awal Aktor membuka aplikasi arus kas.

    Aksi Aktor Reaksi Sistem

    1. Aktor Memilih Login Sistem akan menampilkan menu utama setelah aktor

    memasukkan username, password dan hak akses.

    2. Aktor Memilih Master Data Sistem akan menampilkan data-data yang dipilih.

    3. Aktor Memilih Data

    Transaksi Penerimaan Kas

    Sistem akan menampilkan form data transaksi

    penerimaan kas.

    4. Aktor Memilih Data

    Transaksi Pengeluaran Kas

    Sistem akan menampilkan form data transaksi

    pengeluaran kas.

    Kondisi Akhir Jika perintah sesuai maka sistem akan menampilkan

    sesuai permintaan.

    B. Use Case Diagram Bendahara

    Gambar III.8.

    Use Case Diagram Bendahara

  • 43

    Tabel III.2.

    Deskripsi Use Case Bendahara

    Use Case Narrative Bendahara

    Tujuan Mengelola transaksi dan melihat laporan.

    Deskripsi Sistem ini memungkinkan aktor untuk masuk ke halaman

    utama yang di dalamnya ada transaksi dan laporan.

    Skenario Utama

    Aktor Bendahara.

    Kondisi Awal Aktor membuka aplikasi arus kas.

    Aksi Aktor Reaksi Sistem

    1. Aktor Memilih Login Sistem akan menampilkan menu utama setelah aktor

    memasukkan username, password dan hak akses.

    2. Aktor Memilih Data

    Transaksi Penerimaan Kas

    Sistem akan menampilkan form data transaksi

    penerimaan kas.

    3. Aktor Memilih Data

    Transaksi Pengeluaran Kas

    Sistem akan menampilkan form data transaksi

    pengeluaran kas.

    4. Aktor Memilih Laporan

    Arus Kas

    Sistem akan menampilkan laporan arus kas.

    5. Aktor Memilih Laporan

    Jurnal

    Sistem akan menampilkan laporan jurnal.

    Kondisi Akhir Jika perintah sesuai maka sistem akan menampilkan

    sesuai permintaan.

    C. Use Case Diagram Kepala Sekolah

    Gambar III.9.

    Use Case Diagram Kepala Sekolah

  • 44

    Tabel III.3.

    Deskripsi Use Case Kepala Sekolah

    Use Case Narrative Kepala Sekolah

    Tujuan Melihat laporan.

    Deskripsi Sistem ini memungkinkan aktor untuk masuk ke halaman

    utama yang di dalamnya laporan.

    Skenario Utama

    Aktor Kepala Sekolah.

    Kondisi Awal Aktor membuka aplikasi arus kas.

    Aksi Aktor Reaksi Sistem

    1. Aktor Memilih Login Sistem akan menampilkan menu utama setelah aktor

    memasukkan username, password dan hak akses.

    2. Aktor Memilih Laporan

    Arus Kas

    Sistem akan menampilkan laporan arus kas.

    3. Aktor Memilih Laporan

    Jurnal

    Sistem akan menampilkan laporan jurnal.

    Kondisi Akhir Jika perintah sesuai maka sistem akan menampilkan

    sesuai permintaan.

  • 45

    3.3.3. Activity Diagram

    1. Activity Diagram Login

    Gambar III.10.

    Activity Diagram Login

  • 46

    2. Activty Diagram Mengelola Master Data

    Gambar III.11.

    Activity Diagram Mengelola Master Data

  • 47

    3. Activity Diagram Mengelola Data Transaksi Penerimaan Kas

    Gambar III.12.

    Activity Diagram Mengelola Data Transaksi Penerimaan Kas

  • 48

    4. Activity Diagram Mengelola Data Transaksi Pengeluaran Kas

    Gambar III.13.

    Activity Diagram Mengelola Data Transaksi Pengeluaran Kas

  • 49

    5. Activity Diagram Laporan

    Gambar III.14.

    Activity Diagram Laporan

  • 50

    3.4. Desain

    3.4.1. Entity Relationship Diagram (ERD)

    Gambar III.15.

    Entity Relationship Diagram Arus Kas

  • 51

    3.4.2. Logical Record Structure (LRS)

    Gambar III.16.

    Logical Record Structure Arus Kas

    3.4.3. Spesifikasi File

    a. Spesifikasi File Tabel Admin

    Nama Database : admin

    Nama File : Data Admin

    Tipe File : Master Data

  • 52

    Akses File : Random

    Panjang Record : 101 Karakter

    Field Key : id_user

    Tabel III.4.

    Spesifikasi File Tabel Admin

    No Elemen Data Akronim Tipe Panjang Keterangan

    1. Identitas User id_user Varchar 10 Primary Key

    2. Nama nama Varchar 45

    3. Hak Akses hak_akses Varchar 25

    4. Password password Integer 21

    b. Spesifikasi File Tabel Data Akun

    Nama Database : data_akun

    Nama File : Data Akun

    Tipe File : Master Data

    Akses File : Random

    Panjang Record : 30 Karakter

    Field Key : id_akun

    Tabel III.5.

    Spesifikasi File Tabel Data Akun

    No Elemen Data Akronim Tipe Panjang Keterangan

    1. No Akun id_akun Varchar 15 Primary Key

    2. Nama Akun nama_akun text

    3. Jenis Akun jenis_akun Varchar 15

  • 53

    c. Spesifikasi File Tabel Data Siswa

    Nama Database : data_siswa

    Nama File : Data Siswa

    Tipe File : Master Data

    Akses File : Random

    Panjang Record : 118 Karakter

    Field Key : id_siswa

    Tabel III.6.

    Spesifikasi File Tabel Data Siswa

    No Elemen Data Akronim Tipe Panjang Keterangan

    1. Identitas Siswa id_siswa Varchar 15 Primary Key

    2. Nama Siswa nama_siswa Varchar 35

    3. Kelas kelas Varchar 8

    4. Tempat Lahir tempat_lahir Varchar 15

    5. Tanggal Lahir tanggal_lahir Date

    6. Agama agama Varchar 15

    7. Jenis Kelamin jenis_kelamin Varchar 15

    8. Alamat alamat Text

    9. No Handphone no_hp Varchar 15

    d. Spesifikasi File Tabel Jurnal Detail

    Nama Database : detail_jurnal

    Nama File : Jurnal Detail

    Tipe File : Laporan

    Akses File : Random

    Panjang Record : 80 Karakter

    Field Key : no_jurnal

  • 54

    Tabel III.7.

    Spesifikasi File Tabel Jurnal Detail

    No Elemen Data Akronim Tipe Panjang Keterangan

    1. No Jurnal no_jurnal Varchar 15 Primary Key

    2. Identitas Akun id_akun Varchar 15 Foreign Key

    3. Debet debet Integer 25

    4. Kredit kredit Integer 25

    e. Spesifikasi File Tabel Data Donatur

    Nama Database : donatur

    Nama File : Data Donatur

    Tipe File : Master Data

    Akses File : Random

    Panjang Record : 130 Karakter

    Field Key : id_donatur

    Tabel III.8.

    Spesifikas File Tabel Data Donatur

    No Elemen Data Akronim Tipe Panjang Keterangan

    1. Id Donatur id_donatur Varchar 15 Primary Key

    2. Nama Donatur nama_donatur Varchar 35

    3. Tempat Lahir tempat_lahir Varchar 15

    4. Tanggal Lahir tanggal_lahir Date

    5. Agama agama Varchar 15

    6. Jenis Kelamin jenis_kelamin Varchar 15

    7. Alamat alamat Text

    8. No Handphone no_hp Varchar 15

    9. E-mail email Varchar 20

  • 55

    f. Spesifikasi File Tabel Data Jurnal

    Nama Database : jurnal

    Nama File : Data Jurnal

    Tipe File : Master Data

    Akses File : Random

    Panjang Record : 45 Karakter

    Field Key : no_jurnal

    Tabel III.9.

    Spesifikas File Tabel Data Jurnal

    No Elemen Data Akronim Tipe Panjang Keterangan

    1. No Jurnal no_jurnal Varchar 15 Primary Key

    2. Tanggal tanggal Date

    3. No Referensi no_ref Varchar 15

    4. Identitas User id_user Varchar 15 Foreign Key

    g. Spesifikasi File Tabel Data Karyawan

    Nama Database : karyawan

    Nama File : Data Karyawan

    Tipe File : Master Data

    Akses File : Random

    Panjang Record : 110 Karakter

    Field Key : id_karyawan

  • 56

    Tabel III.10.

    Spesifikas File Tabel Data Karyawan

    No Elemen Data Akronim Tipe Panjang Keterangan

    1. Id Karyawan id_karyawan Varchar 15 Primary Key

    2. Nama Karyawan nama_karyawan Text

    3. Tempat Lahir tempat_lahir Varchar 15

    4. Tanggal Lahir tanggal_lahir Date

    5. Agama agama Varchar 15

    6. Jenis Kelamin jenis_kelamin Varchar 15

    7. Alamat alamat Text

    8. No Handphone no_hp Varchar 15

    9. E-mail email Varchar 35

    h. Spesifikasi File Tabel Pengeluaran Kas

    Nama Database : kas_keluar

    Nama File : Pengeluaran Kas

    Tipe File : Transaksi

    Akses File : Random

    Panjang Record : 94 Karakter

    Field Key : no_kk

    Tabel III.11.

    Spesifikas File Tabel Pengeluaran Kas

    No Elemen Data Akronim Tipe Panjang Keterangan

    1. No Kas Keluar no_kk Varchar 8 Primary Key

    2. Jenis Kas Keluar jenis_kk Varchar 25

    3. Tanggal tgl_kk Date

    4. Untuk untuk Varchar 35

    5. Jumlah jumlah_kk Integer 11

  • 57

    6. Memo memo Text

    7. Identitas User id_user Varchar 15 Foreign Key

    i. Spesifikasi File Tabel Penerimaan Kas

    Nama Database : kas_masuk

    Nama File : Penerimaan Kas

    Tipe File : Transaksi

    Akses File : Random

    Panjang Record : 89 Karakter

    Field Key : no_km

    Tabel III.12.

    Spesifikas File Tabel Penerimaan Kas

    No Elemen Data Akronim Tipe Panjang Keterangan

    1. No Kas Masuk no_km Varchar 8 Primary Key

    2. Jenis Kas Masuk jenis_km Varchar 25

    3. Tanggal tgl_km Date

    4. Sumber Sumber_km Varchar 15

    5. Jumlah jumlah_km Integer 11

    6. Memo memo Text

    7. Identitas User id_user Varchar 15 Foreign Key

    8. Identitas id Varchar 15

  • 58

    3.4.4. Sequence Diagram

    1. Sequence Diagram Penerimaan Kas

    Gambar III.17.

    Sequence Diagram Penerimaan Kas

  • 59

    2. Sequence Diagram Pengeluaran Kas

    Gambar III.18.

    Sequence Diagram Pengeluaran Kas

  • 60

    3.4.5. Deployment Diagram

    Gambar III.19.

    Deployment Diagram Arus Kas

    3.4.6. User Interface

    1. Halaman Login

    Gambar III.20.

    User Interface Halaman Login

  • 61

    2. Halaman Menu Utama

    Gambar III.21.

    User Interface Halaman Menu Utama

    3. Halaman Master Data

    Gambar III.22.

    User Interface Halaman Master Data

  • 62

    4. Form Data Admin

    Gambar III.23.

    User Interface Form Data Admin

    5. Form Data Akun

    Gambar III.24.

    User Interface Form Data Akun

  • 63

    6. Form Data Donatur

    Gambar III.25.

    User Interface Form Data Donatur

    7. Form Data Karyawan

    Gambar III.26.

    User Interface Form Data Karyawan

  • 64

    8. Form Data Siswa

    Gambar III.27.

    User Interface Form Data Siswa

    9. Halaman Transaksi

    Gambar III.28.

    User Interface Halaman Transaksi

  • 65

    10. Form Penerimaan Kas

    Gambar III.29.

    User Interface Form Penerimaan Kas

    11. Form Pengeluaran Kas

    Gambar III.30.

    User Interface Form Pengeluaran Kas

  • 66

    12. Halaman Laporan

    Gambar III.31.

    User Interface Halaman Laporan

    13. Laporan Arus Kas

    Gambar III.32.

    User Interface Laporan Arus Kas

  • 67

    14. Laporan Jurnal

    Gambar III.33.

    User Interface Laporan Jurnal

    3.5. Implementasi

    3.5.1. Code Generation

    1. Code Generation Penerimaan Kas

    import java.awt.Toolkit;

    import java.io.File;

    import java.sql.PreparedStatement;

    import java.sql.ResultSet;

    import java.sql.SQLException;

    import java.sql.Statement;

    import java.text.SimpleDateFormat;

    import java.util.Date;

  • 68

    import java.util.HashMap;

    import java.util.logging.Level;

    import java.util.logging.Logger;

    import javax.swing.JOptionPane;

    import javax.swing.table.DefaultTableModel;

    import net.sf.jasperreports.engine.JasperFillManager;

    import net.sf.jasperreports.engine.JasperPrint;

    import net.sf.jasperreports.engine.JasperReport;

    import net.sf.jasperreports.engine.util.JRLoader;

    import net.sf.jasperreports.view.JasperViewer;

    /*

    * To change this license header, choose License Headers in Project Properties.

    * To change this template file, choose Tools | Templates

    * and open the template in the editor.

    */

    /**

    *

    * @author Samsung

    */

    public class fkas_masuk extends javax.swing.JFrame {

    koneksi kon = new koneksi();

    String No = "";

    /**

    * Creates new form fkas_masuk

    */

  • 69

    public fkas_masuk(String ha) {

    initComponents();

    setLocation((Toolkit.getDefaultToolkit().getScreenSize().width - getWidth())

    / 2,

    (Toolkit.getDefaultToolkit().getScreenSize().height - getHeight()) / 2);

    //berada ditengah layar

    kon.getConnection();

    regrid();

    jlevel.setText(ha);

    if (ha.equals("Bendahara")) {

    jComboBox1.addItem("Dana BOS dan BSM");

    jTextField6.setVisible(false);

    jButton1.setVisible(false);

    }

    jlevel.setText(ha);

    if (ha.equals("Tata Usaha")) {

    jComboBox1.addItem("Donatur");

    jComboBox1.addItem("Pendaftaran Siswa/i");

    }

    jTextField1.setText(no_kas_auto());

    }

    private String no_kas_auto() {

    String no = "jTextField1.setText(no_kas_auto());\n"

    + "";

  • 70

    String Sql = "SELECT * FROM kas_masuk ORDER BY substr(no_km, 3,5)

    * 1 DESC limit 1 ";

    try {

    Statement st = kon.conn.createStatement();

    ResultSet rs = st.executeQuery(Sql);

    if (rs.next()) {

    no = rs.getString("no_km");

    no = no.substring(2, 5);

    no = "KM" + String.format("%03d", Integer.parseInt(no) + 1);

    } else {

    no = "KM001";

    }

    return no;

    } catch (SQLException ex) {

    Logger.getLogger(fkas_masuk.class.getName()).log(Level.SEVERE, null,

    ex);

    return "";

    }

    }

    private String no_jurnal_auto() {

    String no = "";

    String Sql = "SELECT * FROM jurnal ORDER BY substr(no_jurnal, 3,5) *

    1 DESC limit 1 ";

    try {

    Statement st = kon.conn.createStatement();

  • 71

    ResultSet rs = st.executeQuery(Sql);

    if (rs.next()) {

    no = rs.getString("no_jurnal");

    no = no.substring(2, 5);

    no = "JU" + String.format("%03d", Integer.parseInt(no) + 1);

    } else {

    no = "JU001";

    }

    return no;

    } catch (SQLException ex) {

    Logger.getLogger(fkas_masuk.class.getName()).log(Level.SEVERE, null,

    ex);

    return "";

    }

    }

    /**

    * This method is called from within the constructor to initialize the form.

    * WARNING: Do NOT modify this code. The content of this method is

    always

    * regenerated by the Form Editor.

    */

    @SuppressWarnings("unchecked")

    //

    private void initComponents() {

  • 72

    jPanel1 = new javax.swing.JPanel();

    jPanel2 = new javax.swing.JPanel();

    jPanel4 = new javax.swing.JPanel();

    jLabel7 = new javax.swing.JLabel();

    jLabel10 = new javax.swing.JLabel();

    jPanel3 = new javax.swing.JPanel();

    jLabel1 = new javax.swing.JLabel();

    jLabel2 = new javax.swing.JLabel();

    jLabel3 = new javax.swing.JLabel();

    jLabel4 = new javax.swing.JLabel();

    jLabel5 = new javax.swing.JLabel();

    jTextField1 = new javax.swing.JTextField();

    jComboBox1 = new javax.swing.JComboBox();

    jTextField3 = new javax.swing.JTextField();

    jTextField4 = new javax.swing.JTextField();

    jScrollPane1 = new javax.swing.JScrollPane();

    jTable1 = new javax.swing.JTable();

    jbsimpan = new javax.swing.JButton();

    jbbatal = new javax.swing.JButton();

    jbubah = new javax.swing.JButton();

    jbcari = new javax.swing.JButton();

    jbhapus = new javax.swing.JButton();

    jLabel9 = new javax.swing.JLabel();

    jTextField5 = new javax.swing.JTextField();

    jDateChooser1 = new com.toedter.calendar.JDateChooser();

  • 73

    jbkeluar = new javax.swing.JButton();

    jlevel = new javax.swing.JLabel();

    jbcetak = new javax.swing.JButton();

    jLabel8 = new javax.swing.JLabel();

    jTextField6 = new javax.swing.JTextField();

    jButton1 = new javax.swing.JButton();

    jLabel6 = new javax.swing.JLabel();

    jLabel11 = new javax.swing.JLabel();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

    jPanel4.setBackground(new java.awt.Color(255, 255, 255));

    jPanel4.setMaximumSize(new java.awt.Dimension(40000, 40000));

    jLabel7.setIcon(new javax.swing.ImageIcon(getClass().getResource("/logo

    al fatah.jpg"))); // NOI18N

    jLabel10.setFont(new java.awt.Font("Arial Black", 0, 27)); // NOI18N

    jLabel10.setText("YAYASAN AL-FATAH PABUARAN (YAFATA)");

    jPanel3.setBackground(new java.awt.Color(102, 255, 102));

    jPanel3.setMaximumSize(new java.awt.Dimension(40000, 40000));

    jPanel3.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

    jLabel1.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N

    jLabel1.setText("No Bukti Kas Masuk");

    jPanel3.add(jLabel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(20,

    20, 140, 30));

    jLabel2.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N

    jLabel2.setText("Jenis Pemasukan");

  • 74

    jPanel3.add(jLabel2, new org.netbeans.lib.awtextra.AbsoluteConstraints(20,

    60, 138, 30));

    jLabel3.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N

    jLabel3.setText("Tanggal");

    jPanel3.add(jLabel3, new

    org.netbeans.lib.awtextra.AbsoluteConstraints(350, 60, 90, 30));

    jLabel4.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N

    jLabel4.setText("Dari");

    jPanel3.add(jLabel4, new

    org.netbeans.lib.awtextra.AbsoluteConstraints(350, 100, 90, 30));

    jLabel5.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N

    jLabel5.setText("Sebesar");

    jPanel3.add(jLabel5, new

    org.netbeans.lib.awtextra.AbsoluteConstraints(350, 140, 90, 30));

    jTextField1.setEditable(false);

    jTextField1.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N

    jTextField1.addActionListener(new java.awt.event.ActionListener() {

    public void actionPerformed(java.awt.event.ActionEvent evt) {

    jTextField1ActionPerformed(evt);

    }

    });

    jPanel3.add(jTextField1, new

    org.netbeans.lib.awtextra.AbsoluteConstraints(160, 20, 440, 31));

    jComboBox1.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N

  • 75

    jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new

    String[] { "..... Pilih ....." }));

    jComboBox1.addFocusListener(new java.awt.event.FocusAdapter() {

    public void focusLost(java.awt.event.FocusEvent evt) {

    jComboBox1FocusLost(evt);

    }

    });

    jComboBox1.addActionListener(new java.awt.event.ActionListener() {

    public void actionPerformed(java.awt.event.ActionEvent evt) {

    jComboBox1ActionPerformed(evt);

    }

    });

    jPanel3.add(jComboBox1, new

    org.netbeans.lib.awtextra.AbsoluteConstraints(160, 60, 170, 30));

    jTextField3.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N

    jTextField3.addActionListener(new java.awt.event.ActionListener() {

    public void actionPerformed(java.awt.event.ActionEvent evt) {

    jTextField3ActionPerformed(evt);

    }

    });

    jPanel3.add(jTextField3, new

    org.netbeans.lib.awtextra.AbsoluteConstraints(440, 100, 160, 30));

    jTextField4.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N

    jTextField4.addActionListener(new java.awt.event.ActionListener() {

    public void actionPerformed(java.awt.event.ActionEvent evt) {

  • 76

    jTextField4ActionPerformed(evt);

    }

    });

    jPanel3.add(jTextField4, new

    org.netbeans.lib.awtextra.AbsoluteConstraints(440, 140, 160, 30));

    jTable1.setFont(new java.awt.Font("Times New Roman", 0, 12)); // NOI18N

    jTable1.setModel(new javax.swing.table.DefaultTableModel(

    new Object [][] {

    {null, null, null, null, null, null},

    {null, null, null, null, null, null},

    {null, null, null, null, null, null},

    {null, null, null, null, null, null}

    },

    new String [] {

    "No Bukti Kas Masuk", "Jenis Pemasukan", "Tanggal", "Dari",

    "Sebesar", "Memo"

    }

    ) {

    boolean[] canEdit = new boolean [] {

    false, false, false, false, true, true

    };

    public boolean isCellEditable(int rowIndex, int columnIndex) {

    return canEdit [columnIndex];

    }

    });

  • 77

    jTable1.addMouseListener(new java.awt.event.MouseAdapter() {

    public void mouseClicked(java.awt.event.MouseEvent evt) {

    jTable1MouseClicked(evt);

    }

    });

    jScrollPane1.setViewportView(jTable1);

    jPanel3.add(jScrollPane1, new

    org.netbeans.lib.awtextra.AbsoluteConstraints(20, 370, 1060, 104));

    jbsimpan.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N

    jbsimpan.setText("Simpan");

    jbsimpan.addActionListener(new java.awt.event.ActionListener() {

    public void actionPerformed(java.awt.event.ActionEvent evt) {

    jbsimpanActionPerformed(evt);

    }

    });

    jPanel3.add(jbsimpan, new

    org.netbeans.lib.awtextra.AbsoluteConstraints(230, 250, 80, -1));

    jbbatal.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N

    jbbatal.setText("Batal");

    jbbatal.addActionListener(new java.awt.event.ActionListener() {

    public void actionPerformed(java.awt.event.ActionEvent evt) {

    jbbatalActionPerformed(evt);

    }

    });

  • 78

    jPanel3.add(jbbatal, new org.netbeans.lib.awtextra.AbsoluteConstraints(340,

    250, 80, -1));

    jbubah.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N

    jbubah.setText("Ubah");

    jbubah.addActionListener(new java.awt.event.ActionListener() {

    public void actionPerformed(java.awt.event.ActionEvent evt) {

    jbubahActionPerformed(evt);

    }

    });

    jPanel3.add(jbubah, new org.netbeans.lib.awtextra.AbsoluteConstraints(450,

    250, 80, -1));

    jbcari.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N

    jbcari.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cari

    kecil.png"))); // NOI18N

    jbcari.setText("Cari");

    jbcari.addActionListener(new java.awt.event.ActionListener() {

    public void actionPerformed(java.awt.event.ActionEvent evt) {

    jbcariActionPerformed(evt);

    }

    });

    jPanel3.add(jbcari, new org.netbeans.lib.awtextra.AbsoluteConstraints(860,

    310, 95, 40));

    jbhapus.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N

    jbhapus.setIcon(new javax.swing.ImageIcon(getClass().getResource("/delete

    kecil copy.png"))); // NOI18N

  • 79

    jbhapus.setText("Hapus");

    jbhapus.addActionListener(new java.awt.event.ActionListener() {

    public void actionPerformed(java.awt.event.ActionEvent evt) {

    jbhapusActionPerformed(evt);

    }

    });

    jPanel3.add(jbhapus, new

    org.netbeans.lib.awtextra.AbsoluteConstraints(980, 310, -1, 40));

    jLabel9.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N

    jLabel9.setText("Memo");

    jPanel3.add(jLabel9, new org.netbeans.lib.awtextra.AbsoluteConstraints(20,

    180, 140, 30));

    jTextField5.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N

    jTextField5.addActionListener(new java.awt.event.ActionListener() {

    public void actionPerformed(java.awt.event.ActionEvent evt) {

    jTextField5ActionPerformed(evt);

    }

    });

    jPanel3.add(jTextField5, new

    org.netbeans.lib.awtextra.AbsoluteConstraints(160, 180, 440, 30));

    jDateChooser1.setDateFormatString("yyyy-MM-dd");

    jDateChooser1.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N

    jPanel3.add(jDateChooser1, new

    org.netbeans.lib.awtextra.AbsoluteConstraints(440, 60, 160, 30));

  • 80

    jbkeluar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/exit

    kecil.png"))); // NOI18N

    jbkeluar.addActionListener(new java.awt.event.ActionListener() {

    public void actionPerformed(java.awt.event.ActionEvent evt) {

    jbkeluarActionPerformed(evt);

    }

    });

    jPanel3.add(jbkeluar, new

    org.netbeans.lib.awtextra.AbsoluteConstraints(1060, 10, 23, 25));

    jlevel.setFont(new java.awt.Font("Tahoma", 2, 11)); // NOI18N

    jlevel.setText("ha");

    jPanel3.add(jlevel, new org.netbeans.lib.awtextra.AbsoluteConstraints(20,

    570, -1, -1));

    jbcetak.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N

    jbcetak.setText("Cetak");

    jbcetak.addActionListener(new java.awt.event.ActionListener() {

    public void actionPerformed(java.awt.event.ActionEvent evt) {

    jbcetakActionPerformed(evt);

    }

    });

    jPanel3.add(jbcetak, new org.netbeans.lib.awtextra.AbsoluteConstraints(990,

    500, 90, 30));

    jLabel8.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N

    jLabel8.setText("No ID");

  • 81

    jPanel3.add(jLabel8, new org.netbeans.lib.awtextra.AbsoluteConstraints(20,

    100, 140, 31));

    jTextField6.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N

    jTextField6.addActionListener(new java.awt.event.ActionListener() {

    public void actionPerformed(java.awt.event.ActionEvent evt) {

    jTextField6ActionPerformed(evt);

    }

    });

    jPanel3.add(jTextField6, new

    org.netbeans.lib.awtextra.AbsoluteConstraints(160, 100, 119, 30));

    jButton1.setFont(new java.awt.Font("Tahoma", 0, 8)); // NOI18N

    jButton1.setText("OK");

    jButton1.addActionListener(new java.awt.event.ActionListener() {

    public void actionPerformed(java.awt.event.ActionEvent evt) {

    jButton1ActionPerformed(evt);

    }

    });

    jPanel3.add(jButton1, new

    org.netbeans.lib.awtextra.AbsoluteConstraints(280, 100, 45, 30));

    jLabel6.setFont(new java.awt.Font("Bodoni MT", 0, 33)); // NOI18N

    jLabel6.setText("Form Data Penerimaan Kas");

    jLabel11.setFont(new java.awt.Font("Arial Black", 0, 27)); // NOI18N

    jLabel11.setText("MADRASAH TSANAWIYAH (MTs)");

  • 82

    javax.swing.GroupLayout jPanel4Layout = new

    javax.swing.GroupLayout(jPanel4);

    jPanel4.setLayout(jPanel4Layout);

    jPanel4Layout.setHorizontalGroup(

    jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI

    NG)

    .addGroup(jPanel4Layout.createSequentialGroup()

    .addGap(18, 18, 18)

    .addComponent(jLabel7,

    javax.swing.GroupLayout.PREFERRED_SIZE, 199,

    javax.swing.GroupLayout.PREFERRED_SIZE)

    .addGap(47, 47, 47)

    .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignm

    ent.LEADING)

    .addComponent(jLabel10)

    .addGroup(jPanel4Layout.createSequentialGroup()

    .addGap(70, 70, 70)

    .addComponent(jLabel11))

    .addGroup(jPanel4Layout.createSequentialGroup()

    .addGap(110, 110, 110)

    .addComponent(jLabel6)))

    .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,

    Short.MAX_VALUE))

    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING,

    jPanel4Layout.createSequentialGroup()

  • 83

    .addGap(0, 0, Short.MAX_VALUE)

    .addComponent(jPanel3,

    javax.swing.GroupLayout.PREFERRED_SIZE, 1101,

    javax.swing.GroupLayout.PREFERRED_SIZE))

    );

    jPanel4Layout.setVerticalGroup(

    jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI

    NG)

    .addGroup(jPanel4Layout.createSequentialGroup()

    .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignm

    ent.LEADING)

    .addComponent(jLabel7,

    javax.swing.GroupLayout.Alignment.TRAILING,

    javax.swing.GroupLayout.PREFERRED_SIZE, 142,

    javax.swing.GroupLayout.PREFERRED_SIZE)

    .addGroup(jPanel4Layout.createSequentialGroup()

    .addGap(11, 11, 11)

    .addComponent(jLabel10)

    .addGap(6, 6, 6)

    .addComponent(jLabel11)

    .addGap(6, 6, 6)

    .addComponent(jLabel6)))

    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

  • 84

    .addComponent(jPanel3,

    javax.swing.GroupLayout.PREFERRED_SIZE, 591,

    javax.swing.GroupLayout.PREFERRED_SIZE)

    .addContainerGap())

    );

    javax.swing.GroupLayout jPanel2Layout = new

    javax.swing.GroupLayout(jPanel2);

    jPanel2.setLayout(jPanel2Layout);

    jPanel2Layout.setHorizontalGroup(

    jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI

    NG)

    .addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE,

    javax.swing.GroupLayout.DEFAULT_SIZE,

    javax.swing.GroupLayout.PREFERRED_SIZE)

    );

    jPanel2Layout.setVerticalGroup(

    jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI

    NG)

    .addGroup(jPanel2Layout.createSequentialGroup()

    .addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE,

    javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

    .addContainerGap())

    );

  • 85

    javax.swing.GroupLayout jPanel1Layout = new

    javax.swing.GroupLayout(jPanel1);

    jPanel1.setLayout(jPanel1Layout);

    jPanel1Layout.setHorizontalGroup(

    jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI

    NG)

    .addGroup(jPanel1Layout.createSequentialGroup()

    .addComponent(jPanel2,

    javax.swing.GroupLayout.PREFERRED_SIZE,

    javax.swing.GroupLayout.DEFAULT_SIZE,

    javax.swing.GroupLayout.PREFERRED_SIZE)

    .addGap(0, 0, Short.MAX_VALUE))

    );

    jPanel1Layout.setVerticalGroup(

    jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI

    NG)

    .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE,

    javax.swing.GroupLayout.DEFAULT_SIZE,

    javax.swing.GroupLayout.PREFERRED_SIZE)

    );

    javax.swing.GroupLayout layout = new

    javax.swing.GroupLayout(getContentPane());

    getContentPane().setLayout(layout);

    layout.setHorizontalGroup(

  • 86

    layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

    .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE,

    javax.swing.GroupLayout.DEFAULT_SIZE,

    javax.swing.GroupLayout.PREFERRED_SIZE)

    );

    layout.setVerticalGroup(

    layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

    .addGroup(layout.createSequentialGroup()

    .addComponent(jPanel1,

    javax.swing.GroupLayout.PREFERRED_SIZE,

    javax.swing.GroupLayout.DEFAULT_SIZE,

    javax.swing.GroupLayout.PREFERRED_SIZE)

    .addGap(0, 0, Short.MAX_VALUE))

    );

    pack();

    }//

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

    // TODO add your handling code here:

    try {

    String s = jTextField6.getText();

    //JOptionPane.showMessageDialog(this, s);

    kon.rs = kon.st.executeQuery("select * from data_siswa where id_siswa='"

    + s + "' ");

  • 87

    if (kon.rs.next()) { //jika ditemukan

    //JOptionPane.showMessageDialog(this, "Data Ditemukan");

    // String date = (kon.rs.getString(3));

    jTextField6.setText(kon.rs.getString(1));

    //jComboBox1.setSelectedItem(kon.rs.getString(2));

    //Date date2 = new SimpleDateFormat("yyy-MM-DD").parse(date);

    //jDateChooser1.setDate(date2);

    jTextField3.setText(kon.rs.getString(2));

    } else {

    // JOptionPane.showMessageDialog(this,"Data Tidak Ditemukan");

    kon.rs = kon.st.executeQuery("select * from donatur where

    id_donatur='" + s + "' ");

    if (kon.rs.next()) { //jika ditemukan

    //JOptionPane.showMessageDialog(this, "Data Ditemukan");

    // String date = (kon.rs.getString(3));

    jTextField6.setText(kon.rs.getString(1));

    //jComboBox1.setSelectedItem(kon.rs.getString(2));

    //Date date2 = new SimpleDateFormat("yyy-MM-DD").parse(date);

    //jDateChooser1.setDate(date2);

    jTextField3.setText(kon.rs.getString(2));

    }

    }

    } catch (Exception s) {

    JOptionPane.showMessageDialog(this, s);

  • 88

    }

    }

    private void jTextField6ActionPerformed(java.awt.event.ActionEvent evt) {

    // TODO add your handling code here:

    }

    private void jbcetakActionPerformed(java.awt.event.ActionEvent evt) {

    // TODO add your handling code here:

    try {

    String FileReport = "src/kwitansi.jasper";

    HashMap parameter = new HashMap();

    parameter.put("no", this.No);

    File file = new File(FileReport);

    JasperReport jr = (JasperReport) JRLoader.loadObject(file);

    JasperPrint jrp = JasperFillManager.fillReport(jr, parameter,

    kon.getConnection());

    JasperViewer.viewReport(jrp, false);

    } catch (Exception ex) {

    ex.printStackTrace();

    }

    }

    private void jbkeluarActionPerformed(java.awt.event.ActionEvent evt) {

    // TODO add your handling code here:

    dispose();

    }

    private void jTextField5ActionPerformed(java.awt.event.ActionEvent evt) {

  • 89

    // TODO add your handling code here:

    }

    private void jbhapusActionPerformed(java.awt.event.ActionEvent evt) {

    // TODO add your handling code here:

    jbsimpan.setEnabled(true);

    jbubah.setEnabled(true); //jika button ingin menghilng ganti jadi setVisible

    jbhapus.setEnabled(true);

    jbbatal.setEnabled(true);

    jbkeluar.setEnabled(true);

    jbcari.setEnabled(true);

    jbcetak.setEnabled(true);

    try {

    kon.st.execute("delete from kas_masuk where no_km='" +

    jTextField1.getText() + "'");

    JOptionPane.showMessageDialog(this, "Data Dihapus");

    } catch (Exception v) {

    JOptionPane.showMessageDialog(this, v);

    }

    }

    private void jbcariActionPerformed(java.awt.event.ActionEvent evt) {

    // TODO add your handling code here:

    try {

    String s = JOptionPane.showInputDialog(this, "Cari Data Kas Masuk",

    "Pencarian", JOptionPane.QUESTION_MESSAGE);

    //JOptionPane.showMessageDialog(this, s);

  • 90

    kon.rs = kon.st.executeQuery("select * from kas_masuk where no_km='"

    + s + "'");

    if (kon.rs.next()) { //jika ditemukan

    //JOptionPane.showMessageDialog(this, "Data Ditemukan");

    String date = (kon.rs.getString(3));

    jTextField1.setText(kon.rs.getString(1));

    jComboBox1.setSelectedItem(kon.rs.getString(2));

    Date date2 = new SimpleDateFormat("yyy-MM-DD").parse(date);

    jDateChooser1.setDate(date2);

    jTextField3.setText(kon.rs.getString(4));

    jTextField4.setText(kon.rs.getString(5));

    jTextField5.setText(kon.rs.getString(6));

    } else {

    JOptionPane.showMessageDialog(this, "Data Tidak Ditemukan");

    }

    } catch (Exception s) {

    }

    jbsimpan.setEnabled(true);

    jbubah.setEnabled(true); //jika button ingin menghilng ganti jadi setVisible

    jbhapus.setEnabled(true);

    jbbatal.setEnabled(true);

    jbkeluar.setEnabled(true);

    jbcari.setEnabled(true);

    jbcetak.setEnabled(true);

    }

  • 91

    private void jbubahActionPerformed(java.awt.event.ActionEvent evt) {

    // TODO add your handling code here:

    jTextField1.requestFocus();

    jbsimpan.setEnabled(true);

    jbubah.setEnabled(true); //jika button ingin menghilng ganti jadi setVisible

    jbhapus.setEnabled(true);

    jbbatal.setEnabled(true);

    jbkeluar.setEnabled(true);

    jbcari.setEnabled(true);

    jbcetak.setEnabled(true);

    }

    private void jbbatalActionPerformed(java.awt.event.ActionEvent evt) {

    // TODO add your handling code here:

    jbsimpan.setEnabled(true);

    jbubah.setEnabled(true); //jika button ingin menghilng ganti jadi setVisible

    jbhapus.setEnabled(true);

    jbbatal.setEnabled(true);

    jbkeluar.setEnabled(true);

    jbcari.setEnabled(true);

    jbcetak.setEnabled(true);

    bersih();

    }

    private void jbsimpanActionPerformed(java.awt.event.ActionEvent evt) {

    // TODO add your handling code here:

    if (jTextField1.getText().equals("")) {

  • 92

    JOptionPane.showMessageDialog(this, "Data Belum Terisi");

    } else {

    jbsimpan.setEnabled(true);

    jbubah.setEnabled(true); //jika button ingin menghilng ganti jadi

    setVisible

    jbhapus.setEnabled(true);

    jbbatal.setEnabled(true);

    jbkeluar.setEnabled(true);

    jbcari.setEnabled(true);

    jbcetak.setEnabled(true);

    Date ss = jDateChooser1.getDate();

    SimpleDateFormat ttg = new SimpleDateFormat("yyyy-MM-dd");

    String vv = ttg.format(ss);

    String us = "tes";

    try {

    String s = "insert into kas_masuk values('" + jTextField1.getText() +

    "','" + jComboBox1.getSelectedItem() + "','" + vv + "','" + jTextField3.getText() +

    "','" + jTextField4.getText() + "','" + jTextField5.getText() + "','" + us + "','" +

    jTextField6.getText() + "')";

    kon.st.execute(s);

    } catch (Exception v) {

    //JOptionPane.showMessageDialog(this, v);

    }

    String no = no_jurnal_auto();

  • 93

    try {

    String s2 = "INSERT INTO `jurnal` (`no_jurnal`, `tanggal`, `no_ref`,

    `id_user`) VALUES ('" + no + "',now(),'" + jTextField1.getText() + "','" + us +

    "')";

    System.out.println(s2);

    kon.st.execute(s2);

    String s3 = "insert into detail_jurnal values ('" + no + "','5-111','" +

    jTextField4.getText() + "','0'),('" + no + "','1-111','0','" + jTextField4.getText() +

    "')";

    kon.st.execute(s3);

    } catch (Exception k) {

    System.out.println(k.getMessage());

    JOptionPane.showMessageDialog(this, k);

    }

    try {

    kon.st.execute("update kas_masuk set jumlah_km = '" +

    jTextField4.getText() + "',tgl_km = '" + vv + "',sumber_km = '" +

    jTextField3.getText() + "', memo = '" + jTextField5.getText() + "' where no_km =

    '" + jTextField1.getText() + "'");

    } catch (Exception b) {

    }

    JOptionPane.showMessageDialog(this, "Data Tersimpan");

    jTextField1.setText(no_kas_auto());

    jTextField3.setText("");

    jTextField4.setText("");

  • 94

    jTextField5.setText("");

    bersih();

    regrid();

    }

    }

    private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {

    // TODO add your handling code here:

    int row = jTable1.getSelectedRow();

    this.No = jTable1.getModel().getValueAt(row, 0).toString();

    }

    private void jTextField4ActionPerformed(java.awt.event.ActionEvent evt) {

    // TODO add your handling code here:

    }

    private void jTextField3ActionPerformed(java.awt.event.ActionEvent evt) {

    // TODO add your handling code here:

    }

    private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {

    // TODO add your handling code here:

    }

    private void jComboBox1FocusLost(java.awt.event.FocusEvent evt) {

    // TODO add your handling code here:

    //JOptionPane.showMessageDialog(this, "jj");

    }

    private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {

    // TODO add your handling code here:

  • 95

    }

    private void regrid() {

    DefaultTableModel tkas_masuk = new DefaultTableModel();

    tkas_masuk.addColumn("No Bukti Kas Masuk");

    tkas_masuk.addColumn("Jenis Pemasukan");

    tkas_masuk.addColumn("Tanggal");

    tkas_masuk.addColumn("Dari");

    tkas_masuk.addColumn("Sebesar");

    tkas_masuk.addColumn("Memo");

    try {

    kon.rs = kon.st.executeQuery("select * from kas_masuk order by no_km");

    while (kon.rs.next()) {

    tkas_masuk.addRow(new Object[]{

    kon.rs.getString(1),

    kon.rs.getString(2),

    kon.rs.getString(3),

    kon.rs.getString(4),

    kon.rs.getString(5),

    kon.rs.getString(6),});

    }

    } catch (Exception r) {

    JOptionPane.showMessageDialog(this, r);

    }

    jTable1.setModel(tkas_masuk);

    }

  • 96

    private void bersih() {

    jTextField1.setText("");

    jTextField3.setText("");

    jTextField4.setText("");

    jTextField5.setText("");

    }

    /**

    * @param args the command line arguments

    */

    public static void main(String args[]) {

    /* Set the Nimbus look and feel */

    //

    /* 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 ("Nimbus".equals(info.getName())) {

    javax.swing.UIManager.setLookAndFeel(info.getClassName());

    break;

    }

  • 97

    }

    } catch (ClassNotFoundException ex) {

    java.util.logging.Logger.getLogger(fkas_masuk.class.getName()).log(java.util.log

    ging.Level.SEVERE, null, ex);

    } catch (InstantiationException ex) {

    java.util.logging.Logger.getLogger(fkas_masuk.class.getName()).log(java.util.log

    ging.Level.SEVERE, null, ex);

    } catch (IllegalAccessException ex) {

    java.util.logging.Logger.getLogger(fkas_masuk.class.getName()).log(java.util.log

    ging.Level.SEVERE, null, ex);

    } catch (javax.swing.UnsupportedLookAndFeelException ex) {

    java.util.logging.Logger.getLogger(fkas_masuk.class.getName()).log(java.util.log

    ging.Level.SEVERE, null, ex);

    }

    //

    /* Create and display the form */

    java.awt.EventQueue.invokeLater(new Runnable() {

    public void run() {

    new fkas_masuk("").setVisible(true);

    }

    });

    }

    // Variables declaration - do not modify

    private javax.swing.JButton jButton1;

    private javax.swing.JComboBox jComboBox1;

  • 98

    private com.toedter.calendar.JDateChooser jDateChooser1;

    private javax.swing.JLabel jLabel1;

    private javax.swing.JLabel jLabel10;

    private javax.swing.JLabel jLabel11;

    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.JLabel jLabel9;

    private javax.swing.JPanel jPanel1;

    private javax.swing.JPanel jPanel2;

    private javax.swing.JPanel jPanel3;

    private javax.swing.JPanel jPanel4;

    private javax.swing.JScrollPane jScrollPane1;

    private javax.swing.JTable jTable1;

    private javax.swing.JTextField jTextField1;

    private javax.swing.JTextField jTextField3;

    private javax.swing.JTextField jTextField4;

    private javax.swing.JTextField jTextField5;

    private javax.swing.JTextField jTextField6;

    private javax.swing.JButton jbbatal;

    private javax.swing.JButton jbcari;

  • 99

    private javax.swing.JButton jbcetak;

    private javax.swing.JButton jbhapus;

    private javax.swing.JButton jbkeluar;

    private javax.swing.JButton jbsimpan;

    private javax.swing.JButton jbubah;

    private javax.swing.JLabel jlevel;

    // End of variables declaration

    }

    3.5.2. Blackbox Testing

    1. Pengujian Terhadap Halaman Login Admin

    Tabel III.13.

    Hasil Pengujian Blackbox Testing Halaman Login Admin

    No Skenario Pengujian Test Case Hasil yang

    Diharapkan

    Hasil

    Pengujian Kesimpulan

    1 Username dan

    password tidak diisi

    kemudian klik

    tombol login

    Username:

    (kosong)

    Password:

    (kosong)

    Sistem akan

    menolak dan

    menampilkan

    Pesan “Login

    Gagal !!”

    Sesuai

    Harapan Valid

    2 Menginput username

    dan password tidak

    diisi kemudian klik

    tombol login

    Username:

    tata.usaha

    Password:

    (kosong)

    Sistem akan

    menolak dan

    menampilkan

    Pesan “Login

    Gagal !!”

    Sesuai

    Harapan Valid

    3 Username tidak diisi

    atau kosong dan

    password diisi

    kemudian klik

    tombol login

    Username:

    (kosong)

    Password:

    123

    Sistem akan

    menolak dan

    menampilkan

    Pesan “Login

    Gagal !!”

    Sesuai

    Harapan Valid

    4 Menginput dengan

    kondisi salah satu

    data benar dan salah

    satu data salah

    kemudian klik

    tombol login

    Username:

    tata.usaha

    Password:

    321(salah)

    Sistem akan

    menolak dan

    menampilkan

    Pesan “Login

    Gagal !!”

    Sesuai

    Harapan Valid

  • 100

    5 Menginput

    Username dan

    password yang benar

    kemudian klik

    tombol login

    Username:

    tata.usaha

    Password:

    123(benar)

    Sistem

    menerima

    akses login

    dan kemudian

    masuk ke

    menu utama

    sebagai admin

    Sesuai

    Harapan Valid

    2. Pengujian Terhadap Form Penerimaan Kas

    Tabel III.14.

    Hasil Pengujian Blackbox Testing Form Penerimaan Kas

    No Skenario Pengujian Test Case Hasil yang

    Diharapkan

    Hasil

    Pengujian Kesimpulan

    1 Klik transaksi

    penerimaan kas lalu

    no bukti kas masuk

    dan tanggal

    dikosongkan

    kemudian klik

    tombol simpan

    No bukti

    kas masuk:

    (kosong)

    Tanggal:

    (kosong)

    Sistem tidak

    menyimpan data

    dan akan

    menampilkan

    pesan “Data

    Belum Terisi”

    Sesuai

    Harapan Valid

    2 Klik transaksi

    penerimaan kas lalu

    no bukti kas masuk

    diisi dan tanggal

    dikosongkan

    kemudian klik

    tombol simpan

    No bukti

    kas masuk:

    KM001

    Tanggal:

    (kosong)

    Sistem tidak

    menyimpan data

    dan akan

    menampilkan

    pesan “Data

    Belum Terisi”

    Sesuai

    Harapan Valid

    3 Klik transaksi

    penerimaan kas lalu

    masukkan no bukti

    kas masuk dan

    tanggal kemudian

    klik tombol simpan

    No bukti

    kas masuk:

    KM001

    Tanggal:

    2019-07-01

    Sistem akan

    menyimpan data

    dan akan

    menampilkan

    pesan “Data

    Tersimpan”

    Sesuai

    Harapan Valid

    3. Pengujian Terhadap Form Pengeluaran Kas

    Tabel III.15.

    Hasil Pengujian Blackbox Testing Form Pengeluara Kas

    No Skenario Pengujian Test Case Hasil yang

    Diharapkan

    Hasil

    Pengujian Kesimpulan

    1 Klik transaksi

    pengeluaran kas lalu

    no bukti kas keluar

    dan tanggal

    No bukti

    kas keluar:

    (kosong)

    Sistem tidak

    menyimpan data

    dan akan

    menampilkan

    Sesuai

    Harapan Valid

  • 101

    3.5.3. Spesifikasi Hardware dan Software

    Tabel III.14.

    Spesifikasi Hardware dan Software

    Kebutuhan Keterangan

    Sistem Windows 10 64 bit

    Processor AMD E1-1200 APU with Radeon(tm) HD

    Graphics 1.40 GHz

    RAM 2,00 GB (1,59 GB usable)

    Harddisk 100 GB

    Monitor 15.6”

    Keyboard Samsung

    Printer Canon TS200 Series

    Mouse Avan

    Software

    Kebutuhan menjalankan aplikasi secara lokal:

    Bahasa Script Programming : Java V8

    Web Server : Apache V3.2.1

    DBMS : MySQL

    dikosongkan

    kemudian klik

    tombol simpan

    Tanggal:

    (kosong)

    pesan “Data

    Belum Terisi”

    2 Klik transaksi

    pengeluaran kas lalu

    no bukti kas keluar

    diisi dan tanggal

    dikosongkan

    kemudian klik

    tombol simpan

    No bukti

    kas keluar:

    KK001

    Tanggal:

    (kosong)

    Sistem tidak

    menyimpan data

    dan akan

    menampilkan

    pesan “Data

    Belum Terisi”

    Sesuai

    Harapan Valid

    3 Klik transaksi

    pengeluaran kas lalu

    masukkan no bukti

    kas keluar dan

    tanggal kemudian

    klik tombol simpan

    No bukti

    kas masuk:

    KK001

    Tanggal:

    2019-07-04

    Sistem akan

    menyimpan data

    dan akan

    menampilkan

    pesan “Data

    Tersimpan”

    Sesuai

    Harapan Valid