BAB III PEMBAHASAN · BAB III PEMBAHASAN 3.1.Tinjauan Perusahaan Klinik Shine esthetic Cikampek...
Transcript of BAB III PEMBAHASAN · BAB III PEMBAHASAN 3.1.Tinjauan Perusahaan Klinik Shine esthetic Cikampek...
BAB III
PEMBAHASAN
3.1. Tinjauan Perusahaan
Klinik Shine esthetic Cikampek adalah sebuah klinik kecantikan yang didirikan
tanggal 20 november 2009. Klinik ini beralamat di jl.Ir.H.Juanda No 468, kel.jomin
barat, kec.kota baru, Kab. Karawang.
3.1.1. Sejarah Perusahaan
Klinik Shine Esthetic Cikampek merupakan perusahaan yang bergerak
dibidang jasa perawatan dan penjualan produk kecantikan yang didirikan oleh
dr.Lina Meylin Shine pada 20 November 2009 dan melakukan remodeling pada
tahun 2016 yang beralamat dijalan Ir.H.Juanda no.468 Kelurahan Jomin Barat,
Kecamatan Kota Baru Kabupaten Karawang. Klinik ini berawal dari klinik kecil
dengan rentang produk kosmetiknya yang masih terbatas.
Setelah klinik di Cikampek berdiri dengan cukup baik maka pemilik
mendirikan beberapa cabang diantaranya Purwakarta, Karawang, Subang, Bekasi,
Plered, dan Jakarta. Hingga saat ini klinik Shine Esthetic Cikampek sudah memiliki 9
orang karyawan. Dengan perkembangan klinik Shine Esthetic Cikampek dapat
membuktikan bahwa klinik tersebut mempunyai potensi yang kuat dibidang
kecantikan.
Adapun visi dan misi yang terdapat pada klinik Shine Esthetic adalahVisiMenjadi pusat pelayanan perawatan kecantikan kulit dan wajah secara alami
atau natural, berkualitas dan murah, dan terpercaya bagi semua.Misi
1. Mengembangkan keterampilan dan profesionalisme karyawan
25
26
2. Memberikan pelayanan perawatan yang alami atau natural, berkualitas, murah dan
terpercaya bagi semua pelanggan3. Memberikan inovasi secara berkala baik dalam produk maupun teknologi
kecantikan
3.1.2.Struktur Organisasi berikut ini adalah merupakan struktur organisasi klinik Shine Esthetic yang
akan memberikan informasi kepada seluruh karyawan yang menjadi anggotanya
untuk mengetahu kedudukan serta peranan dalam suatu kerjasama.
Sumber : Klinik Shine Esthetic CikampekGambar III.1.
Struktur Organisasi Klinik Shine Esthetic Cikampek
1. Pimpinan Utamaa. Mengatur secara keseluruhan klinik untuk kelangsungan hidup klinik agar
dapat terus maju dan berkembangb. Bertanggung jawab dalam memimpin dan menjalankan klinikc. Bertanggung jawab atas kerugian klinik termasuk juga keuntungan klinik
2. Managera. Mengarahkan dan mengkoordinasikan dari satu atau lebih departemenb. mengalokasikan sumber daya dan mengarahkan kegiatan dari karyawan klinik
dalam mencapai tujuan.c. Mempertahankan kualitas layanan dengan menegakkan standar kualitas dan
layanan konsumen d. Pengambilan keputusan, dan membuat rencana untuk pengembangan klinik
selanjutnya3. Supervisor
dr.Lina.M.Shine
Pimpinan Utama
Bong Junfu
Manager
Wuji
Gudang
Ane
Supervisor
Dr.herlita
Dokter Jaga
Fitri
Asisten dokter
Gerald
Audit
Novi
Kasir
Yuli
Marketingg
Rini
Kepala beautician
27
a. Harus bertanggung jawab bahwa pekerjaan yang berada dilingkupnya bisa
berjalan dengan baik dan amanb. selain itu juga bertanggung jawab atas hasil kerja staff bawahannya.c. Mengontrol dan memberikan evaluasi
4. Dokter Jagaa. Memiliki produk knowledge (mengerti tentang produk, dan obat-obatan yang
tersedia di klinik)b. Mengatur tugas-tugas dalam ruanganc. Berperdan dalam dokter yang selalu ada hadir setiap hari di klinik
5. Kasira. Menjalankan proses penjualan dan pembayaran b. melakukan pecatatan transaksi,c. membantu pelanggan dalam memberikan informasi mengenai suatu produkd. serta melakukan pengecekan atas jumlah barang pada saat penerimaan barang.
6. Kepala ruangana. Mengawasi dan mengendalikan kegiatan pelayanan beuatician di ruang
perawatan yang berada diwilayah tanggung jawabnya.b. Memberi petunjuk dan bimbingan kepada staff beautician bawahannya.
7. Bagian gudanga. Membuat perencanaan penggadaan barang dan distribusinyab. Mengawasi dan mengontrol operasional gudangc. Menjadi pemimpin bagi semua staff gudangd. Melakukan pengecekan barang yang diterima sesuai SOPe. Mengawasi dan mengontrol setiap barang masuk dan keluar sesuai dengan
SOP8. Asisten dokter
a. Memberikan pelayanan kesehatan kepada para konsumenb. Memberikan saran yang tepat untuk para konsumen mengenai produk dan
treatmen yang perlu diambil oleh konsumenc. Membuat order stok barang di klinik terutama injeksi dan tindakan medis
lainnya9. Audit
a. Menyusun dan merencanakan audit internal tiap bulannyab. Melakukan tinjauan dokumen dan persyaratan lainnya yang berhubungan
dengan kegiatan auditnyac. Mengumpulkan dan menganalisis bukti audit yang cukup dan relevand. Melaporkan temuan audit atau masalah-masalah yang ditemukan selama audit
internale. Memantau tindak lanjut hasil audit internal sampai dinyatakan selesai
10. Marketing
28
a. Memperkenalkan produk klinik kepada masyarakat, melalui produk yang
diracik oleh klinik tersebut b. meghasilkan pendapatan bagi klinik dengan cara menjual produk klinik
tersebutc. serta untuk menyerap informasi dan menyampaikan kepada perusahaan
tentang segala sesuatu yang bermanfaat untuk meningkatkan kualitas dan
penjualan produk.d. Bertugas dalam menjalankan hubungan baik dengan konsumen serta
menjembatani antara klinik dengan lingkungan eksternal
3.2. Tinjauan Kasus
Dalam kasus persediaan barang berikut ini penulis memperoleh langsung
informasi dari karyawan yang bekerja di klinik Shine Esthetic. Berikut ini akan
dijabarkan sistem yang berjalan pada klinik tersebut.
3.2.1. Prosedur Sistem Akuntansi Berjalan
1. Proses pengeluaran produk
Kasir mengeluarkan invoice barang yang keluar dan memberikan kepada asisten
dokter lalu asisten dokter mencatatnya di resep, lalu resepnya diberikan kepada
kasir setelah itu kasir mengeluarkan invoice dan sesuai dengan resep yang
diberikan oleh asisten dokter. Jika barangnya tidak ada maka marketing
melakukan permintaan barang ke gudang pusat menggunakan via whatsaap.
Barang yang keluar disesuaikan dengan resep dan invoice yang keluar lalu
mencatatnya di buku stok barang oleh marketing.
2. Prosedur penerimaan produkDan proses pemesanan barang yang dilakukan klinik Shine Esthetic rutinnya
dilakukan seminggu sekali dimana marketing akan mengecek buku stok barang
29
dan resep yang diberi asisten dokter lalu membuat laporan menggunakan via
whatshaap. Berdasarkan whatshaap dari marketing klinik, maka gudang pusat
akan menyiapkan permintaan produk kepada klinik. Setelah itu gudang pusat akan
memberikan faktur 1 rangkap. Marketing klinik akan mengecek barang yang
datang. 3. Proses Pembuatan Laporan
Setiap awal bulan dilakukan proses penghitungan barang kembali oleh marketing
yaitu mencocokan barang yang ada di buku stok dengan yang dilapangan serta
membuat laporan stok opname dan hasilnya akan dicatat di form stok laporan
audit pusat yang datang, setelah itu audit pusat akan melakukan penghitungan
kembali lalu audit akan memberikan laporan stok opname kepada pimpinan.
Setelah itu pimpinan akan menerima laporan hasil audit dan mengarsipkannya di
form stok laporan udit, dan resep dimasukkan dalam arsip resep serta invoice
dimasukkan dalam arsip invoice oleh marketing klinik.
3.2.2. Activity DiagramActivity diagram dibawah ini untuk menggambarkan rangkaian aliran
akttifitas yang berjalan di klinik Shine Esthetic Cikampek.
30
Gambar III.2 Activity Diagram Persediaan Barang
3.2.3. Dokumen MasukanDokumen masukan yaitu segala bentuk dokumen masukan baik yang berasal
dari lingkungan dalam maupun lingkungan luar organisasi perusahaan, yang mana
dokumen akan diolah dalam suatu proses agar dapat menghasilkan keluaran yang di
inginkan. Adapun dokumen masukan tersebut adalah:1. Nama Dokumen : Faktur Barang Masuk
Fungsi : Sebagai bukti barang datangSumber : Gudang pusat
31
Tujuan : MarketingMedia : KertasFrekuensi : Setiap kali barang datangJumlah : 1 lembar
Bentuk : Lampiran A-1
3.2.4. Dokumen Keluaran
Dokumen–dokumen yang keluar saat proses. Dibawah ini adalah uaraian bentuk
dokumen keluar yang ada dalam sistem persediaan barang di Klinik Shine Esthetic.1. Nama Dokumen : Resep Pemesanan Barang (RPB)
Fungsi : untuk bukti proses barangSumber : Asisten DokterTujuan : MarketingJumlah : 1 lembar
Bentuk : Lampiran B-1
2. Nama Dokumen : Buku Stok Barang (BSB)
Fungsi : Untuk melakukan stok dan pengecekan barangSumber : MarketingTujuan : AuditJumlah : 1 lembar Bentuk : Lampiran B-2
3. Nama Dokumen : Inovice
Fungsi : menyesuaikan barang keluar dengan resepSumber : KasirTujuan : MarketingJumlah : 1 lembar Bentuk : Lampiran B-3
4. Nama Dokumen : Kertas Stok opname
Fungsi : Untuk pengecekan barangSumber : Audit
32
Tujuan : PimpinanJumlah : 1 lembar Bentuk : Lampiran B-4
3.2.5. Permasalahan PokokAdapun permasalahan yang terdapat pada Klinik Shine Esthetic tersebut
adalah:1. Sistem persediaan barang yang telah berjalan di klinik Shine Esthetic masih secara
manual berupa resep dan invoice sehingga membutuhkan waktu yang lama saat
pengecekan barang.2. Laporan pembuatan laporan hanya berupa form kertas yang ditulis tangan yang
memungkinkan data hilang atau rusak.3. Proses pemesanan barang masih menggunakan whatshaap, kemungkinan bukti
pemesanan barang akan cepat hilang.
3.2.6. Pemecahan MasalahSetelah mengetahui permsalahan yang terdapat dalam proses persediaan
barang pada klinik Shine Esthetic. Adapun cara yang dilakukan untuk menyelesaikan
masalah tersebut adalah:1. Proses laporan persediaan barang seharusnya sudah menggunakan sistem agar
dapat memudahkan pelaporan sehingga mengurangi kemungkinan kesalahan
barang.
2. Menciptakan alur yang lebih efisiensi dalam pengecekan persediaan barang.
3.3. Analisis Kebutuhan Software
Analisis kebutuhan merupakan langkah awal untuk menentukan perangkat
lunak yang dihasilkan. Perangkat lunak yang baik dan sesuai dengan kebutuhan
pengguna sangat tergantung keberhasilan dalam melakukan analisa kebutuhan. Jika
terjadi kesalahan dalam analisa kebutuhan maka perangkat lunak yang dibuat
menjadi tidak berguna.
33
3.3.1.Analisis Kebutuhan
Berdasarkan proses bisnis persediaan produk di klinik Shine Esthetic, maka
tahapan berikutnya adalah analisa kebutuhan, berikut ini spesifikasi kebutuhan dari
sistem persediaan.
A. Marketinga. Marketing login b. Marketing dapat mengelola master barangc. Marketing mengelola data barang masukd. Marketing mengelola data barang keluare. Marketing mencetak stok laporan barang
B. Pimpinana. Pimpinan loginb. Pimpinan mengelola data master barangc. Pimpinan mengelola data barang masukd. Pimpinan mengelola data barang keluare. Pimpinan mencetak stok laporan barangf. Pimpinan mengelola data adming. Pimpinan dapat mencetak jurnal
C. Audit a. Audit loginb. Audit mengakses data master barangc. Audit dapat mencetak laporan
3.3.2.Use Case DiagramUse case merupakan bagian tertinggi dari fungsionalitas yang dimiliki sistem
yang akan menggambarkan bagaimana seseorang antara actor akan menggunakan
dan memanfaatkan sistem.
34
Gambar III.3 Use Case Persediaan Barang
Tabel III.1Use Case Halaman Utama Marketing
Use Case Halaman Utama Marketing
Tujuan Marketing dapat melihat data yang ada didalam sistem
halaman menu utamaDeskripsi Sistem ini memungkinkan aktor untuk mengelola data
barang masuk, data barang keluar, master barang, dan
laporan barang
Skenario Utama
Aktor Marketing
Kondisi Awal Aktor membuka aplikasi utama menu persediaan barang
Aksi Aktor Reaksi Sistem
35
1. Aktor memilih
menu master barang
Sistem ini akan menampilkan informasi menu master
barang yang didalamnya ada data barang2.Aktor memilih
menu barang masuk
Sistem ini akan menampilkan informasi mengenai
transaksi barang yang masuk3.Aktor memilih
menu barang keluar
Sistem ini akan menampilkan informasi mengenai
transaksi barang yang keluar4.Aktor memilih
menu stok laporan
barang
Sistem ini akan menampilkan informasi mengenai
transaksi laporan barang masuk dan laporan barang
keluarKondisi Akhir Jika perintah sesuai maka data akan ditampilkan
Tabel III.2Use Case Halaman Utama Pimpinan
Use Case Halaman Utama Pimpinan
Tujuan Pimpinan dapat melihat data yang ada didalam sistem
halaman menu utamaDeskripsi Sistem ini memungkinkan aktor untuk mengelola data
barang masuk, data barang keluar, master barang, dan
laporan barang, data admin, mencetak jurnal
Skenario Utama
Aktor Pimpinan
Kondisi Awal Aktor membuka aplikasi utama menu persediaan barang
Aksi Aktor Reaksi Sistem
1. Aktor memilih
menu master barang
Sistem ini akan menampilkan informasi menu master
barang yang didalamnya ada data barang2.Aktor memilih
menu barang masuk
Sistem ini akan menampilkan informasi mengenai
transaksi barang yang masuk3.Aktor memilih
menu barang keluar
Sistem ini akan menampilkan informasi mengenai
transaksi barang yang keluar
36
4.Aktor memilih
menu stok laporan
barang
Sistem ini akan menampilkan informasi mengenai
transaksi laporan barang masuk dan laporan barang
keluar5.Aktor memilih
menu Jurnal
Sistem ini akan menampilkan informasi mengenai menu
jurnal6. Aktor memilih
menu data admin
Sistem ini akan menampilkan informasi mengenai data
adminKondisi Akhir Jika perintah sesuai maka data akan ditampilkan
Tabel III.3Use Case Halaman Utama Audit
Use Case Halaman Utama Audit
Tujuan Audit dapat melihat data yang ada didalam sistem
halaman menu utamaDeskripsi Sistem ini memungkinkan aktor untuk mengelola data
master barang, dan laporan barang
Skenario Utama
Aktor Audit
Kondisi Awal Aktor membuka aplikasi utama menu persediaan barang
Aksi Aktor Reaksi Sistem
1. Aktor memilih
menu master barang
Sistem ini akan menampilkan informasi menu master
barang yang didalamnya ada data barang
2.Aktor memilih
menu laporan
Sistem ini akan menampilkan informasi menu laporan
barang masuk dan laporan barang keluar
Kondisi Akhir Jika perintah sesuai maka data akan ditampilkan
Tabel III.4
Use case Halaman Menu Barang masuk
37
Use Case Menu Barang Masuk
Tujuan Untuk memasukkan data barang masuk
Deskripsi Sistem ini memungkinkan aktor untuk memasukkan
data b arang yang masuk
Skenario Utama
Aktor Marketing
Kondisi Awal Asisten dokter, Marketing membuka aplikasi barang
masukAksi Aktor Memilih data yang akan dipesan
Reaksi Sistem Menampilkan data yang sesuai
Kondisi Akhir Jika perintah sesuai maka data akan ditampilkan
Tabel III.5
Use case Halaman Menu Master Barang
Use Case Menu Master Barang
Tujuan Untuk memasukkan data nama barang baru
Deskripsi Sistem ini memungkinkan aktor untuk memasukkan
data nama barang yang baru, dan mengecek stok
barang
Skenario Utama
Aktor Marketing, Asisten dokter
Kondisi Awal Marketing, Asisten dokter membuka aplikasi Barang
keluarAksi Aktor Memilih data yang akan dipesan
Reaksi Sistem Menampilkan data yang sesuai
Kondisi Akhir Jika perintah sesuai maka data akan ditampilkan
Tabel III.6
38
Use case Halaman Menu Barang Keluar
Use Case Menu Barang Keluar
Tujuan Untuk memasukkan data barang Keluar
Deskripsi Sistem ini memungkinkan aktor untuk memasukkan
data barang keluar
Skenario Utama
Aktor Marketing
Kondisi Awal Marketing membuka aplikasi barang masuk
Aksi Aktor Memilih data yang akan dipesan
Reaksi Sistem Menampilkan data yang sesuai
Kondisi Akhir Jika perintah sesuai maka data akan ditampilkan
Tabel III.7Use Case Halaman Menu Laporan
Use Case Laporan
Tujuan Mengecek Laporan barang masuk dan keluar dalam
sebulanDeskripsi Sistem ini memungkinkan aktor untuk mengelola sistem
menu laporan yang meliputi laporan barang masuk dan
barang keluar
Skenario Utama
Aktor Audit, Marketing
Kondisi Awal Audit, Marketing membuka aplikasi menu laporan
Aksi Aktor Memilih data yang akan dipesan
Reaksi Sistem Menampilkan data yang sesuai
Kondisi Akhir Jika perintah sesuai maka data akan ditampilkan
39
Tabel III.8Use Case Halaman Jurnal
Use Case Menu Jurnal
Tujuan Untuk melihat jurnal barang masuk dan keluar
Deskripsi Sistem ini memungkinkan aktor untuk melihat
jurnal barang masuk dan keluar
Skenario Utama
Aktor Marketing
Kondisi Awal Marketing membuka aplikasi jurnal
Aksi Aktor Memilih data yang akan dipesan
Reaksi Sistem Menampilkan data yang sesuai
Kondisi Akhir Jika perintah sesuai maka data akan ditampilkan
3.3.3.Activity DiagramUse Case Diagram merupakan pemodelan untuk melakukan (behavior)
sistem informai yang akan dibuat. Use case digunakan untuk mengetahui fungsi apa
saja yang ada di dalam sebuah sistem informasi dan siapa saja yang berhak
menggunakan fungsi-fungsi itu
Activity Diagram menggambarkan workflow (aliran kerja) atau aktivitas dari
sebuah sistem atau proses bisnis atau menu yang ada pada perangkat lunak.
40
1. Activity Diagram Barang Masuk
Gambar III.4 Activity Diagram Barang Masuk
2. Activity Diagram Barang Keluar
41
Gambar III.5 Activity Diagram Barang Keluar
3. Activity Diagram Master Barang
42
Gambar III.6 Activity Diagram Master Barang
4. Activity Diagram Laporan
43
Gambar III.7 Activity Diagram Laporan Barang
5. Activity Diagram Jurnal
44
Gambar III.8 Activity Diagram Jurnal
6. Activity Diagram Laporan
45
Gambar III.9 Activity Diagram Jurnal
3.4. Desain
46
Desain merupakan rancangan untuk memasukkan data dan laporan sebagai
informasi yang dihasilkan dari pengolahan data. Yang merupakan acuan membuat
aplikasi dalam merancang dan membangun sistem.
3.4.1. Entity Relationship Diagram (ERD)Entity relationship diagram digunakan untuk menggambarkan hubungan data
yang digunakan dalam sistem. ERD juga menunjukkan struktur keseluruhan
kebutuhan data yang diperhatikan.
Gambar III.9
ERD Persediaan Barang3.4.2. Logical Record Structure (LRS)
47
Gambar III.10LRS Persediaan Barang
3.4.3. Spesifikasi file
48
Yang akan menjelaskan table dalam pembuatan sistem persediaan barang pada
klinik Shine Esthetic. Data-data yang akan menjelaskan satu-persatu detail dari
struktur tabel untuk setiap tabelnya.
1. Spesifikasi File Daftar BarangNama Database : Persediaan_brgNama file : BarangFungsi file : Sebagai Informasi Data BarangTipe File : File MasterAkses File : RandomPanjang Record : 62 KarakterKunci Field : kdbrg
Tabel III.7Spesifikasi file Deskripsi Data Barang
NoElemen data Akronim Tipe Size Keteranga
n1 Kode barang Kdbrg varchar 15 Primary
key2 Nama barang Nama_barang varchar 253 Stok Stok Int 114 Harga jual Harga_jual Int 115 Exp Exp date
2. Spesifikasi file Data Barang Keluar
Nama Database : Persediaan_brg
Nama file : Brgklr
Fungsi File : Sebagai informasi Barang keluar
Tipe File : File Transaksi
Akses File : Random
Panjang Record : 15 Karakter
Kunci Field : nofak
49
Tabel III.8
Spesifikasi File Barang keluar
NoElemen data Akronim Tipe Size Keteranga
n1 Nomor faktur Nofak varchar 15 Primary
key2 Tanggal Tgl date3 Subtotal Subtotal double
3. Spesifikasi File Barang Masuk
Nama Database : brgmsk
Nama file : Barang masuk
Fungsi File : Sebagai informasi Barang Masuk
Tipe File : File Transaksi
Akses File : Random
Panjang Record : 15 karakter
Kunci Field : nofak
Tabel III.9
Spesifikasi File Barang Masuk
NoElemen data Akronim Tipe Size Keteranga
n1 Nomor faktur Nofak varchar 15 Primary
key2 Tanggal Tgl date3 Subtotal Subtotal double
4. Spesifikasi File Data AdminNama Database : Persediaan_brg
50
Nama File : admin
Fungsi File : Sebagai informasi Data Admin
Tipe File : File masterAkses File : RandomPanjang record : 115 karakterKunci field : id
Tabel III.10Spesifikasi File Data Admin
NoElemen data Akronim Tipe Size Keteranga
n1 Kode id Id Int 11 Primary
key2 Username Username Varchar 103 Nama Nama Varchar 304 Password Password varchar 505 Hak Hak Varchar 15
5. Spesifikasi File Detail Barang MasukNama Database : Persediaan_brgNama File : dtl_brgmskFungsi File : Sebagai Informasi Detail Barang MasukTipe File : File TransaksiAkses File : RandomPanjang Record : 41Kunci field : id
Tabel III.11Spesifikasi File Detail Barang Masuk
NoElemen data Akronim Tipe Size Keteranga
n1 Id Id Int 11 Primary
key2 Nomor faktur Nofak Varchar 153 Tanggal Tgl Date4 Kode barang Kdbrg varchar 155 Nama barang Nmbrg Text6 Harga barang Harga double7 Qty Qty Float
51
8 Total barang Total double
6. Spesifikasi Detail Barang KeluarNama Database : Persediaan_brgNama File : dtl_brgklrFungsi File : Sebagai Informasi Detail Barang KeluarTipe File : File TransaksiAkses File : RandomPanjang Record : 41 karakterKunci field : id
Tabel III.12Spesifikasi File Detail Barang Keluar
NoElemen data Akronim Tipe Size Keteranga
n1 Id Id Int 11 Primary
key2 Nomor faktur Nofak Varchar 153 Tanggal Tgl Date4 Kode barang Kdbrg varchar 155 Nama barang Nmbrg Text6 Harga barang Harga double7 Qty Qty Float8 Total barang Total double
7. Spesifikasi File JurnalNama Database : persediaan_brgNama File : JurnalFungsi File : Sebagai Informasi Data JurnalTipe File : File TransaksiAkses File : RandomPanjang Record : 83 karakterKunci Field : id
Tabel III.13Spesifikasi File Jurnal
NoElemen data Akronim Tipe Size Keteranga
n1 Id Id Int 11 Primary
key2 No jurnal No_jurnal varchar 15
52
3 Nomor faktur Nofak varchar 114 Kode akun Kd_akun Int 115 Tanggal Tanggal date6 Nama akun Nm_akun varchar 357 Debet Debet double8 Kredit Kredit double
3.4.4. Sequence DiagramDiagram sekuen adalah salah satu dari diagram yang ada pada UML, sekuen
diagram ini adalah yang menggambarkan kolaborasi dinamis antara sejumlah objek.
Untuk menggambarkan diagram sekuen maka harus diketahui objek - objek yang
terlibat dalam sebuah use case beserta metode-metode yang dimiliki kelas yang
diinstansiasi menjadi objek itu.
1. Sequence Diagram Barang Masuk
Gambar III.11Gambar Sequen Diagram Barang Masuk
2. Sequence Diagram Barang keluar
53
Gambar III.12Gambar Sequen Diagram Barang Keluar
3.4.5. Deployment DiagramDeployment diagram adalah salah satu jenis alat atau bahasa (UML) yang
digunakan untuk menvisualisasikan, menspesifikasikan, dan mendokumentasikan
proses yang terjadi pada suatu sistem perangkat lunak berbasis object oriented yang
akan dibangun
54
Gambar III.13Deployment Diagram Persediaan Barang
3.4.6. User InterfaceMerupakan serangkaian tampilan gratis yang dapat dimengerti oleh pengguna
komputer dan terprogram sedemikian rupa, sehingga dapat terbaca oleh sistem
operasi komputer dan beroperasi sebagaimana semestinya.
1. Menu Login
java
55
Gambar III.14User Interface Login
2. Menu Master
Gambar III.15User Interface Menu Master
3. Menu Barang Masuk
56
Gambar III.16User Interface Barang Masuk
4. Menu Barang Keluar
Gambar III.17User Interface Barang Keluar
5. Master Barang
57
Gambar III.18User Interface Master Barang
6. Menu Laporan Barang Masuk
Gambar III.19User Interface Laporan Barang Masuk
7. Menu Laporan Barang Keluar
58
Gambar III.20User Interface Laporan Barang Keluar
8. Menu Jurnal
Gambar III.21User Interface Menu Jurnal
9. Menu Data Admin
59
Gambar III.22User Interface Menu Data Admin
1.3.13.5. Implementasi
Merupakan suatu tindakan yang harus dilakukan oleh sekelompok individu
yang ditunjuk dalam penyelesaian suatu tujuan yang sudah diterapkan sebelumnya.
3.5.1. Code GenerationCode generation adalah sebuah program yang dibuat agar dapat
menghasilkan instruksi atau kode program sesuai dengan kebutuhan pengguna dalam
ruang lingkup tertentu.Transaksi Barang Masukpackage persediaan;import java.awt.Dimension;import java.awt.Toolkit;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.sql.SQLException;import java.sql.Statement;import javax.swing.JOptionPane;import javax.swing.table.DefaultTableModel;* @author acer */public class pembelian_barang extends javax.swing.JFrame {db kon = new db();Connection con;ResultSet rs=null;PreparedStatement pst=null; private Object [] [] datasiswa = null; // private String [] label ={"No Trans","Tanggal","Kode Barang","Nama Barang","Qty","Harga Beli"}; private String [] label ={"Kode Barang","Nama Barang","Harga Beli","Jumlah Beli","Total"}; /** * Creates new form data_barang */ public pembelian_barang() { initComponents(); kon.setKoneksi();
60
tampiltabel(); if(txtsubtotal.getText().equals("0")){ btnlanjut.setEnabled(false} else{ btnlanjut.setEnabled(true) } Toolkit toolkit = getToolkit(); Dimension size = toolkit.getScreenSize(); setLocation(size.width/2 - getWidth()/2, size.height/2 - getHeight()/2);} public void tampiltabel() { try{ String sql ="Select *From dtl_brgmsk where nofak = '"+0+"'"; kon.rs=kon.st.executeQuery(sql); ResultSetMetaData m=kon.rs.getMetaData(); int kolom= m.getColumnCount(); int baris =0; while (kon.rs.next()){ baris=kon.rs.getR;} datasiswa=new Object[baris][kolom]; int x=0; kon.rs.beforeFirst(); while (kon.rs.next()){ datasiswa[x][0] = kon.rs.getString("kdbrg"); datasiswa[x][1] = kon.rs.getString("nmbrg"); datasiswa[x][2] = kon.rs.getString("harga"); datasiswa[x][3] = kon.rs.getString("qty"); datasiswa[x][4] = kon.rs.getString("total"); x++; } nomor(); if(txtsubtotal.getText().equals("")){ btnlanjut.setEnabled(false } else{ btnlanjut.setEnabled( } mytable.setModel(new DefaultTableModel(datasiswa,label)); mytable.getTableHeader().setFont(new java.awt.Font("Segoe UI", 0, 13));} catch (SQLException e) { JOptionPane.showMessageDialog(null, e); } } public String nomor(){ String urutan=null; java.util.Date skrg = new java.util.Date(); java.text.SimpleDateFormat kal=new java.text.SimpleDateFormat("ddMMyy"); String tgl=(kal.format(skrg)); try{ Connection con = kon.setKoneksi(); Statement st=con.createStatement(); java.sql.ResultSet sql = st.executeQuery("SELECT (right (nofak,3)+1) as nomor FROM brgmsk where nofak
like '%"+tgl+"%' order by nofak desc"); if(sql.next() { urutan=sql.getString(1); while (urutan.length()<3) urutan="0"+urutan; urutan="B"+tgl+urutan; }else {urutan="B"+tgl+"001"; } txtkode.setText(urutan); } catch(Exception e){ // JOptionPane.showMessageDialog(null,e); } return urutan; } private void bersih(){ txtkdbrg.setText(""); txtnm.setText(""); txtbeli.setText(""); txtqty.setText(""); txttotal.setText(""); tampiltabel(); btnsimpan.setText("Simpan"); jumlah();} public String kodebarang; public String namabarang; public String harga; public String stok; public String getkodeobat(){ return kodebarang;}
61
public String getnamaobat(){ return namabarang;} public String getharga(){ return harga;} public String getstok(){ return stok;} private void jumlah(){ int ttl =0; int row=mytable.getRowCount(); for(int a=0;a<mytable.getRowCount();a++) { int sub= Integer.parseInt((String)mytable.getValueAt(a, 4).toString()); ttl+= sub; } txtsubtotal.setText(Integer.toString(ttl)} } * 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(); jScrollPane1 = new javax.swing.JScrollPane(); mytable = new javax.swing.JTable(); jPanel2 = new javax.swing.JPanel(); jLabel3 = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel(); txtkode = new javax.swing.JTextField(); txtkdbrg = new javax.swing.JTextField(); jButton2 = new javax.swing.JButton(); btnsimpan = new javax.swing.JButton(); jLabel7 = new javax.swing.JLabel(); txtnm = new javax.swing.JTextField(); jLabel8 = new javax.swing.JLabel(); txtbeli = new javax.swing.JTextField(); jLabel10 = new javax.swing.JLabel(); txtqty = new javax.swing.JTextField(); txttotal = new javax.swing.JTextField(); jLabel12 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); jLabel6 = new javax.swing.JLabel(); txtsubtotal = new javax.swing.JLabel(); jButton3 = new javax.swing.JButton(); btnlanjut = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); addWindowListener(new java.awt.event.WindowAdapter() { public void windowOpened(java.awt.event.WindowEvent evt) { formWindowOpened(evt); } }); getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout()); jPanel1.setBackground(new java.awt.Color(0, 204, 204)); jLabel1.setFont(new java.awt.Font("Verdana", 0, 18)); // NOI18N jLabel1.setForeground(new java.awt.Color(255, 255, 255)); jLabel1.setText("Barang Masuk"); javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel1) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, 31, Short.MAX_VALUE) .addContainerGap())); getContentPane().add(jPanel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, 775, -1)); mytable.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { {null, null, null, null}, {null, null, null, null}, {null, null, null, null},
62
{null, null, null, null}}, new String [] { "Title 1", "Title 2", "Title 3", "Title })); mytable.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { mytableMouseClicked(evt);} public void mousePressed(java.awt.event.MouseEvent evt) { mytableMousePressed(evt); }}); mytable.addKeyListener(new java.awt.event.KeyAdapter() { public void keyTyped(java.awt.event.KeyEvent evt) { mytableKeyTyped(evt); }}); jScrollPane1.setViewportView(mytable); getContentPane().add(jScrollPane1, new org.netbeans.lib.awtextra.AbsoluteConstraints(290, 110, 460, 200)); jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("")); jPanel2.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout()); jLabel3.setText("Kode Trans"); jPanel2.add(jLabel3, new org.netbeans.lib.awtextra.AbsoluteConstraints(12, 28, -1, -1)); jLabel4.setText("Kode Barang"); jPanel2.add(jLabel4, new org.netbeans.lib.awtextra.AbsoluteConstraints(12, 62, -1, -1)); txtkode.setEditable(false); txtkode.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { txtkodeActionPerformed( }}); jPanel2.add(txtkode, new org.netbeans.lib.awtextra.AbsoluteConstraints(95, 25, 140, -1)); txtkdbrg.setEditable(false); jPanel2.add(txtkdbrg, new org.netbeans.lib.awtextra.AbsoluteConstraints(95, 59, 140, -1)); jButton2.setText("Batal"; jButton2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton2ActionPerformed(evt); }}); jPanel2.add(jButton2, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 250, 80, 40));
btnsimpan.setText("Tambah"); btnsimpan.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT); btnsimpan.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnsimpanActionPerformed(evt); }}); jPanel2.add(btnsimpan, new org.netbeans.lib.awtextra.AbsoluteConstraints(120, 250, 90, 40)); jLabel7.setText("Nama"); jPanel2.add(jLabel7, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 90, -1, -1)); txtnm.setEditable(false); jPanel2.add(txtnm, new org.netbeans.lib.awtextra.AbsoluteConstraints(95, 90, 140, -1)); jLabel8.setText("Harga Beli"); jPanel2.add(jLabel8, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 120, -1, -1)); jPanel2.add(txtbeli, new org.netbeans.lib.awtextra.AbsoluteConstraints(95, 120, 140, -1)); jLabel10.setText("Jumlah Beli"); jPanel2.add(jLabel10, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 150, -1, -1)); txtqty.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { txtqtyKeyReleased(evt);}}); jPanel2.add(txtqty, new org.netbeans.lib.awtextra.AbsoluteConstraints(95, 150, 140, -1)); txttotal.setEditable(false); jPanel2.add(txttotal, new org.netbeans.lib.awtextra.AbsoluteConstraints(95, 180, 140, -1)); jLabel12.setText("Total"); jPanel2.add(jLabel12, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 180, -1, -1)); getContentPane().add(jPanel2, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 105, 250, 320)); jLabel2.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N jLabel2.setText("Tambah Data"); getContentPane().add(jLabel2, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 85, -1, -1)); jLabel6.setText("Cari"); getContentPane().add(jLabel6, new org.netbeans.lib.awtextra.AbsoluteConstraints(290, 80, -1, -1)); txtsubtotal.setFont(new java.awt.Font("Tahoma", 0, 36)); // NOI18N txtsubtotal.setText("0"); getContentPane().add(txtsubtotal, new org.netbeans.lib.awtextra.AbsoluteConstraints(580, 330, 170, 90)); jButton3.setText("..."); jButton3.setToolTipText("Cari Barang"); jButton3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton3ActionPerformed(evt);}}); getContentPane().add(jButton3, new org.netbeans.lib.awtextra.AbsoluteConstraints(320, 70, 60, 30)); btnlanjut.setText("Simpan"); btnlanjut.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnlanjutActionPerformed(evt);
63
}); getContentPane().add(btnlanjut, new org.netbeans.lib.awtextra.AbsoluteConstraints(300, 350, 130, 50)); pack(); }// </editor-fold> private void mytableMouseClicked(java.awt.event.MouseEvent evt) { } private void mytableKeyTyped(java.awt.event.KeyEvent evt) { // TODO add your handling code here:} private void txtkodeActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:} String stokawal=""; private void tampilid(){ try{ String sql = "select *from barang where kdbarang='"+txtkdbrg.getText()+"' "; kon.rs=kon.st.executeQuery(sql); if(kon.rs.next()) { stokawal=(kon.rs.getString("stok")); } else { \catch(SQLException e) { JOptionPane.showMessageDialog(null, e); }} private void btnsimpanActionPerformed(java.awt.event.ActionEvent evt) { java.util.Date skrg = new java.util.Date(); java.text.SimpleDateFormat kal=new java.text.SimpleDateFormat("yyyy-MM-dd"); String today=(kal.format(skrg)); try { String sql = "INSERT INTO dtl_brgmsk VALUES('0','" +0 + "','"+today+"','" + txtkdbrg.getText() + "','" +
txtnm.getText() + "'," + "'" + txtbeli.getText() + "','" + txtqty.getText() + "','" + txttotal.getText() + "')"; kon.st.executeUpdate(sql); bersih(); // JOptionPane.showMessageDialog(null, "Pembelian Berhasil"); } catch (SQLException e) { JOptionPane.showMessageDialog(null, e);}} private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { bersih(); if(txtsubtotal.getText().equals("0")){ btnlanjut.setEnabled(false); } else{ btnlanjut.setEnabled(true)} } String kode=""; private void mytableMousePressed(java.awt.event.MouseEvent evt) { int row=mytable.getSelectedRow(); kode=((String) mytable.getValueAt(row,0)); if(evt.getClickCount()==2){ try { Connection koneksi = kon.setKoneksi(); koneksi.createStatement().executeUpdate("DELETE FROM dtl_brgmsk where kdbrg = '" + kode+ "' "); bersih(); String jumlahrow=""; int rows = mytable.getRowCount(); jumlahrow=(String.valueOf(rows)); if(jumlahrow.equals("0")){ txtsubtotal.setText("0"); if(txtsubtotal.getText().equals("")){ btnlanjut.setEnabled(false);} else{ btnlanjut.setEnabled(true); } } } catch (SQLException ex) { JOptionPane.showMessageDialog(null, ex);} bersih();}// TODO add your handling code here } private void formWindowOpened(java.awt.event.WindowEvent evt) { // TODO add your handling code here:} private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) { boolean closable = true; caribarang a = new caribarang(null, closable); a.transaksi=this; a.setVisible(true); if(!a.isVisible()){ txtkdbrg.setText(kodebarang); txtnm.setText(namabarang); txtbeli.requestFocus();}} private void txtqtyKeyRelased(java.awt.event.KeyEvent evt) { int a =Integer.parseInt(txtbeli.getText());
64
int b =Integer.parseInt(txtqty.getText());int total= b*a;txttotal.setText(String.valueOf(total));// TODO add your handling code here } private void btnlanjutActionPerformed(java.awt.event.ActionEvent evt) { boolean closable = true; simpanpembelian a = new simpanpembelian(null, closable); a.txtsubtotal.setText(txtsubtotal.getText()); java.util.Date skrg = new java.util.Date(); java.text.SimpleDateFormat kal=new java.text.SimpleDateFormat("yyyy-MM-dd"); String today=(kal.format(skrg)); a.txttanggal.setText(today); a.txtnojual.setText(txtkode.getText()); a.setVisible(true); if(!a.isVisible()){ tampiltabel(); String jumlahrow=""; int rows = mytable.getRowCount(); jumlahrow=(String.valueOf(rows)); if(jumlahrow.equals("0")){ txtsubtotal.setText("0"); } bersih();} } 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(pembelian_barang.class.getName()).log(java.util.logging.Level.SEVERE,
null, ex); } catch (InstantiationException ex) { java.util.logging.Logger.getLogger(pembelian_barang.class.getName()).log(java.util.logging.Level.SEVERE,
null, ex); } catch (IllegalAccessException ex) { java.util.logging.Logger.getLogger(pembelian_barang.class.getName()).log(java.util.logging.Level.SEVERE,
null, ex); } catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(pembelian_barang.class.getName()).log(java.util.logging.Level.SEVERE,null,ex);} /* Create and display the form */ java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new pembelian_barang().setVisible(true) } }); } // Variables declaration - do not modify private javax.swing.JButton btnlanjut; private javax.swing.JButton btnsimpan; private javax.swing.JButton jButton2; private javax.swing.JButton jButton3; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel10; private javax.swing.JLabel jLabel12; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel6; private javax.swing.JLabel jLabel7; private javax.swing.JLabel jLabel8; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTable mytable; private javax.swing.JTextField txtbeli; private javax.swing.JTextField txtkdbrg; private javax.swing.JTextField txtkode; private javax.swing.JTextField txtnm;
65
private javax.swing.JTextField txtqty; private javax.swing.JLabel txtsubtotal; private javax.swing.JTextField txttotal; // End of variables declaration
Transaksi Barang keluar
package persediaan;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
public class penjualan_barang extends javax.swing.JFrame {
db kon = new db();
Connection con;
ResultSet rs=null;
PreparedStatement pst=null;
private Object [] [] datasiswa = null;
// private String [] label ={"No Trans","Tanggal","Kode Barang","Nama Barang","Qty","Harga Beli"};
private String [] label ={"Kode Barang","Nama Barang","Harga Beli","Jumlah Beli","Total"};
public penjualan_barang() {
initComponents();
kon.setKoneksi();
tampiltabel();
if(txtsubtotal.getText().equals("0")){
btnlanjut.setEnabled(false);)
else{
btnlanjut.setEnabled(true); }
Toolkit toolkit = getToolkit();
Dimension size = toolkit.getScreenSize();
setLocation(size.width/2 - getWidth()/2,
size.height/2 - getHeight()/2);
}
public void tampiltabel() {
try{
String sql ="Select *From dtl_brgklr where nofak = '"+0+"'";
kon.rs=kon.st.executeQuery(sql);
ResultSetMetaData m=kon.rs.getMetaData();
int kolom= m.getColumnCount();
int baris =0;
while (kon.rs.next()){
baris=kon.rs.getRow();
}
66
datasiswa=new Object[baris][kolom];
int x=0;
kon.rs.beforeFirst();
while (kon.rs.next()){
datasiswa[x][0] = kon.rs.getString("kdbrg");
datasiswa[x][1] = kon.rs.getString("nmbrg");
datasiswa[x][2] = kon.rs.getString("harga");
datasiswa[x][3] = kon.rs.getString("qty");
datasiswa[x][4] = kon.rs.getString("total");
x++;
}
nomor();
if(txtsubtotal.getText().equals("")){
btnlanjut.setEnabled(false);
}
else{
btnlanjut.setEnabled(true);
}
mytable.setModel(new DefaultTableModel(datasiswa,label));
mytable.getTableHeader().setFont(new java.awt.Font("Segoe UI", 0, 13));
}
catch (SQLException e) {
JOptionPane.showMessageDialog(null, e);
}
}
public String nomor(){
String urutan=null;
java.util.Date skrg = new java.util.Date();
java.text.SimpleDateFormat kal=new java.text.SimpleDateFormat("ddMMyy");
String tgl=(kal.format(skrg));
try{
Connection con = kon.setKoneksi();
Statement st=con.createStatement();
java.sql.ResultSet sql = st.executeQuery("SELECT (right (nofak,3)+1) as nomor FROM brgklr where nofak like
'%"+tgl+"%' order by nofak desc");
if(sql.next())
{
urutan=sql.getString(1);
while (urutan.length()<3)
urutan="0"+urutan;
urutan="T"+tgl+urutan;
}else
{
urutan="T"+tgl+"001";
}
txtkode.setText(urutan);
67
}
catch(Exception e){
// JOptionPane.showMessageDialog(null,e);
}
return urutan;
}
private void bersih(){
txtkdbrg.setText("");
txtnm.setText("");
txtharga.setText("");
txtqty.setText("");
txttotal.setText("");
tampiltabel();
btnsimpan.setText("Simpan");
jumlah();
}
public String kodebarang;
public String namabarang;
public String harga;
public String stok;
public String getkodeobat(){
return kodebarang;
}
public String getnamaobat(){
return namabarang;
}
public String getharga(){
return harga;
}
public String getstok(){
return stok;
}
private void jumlah(){
int ttl =0;
int row=mytable.getRowCount();
for(int a=0;a<mytable.getRowCount();a++){
{
int sub= Integer.parseInt((String)mytable.getValueAt(a, 4).toString());
ttl+= sub;
}
txtsubtotal.setText(Integer.toString(ttl));
68
}
}
/**
* 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();
jScrollPane1 = new javax.swing.JScrollPane();
mytable = new javax.swing.JTable();
jPanel2 = new javax.swing.JPanel();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
txtkode = new javax.swing.JTextField();
txtkdbrg = new javax.swing.JTextField();
jButton2 = new javax.swing.JButton();
btnsimpan = new javax.swing.JButton();
jLabel7 = new javax.swing.JLabel();
txtnm = new javax.swing.JTextField();
jLabel8 = new javax.swing.JLabel();
txtharga = new javax.swing.JTextField();
jLabel10 = new javax.swing.JLabel();
txtqty = new javax.swing.JTextField();
txttotal = new javax.swing.JTextField();
jLabel12 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel6 = new javax.swing.JLabel();
txtsubtotal = new javax.swing.JLabel();
jButton3 = new javax.swing.JButton();
btnlanjut = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowOpened(java.awt.event.WindowEvent evt) {
formWindowOpened(evt);
}
});
getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
jPanel1.setBackground(new java.awt.Color(0, 204, 204));
jLabel1.setFont(new java.awt.Font("Verdana", 0, 18)); // NOI18N
69
jLabel1.setForeground(new java.awt.Color(255, 255, 255));
jLabel1.setText("Barang Keluar");
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel1)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, 31, Short.MAX_VALUE)
.addContainerGap())
);
getContentPane().add(jPanel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, 775, -1));
mytable.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));
mytable.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
mytableMouseClicked(evt);
}
public void mousePressed(java.awt.event.MouseEvent evt) {
mytableMousePressed(evt);
}
});
mytable.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyTyped(java.awt.event.KeyEvent evt) {
mytableKeyTyped(evt);
}
});
jScrollPane1.setViewportView(mytable);
getContentPane().add(jScrollPane1, new org.netbeans.lib.awtextra.AbsoluteConstraints(290, 110, 460, 200));
70
jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder(""));
jPanel2.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
jLabel3.setText("Kode Trans");
jPanel2.add(jLabel3, new org.netbeans.lib.awtextra.AbsoluteConstraints(12, 28, -1, -1));
jLabel4.setText("Kode Barang");
jPanel2.add(jLabel4, new org.netbeans.lib.awtextra.AbsoluteConstraints(12, 62, -1, -1));
txtkode.setEditable(false);
txtkode.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
txtkodeActionPerformed(evt);
}
});
jPanel2.add(txtkode, new org.netbeans.lib.awtextra.AbsoluteConstraints(95, 25, 140, -1));
txtkdbrg.setEditable(false);
jPanel2.add(txtkdbrg, new org.netbeans.lib.awtextra.AbsoluteConstraints(95, 59, 140, -1));
jButton2.setText("Batal");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
jPanel2.add(jButton2, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 250, 80, 40));
btnsimpan.setText("Tambah");
btnsimpan.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
btnsimpan.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnsimpanActionPerformed(evt);
}
});
jPanel2.add(btnsimpan, new org.netbeans.lib.awtextra.AbsoluteConstraints(120, 250, 90, 40));
jLabel7.setText("Nama");
jPanel2.add(jLabel7, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 90, -1, -1));
txtnm.setEditable(false);
jPanel2.add(txtnm, new org.netbeans.lib.awtextra.AbsoluteConstraints(95, 90, 140, -1));
jLabel8.setText("Harga");
jPanel2.add(jLabel8, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 120, -1, -1));
txtharga.setEditable(false);
jPanel2.add(txtharga, new org.netbeans.lib.awtextra.AbsoluteConstraints(95, 120, 140, -1));
jLabel10.setText("Qty");
71
jPanel2.add(jLabel10, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 150, -1, -1));
txtqty.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyReleased(java.awt.event.KeyEvent evt) {
txtqtyKeyReleased(evt);
}
});
jPanel2.add(txtqty, new org.netbeans.lib.awtextra.AbsoluteConstraints(95, 150, 140, -1));
txttotal.setEditable(false);
jPanel2.add(txttotal, new org.netbeans.lib.awtextra.AbsoluteConstraints(95, 180, 140, -1));
jLabel12.setText("Total");
jPanel2.add(jLabel12, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 180, -1, -1));
getContentPane().add(jPanel2, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 105, 250, 320));
jLabel2.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
jLabel2.setText("Tambah Data");
getContentPane().add(jLabel2, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 85, -1, -1));
jLabel6.setText("Cari");
getContentPane().add(jLabel6, new org.netbeans.lib.awtextra.AbsoluteConstraints(290, 80, -1, -1));
txtsubtotal.setFont(new java.awt.Font("Tahoma", 0, 36)); // NOI18N
txtsubtotal.setText("0");
getContentPane().add(txtsubtotal, new org.netbeans.lib.awtextra.AbsoluteConstraints(580, 330, 170, 90));
jButton3.setText("...");
jButton3.setToolTipText("Cari Barang");
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton3ActionPerformed(evt);
}
});
getContentPane().add(jButton3, new org.netbeans.lib.awtextra.AbsoluteConstraints(320, 70, 60, 30));
btnlanjut.setText("Simpan");
btnlanjut.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnlanjutActionPerformed(evt);
}
});
getContentPane().add(btnlanjut, new org.netbeans.lib.awtextra.AbsoluteConstraints(300, 350, 130, 50));
pack();
}// </editor-fold>
private void mytableMouseClicked(java.awt.event.MouseEvent evt) {
72
}
private void mytableKeyTyped(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
}
private void txtkodeActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
String stokawal="";
private void tampilid(){
try{
String sql = "select *from barang where kdbarang='"+txtkdbrg.getText()+"' ";
kon.rs=kon.st.executeQuery(sql);
if(kon.rs.next())
{
stokawal=(kon.rs.getString("stok"));
}
else
{
}
}
catch(SQLException e)
{
JOptionPane.showMessageDialog(null, e);
}
}
private void btnsimpanActionPerformed(java.awt.event.ActionEvent evt) {
java.util.Date skrg = new java.util.Date();
java.text.SimpleDateFormat kal=new java.text.SimpleDateFormat("yyyy-MM-dd");
String today=(kal.format(skrg));
try {
String sql = "INSERT INTO dtl_brgklr VALUES('0','" +0 + "','"+today+"','" + txtkdbrg.getText() + "','" +
txtnm.getText() + "',"
+ "'" + txtharga.getText() + "','" + txtqty.getText() + "','" + txttotal.getText() + "')";
kon.st.executeUpdate(sql);
bersih();
// JOptionPane.showMessageDialog(null, "Pembelian Berhasil");
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, e);
}
73
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
bersih();
if(txtsubtotal.getText().equals("0")){
btnlanjut.setEnabled(false);
}
else{
btnlanjut.setEnabled(true);
}
}
String kode="";
private void mytableMousePressed(java.awt.event.MouseEvent evt) {
int row=mytable.getSelectedRow();
kode=((String) mytable.getValueAt(row,0));
if(evt.getClickCount()==2){
try {
Connection koneksi = kon.setKoneksi();
koneksi.createStatement().executeUpdate("DELETE FROM dtl_brgklr where kdbrg = '" + kode+ "' ");
bersih();
String jumlahrow="";
int rows = mytable.getRowCount();
jumlahrow=(String.valueOf(rows));
if(jumlahrow.equals("0")){
txtsubtotal.setText("0");
if(txtsubtotal.getText().equals("")){
btnlanjut.setEnabled(false);
}
else{
btnlanjut.setEnabled(true);
}
}
}
catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex);
}
bersih();
}
// TODO add your handling code here:
}
private void formWindowOpened(java.awt.event.WindowEvent evt) {
// TODO add your handling code here:
}
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
boolean closable = true;
74
caribarang a = new caribarang(null, closable);
a.transaksi_2=this;
a.parameter="Penjualan";
a.setVisible(true);
if(!a.isVisible()){
txtkdbrg.setText(kodebarang);
txtnm.setText(namabarang);
txtharga.setText(harga);
txtqty.requestFocus();
}
}
private void txtqtyKeyReleased(java.awt.event.KeyEvent evt) {
int a =Integer.parseInt(txtharga.getText());
int b =Integer.parseInt(txtqty.getText());
int total= b*a;
txttotal.setText(String.valueOf(total));
// TODO add your handling code here:
}
private void btnlanjutActionPerformed(java.awt.event.ActionEvent evt) {
boolean closable = true;
simpanpenjualan a = new simpanpenjualan(null, closable);
a.txtsubtotal.setText(txtsubtotal.getText());
java.util.Date skrg = new java.util.Date();
java.text.SimpleDateFormat kal=new java.text.SimpleDateFormat("yyyy-MM-dd");
String today=(kal.format(skrg));
a.txttanggal.setText(today);
a.txtnojual.setText(txtkode.getText());
a.setVisible(true);
if(!a.isVisible()){
tampiltabel();
String jumlahrow="";
int rows = mytable.getRowCount();
jumlahrow=(String.valueOf(rows));
if(jumlahrow.equals("0")){
txtsubtotal.setText("0");
}
bersih();
}
}
/**
* @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
75
*/
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(penjualan_barang.class.getName()).log(java.util.logging.Level.SEVERE,
null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(penjualan_barang.class.getName()).log(java.util.logging.Level.SEVERE,
null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(penjualan_barang.class.getName()).log(java.util.logging.Level.SEVERE,
null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(penjualan_barang.class.getName()).log(java.util.logging.Level.SEVERE,
null, ex);
}
//</editor-fold>
//</editor-fold>
//</editor-fold>
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new penjualan_barang().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton btnlanjut;
private javax.swing.JButton btnsimpan;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel10;
private javax.swing.JLabel jLabel12;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JLabel jLabel8;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
76
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable mytable;
private javax.swing.JTextField txtharga;
private javax.swing.JTextField txtkdbrg;
private javax.swing.JTextField txtkode;
private javax.swing.JTextField txtnm;
private javax.swing.JTextField txtqty;
private javax.swing.JLabel txtsubtotal;
private javax.swing.JTextField txttotal;
// End of variables declaration
}
3.5.2.Blackbox Testing
Merupakan salah satu bentuk pengujian untuk menguji suatu software
terbentuk atau suatu pengujian yang dilakukan hanya untuk mengamati hasil
eksekusi pada software tersebut.
1. Blackbox Testing Login
Tabel III.14
Blackbox Testing Login
No
SkenarioPengujian
Test Case Hasil yangdiharapkan
Hasilpengujian
Kesimpulan
1 Nama User danPassword tidakdi isi (kosong)Kemudian kliktombol login
NamaUser(kosong)
Sistem akanmenolakakses danmenampilkanpesan“usernameataupasswordbelumterdaftar”
Sesuaiharapan
valid
2 Nama User di isidan Passwordtidak di isi(kosong)kemudian kliktombol login
NamaUser:Audit(benar)
Password:kosong
Sistem akanmenolakakses danmenampilkanpesan“usernameataupasswordbelum
Sesuaiharapan
valid
77
terdaftar”3 Nama User tidak
di isi (kosong)dan Password diisi kemudian kliktombol login
Namauser:(kosong)
Password:audit
Sistem akanmenolakakses danmenampilkanpesan“usernameataupasswordbelumterdaftar”
SesuaiHarapan
valid
4 Nama user di isidan Password diisi kemudian kliktombol login
Namauser:Audit
Password:audit
Sistem akanmenerimaakses logindan akanmenampilkanhalamanmenu utama
Sesuaiharapa
valid
2. Blackbox Testing Transaksi Barang Masuk
Tabel III.15
Blackbox Testing Barang Masuk
No
SkenarioPengujian
Test Case Hasil yangdiharapkan
Hasilpengujian
Kesimpulan
1 Klik transaksibarang masukkemudian kodebarang tidakdiisi, klik simpan
Kode barang(kosong),nama, hargabeli, jumlahbeli, total(terisi)“terdapatinputankosong”
Sistem akanmenolakakses danmenampilkanpesan“terdapatinputankosong”
Sesuaiharapan
valid
2 Klik transaksibarang masukkemudian namabarang tidakdiisi, klik simpan
nama barang(kosong),kode barang,harga beli,jumlah beli,total (terisi)“terdapatinputankosong”
Sistem akanmenolakakses danmenampilkanpesan“terdapatinputankosong”
Sesuaiharapan
valid
3 Klik transaksibarang masukkemudian hargabeli tidak diisi,
Harga beli(kosong),nama barang,kode barang,
Sistem akanmenolakakses danmenampilkan
SesuaiHarapan
valid
78
klik simpan jumlah beli,total (terisi)“terdapatinputankosong”
pesan“terdapatinputankosong”
4 Klik transaksibarang masukkemudian jumlahbeli tidak diisi,klik simpan
jumlah beli(kosong),nama barang,kode barang,harga beli,total (terisi)“terdapatinputankosong”
Sistem akanmenolakakses danmenampilkanpesan“terdapatinputankosong”
Sesuaiharapa
valid
5 Klik transaksibarang masukkemudian totalbeli tidak diisi,klik simpan
Total beli(kosong),nama barang,kode barang,harga beli,(terisi)“terdapatinputankosong”
Sistem akanmenolakakses danmenampilkanpesan“terdapatinputankosong”
Sesuaiharapa
valid
6 Klik transaksibarang masuklalu semuanyadiisi, klik simpan
Total beli,nama barang,kode barang,harga beli(terisi data)
Sistem akanmenerimaakses danmenampilkanpesan “databerhasildisimpan
Sesuaiharapan
valid
3. Blackbox Testing Barang keluar
Tabel III.16
Blackbox Testing Barang Keluar
No
SkenarioPengujian
Test Case Hasil yangdiharapkan
HasilPengujian
Kesimpulan
1 Klik transaksibarang masukkemudian kodebarang tidakdiisi, klik simpan
Kode barang(kosong),nama, hargabarang keluar,jumlah keluar,total (terisi)
Sistem akanmenolakakses danmenampilkan pesan“terdapat
Sesuaiharapan
valid
79
“terdapatinputankosong”
inputankosong”
2 Klik transaksibarang masukkemudian namabarang tidakdiisi, klik simpan
nama barang(kosong), kodebarang, hargakeluar, jumlahkeluar, total(terisi)“terdapatinputankosong”
Sistem akanmenolakakses danmenampilkan pesan“terdapatinputankosong”
Sesuaiharapan
valid
3 Klik transaksibarang masukkemudian hargabarang keluartidak diisi, kliksimpan
Harga beli(kosong),nama barang,kode barang,jumlah keluar,total (terisi)“terdapatinputankosong”
Sistem akanmenolakakses danmenampilkan pesan“terdapatinputankosong”
SesuaiHarapan
valid
4 Klik transaksibarang masukkemudian jumlahbarang keluartidak diisi, kliksimpan
jumlah beli(kosong),nama barang,kode barang,harga keluar,total (terisi)“terdapatinputankosong”
Sistem akanmenolakakses danmenampilkan pesan“terdapatinputankosong”
Sesuaiharapa
valid
5 Klik transaksibarang masukkemudian totalbarang keluartidak diisi, kliksimpan
Total barangkeluar(kosong),nama barang,kode barang,harga keluar,(terisi)“terdapatinputankosong”
Sistem akanmenolakakses danmenampilkan pesan“terdapatinputankosong”
Sesuaiharapa
valid
6 Klik transaksibarang keluarlalu semuanyadiisi, klik simpan
Total beli,nama barang,kode barang,harga beli(terisi data)
Sistem akanmenerimaakses danmenampilkan pesan“databerhasildisimpan
Sesuaiharapan
valid
80
3.5.3.Spesifikasi Hardware dan SoftwareDibawah ini adalah spesifikasi hardware dan software dalam pembuatan
program yang telah dibuat.
Tabel III.17
Spesifikasi Hardware dan Software
Kebutuhan KeteranganSistem Windows 32 bitProcessor ntel (R), Core (TM). I3-3110M CPU @2,40
GHZ RAM 2GbHarddisk 4 GBMonitor 14” LEDPrinter Dot MatrikKeyboard 108 keyMouse StandarSoftware Kebutuhan menjalankan aplikasi secara local
Bahasa Script programming : NetBeans IDE 8.1Web Server : XAMPP Control PanelDBMS : MySQL