Upload
others
View
8
Download
0
Embed Size (px)
Citation preview
23
BAB III
ANALISA SISTEM BERJALAN
3.1. Umum
Kebutuhan akan teknologi semakin lama akan semakin meningkat. Salah satu
kebutuhan teknologi adalah di dalam suatu perusahaan terutama untuk membantu
menyelesaikan masalah-masalah yang terjadi. Dalam mengatasi masalah-masalah yang
terjadi dibutuhkan suatu sarana atau alat untuk dapat memberikan informasi secara cepat,
tepat dan akurat. Jika informasi yang terdapat di dalam perusahaan tersebut lambat dalam
penyampaiannya, maka sistem di dalam perusahaan tersebut akan terganggu.
Sistem penjualan pada UD. Anker proses penjualan nya masih belum
terkomputerisasi. Sering terjadi kesalahan pada saat pencatatan laporan, nota yang hilang
sehingga akan mempengaruhi pencatatan dalam buku besar laporan yang dihasilkan tidak
akurat serta membutuhkan waktu yang lama pada saat proses pencatatan laporan yang
ada pada sistem UD. Anker sehingga tidak efisien.
Adanya masalah tersebut maka dari pihak UD. Anker harus melakukan perbaikan dari
sistem penjualan terutama untuk masalah pencatatan buku laporan nota yang sering hilang
pada bagian pengiriman barang harus lebih teliti diperiksa sebelum proses pengiriman.
Dengan menggunakan sistem yang terprogram berbasis dekstop (Netbeans IDE 8.1) akan
lebih terstuktur dan efisien.
24
3.1.1. Tinjauan UD. Anker
Tinjauan perusahaan ini, penulis menuliskan beberapa hal seperti sejarah
perusahaan, struktur organisasi perusahaan dengan tugas dan fungsi dari masing-masing
bagian yang ada di dalam UD. Anker.
3.1.2. Sejarah UD. Anker
UD. Anker berdiri sekitar 15 tahun yang lalu tepatnya pada tahun 2004. Perusahaan
ini merupakan perusahaan dagang yang menjual berbagai macam olahan makanan seperti
Sosis, Bakso, Nugget, Seafood, Otak-otak, dan berbagai olahan makanan lainnya yang
beralamat di Kp. Baru Timur No. 40 Cikampek. UD. Anker ini sudah berbadan hukum
pada tanggal 03 Mei 2017, dengan badan hukum Nomor :
503/4813/493/PK/V/DPMPTSP/2017 dari Dinas Penanaman Modal dan Pelayanan
Terpadu Satu Pintu (DPMPTSP) Kabupaten Karawang.
Awal mula berdirinya perusahaan ini merupakan usaha kecil-kecilan yang belum
memiliki karyawan sama sekali. Usaha ini juga merupakan usaha turun temurun dari
orang tua sang pemilik. Namun sekarang usahanya kini semakin berkembang sudah
memiliki cabang dan memiliki 16 karyawan.
25
3.1.3. Struktur Organisasi dan Fungsi
Gambar III.1. Struktur Organisasi
(Sumber: UD. Anker)
Tugas dan Fungsi
1. Kepala Toko
a. Membuat jadwal shift personil
b. Membuat jadwal libur personil
c. Mengatur cuti personil
d. Menjaga target penjualan toko
e. Meminimalisir permasalahan toko.
2. Kasir
a. Menawarkan promosi yang berlangsung kepada pembeli
26
b. Menjaga kebersihan area kasir
c. Meneliti uang untuk mencegah uang palsu masuk
d. Bertanggung jawab atas selisih uang
e. Harus ramah kepada pembeli.
3. Pelayanan
a. Mempersiapkan service equipment
b. Melaksanakan table set-up dan clear up
c. Menukar lena yang kotor ke lena room
d. Mengambil barang-barang ke gudang
e. Mengambil pesanan tamu
f. Menyajikan pesanan kepada tamu.
4. Bagian Gudang
a. Membuat perencanaan pengadaan barang dan distribusinya
b. Mengawasi dan mengontrol operasional gudang
c. Mengawasi dan mengontrol semua barang yang masuk dan keluar sesuai
dengan SOP
d. Melakukan pengecekan pada barang yang diterima sesuai sop
e. Membuat perencanaan, pengawasan dan laporan pergudangan
f. Memastikan ketersediaan barang sesuai dengan kebutuhan
g. Memastikan aktivitas keluar masuk barang berjalan lancar
h. Melaporkan semua transaksi keluar masuk barang dari dan ke gudang.
5. Sales
a. Aktif mencari target
27
b. Merekap data hasil penjualan
c. Menjamin kepuasan pelanggan
d. Mencari mitra kerja
e. Menyusun strategi lanjutan.
3.2. Tinjauan Kasus
3.2.1. Proses Bisnis Sistem Berjalan
1. Pemesanan Barang
Pelanggan biasanya membeli barang secara langsung dengan datang ke toko atau
bisa juga melalui via telepon untuk memesan barang kepada pemilik toko,
kemudian akan didata oleh pemilik toko barang apa saja yang dipesan oleh
pelanggan. Pemilik membuka pesanan setiap hari kepada pelanggan.
2. Pemeriksaan Bagian Gudang
Setelah menerima data yang diberikan oleh pemilik toko atas pemesanan barang
dari pelanggan, bagian gudang memastikan apakah barang yang dipesan pelanggan
stoknya masih ada digudang atau sudah habis, jika stoknya ada bagian gudang
langsung mempersiapkan barang pesanan dan meminta bagian kasir membuat nota
pembayaran. Namun jika stoknya sudah habis bagian gudang langsung
memberitahukan kepada pemilik toko.
3. Proses Pengiriman Barang
Pengiriman barang kepada pelanggan dilakukan pada saat hari pemesanan barang,
pengirimannya bisa dilakukan hingga keluar kota tidak hanya sekitar cikampek
saja, bagian kasir memberikan bukti pembayaran untuk diberikan kepada bagian
28
pengirim barang dan tidak lupa membawa faktur surat jalan untuk nantinya
diberikan kepada pelanggan sebagai tanda bukti adanya penjualan barang.
Fakturnya terdiri dari dua rangkap yang berwarna putih untuk pelanggan
sedangkan yang berwarna merah untuk pemilik toko.
4. Proses Pembayaran
Pembayaran dilakukan secara tunai pelanggan yang langsung datang ke toko
melakukan transaksi pembayaran kepada bagian kasir, kemudian akan diberikan
sebuah nota berangkap sebagai tanda bukti adanya penjualan barang. Nota
berwarna putih untuk diberikan kepada pelanggan sedangkan nota berwarna merah
untuk pemilik toko yang nantinya akan dilakukan pencatatan secara konvensional
setiap harinya kedalam buku laporan penjualan hingga dibuatkan laporan buku
besar selama 1 bulan berlangsungnya proses penjualan barang yang ada pada UD.
Anker Cikampek.
3.2.2. Unified Modelling Language (UML)
Menurut Mulyani, Sri. (2016) “UML adalah sebuah teknik pengembangan sistem
yang menggunakan bahasa grafis sebagai alat untuk pendokumentasian dan melakukan
spesifikasi pada sistem”.
29
3.2.2. Activity Diagram
1. Activity Diagram Pemesanan Barang
Gambar III.2. Activity Diagram Pemesanan Barang
(Sumber : UD. Anker)
30
2. Activity Diagram Pemeriksaan Bagian Gudang
Gambar III.3. Activity Diagram Pemeriksaan Bagian Gudang
(Sumber : UD. Anker)
31
3. Activity Diagram Pengiriman Barang
Gambar III.4. Activity Diagram Pengiriman Barang
(Sumber : UD. Anker)
32
4. Activity Diagram Pembayaran
Gambar III.5. Activity Diagram Pembayaran
(Sumber : UD. Anker)
33
3.2.3. Spesifikasi Bentuk Dokumen Masukan
Dokumen masukkan merupakan proses awal dari kegiatan pada proses penjulana
di UD. Anker. Adapun bentuk dokumen masukkan tersebut adalah sebagai berikut:
1. Formulir Pemesanan
Nama dokumen : Formulir pendaftaran
Fungsi : sebagai pesanan atas pembelian barang
Sumber : Pelanggan
Tujuan : Pemilik Toko
Media : Kertas
Jumlah Rangkap : 1 lembar
3.2.4. Spesifikasi Bentuk Dokumen Keluaran
Dokumen keluaran terdiri dari proses pencetakan atau output formulir pemesanan
yang berisi data barang yang akan dipesan. Adapun dokumen keluaran tersebut
adalah sebagai berikut :
1. Faktur
Nama Dokumen : Faktur
Fungsi : Bukti setelah melakukan pembelian
Sumber : Pemilik Toko
Tujuan : Pelanggan
Frekuensi : Setiap melakukan transaksi pemesanan barang
Media : Kertas
Jumlah Rangkap : 1 lembar
34
3.2.5. Permasalahan Pokok
Dari hasil analisa dan pengamatan pada UD. Anker maka penulis dapat
mengemukakan beberapa permasalahan pokok yang khususnya terjadi pada sistem
penjualan, antara lain :
1. Karena didalam proses sistem penjulan UD. Anker terutama pencatatan laporannya
masih konvensional dan sering ditemui berbagai macam kendala di setiap harinya,
sehingga proses data yang dimasukan itu sering kali menumpuk pada setiap proses
penjualannya.
2. Pencatatan pada sistem penjualan sering terjadi ketidaksamaan data yang disebabkan
nota yang dikeluarkan beragkap sehingga pernah terjadi kehilangan nota dan akhirnya
akan mempengaruhi hasil laporan penjulan yang tidak akurat.
3. Membutuhkan waktu yang cukup lama dalam pencatatan laporan yang ada pada UD.
Anker terutama pada saat pencatatan laporan penjualan yang pengiriman barangnya
lebih dari ratusan barang dan harus diinput manual satu persatu tentu saja hal tersebut
tidak efisien.
35
3.2.6. Pemecahan Masalah
Untuk mengatasi permasalahan yang terjadi pada UD. Anker penulis mengajukan
penggunaan sistem penjualan yang lebih efisien. Adapun langkah-langkah yang penulis
lakukan sebagai berikut :
1. Dibutuhkan sistem baru yang dapat menunjang perusahaan dalam proses usahanya
dengan cara membuat sistem yang terprogram berbasis desktop (Netbeans IDE 8.1).
2. Penginputan sistem penjualan tersimpan dengan terstuktur didalam database secara
otomatis sehingga data yang disimpan tidak akan mudah hilang.
3. Proses yang dibutuhkan dalam penginputan sistem penjualan bisa dilakukan secara
cepat dan akurat didalam satu program.
36
3.3. Analisis Kebutuhan Software
3.3.1. Tahapan Analisis
Berdasarkan proses penjualan tunai sistem berjalan pada UD. Anker Cikampek,
maka tahapan berikutnya adalah analisis kebutuhan. Berikut ini spesifikasi kebutuhan
(System Requirement) dari sistem penjualan tunai pada UD. Anker Cikampek
Halaman Admin
A.1. Admin Login
A.2. Admin Mengakses Data Barang
A.3. Admin Mengelola Data Konsumen
A.4. Admin Mengelola Data Pesanan
A.5. Admin Mengakses Data Transaksi
A.6. Admin Mengelola Data Admin
Halaman Gudang
B.1. Gudang Login
B.2. Gudang Mengelola Data Barang
Halaman Keuangan
C.1. Keuagan Login
C.2. Keuangan Mengeola Data Perkiraan
C.3. Keuangan Mengakses Data Jurnal
C.4. Keuangan Mengelola Data Transaksi
37
3.3.2. Use Case Diagram
1. Use Case Diagram Admin
Gambar III.6.
Use Case Diagram Admin
38
A. Use Case Diagram Mengakses Data Barang
Gambar III.7.
Use Case Diagram Mengakses Data Barang
Deskripsi dari use case diagram mengakses data barang :
Tabel III.1.
Deskripsi Use Case Diagram Mengakses Data Barang
Use Case Name Mengakses Data Barang
Requirements A2
Goal Admin dapat melihat list data barang.
Pre-Conditions Admin telah melakukan login sebagai Admin dan
mengakses form data barang.
39
Post-Condition Data barang berhasil mencari list data barang.
Failed end
Conditions
Gagal mencari list data barang.
Primary Actor Admin
Main Flow / Basic
Path
1. Admin mengakses form data barang.
2. Admin memilih tombol “Cari”.
3. Sistem menampilkan data barang yang dicari.
Alternate
Invariant /
Invariant 1
A1. Admin mencari data barang.
A2. Sistem menampilkan data barang yang dicari.
Invariant 2 -
40
B. Use Case Diagram Mengelola Data Konsumen
Gambar III.8.
Use Case Diagram Mengelola Data Konsumen
Deskripsi dari use case diagram mengelola data konsumen :
Tabel III.2.
Deskripsi Use Case Diagram Mengelola Data Konsumen
Use Case Name Mengelola Data Konsumen
Requirements A3
Goal Admin dapat mengolah data konsumen baik menambah,
mengubah dan menghapus, serta melihat list data
konsumen.
41
Pre-Conditions Admin telah melakukan login sebagai Admin dan
mengakses form data konsumen.
Post-Condition Data konsumen berhasil disimpan, diubah, dihapus dan
melihat list data konsumen.
Failed end
Conditions
Gagal menyimpan, mengubah dan menghapus data
konsumen.
Primary Actor Admin
Main Flow / Basic
Path
1. Admin mengakses form data konsumen.
2. Admin memilih tombol “Tambah”.
3. Admin menginput data konsumen baru.
4. Admin memilih tombol “Simpan”.
5. Sistem menyimpan data konsumen ke dalam
Database.
6. Sistem menampilkan keterangan “data berhasil
disimpan”.
Alternate Invariant /
Invariant 1
A1. Admin mencari data konsumen.
A2. Sistem menampilkan data konsumen yang dicari.
A3. Admin memilih tombol “Edit”.
A4. Admin mengubah data konsumen.
A5. Admin memilih tombol “Simpan”.
A6. Sistem memperbarui data konsumen ke dalam
Database.
42
A7. Sistem menampilkan keterangan “data berhasil
diedit”.
Invariant 2 B1. Admin mencari data konsumen.
B2. Sistem menampilkan data konsumen yang dicari.
B3. Admin memilih tombol “Hapus”.
B4. Sistem menampilkan pesan konfirmasi “yakin
menghapus pesan”.
B5. Admin memilih tombol “Ya”.
B6. Sistem menghapus data konsumen.
B7. Sistem menampilkan keterangan “data berhasil
dihapus”.
43
C. Use Case Mengelola Data Pesanan
Gambar III.9
Use Case Diagram Mengelola Data Pesanan
Deskripsi dari use case diagram mengelola data pesanan barang :
Tabel III.3.
Deskripsi Use Case Diagram Mengelola Data Pesanan
Use Case Name Mengelola Data Pesanan Barang
Requirements A4
Goal Admin dapat mengolah data pesanan baik menambah,
serta melihat list data pesanan.
44
Pre-Conditions Admin telah melakukan login sebagai Admin dan
mengakses form data pesanan.
Post-Condition Data pesanan barang berhasil disimpan dan melihat list
data pesanan barang.
Failed end
Conditions
Gagal menyimpan data pesanan barang.
Primary Actor Admin
Main Flow / Basic
Path
1. Admin mengakses form data pesanan barang.
2. Admin memilih tombol “Tambah”.
3. Admin menginput data pesanan baru.
4. Admin memilih tombol “Simpan”.
5. Sistem menyimpan data pesanan barang ke dalam
Database.
6. Sistem menampilkan keterangan “data berhasil
disimpan”.
Alternate Invariant /
Invariant 1
-
Invariant 2 -
45
D. Use Case Diagram Mengakses Data Transaksi
Gambar III.10.
Use Case Diagram Mengakses Data Transaksi
Deskripsi dari use case diagram mengakses data transaksi :
Tabel III.4.
Deskripsi Use Case Diagram Mengakses Data Transaksi
Use Case Name Mengakses Data Transaksi
Requirements A4
Goal Admin dapat melihat list data transaksi.
Pre-Conditions Admin telah melakukan login sebagai Admin dan
mengakses form data transaksi.
46
Post-Condition Data transaksi berhasil mencari list data transaksi.
Failed end
Conditions
Gagal mencari data transaksi.
Primary Actor Admin
Main Flow / Basic
Path
1. Admin mengakses form data transaksi.
2. Admin memilih tombol “Cari”.
3. Sistem mencari data transaksi ke dalam Database.
Alternate Invariant /
Invariant 1
-
Invariant 2 -
47
E. Use Case Diagram Mengelola Data Admin
Gambar III.11.
Use Case Diagram Mengelola Data Admin
Deskripsi dari use case diagram mengelola data admin :
Tabel III.5.
Deskripsi Use Case Diagram Mengelola Data Admin
Use Case Name Mengelola Data Admin
Requirements A5
Goal Admin dapat mengolah data admin baik menambah,
mengubah, menghapus serta melihat list data admin.
48
Pre-Conditions Admin telah melakukan login sebagai Admin dan
mengakses form data Admin.
Post-Condition Data laporan Admin berhasil disimpan, dirubah, dihapus
dan melihat list data laporan Admin.
Failed end
Conditions
Gagal menyimpan, mengubah, dan menghapus data
admin.
Primary Actor Admin
Main Flow / Basic
Path
1. Admin mengakses form data Admin.
2. Admin memilih tombol “Tambah”.
3. Admin menginput data admin baru.
4. Admin memilih tombol “Simpan”.
5. Sistem menyimpan data admin ke dalam Database.
6. Sistem menampilkan keterangan “data berhasil
disimpan”.
Alternate Invariant /
Invariant 1
A1. Admin mencari data admin.
A2. Sistem menampilkan data admin yang dicari.
A3. Admin memilih tombol “Edit”.
A4. Admin mengubah data admin.
A5. Admin memilih tombol “Simpan”.
A6. Sistem memperbarui data admin ke dalam
Database.
49
A7. Sistem menampilkan keterangan “data berhasil
diedit”.
Invariant 2 A1. Admin mencari data admin.
B2. Sistem menampilkan data admin yang dicari.
B3. Admin memilih tombol “Hapus”.
B4. Sistem menampilkan pesan konfirmasi “yakin
menghapus pesan”.
B5. Admin memilih tombol “Ya”.
B6. Sistem menghapus data admin.
B7. Sistem menampilkan keterangan “data berhasil
dihapus”.
2. Use Case Diagram Gudang
Gambar III.12.
Use Case Diagram Gudang
50
A. Use Case Diagram Mengelola Data Barang
Gambar III.13.
Use Case Diagram Mengelola Data Barang
Deskripsi dari use case diagram mengelola data barang :
Tabel III.6.
Deskripsi Use Case Diagram Mengelola Data Barang
Use Case Name Mengelola Data Barang
Requirements B2
51
Goal Gudang dapat mengolah data barang baik menambah,
mengubah dan menghapus, serta melihat list data
barang.
Pre-Conditions Gudang telah melakukan login sebagai Keuangan dan
mengakses form data barang.
Post-Condition Data barang berhasil disimpan, diubah, dihapus dan
melihat list data barang.
Failed end
Conditions
Gagal menyimpan, mengubah dan menghapus data
barang.
Primary Actor Gudang
Main Flow / Basic
Path
1. Gudang mengakses form data barang.
2. Gudang memilih tombol “Tambah”.
3. Gudang menginput data barang baru.
4. Gudang memilih tombol “Simpan”.
5. Sistem menyimpan data barang ke dalam Database.
6. Sistem menampilkan keterangan “data berhasil
disimpan”.
Alternate Invariant /
Invariant 1
A1. Gudang mencari data barang.
A2. Sistem menampilkan data barang yang dicari.
A3. Gudang memilih tombol “Edit”.
A4. Gudang mengubah data barang.
A5. Gudang memilih tombol “Simpan”.
52
A6. Sistem memperbarui data barang ke dalam
Database.
A7. Sistem menampilkan keterangan “data berhasil
diedit”.
Invariant 2 B1. Gudang mencari data barang.
B2. Sistem menampilkan data barang yang dicari.
B3. Gudang memilih tombol “Hapus”.
B4. Sistem menampilkan pesan konfirmasi “yakin
menghapus pesan”.
B5. Gudang memilih tombol “Ya”.
B6. Sistem menghapus data barang.
B7. Sistem menampilkan keterangan “data berhasil
dihapus”.
53
3. Use Case Diagram Keuangan
Gambar III.14.
Use Case Diagram Keuangan
54
A. Use Case Diagram Mengelola Data Perkiraan
Gambar III.15.
Use Case Diagram Mengelola Data Perkiraan
Deskripsi dari use case diagram mengelola data akun perkiraan :
Tabel III.7.
Deskripsi Use Case Diagram Mengelola Data Akun Perkiraan
Use Case Name Mengelola Data Perkiraan
Requirements C2
Goal Keuangan dapat mengolah data perkiraan baik
menambah serta melihat list data perkiraan.
Pre-Conditions Keuangan telah melakukan login sebagai Keuangan dan
mengakses form data perkiraan.
55
Post-Condition Data akun perkiraan berhasil disimpan dan melihat list
data perkiraan.
Failed end
Conditions
Gagal menyimpan data perkiraan.
Primary Actor Keuangan
Main Flow / Basic
Path
1. Keuangan mengakses form data perkiraan.
2. Keuangan memilih tombol “Tambah”.
3. Keuangan menginput data perkiraan baru.
4. Keuangan memilih tombol “Simpan”.
5. Sistem menyimpan data perkiraan ke dalam
Database.
6. Sistem menampilkan keterangan “data berhasil
disimpan”.
Alternate Invariant /
Invariant 1
-
Invariant 2 -
56
B. Use Case Diagram Mengakses Data Jurnal
Gambar III.16.
Use Case Diagram Mengakses Data Jurnal
Deskripsi dari use case diagram mengakses data jurnal khusus :
Tabel III.8.
Deskripsi Use Case Diagram Mengakses Data Jurnal
Use Case Name Mengakses Data Jurnal
Requirements C3
Goal Keuangan dapat mengolah data jurnal baik mencetak
serta melihat list data jurnal.
Pre-Conditions Keuangan telah melakukan login sebagai Keuangan dan
mengakses form data jurnal.
57
Post-Condition Data jurnal berhasil dicetak dan melihat list data jurnal.
Failed end
Conditions
Gagal mencetak data jurnal.
Primary Actor Keuangan
Main Flow / Basic
Path
1. Keuangan mengakses form data jurnal.
2. Keuangan memilih tombol “Cetak”.
3. Sistem mencetak data jurnal ke dalam Database.
Alternate Invariant /
Invariant 1
-
Invariant 2 -
C. Use Case Diagram Mengelola Data Transaksi
Gambar III.17.
Use Case Diagram Mengelola Data Transaksi
58
Deskripsi dari use case diagram mengelola data transaksi :
Tabel III.9.
Deskripsi Use Case Diagram Mengelola Data Transaksi
Use Case Name Mengelola Data Transaksi
Requirements C4
Goal Keuangan dapat mengolah data transaksi baik
menambah serta melihat list data transaksi.
Pre-Conditions Keuangan telah melakukan login sebagai Keuangan dan
mengakses form data transkasi.
Post-Condition Data transaksi berhasil disimpan dan melihat list data
transaksi.
Failed end
Conditions
Gagal menyimpan data transaksi.
Primary Actor Keuangan
Main Flow / Basic
Path
1. Keuangan mengakses form data transaksi.
2. Keuangan memilih tombol “Tambah”.
3. Keuangan menginput data transaksi baru.
4. Keuangan memilih tombol “Simpan”.
5. Sistem menyimpan data transaksi ke dalam
Database.
59
Alternate Invariant /
Invariant 1
-
Invariant 2 -
60
3.3.3. Activity Diagram
1. Activity Diagram Admin
Gambar III.18.
Activity Diagram Admin
ya Tidak
61
A. Activity Diagram Mengakses Data Barang
Gambar III.19.
Activity Diagram Mengakses Data Barang
Tidak Ya
62
B. Activity Diagram Mengelola Data Konsumen
Gambar III.20.
Activity Diagram Mengelola Data Konsumen
Tidak Ya
Tidak
Tidak
Tidak
Ya
Ya
Ya
63
C. Activity Diagram Mengelola Data Pesanan
Gambar III.21.
Activity Diagram Mengelola Data Pesanan
Ya Tidak
64
D. Activity Diagram Mengakses Data Transaksi
Gambar III.22.
Activity Diagram Mengakses Data Transaksi
Tidak Ya
65
E. Activity Diagram Mengelola Data Admin
Gambar III.23.
Activity Diagram Mengelola Data Admin
Tidak
Ya
Ya
Tidak
Ya Tidak
Ya Tidak
Ya Tidak
66
4. Activity Diagram Gudang
Gambar III.24.
Activity Diagram Gudang
Tidak Ya
67
A. Activity Diagram Mengelola Data Barang
Gambar III.25.
Activity Diagram Mengelola Data Barang
Tidak
Ya
Tidak
Tidak
Tidak
Ya Ya
Ya
Ya
Tidak
68
5. Activity Diagram Keuangan
Gambar III.26.
Activity Diagram Keuangan
Tidak Ya
69
A. ActivityDiagram Mengelola Data Perkiraan
Gambar III.27.
Activity Diagram Mengelola Data Perkiraan
Ya Tidak
70
B. Activity Diagram Mengakses Data Jurnal
Gambar III.28.
Activity Diagram Mengakses Data Jurnal
71
C. Activity Diagram Mengelola Data Transaksi
Gambar III.29.
Activity Diagram Mengelola Data Transaksi
Ya Tidak
72
3.4. Desain
3.4.1. Entity Relationship Diagram (ERD)
Gambar III.30.
ERD
73
3.4.2. Logical Record Structure (LRS)
Gambar III.31.
LRS
74
3.4.3. Spesifikasi File
Spesifikasi file yang ada pada program aplikasi merupakan susunan atau struktur
tabel, tabel-tabel tersebut terhubung dalam sebuah database.
1. Spesifikasi File Data Admin
Nama Database : penjualan
Nama File : admin
Tipe File : Master File
Akses File : Random
Panjang Record : 105 karakter
Field Key : id_admin
Tabel III.10.
Spesifikasi File Admin
No Elemen Data Akronim Tipe Panjang Keterangan
1. Id Admin id_user Integer 10 Primary Key
2. Nama Admin nama_admin Varchar 15
3. Jenis Kelamin jenis_kelamin Varchar 10
4. Username Username Varchar 25
5. Password Password Varchar 10
75
6. Hak Akses Hak_akses Varchar 15
2. Spesifikasi File Data Barang
Nama Database : penjualan
Nama File : barang
Tipe File : Master File
Akses File : Random
Panjang Record : 123 karakter
Field Key : kd_barang
Tabel III.11.
Spesifikasi File Data Barang
No Elemen Data Akronim Tipe Panjang Keterangan
1. Kode Barang kd_barang Integer 8 Primary Key
2. Nama Barang nama_barang Varchar 50
3. Stok stok Integer 5
4. Harga Harga Integer 10
76
3. Spesifikasi File Data Konsumen
Nama Database : penjualan
Nama File : konsumen
Tipe File : Master File
Akses File : Random
Panjang Record : 133 karakter
Field Key : id_konsumen
Tabel III.12.
Spesifikasi File Data Konsumen
No Elemen Data Akronim Tipe Panjang Keterangan
1. Id Konsumen id_konsumen Integer 10 Primary Key
2. Nama Konsumen nama_konsumen Varchar 15
3. Alamat Alamat Varchar 50
4. Nomor Telepon nomor_telepon Varchar 15
5. Email email Varchar 30
77
4. Spesifikasi File Data Detail Pesanan
Nama Database : penjualan
Nama File : detailpesanan
Tipe File : Transaction File
Akses File : Random
Panjang Record : 125 karakter
Field Key : no_po
Tabel III.13.
Spesifikasi File Data Detail Pesanan Barang
No Elemen Data Akronim Tipe Panjang Keterangan
1. No PO no_po Varchar 8
Primary
Key/Auto
Increment
2. Kode Barang kode_barang Varchar 5
3. Nama Konsumen nama_konsumen Varchar 25
4. Harga Satuan harga Int 15
5. Kuantitas kuantitas Int 5
6. Total total Int 15
78
5. Spesifikasi File Data Pesanan
Nama Database : penjualan
Nama File : pemesanan
Tipe File : Transaction File
Akses File : Random
Panjang Record : 105 karakter
Field Key : no_po
Tabel III.14.
Spesifikasi File Data Pesanan Barang
No Elemen Data Akronim Tipe Panjang Keterangan
1. No PO no_po Varchar 8
Primary
Key/Auto
Increment
2. Tanggal Pesanan tanggal Date -
3. Id Konsumen id_konsumen Varchar 5
4. No Telepon tlp Varchar 15
5. Status Pembayaran status Varchar 15
79
6. Spesifikasi File Data Pembayaran
Nama Database : penjualan
Nama File : pembayaran
Tipe File : Transaction File
Akses File : Random
Panjang Record : 162 karakter
Field Key : no_po
Tabel III.15.
Spesifikasi File Data Pembayaran
No Elemen Data Akronim Tipe Panjang Keterangan
1. Kode Bayar kode_bayar Varchar 8 Primary Key
2. Tanggal tanggal Date -
3. Kode Pesan kode_pesan Varchar 8
4. Id Konsumen id_konsumen Varchar 50
5. Kode Barang kode_barang Varchar 8
6. Jumlah Beli jumlah_beli Integer 5
7. Harga Satuan harga_satuan Integer 12
8. Total total Integer 12
80
7. Spesifikasi File Data Perkiraan
Nama Database : penjualan
Nama File : perkiraan
Tipe File : Transaction File
Akses File : Random
Panjang Record : 40 karakter
Field Key : kode_akun
Tabel III.16.
Spesifikasi File Data Perkiraan
No Elemen Data Akronim Tipe Panjang Keterangan
1. Kode Akun kode_akun Int 5
Primary
Key/Auto
Increment
2. Nama Akun nama_akun Varchar 35
8. Spesifikasi File Data Detail Jurnal
Nama Database : penjualan
81
Nama File : detailjurnal
Tipe File : Transaction File
Akses File : Random
Panjang Record : 70 karakter
Field Key : no_jurnal
Tabel III.17.
Spesifikasi File Data Detail Jurnal
No Elemen Data Akronim Tipe Panjang Keterangan
1. Kode Akun kode_akun Varchar 8
Primary
Key
2. Nama Akun nama_akun Varchar 35
3. Nomor Jurnal no_jurnal Varchar 8
9. Spesifikasi File Data Jurnal
Nama Database : penjualan
Nama File : jurnal
Tipe File : Transaction File
Akses File : Random
Panjang Record : 90 karakter
82
Field Key : no_jurnal
Tabel III.18.
Spesifikasi File Data Jurnal
No Elemen Data Akronim Tipe Panjang Keterangan
1. Nomor Jurnal no_jurnal Varchar 8
Primary
Key/Auto
Increment
2. Kode Bayar kd_bayar Varchar 8
3. Tanggal tanggal date -
4. Debit debet Int 15
5. Kredit kredit Int 15
83
3.4.4. Sequence Diagram
Gambar III.32.
Sequence Diagram
84
3.4.5. Deployment Diagram
Gambar III.33.
Deployment Diagram
3.4.6. User Interface
1. Menu Login
Gambar III.34.
User Interface Menu Login
85
2. Menu Utama
Gambar III.35.
User Interface Menu Utama
3. Menu Mengelola Data Barang
Gambar III.36.
User Interface Mengelola Data Barang
86
4. Menu Mengelola Data Konsumen
Gambar III.37.
User Interface Mengelola Data Konsumen
5. Menu Mengelola Data Transaksi
Gambar III.38.
User Interface Mengelola Data Transaksi
87
6. Menu Mengelola Data Admin
Gambar III.39.
User Interface Mengelola Data Admin
7. Menu Mengelola Data Pesanan
Gambar III.40.
User Interface Mengelola Data Pesanan
88
8. Menu Mengelola Data Perkiraan
Gambar III.41.
User Interface Mengelola Data Perkiraan
9. Menu Mengakses Data Jurnal
Gambar III.42.
User Interface Mengakses Data Jurnal
89
3.5. Implementasi
3.5.1. Code Generation
Pada tahapan ini menampilkan listing program pada form yang terkait dengan
proses bisnis utamanya :
A. Form Data Transaksi Penjualan
import java.sql.ResultSet;
import Database.KoneksiDatabase;
import Database.ResultSetTable;
import java.awt.event.KeyEvent;
import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
90
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.JasperViewer;
public class form_transaksi_penjualan extends javax.swing.JFrame {
ResultSet rs;
KoneksiDatabase con;
int waktumulai = 0;
public form_transaksi_penjualan() {
con = new KoneksiDatabase(new Database.Parameter().HOST_DB, new
Database.Parameter().USERNAME_DB, new
Database.Parameter().PASSWORD_DB);
initComponents();
setTitle("form transaksi penjualan");
setjam();
Loadtabel1();
Loadtabel2();
nonaktif1();
KodePenjualan.setEnabled(false);
TanggalJual.setEnabled(false);
Titik.setEnabled(false);
Tambah.setEnabled(true);
91
Batal.setEnabled(false);
Simpan.setEnabled(false);
JumlahBeli.setEnabled(false);
Cari.setEnabled(false);
IDNama.setEnabled(false);
Loadtabel.setEnabled(false);
Total.setText("0");
}
/**
* 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() {
jPanel1 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
KodePenjualan = new javax.swing.JTextField();
92
IDCustomer = new javax.swing.JTextField();
Titik = new javax.swing.JButton();
jLabel6 = new javax.swing.JLabel();
jLabel7 = new javax.swing.JLabel();
jLabel8 = new javax.swing.JLabel();
jLabel9 = new javax.swing.JLabel();
jLabel10 = new javax.swing.JLabel();
StokTersisa = new javax.swing.JLabel();
jLabel12 = new javax.swing.JLabel();
jLabel13 = new javax.swing.JLabel();
jLabel14 = new javax.swing.JLabel();
KodeBarang = new javax.swing.JTextField();
NamaBarang = new javax.swing.JTextField();
HargaSatuan = new javax.swing.JTextField();
stoksedia = new javax.swing.JTextField();
JumlahBeli = new javax.swing.JTextField();
Total = new javax.swing.JTextField();
jLabel15 = new javax.swing.JLabel();
IDNama = new javax.swing.JTextField();
Cari = new javax.swing.JButton();
Loadtabel = new javax.swing.JButton();
jScrollPane1 = new javax.swing.JScrollPane();
tabelbarang = new javax.swing.JTable();
93
Tambah = new javax.swing.JButton();
Simpan = new javax.swing.JButton();
Batal = new javax.swing.JButton();
jScrollPane2 = new javax.swing.JScrollPane();
tabelpenjualan = new javax.swing.JTable();
total_b = new javax.swing.JLabel();
jLabel18 = new javax.swing.JLabel();
panel12 = new javax.swing.JPanel();
waktu = new javax.swing.JLabel();
TanggalJual = new com.toedter.calendar.JDateChooser();
StokSisa = new javax.swing.JLabel();
jPanel4 = new javax.swing.JPanel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
getContentPane().setLayout(new
org.netbeans.lib.awtextra.AbsoluteLayout());
jPanel1.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
jLabel1.setFont(new java.awt.Font("Times New Roman", 1, 18)); //
NOI18N
jLabel1.setText("FORM TRANSAKSI PENJUALAN");
jPanel1.add(jLabel1, new
org.netbeans.lib.awtextra.AbsoluteConstraints(270, 20, 300, 30));
jLabel2.setFont(new java.awt.Font("Times New Roman", 0, 12)); //
NOI18N
94
jLabel2.setText("Kode Penjualan :");
jPanel1.add(jLabel2, new org.netbeans.lib.awtextra.AbsoluteConstraints(60,
60, 100, 30));
jLabel3.setFont(new java.awt.Font("Times New Roman", 0, 12)); //
NOI18N
jLabel3.setText("Tanggal Penjualan :");
jPanel1.add(jLabel3, new org.netbeans.lib.awtextra.AbsoluteConstraints(60,
100, 100, 20));
jLabel4.setFont(new java.awt.Font("Times New Roman", 0, 12)); //
NOI18N
jLabel4.setText("ID Customer :");
jPanel1.add(jLabel4, new
org.netbeans.lib.awtextra.AbsoluteConstraints(340, 60, 70, 20));
KodePenjualan.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
KodePenjualanActionPerformed(evt);
}
});
jPanel1.add(KodePenjualan, new
org.netbeans.lib.awtextra.AbsoluteConstraints(160, 60, 100, 30));
IDCustomer.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
IDCustomerActionPerformed(evt);
95
}
});
jPanel1.add(IDCustomer, new
org.netbeans.lib.awtextra.AbsoluteConstraints(420, 60, 100, 30));
Titik.setText("...");
Titik.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
TitikActionPerformed(evt);
}
});
jPanel1.add(Titik, new org.netbeans.lib.awtextra.AbsoluteConstraints(540,
60, 50, -1));
jLabel6.setText("......................................................................................................
...........................................................................................................");
jPanel1.add(jLabel6, new org.netbeans.lib.awtextra.AbsoluteConstraints(0,
130, 830, -1));
jLabel7.setFont(new java.awt.Font("Times New Roman", 0, 12)); //
NOI18N
jLabel7.setText("Input Penjualan ");
jPanel1.add(jLabel7, new org.netbeans.lib.awtextra.AbsoluteConstraints(20,
150, 100, 30));
jLabel8.setFont(new java.awt.Font("Times New Roman", 0, 12)); //
NOI18N
96
jLabel8.setText("Kode Barang :");
jPanel1.add(jLabel8, new org.netbeans.lib.awtextra.AbsoluteConstraints(20,
190, 110, 20));
jLabel9.setFont(new java.awt.Font("Times New Roman", 0, 12)); //
NOI18N
jLabel9.setText("Nama Barang :");
jPanel1.add(jLabel9, new org.netbeans.lib.awtextra.AbsoluteConstraints(20,
220, 110, 20));
jLabel10.setFont(new java.awt.Font("Times New Roman", 0, 12)); //
NOI18N
jLabel10.setText("Harga Satuan :");
jPanel1.add(jLabel10, new
org.netbeans.lib.awtextra.AbsoluteConstraints(20, 250, 100, 20));
StokTersisa.setFont(new java.awt.Font("Times New Roman", 0, 12)); //
NOI18N
StokTersisa.setText("Stok Tersedia :");
jPanel1.add(StokTersisa, new
org.netbeans.lib.awtextra.AbsoluteConstraints(20, 280, 100, 20));
jLabel12.setFont(new java.awt.Font("Times New Roman", 0, 12)); //
NOI18N
jLabel12.setText("Jumlah Beli :");
jPanel1.add(jLabel12, new
org.netbeans.lib.awtextra.AbsoluteConstraints(20, 310, 100, 20));
97
jLabel13.setFont(new java.awt.Font("Times New Roman", 0, 12)); //
NOI18N
jLabel13.setText("Total :");
jPanel1.add(jLabel13, new
org.netbeans.lib.awtextra.AbsoluteConstraints(20, 340, 100, 20));
jLabel14.setFont(new java.awt.Font("Times New Roman", 0, 12)); //
NOI18N
jLabel14.setText("Jumlah Bayar :");
jPanel1.add(jLabel14, new
org.netbeans.lib.awtextra.AbsoluteConstraints(20, 370, 100, 20));
jPanel1.add(KodeBarang, new
org.netbeans.lib.awtextra.AbsoluteConstraints(130, 180, 130, 30));
NamaBarang.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
NamaBarangActionPerformed(evt);
}
});
jPanel1.add(NamaBarang, new
org.netbeans.lib.awtextra.AbsoluteConstraints(130, 220, 130, 20));
HargaSatuan.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
HargaSatuanActionPerformed(evt);
98
}
});
jPanel1.add(HargaSatuan, new
org.netbeans.lib.awtextra.AbsoluteConstraints(130, 250, 130, -1));
jPanel1.add(stoksedia, new
org.netbeans.lib.awtextra.AbsoluteConstraints(130, 280, 100, -1));
JumlahBeli.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
JumlahBeliKeyPressed(evt);
}
});
jPanel1.add(JumlahBeli, new
org.netbeans.lib.awtextra.AbsoluteConstraints(130, 310, 100, -1));
jPanel1.add(Total, new org.netbeans.lib.awtextra.AbsoluteConstraints(130,
340, 130, -1));
jLabel15.setFont(new java.awt.Font("Times New Roman", 0, 12)); //
NOI18N
jLabel15.setText("Mencari Nama Barang/Kode :");
jPanel1.add(jLabel15, new
org.netbeans.lib.awtextra.AbsoluteConstraints(290, 160, 150, 20));
jPanel1.add(IDNama, new
org.netbeans.lib.awtextra.AbsoluteConstraints(440, 160, 160, -1));
Cari.setFont(new java.awt.Font("Times New Roman", 1, 12)); // NOI18N
99
Cari.setText("Cari");
Cari.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
CariActionPerformed(evt);
}
});
jPanel1.add(Cari, new org.netbeans.lib.awtextra.AbsoluteConstraints(620,
160, -1, -1));
Loadtabel.setFont(new java.awt.Font("Times New Roman", 1, 12)); //
NOI18N
Loadtabel.setText("Load tabel");
Loadtabel.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
LoadtabelActionPerformed(evt);
}
});
jPanel1.add(Loadtabel, new
org.netbeans.lib.awtextra.AbsoluteConstraints(690, 160, -1, -1));
tabelbarang.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
100
{null, null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));
jScrollPane1.setViewportView(tabelbarang);
jPanel1.add(jScrollPane1, new
org.netbeans.lib.awtextra.AbsoluteConstraints(300, 200, 510, 110));
Tambah.setFont(new java.awt.Font("Times New Roman", 1, 12)); //
NOI18N
Tambah.setText("Tambah");
Tambah.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
TambahActionPerformed(evt);
}
});
jPanel1.add(Tambah, new
org.netbeans.lib.awtextra.AbsoluteConstraints(310, 330, 120, 40));
Simpan.setFont(new java.awt.Font("Times New Roman", 1, 12)); //
NOI18N
Simpan.setText("Simpan");
Simpan.addActionListener(new java.awt.event.ActionListener() {
101
public void actionPerformed(java.awt.event.ActionEvent evt) {
SimpanActionPerformed(evt);
}
});
jPanel1.add(Simpan, new
org.netbeans.lib.awtextra.AbsoluteConstraints(480, 330, 120, 40));
Batal.setFont(new java.awt.Font("Times New Roman", 1, 12)); // NOI18N
Batal.setText("Batal");
Batal.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
BatalActionPerformed(evt);
}
});
jPanel1.add(Batal, new org.netbeans.lib.awtextra.AbsoluteConstraints(660,
330, 120, 40));
tabelpenjualan.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null}
},
new String [] {
102
"Title 1", "Title 2", "Title 3", "Title 4", "Tittle 5", "Tittle 6", "Tittle 7",
"Tittle 8", "Tittle 9"
}
));
jScrollPane2.setViewportView(tabelpenjualan);
jPanel1.add(jScrollPane2, new
org.netbeans.lib.awtextra.AbsoluteConstraints(20, 410, 780, 90));
total_b.setText("0");
jPanel1.add(total_b, new
org.netbeans.lib.awtextra.AbsoluteConstraints(130, 370, 50, 20));
jLabel18.setText("(Enter)");
jPanel1.add(jLabel18, new
org.netbeans.lib.awtextra.AbsoluteConstraints(240, 310, 50, 20));
panel12.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.b
order.BevelBorder.LOWERED));
panel12.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
waktu.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
waktu.setText("jLabel16");
waktu.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
panel12.add(waktu, new org.netbeans.lib.awtextra.AbsoluteConstraints(0,
10, 450, -1));
103
jPanel1.add(panel12, new
org.netbeans.lib.awtextra.AbsoluteConstraints(340, 100, 450, 30));
jPanel1.add(TanggalJual, new
org.netbeans.lib.awtextra.AbsoluteConstraints(160, 100, 150, 30));
StokSisa.setText("Stok Sisa");
jPanel1.add(StokSisa, new
org.netbeans.lib.awtextra.AbsoluteConstraints(640, 220, 60, 20));
jPanel4.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.B
orderFactory.createLineBorder(new java.awt.Color(0, 0, 0)), "Tabel Penjulan
Barang"));
jPanel4.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
jPanel1.add(jPanel4, new org.netbeans.lib.awtextra.AbsoluteConstraints(10,
390, 810, 120));
getContentPane().add(jPanel1, new
org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, 830, 520));
pack();
}// </editor-fold>
private void KodePenjualanActionPerformed(java.awt.event.ActionEvent evt)
{
// TODO add your handling code here:
}
private void IDCustomerActionPerformed(java.awt.event.ActionEvent evt) {
104
// TODO add your handling code here:
}
private void TitikActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
data_konsumen a = new data_konsumen();
a.setVisible(true);
}
private void NamaBarangActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void HargaSatuanActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void SimpanActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try {
if (!KodeBarang.getText().isEmpty() &&
!NamaBarang.getText().isEmpty() && !IDCustomer.getText().isEmpty()
&& !HargaSatuan.getText().isEmpty() &&
!JumlahBeli.getText().isEmpty() && !Total.getText().isEmpty()
&& !KodePenjualan.getText().isEmpty()) {
if (JOptionPane.showConfirmDialog(this, "transaksi berhasil, ingin
menambah transaksi?",
105
"Peringatan", JOptionPane.YES_NO_OPTION) ==
JOptionPane.OK_OPTION) {
//isi data disini
hitungtotal();
update_brg();
simpan();
TanggalJual.setEnabled(false);
IDCustomer.setEnabled(false);
clear();
JumlahBeli.setText("");
Total.setText("");
Loadtabel1();
Loadtabel2();
IDNama.setText("");
IDNama.requestFocus();
} else {
JOptionPane.showMessageDialog(this, "terimakasih, kwitansi
belanja sedang dicetak");
hitungtotal();
update_brg();
simpan();
cetak();
Loadtabel1();
106
Loadtabel2();
nonaktif1();
KodePenjualan.setEnabled(false);
TanggalJual.setEnabled(false);
Titik.setEnabled(false);
Tambah.setEnabled(true);
Batal.setEnabled(false);
Simpan.setEnabled(false);
JumlahBeli.setEnabled(false);
Cari.setEnabled(false);
IDNama.setEnabled(false);
Loadtabel.setEnabled(false);
total_b.setText("0");
IDCustomer.setText("");
KodePenjualan.setText("");
clear();
}
} else {
JOptionPane.showMessageDialog(this, "Data isian ada yang kosong");
}
} catch (Exception e) {
}
}
107
private void CariActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try {
if (!IDNama.getText().isEmpty()) {
rs = con.querySelectAll("barang", "kd_barang LIKE '%" +
IDNama.getText()
+ "%' OR nama_barang LIKE '%" + IDNama.getText() + "%'");
tabelbarang.setModel(new Database.ResultSetTable(rs));
ambildata();
JumlahBeli.setEnabled(true);
stoksedia.setEnabled(false);
} else {
JOptionPane.showMessageDialog(this, "Isi data pencarian");
IDNama.requestFocus();
}
} catch (Exception e) {
}
}
private void LoadtabelActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
Loadtabel1();
IDNama.setText("");
IDNama.requestFocus();
108
clear();
JumlahBeli.setEnabled(false);
}
private void BatalActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
Batal.setEnabled(false);
Simpan.setEnabled(false);
Tambah.setEnabled(true);
JumlahBeli.setEnabled(false);
Loadtabel1();
clear();
KodePenjualan.setText("");
IDCustomer.setText("");
TanggalJual.setEnabled(false);
Titik.setEnabled(false);
Cari.setEnabled(false);
IDNama.setEnabled(false);
Loadtabel.setEnabled(false);
IDCustomer.setEnabled(false);
total_b.setText("0");
}
private void TambahActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
109
id();
TanggalJual.setEnabled(true);
Titik.setEnabled(true);
Tambah.setEnabled(false);
Simpan.setEnabled(true);
Batal.setEnabled(true);
Cari.setEnabled(true);
IDNama.setEnabled(true);
Loadtabel.setEnabled(true);
IDCustomer.setEnabled(true);
}
private void JumlahBeliKeyPressed(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
hitungtotal();
int ttl1 = Integer.parseInt(Total.getText());
int ttl2 = Integer.parseInt(total_b.getText());
int ttl3 = ttl1 + ttl2;
String a = Integer.toString(ttl3);
total_b.setText(a);
}
}
110
/**
* @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());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(form_transaksi_penjualan.class.getName()).l
og(java.util.logging.Level.SEVERE, null, ex);
111
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(form_transaksi_penjualan.class.getName()).l
og(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(form_transaksi_penjualan.class.getName()).l
og(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(form_transaksi_penjualan.class.getName()).l
og(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new form_transaksi_penjualan().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton Batal;
private javax.swing.JButton Cari;
private javax.swing.JTextField HargaSatuan;
private javax.swing.JTextField IDCustomer;
112
private javax.swing.JTextField IDNama;
private javax.swing.JTextField JumlahBeli;
private javax.swing.JTextField KodeBarang;
private javax.swing.JTextField KodePenjualan;
private javax.swing.JButton Loadtabel;
private javax.swing.JTextField NamaBarang;
private javax.swing.JButton Simpan;
private javax.swing.JLabel StokSisa;
private javax.swing.JLabel StokTersisa;
private javax.swing.JButton Tambah;
private com.toedter.calendar.JDateChooser TanggalJual;
private javax.swing.JButton Titik;
private javax.swing.JTextField Total;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel10;
private javax.swing.JLabel jLabel12;
private javax.swing.JLabel jLabel13;
private javax.swing.JLabel jLabel14;
private javax.swing.JLabel jLabel15;
private javax.swing.JLabel jLabel18;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
113
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JLabel jLabel8;
private javax.swing.JLabel jLabel9;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel4;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JPanel panel12;
private javax.swing.JTextField stoksedia;
private javax.swing.JTable tabelbarang;
private javax.swing.JTable tabelpenjualan;
private javax.swing.JLabel total_b;
private javax.swing.JLabel waktu;
// End of variables declaration
private String id() {
String no = null;
try {
con.koneksiDatabase();
String sql = "Select right (kode_jual,4)+1 from transaksi penjulan";
ResultSet rs = con.eksekusiQuery(sql);
if (rs.next()) {
rs.last();
114
no = rs.getString(1);
while (no.length() < 4) {
no = "000" + no;
no = "p" + no;
KodePenjualan.setText(no);
}
} else {
no = "P0001";
KodePenjualan.setText(no);
}
} catch (Exception e) {
}
return no;
}
void setjam() {
new Thread() {
@Override
public void run() {
while (waktumulai == 0) {
Calendar kalender = new GregorianCalendar();
int jam = kalender.get(Calendar.HOUR);
int menit = kalender.get(Calendar.MINUTE);
int detik = kalender.get(Calendar.SECOND);
115
int AM_PM = kalender.get(Calendar.AM_PM);
String siang_malam = "";
if (AM_PM == 1) {
siang_malam = "PM";
} else {
siang_malam = "AM";
}
String time = jam + ":" + menit + ":" + detik + ":" + siang_malam;
waktu.setText(time);
}
}
}.start();
}
private void Loadtabel1() {
String namaKolom[] = {"kd_barang", "nama_barang", "stok", "harga"};
rs = con.querySelect(namaKolom, "barang");
tabelbarang.setModel(new ResultSetTable(rs));
}
private void Loadtabel2() {
String namaKolom[] = {"kode_jual", "tanggal_jual", "id_konsumen",
"kode_barang", "jumlah_beli", "harga_satuan", "total"};
rs = con.querySelect(namaKolom, "transaksi");
tabelpenjualan.setModel(new ResultSetTable(rs));
116
}
private void ambildata() {
String st = (String) IDNama.getText();
ResultSet rst = con.querySelectAll("barang", "kd_barang='" + st + "'OR
nama_barang ='" + st + "'");
try {
while (rst.next()) {
this.KodeBarang.setText(rst.getString("kd_barang"));
this.NamaBarang.setText(rst.getString("nama_barang"));
this.HargaSatuan.setText(rst.getString("harga"));
this.stoksedia.setText(rst.getString("stok"));
}
} catch (SQLException ex) {
Logger.getLogger(form_transaksi_penjualan.class.getName()).log(Level.SEVER
E, null, ex);
}
}
private void clear() {
KodeBarang.setText("");
NamaBarang.setText("");
HargaSatuan.setText("");
stoksedia.setText("");
117
Total.setText("");
JumlahBeli.setText("");
}
private void nonaktif1() {
KodeBarang.setEnabled(false);
NamaBarang.setEnabled(false);
HargaSatuan.setEnabled(false);
stoksedia.setEnabled(false);
Total.setEnabled(false);
IDCustomer.setEnabled((false));
}
private void aktif() {
KodeBarang.setEnabled(false);
NamaBarang.setEnabled(false);
HargaSatuan.setEnabled(false);
stoksedia.setEnabled(false);
Total.setEnabled(false);
IDCustomer.setEnabled(true);
}
private void hitungtotal() {
if (!JumlahBeli.getText().isEmpty()) {
int tt11 = Integer.parseInt(HargaSatuan.getText());
int tt12 = Integer.parseInt(JumlahBeli.getText());
118
int tt13 = tt11 * tt12;
String a = Integer.toString(tt13);
Total.setText(a);
int stok1 = Integer.parseInt(stoksedia.getText());
int stok2 = Integer.parseInt(JumlahBeli.getText());
int stok3 = stok1 - stok2;
String c = Integer.toString(stok3);
StokSisa.setText(c);
} else {
JOptionPane.showMessageDialog(this, "Isikan Jumlah Beli");
JumlahBeli.requestFocus();
}
}
private void simpan() {
try {
if (!KodeBarang.getText().isEmpty() &&
!NamaBarang.getText().isEmpty() && !IDCustomer.getText().isEmpty()
&& !HargaSatuan.getText().isEmpty() &&
!JumlahBeli.getText().isEmpty() && !Total.getText().isEmpty()
&& !KodePenjualan.getText().isEmpty()) {
String kolom[] = { "kode_jual", "tanggal_jual", "id_konsumen",
"kode_barang", "jumlah_beli", "harga_satuan", "total"};
java.util.Date tgl = (java.util.Date) this.TanggalJual.getDate();
119
String isi[] = { KodePenjualan.getText(), new
java.sql.Date(tgl.getTime()).toString(),
IDCustomer.getText(), KodeBarang.getText(),
JumlahBeli.getText(), HargaSatuan.getText(), Total.getText()};
System.out.println(con.queryInsert("transaksi", kolom, isi));
Loadtabel1();
Loadtabel2();
} else {
}
} catch (Exception e) {
System.out.println("salah");
}
}
private void update_brg() {
String kolom[] = {"kd_barang", "stok"};
String isi[] = {KodeBarang.getText(), StokSisa.getText()};
con.queryUpdate("barang", kolom, isi, "kd_barang='" +
String.valueOf(KodeBarang.getText()) + "'");
}
private void cetak() {
try {
String NamaFile = "src/laporan/laporantransaksi.jasper";
Class.forName("com.mysql.jdbc.Driver").newInstance();
120
Connection koneksi =
DriverManager.getConnection("jdbc:mysql://localhost/penjualan", "root", "");
HashMap hash = new HashMap();
//Mengambil parameter dari ireport
hash.put("kode", KodePenjualan.getText());
File file = new File(NamaFile);
JasperReport jasperReport = (JasperReport)
JRLoader.loadObject(file.getPath());
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,
hash, koneksi);
JasperViewer.viewReport(jasperPrint);
} catch (Exception ex) {
javax.swing.JOptionPane.showMessageDialog(rootPane,
ex.getMessage());
}
}
}
3.5.2. Black Box Testing
Proses testing merupakan tahap dari perancangan program yang bertujuan untuk
menguji dan mengetahui proses input dan output apakah hasilnya sesuai dengan yang
telah dikonsepkan diawal perancangan. Dalam proses testing metode yang digunakan
121
adalah teknik blackbox dengan pengujian hanya pada form yang berhubungan dengan
proses bisnis utama saja, yaitu :
A. Form Login
Tabel III.19.
Hasil Pengujian Black Box Testing Form Login
No
.
Skenario
pengujian
Test case Hasil yang
diharapkan
Hasil
pengujian
Kesimpulan
1. Username
dan
password
tidak diisi
kemudian
klik
tombol
login
Username :
UIUUUUUUUUusev Username :
(kosong)
Password :
(kosong)
Sistem
menolak
karena data
seharusnya
tidak ada
yang
kosong dan
akan
muncul
pesan
peringatan
“login
gagal, coba
lagi !!”
Sesuai
harapan
Valid
2. Mengisi username dan password
tidak diisi
kemudian
klik
tombol
login
Username :
Password :
(kosong)
Sistem
menolak
karena data
seharusnya
tidak ada
yang
kosong dan
akan
muncul
pesan
peringatan
“login
gagal, coba
lagi !!”
Sesuai
harapan
Valid
122
3. Username
dikosongk
an dan
mengisi
password
kemudian
klik
tombol
login
Username :
(kosong)
Password :
232323
Sistem
menolak
karena data
seharusnya
tidak ada
yang
kosong dan
akan
muncul
pesan
peringatan
“login
gagal, coba
lagi !!”
Sesuai
harapan
Valid
4. Mengisi
username
dan
password
kemudian
klik
tombol
login
Username :
om
Password :
666666
Sistem akan menerima
operasi
login dan
tampil
pesan
“login
berhasil”
Sesuai
harapan
Valid
123
B. Form Data Konsumen
Tabel III.20.
Hasil Pengujian Black Box Testing Form Data Konsumen
No. Skenario
pengujian
Test case Hasil yang
diharapkan
Hasil
pengujia
n
Kesimpula
n
1. Nama konsumen, nomor telepon dan alamat tidak diisi
kemudian
klik
tombol
simpan
Nama konsumen
: (kosong)
Nomor telepon :
(kosong)
Alamat :
(kosong)
Sistem
menolak
karena data
seharusnya
tidak ada yang
kosong dan
akan muncul
pesan
peringatan
“data isian
ada yang
kosong”
Sesuai
harapan
Valid
2. Mengetikkan Nama konsumen, nomor telepon, email dan alamat tidak
diisi atau
kosong
kemudian
klik
tombol
simpan
Nama konsumen
: ricka
Nomor telepon :
(kosong)
Alamat :
(kosong)
Email : (kosong)
Sistem
menolak
karena data
seharusnya
tidak ada yang
kosong dan
akan muncul
pesan
peringatan
“data isian
ada yang
kosong”
Sesuai
harapan
Valid
124
3. Mengetikkan nomor telepon,
Nama
konsumen,
email dan
alamat
tidak diisi
atau
kosong
kemudian
klik
tombol
simpan
Nama konsumen
: (kosong)
Nomor telepon :
085644328876
Alamat :
(kosong)
Email : (kosong)
Sistem
menolak
karena data
seharusnya
tidak ada yang
kosong dan
akan muncul
pesan
peringatan
“data isian
ada yang
kosong”
Sesuai
harapan
Valid
4. Mengetikk
an
alamat,
nomor
telepon,
email dan
Nama
konsumen
tidak diisi
atau
kosong
kemudian
klik
tombol
simpan
Nama konsumen
: (kosong)
Nomor telepon :
(kosong)
Alamat : kp. baru
rt/rw 01/04
Email : (kosong)
Sistem
menolak
karena data
seharusnya
tidak ada yang
kosong dan
akan muncul
pesan
peringatan
“data isian
ada yang
kosong”
Sesuai
harapan
Valid
5. Mengetikk
an email,
nama
konsumen,
nomor
telepon
dan alamat
tidak diisi
atau
kosong
kemudian
Nama konsumen
: (kosong)
Nomor telepon :
(kosong)
Alamat :
(kosong)
Email :
Sistem
menolak
karena data
seharusnya
tidak ada yang
kosong dan
akan muncul
pesan
peringatan
“data isian ada
yang kosong”
Sesuai
harapan
Valid
125
klik
tombol
simpan
6. Mengetikk
an Nama
konsumen,
nomor
telepon,
alamat dan
email,
kemudian
klik
tombol
simpan
Nama konsumen
: ricka
Nomor telepon :
085644328876
Alamat : kp. baru
rt/rw 01/04
Email:
Sistem akan
menerima
operasi
simpan dan
menyimpanny
a kedalam
database dan
tampil pesan
“Data berhasil
disimpan”
Sesuai
harapan
Valid
C. Form Data Barang
Tabel III.21.
Hasil Pengujian Black Box Testing Form Data Barang
No. Skenario
pengujian
Test
case
Hasil yang
diharapkan
Hasil
pengujian
Kesimpulan
1. Mengetikkan
harga satuan,
sedangkan
nama barang
dan stok
tidak diisi
kemudian
klik tombol
simpan
Nama
barang :
(kosong)
Harga
satuan :
25.000
Stok :
(kosong)
Sistem
menolak
karena data
seharusnya
tidak ada yang
kosong dan
akan muncul
pesan
peringatan
Sesuai
harapan
Valid
126
“data isian ada
yang kosong”
2. Mengetikkan Nama barang, sedangkan harga satuan dan stok tidak diisi
kemudian
klik tombol
simpan
Nama barang : nuget
Harga
satuan :
(kosong)
Stok :
(kosong)
Sistem
menolak
karena data
seharusnya
tidak ada yang
kosong dan
akan muncul
pesan
peringatan
“data isian ada
yang kosong”
Sesuai
harapan
Valid
3. Mengetikkan stok, sedangkan Nama
barang, dan
harga satuan
tidak diisi
kemudian
klik tombol
simpan
Nama
barang :
(kosong)
Harga
satuan :
(kosong)
Stock :
60
Sistem
menolak
karena data
seharusnya
tidak ada yang
kosong dan
akan muncul
pesan
peringatan
“data isian ada
yang kosong”
Sesuai
harapan
Valid
127
4. Mengetikkan Nama barang, harga satuan, dan stok kemudian klik tombol simpan
Nama
barang :
nuget
Harga
satuan :
25.000
Stock :
60
Sistem akan
menerima
operasi simpan
dan
menyimpannya
kedalam
database dan
tampil pesan
“Data berhasil
disimpan”
Sesuai
harapan
Valid
3.5.3. Spesifikasi Hardware dan Software
Untuk memperoleh kemampuan yang optimal dalam pengolahan data diperlukan
aspek dasar yaitu perangkat keras (Hardware) dan perangkat lunak (Software) yang
saling berkaitan satu dengan lainnya sehingga tidak dapat dipisahkan, karena suatu
sistem komputerisasi tidak akan berjalan tanpa ada salah satu aspek tersebut. Perangkat
lunak dan perangkat keras harus dapat menunjukan kerja yang baik dan sesuai dengan
yang diharapkan
Tabel III.22.
Spesifikasi Hardware dan Software
Kebutuhan Keterangan
System Windows 10
Prosesor AMD
RAM 4 GB
Hardisk 150 GB
Monitor 14” LED
Printer Ink Jet
Keyboard 108 key
Mouse Standard
128
Software Bahasa pemrograman : Java 8.1
Program atau software pendukung : Xampp and Netbeans