BAB III PEMBAHASAN - repository.bsi.ac.id · Kantor Desa Kosar Kecamatan Cipeundeuy Kabupaten...

Post on 30-Nov-2020

32 views 2 download

Transcript of BAB III PEMBAHASAN - repository.bsi.ac.id · Kantor Desa Kosar Kecamatan Cipeundeuy Kabupaten...

35

BAB III

PEMBAHASAN

3.1. Tinjauan Perusahaan

Pada sub bab ini penulis menjelaskan prosedur sistem berjalan pada Kantor Desa

Kosar Kecamatan Cipeundeuy Kabupaten Subang. Prosedur tersebut dimulai dari

prosedur penerimaan kas, prosedur pengeluaran kas, dan prosedur laporan keuangan dan

dalam sub bab ini juga menjelaskan sejarah perusahaan dan struktur organisasi pada

Kantor Desa Kosar Kecamatan Cipeundeuy Kabupaten Subang.

3.1.1. Sejarah Perusahaan

Desa Kosar merupakan sebuah desa yang terletak di salah satu kota Subang Jawa

Barat, tepatnya di kecamatan Cipeundeuy Kabupaten Subang. Desa Kosar sendiri terletak

pada bagian utara kota Subang. Sejarah singkat terbentuknya atau terbuat nama Desa

Kosar , yaitu karena adanya sebuah pohon besar yang tumbuh di desa tersebut dan

memiliki buah yang bernama buah kosar.

Sebelum menjadi bagian dari kecamatan Cipeundeuy, Desa Kosar dulunya

termasuk dalam Kecamatan Pabuaran, pada tahun 2013 Desa Kosar resmi dipindahkann

kecamatannya oleh Bupati pada masa itu ke kecamatan Cipeundeuy sampai saat ini.

36

3.1.2. Struktur Organisasi dan Fungsi

Struktur Organisasi Kantor Desa Nanga Temenang Kecamatan Jongkong

Kabupaten Kapuas Hulu terlihat pada gambar berikut ini.

Sumber : Bagan Stuktur Organisasi Kator Desa Kosar Kec.cipeuneuy, Kab.subang.

Gambar III.1.

Struktur Organisasi

37

Fungsinya dari tiap-tiap bagian diantaranya:

1. Kepala Desa

a. Menjalankan roda pemerintahan desa dengan dasar kebijakan yang telah

ditetapkan bersama dengan BPD (Badan Perwakilan Desa).

b. Mengajukan suatu rancangan tentang peraturan yang akan diterapkan di suatu

desa.

c. Menetapkan peraturan desa yang sudah disetujui bersama dengan BPD

d. Menyusun serta membuat peraturan tentang anggaran pendapatan desa yang

selanjutnya akan dibahas dan ditetapkan bersama-sama dengan BPD.

e. Melakukan pembinaan terhadap masyarakat desa dan juga ekonomi desa.

f. Pembangunan yang hendak dilakukan di desa, lebih dahulu dikoordinasikan dan

dilaksanakan dengan partisipasi semua warga.

g. Mewakili desa baik di luar pengadilan atau di dalam pengadilan serta memiliki

hak menunjuk kuasa hukum sebagai wakil dirinya, tentunya sesuai dengan

perundang- undangan yang berlaku.

h. Melakukan kewajiban dan wewenang kepala desa sesuai dengan peraturan yang

berlaku.

2. Sekretaris

a. Membantu persiapan kepala desa dan melakukan kegiatan administrasi desa.

b. Menyiapkan bahan untuk menyusun laporan penyelenggaraan pemerintahan desa.

c. Apabila kepala desa berhalangan untuk melakukan tugasnya, maka sekretaris

dapat menggantikan.

d. Mempersipakan bahan laporan penyelenggaraan pemerintahan desa.

38

3. Bendahara

a. Bertanggung jawab atas seluruh data keuangan pada Kantor Balai Desa Kosar.

b. Mencatat seluruh data kas keuangan kantor.

c. Sebagai pengambil keputusan kedua untuk persetujuan surat masuk dan keluar.

4. Kaur Umum

a. Membantu sekretaris desa dalam melaksanakan tugas administrasi umum,

kearsipan, tata usaha, inventaris desa, dan menyiapkan segala bahan untuk rapat

dan pembuatan laporan.

b. Menyimpan, menyediakan, dan menyalurkan alat-alat tulis kantor serta

bertanggungjawab dalam memelihara dan perbaikan terhadap perabot atau

perlengkapan kantor.

5. Kaur Ekbank

a. Membantu tugas sekretaris desa dalam mengelola sumber penghasilan desa.

b. Mengelola data administrasi keuangan desa, persiapan bahan untuk membuat APB

desa.

6. Kaur Pemerintah

a. Melaksanakan administrasi kependudukan, mempersiapkan bahan untuk

menyusun rancangan peraturan serta keputusan kepala desa .

b. Melaksanakan administrasi pertanahan dan mencatatat monografi desa.

c. Mempersiapkan bantuan yang bertujuan untuk memperlancar penyelenggaraan

dalam pemeritahan di desa dan melakukan penataan kelembagaan masyarakat.

7. Kaur Kesra

a. Mempersiapkan bahan yang akan dipakai dalam program keagamaan.

39

b. Mempersipakan bahan yang akan dipakai dalam program pemberdayaan

masyarakat dan sosial kemasyarakatan.

c. Mempersiapkan bahan yang akan dipakai dalam perkembangan kehidupan

beragama.

8. Upas

a. Sebagai pelaksana dalam kegiatan administrasi pembangunan.

b. Mempersipakan bantuan untuk kajian perkembangan ekonomi warga masyarakat.

c. Melakukan tugas lain yang diberika atau diperintahkan oleh kepala desa.

9. Operator

a. Memasang, mengoperasikan, dan mengontrol komputer untuk memproses data

bisnis, data ilmiah, data teknik atau data lain menurut petunjuk operasi.

b. Membuat administrasi surat menyurat desa.

3.2. Tinjauan Kasus

3.2.1 Proses Sistem Berjalan

Suatu proses atau tahap-tahapan yang dilakukan sebelum memulai suatu

kegiatan untuk menyelesaikan suatu pekerjaan disebut proses sistem. Sesuai

dengan yang dibahas dalam Tugas Akhir ini, maka proses sistem berjalan yang diambil

dari Kantor Desa Kosar yaitu sistem pembuatan laporan arus kas masuk dan keluar yang

selama ini telah melewati beberapa proses.

Proses bisnis sistem berjalan pembuatan laporan arus kas masuk dan kas

keluar secara umum pada Kantor Desa Kosar adalah :

1. Proses Pengambilan Dana Desa.

40

Kas masuk desa bersumber dari alokasi dana desa yang diajukan setiap tahun sekali.

Kepala desa mendampingi bendahara desa pergi ke Bank BRI untuk pengambilan

Alokasi Dana Desa (ADD) dengan mengisi slip penarikan yang sudah disediakan Bank

BRI. Kepala Desa memberikan dana tersebut kepada Bendahara Desa untuk disimpan

dan mengarsipkan slip penarikan yang asli. Kemudian Bendahara Desa mencatat data

penerimaan dana ke dalam kas masuk.

2. Proses Pengeluaran Dana Kas.

Pada prosedur ini, Bendahara Desa memberikan dana dan rancangan anggaran biaya

kepada kaur umum yang sudah disetujui Kepala Desa untuk biaya yang dibutuhkan,

kemudian bagian kaur umum memberikan bukti pengeluaran kas berupa kwitansi

kepada Bendahara Desa. Bendahara Desa kemudian mencatatnya ke dalam buku kas

keluar dan mengarsipkan kwitansi tersebut.

3. Proses Laporan Keuangan

Bendahara Desa membuat laporan-laporan keuangan yang ada setiap bulannya berupa

laporan buku kas umum (BKU), dan laporan pertanggung jawaban penerimaan dan

pengeluaran. Laporan buku kas umum diketahui Kepala Desa, sedangkan laporan

pertanggungjawaban penerimaan dan pengeluaran tersebut harus diverifikasikan

Sekretaris Desa terlebih dahulu. Setelah Sekretaris memverifikasi laporan

pertanggungjawaban penerima dan pengeluaran tersebut kemudian Bendahara Desa

menyerahkan laporan-laporan tersebut.

3.2.2. Activity Diagram

penggambaran dari activity diagram yang menggambarkan sistem berjalan kas

masuk dan kas keluar untuk setiap prosesnya dapat dilihat pada gambar berikut :

41

a. Proses Penerimaan Kas

Sumber : Hasil Penelitian (2019)

Gambar III.2.

Activity Diagram Proses Penerimaan Kas pada Kantor Desa Kosar

42

b. Proses Pengeluaran Kas

sumber : Hasil Penelitian (2019)

