BAB III
PEMBAHASAN
3.1. Tinjauan Perusahaan
Pada perusahaan CV. Star Motor Perkakas Tangerang memiliki sebuah
aspek penting dalam memenuhi kebutuhan pelanggan yaitu penjualan sparepart,
oli, dan onderdil mobil. Perusahaan ini bekerja sama dengan perusahaan onderdil
lainnya di daerah Tangerang maupun Jakarta. Perusahaan ini memberikan
pelayanan baik kepada konsumen saat membeli barang di perusahaannya.
3.1.1. Sejarah Perusahaan
CV. Star Motor Perkakas pertama kali didirikan oleh Bapak Muchlis pada
tahun 1984 dengan nama Star Motor di daerah Cipulir-Kebayoran Lama. Pada
tahun 2000 perusahaan ini pindah tempat di daerah Ciledug-Tangerang. Pada
tahun 2017 Star Motor berubah nama menjadi CV. Star Motor Perkakas karena
sudah mendapatkan izin pemerintahaan kota Tangerang dan membuka cabang di
daerah Parung Panjang-Tangerang yang dikelola oleh anaknya.
CV. Star Motor Perkakas bergerak pada bidang penjualan onderdil, oli, dan Spare
part mobil niaga. CV. Star Motor Perkakas juga berfokus pada penjualan secara
langsung kepada konsumen yang datang untuk membeli barang yang dibutukan
dengan pelayanan Prima.
3.1.2. Struktur Organisasi dan Fungsi
Struktur organisasi adalah gambaran dari suatu hubungan antara karyawan
yang satu dengan yang lain pada suatu organisasi dalam melaksanakan tugasnya.
Fungsi dari struktur organisasi ini adalah untuk memperjelas adanya pembagian
tugas untuk semua pengurus, sehingga setiap pengurus mudah mengetahui mana
pekerjaan yang harus dikerjakan dan kepada siapa ia harus mempertanggung
jawabkan pekerjaan yang diberikan kepadanya. Adapun gambaran bentuk
organisasi pada CV. Star Motor Perkakas adalah sebagai berikut:
Sumber : CV. Star Motor Perkakas
Gambar III.1 Struktur Organisasi CV. Star Motor Perkakas
Bagian Gudang
PIMPINAN
Bagian Penjualan Bagian Penjualan
Kurir
Berikut ini adalah uraian tugas-tugas dari struktur organisasi pada CV. Star Motor
Perkakas Tangerang:
1. Pimpinan
Melakukan pengawasan terhadap usaha dagang yang berjalan. Memutuskan
dan menetapkan peraturan dan kebijakan tertinggi perusahaan, pertanggung
jawabaan untuk mencapai visi dan misi perusahaan.
2. Bagian Penjualan
Bagian ini yang bertugas untuk melayani dan memberikan penawaran
kepada konsumen yang datang ke toko untuk membeli barang dagang.
3. Bagian Gudang
Bagian yang bertugas untuk dan mencari barang yang ada di gudang.
4. Bagian Penjualann
Bagian ini yang bertugas untuk menyerahkan barang yang sudah dicari di
gudang untuk diberikan kepada konsumen.
5. Kurir
Bagian yang bertugas untuk mengirimkan barang.
3.2. Tinjauan Kasus
3.2.1. Proses Bisnis Sistem Berjalan
Sistem berjalan adalah salah satu tahap untuk manganalisis suatu sistem
yang sesuai dengan tujuan utama sistem itu sendiri. Berikut adalah sistem
penjualan spare part mobil pada CV. Star Motor Perkakas Tangerang:
Konsumen akan datang ke toko untuk memberikan daftar nama barang
yang akan dibeli kepada pegawai, kemudian pegawai akan melakukan pengecekan
daftar nama barang yang diminta. Jika barang tidak ada, pegawai akan
memberikan info jika barang tidak tersedia. Namun jika barang ada, pegawai akan
memberikan barang kepada konsumen. Setelah itu, konsumen akan melakukan
pembayaran barang kepada pegawai. Kemudian pegawai akan membuatkan bon
untuk diserahkan kepada konsumen. Pegawai juga akan mencatat rekap barang
yang sudah terjual di dalam buku dan akan membuatkan laporan penjualan untuk
diserahkan kepada pimpinan untuk diarsip.
3.2.2. Activity Diagram
Adapun Activity Diagram sistem berjalan pada CV. Star Motor Perkakas
Tangerang, yaitu sebagai berikut:
act Activ ity Diagram Cv .Star Motor Perkakas
PimpinanPegawaiKonsumen
Melakukan Pemesanan Melakukan Pengecekan Daftar Barang Pesanan
cari?
Memberitahu Jika Barang Tidak Tersedia
Memberikan Barang
Terima barang
Melakukan Pembayaran MenerimaPembayaran
Membuat BONMenerima BON
Membuat Laporan Penjualan Menerima Laporan Pejualan
Menerima Info Barang Tidak Tersedia
Mencatat Rekap Barang Terjual
Mengarsip Laporan Penjualan
tidak ada ada
Gambar III.2
Activity Diagram Proses Bisnis sistem berjalan
3.2.3. Dokumen Masukan
Spesifikasi sistem berjalan yaitu serangkaian dari bentuk dokumen untuk
mendukung terbentuknya file-file yang dibutuhkan serta informasi yang disajikan,
maka dibutuhkan masukan-masukan untuk sistem sebagai.
1. Nama Dokumen : Daftar Barang
Fungsi : Untuk mengetahui Data Barang Penjualan
Sumber : Konsumen
Tujuan : Pegawai
Media : Kertas
Jumlah : Satu Lembar
Frekuensi : Setiap terjadi penjualan
Format : Lampiran A.1
3.2.4. Dokumen Keluaran
1. Nama Dokumen : BON
Fungsi : Sebagai dokumen transaksi penjualan barang
Sumber : Pegawai
Tujuan : Konsumen
Media : Kertas
Jumlah : Satu lembar
Frekuensi : Setiap terjadi transaksi penjualan barang
Format : Lampiran B.1
2. Nama Dokumen : Buku Catatan Penjualan
Fungsi : Sebagai bukti transaksi penjualan barang
Sumber : Pegawai
Tujuan : Pimpinan
Media : Kertas
Jumlah : Satu lembar
Frekuensi : Setiap terjadi transaksi penjualan barang
Format : Lampiran B.2
3. Nama Dokumen : Laporan Penjualan
Fungsi : Digunakan untuk mengetahui data-data transaksi
penjualan.
Sumber : Pegawai
Tujuan : Pimpinan
Media : Kertas
Jumlah : Satu lembar
Frekuensi : Setiap bulan
Format : Lampiran B.3
3.2.5. Permasalahan Pokok
Bentuk sistem yang baik akan sangat dibutuhkan dalam organisasi apapun,
sehingga usaha-usaha yang dioperasikan sesuai dengan keinginan yang
diharapkan, akan tetapi perlu disadari bahwa dengan adanya perkembangan
zaman yang sedemikian pesat yang mengakibatkan semua ketentuan dan cara
pengolahan bentuk usaha harus dapat sesuai dan pengaturan aktivitas yang baik
sering timbul berbagai masalah. Melihat dari semua proses terjadi, ada beberapa
masalah yang dihadapi di CV. Star Motor Perkakas Tangerang dalam sistem
penjualan. Adapun permasalahannya tersebut diantaranya:
1. Masih menggunakan kertas sebagai metode penjualan, sehingga sering
terjadi kekeliruan dan kesalahan dalam pencatatan transaksi penjualan dan
stok barang yang sudah terjual.
2. Masih sering terjadi kekeliruan dalam penyusunan laporan penjualan seperti
jumlah barang yang keluar tidak sesuai dengan pesanan konsumen.
3. Data yang sudah diarsip sering hilang, sehingga menimbulkan kesalahan
dalam pembuatan laporan.
3.2.6. Pemecahan Masalah
Untuk mengatasi permasalahan tersebut, maka penulis memberikan
alternatif pemecahan masalah yaitu berupa sistem yang sudah terkomputerisasi.
Sistem yang sudah terkomputerisasi tersebut mempunyai kelebihan diantaranya:
1. Dibuatkan suatu sistem komputerisasi sehingga pencatatan yang dilakukan
akan lebih cepat dan akurat dalam kegiatan penjualan, pemesanan,
pembayaran, penjurnalan, dan laporan penjualan.
2. Dalam pembuatan laporan akan lebih efektif dan kesalahan kemungkinan
sangat kecil karena pengunaan media komputer sebagai alat bantu dalam
pemrosesan data sehingga dapat diperoleh informasi yang lebih cepat, tepat,
dan akurat.
3. Penyimpanan data tidak hanya diarsipkan dalam bentuk kertas, dapat juga
dalam bentuk harddisk.
3.3. Analisis Kebutuhan Software
Analisis kebutuhan merupakan langkah awal untuk menentukan gambaran
perangkat yang akan dihasilkan ketika pengembang melaksanakan sebuah
proyek pembuatan perangkat lunak.
3.3.1. Analis Kebutuhan
Berdasarkan proses penjualan sistem berjalan pada CV. Star Motor
Perkakas, maka tahapan berikutnya adalah analisis kebutuhan. Berikut spesifikasi
kebutuhan (System Requirement) dari sistem penjualan pada CV. Star Motor
Perkakas.
Halaman Admin
A.1. Admin Melakukan Login
A.2. Admin Mengelola Data Pengguna
A.3. Admin Mengelola Data Pegawai
A.4. Admin Mengelola Data Konsumen
A.5. Admin Mengelola Data Akun
A.6. Admin Mengelola Data Barang
A.7. Admin Mengelola Transaksi Penjualan
A.8. Admin Mengelola Jurnal
A.9. Admin Mengelola Laporan Penjualan
A.10. Admin Melakukan Logout
Halaman Pegawai
B.1. Pegawai Melakukan Login
B.2. Pegawai Mengelola Data Konsumen
B.3. Pegawai Mengelola Data Akun
B.4. Pegawai Mengelola Data Barang
B.5. Pegawai Mengelola Transaksi Penjualan
B.6. Pegawai Mengelola Jurnal
B.7. Pegawai Megelola Laporan Penjualan
B.8. Pegawai Melakukan Logout
Use Case Narative Halaman Admin
Tujuan Admin dapat melihat data yang ada di dalam sistem home Admin
Deskripsi Sistem ini memungkinkan Admin untuk masuk ke home Admin setelah melakukan login. Yang ada di dalam home Admin ada menu master yang terdiri dari menu data pengguna (bisa melakukan simpan, tambah, hapus, batal), menu data pegawai (bisa melakukan simpan, tambah, cari, hapus, keluar, batal), menu konsumen (bisa melakukan simpan, tambah, edit, hapus, keluar, batal), dan menu data akun (bisa melakuan simpan, cari, tambah, edit, hapus, keluar, batal). Selain menu master, ada menu barang yang terdiri dari data barang (bisa melakukan simpan, tambah, cari, cetak, batal, hapus, edit, keluar, batal), ada menu transaksi yang terdiri dari data penjualan (bisa melakukan mulai, tambah transaksi baru, cari, hapus, tambah, selesai, kembali) dan data jurnal (bisamelakukan simpan, tambah, hapus, batal, keluar) ada menu laporan yang terdiri dari data laporan penjualan(bisa melakukan cetak dan keluar).
Skenario Utama
Aktor Admin
Kondisi Awal Aktor membuka aplikasi home Admin
Aksi Aktor Reaksi Sistem
1. Aktor memilih menu master
2. Aktor memilih menu barang
3. Aktor memilih menu transaksi
4. Aktor memilih menu laporan
Sistem ini akan menampilkan menu master yang ada di dalamnya seperti data pengguna, data pegawai, data konsumen, dan data akun.Sistem ini akan menampilkan data barang.
Sistem ini akan menampilkan menu transaksi yang ada di dalamnya seperti data transaksi penjualan dan jurnal.Sistem ini akan menampilkan data laporan penjualan.
Kondisi akhir Jika perintah sesuai maka sistem akan menampilkan apa yang di inginkan.
Tabel III.1. Deskripsi Use Case Diagram Halaman Pegawai
Use Case Narative Halaman Pegawai
Tujuan Admin dapat melihat data yang ada di dalam sistem home Pegawai
Deskripsi Sistem ini memungkinkan Admin untuk masuk ke home Pegawai setelah melakukan login. Yang ada di dalam home Pegawa ada menu master yang terdiri dari menu konsumen (bisa melakukan simpan, tambah, edit, hapus, keluar, batal), dan menu data akun (bisa melakuan simpan, cari, tambah, edit, hapus, keluar, batal). Selain menu master, ada menu barang yang terdiri dari data barang (bisa melakukan simpan, tambah, cari, cetak, batal, hapus, edit, keluar, batal), ada menu transaksi yang terdiri dari data penjualan (bisa melakukan mulai, tambah transaksi baru, cari, hapus, tambah, selesai, kembali) dan data jurnal (bisamelakukan simpan, tambah, hapus, batal, keluar) ada menu laporan yang terdiri dari data laporan penjualan(bisa melakukan cetak dan keluar).
Skenario Utama
Aktor Pegawai
Kondisi Awal Aktor membuka aplikasi home Pegawai
Aksi Aktor Reaksi Sistem
5. Aktor memilih menu master
6. Aktor memilih menu barang
7. Aktor memilih menu transaksi
8. Aktor memilih menu laporan
Sistem ini akan menampilkan menu master yang ada di dalamnya seperti data konsumen, dan data akun.Sistem ini akan menampilkan data barang.
Sistem ini akan menampilkan menu transaksi yang ada di dalamnya seperti data transaksi penjualan dan jurnal.Sistem ini akan menampilkan data laporan penjualan.
Kondisi akhir Jika perintah sesuai maka sistem akan menampilkan apa yang di inginkan.
3.3.3. Activity Diagram
act Aktifity Admin
SistemPegawai
Login
Menu master
Masuk menu utama
valid??
Menu transaksi Menu laporanMenu Barang
Tampil menu master Tampil menu barang Tampil menu transaksi Tampil menu laporan
Pilih menu yang akan dikelola Pilih menu yang akan dikelola
Laporan penjualanData barang
Data pegawai
Data konsumen
Data akun
Penjualan Jurnal
Kelola data pegawai
Kelola data konsumen
Kelola data akun
Kelola data barang
Kelola Penjualan
Kelola jurnalKelola laporan penjualan
Menyimpan data
Logout
Input username dan password
Verifikasi Login
Kembali ke menu login
Data pengguna
Kelola data
pengguna
tidak
ya
Gambar III.5.
Activity Diagram Halaman Admin
act Activ ity Diagram Halaman Pegawai
Pegawai Sistem
Login
Menu master
Masuk menu utama
valid??
Menu transaksi Menu laporanMenu Barang
Tampil menu master Tampil menu barang Tampil menu transaksi Tampil menu laporan
Pilih menu yang akan dikelola Pilih menu yang akan dikelola
Laporan penjualanData barangData konsumen
Data akun
Penjualan Jurnal
Kelola data konsumen
Kelola data akun
Kelola data barang
Kelola Penjualan
Kelola jurnalKelola laporan penjualan
Menyimpan data
Logout
Input username dan password
Verifikasi Login
Kembali ke menu loginya
tidak
Gambar III.6.
Activity Diagram Halaman Pegawai
act Activ ity Menu Master Pegawai
Pegawai Sistem
mulai Tampil Menu Utama
Membuka Menu Master
Membuka Menu Data Konsumen Membuka Menu Data Akun
Melakukan Penyimpanan
Data Konsumen
Melakukan Penambahan
Data Konsumen
Melakukan Pengeditan
Data Konsumen
Melakukan Penghapusan
Data Konsumen
Melakukan Pembatalan input Data Konsumen
Keluar dari Menu Data Konsumen
Melakukan Penyimpanan
Data Akun
Melakukan Penambahan
Data Akun
Melakukan Pengeditan Data Akun
Melakukan Pembatalan Input Data
Akun
Melakukan Penghapusan
Data Akun
Keluar dari Menu Data Akun
Logout
Gambar III.8.
Activity Diagram Halaman Menu Master Pegawai
act Activ ity Diagram Menu Barang
Pegawai/Admin Sistem
MulaiMenampilkan Menu Utama
Membuka Menu Barang
Melakukan Penyimpanan Data Barang
Melakukan Penambahan Data Barang
Melakukan Pengeditan Data Barang
Melakukan Cetak Data
Barang
Melakukan Pencarian
Data Barang
Melakukan Penghapusan Data Barang
Melakukan Pembatalan input Data
Barang
Keluar dari menu barang
Logout
Gambar III.9.
Activity Diagram Halaman Memu Barang
Gambar III.10.
Activity Diagram Menu Transaksi
3.4. Desain
Pada tahap desain ini yang akan menjelaskan tentang database, desain
software architecture dan desain interface dari sistem usulan ini.
3.4.1. Entity Relationship Diagram (ERD)
erd ERD
barangkonsumen
akun
jurnalpegawai
pengguna
juabarangjualbeli
*idpegawai
nama alamat
nohp
*usernamepassword
jabatan
*kodebarang
nama harga
stok*kodekonsumen
nama alamat
notelp
*kodekonsumen
**kodebarang
**idjual total item
total
uangmuka
*idjual tanggal
*nojurnal waktu
djurnal
**nojurnal
**kodeakun
nama
debit
kredit
*kodeakunnama jenis
1 m m 1
1
1
1 1
1
1
1
1
1 m
1
m
kembalian
namapenerima
mempunyai
minta buat
ada ada
memil iki
jual
mempunyai
Keterangan :
* : PK (Primary Key)
** : FK (Foreign Key)
Gambar III.11.
Entity Relationship Diagram (ERD)
3.4.2. Logical Record Structure (LRS)
class LRS
konsumen
- *kodekonsumen- alamat: char- nama: char- notelp: int
barang
- *kodebarang- harga: double- nama: char- stok: int
pengguna
- *username- jabatan- password
pegawai
- *idpegawai- alamat- nama- nohp: int
jurnal
- *nojurnal- waktu
djurnal
- **kodeakun- **nojurnal- debit: int- kredit: int- nama
akun
- *kodeakun- jenis- nama
jualbarang
- *idjual- tanggal
jualbeli
- **idjual- **kodebarang- **kodekonsumen- namapenerima- total- totali tem- uangbayar- uangkembalian
idpegawai
idpegawai
nojurnal
idjual
kodekonsumen
kodebarang
idpegawai
kodeakun
Gambar III.12.
Logical Record Structure (LRS)
3.4.3. Spesifikasi File
a. Spesifikasi File Data Pengguna
Nama Database : pengguna
Nama File : loginpengguna
Tipe File : master
Akses File : Random
Panjang Record : 26
Field Key : username
Tabel III.3.
Spesifikasi File Data Pengguna
No Elemen Data Akronim Tipe Panjang Keterangan
1 Username Pengguna username Varchar 6 Primary Key
2 Password Pengguna Password Varchar 10
3 Jabatan Pengguna Jabatan Varchar 10
b. Spesifikasi File Data Pegawai
Nama Database : pegawai
Nama File : datapegawai
Tipe File : Master
Akses File : Random
Panjang Record : 88
Field Key : idpegawai
Tabel III.4.
Spesifikasi File Data Pegawai
No Elemen Data Akronim Tipe Panjang Keterangan
1 Id Pegawai idpegawai Varchar 6 Primary Key
2 Nama Pegawai Nama Varchar 20
3 Alamat Pegawai Alamat Varchar 50
4 Nomor Handphone Nohp Int 12
c. Spesifikasi File Data Konsumen
Nama Database : konsumen
Nama File : datakonsumen
Tipe File : Master
Akses File : Random
Panjang Record : 88
Field Key : kodekonsumen
Tabel III.5.
Spesifikasi File Data Konsumen
No Elemen Data Akronim Tipe Panjang Keterangan
1 Kode Konsumen Kodekonsumen Varchar 6 Primary Key
2 Nama Konsumen Nama Varchar 20
3 Alamat Konsumen Alamat Varchar 50
4 Nomor Handphone Notelp Int 12
d. Spesifikasi File Data Akun
Nama Database : akun
Nama File : dataakun
Tipe File : Master
Akses File : Random
Panjang Record : 36
Field Key : kodeakun
Tabel III.6.
Spesifikasi File Data Akun
No Elemen Data Akronim Tipe Panjang Keterangan
1 Kode Akun kodeakun Varchar 6 Primary Key
2 Nama Akun nama Varchar 20
3 Jenis Akun jenis Varchar 10
e. Spesifikasi File Data Barang
Nama Database : barang
Nama File : formbarang
Tipe File : barang
Akses File : Random
Panjang Record : 46
Field Key : kodebarang
Tabel III.7.
Spesifikasi File Data Barang
No Elemen Data Akronim Tipe Panjang Keterangan
1 Kode Barang kodebarang Varchar 6 Primary Key
2 Nama Barang nama Varchar 20
3 Spesifikasi File spesifikasi Varchar 100
4 Satuan Barang satuan Varchar 20
5 Harga Barang harga Double -
6 Stok Barang stok Int 20
f. Spesifikasi File Data jual
Nama Database : jual
Nama File : formjual
Tipe File : Transaksi
Akses File : Random
Panjang Record : 78,2
Field Key : idjual
Tabel III.8.
Spesifikasi File Data Jual
No Elemen Data Akronim Tipe Panjang Keterangan
1 Id Jual Barang idjual Varchar 30 Primary Key
2 tanggal Data Jual waktu DateTime -
3 Username username Varchar 20
4 Total Item totalitem Int 11
5 Total Harga totalharga Decimal 18,2
g. Spesifikasi File Data tjualbarang
Nama Database : tjualbarang
Nama File : formjual
Tipe File : Transaksi
Akses File : Random
Panjang Record : 73,4
Field Key : -
Tabel III.9.
Spesifikasi File Data tjualbarang
No Elemen Data Akronim Tipe Panjang Keterangan
1 Id Jual Barang idjual Varchar 30 Foreign Key
2 kode Barang kodebarang Varchar 6 Foreign Key
3 Jumlah jumlah Int 11
4 Harga Barang harga Decimal 18,2
5 Total Total Decimal 18,2
h. Spesifikasi File Data Jurnal
Nama Database : jurnal
Nama File : jurnal
Tipe File : Transaksi
Akses File : Random
Panjang Record : 6
Field Key : nojurnal
Tabel III.10.
Spesifikasi File Data Jurnal
No Elemen Data Akronim Tipe Panjang Keterangan
1 kode Jurnal Nojurnal Varchar 6 Primary Key
2 Waktu Jurnal Waktu Varchar -
i. Spesifikasi File Data Djurnal
Nama Database : djurnal
Nama File : jurnal
Tipe File : Transaksi
Akses File : Random
Panjang Record : 54
Field Key : -
Tabel III.11.
Spesifikasi File Data Djurnal
No Elemen Data Akronim Tipe Panjang Keterangan
1 Identitas Jurnal Nojurnal Varchar 6 Foreign Key
2 Kode Akun Kodeakun Varchar 6 Foreign Key
3 Nama Nama Varchar 20
4 Jenis Saldo Debit Debit Int 11
5 Jenis Saldo Kredit Kredit Int 11
3.4.4. Sequence Diagram
sd Sequence data transaksi
pegawaiform datatransaksi
control datatransaksi
data barangjual tjualbarang
alt
[Benar]
[Tidak Benar]
alt
[Ya]
[Tidak]
alt
[HAPUS]
[TIDAK DIHAPUS]
get(idjual)
kembali()
selesai()
masukan waktu()
Transaksi Baru()
get(waktu)
masukan idjual()
hapus()
Stok barang tidak cukup()
mulai()
get jumlah()
tampil data barang()
validasi()
tambah()
tampil subtotal()
menghitung subtotal(harga*jumlah)
menghitung jumlah()
get(kodebarang)
validasi()
masukan jumlah barang()
Data Masih digunakan!!()
get(subtotal)
masukan kode barang()
cari barang()
set id()
validasi()
Gambar III.13.
Sequence Diagram Transaksi
3.4.5. Deployment Diagram
deployment Deployment Diagram
Main
<<Activ eXControl>> Jav a
<<Dev ice>> Database
<<Dbms>> MY SQL
<<Database>> starmotor
<<Dev ice>>
<<Application>> starmotor
Gambar III.14.
Deployment Diagram CV. Star Motor Perkakas
3.4.6. User Interface
Gambar III.15.
user Interface Form Login
User Interface Menu Utama Pegawai
Gambar III.18.
User Interface Menu Master Admin
Gambar III.19.
User Interface Menu Master Pegawai
Gambar III.31.
User Interface Menu Laporan
3.5. Implementasi
3.5.1. Code Implementasi
A. Form Data Transaksi Penjualan
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package transaksi;
import barang.databarang;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.table.DefaultTableModel;
import sun.applet.Main;
import java.text.NumberFormat;
import java.util.Locale;
import koneksi.koneksi;
/**
*
* @author rara
*/
public class FormPenjualan extends javax.swing.JFrame {
koneksi k;
Statement statement;
ResultSet resultSet;
String idJual, kodebarang,ubah;
int count=01;
int jml_awal;
double jml_total;
/**
* Creates new form FormPenjualan
*/
public FormPenjualan() {
initComponents();
this.setTitle("Sistem Informasi Penjualan - FORM PENJUALAN");
k=new koneksi();
tampilInfo();
tampildjual();
kondisiAwal();
}
private void clear() {
textId_barang.setText("");
textId_barang.setText("");
textHarga.setText("");
textHapus.setText("");
}
private void kondisiAwal() {
tombolTambah.setEnabled(false);
textId_barang.setEnabled(false);
textHarga.setEnabled(false);
textTransaksi.setEnabled(false);
textTanggal.setEnabled(false);
tombolTransaksi.setEnabled(false);
textHapus.setEnabled(false);
labelTotal.setEnabled(false);
textTotal.setEnabled(false);
tombolHapus.setEnabled(false);
tombolSelesai.setEnabled(false);
idJual = "";
labelTotal.setText("0");
textTotal.setText("0");
clear();
}
private void kondisiAktif() {
textId_barang.setEnabled(true);
textHarga.setEnabled(true);
textTransaksi.setEnabled(true);
textTanggal.setEnabled(true);
tombolTransaksi.setEnabled(true);
tombolMulai.setEnabled(false);
clear();
}
//tampilkan data t_barang ke tabel pertama jika stok tidak kosong
private void tampilInfo(){
Object header[] = {"ID Barang","Nama Barang","Harga","Stok"};
DefaultTableModel defaultTable = new DefaultTableModel(null,header);
gridTampil.setModel(defaultTable);
int baris = gridTampil.getRowCount();
for (int i = 0; i < baris; i++) {
defaultTable.removeRow(i);
}
String query = "select kodebarang,nama,harga,stok from barang where stok >
0";
System.out.println(query);
try {
statement = k.koneksi.createStatement();
resultSet = statement.executeQuery(query);
while(resultSet.next()){
String idBarang = resultSet.getString(1);
String nmBarang = resultSet.getString(2);
String harga = resultSet.getString(3);
String stok = resultSet.getString(4);
String kolom[] = {idBarang,nmBarang,harga,stok};
defaultTable.addRow(kolom);
}
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, ex.getMessage());
Logger.getLogger(databarang.class.getName()).log(Level.SEVERE, null,
ex);
}
}
//idTransaksi akan terisi otomatis
private String idTransaksi() {
Date date = new Date();
textTanggal.setDate(date);
SimpleDateFormat dateformat=new SimpleDateFormat ("dd.MM.yyyy");
String tanggal=dateformat.format(date);
idJual = "Trans." + tanggal + "."+count;
return idJual;
}
//tampilkan data ke tabel kedua
private void tampildjual() {
Object header[] = {"ID Transaksi", "Nama Barang", "Harga", "Jumlah",
"Jumlah", "Kode Barang"};
DefaultTableModel defaultTable = new DefaultTableModel(null, header);
gridJual.setModel(defaultTable);
int baris = gridJual.getRowCount();
for (int i = 0; i < baris; i++) {
defaultTable.removeRow(i);
}
//query join tabel tjualbarang dengan barang :D
String query="SELECT * from tjualbarang JOIN barang where "
+ "tjualbarang.kodebarang=barang.kodebarang AND
tjualbarang.idjual='" + textTransaksi.getText() + "'";
System.out.println(query);
try {
statement = k.koneksi.createStatement();
resultSet = statement.executeQuery(query);
while (resultSet.next()) {
//tampilkan beberapa kolom
String idTransaksi = resultSet.getString(1);//kolom idjualbarang dari
tjualbarang
String idBarang = resultSet.getString(7); // kolom id_barang dari
t_barang
String nmBarang = resultSet.getString(8);// kolom nm_barang dari
t_barang
String jml = resultSet.getString(4);// kolom jumlah dari t_jual_barang
String harga = resultSet.getString(5);// kolom harga dari t_jual_barang
String subTotal = resultSet.getString(6);// kolom subTotal dari
t_jual_barang
String kolom[] = {idTransaksi, idBarang, nmBarang, harga, jml,
subTotal};
defaultTable.addRow(kolom);
}
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, ex.getMessage());
System.out.println("" + ex.getMessage());
Logger.getLogger(databarang.class.getName()).log(Level.SEVERE, null,
ex);
}
}
//prosedur pada kotak pencarian
private void cari(){
Object header[] = {"ID Barang","Nama Barang","Harga","Stok"};
DefaultTableModel defaultTable = new DefaultTableModel(null,header);
gridTampil.setModel(defaultTable);
int baris = gridTampil.getRowCount();
for (int i = 0; i < baris; i++) {
defaultTable.removeRow(i);
}
String query = "select kodebarang,nama,harga,stok from barang "
+ "where stok > 0 and (nama like '%"+textCari.getText()+
"%' or kodebarang like '%"+textCari.getText()+"%')";
System.out.println(query);
try {
statement = k.koneksi.createStatement();
resultSet = statement.executeQuery(query);
while(resultSet.next()){
String idBarang = resultSet.getString(1);
String nmBarang = resultSet.getString(2);
String harga = resultSet.getString(3);
String stok = resultSet.getString(4);
String kolom[] = {idBarang,nmBarang,harga,stok};
defaultTable.addRow(kolom);
}
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, ex.getMessage());
Logger.getLogger(databarang.class.getName()).log(Level.SEVERE, null,
ex);
}
}
//menambah data ke tabel t_jual_barang ketika tombol tambah ditekan
private void tambahTransaksi() {
double subTotal, harga, jumlah;
jumlah = Integer.parseInt(textJumlah.getText());
harga = Double.parseDouble(textHarga.getText());
subTotal = harga * jumlah;
try {
String query = "INSERT INTO tjualbarang (idjual, kodebarang, jumlah,
harga, subtotal)"
+ "VALUES('"+idJual+"','" + textId_barang.getText()
+ "','" + textJumlah.getText()
+ "','"+textHarga.getText()
+"','" + subTotal + "')";
System.out.println(query);
statement = k.koneksi.createStatement();
statement.executeUpdate(query);
while (resultSet.next()) {
}
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e.getMessage());
System.out.println("" + e.getMessage());
}
}
// men set labelTotal sesuai jumlah Total barang yg ada dalam tabel 2 (gridJual)
private void total_transaksi() {
if(!kodebarang.equals("")){
String total = "SELECT sum(subtotal) from tjualbarang WHERE idjual='" +
textTransaksi.getText() + "'";
System.out.println(total);
try {
statement = k.koneksi.createStatement();
resultSet = statement.executeQuery(total);
while (resultSet.next()) {
labelTotal.setText(resultSet.getString(1));
}
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, ex.getMessage());
System.out.println("" + ex.getMessage());
Logger.getLogger(FormPenjualan.class.getName()).log(Level.SEVERE,
null, ex);
}
}
}
// men set textTotal sesuai jumlah Total barang yg ada dalam tabel 2 (gridJual)
public void total_unit() {
if(!kodebarang.equals("")){
String total = "SELECT sum(jumlah) from tjualbarang WHERE idjual='" +
textTransaksi.getText() + "'";
System.out.println(total);
try {
statement = k.koneksi.createStatement();
resultSet = statement.executeQuery(total);
while (resultSet.next()) {
textTotal.setText(resultSet.getString(1));
}
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, ex.getMessage());
System.out.println("" + ex.getMessage());
Logger.getLogger(FormPenjualan.class.getName()).log(Level.SEVERE,
null, ex);
}
}
}
// tambah data ke t_jual ketika tombol tambah ditekan
private void insert_jual() {
Date date = new Date();
SimpleDateFormat dateformat2=new SimpleDateFormat ("yyyy-MM-dd");
String tanggal=dateformat2.format(date);
String query = "insert into jual values('" + idJual + "','" + tanggal +
"','ADMIN',0,0)";
System.out.println(query);
try {
statement = k.koneksi.createStatement();
statement.executeUpdate(query);
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, ex.getMessage());
System.out.println("" + ex.getMessage());
Logger.getLogger(FormPenjualan.class.getName()).log(Level.SEVERE,
null, ex);
}
}
//update tabel t_jual ketika tombol hapus ditekan
private void update_jual() {
int totalitem = Integer.parseInt(textTotal.getText());
String query = "UPDATE jual SET "
+ "totalitem = '" + textTotal.getText() + "', "
+ "totalharga = '" + labelTotal.getText()+ "'"
+ "WHERE idjual = '" + idJual + "'";
System.out.println(query);
try {
statement = k.koneksi.createStatement();
statement.executeUpdate(query);
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, ex.getMessage());
System.out.println("" + ex.getMessage());
Logger.getLogger(FormPenjualan.class.getName()).log(Level.SEVERE,
null, ex);
}
}
//cek stok apakah kosong atau tidak
private int cekStok() {
int stok = 0;
String total = "SELECT stok from barang where kodebarang ='" +
kodebarang + "'";
System.out.println(total);
try {
statement = k.koneksi.createStatement();
resultSet = statement.executeQuery(total);
while (resultSet.next()) {
stok = Integer.parseInt(resultSet.getString(1));
}
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, ex.getMessage());
System.out.println("" + ex.getMessage());
}
return stok;
}
// update stok
private void UpdateStok(String ubah) {
int stokBaru = 0;
try {
if(ubah.equals("tambah")){
stokBaru = cekStok() - Integer.parseInt(textJumlah.getText());
}else if(ubah.equals("delete")){
stokBaru=cekStok()+jml_awal;
}
String query = "UPDATE barang set stok ='" + stokBaru + "' where
kodebarang = '" + kodebarang + "'";
statement.executeUpdate(query);
System.out.println(query);
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, ex.getMessage());
System.out.println("" + ex.getMessage());
}
}
//delete sto
public void delete(String id){
String query="DELETE FROM tjualbarang WHERE idjualbarang='"+id+"'";
try {
statement=k.koneksi.createStatement();
statement.executeUpdate(query);
System.out.println(query);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Data masih digunakan!!");
System.out.println(""+e.getMessage());
}
}
/**
* 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() {
jMenuItem1 = new javax.swing.JMenuItem();
jScrollPane2 = new javax.swing.JScrollPane();
gridJual1 = new javax.swing.JTable();
jLayeredPane1 = new javax.swing.JLayeredPane();
jScrollPane1 = new javax.swing.JScrollPane();
jTable1 = new javax.swing.JTable();
jScrollPane5 = new javax.swing.JScrollPane();
jTable2 = new javax.swing.JTable();
jScrollPane6 = new javax.swing.JScrollPane();
jTable3 = new javax.swing.JTable();
jPanel1 = new javax.swing.JPanel();
jPanel2 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
textId_barang = new javax.swing.JTextField();
jLabel3 = new javax.swing.JLabel();
textHarga = new java.awt.TextField();
jLabel5 = new javax.swing.JLabel();
textTransaksi = new javax.swing.JTextField();
jLabel8 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
textTanggal = new com.toedter.calendar.JDateChooser();
textJumlah = new java.awt.TextField();
textHapus = new java.awt.TextField();
textCari = new javax.swing.JTextField();
jLabel7 = new javax.swing.JLabel();
jPanel3 = new javax.swing.JPanel();
jLabel9 = new javax.swing.JLabel();
jScrollPane3 = new javax.swing.JScrollPane();
gridTampil = new javax.swing.JTable();
tombolMulai = new javax.swing.JButton();
tombolSelesai = new javax.swing.JButton();
tombolKembali = new javax.swing.JButton();
labelTotal = new javax.swing.JLabel();
tombolHapus = new javax.swing.JButton();
tombolTambah = new javax.swing.JButton();
textTotal = new javax.swing.JTextField();
jLabel6 = new javax.swing.JLabel();
jLabel10 = new javax.swing.JLabel();
tombolTransaksi = new javax.swing.JButton();
jScrollPane4 = new javax.swing.JScrollPane();
gridJual = new javax.swing.JTable();
jMenuItem1.setText("jMenuItem1");
gridJual1.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));
jScrollPane2.setViewportView(gridJual1);
javax.swing.GroupLayout jLayeredPane1Layout = new
javax.swing.GroupLayout(jLayeredPane1);
jLayeredPane1.setLayout(jLayeredPane1Layout);
jLayeredPane1Layout.setHorizontalGroup(
jLayeredPane1Layout.createParallelGroup(javax.swing.GroupLayout.Alig
nment.LEADING)
.addGap(0, 100, Short.MAX_VALUE)
);
jLayeredPane1Layout.setVerticalGroup(
jLayeredPane1Layout.createParallelGroup(javax.swing.GroupLayout.Alig
nment.LEADING)
.addGap(0, 100, Short.MAX_VALUE)
);
jTable1.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"
}
));
jScrollPane1.setViewportView(jTable1);
jTable2.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"
}
));
jScrollPane5.setViewportView(jTable2);
jTable3.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"
}
));
jScrollPane6.setViewportView(jTable3);
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOS
E);
setBackground(new java.awt.Color(153, 255, 153));
jPanel1.setBackground(new java.awt.Color(153, 255, 153));
jPanel2.setBackground(new java.awt.Color(204, 255, 204));
jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder(null,
"TRANSAKSI PENJUALAN",
javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
javax.swing.border.TitledBorder.DEFAULT_POSITION, new
java.awt.Font("Tahoma", 1, 18), new java.awt.Color(102, 0, 0))); // NOI18N
jLabel1.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jLabel1.setForeground(new java.awt.Color(102, 0, 0));
jLabel1.setText("ID Barang");
textId_barang.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
textId_barangActionPerformed(evt);
}
});
jLabel3.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jLabel3.setForeground(new java.awt.Color(102, 0, 0));
jLabel3.setText("Harga");
jLabel5.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jLabel5.setForeground(new java.awt.Color(102, 0, 0));
jLabel5.setText("ID Transaksi");
textTransaksi.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
textTransaksiActionPerformed(evt);
}
});
jLabel8.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jLabel8.setForeground(new java.awt.Color(102, 0, 0));
jLabel8.setText("Tanggal");
jLabel2.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jLabel2.setForeground(new java.awt.Color(102, 0, 0));
jLabel2.setText("Jumlah Barang");
textJumlah.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
textJumlahActionPerformed(evt);
}
});
textJumlah.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
textJumlahKeyPressed(evt);
}
});
textHapus.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
textHapusActionPerformed(evt);
}
});
textHapus.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
textHapusKeyPressed(evt);
}
});
javax.swing.GroupLayout jPanel2Layout = new
javax.swing.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.
LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayo
ut.Alignment.LEADING)
.addComponent(jLabel8)
.addComponent(jLabel2)
.addComponent(jLabel5))
.addGap(34, 34, 34)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayo
ut.Alignment.LEADING, false)
.addGroup(jPanel2Layout.createSequentialGroup()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.Group
Layout.Alignment.LEADING)
.addComponent(textTransaksi,
javax.swing.GroupLayout.PREFERRED_SIZE, 229,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(textTanggal,
javax.swing.GroupLayout.PREFERRED_SIZE, 228,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(64, 64, 64)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.Group
Layout.Alignment.LEADING)
.addComponent(jLabel1)
.addComponent(jLabel3))
.addGap(18, 18, 18)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.Group
Layout.Alignment.LEADING)
.addComponent(textHarga,
javax.swing.GroupLayout.PREFERRED_SIZE, 242,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(textId_barang,
javax.swing.GroupLayout.PREFERRED_SIZE, 242,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(textJumlah,
javax.swing.GroupLayout.PREFERRED_SIZE, 228,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.
RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(textHapus,
javax.swing.GroupLayout.PREFERRED_SIZE, 96,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.
LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayo
ut.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(textId_barang,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(textTransaksi,
javax.swing.GroupLayout.PREFERRED_SIZE, 29,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel5))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.REL
ATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayo
ut.Alignment.LEADING, false)
.addGroup(jPanel2Layout.createSequentialGroup()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.Group
Layout.Alignment.TRAILING)
.addComponent(textTanggal,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel3))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.
RELATED)
.addComponent(textJumlah,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(jPanel2Layout.createSequentialGroup()
.addGap(5, 5, 5)
.addComponent(jLabel8)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.
UNRELATED)
.addComponent(jLabel2))
.addGroup(jPanel2Layout.createSequentialGroup()
.addGap(3, 3, 3)
.addComponent(textHarga,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.
RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(textHapus,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap(25, Short.MAX_VALUE))
);
textCari.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
textCariActionPerformed(evt);
}
});
jLabel7.setFont(new java.awt.Font("Tahoma", 3, 14)); // NOI18N
jLabel7.setText("Pencarian");
jPanel3.setBackground(new java.awt.Color(204, 255, 204));
jLabel9.setFont(new java.awt.Font("Dialog", 1, 18)); // NOI18N
jLabel9.setForeground(new java.awt.Color(153, 0, 0));
jLabel9.setText("Data Master Barang");
gridTampil.setBackground(new java.awt.Color(204, 255, 204));
gridTampil.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"
}
));
gridTampil.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
gridTampilMouseClicked(evt);
}
});
jScrollPane3.setViewportView(gridTampil);
tombolMulai.setBackground(new java.awt.Color(153, 255, 153));
tombolMulai.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
tombolMulai.setForeground(new java.awt.Color(102, 0, 0));
tombolMulai.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/icon/inventaris.png"))); //
NOI18N
tombolMulai.setText("Mulai");
tombolMulai.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
tombolMulaiActionPerformed(evt);
}
});
tombolSelesai.setBackground(new java.awt.Color(153, 255, 153));
tombolSelesai.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
tombolSelesai.setForeground(new java.awt.Color(102, 0, 0));
tombolSelesai.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/icon/accept.png"))); // NOI18N
tombolSelesai.setText("Selesai");
tombolSelesai.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
tombolSelesaiActionPerformed(evt);
}
});
tombolKembali.setBackground(new java.awt.Color(153, 255, 153));
tombolKembali.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
tombolKembali.setForeground(new java.awt.Color(102, 0, 0));
tombolKembali.setText("Kembali");
tombolKembali.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
tombolKembaliActionPerformed(evt);
}
});
labelTotal.setFont(new java.awt.Font("Lucida Grande", 0, 36)); // NOI18N
labelTotal.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
labelTotal.setText("0");
labelTotal.setFocusable(false);
tombolHapus.setBackground(new java.awt.Color(153, 255, 153));
tombolHapus.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
tombolHapus.setForeground(new java.awt.Color(102, 0, 0));
tombolHapus.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/icon/delete-16x16.png"))); //
NOI18N
tombolHapus.setText("Hapus");
tombolHapus.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
tombolHapusActionPerformed(evt);
}
});
tombolTambah.setBackground(new java.awt.Color(153, 255, 153));
tombolTambah.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
tombolTambah.setForeground(new java.awt.Color(102, 0, 0));
tombolTambah.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/icon/add2.png"))); // NOI18N
tombolTambah.setText("Tambah");
tombolTambah.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
tombolTambahActionPerformed(evt);
}
});
textTotal.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N
textTotal.setHorizontalAlignment(javax.swing.JTextField.CENTER);
textTotal.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
textTotalActionPerformed(evt);
}
});
jLabel6.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N
jLabel6.setText("Total Unit");
jLabel10.setFont(new java.awt.Font("Dialog", 1, 18)); // NOI18N
jLabel10.setForeground(new java.awt.Color(153, 0, 0));
jLabel10.setText("Data Transaksi");
tombolTransaksi.setBackground(new java.awt.Color(153, 255, 153));
tombolTransaksi.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
tombolTransaksi.setForeground(new java.awt.Color(102, 0, 0));
tombolTransaksi.setText("Transaksi Baru");
tombolTransaksi.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
tombolTransaksiActionPerformed(evt);
}
});
gridJual.setBackground(new java.awt.Color(204, 255, 204));
gridJual.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"
}
));
gridJual.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
gridJualMouseClicked(evt);
}
});
jScrollPane4.setViewportView(gridJual);
javax.swing.GroupLayout jPanel3Layout = new
javax.swing.GroupLayout(jPanel3);
jPanel3.setLayout(jPanel3Layout);
jPanel3Layout.setHorizontalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.
LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayo
ut.Alignment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.Group
Layout.Alignment.TRAILING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addComponent(jLabel10)
.addGap(516, 516, 516)
.addComponent(tombolTransaksi))
.addComponent(jScrollPane3,
javax.swing.GroupLayout.PREFERRED_SIZE, 779,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(0, 0, Short.MAX_VALUE))
.addGroup(jPanel3Layout.createSequentialGroup()
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.Group
Layout.Alignment.TRAILING, false)
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.Grou
pLayout.Alignment.LEADING)
.addComponent(jLabel9)
.addComponent(jScrollPane4,
javax.swing.GroupLayout.PREFERRED_SIZE, 779,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(jPanel3Layout.createSequentialGroup()
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.Gr
oupLayout.Alignment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addComponent(tombolSelesai)
.addGap(43, 43, 43)
.addComponent(tombolMulai))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILIN
G, jPanel3Layout.createSequentialGroup()
.addComponent(tombolKembali)
.addGap(146, 146, 146)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlace
ment.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.Gr
oupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILIN
G, jPanel3Layout.createSequentialGroup()
.addComponent(jLabel6)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPl
acement.RELATED)
.addComponent(textTotal,
javax.swing.GroupLayout.PREFERRED_SIZE, 78,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(labelTotal,
javax.swing.GroupLayout.Alignment.TRAILING,
javax.swing.GroupLayout.PREFERRED_SIZE, 278,
javax.swing.GroupLayout.PREFERRED_SIZE))))
.addContainerGap(12, Short.MAX_VALUE))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel3Layout.createSequentialGroup()
.addGap(0, 0, Short.MAX_VALUE)
.addComponent(tombolHapus)
.addGap(37, 37, 37)
.addComponent(tombolTambah)
.addGap(23, 23, 23))))
);
jPanel3Layout.setVerticalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.
LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayo
ut.Alignment.TRAILING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addComponent(jLabel9)
.addGap(5, 5, 5)
.addComponent(jScrollPane3,
javax.swing.GroupLayout.PREFERRED_SIZE, 106,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.Group
Layout.Alignment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addGap(10, 10, 10)
.addComponent(tombolTransaksi))
.addGroup(jPanel3Layout.createSequentialGroup()
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlace
ment.RELATED)
.addComponent(jLabel10)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.
RELATED)
.addComponent(jScrollPane4,
javax.swing.GroupLayout.PREFERRED_SIZE, 99,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.
UNRELATED)
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.Group
Layout.Alignment.BASELINE)
.addComponent(textTotal,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel6))
.addGap(18, 18, 18)
.addComponent(labelTotal,
javax.swing.GroupLayout.PREFERRED_SIZE, 50,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(jPanel3Layout.createSequentialGroup()
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.Group
Layout.Alignment.BASELINE)
.addComponent(tombolMulai)
.addComponent(tombolSelesai))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.
RELATED)
.addComponent(tombolKembali)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.REL
ATED)
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayo
ut.Alignment.BASELINE)
.addComponent(tombolHapus)
.addComponent(tombolTambah))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
);
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()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayo
ut.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jLabel7,
javax.swing.GroupLayout.PREFERRED_SIZE, 89,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.
RELATED)
.addComponent(textCari))
.addGroup(jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.Group
Layout.Alignment.TRAILING, false)
.addComponent(jPanel3,
javax.swing.GroupLayout.Alignment.LEADING,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jPanel2,
javax.swing.GroupLayout.Alignment.LEADING,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGap(0, 0, Short.MAX_VALUE)))
.addGap(8, 8, 8))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.
LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayo
ut.Alignment.BASELINE)
.addComponent(textCari,
javax.swing.GroupLayout.PREFERRED_SIZE, 23,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel7))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.REL
ATED)
.addComponent(jPanel2,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.REL
ATED)
.addComponent(jPanel3,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
);
javax.swing.GroupLayout layout = new
javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADIN
G)
.addGroup(layout.createSequentialGroup()
.addComponent(jPanel1,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADIN
G)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
);
pack();
}// </editor-fold>
private void textId_barangActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void tombolKembaliActionPerformed(java.awt.event.ActionEvent evt)
{
// TODO add your handling code here:
this.dispose();
}
private void tombolTambahActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
tombolTambah.setEnabled(false);
ubah="tambah";
if (Integer.parseInt(textJumlah.getText()) <= cekStok()) {
tambahTransaksi();
UpdateStok(ubah);
tampilInfo();
tampildjual();
total_transaksi();
total_unit();
update_jual();
clear();
} else {
JOptionPane.showMessageDialog(null, "Stok barang tidak cukup!!");
}
double harga = Double.parseDouble(labelTotal.getText());
NumberFormat uang = NumberFormat.getCurrencyInstance();
String indo=uang.format(harga);
labelTotal.setText(indo);
tombolTransaksi.setEnabled(true);
}
private void tombolHapusActionPerformed(java.awt.event.ActionEvent evt) {
String id;
int xRow, xPilih;
xRow = gridJual.getSelectedRow();
id = gridJual.getValueAt(xRow,0).toString();
if(textHapus.getText().equals("")){
JOptionPane.showMessageDialog(null, "Pilih data yang akan dihapus");
}else{
ubah="delete";
Object[] pilihan = {"Tidak!","Iya, sangat yakin."};
xPilih = JOptionPane.showOptionDialog(null,
"Apakah benar anda ingin menghapus Data Transaksi ini: "+ "\n" +
"\t\t"+"ID Transaksi :"+id+"\n"+
"\t\t"+"Nama Barang :"+gridJual.getValueAt(xRow,2).toString(),
"Konfirmasi",
JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE,
null,
pilihan,
pilihan[0]);
if(xPilih==1){
delete(id);
UpdateStok(ubah);
textHapus.setText("");
tampilInfo();
tampildjual();
total_transaksi();
total_unit();
update_jual();
if(textTotal.getText().equals("")){
textHapus.setText("");
}
}else{
textHapus.setText("");
tombolTransaksi.setVisible(true);
}
}
double harga = Double.parseDouble(labelTotal.getText());
NumberFormat uang = NumberFormat.getCurrencyInstance();
String indo=uang.format(harga);
labelTotal.setText(indo);
tombolTransaksi.setVisible(true);
}
private void textCariActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
cari();
}
private void tombolTransaksiActionPerformed(java.awt.event.ActionEvent evt)
{
// TODO add your handling code here:
//kondisiAktif();
textTransaksi.setText(idTransaksi());
//tambahan
tombolHapus.setEnabled(true);
tombolSelesai.setEnabled(true);
tombolTambah.setEnabled(true);
tombolTransaksi.setEnabled(false);
}
private void gridTampilMouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
kodebarang = gridTampil.getValueAt(gridTampil.getSelectedRow(),
0).toString();
String harga = gridTampil.getValueAt(gridTampil.getSelectedRow(),
2).toString();
String nmBarang = gridTampil.getValueAt(gridTampil.getSelectedRow(),
1).toString();
textId_barang.setText(kodebarang);
textCari.setText(nmBarang);
textHarga.setText(harga);
}
private void gridJualMouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
textHapus.setText(gridJual.getValueAt(gridJual.getSelectedRow(),
1).toString());
jml_awal=Integer.valueOf(gridJual.getValueAt(gridJual.getSelectedRow(),
4).toString());
}
private void textJumlahKeyPressed(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
ubah="tambah";
if(evt.getKeyChar()=='\n'){
if(Integer.parseInt(textJumlah.getText()) <= cekStok()){
idTransaksi();
total_transaksi();
UpdateStok(ubah);
// t_jual();
update_jual();//tambahan
}
}
}
private void textTransaksiActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void textTotalActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void textJumlahActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void textHapusKeyPressed(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
}
private void tombolMulaiActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
textTransaksi.setText(idTransaksi());
kondisiAktif();
insert_jual();
}
private void tombolSelesaiActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
kondisiAwal();
tombolMulai.setEnabled(true);
count++;
}
private void textHapusActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
/**
* @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(FormPenjualan.class.getName()).log(ja
va.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(FormPenjualan.class.getName()).log(ja
va.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(FormPenjualan.class.getName()).log(ja
va.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(FormPenjualan.class.getName()).log(ja
va.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new FormPenjualan().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JTable gridJual;
private javax.swing.JTable gridJual1;
private javax.swing.JTable gridTampil;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel10;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JLabel jLabel8;
private javax.swing.JLabel jLabel9;
private javax.swing.JLayeredPane jLayeredPane1;
private javax.swing.JMenuItem jMenuItem1;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JScrollPane jScrollPane3;
private javax.swing.JScrollPane jScrollPane4;
private javax.swing.JScrollPane jScrollPane5;
private javax.swing.JScrollPane jScrollPane6;
private javax.swing.JTable jTable1;
private javax.swing.JTable jTable2;
private javax.swing.JTable jTable3;
private javax.swing.JLabel labelTotal;
private javax.swing.JTextField textCari;
private java.awt.TextField textHapus;
private java.awt.TextField textHarga;
private javax.swing.JTextField textId_barang;
private java.awt.TextField textJumlah;
private com.toedter.calendar.JDateChooser textTanggal;
private javax.swing.JTextField textTotal;
private javax.swing.JTextField textTransaksi;
private javax.swing.JButton tombolHapus;
private javax.swing.JButton tombolKembali;
private javax.swing.JButton tombolMulai;
private javax.swing.JButton tombolSelesai;
private javax.swing.JButton tombolTambah;
private javax.swing.JButton tombolTransaksi;
// End of variables declaration
}
3.5.2. Black BoxTesting
A. Form Login Admin
Tabel III.12.
Hasil Pengujian Black Box Testing Form Data Pengguna
No Skenario Pengujian Test Case Hasil Yang Diharapkan
Hasil Pengujian
Kesimpulan
1 Username, password, jabatan tidak diisi, kemudian klik tombol simpan.
username:(kosong)
Password:(kosong)
Jabatan: (kosong)
Sistem akan menolak akses dan menampilkan pesan “Data pengguna gagal disimpan”
Sesuai harapan
Valid
2 Mengetikkan username, password tidak diisi atau (kosong), jabatan tidak dipilih (isi) kemudian klik
username:admin
Password:(kosong)
Sistem akan menolak akses dan menampilkan pesan “Data pengguna gagal
Sesuai harapan
Valid
tombol simpan. Jabatan: (kosong)
disimpan”
3 Username tidak di isi (kosong), password diisi,dan jabatan tidak dipilih (isi) kemudian klik tombol simpan
username:(kosong)
Password:12345
Jabatan:(kosong)
Sistem akan menolak akses dan menampilkan pesan “Data pengguna gagal disimpan”
Sesuai harapan
Valid
4 Mengetikkan username, password,dan jabatan dengan data yang benar kemudian klik tombol Simpan
Nama user:admin
Password:12345
User:Administrasi
Sistem akan menerima akses dan menampilkan pesan “Data pengguna berhasil disimpan”
Sesuai harapan
Valid
3.5.3. Spesifikasi Hardware dan Software
Tabel III.13.
Spesifikasi Hardware dan Software
Kebutuhan Keterangan
Sistem Windows7 Ultimate
Processor Pentium® Dual-Core CPU T4500 @2.300GHz
RAM 2.00 GB
Harddisk 298,09 GB
Monitor Generic PnP Monitor
Keyboard Standar PS/2 Keyboard
Print HP DeskJet 2130 Series
Mouse PS/2 Compatible Mouse
Software Kebutuhan menjalankan aplikasi secara local:
Bahasa script programming : Netbeans IDE 8.2
WEB Server : Apache.3.2.1
DBMS : MySQL