modul pemrograman berorientasi objek ii [d.iii]...barang, jika data barang tidak ditemukan, maka...

75
Modul Pemrograman Berorientasi Objek II [D.III] 1 Disusun Oleh: Dinda Ayu Muthia, M.Kom Oky Irnawati, S.Kom Akademi Manajemen Informatika & Komputer Bina Sarana Informatika 2015

Upload: others

Post on 08-Nov-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

1

Disusun Oleh:

Dinda Ayu Muthia, M.Kom

Oky Irnawati, S.Kom

Akademi Manajemen Informatika & Komputer

Bina Sarana Informatika

2015

Page 2: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

2

KATA PENGANTAR

Puji syukur penulis panjatkan kehadirat Allah SWT, yang telah memberikan rahmat

dan hidayahnya sehingga modul Pemrograman Berorientasi Objek II ini dapat terselesaikan

dengan baik. Selanjutnya modul ini disusun untuk memberikan gambaran bagi mahasiswa

yang mempelajari program Netbeans IDE 7.0.1. Dengan menggunakan metode “Belajar

Cepat Dan Menyenangkan” karena modul ini disertai contoh kasus, sehingga lebih

memudahkan anda dalam memahami bahasa pemrograman Java menggunakan program

Netbeans IDE 7.0.1.

Tak lupa penulis mengucapkan banyak terima kasih kepada semua pihak yang

telah membantu dengan tenaga dan pikirannya, terima kasih juga kepada rekan–rekan

instruktur, dosen dan semuanya yang tidak bisa disebutkan satu persatu, yang selalu

mendukung penulis sehingga modul ini sehingga dapat selesai sesuai yang kita inginkan

semua.

Penulis menyadari masih banyak kekurangan dalam penyusunan modul ini. Untuk

itu saran dan kritik yang membangun sangat penulis harapkan guna perbaikan dan

pengembangan modul ini ke depan.

Akhir kata penulis berharap semoga modul Pemrograman Berorientasi Objek II ini

dapat dipergunakan sebaik-baiknya dan dapat dijadikan referensi untuk mahasiswa umum

yang ingin mempelajari bahasa pemrograman Java menggunakan program Netbeasn IDE 7.0.1.

Jakarta, Januari 2015

Penulis

Page 3: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

3

DAFTAR ISI

Cover ........................................................................................................................................ 1

Kata Pengantar ......................................................................................................................... 2

Daftar Isi .................................................................................................................................. 3

Pertemuan 1 Penjelasan tugas dan diagram UML dari studi kasus ......................................... 4

Pertemuan 2 Pembuatan database, objek tabel, menu utama, dan interface ............................ 10

Pertemuan 3 Pembuatan controller dan form master barang ................................................... 24

Pertemuan 4 Pembuatan controller dan form master user ...................................................... 37

Pertemuan 5 Pembuatan controller dan form transaksi penjualan ........................................... 45

Pertemuan 6 Pembuatan laporan dan form laporan ................................................................. 55

Pertemuan 7 Pembuatan form log in ........................................................................................ 70

Pertemuan 8 UTS ..................................................................................................................... 73

Pertemuan 9-14 UAS ............................................................................................................... 74

DAFTAR PUSTAKA

Page 4: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

4

Pertemuan 1

Penjelasan Tugas dan Diagram UML

dari Studi Kasus

1. Penjelasan Tugas

a. Software yang Digunakan

1) Apache2Triad/Xampp

2) Netbeans IDE 7.0.1

3) iReport 4.0.1

b. Penjelasan Tugas Individu

1) Mahasiswa diminta untuk membuat form master barang, form master user, form

transaksi penjualan, dan form laporan.

2) Masing-masing form bernilai 100, sehingga di akhir pertemuan, jika mahasiswa

mengerjakan semua form dengan baik dan running dengan benar, maka nilai tugasnya

menjadi (100+100+100+100)/4=100.

c. Penjelasan Tugas Kelompok

1) Mahasiswa diminta untuk membuat project berupa program bisnis menggunakan

Netbeans IDE.

2) Project dikerjakan secara berkelompok

3) Desain database dan program dipresentasikan saat UTS

4) Project akan dipresentasikan setelah UTS dan nilainya akan menjadi nilai UAS

5) Penilaian project dilihat dari presentasi dan jalannya program.

6) Penilaian diambil secara individu dan kelompok.

d. Kriteria Penilaian UTS

1) Penilaian secara kelompok:

a) Penilaian rancangan database = 10%

b) Penilaian diagram UML (Use case dan Class diagram) = 30%

c) Penilaian rancangan form = 60%

2) Penilaian secara individu:

a) Range nilai: 0-100

b) Nilai individu diketahui pada saat tanya jawab, ketika kelompok mereka

melakukan presentasi.

c) Nilai rata-rata per individu=(total nilai kelompok + nilai individu) / 2.

d) Nilai rata-rata per individu yang diinput di web sebagai nilai UTS.

e. Kriteria Penilaian UAS

1) Penilaian secara kelompok:

a) Penilaian database = 10% (Pembuatan database, tabel, index)

b) Penilaian form, coding dan report = 60% (Pembuatan form, penggunaan objek dan

properties, koneksi database, sintaks program dan prosedur, logika program)

c) Penilaian testing, presentasi = 30% (Eksekusi program, kesesuaian tampilan, cara

Page 5: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

5

presentasi)

2) Penilaian secara individu:

a) Range nilai: 0-100

b) Nilai individu diketahui pada saat tanya jawab, ketika kelompok mereka melakukan

presentasi.

c) Nilai rata-rata per individu=(total nilai kelompok + nilai individu) / 2.

d) Nilai rata-rata per individu yang diinput di web sebagai nilai UAS.

f. Contoh Penilaian

Database : 10% x 100 =10

Form. Coding, report : 60% x 100 = 60

Testing, Presentasi : 30% x 100 = 30

TOTAL NILAI KELOMPOK : 100

NILAI INDIVIDU : 100

Nilai rata-rata per individu: (100+100)/2 =100

Nilai UAS mahasiswa tersebut = 100

g. Project Program

1) Pembayaran

2) Simpan-pinjam

3) Pembelian

4) Penggajian

5) Peminjaman – pengembalian

6) Penerimaan karyawan

7) Absensi pegawai

8) Persedian barang

9) kunjungan pasien

10) perpustakaan

Page 6: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

6

2. Diagram UML dari Studi Kasus

a. Use Case Diagram

User

Mengelola Data

Master

Menginput Data

Transaksi

Melihat Laporan

Mengelola Data

Barang«extends»

Mengelola Data User

«extends»

Gambar 2.1. Use Case Diagram

Penjelasan gambar:

User berhubungan secara langsung dengan case Mengelola Data Master, di mana

data master terdiri dari Barang dan User, sehingga ia bisa melakukan input, update,

maupun delete terhadap data yang ada.

User dapat menginput data transaksi penjualan.

User dapat melihat laporan, yang terdiri dari laporan barang, laporan user, dan laporan

transaksi penjualan.

Page 7: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

7

b. Class Diagram

+save()

+update()

+delete()

+findBarang()

+nomorOtomatis()

+cetak()

-KodeBarang

-NamaBarang

-Harga

-Stok

Barang

+save()

+update()

+delete()

+findUser()

+cetak()

-KodeUser

-NamaUser

-Password

-HakAkses

User

+save()

+findTransaksi()

+nomor()

+cetak()

-NoTrans

-Tanggal

-Total

Transaksi

+saveDetail()

-Id

-NoTrans

-KodeBarang

-Harga

-Qty

-Subtotal

DetailTransaksi

1..*1

1

1..*

1..*1

1..*

1

Gambar 2.2. Class Diagram

Penjelasan gambar:

User boleh menginput satu atau banyak data barang. Sedangkan satu data barang

diinput oleh satu orang user saja.

User boleh menginput satu kali atau sebanyak mungkin transaksi penjualan.

Sedangkan dalam satu transaksi boleh diinput oleh satu orang user saja.

Detail transaksi merupakan Agregasi Komposit, dalam artian Transaksi memiliki

Detail transaksi atau Detail transaksi tidak akan ada kalau kelas Transaksi tidak ada.

Dalam satu detail transaksi harus tercatat kode barang minimal satu atau banyak.

Page 8: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

8

c. Sequence Diagram

Gambar 2.3. Sequence Diagram

Penjelasan gambar:

User berinteraksi langsung dengan tampilan layar, pada contoh di atas, User

berinteraksi dengan form transaksi. Hal yang pertamadilakukanadalah membuka form

transaksi, lalu input kode barang, proses pencarian kode barang melalui controller

barang menuju ke entitas Barang, kemudian nama dan harga barang ditampilkan pada

form.

Selanjutnya User menginput jumlah beli (qty) dan dilakukan perhitungan subtotal dan

total. Setelah itu data tersebut masuk disimpan dalam entitas DetailTransaksi melalui

controller detail.

Setelah semua data diinput, maka semua data transaksi disimpan dalam entitas

Transaksi melalui controller transaksi.

sd Form Transaksi

User

FormTransaksi BarangController Barang TransaksiController TransaksiDetailController DetailTransaksi

Buka_Form() ShowForm(Object obj)

Input_Kode_Barang() findBarang(String kode) findBarang(String kode)