Gambar III.3.

Activity Diagram Proses Pengeluaran pada Kantor Desa Kosar

43

c. Proses Laporan Keuangan

Sumber : Hasil Penelitian (2019)

Gambar III.4.

Activity Diagram Proses Laporan Keuangan Kantor Desa Kosar

3.2.3. Dokumen Masukan

Dokumen masukan adalah segala bentuk dokumen yang berasal dari lingkungan

luar sistem yang berupa dokumen-dokumen yang akan diolah dalam suatu proses agar

dapat menghasilkan keluaran yang diinginkan. Adapun dokumen-dokumen masukan

tersebut adalah sebagai berikut:

44

1. Kwitansi

Nama Dokumen : Kwitansi

Fungsinya : Sebagai bukti dari pengeluaran kas

Sumber : Kaur Umum

Jumlah : Satu lembar

Media : Kertas

Tujuan : Bendahara

Frekuensi : Setiap terjadi pengeluaran kas

2. Slip penarikan

Nama Dokumen : Slip penarikan

Fungsinya : Sebagai bukti dari penarikan kas

Sumber : Bank BRI

Jumlah : Satu lembar

Media : kertas

Tujuan : Bendahara Desa

Frekuensi : Setiap terjadi pengeluaran kas

3.2.4. Dokumen Keluaran

Dokumen keluaran adalah segala bentuk dokumen perusahaan berupa dokumen-

dokumen yang akan mendukung kegiatan manajeman serta merupakan dokumen hasil

pencatatan atau laporan. Adapun dokumen-dokumen keluaran tersebut adalah sebagai

berikut :

1. Rencana Anggaran Biaya

Nama Dokumen : Rencana Anggaran Biaya

45

Fungsinya : Sebagai syarat persetujuan dari rencana anggaran

biaya

Sumber : Bendahara Desa

Jumlah : Satu lembar

Media : kertas

Tujuan : Kepala Desa

Frekuensi : Setiap terjadi perencanaan anggaran biaya

2. Buku Kas Umum

Nama Dokumen : Buku Kas Umum

Fungsinya : Sebagai laporan dari kas masuk dan kas keluar

bahan dalam bentuk buku kas umum.

Sumber : Bendahara Desa

Jumlah : Satu lembar

Media : kertas

Tujuan : Kepala Desa

Frekuensi : Setiap akhir bulan

3. Laporan Pertanggungjawaban

Nama Dokumen : Laporan Pertanggungjawaban

Fungsinya : Sebagai laporan pertanggungjawaban atas

penerimaan kas dan pengeluaran kas

Sumber : Bendahara Desa

Jumlah : Satu lembar

Media : kertas

Tujuan : Kepala Desa

46

Frekuensi : Setiap akhir bulan

3.2.5. Permasalahan Pokok

Dari hasil pengamatan serta uraian yang telah penulis paparkan di atas,

dapat diambil kesimpulan bahwa dalam proses pelaporan kas masuk dan kas keluar yang

terjadi di Kantor Desa Kosar masih dilakukan secara manual.

Dengan dilakukan proses pengolahan data dalam penerima kas yang masih secara

manual dimana dalam melakukan pembuatan laporan kas masuk dan kas keluar masih

menggunakan kertas sehingga kinerjanya masih belum efektif.

1. Pencatatan dan perekapan data pengeluaran dana dalam buku membutuhkan waktu

lama sehingga laporan keuangan sering terlambat dilaporkan kepada atasan.

2. Sering terjadi kekeliruan dalam pengisian data sehingga data kurang akurat dan

efektif.

3. Proses pencatatan data lama.

4. Membutuhkan ruang penyimpanan data yang luas untuk pengarsipan dokumen dana

kas keluar dan kas masuk.

3.2.6. Pemecahan masalah

Untuk memecahkan masalah yang ada di Kantor Desa Kosar, khususnya pada

bagian yang mengelola pelaporan arus kas masuk dan kas keluar, penulis mengusulkan

untuk menggunakan sistem yang telah terkomputerisasi sehingga permasalahan yang

sering terjadi dapat teratasi dengan baik, dan juga dengan menggunakan sistem

komputerisasi maka dapat mempermudah dalam penggunaanya serta mengefisiensikan

proses kerja agar lebih baik dan cepat. Selain itu, apabila sebuah perusahaan telah

47

menggunakan sistem yang terkomputerisasi dapat meminimalisasi adanya kecurangan

juga kesalahan yang disebabkan oleh kesalahan manusia (human error) .

Penulis mengusulkan sebuah sistem yang terkomputerisasi untuk menyelesaikan

atau mengatasi permasalahan yang ada pada kantor desa Kosar. Aplikasi berbasis desktop

dengan menggunakan bahasa pemrograman Java Netbeans IDE 8.1 media penyimpanan

menggunakan XAMPP yang merupakan database server grafis. Dengan aplikasi tersebut

maka :

1. Pencatatan dan proses perekapan dapat dilakukan dengan cepat, karena laporan dibuat

otomatis dan aplikasi yang merekam setiap transaksi.

2. Pencatatan untuk pengeluaran dan pemasukan dana yang bersifat tetap hanya perlu

diisi sekali, karena untuk transaksi berikutnya cukup mengambil data dari database.

3. Mempercepat proses pencarian dengan memanfaatkan fitur pencarian pada aplikasi.

4. Tidak membutuhkan ruang penyimpanan yang luas, karena data tersimpan dalam

bentuk digital dengan memanfaatkan database.

3.3. Analisa Kebutuhan Software

Berdasarkan dari laporan arus kas masuk dan kas keluar pada Kantor Desa Kosar,

maka tahap berikutnya adalah analisa kenutuhan software, user dapat masuk ke sistem

pengolahan data arus kas usulan yang dapat mengelola data, mengisi transaksi, dan

laporan arus kas yang akan digunakan.

3.3.1. Analisa Kebutuhan

Analisa kebutuhan adalah suatu proses untuk mendapatkan informasi untuk

mendapatkan perangkat lunak yang diinginkan pengguna. Analisa kebutuhan merupakan

satu diantara banyak aktivias kritis pada proses rekayasa kebutuhan perangkat lunak untuk

48

memahami ranah permasalahan dari sistem yang berjalan dan solusi dari sistem yang akan

dibuat.

A.1. Skenario Kebutuhan Admin

a. Melakukan Login

b. Admin mengelola Menu Data Master

1. Menglola Master Akun

2. Mengelola Saldo Dana

c. Admin mengelola Transaksi

1. Mengelola Data Kas Masuk

2. Mengelola Data Kas Keluar

d. Admin mengelola Data Jurnal

A.2. Skenario Kebutuhan Sekretaris Desa

a. Melakukan Login

b. Admin mengelola Menu Data Master

1. Menglola Master Akun

2. Mengelola Saldo Dana

c. Admin mengelola Transaksi

1. Mengelola Data Kas Masuk

2. Mengelola Data Kas Keluar

d. Admin mengelola Data Jurnal

3.3.2. Use Case Diagram

Use Case Diagram adalah gambaran graphical dari beberapa atau semua actor,

use case, dan interaksi diantaranya yang memperkenalkan suatu sistem.

49

1. Use Case Diagram login

Berikut adalah proses login masuk kemenu utama :

Sumber : Hasil Rancangan 2019

Gambar III.5

Use Case Diagram login

Pada Use Case Diagram Login ini menjelaskan tentang langkah – langkah yang dilakukan

admin untuk bisa masuk ke sistem.

Tabel III.1

Deskripsi User Case Login

Use Case Narative Login

Tujuan User melakukan login dan mengisi username, password

dan hak akses agar bisa masuk ke menu utama

Deskripsi Sistem ini memungkinkan user untuk mengakses sistem

yang ada pada menu utama

Skenario Utama

Aktor User

Kondisi Awal User membuka aplikasi pelaporan arus kas masuk dan

keluar

Aksi Aktor Relasi Sistem

50

Aktor memilih

tombol login

Aktor memilih

tombol batal

Sitem akan menampilkan texbox untuk mengisi username

dan password

Sistem akan menutup aplikasi

Kondisi Akhir Jika perintah sesuai maka sistem akan masuk kedalam

aplikasi pelaporan arus kas masuk dan keluar maka actor

dapat melakukan aktivitas didalam sistem

Sumber : Hasil Rancangan 2019

2. Use Case Diagram Sistem Informasi Laporan Arus Kas Masuk dan Kas Keluar.

Berikut adalah proses sistem informasi pelaporan arus kas masuk dan keluar yang ada

pada Kantor Desa Kosar :

Sumber : Hasil Penelitian (2019)

Gambar III.6

Use Case Diagram Sistem Informasi Pelaporan Arus Kas

Pada Use Case Diagram ini menjelaskan proses arus kas pada Kantor Desa Kosar

