Anda di halaman 1dari 84

FINAL PROJECT

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

Berikut Tahapan dalam merancang dan membuat aplikasi


PRAKTEK 1 : MERANCANG DATABASE
Tahap awal dalam pembuatan project penjualan, terlebih dahulu kita melakukan pembuatan
Database menggunakan Mysql dengan bantuan Tools PhpMyAdmin. Struktur Database dan
Tabel adalah sebagai berikut:

Nama Database : toko_db

List Tabel:

Tabel Nama Field Tipe Size Keterangan


barang kode_barang varchar 15 Primary Key
nama_barang varchar 75
harga_barang varchar 15
stok_barang varchar 7
user kode_user varchar 5 Primary Key
nama_user varchar 100
password_user varchar 100
level_user varchar 10
sementara kode_barang varchar 15
nama_barang varchar 100
harga_barang varchar 15
jumlah_beli varchar 5
subtotal varchar 35
Transaksi no_transaksi varchar 15 Primary Key
tgl varchar 35
total varchar 15
kode_user varchar 5
Detail_transaksi no_transaksi varchar 15
kode_barang varchar 15
jumlah_beli varchar 5
subtotal varchar 35

Gunakan Tool PhpMyAdmin dengan mengaktifkan pilihan mysql pada Xampp. Kemudian
akses melalui browser dengan link: http://localhost/phpmyadmin

PRAKTEK 2 : MEMBUAT FORM DATA BARANG


A. Membuat Project Aplikasi
Buatkan sebuah Project baru menggunakan Netbeans, kemudian beri nama project:
App_toko. Jangan dicentang pada pilihan “Create Main Class”.
Dalam project buatkan 2 buah Package yaitu : Form dan laporan, lihat gambar:

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

Berikut properties untuk semua komponennya:

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 -

Sehingga tampilan form jadinya sebagai berikut:

C. Form Data Barang


Logika Jalannya Program Data Barang:
1. Pertama aplikasi di run semua Textfield Nonaktif, data barang tampil di dalam tabel.
Buttoon INPUT dan KELUAR aktif
2. User menekan Button INPUT semua Inputan di textfield akan Aktif. Tombol INPUT
berubah menjadi SIMPAN, tombol KELUAR menjadi BATAL
3. User mengetikkan kode barang. Aplikasi melakukan pengecekan ke tabel barang yang
ada di database, apabila kode barang yang diinput telah ada, dan ditekan ENTER maka
program akan menampilkan nama barang, stok , dan harga, inputan Kode barang akan
nonaktif,
4. Apabila kode barang sudah ada, button SIMPAN berubah jadi UPDATE. Dan user
bisa melakukan perubahan data barang dan untuk menyimpan Kembali tekan
UPDATE, tekan BATAL untuk membatalkan perubahan data
5. Apabila kode barang belum ada, Kursor mouse akan berpindah ke inputan nama barang.
User bisa isikan data barang baru, tekan SIMPAN untuk menyimpan
6. Untuk menghapus data barang, user bisa memilih pada Tabel Data (klik tabel) dan
menetukan data mana yang akan dihapus, setelah itu tekan tombol Backspace pada
Keyboards untuk menghapusnya
7. Tekan KELUAR untuk keluar dari program

D. Membuat koneksi Database


Class koneksi digunakan sebagai penghubung antara database mysql dengan form aplikasi
yang kita buat pada netbeans. Langkah-langkahnya adalah sebagai berikut:
1. Klik kanan pada package aplikasi_toko – New – Java Class
2. Beri nama class dengan nama : koneksi

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;

public Connection setKoneksi(){


try {
Class.forName("com.mysql.jdbc.Driver");
try {
conn=DriverManager.getConnection("jdbc:mysql://localhost
/toko_db", "root", "");
st=conn.createStatement();
} catch (SQLException ex) {
Logger.getLogger(koneksi.class.getName()).log(Level.SEVE
RE, null, ex);
}

} catch (ClassNotFoundException ex) {


JOptionPane.showMessageDialog(null, "Koneksi Gagal" +ex);
}
return conn;
}
}

Setelah script koneksi selesai, berikutnya tambahkan baris-baris code berikut.

E. Set Variabel Global dan Construktor


Ketikkan code berikut :

koneksi konek=new koneksi();