Input_Qty() Hitung_Subtotal_dan_Total()

simpanDetail()

saveDetail(Detailtransaksi

detail)

Simpan_Transaksi() simpan() save(Transaksi trans)

Page 9: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

9

d. State Diagram

Input Kode Barang

Tampil Nama Barang

Tampil Harga

Data Barang

Tidak Ditemukan

Data Barang

Ditemukan

Input Qty

Hitung Subtotal dan Total

Tampil Subtotal

Tampil Total

Simpan Detail

Input Uang Bayar

Tampil Uang Kembali

Simpan Data

Gambar 2.4. State Diagram

Penjelasan gambar:

Saat membuka form transaksi, hal yang pertama dilakukan adalah menginput kode

barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang,

namun jika data barang ditemukan, maka akan tampil nama dan harga barang.

Input jumlah beli (Qty), kemudian proses perhitungan subtotal dan total dilakukan,

lalu hasil subtotal dan total ditampilkan pada form. Selanjutnya data detail transaksi

tersebut disimpan ke dalam entitas DetailTransaksi.

Input uang bayar, tampil uang kembali, lalu proses yang terakhir adalah menyimpan

data transaksi ke dalam entitas Transaksi.

Page 10: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

10

Pertemuan 2

Pembuatan Database, Objek Tabel,

Menu Utama, dan Interface

1. Membuat Database

Buatlah database dengan nama DbPenjualan pada command prompt.

a. Tabel : Barang

Field Type Length Keterangan

KodeBarang Varchar 5 Primary Key

NamaBarang Varchar 20

Harga Double

Stok Int

b. Tabel : User

Field Type Length Keterangan

KodeUser Varchar 3 Primary Key

NamaUser Varchar 20

Password Varchar 10

HakAkses Varchar 5

Page 11: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

11

c. Tabel : Transaksi

Field Type Length Keterangan

NoTrans Varchar 5 Primary Key

Tanggal Date

Total Double

d. Tabel : DetailTransaksi

/

Field Type Length Extra Keterangan

Id Int 11 Auto Increment Primary Key

NoTrans Varchar 5 Foreign Key

KodeBarang Varchar 5 Foreign Key

Harga Double

Qty Int

Subtotal Double

Page 12: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

12

Keterangan:

1) Foreign Key(NoTrans) References Transaksi(NoTrans)

Field NoTrans yang ada di tabel DetailTransaksi adalah foreign key (kunci tamu)

yang mereferensi field NoTrans yang ada di tabel Transaksi.

2) on delete set null

Jika data NoTrans di tabel Transaksi dihapus, maka data Notrans pada tabel

DetailTransaksi akan diset nilainya menjadi null.

3) on update cascade

Jika data NoTrans di tabel Transaksi di-update, maka data Notrans pada tabel

DetailTransaksi akan ikut ter-update.

2. Pembuatan Objek Tabel

a. Pembuatan Project

1) Buatlah folder di C:/penjualan_nim

2) File New Project

3) Next

4) Project Name: Penjualan

5) Finish.

Page 13: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

13

6) Tambahkan Library dengan cara klik kanan pada Libraries Add Library MySQL

JDBC Driver Add Library

b. Pembuatan Persistence (Java Persistence API)

Java Persistence API (JPA) adalah framework dari bahasa pemrograman Java yang

mengatur penggunaan data berelasi dalam aplikasi yang menggunakan Java Standard dan

enterprise. Berikut adalah langkah-langkah dalam menggunakan JPA:

1) Klik kanan pada projek Penjualan New Other Persistence Persistence

Unit Next

2) Pada Database Connection pilih New Database Connection

Page 14: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

14

3) Driver: MySQL (Connector/J driver) Next

4) Database: DbPenjualan (Isilah password jika menggunakan Apache2Triad, lalu

centang pilihan Remember Password) Test Connection Finish

5) Table Generation Strategy: None Finish. Sehingga terbentuk file persistence.xml.

c. Pembuatan Objek POJO (Plain Old Java Object) atau Entitas

Setelah membuat koneksi Persistence, maka yang harus dibuat selanjutnya adalah objek

dari tabel-tabel yang ada di database DbPenjualan. Langkah-langkahnya adalah:

1) Buatlah package dengan nama: data dengan cara mengklik kanan pada package

penjualan New Java Package

Page 15: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

15

Package Name: penjualan.data Finish.

2) Membuat objek (POJO) atau entitas dengan cara klik kanan pada package

penjualan.data New Entity Classes From Database.

3) Akan diminta untuk mengkoneksikan dengan database klik Ok (Untuk yang

menggunakan Apache, harap diisi dulu passwordnya).

Page 16: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

16

4) Klik Add All >> untuk memasukkan semua tabel yang ada pada database Next.

5) Tekan tombol Finish jika muncul tampilan seperti di bawah ini:

M

a

k

a

akan otomatis tiap table akan dibuatkan masing-masing file-nya di dalam package

penjualan.data.

Page 17: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

17

3. Pembuatan Menu Utama

Untuk membuat form menu utama, langkah-langkahnya adalah:

a. Buatlah package dengan nama yang akan menampung semua form yang dibuat dengan

cara mengklik kanan pada package penjualan New Package Package Name:

penjualan.form Finish.

b. Buatlah form di dalam package penjualan.form dengan cara mengklik kanan pada

package tersebut New JFrame Form Class Name: FormUtama Finish.

Page 18: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

18

c. Pilih Menu Bar dari palette, klik pada form.

d. Edit text pada File menjadi Master. Change variable name menjadi masterMN

e. Edit text pada Edit menjadi Transaksi. Change variable name menjadi transaksiMN

f. Klik kanan pada menu Add Menu

g. Tambahkan menu Laporan. Change variable name menjadi laporanMN

h. Tambahkan menu Log Out. Change variable name menjadi logoutMN

i. Untuk menu Master dibuat submenu yang terdiri dari Barang dan User

j. Klik kanan pada menu Master Add Form Palette Menu Item

Page 19: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

19

k. Edit text menjadi Barang, change variable name menjadi barangMN

l. Tambahkan submenu untuk User. Change variable name menjadi userMN

m. Tambahkan submenu untuk menu Transaksi seperti di bawah ini:

n. Untuk submenu Transaksi Penjualan, change variable name menjadi transMN

o. Tambahkan submenu untuk menu Laporan seperti di bawah ini:

p. Untuk submenu Form Laporan, change variable name menjadi fLaporanMN.

q. Copy folder images yang berisi icon-icon ke dalam folder src yang ada di tempat

penyimpanan project, yaitu: C:\penjualan_12061479\Penjualan\src\images r. Masukkan JToolBar ke dalam form, letakkan tepat di bawah menu.

s. Tambahkan 4 button ke dalam JToolBar, yang terdiri dari: New (name: newBT), Save

(name: saveBT), Delete (name: deleteBT)dengan memberikan icon untuk masing-masing

button.

Page 20: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

20

Pilih gambar New dari folder images yang sudah dicopy ke folder src sebelumnya OK

OK.

t. Buatlah sehingga tampilannya menjadi seperti di bawah ini:

u. Masukkan JDesktopPane ke dalam form, letakkan tepat di bawah JToolBar. Change

variable name: desktopPane.

Klik … pada bagian icon di properties

Page 21: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

21

4. Pembuatan Interface

Interface sebenarnya sama dengan class, tapi hanya memiliki deklarasi method tanpa

implementasi. Cara membuat interface sebagai berikut:

a. Klik kanan pada package penjualan.form New Java Interface Class Name:

NavigatorFormInt Finish.

b. Ubahlah listingnya seperti di bawah ini:

public interface NavigatorFormInt {

public void aktif();

public void bersih();

public void simpan();

public void hapus();

public void cari();

public void tampil();

}

c. Tambahkan listing untuk memanggil NavigatorFormInt dan method showForm pada

FormUtama di atas tanda kurung yang paling bawah, seperti berikut:

Tekan enter di sini,

lalu ketikkan

listing di bawah ini

Page 22: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

22

Tambahkan pula listing di bagian atas, tepatnya di bawah package penjualan.form; untuk

mengimport JInternalFrame:

d. Klik dua kali pada tombol New, lalu berikan script berikut:

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

{

nav = (NavigatorFormInt) desktopPane.getSelectedFrame();

nav.bersih();

nav.aktif();

}

e. Klik dua kali pada tombol Save, lalu berikan script berikut: private void saveBTActionPerformed(java.awt.event.ActionEvent evt)

{

nav = (NavigatorFormInt) desktopPane.getSelectedFrame();

nav.simpan();

}

f. Klik dua kali pada tombol Find, lalu berikan script berikut: private void findBTActionPerformed(java.awt.event.ActionEvent evt)

{

nav = (NavigatorFormInt) desktopPane.getSelectedFrame();

nav.cari();

}

Page 23: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

23

g. Klik dua kali pada tombol Delete, lalu berikan script berikut: private void deleteBTActionPerformed(java.awt.event.ActionEvent

evt) {

if(JOptionPane.showConfirmDialog(null, "Hapus data?", "Konfimasi",

JOptionPane.YES_NO_OPTION)==JOptionPane.YES_OPTION){

nav = (NavigatorFormInt) desktopPane.getSelectedFrame();

nav.hapus();

}

}