Kecamatan Cipeundeuy. Subang

51

Tabel III.2

Deskripsi Use Case Diagram Sistem Informasi laporan Arus Kas Masuk dan Kas

Keluar

Use Case Naretive Sistem Informasi laporan Arus Kas Masuk dan Kas Keluar

Tujuan User dapat melakukan pelaporan data yang ada di menu

utama yaitu data master, buku kas dan laporan.

Deskripsi Sistem ini memungkinkan user untuk mengelola sistem

pencatatan kas masuk dan keluar, mulai dari input data

sampai kelaporan.

Skenario Utama

Aktor User

Kondisi Awal User membuka tampilan menu utama pada aplikasi

Aksi Aktor Reaksi Sistem

1. Aktor Memilih

tombol master

2. Aktor memilih

tombol transaksi

3. Aktor memilih

tombol jurnal

4. Aktor memilih

tombol keluaran

Sistem akan menampilkan data master akun dan saldo

dana

Sistem akan menampilkan data kas masuk dan kas keluar

Sistem akan menampilkan data ljurnal

Sistem akan keluar dari menu utama.

Kondisi Akhir Jika perintah sesuai maka sistem akan masuk kedalam

aplikasi pelaporan arus kas maka aktor dapat melakukan

aktivitas didalam sistem.

Sumber : Hasil Penelitian (2019)

52

3.3.3. Activity Diagram

Activity Diagram adalah diagram yang menggambarkan worlflow (aliran kerja)

atau aktivitas dari sebuah sistem atau proses.

1. Activity Diagram Login

Berikut ini adalah proses adminmenjalankan proses login:

Sumber : Hasil Penelitian (2019)

Gambar III.7

Activity Diagram Sistem Usulan Login

Pada proses ini menungkinkan untuk masuk kemenu utama.

53

2. Activity Diagram Sistem Data Master

Berikut ini adalah proses admin masuk kedata master :

Sumber : Hasil Penelitian (2019)

Gambar III.8

Activity Diagram Sistem Data Master

Pada proses ini memungkinkan admin mengelola data yang ada pada menu master.

54

3. Activity Diagram Transaksi

Berikut ini adalah proses admin masuk ke data transaksi :

Sumber : Hasil Penelitian (2019)

Gambar III.9

Activity Diagram Buku Kas

Pada proses ini memungkinkan admin mengakses data yang ada pada menu tansaksi.

55

4. Activity Diagram Jurnal

Pada gambar berikut ini adalah proses admin masuk kemenu jurnal.

Sumber : Hasil Penelitian (2019)

Gambar III.10

Activity Diagram Laporan

Pada gambar ini proses memungkinkan admin untuk mengakses data yang ada pada menu

jurnal.

56

5. Activity Diagram Menu Utama.

Pada gambar berikut ini adalah proses yang ada dimenu utama.

Sumber : Hasil Penelitian (2019)

Gambar III.11

Activity Diagram Menu Utama.

Pada proses ini memungkin admin mengakses data yang ada dimenu utama.

3.4. Desain.

Desain adalah suatu sistem yang berlaku untuk segala jenis perancangan dimana titik

beratnya adalah melihat segala sesuatu persoalan tidak secara terpisah atau tersendiri,

melainkan sebagai suatu kesatuan dimana suatu masalah dengan yang lainnya saling

terkait.

57

3.4.1. Entity Relationship Diagram (ERD)

ERD adalah merupakan salah satu model yang digunakan untuk mendesainkan

database dengan tujuan menggambarkan data yang berelasi pada sebuah database. Berikut

adalah rancangan pelaporan arus kas pada Kantor Desa Kosar Kecamatan Cipeundeuy.

Subang.

Sumber : Hasil Penelitian (2019)

Gambar III.12. ERD

Pada gambar diatas menjelaskan proses desain dari pelaporan arus kas masuk dan kas

keluar

3.4.2. Logical Record Structure (LRS)

LRS adalah representasi dari stuktur record-record pada table yang terbentukdari

hasil antara himpunan entitas. Berikut ini adlah macam-macam pelaporan arus kas pada

kantor desa kosar kecamatan cipeundeuy, subang. Dengan menggunakan LRS

58

Sumber : Hasil Penelitian (2019)

Gambar III.13. IRS

Pada gambar diatas menjelaskan proses desain dari pelaporan arus kas masuk dan kas

keluar.

3.4.3. Spesifikasi File

Adapun spesifikasi file yang penulis gunakan dalam laporan arus kas masuk dan

kas keluar pada Kantor Desa Kosar Kecamatan Cipeundeuy Kabupaten Subang adalah

sebagai berikut :

59

1. Spesifikasi File Data Akun

Nama : Tabel Akun

Akronim : tbdata_akun

Fungsi : Untuk mengolah data akun

Tipe File : File Master

Organisasi File : Index Sequential

Akses File : Random

Record Size : 45

Kunci Field : Kode_Akun

Media File : Harddisk

Software : MySQL

Tabel III.3

Tabel Data Akun

No Elemen Data Akronim Tipe Panjang Keterangan

1 Akun Kode_akun Varchar 10 Primary key

2 Nama akun nama_akun Varchar 20

3 Jenis akun jenis_akun Varchar 15

2. Spesifikasi File Kas Masuk

Nama : Tabel Kas Masuk

Akronim File : tbkas_masuk.sql

Fungsi File : Untuk mengolah data karyawan

Tipe File : File Transaksi

Organisasi File : Index Sequntial

60

Akses File : Random

Panjang Record : 65

Media File : Harddisk

Kunci Field : no_transaksi

Software : MySQL.

Tabel III.4

Tabel Kas Masuk

No Element Data Akronim Tipe Panjang Keterangan

1 No transaksi no_transaksi Varchar 15 Primary Key

2 Tanggal tanggal Date

3 Kode Akun kode_akun Varchar 10

4 Nominal nominal Int 15

5 Keterangan keterangan Varchar 25

3. Spesifikasi File Kas Keluar

Nama : Tabel Kas Keluar

Akronim File : tbkas_keluar.sql

Fungsi : Untuk mengolah data kas keluar

Tipe File : file transaksi

Organisasi File : Index Sequential

Akses File : Random

Panjang Record : 76

Media File : Harddisk

Kunci Field : no_Bukti

61

Software : MySQL

Tabel III.5

Tabel Kas Keluar

No Element Data Akronim Tipe Panjang Keterangan

1 No Bukti no_bukti Varchar 15 Primary Key

2 Tanggal tanggal Date

3 Kode Akun kode_akun Varchar 10

4 Penerima penerima Varchar 25

5 Total dana total_dana Int 11

6 Keterangan keterangan Varchar 15

4. Spesifikasi File Jurnal

Nama : Tabel Jurnal

Akronim : tbjurnal_umum.sql

Fungsi : Untuk mengolah data jurnal

Tipe File : File transksi

Organisasi File : Index Sequential

Akses File : Random

Panjang Record : 88

Media File : Harddisk

Kunci Field : no_jurnal

Software :MySQL

62

Tabel III.6

Tabel Data Jurnal

No Elemen Data Akronim Tipe Panjang Keterangan

1 No jurnal no_Jurnal Varchar 15 Primary key

2 Tanggal tanggal Date

3 Id Transaksi id_trans Varchar 11

4 Kode Akun kode_akun Varchar 15

5 Debet debet Int 11

6 Kredit kredit Int 11

7 Keterangan keterangan Varchar 25

5. Spesifikasi File Saldo Dana

Nama : Tabel Saldo Dana

Akronim File : tbsaldo_dana.sql

Fungsi File : Untuk mengolah data User

Tipe File : File Master

Organisasi File : Index Sequntial

Akses File : Random

Panjang Record : 76

Media File : Harddisk

Kunci Field : id_saldo

Software : MySQL

63

Tabel III.7

Tabel Saldo Dana

No Elemen Data Akronim Tipe Panjang Keterangan

1 Id Saldo id_saldo Varchar 15 Primary key

2 Kode Akun kode_akun Varchar 25

3 Keterangan keterangan Varchar 25

4 Nominal Saldo nomina_lsaldo Int 11

6. Spesifikasi File User

Nama : Tabel User

Akronim File : tbuser.sql

Fungsi File : Untuk mengolah data User

Tipe File : File Master

Organisasi File : Index Sequntial

Akses File : Random

Panjang Record : 95

Media File : Harddisk

Kunci Field : id_pengguna

Software : MySQL

Tabel.III.8

Tabel User

No Elemen Data Akronim Tipe Panjang Keterangan

1 Id Pengguna id_pengguna Int 10 Primary key

2 Nama Lengkap nama_lengkap Varchar 20

3 User Name user_name Varchar 10

64

4 Password Password Varchar 35

5 Hak Akses hak_akses Varchar 20

