BAB III PEMBAHASAN 3.1. Tinjauan Perusahaan · Tugas, wewenang, tanggung jawab, hak dan kewajiban...
Embed Size (px)
Transcript of BAB III PEMBAHASAN 3.1. Tinjauan Perusahaan · Tugas, wewenang, tanggung jawab, hak dan kewajiban...
-
20
BAB III
PEMBAHASAN
3.1. Tinjauan Perusahaan
Pada tinjauan Koperasi Simpan Pinjam Credit Union Keluarga Kudus
(KSP.CU) Pontianak ini akan dibahas mengenai sejarah berdirinya Koperasi
Simpan Pinjam Credit Union Keluarga Kudus (KSP.CU) Pontianak, struktur
organisasi dan fungsi, Visi, Misi dan Slogan Koperasi Simpan Pinjam Credit
Union Keluarga Kudus (KSP.CU) Pontianak.
3.1.1. Sejarah Perusahaan
Sejak berdiri pada tanggal 5 Oktober 2000 sampai pada bulan Mei tahun
2005, pelayanan Koperasi Kredit Credit Union Keluarga Kudus hanya dilakukan
pada hari minggu saja, setelah pulang misa, sedangkan hari lainnya tutup. Pada
waktu itu, yang melayani anggota hanya pengurus, yaitu Ibu Lucia Ekawati
sebagai bendahara, dibantu oleh beberapa sukarelawan dari anggota, yaitu Martina
Elen, Felix Belawing, dan Ibu Donalita Djono Sarjiyati. Mulai bulan Juni tahun
2005 pelayanan dilakukan enam (6) hari dalam seminggu, mulai dari hari minggu
sampai hari jumat, sedangkan hari sabtu libur. Pada saat itu pengurus telah
mengangkat tiga orang staf untuk melayani anggota.
Pada awalnya, pencatatan transaksi di buku anggota masih dilakukan
secara manual. Namun sejak 1 Oktober 2005, Koperasi Kredit CU. Keluarga
Kudus sudah menggunakan program Simpan Koperasi Kredit (Sikopdit).
-
21
Pencatatan transaksi dilakukan dengan computer dan printer seperti yang
digunakan pada saat ini.
Pada tanggal 11 Februari 2008,setelah rapat anggota tahunan koperasi
kredit CU. Keluarga Kudus (RAT CUKKD) Tahun Buku 2007, kantor CU pindah
ke Gedung Paroki yang baru, bertempat di sebelah gedung Gereja Katolik
Keluarga Kudus. Hal ini di karenakan Gedung Bina Karya akan dibongkar dan
didirikan Gereja Katolik Keluarga Kudus yang baru.
3.1.2. Struktur Organisasi dan Fungsi
Adapun susunan Struktur Organisasi dan Fungsi CU. Keluarga Kudus
Pontianak adalah sebagai berikut:
Kepala Departemen Pendidikan
Anggota dan Marketing
Kepala Departemen
Keuangan dan
Accounting
Kepala Departemen
Kredit dan Penagihan
Kepala Departemen
Human Resource
Development
Kepala Departemen Administrasi Umum dan
Procurement
Kepala Departemen
Informasi dan
Teknologi
Kepala Departemen
Audit Internal
Branch Manager
Branch Manager
Branch Manager
Branch Manager
Branch Manager
Branch Manager
Branch Manager
MANAGER
Sumber: Data KSP CU.KKD Pontianak (2017)
Gambar III.1.
Struktur Organisasi dan Fungsi
Sedangkan tugas dan kewajiban dari setiap jabatan dalam Struktur
Organisasi dan Fungsi antara lain adalah sebagai berikut:
1. Manager
a. Pengertian
-
22
Manager adalah pimpinan tertinggi dari manajemen. Manager
merupakan anggota Pengurus tanpa hak suara. Manager ditunjuk oleh
Pengurus dengan Surat Keputusan. Masa jabatan Manager maksimal
lima tahun.
b. Tugas, wewenang, tanggung jawab, hak dan kewajiban Manager
diatur dalam Job Description Manager.
c. Manager akan menjadi General Manager jika sudah memiliki satu
Branch Office Tipe A dan sembilan Branch Office Tipe B.
2. Departemen Pendidikan Anggota dan Marketing
a. Pengertian
Departemen Pendidikan Anggota dan Marketing adalah departemen
yang menangani pendidikan bagi anggota dan pemasaran produk dan
pelayanan KSP Credit Union Keluarga Kudus.
b. Departemen Pendidikan Anggota dan Marketing dipimpin oleh
seorang Kepala Departemen yang ditunjuk oleh Manager dengan
Surat Keputusan.
c. Tugas, wewenang, tanggung jawab, hak dan kewajiban Kepala
Departemen Pendidikan Anggota dan Marketing diatur dalam Job
Description.
3. Departemen Keuangan dan Accounting
a. Pengertian
Departemen Keuangan dan Accounting adalah departemen yang
menangani keuangan dan akuntansi KSP Credit Union Keluarga
Kudus.
-
23
b. Departemen Keuangan dan Accounting dipimpin oleh seorang Kepala
Departemen yang ditunjuk oleh Manager dengan Surat Keputusan.
c. Tugas, wewenang, tanggung jawab, hak dan kewajiban Kepala
Departemen Keuangan dan Accounting diatur dalam Job Description.
4. Departemen Kredit dan Penagihan
a. Pengertian
Departemen Kredit dan Penagihan adalah departemen yang
menangani kredit dan penagihan KSP Credit Union Keluarga Kudus.
b. Departemen Kredit dan Penagihan dipimpin oleh seorang Kepala
Departemen yang ditunjuk oleh Managerdengan Surat Keputusan.
c. Tugas, wewenang, tanggung jawab, hak dan kewajiban Kepala
Departemen Kredit dan Penagihan diatur dalam Job Description.
5. Departemen Human Resource Development
a. Pengertian
Departemen Human Resource Development adalah departemen yang
menangani pengembangan sumber daya manusia dan mengatur
kinerja manajemen KSP Credit Union Keluarga Kudus.
b. Departemen Human Resource Development dipimpin oleh seorang
Kepala Departemen yang ditunjuk oleh Manager dengan Surat
Keputusan.
c. Tugas, wewenang, tanggung jawab, hak dan kewajiban Kepala
Departemen Human Resource Development diatur dalam Job
Description.
-
24
6. Departemen Administrasi Umum dan Procurement
a. Pengertian
Departemen Administrasi Umum dan Procurement adalah departemen
yang menangani pengaturan administrasi umum, perencanaan,
pengadaan, pengendalian, pemeliharaan, dan pengamanan aset tetap
dan inventaris KSP Credit Union Keluarga Kudus.
b. Departemen Administrasi Umum dan Procurement dipimpin oleh
seorang Kepala Departemen yang ditunjuk oleh Manager dengan
Surat Keputusan.
c. Tugas, wewenang, tanggung jawab, hak dan kewajiban Kepala
Departemen Administrasi Umum dan Procurement diatur dalam Job
Description.
7. Departemen Informasi dan Teknologi
a. Pengertian
Departemen Informasi dan Teknologi adalah departemen yang
menangani pengembangan teknologi, informasi dan komunikasi KSP
Credit Union Keluarga Kudus.
b. Departemen Informasi dan Teknologi dipimpin oleh seorang Kepala
Departemen yang ditunjuk oleh Manager dengan Surat Keputusan.
c. Tugas, wewenang, tanggung jawab, hak dan kewajiban Kepala
Departemen Informasi dan Teknologi diatur dalam Job Description.
8. Departemen Audit Internal
a. Pengertian
-
25
Departemen Audit Internal adalah departemen yang menangani
pengawasan dan audit internal KSP Credit Union Keluarga Kudus.
b. Departemen Audit Internal dipimpin oleh seorang Kepala Departemen
yang ditunjuk oleh Manager dengan Surat Keputusan.
c. Tugas, wewenang, tanggung jawab, hak dan kewajiban Kepala
Departemen Audit Internal diatur dalam Job Description.
3.1.3. Visi, Misi, dan Slogan Koperasi Simpan Pinjam Credit Union
Keluarga Kudus (KSP.CU) Pontianak
Adapun visi dari Koperasi Simpan Pinjam Credit Union Keluarga Kudus
(KSP.CU) Pontianak yaitu “Menjadi Credit Union yang tangguh dan terpercaya
dalam pelayanan keuangan di Kalimantan Barat”, dan misinya yaitu
“Meningkatkan kesejahteraan ekonomi dan sosial anggota dengan menyediakan
askes pada pelayanan keuangan terbaik dan berkelanjutan”, dengan memiliki
selogan “Bersama Kami Ada Solusi”.
3.2. Tinjauan Kasus
Credit Union saat ini telah banyak berkembang seiring dengan
perkembangan usaha-usaha kecil dan besar yang semakin pesat. Tetapi masih
banyak credit union yang belum sepenuhnya terkomputerisasi. Maka credit union
ini perlu dibantu dengan menggunakan aplikasi yang memudahkan dalam proses
piutang usaha (peminjaman dan angsuran). Maka dari itu penulis mencoba
membuat program aplikasi piutang usaha dengan menggunakan aplikasi Netbeans
-
26
8.2 untuk mempercepat dan memaksimalkan pelayanan kepada para anggota
credit union.
Pada pembuatan program piutang usaha ini terjadi beberapa proses yaitu
proses keanggotaan/registrasi, proses peminjaman, proses angsuran sampai
pelunasan, prosedur laporan.
1. Proses Keanggotaan/Registrasi
Pada proses keanggotaan/registrasi, anggota mengisi formulir anggota dan
menyerahkan syarat menjadi anggota, membayar simpanan pokok dan simpanan
wajib kepada bagian kasir, kemudian bagian kasir memasukan data keanggotaan
dalam Buku Daftar Anggota, selanjutnya bagian kasir mencetak buku anggota,
dan menyerahkan buku anggota kepada anggota.
2. Proses Peminjaman
Pada proses ini anggota mengajukan permohonan pinjaman dibagian Kasir dan
mengisi Formulir Pinjaman Anggota (FPA) dan menyerahkan beberapa
persyaratan seperti Foto Copy Kartu Tanda Penduduk (KTP), Kartu Keluarga
(KK) pada bagian Kredit setelah itu bagian Kredit mengecek semua berkas-berkas
persyaratan anggota untuk pengajuan pinjaman. Data-data tersebut kemudian
Bagian Kredit simpan untuk proses selanjutnya, kemudian Bagian Kredit
membuat Surat Perjanjian Pinjaman (SPP) kemudian Bagian Kredit menyerahkan
Surat Perjanjian Pinjaman (SPP) dibagian Kasir dan memberikannya kepada
anggota, setelah anggota mengisi Surat Perjanjian Pinjaman (SPP) anggota
menyerahkan kembali Surat Perjanjian Pinjaman (SPP) dibagian Kasir dan bagian
kasir menyerahkannya dibagian kredit untuk dicek kelengkapan data, setelah
lengkap data-data tersebut, maka bagian kredit mengeluarkan data-data pencairan
-
27
pinjaman dan diserahkan dibagian kasir, setelah itu Bagian Kasir membuat Bukti
Penarikan Uang (BPU) dan Slip Uang Keluar (SUK) kemudian bagian kasir
menyerahkan uang pinjaman, Bukti Penarikan Uang (BPU) dan Slip Uang Keluar
(SUK) pada anggota, sedangkan Copy Bukti Penarikan Uang (BPU) dan Slip
Uang Keluar (SUK) bagian kasir simpan untuk proses pembuatan laporan.
3. Proses Angsuran sampai Pelunasan
Pada proses angsuran, anggota membayar angsuran beserta bunga selama
beberapa bulan atau sampai pinjaman di Credit Union sudah lunas ke bagian
kasir, dengan menyerahkan Buku Anggota. setelah itu bagian kasir akan membuat
Slip Uang Masuk (SUM) sebagai bukti sudah membayar angsuran. Jika angsuran
sudah lunas, maka bagian kredit akan mengembalikan jaminan sebagai syarat
pinjaman.
4. Prosedur Laporan
Pada proses ini bagian kasir membuat Laporan Pinjaman Bulanan (LPB),
Laporan Pinjaman Bulanan (LPB) dibuat berdasarkan data-data sebelumnya yang
anggota serahkan pada saat ingin mengajukan pinjaman. Kemudian bagian Kasir
menyerahkan Laporan Pinjaman Bulanan (LPB) pada Bagian Kredit lalu
ditembuskan dibagian Manager untuk proses pengesahan.
3.2.1. Dokumen Masukan
Dokumen Masukan adalah segala bentuk yang berupa dokumen yang
diolah dalam proses yang dapat menghasilkan keluaran atau output yang
diinginkan. Yang termasuk dokumen masukan dalam Piutang Usaha Anggota
Pada KSP.CU. Keluarga Kudus Pontianak sebagai berikut :
-
28
A) Nama Dokumen : Data Anggota KSP.Credit Union
Fungsi : Sebagai Dokumen Anggota KSP.Credit
Union
Sumber : Anggota
Tujuan : Anggota
Media : Kertas
Jumlah : Rangkap satu
Frekuensi : Sekali Untuk Setiap Pendaftaran Anggota
Format : Lampiran A.1
B) Nama Dokumen : Bukti Penarikan Uang (BPU)
Fungsi : Sebagai Slip Pencairan Uang
Sumber : Bagian Kredit/Kasir
Tujuan : Anggota
Media : Kertas
Jumlah : Rangkap satu
Frekuensi : Sekali Untuk Setiap Kas Keluar
Format : Lampiran A.2
C) Nama dokumen : Buku Anggota (BA)
Fungsi : Sebagai Bukti Buku Tabungan
Sumber : Anggota
Tujuan : Bagian Kasir
Media : Kertas
Jumlah : Rangkap satu
Frekuensi : Sekali untuk setiap Anggota Setor
-
29
Format : Lampiran A.3
D) Nama dokumen : SUM
Fungsi : Sebagai Bukti Angsuran
Sumber : Anggota
Tujuan : Bagian Kasir
Media : Kertas
Jumlah : Rangkap satu
Frekuensi : Sekali untuk setiap Anggota Setor
Angsuran
Format : Lampiran A.4
3.2.2. Dokumen Keluaran
Dokumen Keluaran adalah dokumen yang dihasilkan dari proses Sistem
input atau disebut juga denga dokumen keluaran. Yang termasuk dokumen
keluaran dalam Sistem dalam Piutang Usaha Anggota Pada KSP.CU. Keluarga
Kudus Pontianak sebagai berikut :
A) Nama Dokumen : Slip Uang Keluar (SUK)
Fungsi : Bukti Kas Keluar
Sumber : Bagian Kasir
Tujuan : Anggota
Media : Kertas
Jumlah : Rangkap satu
Frekuensi : Sekali Untuk Setiap Pengeluaran Kas Keluar
Format : Lampiran B.1
-
30
B) Nama Dokumen : LPB
Fungsi : Sebagai Sumber Laporan Pinjaman
Sumber : Bagian Kasir
Tujuan : Kepala Bagian Manager
Media : Kertas
Jumlah : Satu Rangkap Laporan
Frekuensi : Setiap Bulan Pembuatan Laporan Bulanan
Format : Lampiran B.2
3.3. Analisa Kebutuhan Software
Analisa kebutuhan software adalah penguraian dari suatu kebutuhan
informasi yang utuh ke dalam bagian-bagian komponennya dengan maksud untuk
mengidentifikasi dan mengevaluasi permasalahan-permaslahan, kesempatan-
kesempatan dan hambatan-hambatan yang terjadi dan kebutuhan-kebutuha yang
diharapkan. Berikut adalah Use Case Diagram dan Activity Diagram dari proses
keanggotaan/registrasi, proses peminjaman, proses angsuran sampai pelunasan,
prosedur laporan.
3.3.1. Analisa Kebutuhan
Tahapan analisis, meliputi tahapan analisis kebutuhan fungsionalitas
dari masing-masing pengguna yang berinteraksi langsung terhadap
sistem informasi pinjaman dan angsuran.
-
31
a. Kasir
A1. kasir bisa melakukan login kedalam sistem pinjaman.
A2. Kasir bisa mengelola data anggota.
A3. kasir bisa menginput data angsuran pinjaman.
b. Staff Kredit
B1. staff kredit bisa melakukan login kedalam sistem pinjaman.
B2. staff kredit bisa menginput data pinjaman.
B3. staff kredit bisa mengelola laporan.
3.3.2. Tahapan Analisis Kebutuhan Userinterface
a. Kasir
1.Form login untuk kasir.
2. Form untuk mengelola data anggota.
a. From tambah data anggota.
b. From ubah data anggota.
3. From data transaksi angsuran pinjaman.
a. From tambah data transaksi angsuran pinjaman.
b. From simpan data transaksi angsuran pinjaman.
b. Staff Kredit
1. Form login untuk Staff Kredit.
2. From untuk menginput data peminjaman.
a.From tambah data pinjaman.
b.From ubah data pinjaman.
3. From Cetak data pinjaman.
-
32
4. From untuk menampilkan laporan.
a. From tambah data laporan.
b.From ubah data laporan.
3.3.3. Use Case Diagram
Setelah kebutuhan fungsional dari masing-masing pengguna sistem
informasi piutang usaha, selanjutnya, akan digambarkan use case diagram,
seperti dibawah ini:
a. Use Case Diagram Kasir
Sumber : Hasil Penelitian (2017)
Gambar III.2. Use Case Diagram Kasir
-
33
Berikut penjelasan atau desikripsi dari use case diagram kasir.
Tabel III.1. Deskripsi Use Case Diagram Kasir
Use Case Name Halaman Kasir
Requirements A1-A3
Goal Kasir dapat mengelola data anggota, dan
data transaksi angsuran pinjaman
Pre-Conditions Kasir masuk mengakses halaman login
Post-Conditions Kasir melakukan login dan masuk ke
sistem angsuran pinjaman
Failed End Condition Kasir dapat membatalkan login
Primary Actors Kasir
Main Flow / Basic Path 1. Kasir dapat mengelola data anggota 2. Kasir dapat mengelola data transaksi
angsuran pinjaman
Invariant -
b. Use Case Diagram Staff Kredit
Sumber : Hasil Penelitian (2017)
Gambar III.3. Use Case Diagram Staff Kredit
-
34
Berikut penjelasan atau desikripsi dari use case diagram Staff Kredit.
Tabel III.2.Deskripsi Use Case Diagram Staff Kredit
Use Case Name Halaman Staff Kredit
Requirements B1-B4
Goal Staff Kredit bisa menginput data
peminjaman dan bisa mengelola laporan
Pre-Conditions Staff Kredit masuk mengakses halaman
login
Post-Conditions Staff Kredit melakukan login dan masuk
ke sistem pinjaman
Failed End Condition Staff Kredit dapat membatalkan login
Primary Actors Staff Kredit
Main Flow / Basic Path 1. Staff Kredit bisa menginput data peminjaman
2. Staff Kredit bisa mengelola laporan
Invariant -
3.3.4. Desain Aktivitas Sistem
Setelah kebutuhan fungsional dari masing-masing pengguna sistem
informasi piutang usaha, selanjutnya, akan digambarkan activity diagram
dari masing use case yag ada pada use case diagram, seperti dibawah
ini:
-
35
a. Activity Diagram Login
Sumber : Hasil Penelitian (2017)
Gambar III.4. Activity Diagram Login
-
36
b. Activity Diagram Data Anggota
Sumber : Hasil Penelitian (2017)
Gambar III.5. Activity Diagram Anggota
-
37
c. Activity Diagram Pinjaman
Sumber : Hasil Penelitian (2017)
Gambar III.6. Activity Diagram Pinjaman
-
38
d. Activity Diagram Transaksi Pinjaman
Sumber : Hasil Penelitian (2017)
Gambar III.7. Activity Diagram Transaksi Pinjaman
-
39
e. Activity Diagram Data Angsuran
Sumber : Hasil Penelitian (2017)
Gambar III.8. Activity Diagram Angsuran
3.4. Desain
3.4.1. Software Architecture
Pada desain penggambaran sofware architecture, penggambaran
mengunakan class diagram dan sequence diagram,sebagai berikut:
1. Class Diagram Piutang Usaha
Berikut penggambaran class diagram piutang usaha
-
40
Sumber : Hasil Penelitian (2017)
Gambar III.9. Class Diagram Piutang Usaha
2. Sequence Diagram
Berikut sequence diagram piutang usaha
a. Sequence Diagram Login
Sumber : Hasil Penelitian (2017)
Gambar III.10. Sequence Diagram Login
-
41
b. Sequen Diagram Transaksi Pinjaman
Sumber : Hasil Penelitian (2017)
Gambar III.11. Sequence Diagram Transaksi Pinjaman
-
42
c. Sequen Diagram Data Transaksi Angsuran
Sumber : Hasil Penelitian (2017)
Gambar III.12. Sequence Diagram Transaksi Angsuran
3.4.2. User Interface
Sebuah rancangan antarmuka/user interface aplikasi sangat penting dalam
mengetahui setiap gambaran dari masing-masing fitur dalam suatu halaman
sehingga memberikan kesan tersendiri bagi pengguna untuk dapat menggunakan
apliaksi tersebut sesuai kebutuhan. Dimana pada halaman-halaman tersebut semua
fitur mengarahkan pengguna pada fungi-fungsi sesuai kebutuhan dan prosedur
-
43
yang digunakan dalam sebuah apliaksi. Adapun rancangan tampilan tersebut
adalah sebagai berikut:
A. Rancangan Antar Muka/User Interface Login
Halaman Login digunakan oleh user untuk dapat masuk ke dalam sistem.
Pada tampilan login yang tampil pada saat pertama kali dibuka dan langsung
menampilkan menu utama, Pada halaman login terdapat beberapa menu yang
menampilkan halaman login, username, dan password. Dimana semua halaman-
halaman tersebut mempunyai berbagai fitur sesuai prosedur yang berjalan sesuai
kebutuhan. Untuk lebih jelasnya dapat dilihat pada gambar, sebagai berikut:
Sumber : Hasil Penelitian (2017)
Gambar III.13. User Interface Menu Login
B. Rancangan Antar Muka/User Interface Menu Utama
Dalam tampilan menu utama yang tampil pada saat pertama aplikasi
dibuka dan langsung menampilkan halaman beranda, Pada halaman menu utama
terdapat beberapa menu yang menampilkan halaman anggota, jenis pinjaman,
transaksi pinjaman, transaksi angsuran, dan cetak semua laporan. Dimana semua
-
44
halaman-halaman tersebut mempunyai berbagai fitur sesuai prosedur yang
berjalan sesuai kebutuhan. Untuk lebih jelasnya dapat dilihat pada gambar,
sebagai berikut:
Sumber : Hasil Penelitian (2017)
Gambar III.14. User Interface Menu Utama
Pada tampilan menu utama ada beberapa menu seperti tambah anggota
yang berguna untuk menampilkan frm anggota dan otomatis akan muncul ketika
dipanggil, tambah jenis pinjaman berguna untuk menampilkan frm jenis pinjaman
dan otomatis akan muncul ketika dipanggil, menu transaksi pinjaman berguna
untuk menampilkan frm transaksi pinjaman dan otomatis akan muncul ketika
dipanggil, menu transaksi angsuran berguna untuk menampilkan frm transaksi
angsuran dan otomatis akan muncul ketika dipanggil, dan menu laporan berguna
untuk menampilkan frm laporan dan otomatis akan muncul ketika dipanggil.
C. Rancangan Antar Muka/User Interface Transaksi Pinjaman
-
45
Dalam tampilan transaksi pinjaman dirancang untuk menginput pinjaman
yang tampil pada saat pertama aplikasi dibuka dan langsung menampilkan
halaman beranda, dan akan menamplkan menu transaksi pinjaman, transaksi
pinjaman berguna untuk untuk mempemudah bagian staff kredit untuk menginput
data pinjama anggota.
Sumber : Hasil Penelitian (2017)
Gambar III.15. User Interface Transaksi Pinjaman
D. Rancangan Antar Muka/User Interface Transaksi Angsuran
Dalam tampilan transaksi angsuran dirancang untuk menginput
angsuran yang tampil pada saat pertama aplikasi dibuka dan langsung
menampilkan halaman beranda, dan akan menamplkan menu transaksi angsuran,
frm transaksi pinjaman berguna untuk mempemudah bagian kasir untuk
menginput data angsuran anggota.
-
46
Sumber : Hasil Penelitian (2017)
Gambar III.19. User Interface Transaksi Angsuran
3.5. Implementasi
Pada tahap mencoba kinerja sebuah aplikasi di butuhkan hasil yang
sesuai harapan untuk melihat kinerja suatu aplikasi. Adapun tahap-tahap tersebut
menjadi sebuah pengujian akan hasil yang baik untuk kedepannya dalam
pengembangan dari aplikasi simpan pinjam ini. Dalam Implementasi,
mengunakan code generation dan spesifikasi software dan hardware sebagai
berikut:
3.5.1. Code Generation
Adapun code generation dari data anggota, data pinjaman, data transaksi
pinjaman, dan data angsuran seperti berikut:
-
47
1. Code Generation Frm Login
package apppiutangusaha;
import apppiutangusaha.source.Database;
import javax.swing.*;
import java.awt.*;
import java.sql.*;
import java.util.Date;
/**
*
* @author acer
*/
public class FrmTransaksiPinjaman extends javax.swing.JFrame {
Database dbsetting;
String driver,database,user,pass,userLogin;
private Object tabel;
/**
* Creates new form FrmTransaksiPinjaman
*/
public FrmTransaksiPinjaman() {
initComponents();
-
48
Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize=this.getSize();
if(frameSize.height > screenSize.height){
frameSize.height=screenSize.height;
}
if(frameSize.width > screenSize.width) {
frameSize.width=screenSize.width;
}
this.setLocation((screenSize.width - frameSize.width) /
2,(screenSize.height = screenSize.height) / 10);
dbsetting = new Database();
driver = dbsetting.SettingPanel("DBDriver");
database = dbsetting.SettingPanel("DBDatabase");
user = dbsetting.SettingPanel("DBUsername");
pass = dbsetting.SettingPanel("DBPassword");
table.setModel(tableModel);
Tabel(table, new int[]{100, 90, 80, 90, 80, 80});
setDefaultTable();
TampilComboAnggota();
-
49
TampilComboJenisPinjaman();
TampilComboPinjaman();
buatnomor();
}
private javax.swing.table.DefaultTableModel
tableModel=getDefaultTabelModel();
private void Tabel(javax.swing.JTable tb, int lebar[] ) {
tb.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
int kolom=tb.getColumnCount();
for(int i=0;i < kolom;i++) {
javax.swing.table.TableColumn
tbc=tb.getColumnModel().getColumn(i);
tbc.setPreferredWidth(lebar[i]);
tb.setRowHeight(17);
}
}
private javax.swing.table.DefaultTableModel getDefaultTabelModel() {
return new javax.swing.table.DefaultTableModel(
new Object[][] {},
-
50
new String []
{"NoPinjmn","Tanggal","IDAnggota","NominalPinjmn","IdJnsPnjmn","
LamaPnjmn"}
){
boolean[] canEdit = new boolean[]{
false, false, false, false ,false, false
};
public boolean isCellEditable(int rowIndex, int
columnIndex){
return
canEdit[columnIndex];
}
};
}
String data[]=new String[15];
private void setDefaultTable() {
try {
Class.forName(driver);
-
51
Connection kon =
DriverManager.getConnection(database,user,pass);
Statement stt = kon.createStatement();
String SQL = "SELECT * FROM tblpinjaman";
ResultSet res = stt.executeQuery(SQL);
while(res.next()){
data[0] = res.getString(1);
data[1] = res.getString(2);
data[2] = res.getString(3);
data[3] = res.getString(4);
data[4] = res.getString(5);
data[5] = res.getString(6);
tableModel.addRow(data);
}
res.close();
stt.close();
kon.close();
} catch (Exception ex) {
System.err.println(ex.getMessage());
}
-
52
}
int row = 0;
public void Tampil(){
row = table.getSelectedRow();
NPinjaman.setText(tableModel.getValueAt(row,
0).toString());
TglPinjaman.setText(tableModel.getValueAt(row,
1).toString());
IDAnggota.setSelectedItem(tableModel.getValueAt(row,
2).toString());
NmnlPinjaman.setText(tableModel.getValueAt(row,
3).toString());
IDJensPnjmn.setSelectedItem(tableModel.getValueAt(row,
4).toString());
LamaPinjaman.setSelectedItem(tableModel.getValueAt(row,
5).toString());
-
53
Simpan.setEnabled(false);
Batal.setEnabled(false);
}
public void BersihData(){
buatnomor();
TglPinjaman.setText("");
IDAnggota.setSelectedItem("");
NmnlPinjaman.setText("");
IDJensPnjmn.setSelectedItem("");
LamaPinjaman.setSelectedItem("");
}
private void MasukActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
masuk();
}
private void BatalActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
-
54
BersihData();
}
private void katasandiKeyTyped(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
if (evt.getKeyCode() == KeyEvent.VK_ENTER){
masuk();
}
}
private void masuk(){
try {
Class.forName(driver);
Connection kon =
DriverManager.getConnection(database,user,pass);
Statement stt = kon.createStatement();
String SQL = "SELECT * FROM tbllogin WHERE
namapengguna = '"+namapengguna.getText()+"' AND katasandi =
'"+katasandi.getText()+"'";
ResultSet rss = stt.executeQuery(SQL);
rss.next();
-
55
rss.last();
if (rss.getRow()==1){
new FrmMenuUtama().setVisible(true);
this.dispose();
}
else {
JOptionPane.showMessageDialog(null, "Maaf ! Nama
Pengguna dan Kata Sandi Salah !");
BersihData();
}
} catch (Exception ex) {
System.err.println(ex.getMessage());
}
}
2. Code Generation Frm Menu Utama
package apppiutangusaha;
import java.awt.Dimension;
import java.awt.Toolkit;
import javax.swing.JOptionPane;
-
56
/**
*
* @author acer
*/
public class FrmMenuUtama extends javax.swing.JFrame {
/**
* Creates new form FrmMenuUtama
*/
public FrmMenuUtama() {
initComponents();
Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize=this.getSize();
if(frameSize.height > screenSize.height){
frameSize.height=screenSize.height;
}
if(frameSize.width > screenSize.width) {
frameSize.width=screenSize.width;
}
-
57
this.setLocation((screenSize.width - frameSize.width) /
2,(screenSize.height = screenSize.height) / 4);
}
private void AnggotaActionPerformed(java.awt.event.ActionEvent evt)
{
// TODO add your handling code here:
new FrmAnggota().setVisible(true);
}
Private void JenisPinjamanActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
new FrmJenisPinjaman().setVisible(true);
}
private void
TransaksiPinjamanActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
new FrmTransaksiPinjaman().setVisible(true);
}
-
58
private void
TransaksiAngsuranActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
new FrmTransaksiAngsuran().setVisible(true);
}
private void jMenu1ActionPerformed(java.awt.event.ActionEvent evt)
{
// TODO add your handling code here:
new FrmAnggota().setVisible(true);
}
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
if(JOptionPane.showConfirmDialog(null,"Apakah Anda Yakin
Ingin Keluar \n Jika Ya Tekan OK","Information",
JOptionPane.OK_CANCEL_OPTION,JOptionPane.INFORMATION_M
ESSAGE)==JOptionPane.OK_OPTION)
this.dispose();
-
59
}
private void jMenuItem4ActionPerformed(java.awt.event.ActionEvent
evt) {
// TODO add your handling code here:
if(JOptionPane.showConfirmDialog(null,"Apakah Anda Yakin
Ingin Keluar \n Jika Ya Tekan OK","Information",
JOptionPane.OK_CANCEL_OPTION,JOptionPane.INFORMATION_M
ESSAGE)==JOptionPane.OK_OPTION)
this.dispose();
}
private void jMenuItem3ActionPerformed(java.awt.event.ActionEvent
evt) {
// TODO add your handling code here:
new FrmJenisPinjaman().setVisible(true);
}
private void jMenu2ActionPerformed(java.awt.event.ActionEvent evt)
{
-
60
// TODO add your handling code here:
new FrmTransaksiPinjaman().setVisible(true);
}
private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent
evt) {
// TODO add your handling code here:
new FrmTransaksiAngsuran().setVisible(true);
}
3. Code Generation Data Transaksi Pinjaman
package apppiutangusaha;
import apppiutangusaha.source.Database;
import javax.swing.*;
import java.awt.*;
import java.sql.*;
import java.util.Date;
/**
-
61
*
* @author acer
*/
public class FrmTransaksiPinjaman extends javax.swing.JFrame {
Database dbsetting;
String driver,database,user,pass,userLogin;
private Object tabel
/**
* Creates new form FrmTransaksiPinjaman
*/
public FrmTransaksiPinjaman() {
initComponents();
Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize=this.getSize();
if(frameSize.height > screenSize.height){
frameSize.height=screenSize.height;
-
62
}
if(frameSize.width > screenSize.width) {
frameSize.width=screenSize.width;
}
this.setLocation((screenSize.width - frameSize.width) / 2,(screenSize.height
= screenSize.height) / 10);
dbsetting = new Database();
driver = dbsetting.SettingPanel("DBDriver");
database = dbsetting.SettingPanel("DBDatabase");
user = dbsetting.SettingPanel("DBUsername");
pass = dbsetting.SettingPanel("DBPassword");
table.setModel(tableModel);
Tabel(table, new int[]{100, 100, 100, 90, 80, 90, 90,90});
setDefaultTable();
TampilComboAnggota();
TampilComboJenisPinjaman();
-
63
//TampilComboPinjaman();
TampilComboUser();
buatnomor();
}
private javax.swing.table.DefaultTableModel
tableModel=getDefaultTabelModel();
private void Tabel(javax.swing.JTable tb, int lebar[] ) {
tb.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
int kolom=tb.getColumnCount();
for(int i=0;i < kolom;i++) {
javax.swing.table.TableColumn
tbc=tb.getColumnModel().getColumn(i);
tbc.setPreferredWidth(lebar[i]);
tb.setRowHeight(17);
}
}
-
64
private javax.swing.table.DefaultTableModel getDefaultTabelModel() {
return new javax.swing.table.DefaultTableModel(
new Object[][] {},
new String []
{"NoPinjmn","Tanggal","IDAnggota","NominalPinjmn","IDJnsPnjmn","LamaPnj
mn", "IDUser", "TotalPinjaman"}
){
boolean[] canEdit = new boolean[]{
false, false, false, false ,false, false, false,
false
};
public boolean isCellEditable(int rowIndex, int columnIndex){
return canEdit[columnIndex];
}
};
}
-
65
String data[]=new String[8];
private void setDefaultTable() {
try {
Class.forName(driver);
Connection kon = DriverManager.getConnection(database,user,pass);
Statement stt = kon.createStatement();
String SQL = "SELECT * FROM tblpinjaman";
ResultSet res = stt.executeQuery(SQL);
while(res.next()){
data[0] = res.getString(1);
data[1] = res.getString(2);
data[2] = res.getString(3);
data[3] = res.getString(4);
data[4] = res.getString(5);
data[5] = res.getString(6);
data[6] = res.getString(7);
-
66
data[7] = res.getString(8);
tableModel.addRow(data);
}
res.close();
stt.close();
kon.close();
} catch (Exception ex) {
System.err.println(ex.getMessage());
}
int row = 0;
public void Tampil(){
row = table.getSelectedRow();
NPinjaman.setText(tableModel.getValueAt(row, 0).toString());
TglPinjaman.setText(tableModel.getValueAt(row, 1).toString());
IDAnggota.setSelectedItem(tableModel.getValueAt(row,
2).toString());
-
67
NmnlPinjaman.setText(tableModel.getValueAt(row, 3).toString());
IDJensPnjmn.setSelectedItem(tableModel.getValueAt(row,
4).toString());
LamaPinjaman.setText(tableModel.getValueAt(row, 5).toString());
IDUser.setSelectedItem(tableModel.getValueAt(row,
6).toString());
TotlPinjmn.setText(tableModel.getValueAt(row, 7).toString());
Simpan.setEnabled(false);
Batal.setEnabled(false)
}
public void BersihData(){
buatnomor();
TglPinjaman.setText("");
IDAnggota.setSelectedItem("");
NmnlPinjaman.setText("");
IDJensPnjmn.setSelectedItem("");
-
68
LamaPinjaman.setText("")
}
/**
* 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.
*/
private void TambahBaruActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
BersihData();
TanggalOtomatis();
NPinjaman.requestFocus();
Simpan.setEnabled(true);
NmnlPinjaman.getText();
JnsPinjmn.setEnabled(false);
-
69
Bunga.setEnabled(false);
NmnlBunga.setEnabled(false);
TotlPinjmn.getText();
NMAnggota.setEnabled(false);
Almt.setEnabled(false);
Pekerjaan.setEnabled(false);
NOKtp.setEnabled(false);
NTelp.setEnabled(false);
NmUser.setEnabled(false);
}
private void SimpanActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
String NP=NPinjaman.getText();
String TP=TglPinjaman.getText();
String IDA=IDAnggota.getSelectedItem().toString();
String NT=NTelp.getText();
-
70
String IDP=IDJensPnjmn.getSelectedItem().toString();
String LP=LamaPinjaman.getText().toString();
String IU=IDUser.getSelectedItem().toString();
String TotlP=TotlPinjmn.getText();
if ((NP.isEmpty())|(TP.isEmpty())
|(IDA.isEmpty()|(NT.isEmpty()|(IDP.isEmpty())|(LP.isEmpty())|(IU.isEmpty())|(T
otlP.isEmpty()))))
{
JOptionPane.showMessageDialog(null,"data tidak boleh kosong, silahkan
dilengkapi");
NPinjaman.requestFocus();
}else {
try {
Class.forName(driver);
Connection kon = DriverManager.getConnection(database,user,pass);
Statement stt = kon.createStatement();
-
71
String SQL = "insert into tblpinjaman
values('"+NPinjaman.getText()+"',"+
"'"+TglPinjaman.getText()+"',"+
"'"+IDAnggota.getSelectedItem()+"',"+
"'"+NmnlPinjaman.getText()+"',"+
"'"+IDJensPnjmn.getSelectedItem()+"',"+
"'"+LamaPinjaman.getText()+"',"+
"'"+IDUser.getSelectedItem()+"',"+
"'"+TotlPinjmn.getText()+"')";
stt.executeUpdate(SQL);
data[0] = NPinjaman.getText();
data[1] = TglPinjaman.getText();
data[2] = IDAnggota.getSelectedItem().toString();
data[3] = NmnlPinjaman.getText();
data[4] = IDJensPnjmn.getSelectedItem().toString();
data[5] = LamaPinjaman.getText().toString();
-
72
data[6] = IDUser.getSelectedItem().toString();
data[7] = TotlPinjmn.getText();
tableModel.insertRow(0, data);
stt.close();
kon.close();
BersihData();
// JOptionPane.showMessageDialog(this, "Data Telah Berhasil Di
Tambah");
} catch (Exception ex) {
System.err.println(ex.getMessage());
}
Simpan.setEnabled(true);
TanggalOtomatis();
NmnlBunga.setText("");
TotlPinjmn.setText("");
NPinjaman.requestFocus();
-
73
}
}
private void BatalActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
BersihData();
TambahBaru.setEnabled(true);
}
private void tableMouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
if (evt.getClickCount()==1) {
Tampil();
}
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
-
74
if(JOptionPane.showConfirmDialog(null,"Apakah Anda Yakin Ingin Keluar
\n Jika Ya Tekan OK","Information",
JOptionPane.OK_CANCEL_OPTION,JOptionPane.INFORMATION_MESSAG
E)==JOptionPane.OK_OPTION)
this.dispose();
}
private void IDAnggotaActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try {
Connection kon = DriverManager.getConnection(database,user,pass);
Statement stt =
kon.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String SQL = "SELECT * FROM tblanggota where Idanggota='"+
IDAnggota.getSelectedItem().toString()+"'";
ResultSet res = stt.executeQuery(SQL);
res.absolute(1);
-
75
NMAnggota.setText(res.getString("namaanggota"));
Almt.setText(res.getString("alamat"));
Pekerjaan.setText(res.getString("pekerjaan"));
NOKtp.setText(res.getString("noktp"));
NTelp.setText(res.getString("notelp"));
} catch (SQLException ex) {
}
}
///mem
public void TampilComboAnggota(){
try {
Connection kon = DriverManager.getConnection(database,user,pass);
Statement stt =
kon.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String SQL = "SELECT * FROM tblanggota";
-
76
ResultSet res = stt.executeQuery(SQL);
while(res.next()){
IDAnggota.addItem(res.getString("IdAnggota"));
}
} catch (SQLException ex) {
}
}
private void IDJensPnjmnItemStateChanged(java.awt.event.ItemEvent evt) {
// TODO add your handling code here:
try {
Connection kon = DriverManager.getConnection(database,user,pass);
Statement stt =
kon.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String SQL = "SELECT * FROM tbljenispinjaman where
Idjenispinjaman='"+ IDJensPnjmn.getSelectedItem().toString()+"'";
-
77
ResultSet res = stt.executeQuery(SQL);
res.absolute(1);
JnsPinjmn.setText(res.getString("jenispinjaman"));
Bunga.setText(res.getString("bunga"));
NmnlBunga.setText(res.getString("nominalbunga"));
LamaPinjaman.setText(res.getString("lamapinjaman"));
} catch (SQLException ex) {
}
}
/// mem
public void TampilComboJenisPinjaman(){
try {
Connection kon = DriverManager.getConnection(database,user,pass);
Statement stt =
kon.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
-
78
String SQL = "SELECT * FROM tbljenispinjaman";
ResultSet res = stt.executeQuery(SQL);
while(res.next()){
IDJensPnjmn.addItem(res.getString("Idjenispinjaman"));
}
} catch (SQLException ex) {
}
}
//mem
// public void TampilComboPinjaman(){
// try {
// Connection kon = DriverManager.getConnection(database,user,pass);
// Statement stt =
kon.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
// String SQL = "SELECT * FROM tblpinjaman";
-
79
// ResultSet res = stt.executeQuery(SQL);
// while(res.next()){
// LamaPinjaman.addItem(res.getString("lamapinjaman"));
// }
// } catch (SQLException ex) {
//
// }
// }
private void isiKeyTyped(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
if(evt.getKeyCode()==100){
tableModel.getDataVector().removeAllElements();
tableModel.fireTableDataChanged();
try {
Class.forName(driver);
Connection kon = DriverManager.getConnection(database,user,pass);
-
80
Statement stt = kon.createStatement();
String SQL = "SELECT * FROM tblpinjaman" ;
ResultSet rss= stt.executeQuery(SQL);
while(rss.next()){
data[0]=rss.getString(1);
data[1]=rss.getString(2);
data[2]=rss.getString(3);
data[3]=rss.getString(4);
data[4]=rss.getString(5);
data[5]=rss.getString(6);
data[6]=rss.getString(7);
data[7]=rss.getString(8);
tableModel.addRow(data)
}
}
catch (Exception ex){
-
81
System.err.println(ex.getMessage());
}
}
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
tableModel.getDataVector().removeAllElements();
tableModel.fireTableDataChanged();
String NPinjaman=isi.getText();
String TglPinjaman=isi.getText();
String IDAnggota=isi.getText();
String NominalPinjaman=isi.getText();
String IDJenisPinjaman=isi.getText();
String LamaPinjaman=isi.getText();
String IDUser=isi.getText();
String TotlPinjmn=isi.getText();
-
82
try {
Class.forName(driver);
Connection kon = DriverManager.getConnection(database,user,pass);
Statement stt = kon.createStatement();
String SQL = "SELECT * FROM tblpinjaman WHERE nopinjaman like
'%"+NPinjaman+"%'"
+ "OR tglpinjaman like '%"+TglPinjaman+"%'"
+ "OR Idanggota like '%"+IDAnggota+"%'"
+ "OR nominalpinjaman like '%"+NominalPinjaman+"%'"
+ "OR Idjenispinjaman like '%"+IDJenisPinjaman+"%'"
+ "OR lamapinjaman like '%"+LamaPinjaman+"%'"
+ "OR Iduser like '%"+IDUser+"%'"
+ "OR totalpinjaman '%"+TotlPinjmn+"%'";
ResultSet rss= stt.executeQuery(SQL);
while(rss.next()){
data[0]=rss.getString(1);
-
83
data[1]=rss.getString(2);
data[2]=rss.getString(3);
data[3]=rss.getString(4);
data[4]=rss.getString(5);
data[5]=rss.getString(6);
data[6]=rss.getString(7);
data[7]=rss.getString(8);
tableModel.addRow(data);
}
}
catch (Exception ex){
System.err.println(ex.getMessage());
}
}
private void NPinjamanKeyTyped(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
-
84
if(NPinjaman.getText().length()>6)
evt.consume();
//hanya bisa diinput dengan angka saja
char c =evt.getKeyChar();
if(!Character.isDigit(c))
evt.consume();
}
private void IDUserItemStateChanged(java.awt.event.ItemEvent evt) {
// TODO add your handling code here:
try {
Connection kon = DriverManager.getConnection(database,user,pass);
Statement stt =
kon.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
-
85
String SQL = "SELECT * FROM tbluser where Iduser='"+
IDUser.getSelectedItem().toString()+"'";
ResultSet res = stt.executeQuery(SQL);
res.absolute(1);
NmUser.setText(res.getString("namauser"));
} catch (SQLException ex) {
}
}
private void HitungActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
int a,b,c ;
a = Integer.parseInt(NmnlBunga.getText());
b = Integer.parseInt(NmnlPinjaman.getText());
c = a + b ;
TotlPinjmn.setText(String.valueOf(c));
}
-
86
//mem
public void TampilComboUser(){
try {
Connection kon = DriverManager.getConnection(database,user,pass);
Statement stt =
kon.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String SQL = "SELECT * FROM tbluser";
ResultSet res = stt.executeQuery(SQL);
while(res.next()){
IDUser.addItem(res.getString("Iduser"));
}
} catch (SQLException ex) {
}
}
public void TanggalOtomatis(){
-
87
Date tanggal = new Date();
TglPinjaman.setText("" + (String.format("%1$tY-%1$tm-%1$td",tanggal)));
}
public void buatnomor(){
try{
Class.forName(driver);
Connection kon = DriverManager.getConnection(database,user,pass);
Statement stt = kon.createStatement();
String SQL = "SELECT * FROM tblpinjaman ORDER by
nopinjaman desc ";
ResultSet res = stt.executeQuery(SQL);
if (res.next())
{
int no_t = Integer.parseInt(res.getString("nopinjaman")) ;
NPinjaman.setText(Integer.toString(no_t+1));
}
-
88
else{
int no_t = 1 ;
NPinjaman.setText(Integer.toString(no_t));
}
res.close();
}catch (Exception e){
}
}
/**
* @param args he command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//
-
89
/* 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(FrmTransaksiPinjaman.class.getName()).log(j
ava.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
-
90
java.util.logging.Logger.getLogger(FrmTransaksiPinjaman.class.getName()).log(j
ava.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(FrmTransaksiPinjaman.class.getName()).log(j
ava.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(FrmTransaksiPinjaman.class.getName()).log(j
ava.util.logging.Level.SEVERE, null, ex);
}
//
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
-
91
new FrmTransaksiPinjaman().setVisible(true);
}
});
}
4. Code Generation Data Transaksi Angsuran
package apppiutangusaha;
import apppiutangusaha.source.Database;
import javax.swing.*;
import java.awt.*;
import java.sql.*;
import java.util.Date;
/**
*
* @author acer
*/
public class FrmTransaksiAngsuran extends javax.swing.JFrame {
Database dbsetting;
String driver,database,user,pass,userLogin;
private Object tabel;
-
92
/**
* Creates new form FrmTransaksiAngsuran
*/
public FrmTransaksiAngsuran() {
initComponents();
Dimension
screenSize=Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize=this.getSize();
if(frameSize.height > screenSize.height){
frameSize.height=screenSize.height;
}
if(frameSize.width > screenSize.width) {
frameSize.width=screenSize.width;
}
this.setLocation((screenSize.width - frameSize.width) /
2,(screenSize.height = screenSize.height) / 8);
dbsetting = new Database();
driver = dbsetting.SettingPanel("DBDriver");
-
93
database = dbsetting.SettingPanel("DBDatabase");
user = dbsetting.SettingPanel("DBUsername");
pass = dbsetting.SettingPanel("DBPassword");
table.setModel(tableModel);
Tabel(table, new int[]{75, 75, 75, 75, 80, 100, 100,100,100});
setDefaultTable();
TampilComboPinjaman();
TampilComboUser();
buatnomor();
}
private javax.swing.table.DefaultTableModel
tableModel=getDefaultTabelModel();
private void Tabel(javax.swing.JTable tb, int lebar[] ) {
tb.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
int kolom=tb.getColumnCount();
for(int i=0;i < kolom;i++) {
javax.swing.table.TableColumn
tbc=tb.getColumnModel().getColumn(i);
tbc.setPreferredWidth(lebar[i]);
-
94
tb.setRowHeight(17);
}
}
private javax.swing.table.DefaultTableModel
getDefaultTabelModel() {
return new javax.swing.table.DefaultTableModel(
new Object[][] {},
new String [] {"NoAngsuran","Tanggal", "NoPinjaman",
"NamaAnggota","AngsuranKe", "JumlahAngsuran", "SisaPinjaman",
"IDUser"}
){
boolean[] canEdit = new boolean[]{
false, false, false, false, false,
false
};
public boolean isCellEditable(int rowIndex, int
columnIndex){
return
canEdit[columnIndex];
-
95
}
};
}
String data[]=new String[9];
private void setDefaultTable() {
try {
Class.forName(driver);
Connection kon =
DriverManager.getConnection(database,user,pass);
Statement stt = kon.createStatement();
String SQL = "SELECT * FROM tblangsuran";
ResultSet res = stt.executeQuery(SQL);
while(res.next()){
data[0] = res.getString(1);
data[1] = res.getString(2);
data[2] = res.getString(3);
data[3] = res.getString(4);
data[4] = res.getString(5);
data[5] = res.getString(6);
data[6] = res.getString(7);
-
96
data[7] = res.getString(8);
tableModel.addRow(data);
}
res.close();
stt.close();
kon.close();
} catch (Exception ex) {
System.err.println(ex.getMessage());
}
}
int row = 0;
public void Tampil(){
row = table.getSelectedRow();
NAngsuran.setText(tableModel.getValueAt(row,
0).toString());
TglAngsuran.setText(tableModel.getValueAt(row,
1).toString());
-
97
NPinjaman.setSelectedItem(tableModel.getValueAt(row,
2).toString());
NAnggota.setText(tableModel.getValueAt(row,
3).toString());
Angsuranke.setText(tableModel.getValueAt(row,
4).toString());
JAngsuran.setText(tableModel.getValueAt(row,
5).toString());
SisaPinjaman.setText(tableModel.getValueAt(row,
6).toString());
IDUser.setSelectedItem(tableModel.getValueAt(row,
7).toString());
Simpan.setEnabled(false);
Batal.setEnabled(false);
}
public void BersihData(){
buatnomor();
NAngsuran.setText("");
-
98
TglAngsuran.setText("");
NPinjaman.setSelectedItem("");
NAnggota.setText("");
Angsuranke.setText("");
JAngsuran.setText("");
SisaPinjaman.setText("");
IDUser.setSelectedItem("");
}
/**
* 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.
*/
private void tableMouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
if (evt.getClickCount()==1) {
Tampil();
-
99
}
}
private void SimpanActionPerformed(java.awt.event.ActionEvent
evt) {
// TODO add your handling code here:
String NA=NAngsuran.getText();
String TA=TglAngsuran.getText();
String NP=NPinjaman.getSelectedItem().toString();
String NMA=NAnggota.getText();
String AK=Angsuranke.getText();
String JA=JAngsuran.getText();
String SP=SisaPinjaman.getText();
String IU=IDUser.getSelectedItem().toString();
if ((NA.isEmpty()) | ((TA.isEmpty()) | ((NP.isEmpty()) |
(NMA.isEmpty())
|(AK.isEmpty())|(JA.isEmpty())|(SP.isEmpty())|(IU.isEmpty()))))
{
JOptionPane.showMessageDialog(null,"data tidak boleh
kosong, silahkan dilengkapi");
-
100
NAngsuran.requestFocus();
}else {
try {
Class.forName(driver);
Connection kon =
DriverManager.getConnection(database,user,pass);
Statement stt = kon.createStatement();
String SQL = "insert into tblangsuran
values('"+NAngsuran.getText()+"',"+
"'"+TglAngsuran.getText()+"',"+
"'"+NPinjaman.getSelectedItem()+"',"+
"'"+NAnggota.getText()+"',"+
"'"+Angsuranke.getText()+"',"+
"'"+JAngsuran.getText()+"',"+
"'"+SisaPinjaman.getText()+"',"+
"'"+IDUser.getSelectedItem()+"')";
stt.executeUpdate(SQL);
data[0] = NAngsuran.getText();
data[1] = TglAngsuran.getText();
-
101
data[2] = NPinjaman.getSelectedItem().toString();
data[3] = NAnggota.getText();
data[4] = Angsuranke.getText();
data[5] = JAngsuran.getText();
data[6] = SisaPinjaman.getText();
data[7] = IDUser.getSelectedItem().toString();
tableModel.insertRow(0, data);
stt.close();
kon.close();
BersihData();
// JOptionPane.showMessageDialog(this, "Data Telah
Berhasil Di Tambah");
} catch (Exception ex) {
System.err.println(ex.getMessage());
}
Simpan.setEnabled(true);
TanggalOtomatis();
JAngsuran.setText("");
TotlPinjmn.setText("");
}
-
102
}
private void
TambahBaruActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
BersihData();
TanggalOtomatis();
buatnomor();
Angsuranke.requestFocus();
Simpan.setEnabled(true);
NPinjaman.setEnabled(true);
NAnggota.setText("");
TotlPinjmn.setText("");
SisaPinjaman.setEnabled(true);
IDUser.setEnabled(true);
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent
evt) {
-
103
// TODO add your handling code here:
tableModel.getDataVector().removeAllElements();
tableModel.fireTableDataChanged();
String NAngsuran=isi.getText();
String TglAngsuran=isi.getText();
String NPinjaman=isi.getText();
String AngsuranKe=isi.getText();
String JAngsuran=isi.getText();
String SisaPinjaman=isi.getText();
String IDUser=isi.getText();
try {
Class.forName(driver);
Connection kon =
DriverManager.getConnection(database,user,pass);
Statement stt = kon.createStatement();
String SQL = "SELECT * FROM tblangsuran WHERE
noangsuran like '%"+NAngsuran+"%'"
+ "OR tglangsuran like '%"+ TglAngsuran+"%'"
+ "OR nopinjaman like '%"+NPinjaman+"%'"
+ "OR angsuranke like '%"+AngsuranKe+"%'"
-
104
+ "OR jumlahangsuran like '%"+JAngsuran+"%'"
+ "OR sisapinjaman like '%"+SisaPinjaman+"%'"
+ "OR Iduser like '%"+IDUser+"%'";
ResultSet rss= stt.executeQuery(SQL);
while(rss.next()){
data[0]=rss.getString(1);
data[1]=rss.getString(2);
data[2]=rss.getString(3);
data[3]=rss.getString(4);
data[4]=rss.getString(5);
data[5]=rss.getString(6);
data[6]=rss.getString(7);
tableModel.addRow(data);
}
}
catch (Exception ex){
System.err.println(ex.getMessage());
-
105
}
}
private void isiKeyTyped(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
if(evt.getKeyCode()==100){
tableModel.getDataVector().removeAllElements();
tableModel.fireTableDataChanged();
try {
Class.forName(driver);
Connection kon =
DriverManager.getConnection(database,user,pass);
Statement stt = kon.createStatement();
String SQL = "SELECT * FROM tblangsuran" ;
ResultSet rss= stt.executeQuery(SQL);
while(rss.next()){
data[0]=rss.getString(1);
data[1]=rss.getString(2);
data[2]=rss.getString(3);
data[3]=rss.getString(4);
-
106
data[4]=rss.getString(5);
data[5]=rss.getString(6);
data[6]=rss.getString(7);
tableModel.addRow(data);
}
}
catch (Exception ex){
System.err.println(ex.getMessage());
}
}
}
private void jButton3ActionPerformed(java.awt.event.ActionEvent
evt) {
// TODO add your handling code here:
-
107
if(JOptionPane.showConfirmDialog(null,"Apakah Anda Yakin
Ingin Keluar \n Jika Ya Tekan OK","Information",
JOptionPane.OK_CANCEL_OPTION,JOptionPane.INFORMATIO
N_MESSAGE)==JOptionPane.OK_OPTION)
this.dispose();
}
private void
NPinjamanItemStateChanged(java.awt.event.ItemEvent evt) {
// TODO add your handling code here:
try {
Connection kon =
DriverManager.getConnection(database,user,pass);
Statement stt =
kon.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String SQL = "SELECT * FROM tblpinjaman where
nopinjaman='"+ NPinjaman.getSelectedItem().toString()+"'";
ResultSet res = stt.executeQuery(SQL);
res.absolute(1);
-
108
TotlPinjmn.setText(res.getString("totalpinjaman"));
} catch (SQLException ex) {
}
}
///mem
public void TampilComboPinjaman(){
try {
Connection kon =
DriverManager.getConnection(database,user,pass);
Statement stt =
kon.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String SQL = "SELECT * FROM tblpinjaman";
ResultSet res = stt.executeQuery(SQL);
while(res.next()){
NPinjaman.addItem(res.getString("nopinjaman"));
}
} catch (SQLException ex) {
-
109
}
}
private void NAngsuranKeyTyped(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
if(NAngsuran.getText().length()>6)
evt.consume();
//hanya bisa diinput dengan angka saja
char c =evt.getKeyChar();
if(!Character.isDigit(c))
evt.consume();
}
private void AngsurankeKeyTyped(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
if(Angsuranke.getText().length()>6)
evt.consume();
//hanya bisa diinput dengan angka saja
char c =evt.getKeyChar();
if(!Character.isDigit(c))
-
110
evt.consume();
}
private void IDUserItemStateChanged(java.awt.event.ItemEvent
evt) {
// TODO add your handling code here:
try {
Connection kon =
DriverManager.getConnection(database,user,pass);
Statement stt =
kon.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String SQL = "SELECT * FROM tbluser where Iduser='"+
IDUser.getSelectedItem().toString()+"'";
ResultSet res = stt.executeQuery(SQL);
res.absolute(1);
NmUser.setText(res.getString("namauser"));
} catch (SQLException ex) {
}
-
111
}
//mem
public void TampilComboUser(){
try {
Connection kon =
DriverManager.getConnection(database,user,pass);
Statement stt =
kon.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String SQL = "SELECT * FROM tbluser";
ResultSet res = stt.executeQuery(SQL);
while(res.next()){
IDUser.addItem(res.getString("Iduser"));
}
} catch (SQLException ex) {
}
}
-
112
private void BatalActionPerformed(java.awt.event.ActionEvent
evt) {
// TODO add your handling code here:
BersihData();
TambahBaru.setEnabled(true);
}
private void jButton4ActionPerformed(java.awt.event.ActionEvent
evt) {
// TODO add your handling code here:
int a,b,c ;
a = Integer.parseInt(TotlPinjmn.getText());
b = Integer.parseInt(JAngsuran.getText());
c = a - b ;
SisaPinjaman.setText(String.valueOf(c));
}
public void TanggalOtomatis(){
-
113
Date tanggal = new Date();
TglAngsuran.setText("" + (String.format("%1$tY-%1$tm-
%1$td",tanggal)));
}
public void buatnomor(){
try{
Class.forName(driver);
Connection kon =
DriverManager.getConnection(database,user,pass);
Statement stt = kon.createStatement();
String SQL = "SELECT * FROM tblangsuran ORDER
by noangsuran desc ";
ResultSet res = stt.executeQuery(SQL);
if (res.next())
{
int no_t =
Integer.parseInt(res.getString("noangsuran")) ;
-
114
NAngsuran.setText(Integer.toString(no_t+1));
}
else{
int no_t = 1 ;
NAngsuran.setText(Integer.toString(no_t));
}
res.close();
}catch (Exception e){
}
}
3.5.2. Spesifikasi Software Dan Hardware
A. Kebutuhan Software
Perangkat lunak merupakan program yang dirancang dan dibuat untuk
pengembangan aplikasi berbasis desktop untuk sistem piutang usaha pada kredit
union cu keluarga kudus Pontianak.
Adapun kebutuhan Software yang diperlukan untuk merancang aplikasi
ini adalah sebagai berikut :
-
115
1. Sistem Operasi : Windows 8 Ultimate 32 bit
2. Webserver : WAMP Server version 2.2
3. Sistem Operasi : Windows 8 Ultimate
4. Webserver : PHPMyAdmin
a. Netbeans : Netbeans Ide 8.2
b. SQLyog : SQLyog 32 bit
c. DBMS : MySQL
d. Xammp : Xammp Versi 3.2.2
B. Kebutuhan Hardware
Perangkat keras salah satu alat yang sangat dibutuhkan untuk mengelola
data aplikasi berbasis desktop untuk sistem piutang usaha pada kredit union cu
keluarga kudus Pontianak, membuat salah satu aplikasi program sehingga dapat
menyajikan laporan yang lengkap. Perangkat keras berupa komputer PC atau
laptop, sebagai media atau sarana untuk pengoperasian aplikasi piutang usaha
pada kredit uion keluarga kudus Pontianak, antara lain :
1. CPU (Central Processing Unit)
a. Processor : 2.20 Ghz
b. Memory : 4 GB
c. Harddisk : 320GB
-
116
2. Monitor : Resolution 1024x768 Pixel LCD
3. Keyboard : 86 Keys
4. Mouse : Optical
5. Printer : Inkjet Printer
3.6. Testing
1. Testing Form Login
Tabel III.3
Hasil Pengujian Black Box Testing Form Login
a. N
o
.
Skenario
pengujian
Test case Hasil yang diharapkan Hasil
penguji
an
Kesimpul
an
1. Username
dan
Password
tidak diisi
kemudian
tekan login
Username:
(Kosong)
Password:
(kosong)
Sistem akan menolak
akses dan menampilkan
pesan “Periksa kembali
Username dan
Password”
Sesuai
Harapa
n
Valid
2. Mengisi
Username
dan
Password
tidak diisi
kemudian
tekan login
Username:Stef
ani(Benar)
Password:
(kosong)
Sistem akan menolak
akses dan menampilkan
pesan “Periksa kembali
Nama dan sandi anda”
Sesuai
Harapa
n
Valid
3. Nama tidak
diisi dan
Sandi diisi
kemudian
tekan login
Username:(kos
ong)
Password:
1234
Sistem akan menolak
akses
dan
menampilkan
pesan “Periksa kembali
Nama dan sandi anda”
Sesuai
Harapa
n
Valid
-
117
4. Mengetikka
n salah satu
nya salah
pada Nama
dan Sandi
kemudian
tekan login
Username:Stef
ani (Benar)
Password:
BBB (Salah)
Sistem akan menolak
akses
dan
menampilkan
pesan “Periksa kembali
Nama dan sandi anda”
Sesuai
Harapa
n
Valid
2. Testing Form Transaksi Pinjaman
Tabel III.4
Hasil Pengujian Black Box Testing Form Transaksi Pinjaman
No. Skenario
pengujian
Test case Hasil yang
diharapkan
Hasil
pengujian
Kesimpulan
1. Mengisi No
Pinjaman, Tanggal,
ID Anggota,
Nominal Pinjaman,
ID Jenis Pinjaman,
Lama Pinjaman
tidak diisi
kemudian tekan
simpan tidak diisi
kemudian tekan
Simpan
No
Pinjaman:(kosong
)
Tanggal: (kosong)
ID
Anggota:(kosong)
Nominal
Pinjaman:(kosong
)
ID Jenis
Pinjaman:(kosong
)
Lama
Pinjaman:(kosong
)
Sistem akan
menolak akses
dan
menampilkan
pesan “data
tidak boleh
kosong, silahkan
dilengkapi”
Sesuai
Harapan
Valid
2. Mengisi No
Pinjaman, Tanggal,
ID Anggota,
Nominal Pinjaman,
ID Jenis Pinjaman,
Lama Pinjaman
tidak diisi
kemudian tekan
simpan
No Pinjaman: 001
Tanggal: 2017-
08-01
ID Anggota:
000.453
Nominal
Pinjaman:
5000000
ID Jenis
Pinjaman:001
Lama
Pinjaman:(kosong
)
Sistem akan
menolak akses
dan
menampilkan
pesan “data
tidak boleh
kosong, silahkan
dilengkapi”
Sesuai
Harapan
Valid
-
118
3. Mengisi No
Pinjaman, Tanggal,
ID Anggota,
Nominal Pinjaman,
ID Jenis Pinjaman,
Lama Pinjaman
tidak diisi
kemudian tekan
Cari
No Pinjaman: 001
Tanggal: 2017-
08-01
ID Anggota:
000.453
Nominal
Pinjaman:
5000000
ID Jenis
Pinjaman:001
Lama
Pinjaman:(kosong
)
Sistem tidak
menampilkan
pencarian
Sesuai
Harapan
Valid
3. Testing Form Transaksi Angsuran
Tabel III.5
Hasil Pengujian Black Box Testing Form Transaksi Angsuran
Skenario pengujian Test case Hasil yang
diharapkan
Hasil
pengu
jian
Kesimpu
lan
No Angsuran, Tgl Angsuran,
No Pinjaman, Total Pinjaman,
AngsuranKe, JumlahAngsuran,
Sisa Pinjaman tidak diisi
kemudian tekan Simpan
No
Angsuran:(kosong)
Tgl
Angsuran:(kosong)
No
Pinjaman:(kosong)
Angsuran
Ke:(kosong)
Sistem akan
menolak akses
dan
menampilk