h. Untuk menampilkan FormUtama, maka harus ditambahkan listring berikut pada file

Penjualan.java seperti di bawah ini:

5. Penjelasan

EntityManagerFactory adalah pabrik pengelola entitas (entity manager) yang

menyediakan instance entity manager, semua instance yang dikonfigurasi untuk terkoneksi

ke database yang sama, untuk menggunakan pengaturan default yang didefinisikan oleh

implementasi tertentu.

EntityManager adalah API (Application Programming Interface) yang digunakan untuk

mengakses sebuah database dalam suatu unit kerja tertentu. EntityManager digunakan

untuk membuat (create) dan menghapus (remove) instance persistent entity, untuk mencari

(find) entity dari primary key-nya, dan untuk menanyakan (query) semua yang

berhubungan dengan entity.

Persistence adalah protokol untuk mentransfer antara variabel instance dan database yang

digunakan.

Persistence Unit mendefinisikan himpunan dari semua class yang dihubungkan oleh

aplikasi, dan harus ditempatkan dalam satu penyimpanan data.

Page 24: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

24

Pertemuan 3

Pembuatan Controller dan Form Master Barang

1. Membuat Controller dari Objek POJO

Setiap entitas atau objek POJO yang telah dibentuk akan dikontrol oleh kelas Controller.

Di mana setiap proses bisnis atau manipulasi data dilakukan dalam Method. Langkah-

langkahnya sebagai berikut:

a. Buatlah package dengan nama: penjualan.control dengan cara klik kanan pada package

penjualan New java Package.

b. Package Name: penjualan.control Finish

c. Selanjutnya buat kelas control untuk kelas Barang di dalam package penjualan.control.

Klik kanan pada package penjualan.control New Java Class Class Name:

BarangController Finish.

Page 25: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

25

d. Setelah filenya sudah terbentuk, ubahlah listingnya menjadi seperti di bawah ini:

package penjualan.control;

import penjualan.data.Barang;

import java.io.Serializable;

import javax.persistence.Query;

import java.text.DecimalFormat;

import javax.persistence.EntityManager;

import javax.persistence.EntityManagerFactory;