3.4.4. Sequence Diagram

Diagram sequen menggambarkan kelakuan objek pada use case dengan

mendeskripsikan waktu hidup objek dan massage yang dikiramkan dan diterima antar

objek.

1. Sequence Diagram Login

Berikut adalah proses untuk masuk ke login.

Sumber : hasil Penelitian (2019)

Gamabar III.14

Sequence Diagram Login

Pada gambar diatas menggambarkan cara pengguna mengakses menu login.

65

2. Sequence Diagram Akun

Berikut adalah proses pengolahan data di menu akun.

Sumber : Hasil Penelitian (2019)

Gambar III.15

Sequence Diagram Akun

Pada gambar diatas memungkinkan pengguna mengakses data didalam data akun.

66

3. Sequence Diagram Kas Masuk

Berikut adala proses pegolahan data di menu kas masuk.

Sumber :Hasil Penelitian (2019)

Gambar III.16.

Sequence Diagram Kas Masuk

Pada gambar diatas memungkinkan pengguna mengakses data didalam data kas masuk.

67

6. Sequence Diagram Kas keluar

Berikut adalah proses pengolahan data dimenu kas keluar.

Sumber : Hasil Penelitian (2019)

Gambar III.17.

Sequence Diagram Kas Keluar

pada gambar diatas memungkinkan pengguna mengakses data yang ada data kas keluar.

68

3.4.5. Deployment Diagram

Diagram deployment atau deployment diagram menunjuan konfigurasi komponen

dalam proses eksekusi aplikasi. diagram ini juga digunakan untuk memetakan software ke

processing node.

Sumber : Hasil Penelitian (2019)

Gambar III.18.

Deployment Diagram

Gambar diatas menjelaskan processing perancangan sistem arus kas masuk dan kas keluar

dengan aplikasi Java NetBeans 8.1 ke database MySQL

69

3.4.6. User Interface

Berikut ini merupakan tampilan sistem laporan arus kas masuk dan keluar pada

Kantor Desa Kosar, yaitu :

Sumber :Hasil Rancangan (2019)

Gambar III.19.

Rancangan Tampilan Menu Login

Sumber : Hasil Rancangan (2019)

Gambaran III.20.

Rancanga Tampilan Menu Utama

70

Sumber : Hasil Rancangan (2019)

Gambaran III.21.

Rancanga Tampilan Data Akun

Sumber : Hasil Rancangan (2019)

Gambaran III.22.

Rancanga Tampilan Kas Masuk

71

Sumber : Hasil Rancangan (2019)

Gambaran III.23.

Rancanga Tampilan Kas Kas Keluar

Sumber : Hasil Rancangan (2019)

Gambaran III.24.

Rancanga Tampilan Jurnal.

72

Sumber : Hasil Rancangan (2019)

Gambar III.25.

Rancanga Tampilan Cetak Laporan

3.5. Implementasi

Tahapan implenentasi merupakan tahapan mengimplenentasikan hasil dari analisa

kebuhutuhan dan perancangan sistem yang telah dibuat sebelumnya kedalam kode

program.

3.5.1. Code Generation

1. Code Generation Kas Masuk

package allurkas;

import java.io.File;

import java.sql.Statement;

import java.sql.ResultSet;

import java.sql.SQLException;

73

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.logging.Level;

import java.util.logging.Logger;

import javax.swing.JOptionPane;

import javax.swing.table.DefaultTableModel;

import java.sql.Connection;

import java.sql.Statement;

import java.text.DateFormat;

import java.util.Calendar;

import java.util.HashMap;

import java.util.Locale;

import net.sf.jasperreports.engine.JRException;

import net.sf.jasperreports.engine.JasperCompileManager;

import net.sf.jasperreports.engine.JasperFillManager;

import net.sf.jasperreports.engine.JasperPrint;

import net.sf.jasperreports.engine.JasperReport;

import net.sf.jasperreports.engine.design.JasperDesign;

import net.sf.jasperreports.engine.xml.JRXmlLoader;

import net.sf.jasperreports.view.JasperViewer;

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

74

*/

/**

*

* @author juju

*/

public class kas_in extends javax.swing.JFrame {

String kode,penerima,keterangan;

java.util.Date tglsekarang = new java.util.Date();

private final SimpleDateFormat smpdtfmt = new

SimpleDateFormat("dd/MM/yyyy", Locale.getDefault());

//diatas adalah pengaturan format penulisan, bisa diubah sesuai keinginan.

private final String tanggal = smpdtfmt.format(tglsekarang);

int jml;

Date tgl;

ResultSet resultSet;

Statement statement;

String kode_akun, ubah;

int count, jml_awal;

double jml_total;

koneksi conn;

DefaultTableModel tb;

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

75

/**

* Creates new form Data_Anggaran

*/

allurkas.koneksi1 konek = new allurkas.koneksi1();

public kas_in() {

initComponents();

conn=new koneksi();

setLocationRelativeTo(this);

tabelmodel();

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

Calendar cal = Calendar.getInstance();

DTtgl.setText(dateFormat.format(cal.getTime()));

txtkode.setEditable(false);

setform(false);

no_jurnal.hide();

kredit.hide();

SelectKategori();

txtkode.hide();

}

private void SelectKategori(){

try {

Connection conn = konek.openkoneksi();

76

java.sql.Statement stm = conn.createStatement();

java.sql.ResultSet rs = stm.executeQuery("SELECT * FROM data_akun

ORDER BY kode_akun");

cmbkode.addItem("Pilih");

while(rs.next()){

cmbkode.addItem(rs.getString("nama_akun"));

}

konek.closekoneksi();

} catch (SQLException e) {

JOptionPane.showMessageDialog(null, "Error " + e);

} catch (ClassNotFoundException ex) {

Logger.getLogger(kas_in.class.getName()).log(Level.SEVERE, null, ex);

}

}

/**

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

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

* regenerated by the Form Editor.

*/

@SuppressWarnings("unchecked")

// <editor-fold defaultstate="collapsed" desc="Generated Code">

private void initComponents() {

77

jPanel2 = new javax.swing.JPanel();

jScrollPane1 = new javax.swing.JScrollPane();

tblanggaran = new javax.swing.JTable();

jPanel3 = new javax.swing.JPanel();

jLabel6 = new javax.swing.JLabel();

no_jurnal = new javax.swing.JTextField();

jLabel4 = new javax.swing.JLabel();

txtno = new javax.swing.JTextField();

kredit = new javax.swing.JTextField();

cmbkode = new javax.swing.JComboBox<String>();

txtkode = new javax.swing.JTextField();

jLabel1 = new javax.swing.JLabel();

DTtgl = new javax.swing.JTextField();

txtnominal = new javax.swing.JTextField();

jLabel3 = new javax.swing.JLabel();

jLabel2 = new javax.swing.JLabel();

jScrollPane2 = new javax.swing.JScrollPane();

txtket = new javax.swing.JTextArea();

jLabel5 = new javax.swing.JLabel();

btnbaru = new javax.swing.JButton();

btnsimpan = new javax.swing.JButton();

btnhapus = new javax.swing.JButton();

javax.swing.GroupLayout jPanel2Layout = new

78

javax.swing.GroupLayout(jPanel2);

jPanel2.setLayout(jPanel2Layout);

jPanel2Layout.setHorizontalGroup(

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

NG)

.addGap(0, 100, Short.MAX_VALUE)

);

jPanel2Layout.setVerticalGroup(

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

.addGap(0, 100, Short.MAX_VALUE)

);

setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOS

E);

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

new Object [][] {

{null, null, null, null},

{null, null, null, null},

{null, null, null, null},

{null, null, null, null}

},

new String [] {

"Title 1", "Title 2", "Title 3", "Title 4"

79

}

));

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

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

tblanggaranMouseClicked(evt);

}

});

jScrollPane1.setViewportView(tblanggaran);

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

jPanel3.setBorder(javax.swing.BorderFactory.createEtchedBorder(java.awt.Colo

r.lightGray, null));

jLabel6.setFont(new java.awt.Font("Tahoma", 1, 24)); // NOI18N

jLabel6.setText("KAS MASUK");

javax.swing.GroupLayout jPanel3Layout = new

javax.swing.GroupLayout(jPanel3);

jPanel3.setLayout(jPanel3Layout);

jPanel3Layout.setHorizontalGroup(

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

NG)

80

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

jPanel3Layout.createSequentialGroup()

.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,

Short.MAX_VALUE)

.addComponent(jLabel6)

.addGap(177, 177, 177))

);

jPanel3Layout.setVerticalGroup(

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

NG)

.addGroup(jPanel3Layout.createSequentialGroup()

.addContainerGap()

.addComponent(jLabel6)

.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,

Short.MAX_VALUE))

);

jLabel4.setText("No Kas Masuk");

