Untuk membuat laporan disini kita membutuhkan library jasperReport dan iReport, anda bisa memasangya melalui Netbeans atau menginstall .exe’nya, untuk penginstalannya cukup mudah seperti kita menginstal sebuah aplikasi.
setelah library sudah terpasang, langkah pertama kita buat tampilan reportnya dengan cara klik kanan pada package anda >>pilih New >>Report Wizard, kemudian anda pilih layout atau tampilannya >> next
Beri nama reportnya sesuai dengan laporan yang dibuat. Disini kita akan membuat laporan Stok Barang >> next
setelah itu kita buat koneksi terlebih dahulu, tekan tombol new. Perhatikan gambar dibawah ini :
kemudian pilih Database JDBC connection, kemudian klik tombol next.
isi nama koneksi, pilih JDBC Driver MySQL (com.mysql.jdbc.Driver) dan tentukan JDBC URL Databse anda (jdbc:mysql://localhost/DatabaseName)
kemudian klik tombol Test untuk mengecek apakah koneksi berhasil atau tidak
Setelah itu atur tampilan report sesuai keinginan anda. Dan atur report querynya.
Buat interface dengan nama KategoriStok(). Desain seperti gambar di bawah ini :
Kemudian buak kelas seperti dibwah ini :
Double klik pada button lihat, tambahkan script dibawah ini :
private void btnlihatActionPerformed(java.awt.event.ActionEvent evt) {
loadLaporanStok();
this.dispose();
// TODO add your handling code here:
}
Sebelum kita masuk ke Menu Utama, kita harus mengkondisikan Menu Utama agar tidak mudah untuk siapa saja mengubah data-data pada Sistem Informasi Minimarket ini.
Tampilan halaman Menu Utama Sistem Informasi Minimarket ketika belum Login.
Tampilan halaman Menu Utama Sistem Informasi Minimarket ketika Login sebagai karyawan.
Karyawan tidak dapat melihat laporan. Karyawan hanya bisa melakukan transaksi dan melihat menu lainnya.
Tampilan halaman Menu Utama Sistem Informasi Minimarket ketika Login sebagai Admin.
Admin dapat melakukan apa saja. Admin dapat melihat laporan barang. Admin juga dapat mengubah user atau password.
Setelah kita membuat form pengadaan, langkah selanjutnya kita akan membuat Form Transaksi Penjualan. Form ini dinilai sangat penting karena dalam form ini transaksi-transaksi penjualan dilakukan. User yang sudah terdaftar dan berhasil login akan melakukan transaksi penjualan, pada form ini akan ditampilkan jenis barang apa saja yang masih tersedia dan memiliki stok. Dan juga user dapat melakukan pembayaran secara langsung.
Buat desain Form Transaksi Penjualan seperti gambar dibawah ini :
Form ini juga memiliki persamaan dengan form transaksi pengadaan barang, yaitu membuat ID otomatis. Kalau pada form transaksi pengadaan membuat ID Pengadaan maka dalam form ini akan membuat ID Transaksi secara otomatis. Masih sama dengan sebelumnya menggunakan tanggal transaksi saat itu.
Ketika user menekan (meng-klik) button Transaksi Baru maka secara otomatis ID Transaksi akan muncul.
Pada form ini terdapat 2 tabel, tabel barang (atas) dan tabel penjualan (bawah). Tabel Barang menampilkan semua data barang-barang yang tersedia pada minimarket beserta stoknya. Tabel Penjualan menampilkan data barang yang telah dibeli oleh user.
Ketika user melakukan pembelian barang, maka secara otomatis stok akan berkurang.
Source code dari kelas cekStok() :
berikan event mouseClicked pada tabel Barang kemudian tambahkan script dibawah ini :
private void tabelBarangMouseClicked(java.awt.event.MouseEvent evt) {
if (belumTrans == false) {
JOptionPane.showMessageDialog(null, “Anda belum buat transaksi “);
} else {
idbarang = tabelBarang.getValueAt(tabelBarang.getSelectedRow(), 0).toString();
txtIDBarang.setText(tabelBarang.getValueAt(tabelBarang.getSelectedRow(), 0).toString());
txtHarga.setText(tabelBarang.getValueAt(tabelBarang.getSelectedRow(), 2).toString());
}
// TODO add your handling code here:
}
Source code dari kelas updateStok() :
Berikut adalah source code untuk menghitung pembayaran transaksi.
Source code updateTotal() :
Berikan event keyPressed pada texfield bayar, lalu tambahkan script dibawah ini :
Setiap terjadi transaksi per-item maka sistem akan menghitung laba dari setiap transaksi. Setiap item memiliki laba berbeda meskipun item tersebut sama. Berikut adalah source code untuk menghitung laba dari setiap transaksi :
Seperti yang telah dijelaskan pada form sebelumnya, Form Stok Barang ini hanya menampilkan data barang berserta jumlah stok barang tersebut.
Buat desain Form Stok Barang seperti gambar dibawah ini :
Form ini akan menampilkan data atau nama barang yang mengandung karakter dari yang kita inputkan. Berikut source codenya :
Source code dari fungsi select() :
Source code dari fungsi cari() :
- Untuk fungsi button Cancel dan Back sama dengan form yang sebelumnya.
Form Detail Pengadaan Barang ini masih ada hubungannya dengan Form Transaksi Pengadaan Barang. Kenapa begitu ?? karena pada tabel Form Pengadaan Barang terdapat button “Detail” yang ketika di klik akan masuk ke Form Detail Pengadaan Barang. Form ini berfungsi untuk memberikan informasi secara detail terhadap barang, harga, dan akan berpengaruh terhadap stok barang dan laporan barang.
Buat desain Form Detail Pengadaan Barang seperti gambar dibawah ini :
Terdapat 2 tab pada From ini, yaitu : tab Detail Pengadaan dan tab Harga Jual
Sekarang kita masuk ke dalam tab Detail Pengadaan. Pada tab ini terdapat 2 jComboBox untuk kategori barang dan nama barang. Untuk memberikan event pada jComboBox caranya klik kanan pada jComboBox >> Event >> item >> itemStateChanged.
Secara default jika kita menggunakan event ItemStateChange saat Form di load secara automatis event ini di jalankan 2x.
double klik pada jComboBox Kategori Barang lalu tambahkan script dibawah ini :
rivate void cbKategoriItemStateChanged(java.awt.event.ItemEvent evt) {
if (count >= 2) {
PanggilBarang(cbKategori.getSelectedItem().toString());
} else {
count++;
}
// TODO add your handling code here:
}
double klik pada jComboBox Nama Barang lalu tambahkan script dibawah ini :
private void cbNamaBarangItemStateChanged(java.awt.event.ItemEvent evt) {
if (count2 >= 2) {
if (cbNamaBarang.getSelectedItem().toString().equals(“– Pilih Nama Barang –“)) {
} else {
PanggilIDBarang(cbNamaBarang.getSelectedItem().toString());
}
} else {
count2++;
}
}
- Untuk ID Transaksi sama dengan ID Pengadaan
Dalam Form diatas juga terdapat JRadioButton yang menyatakan ada tidaknya tanggal Kadaluarsa, kita dapat memberi event agar jika salah satu dipilih maka yang lain di disable, kita dapat memberikan event mouse enter dan mouse exit.
—————————————————————————————————————————————————————–
Sekarang kita masuk ke dalam tab Harga Jual. Harga jual hanya terdapat satu harga dan tidak mungkin kita memberikan harga yang berbeda pada satu barang maka pastikan penyimpanan harga jual ada dalam table barang.
Untuk menampilkan data diatas dapat menggunakan script :
Untuk memasukkan harga jual ke dalam tabel, scriptnya sebagai berikut :
Untuk mencari data yang kita inginkan, scriptnya sebagai berikut :
Setelah kita menambahkan barang pasti jumlah barang dan total harga akan berubah. Dibawah ini adalah scriptnya :
Source code untuk update stok barang apabila terjadi transaksi. Kelas ini akan berpengaruh terhadap Form Stok Barang yang akan kita bahas setelah ini.
Source code untuk Total dan Total Transaksi yang berfungsi untuk menunjukkan total harga dari semua barang sesuai dengan supplier.
Setelah Form Kategori dan Form Input Barang selesai dibuat, sekarang kita akan membuat Form Pengadaan Barang. Form ini berfungsi untuk membuat supplier baru dengan ID yang didapat dari tanggal pada saat itu dengan secara otomatis akan memberikan nomor ID Pengadaan.
Misal tanggal 22 Juli 2013 kita melakukan beberapa transaksi maka ID yang terbentuk adalah :
TB.22.07.2013.100 — TB.22.07.2013.101 — TB.22.07.2013.102 —- ……………….dst.
Buat desain Form Pengadaan seperti gambar dibawah ini :
Untuk memberikan inputan tanggal maka perlu ditambahkan library JDateChooser. Untuk menambahkan JDateChooser caranya klik kanan pada palette >> Palette Manager >> Add From Library >> Manage Library >> Add JAR/Folder >> ambil JDateChooser sesuai tempat penyimpanan anda >> OK.
Berikan script ini di bagian atas. SimpleDateFormat dateFormat = new SimpleDateFormat(“yyyy-MM-dd”, Locale.getDefault());
Berikut adalah script untuk memberikan ID Pengadaan secara otomatis.
Dalam Form diatas juga terdapat button didalam JTable, untuk membuat button tersebut dapat menggunakan seperti contoh berikut :
Buat kelas baru dengan nama ButtonDetail.
Berikut adalah source code dari fungsi select() yang akan menampilkan data dari tabel diatas berdasarkan tabel pengadaan pada database.
- Keterangan : data yang akan tampil adalah id_pengadaan, tanggal, supplier, total transaksi yang diambil dari tabel pengadaan dengan ketentuan ascending (urut abjad). Script diatas juga akan memberikan pesan kesalahan apabila data tidak dapat tampil dengan fungsi “JOptionPane.showMessageDialog“.
berikan fungsi Mouse Click pada tabel, caranya klik kanan tabel >> Event >> mouse >> mouseClicked. Kemudian tambahkan script dibawah ini :
private void tabelPengadaanMouseClicked(java.awt.event.MouseEvent evt) {
idPengadaan = tabelPengadaan.getValueAt(tabelPengadaan.getSelectedRow(), 0).toString();
tabelPengadaan.getColumnModel().getColumn(4).setCellRenderer(new ButtonDetail());
if (tabelPengadaan.getSelectedColumn() == 4) {
this.dispose();
new DetailPengadaan(idPengadaan).setVisible(true);
}
txtSupplier.setText(labelPengadaan.getValueAt(tabelPengadaan.getSelectedRow(), 2).toString());
id = tabelPengadaan.getValueAt(tabelPengadaan.getSelectedRow(), 0).toString();
// TODO add your handling code here:
}
- keterangan : tabelPengadaan.getColumnModel().getColumn(4).setCellRenderer(new ButtonDetail()); Merupakan script untuk menambahkan button dalam tabel
Disini saya ingin melakukan insert data tanpa harus menekan tombol insert (cukup menggunakan perintah enter keyboard) kita bisa memberikan event pada textfield Supplier dengan Event keyPressed. Caranya klik kanan pada textField Supplier >> Event >> Key >> keyPressed. Tambahkan script dibawah ini :
private void txtSupplierKeyPressed(java.awt.event.KeyEvent evt) {
if (evt.getKeyChar() == ‘\n’) {
if (dateChooser.getText().equals(“”) || txtSupplier.getText().equals(“”)) {
JOptionPane.showMessageDialog(null, “Maaf, lengkapi inputan anda !!”);
} else {
AutoID();
Select();
clear();
}
}
// TODO add your handling code here:
}
Pada From Pengadaan Barang terdapat 4 Button yang memiliki fungsi masing- masing.
1. button Insert : berfungsi untuk menginputkan tanggal pengadaan dan nama supplier pada From Pengadaan Barang. Double klik pada button Insert.
private void btnInsertActionPerformed(java.awt.event.ActionEvent evt) {
if (dateChooser.getText().equals(“”) || txtSupplier.getText().equals(“”)) {
JOptionPane.showMessageDialog(null, “Maaf, lengkapi inputan anda !!”);
} else {
AutoID();
Select();
clear();
}
// TODO add your handling code here:
}
2. button Delete: berfungsi untuk menghapus data yang kita inginkan pada Form Pengadaan Barang.
double klik pada button Delete lalu tambahkan script dibawah ini :
private void btnDeleteActionPerformed(java.awt.event.ActionEvent evt) {
String idPengadaan = tabelPengadaan.getValueAt(tabelPengadaan.getSelectedRow(), 0).toString();
if (dateChooser.getText().equals(“”) || txtSupplier.getText().equals(“”)) {
JOptionPane.showMessageDialog(null, “Pilih data terlebih dahulu !!”);
} else {
int hasil = JOptionPane.showConfirmDialog(null, “Apakah anda akan menghapus data dengan ID PENGADAAN ” + idPengadaan, null, JOptionPane.YES_NO_OPTION);
if (hasil == JOptionPane.YES_OPTION) {
Delete();
Select();
clear();
JOptionPane.showMessageDialog(null, “Delete sukses !!”);
} else if (hasil == JOptionPane.NO_OPTION) {
clear();
}
}
// TODO add your handling code here:
}
3. button Cancel: berfungsi untuk membatalkan perintah pada saat kita akan menghapus atau menginputkan.
pada button ini tidak memiliki banyak script, hanya memanggil konstruktor clear() yang akan mengkosongkan field-field pada form ini.
4. button Back: berfungsi untuk kembali ke Menu Utama. Double klik pada button Back, tambahkan script di bawah ini :
private void btnBackActionPerformed(java.awt.event.ActionEvent evt) {
new MenuUtama(Login.kondisiLogin).setVisible(true);
this.dispose();
// TODO add your handling code here:
}
Berikut adalah gambar dari transaksi dengan memberikan ID Pengadaan secara otomatis.
Form selanjutnya yang akan kita bahas adalah Form Input Barang. Form ini berfungsi untuk menginputkan semua data barang yang akan dijual pada Minimarket tersebut.
Buat desain Form Input Barang seperti gambar dibawah ini :
Beri nama masing-masing pada textfield, jComboBox, button, dan jTable.
Kemudian kita akan setting source codenya. Berikut adalah source code dari fungsi select() yang akan menampilkan data tabel diatas berdasarkan tabel kategori pada database.
- Keterangan : data yang akan tampil adalah id_barang, kategori, nama barang, diambil dari tabel barang dengan ketentuan ascending (urut abjad). Script diatas juga akan memberikan pesan kesalahan apabila data tidak dapat tampil dengan fungsi “JOptionPane.showMessageDialog“.
berikan fungsi Mouse Click pada tabel, caranya klik kanan tabel >> Event >> mouse >> mouseClicked. Kemudian tambahkan script dibawah ini :
Pada From Input Barang terdapat 5 Button yang memiliki fungsi masing- masing.
1. button Insert : berfungsi untuk menginputkan id_barang, kategori barang, dan nama barang pada From Barang.
double klik pada button Insert lalu tambahkan script dibawah ini :
private void btnInsertActionPerformed(java.awt.event.ActionEvent evt) {
if (txtIDBarang.getText().equals(“”) || txtNamaBarang.getText().equals(“”)) {
JOptionPane.showMessageDialog(null, “Maaf, lengkapi inputan anda !!”);
} else {
Insert();
Select();
clear();
}
// TODO add your handling code here:
}
- keterangan : data harus di lengkapi semua tidak boleh ada yang kosong.
2. button Update : berfungsi untuk mengubah data id_barang, ketegori barang, dan nama barang pada Form Barang.
double klik pada button Update lalu tambahkan script dibawah ini :
private void btnUpdateActionPerformed(java.awt.event.ActionEvent evt) {
if (txtIDBarang.getText().equals(“”) || txtNamaBarang.getText().equals(“”)) {
JOptionPane.showMessageDialog(null, “Pilih data terlebih dahulu !!”);
} else {
Update();
Select();
clear();
JOptionPane.showMessageDialog(null, “Update sukses !!”);
}
// TODO add your handling code here:
}
- keterangan : untuk mengubah data, kita harus mengklik data yang ingin kita ubah. Disinilah fungsi mouseClick yang telah dijelaskan diatas.
3. button Delete: berfungsi untuk menghapus data yang kita inginkan pada Form Barang.
double klik pada button Delete lalu tambahkan script dibawah ini :
private void btnDeleteActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
String idBarang = txtIDBarang.getText();
if (txtIDBarang.getText().equals(“”) || txtNamaBarang.getText().equals(“”)) {
JOptionPane.showMessageDialog(null, “Pilih data terlebih dahulu !!”);
} else {
int hasil = JOptionPane.showConfirmDialog(null, “Apakah anda akan menghapus data dengan ID Barang ” + idBarang, null, JOptionPane.YES_NO_OPTION);
if (hasil == JOptionPane.YES_OPTION) {
Delete();
Select();
clear();
JOptionPane.showMessageDialog(null, “Delete sukses !!”);
} else if (hasil == JOptionPane.NO_OPTION) {
clear();
}
}
- keterangan : untuk menghapus data, kita harus mengklik data yang ingin kita hapus. Kemudian akan ada konfirmasi apakah anda yakin untuk menghapus data tersebut.
4. button Cancel: berfungsi untuk membatalkan perintah pada saat kita akan menghapus atau menginputkan.
pada button ini tidak memiliki banyak script, hanya memanggil konstruktor clear() yang akan mengkosongkan field-field pada form ini.
5. button Back: berfungsi untuk kembali ke Menu Utama. Double klik pada button Back, tambahkan script di bawah ini :
private void btnBackActionPerformed(java.awt.event.ActionEvent evt) {
new MenuUtama(Login.kondisiLogin).setVisible(true);
this.dispose();
// TODO add your handling code here:
}
Untuk jComboBox yang digunakan oleh kategori mengambil semua isi dari kolom kategori pada table kategori.
Untuk menampilkan isi dari tabel kategori ke dalam jComboBox perhatikan script berikut ini:
Form selanjutnya yang akan kita bahas adalah Form Kategori Barang. Form ini berfungsi untuk menginputkan kategori barang apa saja yang tersedia pada Minimarket tersebut. Dan jangan lupa, kita harus tetap terkoneksi dengan database, karena data yang akan kita inputkan harus bisa dilihat pada database Minimarket tersebut.
Buat desain Form Kategori Barang seperti gambar dibawah ini :
Beri nama masing-masing pada textfield, textarea, button, dan jTable.
Kemudian kita akan setting source codenya. Berikut adalah source code dari fungsi select() yang akan menampilkan data tabel diatas berdasarkan database kategori.
- keterangan : akan menampilkan data dari tabel kategori yang berisi kategori dan deskripsi. Data yang akan tampil berdasarkan abjad. Script diatas juga akan memberikan pesan kesalahan apabila data tidak dapat tampil dengan fungsi “JOptionPane.showMessageDialog“.
berikan fungsi Mouse Click pada tabel, caranya klik kanan tabel >> Event >> mouse >> mouseClicked. Kemudian tambahkan script dibawah ini :
Pada From Kategori Barang terdapat 4 Button yang memiliki fungsi masing- masing.
1. button Insert : berfungsi untuk menginputkan jenis dari kategori beserta deskripsinya yang dimiliki oleh minimarket tersebut.
double klik pada button Insert lalu tambahkan script dibawah ini :
private void btnInsertActionPerformed(java.awt.event.ActionEvent evt) {
if (txtKategori.getText().equals(“”) || txtDeskripsi.getText().equals(“”)) {
JOptionPane.showMessageDialog(null, “Maaf, lengkapi inputan anda !!”);
} else {
Insert();
Select();
clear();
}
// TODO add your handling code here:
}
- keterangan : data harus di lengkapi semua tidak boleh ada yang kosong.
2. button Delete: berfungsi untuk menghapus data yang kita inginkan.
double klik pada button Delete lalu tambahkan script dibawah ini :
private void btnDeleteActionPerformed(java.awt.event.ActionEvent evt) {
String kategori = txtKategori.getText();
if (txtKategori.getText().equals(“”) || txtDeskripsi.getText().equals(“”)) {
JOptionPane.showMessageDialog(null, “Pilih data terlebih dahulu !!”);
} else {
int hasil = JOptionPane.showConfirmDialog(null, “Apakah anda akan menghapus data” + kategori, null, JOptionPane.YES_NO_OPTION);
if (hasil == JOptionPane.YES_OPTION) {
Delete();
Select();
clear();
JOptionPane.showMessageDialog(null, “Delete sukses !!”);
} else if (hasil == JOptionPane.NO_OPTION) {
clear();
}
}
// TODO add your handling code here:
}
- keterangan : untuk menghapus data, kita harus mengklik data yang ingin kita hapus. Kemudian akan ada konfirmasi apakah anda yakin untuk menghapus data tersebut.
3. button Cancel: berfungsi untuk membatalkan perintah pada saat kita akan menghapus atau menginputkan.
pada button ini tidak memiliki banyak script, hanya memanggil konstruktor clear() yang akan mengkosongkan field-field pada form ini.
4. button Back: berfungsi untuk kembali ke Menu Utama. Double klik pada button Back, tambahkan script di bawah ini :
private void btnBackActionPerformed(java.awt.event.ActionEvent evt) {
new MenuUtama(Login.kondisiLogin).setVisible(true);
this.dispose();
// TODO add your handling code here:
}
Berikut gambar dari data yang ada pada Form Kategori dan tabel kategori pada database.
Isi data pada tabel Kategori sama dengan data pada From Kategori Barang.
Buat kelas Login.java untuk desain interface Form Login
Desain kelas Login.java seperti tampilan dibawah ini dengan mendrag icon – icon pada pallete. Lalu ubah nama field-field beserta iconnya tersebut caranya klik kanan >> change variable name >> ubah nama:
Kemudian kita setting source codenya. Berikut ini adalah source code dari prosesLogin() yang berfungsi mengecek username dan password yang masuk apakah benar atau salah.
Pada form Login ini terdapat dua button yang memiliki fungsi masing-masing.
button login: akan mengeksekusi jika user dan password benar.
button cancel : akan kembali ke Menu Utama apakah kita tidak ingin login.
——————————————————————————————————————————————————————-
Setelah membuat form login sekarang kita akan membuat form User. Pada form ini terdapat dua Tab yang memiliki fungsi masing-masing, yaitu tab Tambah User dan tab Reset Password. Dan juga yang dapat masuk ke dalam Form ini hanyalah user yang bertindak sebagai “admin“.
Gambar tab Tambah User : berfungsi untuk menambahkan user baru dan mengubah data dari user tersebut agar dapat melakukanlogin.
Buat tabel terlebih dahulu dan beri nama tabel tersebut. Setelah itu setting source codenya.
Kita buat perintah select() yang berfungsi untuk menampilkan isi tabel yang telah kita buat dengan koneksi database. Berikut adalah source codenya.
Setelah itu kita buat sebuah konstruktor insert dan delete untuk menjalankan fungsi button pada Form User ini.
klik kanan pada button Add >> events >> action >> actionPerformed. Kemudian tambahkan script berikut :
if (txtUsername.getText().equals(“”) || txtPassword.getText().equals(“”)) {
JOptionPane.showMessageDialog(null, “Masukkan username dan password!”);
} else {
insert();
select();
clear();
}
klik kanan pada button Add >> events >> action >> actionPerformed. Kemudian tambahkan script berikut :
if (txtUsername.getText().equals(“”) || txtTelpon.getText().equals(“”)) {
JOptionPane.showMessageDialog(null, “Masukkan / Klik No. Telepon pada tabel untuk menghapus!”);
} else {
delete();
select();
clear();
}
Gambar tab Reset Password : berfungsi untuk mengubah password user.