public class BarangController implements Serializable{

private EntityManagerFactory emf=null;

public BarangController(EntityManagerFactory emf){

this.emf=emf;

}

public EntityManager getEntityManager(){

return emf.createEntityManager();

}

public void save(Barang barang) throws Exception{

EntityManager em=getEntityManager();

try{

em.getTransaction().begin();

em.persist(barang);

em.getTransaction().commit();

}catch(Exception ex){}

}

public void update(Barang barang) throws Exception{

EntityManager em=getEntityManager();

try{

em.getTransaction().begin();

em.merge(barang);

em.getTransaction().commit();

}catch(Exception ex){}

}

public void delete(String kode) throws Exception{

EntityManager em=getEntityManager();

Barang br;

try{

br=em.getReference(Barang.class, kode);

br.getKodeBarang();

em.getTransaction().begin();

em.remove(br);

em.getTransaction().commit();

}catch(Exception ex){}

}

Page 26: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

26

public Barang findBarang(String kode){

EntityManager em=getEntityManager();

try{

return em.find(Barang.class, kode);

}finally{}

}

public String nomorOtomatis(){

String kode="BR001";

EntityManager em=null;

try{

em = getEntityManager();

Query q=em.createQuery("select b from Barang b order

by b.kodeBarang desc");

q.setMaxResults(1);

Barang b=(Barang) q.getSingleResult();

if(q!=null){

DecimalFormat formatnomor =

new DecimalFormat("BR000");

String nomorurut =

b.getKodeBarang().substring(2);

kode=formatnomor.format(Double.parseDouble(nomo

rurut)+1);

}

}finally{}

return kode;

}

}

2. Penjelasan Controller Barang

private EntityManagerFactory emf=null;

Membuat variabel dengan nama emf bertipe class EntityManagerFactory dan diberi nilai

awal null.

public BarangController(EntityManagerFactory emf){

this.emf=emf;

}

Merupakan konstruktor (Method yang digunakan untuk memberi nilai awal pada saat

object diciptakan). Isi dari konstruktor tersebut adalah mendeklarasikan variabel this.emf

yang sebelumnya dideklarasikan secara private, diberikan nilai emf yang dikirimkan di

dalam parameter kostruktor. Kata kunci this digunakan pada pembuatan class dan

digunakan untuk menyatakan object sekarang.

Page 27: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

27

public void save(Barang barang) throws Exception{

EntityManager em=getEntityManager();

try{

em.getTransaction().begin();

em.persist(barang);

em.getTransaction().commit();

}catch(Exception ex){}

}

Membuat method save dengan parameter bernama barang dan bertipe class Barang.

Berikut adalah pengertian dari beberapa istilah yang ada di dalam script di atas:

throws adalah keyword yang digunakan untuk melemparkan sebuah kesalahan yang

terjadi pada suatu ekspresi. Keyword throws digunakan pada sebuah methid maupun

ekspresi yang mengandung kesalahan. Apabila digunakan pada sebuah method, saat

pemanggilan method tersebut, harus menambahkan blok try catch.

Exception adalah sebuah event selama eksekusi program yang mencegah program

dari sebuah error. Bahasa pemrograman Java mendukung exception dengan keyword

try, catch, dan throw.

try catch digunakan untuk menguji suatu statemen yang mengandung kesalahan,

kemudian menangkap kesalahan tersebut pada statemen catch. Perintah try hanya

dituliskan sekali, namun catch bisa dituliskan lebih dari satu kali, tergantung pada

berapa kemungkinan kesalahan yang akan terjadi. Apabila tidak mengetahui kesalahan

suatu ekspresi secara spesifik, kelas exception yang akan menangkap seluruh jenis

kesalahan bisa digunakan.

Finally. Perintah try harus diikuti blok catch atau blok finally atau keduanya. Jika

blok catch digunakan untuk menangkap kesalahan, blok finally akan dieksekusi, baik

ada kesalahan atau tidak.

Transaction adalah suatu unit kerja yang memodifikasi data.

Untuk method save, gunakan persist(entity)

Untuk method update, gunakan merge(entity)

Untuk method delete, gunakan remove(entity)

Page 28: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

28

commit adalah poin di dalam sebuah transaksi ketika semua update ke sumber

manapun yang termasuk di dalam transaksi dibuat permanen.

Untuk method find, parameter yang dikirim berupa kode yang dicari yang bertipe data

String. Bentuknya adalah find(entity class, primary key).

Berikut penjelasan mengenai script penomoran otomatis:

String kode="BR001";

Variabel kode bertipe data String diberikan nilai awal “BR001”

Query q=em.createQuery("select b from Barang b order by

b.kodeBarang desc");

Membuat instance (objek) bertipe Query dengan nama q yang berisi bahasa sql yang

akan dieksekusi. Perintah sql di atas untuk menampilkan semua record yang ada di

tabel barang diurutkan secara descending berdasarkan kode barang. Umumnya

digunakan perintah “Select * from Barang order by kodeBarang”, namun di sini tanda

“ * ” tidak dikenal, sehingga perlu dibuat alias dari tabel Barang dengan nama b.

Penulisan nama tabel “Barang” harus diawali dengan huruf besar, karena sudah

berubah menjadi entityClass (Tiap class harus diketik dengan huruf besar di bagian

depan). Sedangkan penulisan field, harus diawali dengan huruf kecil dan diawali

dengan alias dari tabelnya.

q.setMaxResults(1);

Query yang dieksekusi diatur agar hasilnya hanya satu record.

Barang b=(Barang) q.getSingleResult();

Membuat objek Barang dengan nama b yang berisi satu hasil query yang diambil.

Tipe hasil query q.getSingleResult(); berupa object.

(Barang) q.getSingleResult();hasil query diubah menjadi bertipe class

Barang.

if(q!=null){

DecimalFormat formatnomor = new DecimalFormat("BR000");

String nomorurut = b.getKodeBarang().substring(2);

kode=formatnomor.format(Double.parseDouble(nomorurut)+1);

}

Page 29: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

29

Jika hasil query-nya tidak kosong, maka dibuat objek formatnomor dengan tipe

DecimalFormat yang berisi format kode “BR000”.

Setelah itu dibuat variabel dengan nama nomorurut bertipe String yang berisi kode

barang yang diambil dari hasil query yang telah dihilangkan (substring) 2 digit

karakter di bagian depannya.

Variabel kode kini berisi formatnomor yang awalnya BR000 digabung dengan

nomorurut+1.

Jika hasil query tidak ada, maka return kode (kirimkan nilai awal kode).

3. Pembuatan Form Master Barang

a. Klik kanan pada package penjualan.form New JInternalFrame Form. Jika tidak

ada, maka pilih New Other Swing GUI Forms JInternalFrame Form Class

Name: FormBarang Finish.

b. Klik kanan pada form Set Layout Absolute Layout.

c. Berikan Title pada form melalui Properties bagian title. Berikan name untuk Form:

FBarang.

Page 30: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

30

d. Buatlah desain form seperti di bawah ini:

e. Setelah desain formnya dibuat, klik tombol Source untuk memberikan listing pada

FormBarang.

f. Pada baris ke-17, sudah ada script seperti di bawah ini:

Tambahkan listing pada script di atas, sehingga menjadi sebagai berikut:

public class FormBarang extends javax.swing.JInternalFrame

implements NavigatorFormInt{

Penambahan listing di atas akan menimbulkan tanda lampu kuning bertanda seru merah di

sebelah kiri seperti gambar di bawah ini:

Klik pada tanda lampu kuning tersebut, kemudian pilih Implement all abstract methods.

Name: kodeTF

Name: namaTF

Name: hargaTF

Name: stokTF

Page 31: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

31

Maka otomatis semua metode abstract yang sudah dibuat pada file NavigatorFormInt akan

diimplementasikan di dalam FormBarang. Metode-metode abstract tersebut akan

menampilkan script-nya di bagian paling bawah seperti gambar berikut:

g. Pada baris ke-18, tambahkan script berikut:

Bisa dilihat pada gambar tersebut terdapat error dengan tanda lampu kuning bertanda seru

merah. Letak kesalahan ada pada tulisan yang tercetak miring dan garis bawah merah. Hal

tersebut menandakan, class BarangController dan Penjualan belum diimport ke dalam

file FormBarang. Oleh karena itu, klik tanda lampu kuning bertanda seru merah tersebut,

lalu pilih Add import for penjualan.Penjualan dan Add import for

penjualan.control.BarangController.

Maka otomatis, pada baris ke-13 dan 14 muncul script berikut:

import penjualan.Penjualan;

import penjualan.control.BarangController;

h. Pada baris ke-22, tambahkan script berikut:

Bisa dilihat pada gambar tersebut terdapat error dengan tanda lampu kuning bertanda seru

merah. Letak kesalahan ada pada tulisan yang tercetak miring dan garis bawah merah. Hal

tersebut menandakan, class Barang belum diimport ke dalam file FormBarang. Oleh

karena itu, klik tanda lampu kuning tersebut, lalu pilih Add import for

penjualan.data.Barang.

Page 32: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

32

Maka otomatis, pada baris ke-15 muncul script berikut:

import penjualan.data.Barang;

i. Ubah semua script abstract method yang sudah ada sehingga menjadi seperti di bawah ini:

@Override

public void aktif() {

namaTF.setEnabled(true);

hargaTF.setEnabled(true);

stokTF.setEnabled(true);

kodeTF.setText(bc.nomorOtomatis());

namaTF.requestFocus();

}

@Override

public void bersih() {

kodeTF.setText(“”);

namaTF.setText(“”);

hargaTF.setText(“”);

stokTF.setText(“”);

}

@Override

public void simpan() {

brg=bc.findBarang(kodeTF.getText());

Barang br=new Barang();

if(brg==null){

br.setKodeBarang(kodeTF.getText());

br.setNamaBarang(namaTF.getText());

br.setHargaBarang(Double.parseDouble(hargaTF.getText()));

br.setStok(Integer.parseInt(stokTF.getText()));

try{

bc.save(br);

}catch(Exception e){}

JOptionPane.showMessageDialog(null,

“Data telah tersimpan”);

}else{

br.setKodeBarang(kodeTF.getText());

br.setNamaBarang(namaTF.getText());

br.setHargaBarang(Double.parseDouble(hargaTF.getText()));

br.setStok(Integer.parseInt(stokTF.getText()));

try{

bc.update(br);

}catch(Exception e){}

JoptionPane.showMessageDialog(null,

“Data telah terupdate”);

}

bersih();

kodeTF.requestFocus();

Page 33: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

33

}

@Override

public void hapus() {

try{

bc.delete(kodeTF.getText());

JoptionPane.showMessageDialog(null,

“Data telah dihapus”);

}catch(Exception ex){

JoptionPane.showMessageDialog(null,

“Data tidak bisa dihapus karena “+ ex.getMessage());

}

bersih();

}

@Override

public void cari() {

brg=bc.findBarang(kodeTF.getText());

if(brg==null){

JoptionPane.showMessageDialog(null,

“Data tidak ditemukan”);

bersih();

}else{

tampil();

}

}

@Override

public void tampil() {

namaTF.setText(brg.getNamaBarang());

hargaTF.setText(Double.toString(brg.getHargaBarang()));

stokTF.setText(Integer.toString(brg.getStok()));

}

j. Kembali ke desain form barang, klik kanan pada Text Field Kode Barang Events

Key KeyPressed. Lalu ketikkan script berikut:

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

if(evt.getKeyCode()==KeyEvent.VK_ENTER){

cari();

}

}

Klik pada lampu kuning bertanda seru merah, untuk Add import for

java.awt.event.KeyEvent.

k. Klik kanan pada form barang Events InternalFrame internalFrameActivated.

Lalu ketikkan script berikut: private void formInternalFrameActivated

(javax.swing.event.InternalFrameEvent evt) {

Page 34: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

34

kodeTF.setEnabled(false);

namaTF.setEnabled(false);

hargaTF.setEnabled(false);

stokTF.setEnabled(false);

bersih();

}

l. Kembali ke desain FormUtama.java, klik menu Master klik kanan pada menu item

Barang Events Action ActionPerformed.

Lalu berikan script berikut:

private void barangMNActionPerformed(java.awt.event.ActionEvent

evt) {

FormBarang fBarang=new FormBarang();

showForm(fBarang);

}

m. Isikan data berikut:

Kode Barang Nama Barang Harga Stok

BR001 Monitor 1000000 10

BR002 Keyboard 100000 20

BR003 Mouse 30000 30

BR004 Flash Disk 50000 40

BR005 Laptop Soft Case 100000 10

4. Penjelasan Form Master Barang

Semua abstract method telah dideklarasikan pada interface NavigatorFormInt.java. Pada

form barang ini, implementasi konsep polymorphism dilakukan. Konsep polymorphism

terdiri dari overloading (Penggunaan satu nama untuk beberapa method yang berbeda

parameter) dan overriding (Terjadi ketika deklarasi method subclass persis sama dengan

method dari superclassnya). Di dalam form barang ini, diterapkan konsep overriding. Di

mana semua method (aktif, bersih, simpan, hapus, cari, dan tampil) yang dideklarasikan

pada interface (selaku superclass) dideklarasikan pula di form barang (selaku subclass).

Oleh karena itu, di tiap method terdapat tulisan @override di atasnya.

Page 35: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

35

BarangController telah dibuat objeknya dengan nama bc, sehingga untuk memanggil

semua method yang ada didalam class BarangController, kita hanya perlu mengetik bc.

diikuti nama method yang ingin dipanggil.

Entity class Barang juga sudah dibuat objeknya dengan nama brg.

Berikut adalah penjelasan method simpan:

brg=bc.findBarang(kodeTF.getText());

Objek barang (brg) digunakan sebagai penampung hasil pencarian barang berdasarkan

kode barang yang ada di text field yang sedang aktif. Karena sudah digunakan sebagai

penampung hasil, maka harus dibuat objek baru dari Entity Class Barang, yaitu br

untuk fungsi sebagai pengisi data untuk masing-masing field.

Jika hasil pencarian yang ditampung dalam brg kosong, maka masing-masing field

akan diisi dengan data pada text field yang ada. Lalu data tersebut disimpan.

Jika hasil pencarian tidak kosong (kode barang ditemukan), maka maka masing-

masing field akan diisi dengan data pada text field yang ada, namun perintahnya

adalah update.

Berikut adalah penjelasan untuk method hapus:

bc.delete(kodeTF.getText());

Memanggil method delete yang ada di class BarangController, dengan parameter yang

dikirim adalah kode barang yang ada di text field kodeTF.

Jika datanya terhapus, maka akan menampilkan message dialog dengan pesan “Data

telah dihapus”.

catch(Exception ex){

JoptionPane.showMessageDialog(null,“Data tidak bisa dihapus

karena “+ ex.getMessage());

}

Jika ada kesalahan, maka Exception yang akan mengatasinya. Exception di sini sudah

dibuat objeknya, yaitu ex. Lalu akan menampilkan message dialog “Data tidak bisa

dihapus karena” digabung dengan pesan error dari Exception yang ada di objeknya,

yaitu ex.

Berikut adalah penjelasan dari method cari:

brg=bc.findBarang(kodeTF.getText());

if(brg==null){

JoptionPane.showMessageDialog(null, “Data tidak

ditemukan”);

bersih();

}else{

tampil();

}

Page 36: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

36

Objek brg menampung hasil pencarian barang berdasarkan kode barang yang terdapat

pada textfield kodeTF. Jika pencarian yang ditampung dalam brg kosong, maka akan

menampilkan message dialog “Data tidak ditemukan”. Selain itu data akan

ditampilkan dengan memanggil method tampil.

Untuk method tampil, semua data akan ditampilkan oleh objek brg ke masing-masing text

field.

Page 37: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

37

Pertemuan 4

Pembuatan Controller dan Form Master User

1. Pembuatan Controller User

Langkah-langkah dalam membuat Controller untuk objek User sebagai berikut:

a. Klik kanan pada package penjualan.control New Java Class Class Name:

UserController Finish.

b. Setelah filenya sudah terbentuk, ubahlah listingnya menjadi seperti di bawah ini:

package penjualan.control;

import penjualan.data.User;

import java.io.Serializable;

import javax.persistence.EntityManager;

import javax.persistence.EntityManagerFactory;

public class UserController implements Serializable{

private EntityManagerFactory emf=null;

public UserController(EntityManagerFactory emf){

this.emf=emf;

}

public EntityManager getEntityManager(){

return emf.createEntityManager();

}

public void save(User user) throws Exception{

EntityManager em=getEntityManager();

try{

em.getTransaction().begin();

em.persist(user);

em.getTransaction().commit();

}catch(Exception ex){}

}

public void update(User user) throws Exception{

EntityManager em=getEntityManager();

Page 38: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

38

try{

em.getTransaction().begin();

em.merge(user);

em.getTransaction().commit();

}catch(Exception ex){}

}

public void delete(String kode) throws Exception{

EntityManager em=getEntityManager();

User us;

try{

us=em.getReference(User.class, kode);

us.getKodeUser();

em.getTransaction().begin();

em.remove(us);

em.getTransaction().commit();

}catch(Exception ex){}

}

public User findUser(String kode){

EntityManager em=getEntityManager();

try{

return em.find(User.class, kode);

}finally{}

}

}

2. Pembuatan Form Master User

a. Klik kanan pada package penjualan.form New JInternalFrame Form. Jika tidak

ada, maka pilih New Other Swing GUI Forms JInternalFrame Form Class

Name: FormUser Finish.

b. Klik kanan pada form Set Layout Absolute Layout.

c. Berikan Title pada form melalui Properties bagian title. Berikan name untuk Form:

FUser.

Page 39: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

39

d. Buatlah desain form seperti di bawah ini:

Klik hakAksesCB Properties Model Isikan Admin, User OK.

e. Setelah desain formnya dibuat, klik tombol Source untuk memberikan listing pada

FormUser.

f. Pada baris ke-17, ubah script menjadi sebagai berikut: public class FormUser extends javax.swing.JInternalFrame

implements NavigatorFormInt{

Penambahan listing di atas akan menimbulkan tanda lampu kuning bertanda seru merah di

sebelah kiri seperti gambar di bawah ini:

Klik pada tanda lampu kuning tersebut, kemudian pilih Implement all abstract methods.

Maka otomatis semua metode abstract yang sudah dibuat pada file NavigatorFormInt akan

diimplementasikan di dalam FormUser.

g. Pada baris ke-18, tambahkan script berikut:

Bisa dilihat pada gambar tersebut terdapat error dengan tanda lampu kuning bertanda seru

merah. Letak kesalahan ada pada tulisan yang tercetak miring dan garis bawah merah. Hal

Name: kodeTF

Name: namaTF

Name: passwordTF

Name: hakAksesCB

Page 40: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

40

tersebut menandakan, class UserController dan Penjualan belum diimport ke dalam file

FormUser. Oleh karena itu, klik tanda lampu kuning bertanda seru merah tersebut, lalu

pilih Add import for penjualan.Penjualan dan Add import for

penjualan.control.UserController.

Maka otomatis, pada baris ke-13 dan 14 muncul script berikut:

import penjualan.Penjualan;

import penjualan.control.UserController;

h. Pada baris ke-22, tambahkan script berikut:

Bisa dilihat pada gambar tersebut terdapat error dengan tanda lampu kuning bertanda seru

merah. Letak kesalahan ada pada tulisan yang tercetak miring dan garis bawah merah. Hal

tersebut menandakan, class User belum diimport ke dalam file FormUser. Oleh karena itu,

klik tanda lampu kuning tersebut, lalu pilih Add import for penjualan.data.User.

Maka otomatis, pada baris ke-15 muncul script berikut:

import penjualan.data.User;

i. Ubah semua script abstract method yang sudah ada sehingga menjadi seperti di bawah ini:

@Override

public void aktif() {

kodeTF.setEnabled(true);

namaTF.setEnabled(true);

passwordTF.setEnabled(true);

hakAksesCB.setEnabled(true);

kodeTF.requestFocus();

}

@Override

public void bersih() {

kodeTF.setText(“”);

Page 41: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

41

namaTF.setText(“”);

passwordTF.setText(“”);

hakAksesCB.setSelectedIndex(0);

}

@Override

public void simpan() {

usr=us.findUser(kodeTF.getText());

User u=new User();

if(usr==null){

u.setKodeUser(kodeTF.getText());

u.setNamaUser(namaTF.getText());

u.setPassword(passwordTF.getText());

u.setHakAkses(hakAksesCB.getSelectedItem().toString());

try{

us.save(u);

}catch(Exception e){}

JoptionPane.showMessageDialog(null, “Data telah

tersimpan”);

}else{

u.setKodeUser(kodeTF.getText());

u.setNamaUser(namaTF.getText());

u.setPassword(passwordTF.getText());

u.setHakAkses(hakAksesCB.getSelectedItem().toString());

try{

us.update(u);

}catch(Exception e){}

JoptionPane.showMessageDialog(null, “Data telah

terupdate”);

}

bersih();

kodeTF.requestFocus();

}

@Override

public void hapus() {

try{

us.delete(kodeTF.getText());

JoptionPane.showMessageDialog(null, “Data telah

dihapus”);

}catch(Exception ex){

JoptionPane.showMessageDialog(null,”Data tidak bisa

dihapus karena “+ ex.getMessage());

}

bersih();

}

@Override

public void cari() {

usr=us.findUser(kodeTF.getText());

Page 42: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

42

if(usr==null){

JoptionPane.showMessageDialog(null, “Data tidak

ditemukan”);

namaTF.requestFocus();

}else{

JoptionPane.showMessageDialog(null, “Data ditemukan”);

tampil();

}

}

@Override

public void tampil() {

namaTF.setText(usr.getNamaUser());

passwordTF.setText(usr.getPassword());

if(usr.getHakAkses().equalsIgnoreCase(“Admin”)){

hakAksesCB.setSelectedIndex(0);

}else{

hakAksesCB.setSelectedIndex(1);

}

}

j. Klik kanan pada desain form user Events InternalFrame

internalFrameActivated. Lalu ketikkan script berikut: private void formInternalFrameActivated

(javax.swing.event.InternalFrameEvent evt) {

kodeTF.setEnabled(false);

namaTF.setEnabled(false);

passwordTF.setEnabled(false);

hakAksesCB.setEnabled(false);

bersih();

}

k. Kembali ke desain FormUtama.java, klik menu Master klik kanan pada menu item

User Events Action ActionPerformed. Lalu berikan script berikut:

private void userMNActionPerformed(java.awt.event.ActionEvent

evt) {

FormUser fUser=new FormUser();

showForm(fUser);

}

l. Isikan data berikut:

KodeUser NamaUser Password HakAkses

DAM Dinda a1d2m3 Admin

IDD Ida u4s5r6 User

RJO Rio u4s5r6 User

Page 43: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

43

RNR Retno u4s5r6 User

RYL Ratih u4s5r6 User

3. Penjelasan

UserController telah dibuat objeknya dengan nama us, sehingga untuk memanggil semua

method yang ada didalam class UserController, kita hanya perlu mengetik us. diikuti nama

method yang ingin dipanggil.

Entity class User juga sudah dibuat objeknya dengan nama usr.

Berikut adalah penjelasan method simpan:

usr=us.findUser(kodeTF.getText());

Objek user (usr) digunakan sebagai penampung hasil pencarian user berdasarkan kode

user yang ada di text field yang sedang aktif. Karena sudah digunakan sebagai

penampung hasil, maka harus dibuat objek baru dari Entity Class User, yaitu u untuk

fungsi sebagai pengisi data untuk masing-masing field.

Jika hasil pencarian yang ditampung dalam usr kosong, maka masing-masing field

akan diisi dengan data pada text field yang ada. Lalu data tersebut disimpan.

Jika hasil pencarian tidak kosong (kode user ditemukan), maka maka masing-masing

field akan diisi dengan data pada text field yang ada, namun perintahnya adalah

update.

Berikut adalah penjelasan untuk method hapus:

us.delete(kodeTF.getText());

Memanggil method delete yang ada di class UserController, dengan parameter yang

dikirim adalah kode user yang ada di text field kodeTF.

Jika datanya terhapus, maka akan menampilkan message dialog dengan pesan “Data

telah dihapus”.

catch(Exception ex){

JoptionPane.showMessageDialog(null,“Data tidak bisa dihapus

karena “+ ex.getMessage());

}

Jika ada kesalahan, maka Exception yang akan mengatasinya. Exception di sini sudah

dibuat objeknya, yaitu ex. Lalu akan menampilkan message dialog “Data tidak bisa

dihapus karena” digabung dengan pesan error dari Exception yang ada di objeknya,

yaitu ex.

Berikut adalah penjelasan dari method cari:

usr=us.findUser(kodeTF.getText());

if(usr==null){

JoptionPane.showMessageDialog(null, “Data tidak

ditemukan”);

Page 44: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

44

bersih();

}else{

JoptionPane.showMessageDialog(null, “Data ditemukan”);

tampil();

}

Objek usr menampung hasil pencarian barang berdasarkan kode user yang terdapat

pada textfield kodeTF. Jika pencarian yang ditampung dalam usr kosong, maka akan

menampilkan message dialog “Data tidak ditemukan”. Selain itu, akan tampil message

dialog “Data ditemukan” dan data akan ditampilkan dengan memanggil method

tampil.

Untuk method tampil, semua data akan ditampilkan oleh objek usr ke masing-masing text

field.

Page 45: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

45

Pertemuan 5

Pembuatan Controller dan Form Transaksi Penjualan

1. Pembuatan Controller Transaksi

Langkah-langkah dalam membuat Controller untuk objek Transaksi sebagai berikut:

a. Klik kanan pada package penjualan.control New Java Class Class Name:

TransaksiController Finish.

b. Setelah filenya sudah terbentuk, ubahlah listingnya menjadi seperti di bawah ini:

package penjualan.control;

import penjualan.data.Transaksi;

import java.io.Serializable;

import java.text.DecimalFormat;

import javax.persistence.EntityManager;

import javax.persistence.EntityManagerFactory;

import javax.persistence.Query;

public class TransaksiController implements Serializable{

private EntityManagerFactory emf=null;

public TransaksiController(EntityManagerFactory emf){

this.emf=emf;

}

public EntityManager getEntityManager(){

return emf.createEntityManager();

}

public void save(Transaksi trans) throws Exception{

EntityManager em=getEntityManager();

try{

em.getTransaction().begin();

em.persist(trans);

em.getTransaction().commit();

}catch(Exception ex){}

}

Page 46: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

46

public Transaksi findTransaksi(String kode){

EntityManager em=getEntityManager();

try{

return em.find(Transaksi.class, kode);

}finally{}

}

public String nomor(){

String kode=”TR001”;

EntityManager em=null;

try{

em = getEntityManager();

Query q=em.createQuery(“select count(t.noTrans) from

Transaksi t”);

q.setMaxResults(1);

Long hasil=(Long) q.getSingleResult();

if(q!=null){

DecimalFormat formatnomor = new DecimalFormat

(“TR000”);

kode=formatnomor.format(hasil+1);

}

}finally{}

return kode;

}

}

2. Penjelasan Controller Transaksi

Berikut adalah penjelasan penomoran otomatis:

String kode="TR001";

Variabel kode bertipe data String diberikan nilai awal “TR001”

Query q=em.createQuery("select count(t.noTrans) from Transaksi

t");

Membuat instance (objek) bertipe Query dengan nama q yang berisi bahasa sql yang

akan dieksekusi. "select count(t.noTrans) from Transaksi t" artinya

menghitung jumlah keseluruhan field noTrans dari tabel Transaksi yang diberikan

alias, yaitu t.

Long hasil=(Long) q.getSingleResult();

Membuat variabel dengan nama hasil yang berisi satu hasil query yang diambil.

Tipe hasil query q.getSingleResult(); berupa object.

Long hasil=(Long) q.getSingleResult(); hasil query yang bertipe objek

diubah menjadi bertipe data Long, karena hasil dari query berupa angka, bukan record.

Page 47: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

47

if(q!=null){

DecimalFormat formatnomor = new DecimalFormat("TR000");

kode=formatnomor.format(hasil+1);

}

Jika hasil query-nya tidak kosong, maka dibuat objek formatnomor dengan tipe

DecimalFormat yang berisi format kode “TR000”.

Variabel kode kini berisi formatnomor yang awalnya TR000 digabung dengan

hasil+1. Di mana hasil menampilkan angka yang berupa jumlah keseluruhan dari field

noTrans.

Jika hasil query tidak ada, maka return kode (kirimkan nilai awal kode).

3. Pembuatan Controller Detail Transaksi

Langkah-langkah dalam membuat Controller untuk objek Detail Transaksi sebagai berikut:

a. Klik kanan pada package penjualan.control New Java Class Class Name:

DetailController Finish. b. Setelah filenya sudah terbentuk, ubahlah listingnya menjadi seperti di bawah ini:

package penjualan.control;

import penjualan.data.Detailtransaksi;

import java.io.Serializable;

import javax.persistence.EntityManager;

import javax.persistence.EntityManagerFactory;

public class DetailController implements Serializable{

private EntityManagerFactory emf=null;

public DetailController(EntityManagerFactory emf){

this.emf=emf;

}

public EntityManager getEntityManager(){

return emf.createEntityManager();

}

public void saveDetail(Detailtransaksi detail) throws

Exception{

EntityManager em=getEntityManager();

try{

em.getTransaction().begin();

em.persist(detail);

em.getTransaction().commit();

}catch(Exception ex){}

}

}

Page 48: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

48

4. Pembuatan Form Transaksi Penjualan

a. Klik kanan pada package penjualan.form New JInternalFrame Form. Jika tidak

ada, maka pilih New Other Swing GUI Forms JInternalFrame Form Class

Name: FormTransaksi Finish.

b. Klik kanan pada form Set Layout Absolute Layout.

c. Berikan Title pada form melalui Properties bagian title. Berikan name untuk Form:

Ftransaksi.

d. Buatlah desain form seperti di bawah ini:

e. Klik kanan pada grid Table Contents pilih tab Columns. Buat seperti di bawah ini:

Name: grid

Page 49: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

49

Pilih tab Rows, buat seperti di bawah ini:

f. Setelah desain formnya dibuat, klik tombol Source untuk memberikan listing pada

FormTransaksi.

g. Pada baris ke-17, ubah script menjadi sebagai berikut:

public class FormTransaksi extends javax.swing.JInternalFrame

implements NavigatorFormInt{

h. Penambahan listing di atas akan menimbulkan tanda lampu kuning bertanda seru merah di

sebelah kiri seperti gambar di bawah ini:

i. Klik pada tanda lampu kuning tersebut, kemudian pilih Implement all abstract methods.

Maka otomatis semua metode abstract yang sudah dibuat pada file NavigatorFormInt akan

diimplementasikan di dalam FormTransaksi.

j. Pada baris ke-18, tambahkan script berikut:

Page 50: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

50

Bisa dilihat pada gambar tersebut terdapat error dengan tanda lampu kuning bertanda seru

merah. Letak kesalahan ada pada tulisan yang tercetak miring dan garis bawah merah. Hal

tersebut menandakan, class TransaksiController dan Penjualan belum diimport ke dalam

file FormTransaksi. Oleh karena itu, klik tanda lampu kuning bertanda seru merah

tersebut, lalu pilih Add import for penjualan.Penjualan dan Add import for

penjualan.control.TransaksiController.

Maka otomatis, pada baris ke-13 dan 14 muncul script berikut:

import penjualan.Penjualan;

import penjualan.control.TransaksiController; k. Pada baris ke-22, tambahkan script berikut:

Bisa dilihat pada gambar tersebut terdapat error dengan tanda lampu kuning bertanda seru

merah. Letak kesalahan ada pada tulisan yang tercetak miring dan garis bawah merah. Hal

tersebut menandakan, class Transaksi belum diimport ke dalam file FormTransaksi.

Oleh karena itu, klik tanda lampu kuning tersebut, lalu pilih Add import for

penjualan.data.Transaksi.

Maka otomatis, pada baris ke-15 muncul script berikut:

import penjualan.data.Transaksi;

l. Ketikkan script berikut:

package penjualan.form;

import java.awt.event.KeyEvent;

import penjualan.Penjualan;

import penjualan.control.TransaksiController;

import penjualan.data.Transaksi;

import penjualan.data.Barang;

import penjualan.control.BarangController;

import penjualan.data.Detailtransaksi;

import penjualan.control.DetailController;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

import javax.swing.JoptionPane;

import javax.swing.table.DefaultTableModel;

public class FormTransaksi extends javax.swing.JInternalFrame

implements NavigatorFormInt{

TransaksiController tr = new

TransaksiController(Penjualan.emf);

Transaksi trans = new Transaksi();

BarangController bc=new BarangController(Penjualan.emf);

Barang brg=new Barang();

DetailController dc=new DetailController(Penjualan.emf);

Page 51: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

51

Detailtransaksi dt=new Detailtransaksi();

double total;

DefaultTableModel tbl; //operasional tabel

Object[] obj; //baris table

public String kodeBarang, namaBarang, hargaBarang, qtyBeli,

subtotalBeli;

int brs;

public FormTransaksi() {

initComponents();

tbl=(DefaultTableModel) grid.getModel();

obj=new Object[grid.getRowCount()];

}

public void simpanDetail(){

dt.setNoTrans(noTF.getText());

dt.setKodeBarang(kodeTF.getText());

dt.setHarga(Double.parseDouble(hargaTF.getText()));

dt.setQty(Integer.parseInt(qtyTF.getText()));

dt.setSubtotal(Double.parseDouble(subtotalTF.getText()));

try{

dc.saveDetail(dt);

}catch(Exception e){}

}

public void tampilTable(){

kodeBarang=kodeTF.getText();

namaBarang=namaTF.getText();

hargaBarang=hargaTF.getText();

qtyBeli=qtyTF.getText();

subtotalBeli=subtotalTF.getText();

String [] data={kodeBarang, namaBarang, hargaBarang,

qtyBeli,subtotalBeli};

for(int x=0;x<=4;x++){

tbl.setValueAt(data[x], brs, x);

}

brs++;

}

public void clearTable(){

int row=tbl.getRowCount();

while(row>0){

row--;

tbl.removeRow(row);

}

}

public void penguranganStok(int qty){

brg.setKodeBarang(kodeTF.getText());

Page 52: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

52

brg.setNamaBarang(namaTF.getText());

brg.setHargaBarang(Double.parseDouble(hargaTF.getText()));

brg.setStok(brg.getStok()-qty);

try{

bc.update(brg);

}catch(Exception e){}

}

@Override

public void aktif() {

noTF.setText(tr.nomor());

SimpleDateFormat sdf=new SimpleDateFormat(“yyyy-MM-dd”);

Calendar cal=Calendar.getInstance();

tglTF.setText(sdf.format(cal.getTime()));

total=0;

noTF.setEnabled(false);

tglTF.setEnabled(false);

namaTF.setEnabled(false);

hargaTF.setEnabled(false);

subtotalTF.setEnabled(false);

totalTF.setEnabled(false);

kembaliTF.setEnabled(false);

kodeTF.setEnabled(true);

qtyTF.setEnabled(true);

bayarTF.setEnabled(true);

kodeTF.requestFocus();

brs=0;

}

@Override

public void bersih() {

noTF.setText(“”);

tglTF.setText(“”);

kodeTF.setText(“”);

namaTF.setText(“”);

hargaTF.setText(“0”);

qtyTF.setText(“”);

subtotalTF.setText(“0”);

totalTF.setText(“0”);

bayarTF.setText(“0”);

kembaliTF.setText(“0”);

}

@Override

public void simpan() {

trans=tr.findTransaksi(noTF.getText());

Transaksi trn=new Transaksi();

if(trans==null){

trn.setNoTrans(noTF.getText());

trn.setTanggal(new Date());

Page 53: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

53

trn.setTotal(Double.parseDouble(totalTF.getText()));

try{

tr.save(trn);

}catch(Exception e){}

JoptionPane.showMessageDialog(null, “Data telah

tersimpan”);

}

bersih();

clearTable();

}

m. Klik kanan pada kodeTF Events Key KeyPressed. Lalu ketikkan script berikut: private void kodeTFKeyPressed(java.awt.event.KeyEvent evt) {

if(evt.getKeyCode()==KeyEvent.VK_ENTER){

brg=bc.findBarang(kodeTF.getText());

if(brg==null){

JoptionPane.showMessageDialog(null, “Data tidak

ditemukan”);

kodeTF.setText(“”);

kodeTF.requestFocus();

}else{

namaTF.setText(brg.getNamaBarang());

hargaTF.setText(brg.getHargaBarang().toString());

qtyTF.requestFocus();

}

}

}

n. Klik kanan pada qtyTF Events Key KeyPressed. Lalu ketikkan script berikut: private void qtyTFKeyPressed(java.awt.event.KeyEvent evt) {

if(evt.getKeyCode()==KeyEvent.VK_ENTER){

tbl.addRow(obj);

int qty=Integer.parseInt(qtyTF.getText());

double harga=Double.parseDouble(hargaTF.getText());

long subtotal;

subtotal=(long) (harga*qty);//dijadikan long, agar puluhan

juta pun masih bisa ditampilkan walaupun masuk ke database

dengan tipe data double

subtotalTF.setText(String.valueOf(subtotal));

total=subtotal+total;

totalTF.setText(String.valueOf(total));

simpanDetail();

tampilTable();

penguranganStok(qty);

int j=JoptionPane.showConfirmDialog(null, “Ingin menambah

transaksi?”,”Konfimasi”,JoptionPane.YES_NO_OPTION);

if(j==JoptionPane.YES_OPTION){

Page 54: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

54

kodeTF.setText(“”);

namaTF.setText(“”);

hargaTF.setText(“”);

qtyTF.setText(“”);

kodeTF.requestFocus();

}else{

bayarTF.setText(“”);

bayarTF.requestFocus();

}

}

}

o. Klik kanan pada bayarTF Events Key KeyPressed. Lalu ketikkan script berikut: private void bayarTFKeyPressed(java.awt.event.KeyEvent evt) {

if(evt.getKeyCode()==KeyEvent.VK_ENTER){

total = Double.parseDouble(totalTF.getText());

double bayar = Double.parseDouble(bayarTF.getText());

double kembali;

kembali=bayar-total;

kembaliTF.setText(Double.toString(kembali));

}

}

p. Klik kanan pada desain form transaksi Events InternalFrame

internalFrameActivated. Lalu ketikkan script berikut: private void formInternalFrameActivated

(javax.swing.event.InternalFrameEvent evt) {

noTF.setEnabled(false);

tglTF.setEnabled(false);

kodeTF.setEnabled(false);

namaTF.setEnabled(false);

hargaTF.setEnabled(false);

qtyTF.setEnabled(false);

subtotalTF.setEnabled(false);

totalTF.setEnabled(false);

bayarTF.setEnabled(false);

kembaliTF.setEnabled(false);

bersih();

}

q. Kembali ke desain FormUtama.java, klik menu Transaksi klik kanan pada menu item

Transaksi Penjualan Events Action ActionPerformed. Lalu berikan script

berikut: private void transMNActionPerformed(java.awt.event.ActionEvent

evt) {

FormTransaksi fTransaksi=new FormTransaksi();

showForm(fTransaksi);

deleteBT.setEnabled(false);

}

Page 55: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

55

Pertemuan 6

Pembuatan Laporan dan Form Laporan

1. Pembuatan Laporan

a. Buatlah folder baru pada project penjualan. Klik kanan pada Penjualan New Other

b. Categories: Other File Types: Folder Next

c. Folder Name: report Finish.

d. Buka software iReport

Page 56: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

56

e. File New Pilih Layout: Cherry Launch Report Wizard

f. Report Name: reportBarang

g. Location: C:\penjualan_12061479 \Penjualan\report

Page 57: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

57

h. Next

i. Klik New Database JDBC Connection Next

j. Password: password jika menggunakan Apache2Triad

k. Jika menggunakan Xampp, maka password dikosongkan

Page 58: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

58

l. Klik Test OK.

m. Jika sukses, klik Save

n. Klik Design Query

Page 59: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

59

o. Drag and drop table barang ke kotak abu-abu sebelah kanan OK Next

Page 60: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

60

p. Klik tombol >> untuk memindahkan field Next

q. Klik Next Finish

r. Tampilan desain laporan awal yang terbentuk otomatis:

Page 61: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

61

s. Ubahlah tampilan laporan menjadi seperti dibawah ini:

t. Untuk melihat hasilnya, klik tombol Preview

u. Ulangi langkah-langkah di atas untuk pembuatan Laporan User dan Transaksi

v. Beri nama reportUser dan reportTransaksi

w. Untuk reportUser, field password tidak ditampilkan ke dalam laporan

Page 62: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

62

x. Untuk reportTransaksi, klik pada textfield $F{transaksi_Total}, lalu pada properties

bagian Expression Class: java.lang.Long, agar data dengan digit yang lebih banyak bisa

tampil, walaupun di database bertipe data double. Tambahkan juga Grand Total

y. Menambahkan GrandTotal dengan cara klik kanan pada Variables di sebelah kiri Add

Variable muncul variable 1 klik kanan rename grandTotal pada

properties Calculation Sum

z. Double klik pada transaksi_Total, klik OK. Pilih Label dari palette sebelah kanan, berikan

Text = Grand Total, tarik variabel grandtotal di sebelah kiri ke laporan.

Page 63: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

63

Hasil akhir:

Page 64: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

64

2. Pembuatan Form Laporan

a. Kembali ke Netbeans IDE pada project penjualan. Setelah mendesain laporan, langkah

selanjutnya adalah memasukkan library iReport, diantaranya:

1) Jasperreports-4.0.1.jar

2) Commons-logging-1.1.jar

3) Commons-javaflow-20060411.jar

4) Commons-digester-1.7.jar

5) Commons-collections-3.2.1.jar

6) Commons-beanutils-1.8.2.jar