kredit.setText("0");

cmbkode.addItemListener(new java.awt.event.ItemListener() {

public void itemStateChanged(java.awt.event.ItemEvent evt) {

cmbkodeItemStateChanged(evt);

}

81

});

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

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

cmbkodeActionPerformed(evt);

}

});

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

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

txtkodeActionPerformed(evt);

}

});

jLabel1.setText("Kode Akun");

DTtgl.setEditable(false);

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

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

DTtglActionPerformed(evt);

}

});

jLabel3.setText("Nominal");

jLabel2.setText("Tanggal");

txtket.setColumns(20);

82

txtket.setRows(5);

jScrollPane2.setViewportView(txtket);

jLabel5.setText("Keterangan");

btnbaru.setText("TAMBAH");

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

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

btnbaruActionPerformed(evt);

}

});

btnsimpan.setText("Simpan");

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

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

btnsimpanActionPerformed(evt);

}

});

btnhapus.setText("Hapus");

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

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

btnhapusActionPerformed(evt);

}

83

});

javax.swing.GroupLayout layout = new

javax.swing.GroupLayout(getContentPane());

getContentPane().setLayout(layout);

layout.setHorizontalGroup(

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

.addGroup(layout.createSequentialGroup()

.addContainerGap()

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TR

AILING, false)

.addGroup(layout.createSequentialGroup()

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE

ADING)

.addComponent(jLabel4)

.addComponent(jLabel2)

.addGroup(layout.createSequentialGroup()

.addComponent(jLabel1)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATE

D)

84

.addComponent(txtkode,

javax.swing.GroupLayout.PREFERRED_SIZE,16,

javax.swing.GroupLayout.PREFERRED_SIZE)))

.addGap(144, 144, 144))

.addGroup(layout.createSequentialGroup()

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TR

AILING)

.addComponent(cmbkode,

javax.swing.GroupLayout.Alignment.LEADING,0,

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

.addComponent(txtno))

.addGap(54, 54, 54))

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

layout.createSequentialGroup()

.addComponent(DTtgl)

.addGap(54, 54, 54)))

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE

ADING)

.addComponent(jScrollPane2,

javax.swing.GroupLayout.PREFERRED_SIZE,211,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addGroup(layout.createSequentialGroup()

85

.addComponent(jLabel5)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATE

D)

.addComponent(kredit,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE))

.addGroup(layout.createSequentialGroup()

.addComponent(jLabel3)

.addGap(96, 96, 96)

.addComponent(no_jurnal,

javax.swing.GroupLayout.PREFERRED_SIZE,37,

javax.swing.GroupLayout.PREFERRED_SIZE))

.addComponent(txtnominal,

javax.swing.GroupLayout.PREFERRED_SIZE,201,

javax.swing.GroupLayout.PREFERRED_SIZE))

.addContainerGap(50, Short.MAX_VALUE))

.addGroup(layout.createSequentialGroup()

.addGap(109, 109, 109)

.addComponent(btnbaru)

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

.addComponent(btnsimpan)

86

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATE

D)

.addComponent(btnhapus)

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

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

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

.addGroup(layout.createSequentialGroup()

.addContainerGap()

.addComponent(jScrollPane1)

.addContainerGap())

);

layout.setVerticalGroup(

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

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

layout.createSequentialGroup()

.addComponent(jPanel3,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(18, 18, Short.MAX_VALUE)

87

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE

ADING)

.addGroup(layout.createSequentialGroup()

.addComponent(jLabel4)

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

.addComponent(txtno,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(12, 12, 12)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BA

SELINE)

.addComponent(jLabel1)

.addComponent(txtkode,

javax.swing.GroupLayout.PREFERRED_SIZE,10,

javax.swing.GroupLayout.PREFERRED_SIZE))

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

.addComponent(cmbkode,

javax.swing.GroupLayout.PREFERRED_SIZE,

88

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATE

D)

.addComponent(jLabel2)

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

.addComponent(DTtgl,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE))

.addGroup(layout.createSequentialGroup()

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TR

AILING)

.addComponent(jLabel3)

.addComponent(no_jurnal,

javax.swing.GroupLayout.PREFERRED_SIZE,8,

javax.swing.GroupLayout.PREFERRED_SIZE))

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

.addComponent(txtnominal,

javax.swing.GroupLayout.PREFERRED_SIZE,

89

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(9, 9, 9)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BA

SELINE)

.addComponent(jLabel5)

.addComponent(kredit,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE))

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

.addComponent(jScrollPane2,

javax.swing.GroupLayout.PREFERRED_SIZE,72,

javax.swing.GroupLayout.PREFERRED_SIZE)))

.addGap(29, 29, 29)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BA

SELINE)

.addComponent(btnbaru)

.addComponent(btnsimpan)

.addComponent(btnhapus))

.addGap(18, 18, 18)

90

.addComponent(jScrollPane1,

javax.swing.GroupLayout.PREFERRED_SIZE,245,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(66, 66, 66))

);

setSize(new java.awt.Dimension(523, 615));

setLocationRelativeTo(null);

}// </editor-fold>

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

int row = tblanggaran.getSelectedRow();

String row_id = (tblanggaran.getModel().getValueAt(row, 0).toString());

txtno.setText(row_id);

btnhapus.setEnabled(true);

}

private void cmbkodeItemStateChanged(java.awt.event.ItemEvent evt) {

String nm_kategori = cmbkode.getSelectedItem().toString();

if(!nm_kategori.equals("")){

try {

Connection conn = konek.openkoneksi();

java.sql.Statement stm = conn.createStatement();

91

java.sql.ResultSet sql = stm.executeQuery("SELECT kode_akun

FROM data_akun WHERE nama_akun='"+nm_kategori+"'");

if(sql.next()){

txtkode.setText(sql.getString("kode_akun"));

}

konek.closekoneksi();

} catch (SQLException e) {

JOptionPane.showMessageDialog(null, "Error " + e);

} catch (ClassNotFoundException ex) {

Logger.getLogger(kas_in.class.getName()).log(Level.SEVERE, null,ex);

}

}else{

txtkode.setText("");

} // TODO add your handling code here:

}

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

// TODO add your handling code here:

}

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

// TODO add your handling code here:

}

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

92

// TODO add your handling code here:

}

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

// TODO add your handling code here:

if (btnbaru.getText().equals("Batal")) {

setform(false);

bersih();

}

else{

setform(true);

setkode();

setkodejurnal();

}

}

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

// TODO add your handling code here:

if (txtket.getText().equals("")||txtnominal.getText().equals("")) {

JOptionPane.showMessageDialog(this,"Semuah Data Harus Di Isi");

}

else{

simpan();

93

simpanjurnal();

tabelmodel();

JOptionPane.showMessageDialog(null, "Berhasil menyimpan data transaksi");

}

try {

HashMap hash = new HashMap();

hash.put("no_masuk", txtno.getText());

File file = new File("src/Laporan/bukti_kasmasuk.jrxml");

JasperDesign jasperDesign = JRXmlLoader.load(file);

JasperReportjasperReport=

JasperCompileManager.compileReport(jasperDesign);

JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, hash,

konek.openkoneksi());

JasperViewer.viewReport(jasperPrint, false);

}catch (ClassNotFoundException | JRException e) {

JOptionPane.showMessageDialog(null, "Error " + e);

}

this.hide();

bersih();

bersih();

}

94

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

// TODO add your handling code here:

hapus(txtno.getText());

tabelmodel();

setform(true);

}

/**

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

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

95

break;

}

}

} catch (ClassNotFoundException ex) {

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

.Level.SEVERE, null, ex);

} catch (InstantiationException ex) {

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

.Level.SEVERE, null, ex);

} catch (IllegalAccessException ex) {

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

.Level.SEVERE, null, ex);

} catch (javax.swing.UnsupportedLookAndFeelException ex) {

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

.Level.SEVERE, null, ex);

}

//</editor-fold>

//</editor-fold>

//</editor-fold>

//</editor-fold>

96

//</editor-fold>

//</editor-fold>

//</editor-fold>

//</editor-fold>

/* Create and display the form */

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

public void run() {

new kas_in().setVisible(true);

}

});

}

// Variables declaration - do not modify

private javax.swing.JTextField DTtgl;

private javax.swing.JButton btnbaru;

private javax.swing.JButton btnhapus;

private javax.swing.JButton btnsimpan;

private javax.swing.JComboBox<String> cmbkode;

private javax.swing.JLabel jLabel1;

private javax.swing.JLabel jLabel2;

private javax.swing.JLabel jLabel3;

private javax.swing.JLabel jLabel4;

private javax.swing.JLabel jLabel5;

private javax.swing.JLabel jLabel6;

97

private javax.swing.JPanel jPanel2;

private javax.swing.JPanel jPanel3;