private Object[][] databarang=null;
private String[] label={"Kode Barang", "Nama Barang","Harga Barang","
Stok Barang"};

/**
* Creates new form
*/
public Masterbarang() {
initComponents();
konek.setKoneksi();
TampilDataBarang();
}

F. Method Tampil Data di Tabel


Code berikut adalah Method Prosedur untuk menampilkan data pada Tabel Barang ketika
Aplikasi dijalankan:

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);
}
}

G. Method untuk pengaturan aplikasi


Beberapa method prosedur berikut digunakan agar jalan nya aplikasi sesuai dengan
keinginan User. Method SetTabel() untuk menampilkan data barang pada tabel, Bersih()
untuk menghilangkan semua inputan, aktif() untuk mengaktifkan inputan, dan NonAktif()
untuk mematikan inputan.

private void SetTabel(){


int row=tabel_barang.getSelectedRow();
txt_kodebarang.setText((String) tabel_barang.getValueAt(row, 0));
txt_namabarang.setText((String) tabel_barang.getValueAt(row, 1));
txt_hargabarang.setText((String) tabel_barang.getValueAt(row, 2));
txt_stokbarang.setText((String) tabel_barang.getValueAt(row, 3));
}
private void Bersih(){
txt_kodebarang.setText("");
txt_namabarang.setText("");
txt_hargabarang.setText("");
txt_stokbarang.setText("");
}
private void aktif(){
txt_kodebarang.setEnabled(true);
txt_namabarang.setEnabled(true);
txt_hargabarang.setEnabled(true);
txt_stokbarang.setEnabled(true);
}
private void NonAktif(){
txt_kodebarang.setEnabled(false);
txt_namabarang.setEnabled(false);
txt_hargabarang.setEnabled(false);
txt_stokbarang.setEnabled(false);
}

Note: Pastikan Method ditulis didalam Class dan diluar Contruktor.


H. Method Simpan Data
Baris code berikut merupakan Method untuk menyimpan data dari inputan form kedalam
tabel barang:

private void SimpanData(){

String sintax_simpan="INSERT INTO barang VALUES('"+txt_kodebarang.


getText()+"',"
+ "'"+txt_namabarang.getText()+"',"
+ "'"+txt_hargabarang.getText()+"',"
+ "'"+txt_stokbarang.getText()+"')";
try {
konek.st.executeUpdate(sintax_simpan);
JOptionPane.showMessageDialog(null, "Data Berhasil Disimpan");
Bersih();
TampilDataBarang();
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex);
}
}

I. Method Cari Data


Code Berikut berfungsi untuk melakukan pencarian data pada Tabel Barang sesuai
dengan kata kunci yang diinginkan.

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);
}
}

J. Method Ubah Data


Code berikut merupakan Method untuk melakukan perubahan data :

private void UbahData(){


String sintax_ubah="UPDATE barang SET kode_barang='"+txt_kodebar
ang.getText()+"',"
+ "nama_barang='"+txt_namabarang.getText()+"',"
+ "harga_barang='"+txt_hargabarang.getText()+"',"
+ "stok_barang='"+txt_stokbarang.getText()+"' "
+ "WHERE kode_barang='"+txt_kodebarang.getText()+"'";
try {
konek.st.executeUpdate(sintax_ubah);
JOptionPane.showMessageDialog(null, "Berhasil Ubah Data");
Bersih();
TampilDataBarang();
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex);
}
}

K. Method Hapus Data


Dan Method terakhir merupakan code untuk menghapus data:

private void HapusData(){


String sintaq_hapus="DELETE FROM barang WHERE kode_barang='"+txt
_kodebarang.getText()+"'";
try {
konek.st.executeUpdate(sintaq_hapus);
JOptionPane.showMessageDialog(null, "Berhasil Hapus Data");
Bersih();
TampilDataBarang();
} catch (SQLException ex) {
JOptionPane.showMessageDialog(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):

Kemudian panggil Method berikut:


Klik kanan pada Button cmd_keluar, pilih Event – Action – Action Performed, ketikan
Script Berikut yang berfungsi untuk keluar dari aplikasi apabila Button bernilai “KELUAR”
dan apabila bernilai “BATAL” maka panggil method bersih() dan NonAktif().

Event berikut untuk Button cmd_simpan. Klik kanan pada cmd_simpan, pilih Event – Action
– Action Performed, ketikan Script Berikut:

Code requestFocus() merupakan fungsi untuk focus kursor pada inputan.

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:

private void txt_kodebarangKeyPressed(java.awt.event.KeyEvent evt)

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.

private void txt_namabarangKeyPressed(java.awt.event.KeyEvent evt) {

if(evt.getKeyCode()==KeyEvent.VK_ENTER){
txt_hargabarang.requestFocus();
}
}

private void txt_hargabarangKeyPressed(java.awt.event.KeyEvent evt) {

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.

private void tabel_barangKeyPressed(java.awt.event.KeyEvent evt) {

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:

Akses Level Kasir


Admin Master (Barang dan User)
Transaksi
Laporan
Utility (Ganti Password)

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.

Form Menu Level Admin

Berikut langkah nya untuk membuat Form Menu Level Admin:

- 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.

- Klik Kanan pada jMenuitem1 – Edit Text – berikan teks LogOut


- Klik Kanan pada jMenuitem1 – Change Variabel Name – berikan Namanya
menu_logout

- 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.

Penulisan Script Code Menu

Ketikkan beberapa baris script code berikut untuk mengatur tampilan Menu dan Event nya.
Memanggil Class Koneksi

Deklarasi di Contstruktor

Set Tampilan jadi


Fullscreen

Script code untuk


memanggil Nilai
yang diinput pada
form login.

- 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:

File Transaksi Laporan Utility


Logout Data Barang Ganti Password
Data Transaksi

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

- jTextfield1 : Change Variabel Name beri nama : txt_kode


- jtextfield2 : Change Variabel Name beri nama : txt_pass
- jtextfield3 : Change Variabel Name beri nama : txt_level
- jButton1 : Change Variabel Name beri nama : cmd_masuk, Edit Text : MASUK
- jButton2 : Change Variabel Name beri nama : cmd_keluar, Edit Text : KELUAR

Logika jalannya Program:

1. Saat form dijalankan textField yang aktif hanya kode user.


2. Kode user diinput, kemudian ditekan ENTER, jika kode user ditemukan, maka txt_pass
akan aktif dan password diisi sedangkan txt_level akan terisi jenis level user. Jika kode
user salah, maka akan muncul pesan bahwa kode user salah
3. Tombol login untuk memeriksa username dan password, jika benar maka akan masuk
ke form menu utama. Ada 2 kondisi saat masuk ke form menu utama. Jika level Admin,
maka akan masuk ke menu utama admin, jika level Kasir maka akan masuk ke menu
utama kasir. jika Username atau password salah akan muncul pesan bahwa kode user
atau password salah.
Script Code

Tambahkan script code berikut

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.

private void formWindowActivated(java.awt.event.WindowEvent evt) {

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.

private void txt_kodeActionPerformed(java.awt.event.ActionEvent evt) {

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.

private void cmd_keluarActionPerformed(java.awt.event.ActionEvent evt) {

dispose();
}

private void cmd_masukActionPerformed(java.awt.event.ActionEvent evt) {

proses_masuk();
}

Tampilan Form Login ketika dijalankan


PRAKTEK 5 : FORM APLIKASI DATA BARANG DAN TRANSAKSI
Ada 2 buah Class yang akan dirancang, pertama Form untuk data barang yang digunakan
untuk menampilkan data barang yang ada pada tabel barang dan digunakan untuk proses
transaksi, kedua form Transaksi yang melakukan pencatatan dan perekaman data penjualan.
Berikut langkah untuk pembuatan kedua form tersebut.
Form Aplikasi Data Barang
Pembuatan form data barang digunakan jDialog Form (bukan jFrame Form). Caranya, klik
kanan pada Package Form – New – jDialog Form.

Beri nama Class : lihat_barang kemudian klik finish.


Buat tampilan form menjadi berikut:
Properties komponen adalah sebagai berikut:
No Komponen Properties
1 jTextfield1 Variabel name : txt_cari
Text : (kosongkan)
2 jTable Variabel name : tabel_barang

Dan berikut script code yang disimpan dalam method:

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:

private void tabel_barangMouseClicked(java.awt.event.MouseEvent evt) {

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().

private void txt_cariKeyTyped(java.awt.event.KeyEvent evt) {

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.

Form Transaksi Penjualan

Desain form untuk transaksi penjualan adalah sebagai berikut:


Pembuatannya masih sama dengan langkah sebelumnya, yaitu Klik kanan pada Package form
pilih New – jFrame Form.

Dan berikut set properties untuk semua komponen nya:

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:

1. Saat form dijalankan, tanggal dan kode user muncul otomatis


2. Tekan tombol TAMBAH, no.transaksi muncul otomatis secara berurut sesuai dengan
data di database tabel barang
3. Kode barang bisa langsung diinput, lalu tekan enter. Jika ditemukan maka nama barang,
dan harga tampil.
4. Atau bisa dengan klik tombol browse (…), pilih kode barang yang akan dibeli, maka
nama barang dan harga tampil
5. Jumlah beli diinput, lalu tekan enter, maka akan muncul pesan:”Mau Tambah Barang?”.
Jika pilih Yes, ulangi peerintah no.3 atau 4. Jika pilih No, total bayar akan muncul.
6. Input uang bayar, untuk melakukan pembayaran. Uang kembali akan muncul setelah
dienter.
7. Tombol simpan untuk melakukan penyimpanan transaksi, dan struk akan muncul
(pembuatan struk akan dibahas dipertemuan berikutnya saat pembuatan laporan).

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.

Source code untuk deklarasi variable secara Global:

koneksi konek=new koneksi();


private Object[][] datadefault=null;
private String[] label={"Kode Barang","Nama Barang","Harga","Jumlah Beli",
"Sub Total"};

Source code untuk pemanggilan Method di dalam Contruktor:

public transaksi() {
initComponents();
konek.setKoneksi();
SetTanggal();
awal();
}

Baris code untuk men-set Tanggal berdasarkan data di Komputer:

// 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.

public String kode_barang, nama_barang, harga_barang, kode_user;


public String getKodeBarang(){
return kode_barang;
}
public String getNamaBarang(){
return nama_barang;
}
public String getKodeUser(){
return kode_user;
}

Untuk menampilkan data Barang sesuai Kode Barang yang di input pada txt_kodebarang
ataupun yang diambil pada jDialog Form barang, digunakan method berikut.

private void tampil_databarang(){


String sql="SELECT*FROM barang WHERE kode_barang='"+txt_kodebarang.get
Text()+"'";
try {
konek.rs=konek.st.executeQuery(sql);
if(konek.rs.next()){
txt_namabarang.setText(konek.rs.getString("nama_barang"));
txt_hargabarang.setText(konek.rs.getString("harga_barang"));
txt_jmlbeli.requestFocus();
}else{
JOptionPane.showMessageDialog(null, "Kode Barang "+txt_kodebar
ang.getText()+"Tidak Ditemukan");
}
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex);
}
}

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 untuk buat nomor transaksi


public String nomor_transaksi(){
String urut=null;
try {
konek.rs=konek.st.executeQuery("SELECT right(no_transaksi,3)"
+ "as nomor FROM transaksi ORDER BY no_transaksi desc");
if(konek.rs.next()){
int auto=konek.rs.getInt(1)+1;
urut=String.valueOf(auto);
//urut=konek.rs.getInt(1)+1;
while(urut.length() <3)
urut="0"+urut;
urut="BR-"+format.format(tgl)+urut;
}else{
urut="BR-"+format.format(tgl)+"001";
}
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, "Error di"+ ex.toString());
}
return urut;
}

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”.

private void Simpan_sementara(){


String sql="INSERT INTO sementara VALUES('"+txt_kodebarang.getText()+"',"
+ "'"+txt_namabarang.getText()+"','"+txt_hargabarang.getText()+"',"
+ "'"+txt_jmlbeli.getText()+"','"+txt_subtotal.getText()+"')";
try {
konek.st.executeUpdate(sql);
TampilTabelSementara();
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex);
}
}
Data yang sudah disimpan kedalam Tabel “sementara” akan ditampilkan pada Tabel Transaksi.
Digunakan method berikut untuk menampilkan datanya:

private void TampilTabelSementara(){


String sql="SELECT*FROM sementara ORDER by kode_barang";
try {
konek.rs=konek.st.executeQuery(sql);
ResultSetMetaData m=konek.rs.getMetaData();
int kolom=m.getColumnCount();
int baris=0;
while(konek.rs.next()){
baris=konek.rs.getRow();
}

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:

private void HapusIsiSementara(){


int row=tabel_barang.getSelectedRow();
int x;
int total=Integer.parseInt(l_total.getText());
x=Integer.parseInt((String) tabel_barang.getValueAt(row, 4));
total=total-x;
l_total.setText(Integer.toString(total));

String sql="DELETE FROM sementara WHERE kode_barang='"+(String)tabel_barang.ge


tValueAt(row, 0)+"'";
try {
konek.st.executeUpdate(sql);
TampilTabelSementara();
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex);
}
}

Dan baris code dalam method berikut berfungsi untuk menyimpan data kedalam tabel
Transaksi yang diambil dari txt_nomortransaksi, txt_tgl dan txt_kodeuser.

private void SimpanTransaksi(){


String sql="INSERT INTO transaksi VALUES('"+txt_nomortransaksi.getText()+"',"
+ "'"+txt_tgl.getText()+"','"+l_total.getText()+"',"
+ "'"+txt_kodeuser.getText()+"')";
try {
konek.st.executeUpdate(sql);
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, "Koneksi Gagal" +ex.toString()
);
}
}

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.

private void simpanDetailTransaksi(){


int jumlah_baris = tabel_barang.getRowCount();
if(jumlah_baris == 0){
JOptionPane.showMessageDialog(rootPane, "Data di Tabel Masih Kosong!");
}else{
try{
int i=0;
while(i < jumlah_baris){
String detail="INSERT INTO detail_transaksi VALUES ('"+txt_nomortransaksi.getT
ext()+"',"
+ "'"+tabel_barang.getValueAt(i, 0).toString()+"',"
+ "'"+tabel_barang.getValueAt(i, 3).toString()+"',"
+ "'"+tabel_barang.getValueAt(i, 4).toString()+"')";
i++;
konek.st.executeUpdate(detail);
}
}catch(Exception e){
JOptionPane.showMessageDialog(rootPane, "Gagal Menyimpan! Error :
"+e);
}
}
}

Method terakhir dalam form Transaksi adalah untuk menghapus semua Data dalam Tabel
sementara di database.

private void HapusTabelSementara(){


String sql="DELETE FROM sementara";
try {
konek.st.executeUpdate(sql);
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex);
}
}

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 pertama diberikan kepada txt_kodebarang. Event akan memanggil method


tampil_databarang() dengan melakukan pencarian terhadap kode barang yang diinput pada
txt_kodebarang. Klik kanan txt_kodebarang – Event – Action – actionPerformed.

private void txt_kodebarangActionPerformed(java.awt.event.ActionEvent evt)


{
tampil_databarang();
}

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.

private void cmb_caribarangActionPerformed(java.awt.event.ActionEvent evt) {

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.

private void cmb_tambahActionPerformed(java.awt.event.ActionEvent evt) {

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:

private void formWindowActivated(java.awt.event.WindowEvent evt) {

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.

private void cmb_batalActionPerformed(java.awt.event.ActionEvent evt) {

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.

private void txt_jmlbeliActionPerformed(java.awt.event.ActionEvent evt) {

int harga, jumbel, total;


harga=Integer.parseInt(txt_hargabarang.getText());
jumbel=Integer.parseInt(txt_jmlbeli.getText());
total=harga*jumbel;
txt_subtotal.setText(Integer.toString(total));
Simpan_sementara();
TampilTabelSementara();
int ttl=0;

for(int a=0; a<tabel_barang.getRowCount();a++){


int sub=Integer.parseInt((String) tabel_barang.getValueAt(a, 4));
ttl +=sub;
}

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.

private void tabel_barangKeyPressed(java.awt.event.KeyEvent evt) {

if(evt.getKeyCode()== KeyEvent.VK_BACK_SPACE){
HapusIsiSementara();
}
}
Pada button Simpan, pilih Event – Action – actioPerformed, ketik script berikut untuk
memanggil beberapa method:

private void cmb_simpanActionPerformed(java.awt.event.ActionEvent evt) {

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:

private void txt_jmlbayarActionPerformed(java.awt.event.ActionEvent evt) {

int kembali, total, bayar;


total=Integer.parseInt(l_total.getText());
bayar=Integer.parseInt(txt_jmlbayar.getText());
kembali=bayar-total;
txt_jmlkembalian.setText(Integer.toString(kembali));

Hasil run form transaksi:


PRAKTEK 6 : FORM GANTI PASSWORD USER

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:

Keterangan untuk setiap komponen nya:


No Komponen Properties
1 jTextfield1 Variable name : txt_kodeuser
Text : (kosongkan)
2 jPassword1 Variable name : txt_passlama
Text : (kosongkan)
3 jPassword2 Variable name : txt_passbaru
Text : (kosongkan)
4 jPassword3 Variable name : txt_konfirmasi
Text : (kosongkan)
5 jButton1 Variabel name : cmd_keluar

Logika jalannya program:


1. Pertama run yang aktif hanya password lama. Kode user akan otomatis terisi sesuai
dengan login.
2. Kursor muncul di password lama. Ketikan password lama lalu enter jika tidak ada,
muncul pesan (password ..... tidak ada). Jika ada, kursor pindah ke password baru.
3. Ketikan password baru, enter. Ketikan konfirmasi password baru lalu enter. Jika isi
password baru dan konfirmasi password tidak sama, muncul pesan: (konfirmasi dan
password baru berbeda). Jika sama, muncul pesan:(password telah diupdate).
4. Tekan TUTUP untuk keluar kembali ke menu utama. Untuk membatalkan tekan
TUTUP.

Script Code

Memanggil class Koneksi:

koneksi konek=new koneksi();

inisialisasi class koneksi didalam contruktor:

public Ganti_password() {
initComponents();
konek.setKoneksi();
}

Membuat variable untuk menyimpan data kode user sesuai user login :

public String kode_user;


public String getKodeUser(){
return kode_user;
}

Method NonAktif() dan bersih():

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 mengecek inputan password lama:

private void passlama(){


String sql="SELECT* FROM user where password_user='"+txt_passlama.getText()+"'
";
try {
konek.rs=konek.st.executeQuery(sql);
if(konek.rs.next()){
txt_passbaru.setEnabled(true);
txt_passbaru.requestFocus();
}else{
JOptionPane.showMessageDialog(null, "Kode Tidak Ditemukan");
txt_passlama.requestFocus();
}
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, "Error : "+ex);
}
}

Method untuk pengecekan kesesuaian inputan password baru dengan inputan konfirmasi
password, apabila cocok, data akan disimpan kedalam tabel di database:

private void konfirmasi_password(){


try {
if(txt_konfirmasi.getText().equals(txt_passbaru.getText())){
String sql="UPDATE user SET password_user='"+txt_konfirmasi.getText()
+"' WHERE kode_user='"+txt_kodeuser.getText()+"'";
konek.st.executeUpdate(sql);
JOptionPane.showMessageDialog(null, "Password telh terubah");
NonAktif();
bersih();
}else{
JOptionPane.showMessageDialog(null, "Password baru dan konfirmasi
password harus sama");
NonAktif();
bersih();
}
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex);
}

Dan berikut beberapa Event untuk komponen.

private void cmb_keluarActionPerformed(java.awt.event.ActionEvent evt) {

dispose();
}

private void formWindowActivated(java.awt.event.WindowEvent evt) {


txt_kodeuser.setText(kode_user);
NonAktif();
txt_passlama.setEnabled(true);
}

private void txt_passlamaActionPerformed(java.awt.event.ActionEvent evt) {


passlama();
}

private void txt_passbaruActionPerformed(java.awt.event.ActionEvent evt) {

txt_konfirmasi.setEnabled(true);
txt_konfirmasi.requestFocus();
}

private void txt_konfirmasiKeyPressed(java.awt.event.KeyEvent evt) {

if(evt.getKeyCode()==KeyEvent.VK_ENTER){
konfirmasi_password();
}
}

Dan hasil run Form Ganti Password:


PRAKTEK 7 : PEMBUATAN REPORT (LAPORAN)
Ada 3 macam laporan yang akan dibuat yaitu Laporan Data Barang, User dan Struk Penjualan.
Pembahasan dimulai dari tata cara instalasi plugin iReport untuk merancangan laporan pada
Netbeans sampai tahap perancangan laporan.

Persiapan Pembuatan Laporan

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.

Link downloads plugin dan library iReport via google drive:

https://drive.google.com/file/d/1hZJaFZ8yePgv_96YfpO0rBIY75yg6FCW/view?usp=sharin
g

Langkah-langkah dalam Instalasi Plugin iReport di Netbeans adalah sebagai berikut:

1. Jalankan Netbeasn, pilih menu Tools – Plugin


2. Pilih tab Downloadead – Add Plugins
3. Cari hasil download Plugin iReport nya, pastikan sudah mengekstrak Plugin iReport
4. Pilih semua file *.nbm yang ada didalam folder: iReport
5. Ikuti Langkah-langkah seperti menginstall program aplikasi. Jika proses instalasi sudah
selesai, netbeans akan meminta restart.

Sampai tahap ini proses instalasi Plugin iReport telah selesai dilakukan.

Pembuatan Laporan Data Barang

Langkah-langkah untuk membuat Laporan Data barang adalah sebagai berikut:

1. Pada package Laporan, klik kanan kemudian pilih : Report Wizard. Apabila tidak ada
pilihan report wizard, klik Others.

2. Tampilan akan menampilkan pilihan berikut:


3. Pilih template (Blank A4) karena kita akan mendesain sendiri, kemudian klik Next. Pada
tampilan berikut untuk menentukan nama laporan dan lokasi simpan.

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

Membuat Laporan Data User

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.

Untuk desain Tampilan laporan silahkan disesuaikan.


Pembuatan Struk Penjualan
Langkah-langkah dalam membuat Struk Penjualan adalah sebagai berikut:
1. Klik kanan pada Package Laporan, pilih “Report Wizard” kemudian beri nama seperti
tampilan berikut:

2. Lakukan langkah2 seperti penjelasan sebelumnya untuk desian report.


3. Pada tampilan Query, kita berikan sintax query SQL berikut kemudian klik next:
Sintax sql untuk join Tabel:

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:

5. Pada jendela Group By klik next saja. Kemudian Finish


6. Tahap berikutnya, kita akan membuat Total Penjualan pada bagian Footer Laporan.
Caranya dengan klik pada Report Inspector – Add Report Group.
7. Beri Nama grup : gruptotal kemudian klik Nex:

8. Pada bagian Details, hilangkan ceklist Add The group header, kemudian finish:
9. Desain tampilan struk, masukkan field yang akan ditampilkan:

10. Desain laporan Struk jadi sbb:


11. Berikutnya, pembuatan parameter nomor transaksi, karena struk dicetak berdasarkan
nomor transaksi. Pilih report query yang berada di sebelah preview:

Sehingga aan muncul tampilan berikut:


12. Klik “New Parameter”, beri nama notrans, value Expression : Text kemudian OK.

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

15. Dan berikut contoh tampilan report nya:


16. Selanjutnya, pembuatan pemanggilan Struk pada Form Transaksi Penjualan.
Penambahan code diberikan ketika tombol Simpan dilakukan pada Transaksi dan akan
muncul pilihan “Apakah Anda akan cetak Struk?”, jika pilihan YA, maka akan
muncul Laporan dalam struk untuk kemudian di cetak. Pertama buat dulu method untuk
cetak struk (code yang ditambah dilingkar merah):

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:

private void cmb_simpanActionPerformed(java.awt.event.ActionEvent evt) {

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("");
}
}

18. Dan berikut hasilnya:


PRAKTEK 8: LAPORAN PENJUALAN PER PERIODE
Membuat Laporan Penjualan Per Priode

Langkah-langkah untuk membuat laporan penjualan per priode adalah sebagai berikut:

1. Ikuti langkah-langkah sebelumnya dari awal untuk membuat Report,


Template : Blank A4
Nama report : laporan_periode
Tempat penyimpanan disamakan dengan penyimpanan laporan barang
2. Sampai pada langkah Design query, Karena kita akan membuat laporan transaksi, Tuliskan
query berikut, kemudian klik Next untuk melanjutkan:

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).

10. Tampilan laporan akan muncul sebagai berikut:


Membuat Laporan Penjualan Per Bulan

Pada dasarnya membuat laporan penjualan perbulan dan laporan penjualan per priode adalah
sama. Langkah-langkah pembuatan laporan penjualan perbulan adalah sebagai berikut:

1. Ikuti langkah sebelumnya saat pembuatan laporan per priode

Template : Blank A4

Nama report : laporan_perbulan

2. Desain laporan seperti berikut:

3. Buat 2 buah Parameter dengan nama bulan dan tahun :


4. Ubah sintax query sql menjadi sbb:

5. Masukkan parameter 2 buah tadi yang dibuatkan kedalam design report.

6. Klik preview dan akan tampil sbb:


Membuat Form Laporan Penjualan

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.

Dan desain form menjadi sebagai berikut:


Keterangan properties setiap komponen

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.

Atur koneksi database dan pemanggilan plugin iReport


koneksi ko=new koneksi();
JasperReport jasperReport;
JasperDesign jasperDesign;
JasperPrint jasperPrint;
Set dalam Construktor
public laporan_penjualan() {
initComponents();
ko.setKoneksi();
}

Baris code yang diberikan pada Event Klik Button Cetak per periode dan per bulan
private void cetak_periodeActionPerformed(java.awt.event.ActionEvent evt) {

String tgl1=new SimpleDateFormat("yyyy-MM-dd").format(tgl_awal.getDate());


String tgl2=new SimpleDateFormat("yyyy-MM-dd").format(tgl_akhir.getDate());
File file=new File("src/laporan/laporan_periode.jrxml");
try {
jasperDesign=JRXmlLoader.load(file);
HashMap param=new HashMap();
param.put("tgl1", tgl1);
param.put("tgl2", tgl2);
jasperReport=JasperCompileManager.compileReport(jasperDesign);
jasperPrint=JasperFillManager.fillReport(jasperReport, param, ko.setKoneksi())
;
JasperViewer.viewReport(jasperPrint, false);
} catch (JRException ex) {
JOptionPane.showMessageDialog(null, ex);
}
}

private void cetak_bulanActionPerformed(java.awt.event.ActionEvent evt) {

File file=new File("src/laporan/laporan_perbulan.jrxml");


try {
jasperDesign=JRXmlLoader.load(file);
HashMap param=new HashMap();
param.put("bulan", p_bulan.getMonth());
param.put("tahun", p_tahun.getYear());
jasperReport=JasperCompileManager.compileReport(jasperDesign);
jasperPrint=JasperFillManager.fillReport(jasperReport, param, ko.setKo
neksi());
JasperViewer.viewReport(jasperPrint, false);
} catch (JRException ex) {
JOptionPane.showMessageDialog(null, ex);
}
}

Dan berikut hasil run Form Laporan Penjualan:


Untuk menambahkan pemanggilan Form Laporan Penjualan pada Menu, berikan code berikut
pada Event klik Menu Laporan Transaksi

private void menu_lapuserActionPerformed(java.awt.event.ActionEvent evt) {

laporan_penjualan lp=new laporan_penjualan();


lp.setLocationRelativeTo(null);
lp.setVisible(true);
}
PRAKTEK 6 : SETTING IP UNTUK PEMAKAIAN DATABASE BERSAMA

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:

1. Silakan Share wifi melalui Smartphone.


2. Koneksikan 2 komputer ke wifi tersebut, jika sudah terkoneksi maka masing-masing
komputer akan memiliki IP. Sebagai contoh komputer 1 sebagai server memiliki IP
192.168.1.1, sedangkan komputer 2 sebagai client memiliki IP 192.168.1.2
3. Masuk kedalam PhpMyAdmin (untuk komputer server), dan buat user Privileges agar
MySQL dapat diakses oleh komputer client.
4. Pilih Privileges/User, kemudian Add a new User/Add user
5. Isi data yang disediakan, user name : root2, Host : %, password : admin, Database for
user : Grant all privileges, Global Privileges : Check All kemudian klik GO

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 :

- Nilai A akan diberikan apabila Mahasiswa mampu membuat Aplikasi dengan


mengerjakan semua langkah-langkah tanpa Error dan TUGAS dapat diselesaikan
- Nilai B akan diberikan apabila Mahasiswa mampu membuat Aplikasi dengan
mengerjakan semua langkah-langkah tanpa error tapi TANPA membuat tugas
- Apabila Mahasiswa tidak selesai membuat aplikasi dan juga Tugas dalam praktikum
ini, penilaian diambil dari poin lainnya (KUIS, UTS dan TUGAS).

Anda mungkin juga menyukai