7) DateChooser

8) Groovy-all-1.7.5

*Catatan: semua library tergantung pada versi iReports

b. Klik kanan pada Libraries Penjualan Add JAR/Folder

c. C:\Program Files\Jaspersoft\iReport-4.0.1\ireport\modules\ext. Pilih 8 library yang sudah

disebutkan di atas.

*Catatan: 8 Library tersebut juga bisa diambil dari folder lib yang diberikan oleh masing-

masing instruktur, lalu masukkan foldernya ke dalam folder project penjualan.

Page 65: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

65

d. Klik Open

e. Buat Frame baru dengan cara mengklik kanan pada package penjualan.form New

JInternalFrame Form Finish.

f. Buatlah desain seperti di bawah ini:

g. Klik form Properties title: Form Laporan name: fLaporan.

h. Buka file BarangController.java, lalu tambahkan script berikut di paling atas:

Page 66: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

66

import java.io.File;

import java.sql.Connection;

import java.util.HashMap;

import net.sf.jasperreports.engine.JasperFillManager;

import net.sf.jasperreports.engine.JasperPrint;

import net.sf.jasperreports.view.JasperViewer;

Kemudian ketikkan script berikut setelah script method nomorOtomatis: public void cetak(){

EntityManager em=null;

try{

em=emf.createEntityManager();

em.getTransaction().begin();

Connection connect=em.unwrap(Connection.class);

File file=new File("");

String namafile = file.getAbsolutePath()+

"\\report\\reportBarang.jasper";

JasperPrint jprint = JasperFillManager.fillReport

(namafile,new HashMap(),connect);

//jika reportnya ingin langsung cetak menggunakan

listing di bawah ini:

//JasperPrintManager.printReport(jprint,false);

//jika reportnya ingin dilihat terlebih dahulu, gunakan

listing di bawah ini:

JasperViewer viewer=new JasperViewer(jprint,false);

viewer.setFitPageZoomRatio();

viewer.setVisible(true);

em.getTransaction().commit();

connect.close();

}catch(Exception e){

e.printStackTrace();

}

}

