bab iii analisa sistem berjalan - repository.bsi.ac.id€¦ · sistem penjualan pada ud. anker...

Post on 18-Oct-2020

6 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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 :

ulfan@gmail.com

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 :

nurmala@gmail.c

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 :

ricka@gmail.com

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:

ricka@gmail.com

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

top related