private javax.swing.JScrollPane jScrollPane1;

private javax.swing.JScrollPane jScrollPane2;

private javax.swing.JTextField kredit;

private javax.swing.JTextField no_jurnal;

private javax.swing.JTable tblanggaran;

private javax.swing.JTextArea txtket;

private javax.swing.JTextField txtkode;

private javax.swing.JTextField txtno;

private javax.swing.JTextField txtnominal;

// End of variables declaration

public int simpan(){

String sql="insert into kas_masuk "+

"values"+

"('"+txtno.getText()+"', " +

"'"+DTtgl.getText()+"', "+

"'"+txtkode.getText()+"', "+

"'"+txtnominal.getText()+"', "+

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

conn.simpanData(sql);

return 0;

}

public int simpanjurnal(){

98

String sql="insert into jurnal "+

"values"+

"('"+no_jurnal.getText()+"', " +

"'"+DTtgl.getText()+"', "+

"'"+txtno.getText()+"', "+

"'"+txtkode.getText()+"', "+

"'"+txtnominal.getText()+"', "+

"'"+kredit.getText()+"', "+

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

conn.simpanData(sql);

return 0;

}

public int hapus(String kd){

String sql="delete from kas_masuk where no_transaksi = '"+kd+"'";

conn.simpanData(sql);

return 0;

}

public void tabelmodel(){

tb =new DefaultTableModel();

tb.addColumn("NO Kas Masuk");

tb.addColumn("Tanggal");

tb.addColumn("Kode Akun");

tb.addColumn("Nominal");

tb.addColumn("Keterangan");

99

tblanggaran.setModel(tb);

try {

ResultSet res = conn.ambilData("select *from kas_masuk ");

while (res.next()){

tb.addRow(new

Object[]{res.getString(1),res.getString(2),res.getString(3),res.getString(4),res.get

String(5)});

}

tblanggaran.setModel(tb);

} catch (SQLException ex) {

JOptionPane.showMessageDialog(this, ex);

}

}

void setform(boolean flag){

txtket.setEditable(flag);

txtnominal.setEditable(flag);

DTtgl.setEnabled(flag);

btnsimpan.setEnabled(flag);

btnhapus.setEnabled(false);

100

if (flag==true) {

btnbaru.setText("Batal");

}

else{

btnbaru.setText("Baru");

}

}

void bersih(){

txtkode.setText("");

txtket.setText("");

txtnominal.setText("");

}

void setkode(){

try {

ResultSet res = conn.ambilData("select * from kas_masuk order by no_transaksi desc");

if (res.next()) {

String nofak = res.getString("no_transaksi").substring(2);

String AN = "" + (Integer.parseInt(nofak) + 1);

String Nol = "";

if(AN.length()==1)

{Nol = "000";}

101

else if(AN.length()==2)

{Nol = "00";}

else if(AN.length()==3)

{Nol = "0";}

else if(AN.length()==4)

{Nol = "";}

txtno.setText("KM" + Nol + AN);

} else {

txtno.setText("KM0001");

}

}catch(Exception e){

JOptionPane.showMessageDialog(null, e);

}

}

void setkodejurnal(){

try {

ResultSet res = conn.ambilData("select * from jurnal order by no_jurnal

desc");

if (res.next()) {

String nofak = res.getString("no_jurnal").substring(3);

102

String AN = "" + (Integer.parseInt(nofak) + 1);

String Nol = "";

if(AN.length()==1)

{Nol = "00";}

else if(AN.length()==2)

{Nol = "0";}

else if(AN.length()==3)

{Nol = "";}

no_jurnal.setText("JRN" + Nol + AN);

} else {

no_jurnal.setText("JRN001");

}

}catch(Exception e){

JOptionPane.showMessageDialog(null, e);

}

}

}

2. Code Generation Kas Keluar

package allurkas;

import java.io.File;

import java.sql.Statement;

103

import java.sql.ResultSet;

import java.sql.SQLException;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.logging.Level;

import java.util.logging.Logger;

import javax.swing.JOptionPane;

import javax.swing.table.DefaultTableModel;

import java.sql.Connection;

import java.sql.Statement;

import java.text.DateFormat;

import java.util.Calendar;

import java.util.HashMap;

import java.util.Locale;

import net.sf.jasperreports.engine.JRException;

import net.sf.jasperreports.engine.JasperCompileManager;

import net.sf.jasperreports.engine.JasperFillManager;

import net.sf.jasperreports.engine.JasperPrint;

import net.sf.jasperreports.engine.JasperReport;

import net.sf.jasperreports.engine.design.JasperDesign;

import net.sf.jasperreports.engine.xml.JRXmlLoader;

104

import net.sf.jasperreports.view.JasperViewer;

/**

*

* @author juju

*/

public class kas_out extends javax.swing.JDialog {

String kode,penerima,keterangan;

java.util.Date tglsekarang = new java.util.Date();

private final Simple DateFormat smpdtfmt = new SimpleDateFormat("dd/MM/yyyy",

Locale.getDefault());

private final String tanggal = smpdtfmt.format(tglsekarang);

int jml;

Date tgl;

ResultSet resultSet;

Statement statement;

String kode_akun, ubah;

int count, jml_awal;

double jml_total;

koneksi conn;

DefaultTableModel tb;

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

/**

* Creates new form kas_out

*/

105

allurkas.koneksi1 konek = new allurkas.koneksi1();

public kas_out(java.awt.Frame parent, boolean modal) {

super(parent, modal);

initComponents();

conn=new koneksi();

setLocationRelativeTo(this);

tabelmodel();

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

Calendar cal = Calendar.getInstance();

DTtgl.setText(dateFormat.format(cal.getTime()));

txtkode.setEditable(false);

setform(false);

no_jurnal.hide();

kredit.hide();

SelectKategori();

nik.hide();

txtkode.hide();

}

private void SelectKategori(){

try {

Connection conn = konek.openkoneksi();

java.sql.Statement stm = conn.createStatement();

java.sql.ResultSet rs = stm.executeQuery("SELECT * FROM data_akun

ORDER BY kode_akun");

106

cmbkode.addItem("Pilih");

while(rs.next()){

cmbkode.addItem(rs.getString("nama_akun"));

}

konek.closekoneksi();

} catch (SQLException e) {

JOptionPane.showMessageDialog(null, "Error " + e);

} catch (ClassNotFoundException ex) {

Logger.getLogger(kas_in.class.getName()).log(Level.SEVERE, null, ex);

}

}

/**

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

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

* regenerated by the Form Editor.

*/

@SuppressWarnings("unchecked")

// <editor-fold defaultstate="collapsed" desc="Generated Code">

private void initComponents() {

jScrollPane1 = new javax.swing.JScrollPane();

tblanggaran = new javax.swing.JTable();

107

jPanel2 = new javax.swing.JPanel();

jLabel1 = new javax.swing.JLabel();

txtnominal = new javax.swing.JTextField();

jLabel5 = new javax.swing.JLabel();

jLabel3 = new javax.swing.JLabel();

jLabel8 = new javax.swing.JLabel();

ppenerima = new javax.swing.JTextField();

jLabel2 = new javax.swing.JLabel();

jScrollPane2 = new javax.swing.JScrollPane();

txtket = new javax.swing.JTextArea();

cmbkode = new javax.swing.JComboBox<String>();

jLabel4 = new javax.swing.JLabel();

txtno = new javax.swing.JTextField();

DTtgl = new javax.swing.JTextField();

kredit = new javax.swing.JTextField();

no_jurnal = new javax.swing.JTextField();

nik = new javax.swing.JTextField();

txtkode = new javax.swing.JTextField();

jPanel3 = new javax.swing.JPanel();

jLabel9 = new javax.swing.JLabel();

btnbaru = new javax.swing.JButton();

btnhapus = new javax.swing.JButton();

btnsimpan = new javax.swing.JButton();

108

setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOS

E);

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

new Object [][] {

{null, null, null, null},

{null, null, null, null},

{null, null, null, null},

{null, null, null, null}

},

new String [] {

"Title 1", "Title 2", "Title 3", "Title 4"

}

));

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

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

tblanggaranMouseClicked(evt);

}

});

jScrollPane1.setViewportView(tblanggaran);

jPanel2.setBorder(javax.swing.BorderFactory.createEtchedBorder());

109

jLabel1.setText("Kode Akun");

jLabel5.setText("Keterangan");

jLabel3.setText("Nominal");

jLabel8.setText("Penerima");

jLabel2.setText("Tanggal");

txtket.setColumns(20);

txtket.setRows(5);

jScrollPane2.setViewportView(txtket);

cmbkode.addItemListener(new java.awt.event.ItemListener() {

public void itemStateChanged(java.awt.event.ItemEvent evt) {

cmbkodeItemStateChanged(evt);

}

});

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

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