i. Buka file UserController.java, lalu tambahkan script berikut di paling atas: import java.io.File;

import java.sql.Connection;

import java.util.HashMap;

import net.sf.jasperreports.engine.JasperFillManager;

import net.sf.jasperreports.engine.JasperPrint;

import net.sf.jasperreports.view.JasperViewer;

Kemudian ketikkan script berikut setelah script method findUser: public void cetak(){

EntityManager em=null;

try{

em=emf.createEntityManager();

em.getTransaction().begin();

Connection connect=em.unwrap(Connection.class);

Page 67: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

67

File file=new File("");

String namafile = file.getAbsolutePath()+

"\\report\\reportUser.jasper";

JasperPrint jprint = JasperFillManager.fillReport

(namafile,new HashMap(),connect);

//jika reportnya ingin langsung cetak menggunakan

listing di bawah ini:

//JasperPrintManager.printReport(jprint,false);

//jika reportnya ingin dilihat terlebih dahulu, gunakan

listing di bawah ini:

JasperViewer viewer=new JasperViewer(jprint,false);

viewer.setFitPageZoomRatio();

viewer.setVisible(true);

em.getTransaction().commit();

connect.close();

}catch(Exception e){

e.printStackTrace();

}

}

j. Buka file TransaksiController.java, lalu tambahkan script berikut di paling atas: import java.io.File;

