PEMROGRAMAN VISUAL
PROGRAM STUDI PENDIDIKAN TEKNOLOGI INFORMASI
Studi Kasus:
MEMBUAT PROJECT APLIKASI PENJUALAN TOKO
Aplikasi yang dibutuhkan dalam pembelajaran mata kuliah Pemrograman Visual ini adalah:
1. Netbeans IDE 8.2
2. JDK 1.8.0
3. Xampp Mysql Server
4. Ireport 5.5.0 plugin
5. Ireport 5.5.0 jar
List Tabel:
Gunakan Tool PhpMyAdmin dengan mengaktifkan pilihan mysql pada Xampp. Kemudian
akses melalui browser dengan link: http://localhost/phpmyadmin
Sampai tahap ini kita sudah selesai membuat Project dan membuat Package.
B. Merancang Form
Pada Package “Form” buatkan sebuah Form menggunakan jFrameform, beri nama :
Masterbarang.
Rancang form Masterbarang dengan menambahkan beberapa komponen berikut:
1
2 3
15
16
5 9 13
6 10 14
7 11
12
8
No Komponen Properties
1 jLabel Text : DATA BARANG
2 jLabel Text : Cari Barang
3 jTextfield Variabel Name : txt_cari
4 jTabel Variabel Name : tabel_barang
5 jLabel Text : Kode Barang
6 jLabel Text : Nama Barang
7 jLabel Text : Harga Jual
8 jLabel Text : Stok
9 jTextfield Variabel Name : txt_kodebarang
10 jTextfield Variabel Name : txt_namabarang
11 jTextfield Variabel Name : txt_hargabarang
12 jTextfield Variabel Name : txt_stokbarang
13 jButton Variabel Name : cmd_simpan
14 jButton Variabel Name : cmd_keluar
15 jLabel Text : INPUT DATA BARANG
16 jPanel -
3. Tambahkan Libraries MYSQL JDBC DRIVER pada project, dengan cara Klik
Kanan pada Libraries – Add Library, kemudian cari driver librarynya.
4. Kemudian ketikkan Source code berikut:
Class : koneksi.java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
/*
* To change this license header, choose License Headers in Project Prop
erties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author asus
*/
public class koneksi {
Connection conn;
Statement st;
ResultSet rs;
/**
* Creates new form
*/
public Masterbarang() {
initComponents();
konek.setKoneksi();
TampilDataBarang();
}
void TampilDataBarang(){
String query_tampil="SELECT*FROM barang order by kode_barang";
try {
konek.rs=konek.st.executeQuery(query_tampil);
ResultSetMetaData m=konek.rs.getMetaData();
int kolom=m.getColumnCount();
int baris=0;
while(konek.rs.next()){
baris=konek.rs.getRow();
}
databarang=new Object[baris][kolom];
int x=0;
konek.rs.beforeFirst();
while(konek.rs.next()){
databarang[x][0]=konek.rs.getString("kode_barang");
databarang[x][1]=konek.rs.getString("nama_barang");
databarang[x][2]=konek.rs.getString("harga_barang");
databarang[x][3]=konek.rs.getString("stok_barang");
x++;
}
tabel_barang.setModel(new DefaultTableModel(databarang, label)
);
} catch (SQLException ex) {
Logger.getLogger(Masterbarang.class.getName()).log(Level.SEVER
E, null, ex);
}
}
void cariData(){
String query_cari="SELECT*FROM barang "
+ "WHERE nama_barang LIKE '%"+txt_cari.getText()+"%'";
try {
konek.rs=konek.st.executeQuery(query_cari);
ResultSetMetaData m=konek.rs.getMetaData();
int kolom=m.getColumnCount();
int baris=0;
while(konek.rs.next()){
baris=konek.rs.getRow();
}
databarang=new Object[baris][kolom];
int x=0;
konek.rs.beforeFirst();
while(konek.rs.next()){
databarang[x][0]=konek.rs.getString("kode_barang");
databarang[x][1]=konek.rs.getString("nama_barang");
databarang[x][2]=konek.rs.getString("harga_barang");
databarang[x][3]=konek.rs.getString("stok_barang");
x++;
}
tabel_barang.setModel(new DefaultTableModel(databarang, labe
l));
} catch (SQLException ex) {
Logger.getLogger(Masterbarang.class.getName()).log(Level.SEV
ERE, null, ex);
}
}
}
Setelah semua kebutuhan Method telah dibuatkan, berikutnya penambahan Event yang
diterapkan pada setiap komponen dalam project. Event ini akan memamggil setiap
method yang telah dibuat sebelumnya.
Method ini akan di eksekusi ketika program pertama kali dijalankan. Klik kanan pada JFrame,
pilih Event – Window – Window Activated, ketikan Script Berikut: (kondisi saat form
dijalankan):
Event berikut untuk Button cmd_simpan. Klik kanan pada cmd_simpan, pilih Event – Action
– Action Performed, ketikan Script Berikut:
Event berikut diterapkan pada txt_kodebarang untuk melakukan pengecekan apabila kode
barang sudah disimpan sebelumnya akan langsung ditampilkan pada jTextfield dan perubahan
teks pada button. Klik kanan pada txt_kodebarang, pilih Event – key – KeyPressed, ketikan
Script Berikut:
if(evt.getKeyCode()==KeyEvent.VK_ENTER){
String sintak_cari="SELECT*FROM barang WHERE "
+ "kode_barang='"+txt_kodebarang.getText()+"'";
try {
konek.rs=konek.st.executeQuery(sintak_cari);
if(konek.rs.next()){
txt_kodebarang.setEnabled(false);
txt_kodebarang.setText(konek.rs.getString("kode_barang"));
txt_namabarang.setText(konek.rs.getString("nama_barang"));
txt_hargabarang.setText(konek.rs.getString("harga_barang")
);
txt_stokbarang.setText(konek.rs.getString("stok_barang"));
cmd_simpan.setText("UPDATE");
}else{
txt_namabarang.requestFocus();
}
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex);
}
}
}
Klik kanan pada txt_namabarang, dan txt_hargabarang, pilih Event – key – KeyPressed,
ketikan Script Berikut yang berfungsi memindahkan posisi kursor ke object tertentu saat User
menekan enter pada Keyboard.
if(evt.getKeyCode()==KeyEvent.VK_ENTER){
txt_hargabarang.requestFocus();
}
}
if(evt.getKeyCode()==KeyEvent.VK_ENTER){
txt_stokbarang.requestFocus();
}
}
Klik kanan pada tabel_barang, pilih Event – Mouse – MouseClicked, ketikan Script Berikut:
yang berfungsi memanggil method SetTabel() yang berfungsi untuk menampilkan nilai-nilai
pada tabel ke dalam form.
Klik kanan pada tabel_barang, pilih Event – Key – KeyPressed, ketikan Script Berikut yang
berfungsi untuk memanggil method HapusData() untuk menghapus data pada tabel terpilih
pada saat ditekan tombol Backspace di Keyboards.
if(evt.getKeyCode()==KeyEvent.VK_BACK_SPACE){
HapusData();
}
}
Klik kanan pada txt_cari, pilih Event – Key – KeyTyped, ketikan Script Berikut untuk
pemanggilan Method caridata() yang berfungsi apabila sesuatu diketikkan pada Text
Pencarian, maka apabila ditemukan data akan ditampilkan pada Tabel Barang.
Jalankan project nya, kurang lebih hasil sbb:
TUGAS 1 MAHASISWA
MEMBUAT FORM USER
Buatkan sebuah Form untuk Data User, simpan pada Package Form. Data yang disimpan
dalam database yaitu:
- kode_user (jTextfield)
- nama_user (jTextfield0
- password _user(jPassword)
- level_user (jCombobox), nilai pilihannya : Admin dan Kasir
Mahasiswa mengerjakan Form User, Dosen menilai sebagai Nilai 1. Beri nama form tersebut
dengan nama : master_user. Tampilan dibebaskan. Poin penilaian berhasil melakukan operasi
TAMPIL DATA, SIMPAN, HAPUS dan UBAH DATA.
PRAKTEK 3 : MEMBUAT FORM LOGIN DAN MENU
Membuat Form Menu Admin
Dalam studi kasus penjualan ini, kita menggunakan 2 akses level untuk User, yaitu level
sebagai admin, dan akses sebagai kasir. Adapun ruang lingkup akses level adalah sebagai
berikut:
Kasir Transaksi
Laporan
Utility (Ganti Password)
Untuk membedakan akses level tersebut, salah satu cara yang bisa dilakukan adalah dengan
membuat 2 form menu utama. Menu pertama untuk Admin, menu lainnya untuk level kasir.
- Klik kanan pada package form – New – jFrameform, kemudian beri nama :
menu_admin
- Tambahkan Komponen jMenu Bar pada form yang telah dibuat, lihat gambar:
- Tambahkan 1 Menu Item sebagai Sub Menu, langkahnya Klik kanan pada Menu File –
Add From Palette – Menu Item.
- Tambahkan 2 Menu Item dengan cara yang sama seperti langkah sebelumnya. Set
propertiesnya sbb:
jMenuitem1, Edit Text = Barang, change Variabel Name = menu_barang
jMenuitem2, Edit Text = User, change Variabel Name = menu_user
Jadinya tampilan sbb:
- Lakukan hal yang sama untuk jMenuitem2 dengan propertiesnya : Edit text diisi Tentang
dan Change Variabel Name = menu_tentang.
- Klik kanan pada Menu Bar Edit – Edit Text – beri nilainya : Master
- Berikutnya, tambahkan jMenu Bar Utama, langkahnya klik kanan pada Menu Bar – Add
Menu, Edit text menjadi : Transaksi, change Variabel Name = menu_transaksi
- Lakukan hal dan langkah yang sama seperti langkah pembuatan menu diatas untuk
menambahkan Menu Laporan dan Utility, dengan set propertiesnya sbb:
Komponen Properties
jMenu3 Edit text : Laporan
jMenuitem1 Edit Text : Data Barang
Change Variabel Name : menu_laporanbarang
jMenuitem2 Edit Text : Data User
Change Variabel Name : menu_lapuser
jMenuitem3 Edit Text : Data Transaksi
Change Variabel Name : menu_laptransaksi
jMenu4 Edit Text : Utility
jMenuitem1 Edit Text : Ganti Password
Change Variabel Name : menu_gantipassword
- Tambahkan komponen jLabel kedalam form menu Utama Admin kemudian, atur
propertiesnya sehingga tampilan nya seperti gambar dibawah. Untuk jLabel4, jLabel5
dan jLabel6 change variable name masing-masing menjadi : j_nama, j_kode dan
j_level.
Ketikkan beberapa baris script code berikut untuk mengatur tampilan Menu dan Event nya.
Memanggil Class Koneksi
Deklarasi di Contstruktor
- Klik kanan pada jForm, pilih Event – Window – WindowActivated, ketikkan baris code
berikut yang berfungsi untuk memberikan nilai j_nama, j_kode, j_level dari variable
nama_user, kode_user, dan level_user yang diambil dari Form Login yang telah dibuat
sebelumnya (TUGAS 1).
TUGAS 2:
Membuat Form Menu Kasir
Untuk membuat Menu Utama Level Kasir silakan anda ikuti langkah-langkah seperti membuat
menu utama level admin. Rancangan menu untuk level kasir adalah sebagai berikut:
Beri nama untuk form ini : menu_kasir simpan pada package Form
PRAKTEK 4: MEMBUAT FORM LOGIN
Desain form Login sehingga membentuk tampilan aplikasi sbb:
Properties komponen
Kemudian buat sebuah method untuk memproses user login. Berikut source codenya:
// Method proses login
void proses_masuk(){
String kode_user="";
String password="";
kode_user=txt_kode.getText();
String sintax_cek="SELECT kode_user, nama_user, password_user, level_u
ser FROM user "
+ "WHERE kode_user='"+txt_kode.getText()+"' "
+ "AND password_user='"+txt_pass.getText()+"'";
try {
co.rs=co.st.executeQuery(sintax_cek);
if(co.rs.next()){
if(txt_level.getText().equals("Admin")){
Menu_admin menu=new Menu_admin();
Ganti_password gp=new Ganti_password();
menu.setLocationRelativeTo(null);
menu.setVisible(true);
menu.kode_user=co.rs.getString("kode_user");
menu.nama_user=co.rs.getString("nama_user");
menu.level_user=co.rs.getString("level_user");
gp.kode_user=co.rs.getString("kode_user");
this.dispose();
}else if(txt_level.getText().equals("Kasir")){
Menu_kasir kasir=new Menu_kasir();
Ganti_password gp=new Ganti_password();
kasir.setLocationRelativeTo(null);
kasir.setVisible(true);
kasir.kode_user=co.rs.getString("kode_user");
kasir.nama_user=co.rs.getString("nama_user");
kasir.level_user=co.rs.getString("level_user");
gp.kode_user=co.rs.getString("kode_user");
this.dispose();
}
}else{
JOptionPane.showMessageDialog(null, "Kode User atau Password S
alah Inputan, cek kembali");;
clear();
txt_kode.setEnabled(true);
txt_kode.requestFocus();
}
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex);
}
Klik kanan pada jFrame, pilih Event – Window – WindowActivated , kemudian ketikkan
script berikut yang berfungsi untuk men-nonaktifkan inputan Password dan button login dan
kursor mouse focus pada inputan Kode User pada saat form login dijalankan.
txt_pass.setEnabled(false);
cmd_masuk.setEnabled(false);
txt_kode.requestFocus();
}
Selanjutnya, lakukan klik kanan Kembali pada txt_kodeuser, pilih Event – Action –
actionPerformed untuk memberikan fungsi pada saat Kode User diketikkan dan ditekan Enter,
program akan mengecek kode user yang terdaftar pada Tabel User, apabila ada dan benar, maka
tampilkan keterangan pada level User.
String kode_user="";
kode_user=txt_kode.getText();
String sintax="SELECT*FROM user WHERE kode_user='"+txt_kode.getText()+
"'";
try {
co.rs=co.st.executeQuery(sintax);
if(co.rs.next()){
txt_kode.setEnabled(false);
txt_level.setText(co.rs.getString("level_user"));
txt_pass.setEnabled(true);
txt_pass.requestFocus();
cmd_masuk.setEnabled(true);
txt_kode.setEnabled(false);
}else{
JOptionPane.showMessageDialog(null, "Kode User Salah");
clear();
txt_kode.setEnabled(true);
txt_kode.requestFocus();
}
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex);
}
}
Kode terakhir untuk login, panggil fungsi dispose() pada event klik button keluar dan method
proses_masuk() pada event button masuk.
dispose();
}
proses_masuk();
}
Note :
Kode : public transaksi trans=null; akan memunculkan error, ini terjadi karena Form
Class transaksi belum kita buatkan.
Script code dalam method untuk menampilkan data barang pada Tabel Barang:
void TampilDataBarang(){
String query_tampil="SELECT*FROM barang order by kode_barang";
try {
ko.rs=ko.st.executeQuery(query_tampil);
ResultSetMetaData m=ko.rs.getMetaData();
int kolom=m.getColumnCount();
int baris=0;
while(ko.rs.next()){
baris=ko.rs.getRow();
}
databarang=new Object[baris][kolom];
int x=0;
ko.rs.beforeFirst();
while(ko.rs.next()){
databarang[x][0]=ko.rs.getString("kode_barang");
databarang[x][1]=ko.rs.getString("nama_barang");
databarang[x][2]=ko.rs.getString("harga_barang");
databarang[x][3]=ko.rs.getString("stok_barang");
x++;
}
tabel_barang.setModel(new DefaultTableModel(databarang, label));
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex);
}
}
Method untuk melakukan pencarian data barang berdasarkan inputan nama barang:
void cari_barang(){
String query_cari="SELECT*FROM barang "
+ "WHERE nama_barang LIKE '%"+txt_cari.getText()+"%'";
try {
ko.rs=ko.st.executeQuery(query_cari);
ResultSetMetaData m=ko.rs.getMetaData();
int kolom=m.getColumnCount();
int baris=0;
while(ko.rs.next()){
baris=ko.rs.getRow();
}
databarang=new Object[baris][kolom];
int x=0;
ko.rs.beforeFirst();
while(ko.rs.next()){
databarang[x][0]=ko.rs.getString("kode_barang");
databarang[x][1]=ko.rs.getString("nama_barang");
databarang[x][2]=ko.rs.getString("harga_barang");
databarang[x][3]=ko.rs.getString("stok_barang");
x++;
}
tabel_barang.setModel(new DefaultTableModel(databarang, label));
} catch (SQLException ex) {
Logger.getLogger(Masterbarang.class.getName()).log(Level.SEVERE, n
ull, ex);
}
}
Dan code berikut untuk memberikan event click data barang pada tabel dan selanjutnya barang
yang di klik akan dimunculkan di Form Transaksi. Klik kanan pada tabel_barang – Event –
Mouse – MouseClicked, ketikkan script berikut:
int tabelbarang=tabel_barang.getSelectedRow();
trans.kode_barang=tabel_barang.getValueAt(tabelbarang, 0).toString();
trans.nama_barang=tabel_barang.getValueAt(tabelbarang, 1).toString();
trans.harga_barang=tabel_barang.getValueAt(tabelbarang, 2).toString();
this.dispose();
}
Berikutnya, klik kanan pada txt_cari, pilih Event – Key – KeyTyped, ketikkan script code
berikut untuk memanggil Method cari_barang().
cari_barang();
}
Sampai disini, proses pembuatan form tabel barang dengan jDialog Form sudah selesai. Jika
ada error itu terjadi karena Class Transaksi dan beberapa Text Field belum kita buatkan.
Berikutnya akan dibuat class untuk Form Transaksi.
No Komponen Properties
1 jTextfield1 Variable name : txt_nomortransaksi
Text : (kosongkan)
2 jTextfield2 Variabel name : txt_tgl
Text : (kosongkan)
3 jTextfield3 Variable name : txt_kodeuser
Text : (kosongkan)
4 jTextfield4 Variable name : txt_kodebarang
Text : (kosongkan)
5 jTextfield5 Variable name : txt_namabarang
Text : (kosongkan)
6 jTextfield6 Variable name : txt_hargabarang
Text : (kosongkan)
7 jTextfield7 Variable name : txt_jmlbeli
Text : (kosongkan)
8 jTextfield8 Variable name : txt_subtotal
Text : (kosongkan)
9 jTextfield9 Variable name : txt_jmlbayar
Text : (kosongkan)
10 jTextfield10 Variable name : txt_jmlkembalian
Text : (kosongkan)
11 jButton1 Variable name : cmb_caribarang
Text : …...
12 jButton2 Variable name : cmb_tambah
Text : TAMBAH
13 jButton3 Variable name : cmb_simpan
Text : SIMPAN
14 jButton4 Variable name : cmb_batal
Text : BATAL
15 jButton5 Variable name : cmb_keluar
Text : KELUAR
16 jLabel Text : TOTAL
Variable name : l_total
17 jTable1 Variable name : tabel_barang
Logika Jalan Form Transaksi:
Script Code
Berikut script baris code untuk form transaksi yang tersimpan dalam beberapa Method, yang
nantinya method2 tersebut akan dipanggil melalui Event pada setiap komponen.
public transaksi() {
initComponents();
konek.setKoneksi();
SetTanggal();
awal();
}
// Set Date
public Date tgl=new Date();
public SimpleDateFormat format=new SimpleDateFormat("yyMM");
Code berikut untuk mengambil data pada Form Data Barang, data yang diklik pada jDilog
Tabel barang akan diambil disimpan dalam setiap attribute dan dikembalikan (return) dalam
format data String. String kode_user berfungsi untuk menyimpan data Kode User pada saat
melakukan Login dan nilainya ditampilkan pada txt_kodeuser.
Untuk menampilkan data Barang sesuai Kode Barang yang di input pada txt_kodebarang
ataupun yang diambil pada jDialog Form barang, digunakan method berikut.
Method awal() untuk memanggil method NonAktif() pada saat form dijalankan, method
bersih() untuk bersihkan inputan, Method NonAktif() untuk men-non aktifkan segala inputan,
Method Aktif() untuk meng-Aktifkan inputan dan Method SetTanggal() untuk menampilkan
tanggal sekarang pada txt_tgl.
void awal(){
NonAktif();
}
void bersih(){
txt_nomortransaksi.setText("");
txt_kodebarang.setText("");
txt_namabarang.setText("");
txt_hargabarang.setText("");
txt_jmlbeli.setText("");
txt_subtotal.setText("");
txt_jmlbayar.setText("");
txt_jmlkembalian.setText("");
l_total.setText("0");
}
void NonAktif(){
txt_nomortransaksi.setEnabled(false);
txt_tgl.setEnabled(false);
txt_kodebarang.setEnabled(false);
txt_kodeuser.setEnabled(false);
txt_namabarang.setEnabled(false);
txt_hargabarang.setEnabled(false);
txt_jmlbeli.setEnabled(false);
txt_subtotal.setEnabled(false);
txt_jmlbayar.setEnabled(false);
txt_jmlkembalian.setEnabled(false);
}
void Aktif(){
txt_kodebarang.setEnabled(true);
txt_jmlbeli.setEnabled(true);
txt_jmlbayar.setEnabled(true);
}
void SetTanggal(){
java.util.Date now=new java.util.Date();
java.text.SimpleDateFormat kalender=new java.text.SimpleDateFormat("yy
yy-MM-dd");
txt_tgl.setText(kalender.format(now));
}
Untuk membuat Nomor Transaksi secara otomatis, source code yang digunakan adalah sebagai
berikut. Penjelasannya, format nomor transaksi yang diinginkan adalah “BR-(tahunbulan)
nomor urut”. Nomor akan terurut secara otomatis berdasarkan data dalam tabel transaksi.
Method berikut berfungsi untuk menyimpan data transaksi pada Tabel “sementara” di database.
Data sementara ini nantinya akan ditampilkan pada Tabel Transaksi dan akan dihapus pada
saat tombol Simpan ditekan, dan datanya diambil untuk kemudian disimpan kedalam tabel
“detail_transaksi”.
datadefault=new Object[baris][kolom];
int x=0;
konek.rs.beforeFirst();
while(konek.rs.next()){
datadefault[x][0]=konek.rs.getString("kode_barang");
datadefault[x][1]=konek.rs.getString("nama_barang");
datadefault[x][2]=konek.rs.getString("harga_barang");
datadefault[x][3]=konek.rs.getString("jumlah_beli");
datadefault[x][4]=konek.rs.getString("subtotal");
x++;
}
tabel_barang.setModel(new DefaultTableModel(datadefault, label));
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex);
}
}
Dan method berikutnya adalah untuk melakukan penghapusan isi data pada Tabel Sementara
berdasarkan kode barang:
Dan baris code dalam method berikut berfungsi untuk menyimpan data kedalam tabel
Transaksi yang diambil dari txt_nomortransaksi, txt_tgl dan txt_kodeuser.
Berikutnya, code berikut untuk melakukan penyimpanan data kedalam Tabel detail_transaksi
di database. Data diambil berdasarkan jumlah yang muncul pada Tabel Transaksi.
Penyimpanan data dalam bentuk array menggunakan pengulangan While.
Method terakhir dalam form Transaksi adalah untuk menghapus semua Data dalam Tabel
sementara di database.
Pemberian Event
Setelah code yang disimpan pada beberapa method selesai dibuat, selanjutnya akan diberikan
beberapa Event untuk penanganan Komponen agar aplikasi dapat berjalan sesuai kebutuhan.
Event klik dibawah ini diterapkan pada cmb_caribarang untuk membuka form Data Barang
(jDialog), dan memanggil nilai yg ada pada variable Kode Barang, Nama Barang, Harga
Barang kedalam textfield txt_kodebarang, txt_namabarang, dan txt_hargabarang.
boolean tutup=true;
lihat_barang dt_barang=new lihat_barang(null, tutup);
dt_barang.trans=this;
dt_barang.setVisible(true);
dt_barang.setResizable(true);
txt_kodebarang.setText(kode_barang);
txt_namabarang.setText(nama_barang);
txt_hargabarang.setText(harga_barang);
}
Selanjutnya, event untuk cmd_keluar, klik kanan pilih Event – Action – actionPerformed
private void cmb_keluarActionPerformed(java.awt.event.ActionEvent evt) {
HapusTabelSementara();
dispose();
}
Pada button tambah, diberikan event klik untuk memanggil method aktif dan method nomor
transaksi secara berurutan.
Aktif();
txt_nomortransaksi.setText(nomor_transaksi());
}
Event pada jForm yang akan memanggil method TampilTabelSementara() dan memberikan
nilai pada txt_kodeuser yang diambil dari variable Kode user sesuai dengan data login user.
Klik kanan jForm, pilih Event – Window – windowActivated:
txt_kodeuser.setText(kode_user);
TampilTabelSementara();
}
Pada button batal, pilih Event – Action – actionPerformed, ketikkan script berikut, Saat diklik
batal, maka isi tabel sementara akan dihapus melalui method HapusTabelSementara, dan
nomor transaksi menjadi kosong Kembali.
awal();
HapusTabelSementara();
txt_nomortransaksi.setText("");
}
Dan berikut merupakan script code untuk menghitung sub total dari setiap penjualan, untuk
kemudian datanya disimpan dalam tabel sementara dan memberikan total keseluruhan dari
semua sub total jika transaksi lebih dari satu. Muncul informasi untuk menambahkan jumlah
transaksi lebih dari satu, fungsi yang digunakan adalah pengulangan FOR. Klik kanan pada
txt_jmlbeli, pilih Event – Action – actionPerformed.
l_total.setText(Integer.toString(ttl));
if(JOptionPane.showConfirmDialog(this, "Mau Tambah Barang Lagi?",
"Konfirmasi", JOptionPane.YES_NO_OPTION)== JOptionPane.YES_OPTION){
Aktif();
txt_kodebarang.requestFocus();
txt_kodebarang.setText("");
txt_namabarang.setText("");
txt_hargabarang.setText("");
txt_jmlbeli.setText("");
txt_subtotal.setText("");
}else{
txt_jmlbayar.requestFocus();
}
}
Klik kanan pada Tabel transaksi, pilih Event – Key – KeyPressed untuk memanggil method
HapusIsiSementara() dengan menekan tombol BackSpace di keyboard.
if(evt.getKeyCode()== KeyEvent.VK_BACK_SPACE){
HapusIsiSementara();
}
}
Pada button Simpan, pilih Event – Action – actioPerformed, ketik script berikut untuk
memanggil beberapa method:
SimpanTransaksi();
simpanDetailTransaksi();
JOptionPane.showMessageDialog(this, "Berhasil Simpan Data",
"Informasi", JOptionPane.INFORMATION_MESSAGE);
TampilTabelSementara();
HapusTabelSementara();
awal();
bersih();
txt_nomortransaksi.setText("");
TampilTabelSementara();
}
Dan event terakhir pada form transaksi diterapkan pada txt_jmlbayar untuk menghitung uang
Kembali setelah penginputan uang bayar, klik kanan, pilih Event – Action – actioPerformed,
ketikkan script berikut:
Form Ganti Password digunakan untuk merubah password user yang sedang login. Langkah-
langkah dalam membuat form aplikasi Ganti Password adalah sebagai berikut:
1. Masih dalam package aplikasi_toko, buat form baru dengan jDialog Form. Beri nama form
dengan nama : Ganti_Password
2. Desain tampilan form seperti dibawah ini:
Script Code
public Ganti_password() {
initComponents();
konek.setKoneksi();
}
Membuat variable untuk menyimpan data kode user sesuai user login :
void NonAktif(){
txt_kodeuser.setEnabled(false);
txt_passlama.setEnabled(false);
txt_passbaru.setEnabled(false);
txt_konfirmasi.setEnabled(false);
}
void bersih(){
txt_passlama.setText("");
txt_passbaru.setText("");
txt_konfirmasi.setText("");
}
Method untuk pengecekan kesesuaian inputan password baru dengan inputan konfirmasi
password, apabila cocok, data akan disimpan kedalam tabel di database:
dispose();
}
txt_konfirmasi.setEnabled(true);
txt_konfirmasi.requestFocus();
}
if(evt.getKeyCode()==KeyEvent.VK_ENTER){
konfirmasi_password();
}
}
Dalam bahasa pemrograman Java kita dapat membuat laporan dengan menggunakan Plugin
tambahan, yaitu iReport. Ireport atau yang juga dikenal dengan nama Jasper Report adalah
plugin milik IDE Netbeans, yang dapat digunakan secara bebas karena bersifat Open Source.
Sebelum kita mulai pembuatan laporan, silakan download plugin iReport melaui link berikut
dan yang telah diberikan. Selain plugin iReport, kita juga membutuhkan Library Jar untuk
memanggil dan menampilkan iReport.
https://drive.google.com/file/d/1hZJaFZ8yePgv_96YfpO0rBIY75yg6FCW/view?usp=sharin
g
Sampai tahap ini proses instalasi Plugin iReport telah selesai dilakukan.
1. Pada package Laporan, klik kanan kemudian pilih : Report Wizard. Apabila tidak ada
pilihan report wizard, klik Others.
4. Pada pilihan berikutnya, kita akan menentukan pilihan koneksi ke Database. Kita pilih
database yang sesuai dengan project yang telah dibuat.
5. Klik NEW, kemudian kita akan memilih pilihan Datasource “Database JDBC
connection”, kemudian klik Next Kembali:
6. Pada pilihan berikut, kita akan membuat konfigurasi koneksi ke database, atur sesuai
dengan gambar berikut:
7. Jika sudah selesai konfigurasi koneksi, kita lakukan ujicoba koneksi untuk melihat apakah
sudah terkoneksi atau belum, dengan cara klik “TEST”, apabila berhasil akan muncul
pesan berikut:
8. Jika sudah sukses koneksi, lalu “SAVE” dan kita Kembali pada tampilan sebelumnya
untuk merancangan Query. Pada bagian Query (SQL) ketikkan sintax sql berikut dan
kemudian klik next.
9. Pilih field yang akan ditampilkan pada laporan, dengan cara menekan tanda panah ke
kolom sebelahnya:
10. Pada jendela “Group By” abaikan saja dan langsung klik Next, terakhir klik finish.
11. Akan muncul tampilan berikut, yang berfungsi untuk mendesain report dengan cara drag
and drop.
12. Sekarang, kita akan masukkan field kedalam designer dengan cara drag pada “Report
Inspector” kedalam report desaigner.
13. Kita akan desain report sederhana dengan tampilan sebagai berikut:
14. Untuk melihat hasil laporan, klik Preview dan akan menghasilkan tampilan berikut:
Tampilan data tersebut sesuai dengan yang tersimpan dalam tabel barang di Database.
Menampilkan Data Report
Untuk bisa menampilkan laporan Barang, diperlukan Library Tambahan iReport file jar.
Berikut langkahnya:
1. File .jar yang telah di downloads (folder library) kemudian ditambahkan kedalam project,
dengan cara Klik kanan LIBRARIES, kemudian pilih “Add JAR/Folder”.
2. Pilih library berikut kemudian Open:
3. Jika telah selesai, kini kita akan lakukan pemanggilan laporan pada Form Menu yang
sebelumnya telah kita buatkan. Buka Kembali Script Form Menu, kemudian berikan
Event Click pada pemanggilan menu “Data Barang”, ketikkan code berikut (kolom
merah):
4. Sekarang, coba panggil File Laporan melalui Menu Utama aplikasi dan akan langsung
memunculkan tampilan berikut:
TUGAS 3
Untuk membuat laporan data User, langkah-langkahnya sama seperti pembuatan laporan
Data Barang. Hasil Laporan nya berupa daftar nama User yang diambil dari Tabel User.
SELECT
detail_transaksi.no_transaksi,
transaksi.tgl,
transaksi.kode_user,
detail_transaksi.kode_barang,
barang.nama_barang,
barang.harga_barang,
detail_transaksi.jumlah_beli,
detail_transaksi.subtotal,
transaksi.total
FROM
(user INNER JOIN transaksi ON user.kode_user=transaksi.kode_user)
INNER JOIN (barang INNER JOIN detail_transaksi ON
barang.kode_barang=detail_transaksi.kode_barang) ON
transaksi.no_transaksi=detail_transaksi.no_transaksi
4. Pilih field yang akan ditampilkan pada Struk penjualan:
8. Pada bagian Details, hilangkan ceklist Add The group header, kemudian finish:
9. Desain tampilan struk, masukkan field yang akan ditampilkan:
13. Edit Query yang ada pada report query seperti gambar dibawah ini, tambahkan baris code
sintax sql berikut, kemudian klik OK:
WHERE detail_transaksi.no_transaksi=$P{notrans}
14. Klik Preview pada tampilan report, maka akan muncul jendela Parameter Prompt,
masukkan salah satu nomor transaksi yang ada pada Tabel Database, kemudian tekan
OK
Method cetak_struk():
void cetak_struk(){
try {
// panggil file report
File f=new File("src/laporan/cetak_struk.jrxml");
jasperDesign=JRXmlLoader.load(f);
// Kode Untuk Cetak Berdasarkan Paramater
par.put("notrans", txt_nomortransaksi.getText());
jasperReport=JasperCompileManager.compileReport(jasperDesign);
jasperPrint=JasperFillManager.fillReport(jasperReport, par, konek.
setKoneksi());
JasperViewer.viewReport(jasperPrint, false);
} catch (JRException ex) {
Logger.getLogger(transaksi.class.getName()).log(Level.SEVERE, null
, ex);
}
}
17. Kemudian, pada Button Simpan, tambahkan Script berikut untuk memanggil method
Cetak Struk yang telah dibuat:
Sehingga dalam method Event klik Button simpan, code jadi sebagai berikut setelah
penambahan pemanggilan laporan cetak struk:
SimpanTransaksi();
simpanDetailTransaksi();
JOptionPane.showMessageDialog(this, "Berhasil Simpan Data",
"Informasi", JOptionPane.INFORMATION_MESSAGE);
TampilTabelSementara();
// pilihan cetak struk
if(JOptionPane.showConfirmDialog(this, "Mau Cetak Struk?",
"Konfirmasi", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION
){
cetak_struk();
HapusTabelSementara();
awal();
bersih();
txt_nomortransaksi.setText("");
TampilTabelSementara();
}else{
HapusTabelSementara();
awal();
bersih();
txt_nomortransaksi.setText("");
}
}
Langkah-langkah untuk membuat laporan penjualan per priode adalah sebagai berikut:
3. Pilih semua field yang akan ditampilkan pada desain laporan, kemudian klik Next Kembali
4. Pada jendela Group By klik next saja, terakhir klik Finish
5. Masukkan field-fied kedalam design report, dan desain nya menjadi sbb:
6. Langkah berikutnya adalah kita membuat parameter. Berbeda dengan sebelumnya pada
pembuatan Struk, kita hanya menggunakan 1 parameter yaitu notrans. Kali ini kita
membutuhkan 2 buah parameter, karena ada 2 buah tanggal. Yaitu tanggal awal dan
tanggal akhir. Untuk tanggal awal beri nama parameter dengan tgl1, dan untuk tanggal
akhir beri nama parameter dengan tgl2. Untuk Value Expression beri nilai kedua
parameter dengan Text. Cara membuat parameter sudah dibahas saat pembuatan Struk.
7. Ubah sintax query nya dengan menambahkan sintax BETWEEN, sehingga jadinya
sebagai berikut, kemudian klik OK.
select*from transaksi
where tgl between $P{tgl1} and $P{tgl2}
8. Masukkan parameter yang telah dibuat yaitu tgl1 dan tgl2 kedalam design laporan:
9. Jika sudah, sekarang kita testing dengan klik Preview, kemudian masukkan tanggal
awal (parameter 1) dan tanggal akhir (parameter 2).
Pada dasarnya membuat laporan penjualan perbulan dan laporan penjualan per priode adalah
sama. Langkah-langkah pembuatan laporan penjualan perbulan adalah sebagai berikut:
Template : Blank A4
Untuk membuat form laporan transaksi, pada program ini menggunakan komponen
jDateChooser dan jYearChooser. Untuk menambahkan komponen-komponen tersebut pada
Palette, kita membutuhkan library JCalendar. Silakan anda cari library JCalendar pada file
yang telah di downloads sebelumnya (folder jCalender).
Jika sudah selesai didownload library JCalendar nya, berikutnya kita akan menambahkan
library tersebut agar bisa masuk kedalam Palette. Berikut langkah langkahnya
1. Extract file JCalendar yang sudah didownload. Copy file yang ada di dalamnya ke
dalam folder jar, pada project.
2. Pada Netbeans, pilih Menu Tool – Libraries, sehingga tampil sebagai berikut, kemudian
klik NEW LIBRARY
3. Beri nama jCalendar
4. Arahkan pada library JCalendar. Klik Add Jar/Folder. Cari file library JCalendar
yang sudah diextract sebelumnya dan masukkan ketiga file .jar tersebut kemudian OK
5. Klik menu Tools – Palette – Swing/AWTComponents
6. Klik New Category untuk membuat kategori baru untuk JCalendar, beri nama ketegori
dengan JCalendar
7. Klik Add from Library
8. Pilih Library JCalendar yang sudah kita buat || Next
9. Pilih semua komponen || Next
10. Pilih JCalendar pada Palette Category || Finish
11. Periksa palette, jika berhasil akan muncul komponen JCalendar
Setelah kita berhasil menambahkan komponen JCalendar, langkah berikutnya adalah kita
desain form laporan penjualan. Silakan anda desain form menggunakan JFrame Form di dalam
project Aplikasi_Toko. Beri nama form tersebut dengan laporan_penjualan.
No Komponen Properties
1 jDateChooser1 Nama Variabel : tgl_awal
2 jDateChooser2 Nama Variabel : tgl_akhir
3 jMonthChooser Nama Variabel : p_bulan
4 jYearChooser Nama Variabel : p_tahun
5 jButton1 Nama Variabel : cetak_periode
Text : CETAK
6 jButton2 Nama Variabel : cetak_bulan
Text : CETAK
7 jButton3 Nama Variabel : cmd_keluar
Text : KELUAR
Script Code
Berikut baris code untuk handle form laporan penjualan sehingga bisa memanggil report yang
telah didesain sebelumnya.
Baris code yang diberikan pada Event Klik Button Cetak per periode dan per bulan
private void cetak_periodeActionPerformed(java.awt.event.ActionEvent evt) {
Untuk dapat melakukan pemakaian database bersama, makakita memerlukan sebuah jaringan
lokal. Bisa menggunakan kabel jaringan, atau bisa juga menggunakan intranet dalam 1
ruangan, bisa juga menggunakan share wifi menggunakan Smartphone. Dalam kasus ini agar
mudah kita gunakan share wifi dengan menggunakan Smartphone. Ada 2 buah
komputer/laptop yang akan kita pakai (sebagai contoh). Satu komputer sebagai server (punya
database dan program aplikasi penjualan), satu komputer sebagai client (cukup memiliki
program aplikasi penjualannya saja). Jadi untuk dapat menggunakan database bersama dalam
jaringan local di java, yang harus dipersiapkan adalah:
• 2 buah komputer/laptop (bisa juga lebih), satu sebagai server, selebihnya sebagai client
• Jaringan local (bisa menggunakan kabel jaringan, intranet, atau share wifi lewat Smartphone
Langkah-langkah setting Jaringan dan IP dalam penggunaan Database Bersama adalah sebagai
berikut:
6. Buka class koneksi, ubah localhost menjadi alamat IP server yaitu 192.168.1.1,
passwordnya : admin
7. Silakan coba jalankan program melalui komputer client. Jika berhasil maka database
pada komputer server akan dapat kita akses.
PRESENTASI FINAL PROJECT
Pada pertemuan ini dilakukan presentasi PROJECT yang dilakukan secara kelompok minimal
2 orang untuk mengerjakan aplikasi sampai bisa berjalan tanpa error.
Penilaian :