cmbkodeActionPerformed(evt);

}

});

110

jLabel4.setText("No Kas Keluar");

DTtgl.setEditable(false);

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

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

DTtglActionPerformed(evt);

}

});

kredit.setText("0");

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

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

nikActionPerformed(evt);

}

});

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

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

txtkodeActionPerformed(evt);

}

});

111

javax.swing.GroupLayout jPanel2Layout = new

javax.swing.GroupLayout(jPanel2);

jPanel2.setLayout(jPanel2Layout);

jPanel2Layout.setHorizontalGroup(

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

NG)

.addGroup(jPanel2Layout.createSequentialGroup()

.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Align

ment.LEADING)

.addComponent(jLabel4)

.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Align

ment.TRAILING, false)

.addComponent(txtno,

javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(cmbkode,

javax.swing.GroupLayout.Alignment.LEADING,

javax.swing.GroupLayout.PREFERRED_SIZE,149,

javax.swing.GroupLayout.PREFERRED_SIZE))

.addComponent(jLabel1)

.addComponent(jLabel8)

112

.addComponent(ppenerima,

javax.swing.GroupLayout.PREFERRED_SIZE,150,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addGroup(jPanel2Layout.createSequentialGroup()

.addContainerGap()

.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Align

ment.LEADING)

.addGroup(jPanel2Layout.createSequentialGroup()

.addComponent(no_jurnal,

javax.swing.GroupLayout.PREFERRED_SIZE,58,

javax.swing.GroupLayout.PREFERRED_SIZE)

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

.addComponent(kredit,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE))

.addGroup(jPanel2Layout.createSequentialGroup()

.addComponent(nik,

javax.swing.GroupLayout.PREFERRED_SIZE,48,

javax.swing.GroupLayout.PREFERRED_SIZE)

113

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATE

D)

.addComponent(txtkode,

javax.swing.GroupLayout.PREFERRED_SIZE,23,

javax.swing.GroupLayout.PREFERRED_SIZE)))))

.addGap(75, 75, 75)

.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Align

ment.LEADING)

.addGroup(jPanel2Layout.createSequentialGroup()

.addComponent(jLabel3)

.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,

Short.MAX_VALUE))

.addGroup(jPanel2Layout.createSequentialGroup()

.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Align

ment.LEADING)

.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Align

ment.TRAILING, false)

.addComponent(txtnominal,

javax.swing.GroupLayout.Alignment.LEADING,

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

114

.addComponent(jLabel2,

javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(DTtgl,

javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(jLabel5,

javax.swing.GroupLayout.Alignment.LEADING))

.addComponent(jScrollPane2,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE))

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

);

jPanel2Layout.setVerticalGroup(

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

NG)

.addGroup(jPanel2Layout.createSequentialGroup()

.addContainerGap()

.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Align

ment.BASELINE)

.addComponent(jLabel4)

.addComponent(jLabel2))

115

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATE

D)

.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Align

ment.BASELINE)

.addComponent(txtno,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(DTtgl,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATE

D)

.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Align

ment.BASELINE)

.addComponent(jLabel1)

.addComponent(jLabel3))

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

116

.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Align

ment.BASELINE)

.addComponent(cmbkode,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(txtnominal,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE))

.addGap(26, 26, 26)

.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Align

ment.BASELINE)

.addComponent(jLabel8)

.addComponent(jLabel5))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATE

D)

.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Align

ment.LEADING)

.addGroup(jPanel2Layout.createSequentialGroup()

117

.addComponent(jScrollPane2,

javax.swing.GroupLayout.PREFERRED_SIZE,86,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,

Short.MAX_VALUE))

.addGroup(jPanel2Layout.createSequentialGroup()

.addComponent(ppenerima,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE)

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

32, Short.MAX_VALUE)

.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Align

ment.BASELINE)

.addComponent(nik,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(txtkode,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE))

118

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

.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Align

ment.BASELINE)

.addComponent(no_jurnal,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(kredit,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE))

.addGap(22, 22, 22))))

);

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

jPanel3.setBorder(javax.swing.BorderFactory.createEtchedBorder(java.awt.Colo

r.lightGray, null));

jLabel9.setFont(new java.awt.Font("Tahoma", 1, 24)); // NOI18N

jLabel9.setText("KAS KELUAR");

119

javax.swing.GroupLayout jPanel3Layout = new

javax.swing.GroupLayout(jPanel3);

jPanel3.setLayout(jPanel3Layout);

jPanel3Layout.setHorizontalGroup(

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

NG)

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

jPanel3Layout.createSequentialGroup()

.addContainerGap(137, Short.MAX_VALUE)

.addComponent(jLabel9)

.addGap(132, 132, 132))

);

jPanel3Layout.setVerticalGroup(

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

NG)

.addGroup(jPanel3Layout.createSequentialGroup()

.addContainerGap()

.addComponent(jLabel9)

.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,

Short.MAX_VALUE))

);

120

btnbaru.setText("TAMBAH");

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

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

btnbaruActionPerformed(evt);

}

});

btnhapus.setText("Hapus");

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

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

btnhapusActionPerformed(evt);

}

});

btnsimpan.setText("Simpan");

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

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

btnsimpanActionPerformed(evt);

}

});

javax.swing.GroupLayout layout = new

javax.swing.GroupLayout(getContentPane());

getContentPane().setLayout(layout);

121

layout.setHorizontalGroup(

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

.addGroup(layout.createSequentialGroup()

.addGap(22, 22, 22)

.addComponent(btnbaru)

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

.addComponent(btnsimpan)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATE

D)

.addComponent(btnhapus)

.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,

Short.MAX_VALUE))

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

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

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

layout.createSequentialGroup()

.addGap(0, 0, Short.MAX_VALUE)

.addComponent(jPanel3,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE))

122

.addGroup(layout.createSequentialGroup()

.addContainerGap()

.addComponent(jScrollPane1,

javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)

.addContainerGap())

);

layout.setVerticalGroup(

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

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

layout.createSequentialGroup()

.addComponent(jPanel3,

javax.swing.GroupLayout.PREFERRED_SIZE,50,

javax.swing.GroupLayout.PREFERRED_SIZE)

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

.addComponent(jPanel2,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE)

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

123

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BA

SELINE)

.addComponent(btnbaru)

.addComponent(btnsimpan)

.addComponent(btnhapus))

.addGap(18, 18, 18)

.addComponent(jScrollPane1,

javax.swing.GroupLayout.PREFERRED_SIZE,156,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,

Short.MAX_VALUE))

);

pack();

}// </editor-fold>

private void cmbkodeItemStateChanged(java.awt.event.ItemEvent evt) {

String nm_kategori = cmbkode.getSelectedItem().toString();

if(!nm_kategori.equals("")){

try {

Connection conn = konek.openkoneksi();

java.sql.Statement stm = conn.createStatement();

java.sql.ResultSet sql = stm.executeQuery("SELECT kode_akun

FROM data_akun WHERE nama_akun='"+nm_kategori+"'");

124

if(sql.next()){

txtkode.setText(sql.getString("kode_akun"));

}

konek.closekoneksi();

} catch (SQLException e) {

JOptionPane.showMessageDialog(null, "Error " + e);

} catch (ClassNotFoundException ex) {

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

ex);

}

}else{

txtkode.setText("");

} // TODO add your handling code here:

}

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

// TODO add your handling code here:

}

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

// TODO add your handling code here:

}

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

125

// TODO add your handling code here:

}

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

// TODO add your handling code here:

hapus(txtno.getText());

tabelmodel();

setform(true);

}

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

// TODO add your handling code here:

if (txtket.getText().equals("")||txtnominal.getText().equals("")) {

JOptionPane.showMessageDialog(this,"Semuah Data Harus Di Isi");

}

else{

simpan();

simpanjurnal();

tabelmodel();

JOptionPane.showMessageDialog(null, "Berhasil menyimpan data

transaksi");

126

}

try {

HashMap hash = new HashMap();

hash.put("no", txtno.getText());

File file = new File("src/Laporan/bukti_kaskeluar.jrxml");

JasperDesign jasperDesign = JRXmlLoader.load(file);

JasperReport jasperReport =

JasperCompileManager.compileReport(jasperDesign);

JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, hash,

konek.openkoneksi());

JasperViewer.viewReport(jasperPrint, false);

}catch (ClassNotFoundException | JRException e) {

JOptionPane.showMessageDialog(null, "Error " + e);

}

this.hide();

bersih();

bersih();

}

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

// TODO add your handling code here:

if (btnbaru.getText().equals("Batal")) {

127

setform(false);

bersih();

}

else{

setform(true);

setkode();

setkodejurnal();

}

}

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

int row = tblanggaran.getSelectedRow();