import java.sql.Connection;

import java.util.HashMap;

import net.sf.jasperreports.engine.JasperFillManager;

import net.sf.jasperreports.engine.JasperPrint;

import net.sf.jasperreports.view.JasperViewer;

Kemudian ketikkan script berikut setelah script method nomor: public void cetak(){

EntityManager em=null;

try{

em=emf.createEntityManager();

em.getTransaction().begin();

Connection connect=em.unwrap(Connection.class);

File file=new File("");

String namafile = file.getAbsolutePath()+

"\\report\\reportTransaksi.jasper";

JasperPrint jprint = JasperFillManager.fillReport

(namafile,new HashMap(),connect);

//jika reportnya ingin langsung cetak menggunakan

listing di bawah ini:

//JasperPrintManager.printReport(jprint,false);

//jika reportnya ingin dilihat terlebih dahulu, gunakan

listing di bawah ini:

JasperViewer viewer=new JasperViewer(jprint,false);

viewer.setFitPageZoomRatio();

viewer.setVisible(true);

em.getTransaction().commit();

Page 68: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

68

connect.close();

}catch(Exception e){

e.printStackTrace();

}

}

k. Kemabli ke desain FormLaporan.java, ketikkan scriptberikut untuk tiap-tiap tombol: package penjualan.form;