String row_id = (tblanggaran.getModel().getValueAt(row, 0).toString());

txtno.setText(row_id);

btnhapus.setEnabled(true);

}

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

// TODO add your handling code here:

}

/**

* @param args the command line arguments

128

*/

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

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

break;

}

}

} catch (ClassNotFoundException ex) {

java.util.logging.Logger.getLogger(kas_out.class.getName()).log(java.util.loggin

g.Level.SEVERE, null, ex);

} catch (InstantiationException ex) {

129

java.util.logging.Logger.getLogger(kas_out.class.getName()).log(java.util.loggin

g.Level.SEVERE, null, ex);

} catch (IllegalAccessException ex) {

java.util.logging.Logger.getLogger(kas_out.class.getName()).log(java.util.loggin

g.Level.SEVERE, null, ex);

} catch (javax.swing.UnsupportedLookAndFeelException ex) {

java.util.logging.Logger.getLogger(kas_out.class.getName()).log(java.util.loggin

g.Level.SEVERE, null, ex);

}

//</editor-fold>

/* Create and display the dialog */

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

public void run() {

kas_out dialog = new kas_out(new javax.swing.JFrame(), true);

dialog.addWindowListener(new java.awt.event.WindowAdapter() {

@Override

public void windowClosing(java.awt.event.WindowEvent e) {

System.exit(0);

}

});

130

dialog.setVisible(true);

}

});

}

// Variables declaration - do not modify

private javax.swing.JTextField DTtgl;

private javax.swing.JButton btnbaru;

private javax.swing.JButton btnhapus;

private javax.swing.JButton btnsimpan;

private javax.swing.JComboBox<String> cmbkode;

private javax.swing.JLabel jLabel1;

private javax.swing.JLabel jLabel2;

private javax.swing.JLabel jLabel3;

private javax.swing.JLabel jLabel4;

private javax.swing.JLabel jLabel5;

private javax.swing.JLabel jLabel8;

private javax.swing.JLabel jLabel9;

private javax.swing.JPanel jPanel2;

private javax.swing.JPanel jPanel3;

private javax.swing.JScrollPane jScrollPane1;

private javax.swing.JScrollPane jScrollPane2;

private javax.swing.JTextField kredit;

private javax.swing.JTextField nik;

131

private javax.swing.JTextField no_jurnal;

private javax.swing.JTextField ppenerima;

private javax.swing.JTable tblanggaran;

private javax.swing.JTextArea txtket;

private javax.swing.JTextField txtkode;

private javax.swing.JTextField txtno;

private javax.swing.JTextField txtnominal;

// End of variables declaration

public int simpan(){

String sql="insert into kas_keluar "+

"values"+

"('"+txtno.getText()+"', " +

"'"+DTtgl.getText()+"', "+

"'"+txtkode.getText()+"', "+

"'"+ppenerima.getText()+"', "+

"'"+txtnominal.getText()+"', "+

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

conn.simpanData(sql);

return 0;

}

public int simpanjurnal(){

String sql="insert into jurnal "+

"values"+

132

"('"+no_jurnal.getText()+"', " +

"'"+DTtgl.getText()+"', "+

"'"+txtno.getText()+"', "+

"'"+txtkode.getText()+"', "+

"'"+kredit.getText()+"', "+

"'"+txtnominal.getText()+"', "+

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

conn.simpanData(sql);

return 0;

}

public int hapus(String kd){

String sql="delete from kas_keluar where no_transaksi = '"+kd+"'";

conn.simpanData(sql);

return 0;

}

public void tabelmodel(){

tb =new DefaultTableModel();

tb.addColumn("NO Kas Keluar");

tb.addColumn("Tanggal");

tb.addColumn("Kode Akun");

tb.addColumn("Penerima");

tb.addColumn("Nominal");

tb.addColumn("Keterangan");

133

tblanggaran.setModel(tb);

try {

ResultSet res = conn.ambilData("select *from kas_keluar ");

while (res.next()){

tb.addRow(new

Object[]{res.getString(1),res.getString(2),res.getString(3),res.getString(4),res.get

String(5),res.getString(4),res.getString(5)});

}

tblanggaran.setModel(tb);

} catch (SQLException ex) {

JOptionPane.showMessageDialog(this, ex);

}

}

void setform(boolean flag){

txtket.setEditable(flag);

txtnominal.setEditable(flag);

DTtgl.setEnabled(flag);

btnsimpan.setEnabled(flag);

btnhapus.setEnabled(false);

if (flag==true) {

134

btnbaru.setText("Batal");

}

else{

btnbaru.setText("Baru");

}

}

void bersih(){

txtkode.setText("");

txtket.setText("");

txtnominal.setText("");

}

void setkode(){

try {

ResultSet res = conn.ambilData("select * from kas_keluar order by

no_bukti desc");

if (res.next()) {

String nofak = res.getString("no_bukti").substring(2);

String AN = "" + (Integer.parseInt(nofak) + 1);

String Nol = "";

if(AN.length()==1)

{Nol = "000";}

135

else if(AN.length()==2)

{Nol = "00";}

else if(AN.length()==3)

{Nol = "0";}

else if(AN.length()==4)

{Nol = "";}

txtno.setText("KK" + Nol + AN);

} else {

txtno.setText("KK0001");

}

}catch(Exception e){

JOptionPane.showMessageDialog(null, e);

}

}

void setkodejurnal(){

try {

ResultSet res = conn.ambilData("select * from jurnal order by no_jurnal

desc");

if (res.next()) {

String nofak = res.getString("no_jurnal").substring(3);

136

String AN = "" + (Integer.parseInt(nofak) + 1);

String Nol = "";

if(AN.length()==1)

{Nol = "00";}

else if(AN.length()==2)

{Nol = "0";}

3 else if(AN.length()==3)

{Nol = "";}

no_jurnal.setText("JRN" + Nol + AN);

} else {

no_jurnal.setText("JRN001");

}

}catch(Exception e){

JOptionPane.showMessageDialog(null, e);

}

}

}

137

3.5.2. Blackbox Testing

Tabel III.10

Pengujian Blackbox Testing Pada Login

No Skenario Pengujian Hasil yang Diharapkan Kesimpulan

1 Mengosongkan Username dan

Password lalu klik tombol

“Login”

Sistem akan menolak akses Login

dan menampilkan “Maaf anda

belum memasukan Username, dan

Password

Valid

2 Hanya mengisis Username dan

mengosokna Password, lalu

langsung klik tombol “Login”

Sistem akan menolak akses Login

dan menampilkan pesan “ Maaf

anda belum memasukan Password

!!!”

Valid

3 Hanya mengisi Password dan

mengkosongkan Username lalu

langsung klik tombol “Login”

Sistem akan menolak akses Login

dan menampilkan pesan “Maaf

anda belum memasukan

Username!!”

Valid

4 Memasukan dengan salah satu

data benar dan salah satu salah,

lalu klik “Login”

Sistemakan menolak akses Login

dan menampikan pesan Login “

Username atau Password salah”

valid

5 Memasukan Username dan

Passwaord dengan benar, lalu

klik “Login”

Sistem menerima akses Login dan

menampilkan pesan “Selamat

Datang “ kemudian akan masuk

ke menu home

valid

138

3.5.3. Spesifikasi Hardware dan software

3. Spesifikasi Hardware (perangkat keras)

Komonen perangkat keras adalah terdiri dari unsur-unsur yang terdiri dari

perangkat keras komputer yang digunakan untuk membantu proses kerja manusia

(brainware) dan bersifat fisik. Spesifikasi perangkat keras minimum yang dibutuhkan

adalah sabagai berikut :

a. Server

1. CPU

(a.) Prosessor Intel Pentium Core I3

(b.) RAM DDR3 4 GB

(c.) HarDisk 500 GB

2. Mouse

3. Keyboard

4. Monitor dengan resolusi layar minimum 1024x768

5. Koneksi internet dengan kecepatan 2 Mbps

b. Cilent

1. Prossesor Intel Pentium Core I3

2. RAM DDR3 2 GB

3. Keyboard

4. Monitor dengan resolusi layar minimum 1024x768

5. Koneksi internet dengan kecepatan 1 Mbps

139

4. Spesifikasi Software (perangkat lunak)

Komponen perangkat lunak adalah serangkaina unsur-unsur yang terdiri dari

beberapa perangkat lunak program komputer yang digunakan untuk membantu proses

kerja manusia (brainware) dan sifat non fisik. Adapun spesifikasi perangkat lunak yang

dibutuhkan adalah sebagai berikut :

a. Cilent

1. Sistem operasi: Microsoft Windows 10

2. Java NetBeans IDE 8.1

3. Xampp

4. Database: MySQL

b. Server

1. Sistem operasi Microsoft windows

2. Aplikasi Web Browser Google chrome

140