import penjualan.Penjualan;

import penjualan.control.BarangController;

import penjualan.control.UserController;

import penjualan.control.TransaksiController;

public class FormLaporan extends javax.swing.JInternalFrame{

BarangController bc=new BarangController(Penjualan.emf);

UserController uc=new UserController(Penjualan.emf);

TransaksiController tc = new TransaksiController

(Penjualan.emf);

private void barangBTActionPerformed

(java.awt.event.ActionEvent evt) {

bc.cetak();

}

private void userBTActionPerformed

(java.awt.event.ActionEvent evt) {

uc.cetak();

}

private void transaksiBTActionPerformed

(java.awt.event.ActionEvent evt) {

tc.cetak();

}

}

l. Kembali ke desain FormUtama.java, klik menu Laporan klik kanan pada menu item

Form Laporan Events Action ActionPerformed. Lalu ketikkan script berikut: private void fLaporanMNActionPerformed

(java.awt.event.ActionEvent evt) {

FormLaporan fLaporan=new FormLaporan();

showForm(fLaporan);

newBT.setEnabled(false);

saveBT.setEnabled(false);

deleteBT.setEnabled(false);

}

m. Kembali ke desain FormUtama.java, klik kanan pada menu Log Out Events Menu

menuSelected. Lalu ketikkan script berikut:

Page 69: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

69

private void logoutMNMenuSelected(javax.swing.event.MenuEvent

evt) {

this.dispose();

FormLogIn fLogIn=new FormLogIn();

fLogIn.setLocationRelativeTo(null);

fLogIn.setVisible(true);

}

Page 70: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

70

Pertemuan 7

Pembuatan Form Log In

1. Pembuatan Form Log In

a. Buatlah FormLogIn dengan cara klik kanan pada package penjualan.form New

JFrame Form.

b. Klik kanan pada form Set Layout Absolute Layout

c. Ketikkan script berikut: package penjualan.form;

import java.sql.*;

import penjualan.Penjualan;

import javax.persistence.EntityManager;

import javax.swing.JOptionPane;

public class FormLogIn extends javax.swing.JFrame {

/** Creates new form FormLogIn */

public FormLogIn() {

initComponents();

}

Page 71: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

71

private void logInBTActionPerformed(java.awt.event.ActionEvent

evt) {

EntityManager em=null;

try{

em=Penjualan.emf.createEntityManager();

em.getTransaction().begin();

Connection connect=em.unwrap(Connection.class);

Statement st = (Statement) connect.createStatement();

ResultSet rs = st.executeQuery("select * from User where

KodeUser='"+kodeTF.getText().trim()+"' and

Password='"+passwordTF.getText().trim()+"'");

if(rs.next()){

String nama=rs.getString("NamaUser");

JOptionPane.showMessageDialog(this, "Selamat datang,

"+nama+"","Welcome",JOptionPane.INFORMATION_MESSAGE);

this.dispose();

FormUtama fUtama=new FormUtama();

fUtama.setLocationRelativeTo(null);

fUtama.setVisible(true);

}else{

JOptionPane.showMessageDialog(this, "User tidak

ditemukan","Informasi",JOptionPane.INFORMATION_MESSAGE);

kodeTF.requestFocus();

}

}catch(Exception e){

System.out.println("Koneksi Gagal"+ e.toString());

}

}

Klik kanan pada form Events Window windowActivated. Lalu ketikkan script

berikut: private void formWindowActivated(java.awt.event.WindowEvent evt)

{

kodeTF.setText("");

passwordTF.setText("");

kodeTF.requestFocus();

}

2. Penjelasan

Berikut adalah penjelasan untuk tombol logInBT:

Untuk form log in, tidak dibuat controllernya, maka digunakanlah class Connection

secara langsung untuk terhubung ke database. Oleh karena itu dibuatlah objek connect

dengan tipe class Connection.

Untuk membuat query, objek connect harus membuat Statement terlebih dahulu. Oleh

karena itu dibuatlah objek st bertipe class Statement.

Untuk hasil eksekusi query, dibuat objek rs bertipe class ResultSet, yang berisi

perintah pengeksekuisan statement ("select * from User where

Page 72: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

72

KodeUser='"+kodeTF.getText().trim()+"' and

Password='"+passwordTF.getText().trim()+"'").

Script sql tersebut digunakan untuk mencari KodeUser dan Password sesuai yang

diinput di textfield dari tabel User. if(rs.next()){

String nama=rs.getString("NamaUser");

JOptionPane.showMessageDialog(this, "Selamat datang,

"+nama+"","Welcome",JOptionPane.INFORMATION_MESSAGE);

this.dispose();

Jika datanya ada, maka ambil nama user dari kode user yang ditemukan tersebut, lalu

nilainya ditampung dalam variabel nama dengan tipe String. Lalu tampil message

dialog berupa ucapan selamat dating dan nama user. Setelah itu form log in ditutup

otomatis, lalu tampil form menu utama.

Jika user tidak ditemukan, maka akan tampil message dialog “User tidak ditemukan”.

Jika ada error, maka Exception yang akan meng-handle. Namun, ditampilkan bukan

dalambentuk messga dialog, tapi pesan akan tampil pada panel output pada Netbeans

IDE.

Page 73: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

73

Pertemuan 8

UTS

Page 74: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

74

Pertemuan 9 - 14

UAS

Page 75: Modul Pemrograman Berorientasi Objek II [D.III]...barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang, namun jika data barang ditemukan, maka akan tampil

Modul Pemrograman Berorientasi Objek II [D.III]

75

DAFTAR PUSTAKA

Gamaliel, Fritz. 2013. Membuat Program Akuntansi Manufaktur dengan Java & MySQL.

Jakarta: PT. Elex Media Komputindo.

Gata, Windu, & Gata, Grace. 2013. Sukses Membangun Aplikasi Penjualan dengan Java.

Jakarta: PT. Elex Media Komputindo.

Supardi, Yuniar. 2009. Belajar Semua Edisi Java2 untuk Segala Tingkat. Jakarta: PT Elex

Media Komputindo.

Wahana Komputer. 2011. Paling Dicari! Java Source Code. Yogyakarta: Penerbit Andi.