repository.bsi.ac.id · Web viewBAB IV. RANCANGAN SISTEM DAN PROGRAM USULAN. Analisa Kebutuhan...
Transcript of repository.bsi.ac.id · Web viewBAB IV. RANCANGAN SISTEM DAN PROGRAM USULAN. Analisa Kebutuhan...
BAB IV
RANCANGAN SISTEM DAN PROGRAM USULAN
4.1. Analisa Kebutuhan Software
1. Tahap Analisis
Pada Sistem Informasi Persediaan Obat berbasis java dimana terdiri dari
user dan admin,dimana user dapat meginput data user baru ataupun mengedit data
yang sudah ada sedangkan admin dapat mengakses secara keseluruhan mulai dari
proses sampai laporan. Berikut ini spesifikasi kebutuhan (system requirement)
dari sistem informasi java.
Halaman Fornt-Page :
A1. User dapat mengakses data user.
A2. User dapat mengakses master resep.
A3. User dapat mengakses transaksi resep.
Halaman Administrasi :
B1. Administrasi dapat menginput data obat.
B2. Administrai dapat menginput distributor.
B3. Administrasi dapat menginput resep.
B4. Aministrasi dapat menginput transaksi
B5. Administrasi dapat menginput report.
26
27
1. Use Case Diagram Halaman User
Gambar IV.1. Use Case Diagram Data User
uc Use Case Model User Apotek...
User
Form User
Master Resep
Transaksi Resep
28
Tabel IV.1.Deskripsi Use Case Diagram Ruang Data user
Use Case Name Use Case Diagram Form User
Requirements A1,2,A3
Goal user telah login
Pre- Conditions User mengetahui cara penggunaan sistem komputerisasi
Faired end condition User dapat mengisi form user
Primary Actor User
Main Flow / Basic Path 1. 1. User dapat membuat data user2. 2. User dapat mengakses master resep3. 3. User dapat mengakses transaksi
resep
Invariant -
29
2. Use Case Diagram Halaman Admin
Gambar IV.2. Use Case Diagram Admin
uc Use Case Diagram Admin
Login
Admin
Obat
Distributor
Resep
Transaksi
Form Produk
Form Distributor
Report
Laporan Obat
Data Distributor
Data User
Laporan Resep
Laporan Pembelian
Laporan Penjualan
Master resep
Transaksi Resep
Pembelian
Master Pembelian
Penjualan
Master Penjualan
«include»
«include»
«include»
«include»
«include»
«include»
«include»
«include»
«include»
«include»
«include»
«include»
«include»
«include»
30
Tabel IV.2.Deskripsi Use Case Diagram Admin
Use Case Name Use Case Diagram Admin
Requirements B1,B2,B3,B4,B5,B6
Goal Admin dapat melakukan mengakses pilihan di dalam menu
Pre- Conditions Admin Telah Login
Faired end condition -
Primary Actor Admin
Main Flow / Basic Path 1. Admin dapat mengakses obat.2. Admin dapat mengakses distributor.3. Admin dapat mengakses resep.4. Admin dapat mengakses transaksi.5. Admin dapat mengakses report.
Invariant -
31
1. Package Diagram Halaman User
pkg Package Diagram Halaman User
Mengakses Data User
Mengakses Master Resep
Mengakses Transaksi Resep
Gambar IV.3. Package Diagram Use Case Halaman User
2. Use Case Diagram Mengakses Data User
32
uc Use Case Diagram Form user
User
Form User
Input data user
Tampil Data User
Save
Refresh
Delete
Update
«extend»
«include»
«extend»
«include»
«include»
Gambar IV.4. Detail Use Case Diagram Mengakses Data User
Deskripsi Use case Mengakses Data User
33
Tabel IV.3 Deskripsi use case Diagram Data User
Use Case Name Use Case Diagram Form User
Requirements A1
Goal user dapat membuat data User
Pre- Conditions User mengetahui cara penggunaan sistem komputerisasi
Faired end condition User dapat mengisi form user
Primary Actor User
Main Flow / Basic Path 4. 1. User dapat mnginput id5. 2. User dapat menginput nama6. 3. User dapat menginput alamat7. 4. User dapat menginput telepon8. 5. User dapat menginput status9. 6. User dapat menginput username10.7. User dapat menginput akses11.8. User dapat menginput password12.
Invariant -
3. Use Case Diagram Mengakses Master Resep
34
uc Use Case Diagram Master Res...
User
Master Resep
Tampil Form Resep
Tampil Detail Resep
«include»
«include»
Gambar IV.5. Detail Use Case Diagram Mengakses Master Resep
Deskripsi Use case Mengakses Master Resep
35
Tabel IV.4. Deskripsi use case Diagram Master Resep.
Use Case Name Use Case Diagram Master Resep
Requirements A2
Goal User dapat membuka master resep
Pre- Conditions User mengetahui cara penggunaan sistem komputerisasi
Faired end condition User dapat melihat tampilan detail resep
Primary Actor User
Main Flow / Basic Path 1. User dapat memilih kategori pencarian.
2. User dapat mencari id resep.3. User dapat mencari nama karyawan.4. User dapat mencari alamat
karyawan.5. User dapat mencari nama dokter.6. User dapat mencari tanggal resep.
Invariant -
4. Use Case Diagram Mengakses Transaksi Resep
36
uc Use Case Diagram Transaksi Resep
User
Transaksi Resep
Input Form transaksi resep
Simpan
Tampil Transaksi Resep
«include»
«include»
«Extend»
Gambar IV.6. Detail Use Case Diagram Transaksi Resep
Deskripsi Use case Mengakses Transaksi Resep
Tabel IV.5.
37
Deskripsi Use Case Diagram Transaksi ResepUse Case Name Use Case Diagram Transaksi Resep
Requirements A3
Goal User dapat membuka transaksi resep
Pre- Conditions User mengetahui cara penggunaan sistem komputerisasi
Faired end condition User dapat melihat tampilan transaksi resep
Primary Actor UserMain Flow / Basic Path 1. User dapat menginput form
transaksi2. User dapat menyimpan transaksi
resep3. User dapat menampilkan hasil
penginputan hasil resep
Invariant -
5. Package Diagram Halaman Admin
pkg Package Diagram Halaman...
Menginput Data Obat
Menginput Distributor
Menginput Resep
Menginput Transaksi
Menginput Report
38
Gambar IV.7. Package Diagram Use Case Halaman Admin
6. Use Case Diagram Menginput Data Obat
39
uc Use Case Diagram Obat
Admin
Form ProdukInput Produk
Sav e
Update
Utility
Delete
Refresh
Tampil
Kemasan
Jenis
SAVE
Update
Delete
Tampil
Sav e
Update
Delete
Tampil
«extend»
«include»
«include»
«extend»
«include»
«include»
«extend»
«include»
«include»
«include»
«include»
«include»
«include»
«extend»
«extend»
«extend»
«Extend»
Gambar IV.8. Detail Use Case Diagram Menginput Data Obat
Deskripsi Use case Menginput Data Obat
Tabel IV.6. Deskripsi Use Case Diagram Menginput Data Obat
40
Use Case Name Use Case Diagram Obat
Requirements B1
Goal Admin dapat melakukan pengimputan obat
Pre- Conditions Admin Telah Login
Faired end condition -
Primary Actor Admin
Main Flow / Basic Path 1. Admin dapat menginput obat2. Admin dapat menyimpan3. Admin dapat mengupdate4. Admin dapat utility obat5. Admin dapat menghapus data obat6. Admin dapat mengrefresh data obat 7. Admin dapat memilih katagori
pencarian8. Admin dapat menginput jumlah stok9. Admin dapat melihat tampilan hasil
form obat
Invariant -
7. Use Case Diagram Menginput Distributor
41
uc Use Case Model Diagram distribut...
Admin
Form Distributor
Input Distributor
Sav e
Update
Delete
Refresh
Tampil
Search
«extend»
«include»
«extend»
«include»
«include»
Gambar IV.9. Detail Use Case Diagram Distributor
Deskripsi Use case Menginput Distributor
42
Tabel IV.7. Deskripsi Use Case Diagram Distributor
Use Case Name Use Case Diagram Distributor
Requirements B2
Goal Admin dapat melakukan pengimputan data distributor
Pre- Conditions Admin Telah LoginFaired end condition -
Primary Actor Admin
Main Flow / Basic Path 1. Admin dapat menginput data distributor
2. Admin dapat menyimpan data distributor
3. Admin dapat mengupdate data distributor
4. Admin dapat menghapus data distributor
6. Admin dapat mengrefresh data distributor
7. Admin dapat memilih katagori8. Admin dapat melihat tampilan hasil
distributor
Invariant -
8. Use Case Diagram Menginput Resep
43
uc Use Case Diadram Admin Resep
Admin
Resep
Master Resep
Transaksi Resep
Tampil
Tampil
Input transaksi Resep
Simpan
«include»
«include»
«include»
«include»
«include»
«extend»
Gambar IV.10 Detail Use Case Diagram Resep
Deskripsi Use case Menginput Resep
Tabel IV.8.
44
Deskripsi Use Case Diagram Admin ResepUse Case Name Use Case Diagram Admin Resep
Requirements B3
Goal Admin dapat membuka master resep
Pre- Conditions Admin mengetahui cara penggunaan sistem komputerisasi
Faired end condition Admin dapat melihat tampilan master dan transaksi resep
Primary Actor Admin
Main Flow / Basic Path 1. Admin dapat memilih kategori pencarian.
2. Admin dapat mencari id resep.3. Admin dapat mencari nama
karyawan.4. Admin dapat mencari alamat
karyawan.5. Admin dapat mencari nama dokter.6. Admin dapat mencari tanggal resep.
Invariant -
9. Use Case Diagram Menginput Transaksi
45
uc Use Case Diagram Admin Transaksi
Admin
Pembelian
Transaksi
Master Pembelian
Penjualan
Master Penjualan
Pilih Katagori
Tampil Master Transaksi Pembelian
Input
Simpan
Tampil
Input
Input
Simpan Tampil
Simpan
Tampil
«include»
«Extend»
«include»
«include»
«extend»
«include»
«include»
«include»
«include»
«include»
«extend»
«include»
«include»
«include»
«extend»
Gambar IV.11. Detail Use Case Diagram Admin Transaksi
Deskripsi Use case Menginput Transaksi
Tabel IV.9.
46
Deskripsi Use Case Diagram Admin TransaksiUse Case Name Use Case Diagram Admin Transaksi
Requirements B4Goal Admin dapat mengakses transaksi
Pre- Conditions Admin mengetahui cara penggunaan sistem komputerisasi
Faired end condition Admin dapat melihat tampilan master dan transaksi resep
Primary Actor Admin
Main Flow / Basic Path 1. Admin dapat menginput pembelian,menyimpan dan menampilkan penginputan hasil pembelian.
2. Admin dapat menginput master penjualan, menyimpan dan menampilkan master penginputan hasil penjualan.
3. Admin dapat menginput master pembelian, menyimpan dan menampilkan master penginputan hasil pembelian.
4. Admin dapat menginput penjualan, menyimpan dan menampilkan penginputan hasil penjualan.
Invariant -
10. Use Case Diagram Menginput Report
47
uc Use Case Diagram report
Admin
Laporan Obat
Data Distributor
Data User
Laporan Resep
Laporan Pembelian
Laporan Penjualan
Tampil laporan data Obat
Tampil Data Distributor
Tampil Laporan Data User
Tampil Laporan Data Resep Dokter
Filter Pembelian
Filter Penjualan Tampil Laporan transaksi Penjualan
Tampil Laporan Pembelian
«include»
«include»
«Extend»
«Extend»
«include»
«include»
«include»
«include»
Gambar IV.12. Detail Use Case Diagram Report
Deskripsi Use case Mengakses Report
Tabel IV.10.Deskripsi Use Case Diagram Report
48
Use Case Name Use Case Diagram Report
Requirements B5
Goal Admin dapat mengakses report
Pre- Conditions Admin dapat mampilan master dan transaksi resep
Faired end condition Admin dapat melihat tampilan master dan transaksi resep
Primary Actor Admin
Main Flow / Basic Path 1. Admin dapat mengakses laporan obat.
2. Admin dapat mengakses laporan resep.
3. Admin dapat mengakses data distributor.
4. Admin dapat mengakses data user.5. Admin dapat mengakses laporan
pembelian.6. Admin dapat mengakses laporan
penjualan.
Invariant -
C. Activity Diagram
49
1. Activity Diagram Obat
act Activ ity Diagram Input Obat
Update
Utility
Tampil Form Obat
Simpan
Input Obat
Delete
Kemasan
Jenis
Gambar IV.13. Activity Diagram Obat
2. Activity Diagram Distributor
50
act Activ ity Diagram Distributor
Input Distributor Simpan
Update
Delete
SearchTampil FormDistributor
Pilih Pilihan
Gambar IV.14. Activity Diagram Distributor
3. Activity Diagram Resep
Gambar IV.15. Activity Diagram Resep
4. Activity Diagram Transaksi
act Activ ity Diagram Resep
Pilih Menu Master Resep
Trasnsaksi Resep
Refresh
Search
Tampil Form MasterResep
Input Transaksi Resep
Simpan Tampil FormTransaksi Rese
51
act Activ ity Diagram Transaksi
Pilih MenuMaster Penjualan
Penjualan
Master Pembelian
Pembelian
Refresh Pilih KategoriPencarian
Tampil Form MasterPenjualan
input SimpanTampil Form Transaksi
Penj ualan
Refresh Pilih KategoriPencarian
Tampil Form MasterTrasnsaksi Pembelian
Input SimpanTampil Form
TransaksiPembelian
Gambar IV.16. Activity Diagram Transaksi
5. Activity Diagram Report
52
act Activ ity Diagram Report
Pilih Menu
Batal
Laporan Data Obat
Laporan Resep
Laporan Distributor Tampil FormLaporan Data Obat
Tampil FormLaporan Resep
Tampil Form Distributor
Gambar IV.17. Activity Diagram Report
4.2. Desain
53
Pada bagian ini, penulis akan menjelaskan beberapa desain yaitu sebagai
berikut :
4.2.1. Database
Database merupakan suatu gambaran mengenai struktur program, pada
tahap ini penulis akan menggambarkan Entity Relationship Diagram berikut
dengan spesifikasi file dan tabel-tabel yang terdapat di progam yang penulis buat.
1. Entity Relationship Diagram
Gambar IV.18. Entity Relationship Diagram Persedian Obat
2. Logical Record Structure
54
Gambar IV.19. Logical Record Structure Persedian Obat
3. Spesifikasi File
a. Spesifikasi File Tabel Detail Pembelian
55
Nama Database : apotikNama File : Detail PembelianAkronim : detailpembelianTipe File : File MasterAkses File : RandomPanjang Record : 36 ByteKunci Field : iddetailpembelian
Tabel IV.11Spesifikasi File Tabel Detail Pembelian
No Elemen Data Nama Field Type Size Keterangan1 Iddetailpembelian iddetailpembelian Integer 10 Primary key2 Idpembelian idpembelian Varchar 163 Kodeobat kodeobat Varchar 104 Jumlah jumlah Integer 105 Hargabeli hargabeli Double -6 Subtotal subtotal Double -
b. Spesifikasi File Tabel Detail Penjualan
Nama Database : apotikNama File : Detail Penjualan Akronim : detail penjualanTipe File : File MasterAkses File : RandomPanjang Record : 47 ByteKunci Field : iddetailpenjualan
Tabel IV.12Spesifikasi File Tabel Detail Penjualan
No Elemen Data Nama Field Type Size Keterangan1 Iddetailpenjiualan iddetailpenjualan Integer 11 Primary key2 Idpenjualan idpenjualan Varchar 163 Kodeobat kodeobat Varchar 104 Hargajual hargajual Double -5 Jumlah jumlah Integer 106 Subtotal subtotal Double -
c. Spesifikasi File Tabel Detail Resep
Nama Database : apotik
56
Nama File : Detail ResepAkronim : detailresepTipe File : File MasterAkses File : RandomPanjang Record : 97 ByteKunci Field : iddetailresep
Tabel IV.13Spesifikasi File Tabel Detail Resep
No Elemen Data Nama Field Type Size Keterangan1 Iddetailresep iddetailresep Integer 11 Primary Key2 Idresep idresep Varchar 163 Kodeobat kodeobat Varchar 104 Namaobat namaobat Varchar 505 Hargajual hargajual Double -6 Jumlah jumlah Integer 107 Total total Double -
d. Spesifikasi File Tabel Distributor
Nama Database : apotikNama File : DistributorAkronim : DistributorTipe File : File MasterAkses File : RandomPanjang Record : 280 ByteKunci Field : iddistributor
Tabel IV.14Spesifikasi File Tabel Distributor
No Elemen Data Nama Field Type Size Keterangan1 Iddistributor iddistributor Integer 10 Primary key2 Nama nama Varchar 1003 Alamat alamat Varchar 1504 Telepon telepon Varchar 20
e. Spesifikasi File Tabel Jenis
57
Nama Database : apotikNama File : JenisAkronim : jenisTipe File : File MasterAkses File : RandomPanjang Record : 111 ByteKunci Field : idjenis
Tabel IV.15Spesifikasi File Tabel Jenis
No Elemen Data Nama Field Type Size Keterangan1 Idjenis idjenis Integer 11 Primary key2 Nama nama Varchar 100
f. Spesifikasi File Tabel Kasir
Nama Database : apotikNama File : KasirAkronim :kasirTipe File : File MasterAkses File : RandomPanjang Record : 343 ByteKunci Field : idkasir
Tabel IV.16Spesifikasi File Tabel Kasir
No Elemen Data Nama Field Type Size Keterangan1 Idkasir idkasir Integer 11 Primary key2 Nama nama Varchar 1003 Alamat alamat Varchar 1504 Telepon telepon Varchar 205 Status status Varchar 126 Username username Varchar 207 Password password Varchar 208 Akses akses Varchar 10
g. Spesifikasi File Tabel Kemasan
58
Nama Database : apotik
Nama File : Kemasan
Akronim : kemasan
Tipe File : File Master
Akses File : Random
Panjang Record : 111 Byte
Kunci Field : idkemasan
Tabel IV.17Spesifikasi File Tabel Kemasan
No Elemen Data Nama Field Type Size Keterangan1 Idkemasan idkemasan Integer 11 Primary key2 Nama nama Varchar 100
h. Spesifikasi File Tabel Obat
Nama Database : dbassetNama File : ObatAkronim : obatTipe File : File MasterAkses File : RandomPanjang Record : 320 ByteKunci Field : kodeobat
Tabel IV.18Spesifikasi File Tabel Obat
59
No Elemen Data Nama Field Type Size Keterangan1 Kodeobat kodeobat Varchar 10 Primary key2 Nama nama Varchar 1003 Jenis jenis Varchar 254 Kemasan kemasan Varchar 255 Indikasi indikasi Varchar 1506 Hargapokok hargapokok Double -7 Hargajual hargajual Double -8 Jumlahstok jumlahstok Integer 10
i. Spesifikasi File Tabel Pembelian
Nama Database : apotikNama File : PembelianAkronim : pembelianTipe File : File MasterAkses File : RandomPanjang Record : 52 ByteKunci Field : idpembelian
Tabel IV.19Spesifikasi File Tabel Pembelian
No Elemen Data Nama Field Type Size Keterangan1 Idpembelian idpembelian Varchar 16 Primary key2 Iddistributor iddistributor Integer 113 Jenispembelian jenispembelian Varchar 254 Tglpembelian tglpembelian Date -5 Total total Double -
j. Spesifikasi File Tabel Penjualan
60
Nama Database : apotikNama File : PenjualanAkronim : penjualanTipe File : File TransaksiAkses File : RandomPanjang Record : 20 ByteKunci Field : idpenjualan
Tabel IV.20Spesifikasi File Tabel Penjualan
No Elemen Data Nama Field Type Size Keterangan1 Idpenjualan idpenjualan Varchar 10 Primary Key2 Idkasir idkasir Integer 103 Tglpenjualan tglpenjualan Date -4 Total total Double -
k. Spesifikasi File Tabel Resep
Nama Database : apotikNama File : Tabel ResepAkronim : resepTipe File : File TransaksiAkses File : RandomPanjang Record : 527 ByteKunci Field : idresep
Tabel IV.21Spesifikasi File Tabel Resep
No Elemen Data Nama Field Type Size Keterangan1 Idresep idresep Varchar 16 Primary Key2 Idkasir idkasir Integer 113 Namapasien namapasien Varchar 1004 Alamatpasien alamatpasien Varchar 1505 Namadokter namadokter Varchar 1006 Alamatpraktek alamatpraktek Varchar 1507 Tglresep tglresep Date -8 Total total Double -
2.3 Software Architecture
61
A. Class Diagram
class Class Diagram
obat
- hargajual: double- hargapokok: double- indikasi: var- jenis: var- jumlhastok: int- kemasan: var- kodeobat: var- nama: var
+ gethargajual() : double+ gethargapokok() : var+ getindikasi() : var+ getjenis() : var+ getjumlahstok() : int+ getkemasa() : var+ getkodeobat() : var+ getnama() : var+ sethargajual() : var+ sethargapokok() : var+ setindikasi() : var+ setjenis() : var+ setjumlahstok() : int+ setkemasan() : var+ setkodeobat() : var+ setnama() : var
detail Pembelian
- hargabeli: double- iddetailpembelian: int- idpembelian: var- jumlah: int- kodeobat: var- subtotal: double
+ gethargabeli() : double+ getiddetailpembelian() : int+ getidpembelian() : var+ getjumlah() : int+ getkodeobat() : var+ getsubtotal() : double+ sethargabeli() : double+ setiddetailpembelian() : int+ setidpembelian() : int+ setjumlah() : int+ setkodeobat() : var+ setsubtotal() : double
detailpenjualan
- hargajual: double- iddetailpembelian: var- idpenjualan: var- jumlah: int- kodeobat: var- subtotal: double
+ gethargajual() : double+ getiddetailpembelian() : var+ getjumlah() : var+ getkodeobat() : var+ getsubtotal() : double+ sethargajual() : double+ setiddetailpenjualan() : var+ setidpenjualan() : var+ setjumlah() : int+ setkodeobat() : var+ setsubtotal() : double
detailresep
- hargajual: double- iddetail resep: int- idresep: var- jumlah: int- kodeobat: var- namaobat: var- total: double
+ gethargajual() : double+ getiddetai lresepint() : void+ getidresep() : var+ getjumlah() : int+ getkodeobat() : var+ getnamaobat() : var+ gettotal() : double+ sethargajual() : double+ setiddetailresep() : int+ setidresep() : var+ setjumlah() : var+ setkodeobat() : var+ setnamaobat() : var+ settotal() : double
distributor
- alamat: var- iddistributor: int- nama: var- telepon: var
+ getalamat() : var+ getiddistributor() : int+ getnama() : var+ gettelepon() : var+ setalamat() : var+ setiddistributor() : int+ setnama() : var+ settelepon() : var
jenis
- idjenis: int- nama: var
+ getidjenis() : int+ getnama() : var+ setidjenis() : int+ setnama() : var
kasir
- alamat: var- askes: var- idkasir: int- nama: var- password: var- status: var- telepon: var- username: var
+ getalamat() : var+ getaskes() : var+ getidkasir() : int+ getnama() : var+ getpassword() : var+ getstatus() : var+ gettelepon() : var+ getusername() : var+ setalamat() : var+ setaskes() : var+ setidkasir() : int+ setnama() : var+ setpassword() : var+ setstatus() : var+ settelepon() : var+ setusername() : var
kemasan
- idkemasan: int- nama: var
+ getidkemasan() : int+ getnama() : var+ setidkemasan() : int+ setnama() : varpembelian
+ iddistributor: int- idpembelian: var- jenispembelian: var- tglpembelian: date- total: double
+ getiddistributor() : int+ getidpembelian() : var+ getjenispembelian() : var+ gettglpembelian() : var+ gettotal() : double+ setiddistributor() : int+ setidpembelian() : var+ setjenispembelian() : var+ settglpembelian() : var+ settotal() : double
penjualan
- idkasir: int- idpenjualan: var- tglpenjualan: date- total: double
+ getidkasir() : int+ getidpenjualan() : var+ gettglpenjualan() : date+ gettotal() : double+ setidkasir() : int+ setidpenjualan() : var+ settotal() : doble
resep
- alamatdokter: var- alamatpasien: var- alamatpraktek: var- idkasir: int- idresep: var- namadokter: var- namapasien: var- tglresep: date- total: double
+ getalamatdokter() : var+ getalamatpasien() : var+ getalamatpraktek() : var+ getidkasir() : int+ getidresep() : var+ getnamadokter() : var+ getnamapasien() : var+ getresep() : void+ gettglresep() : date+ gettotal() : double+ idresep() : var+ setalamatdokter() : var+ setalamatpasien() : var+ setalamatpraktek() : var+ setidkasirint() : void+ setnamadokter() : var+ setnamapasien() : var+ settglresep() : date+ settotal() : double
1 input m
1 masuk 1
1 melakukan m
1 masuk 1
1 input 1
1 memiliki 1
1 mempunyai m
1 dikirim 1
1 masuk 1
Gambar. IV.20. Class Diagram HCD(Human Capital Development)
B. Sequence Diagram
62
1. Sequence Diagram Halaman User
a. Sequence Diagram Master Resep
Gambar. IV.21. Sequence Diagram Master Resep
2.. Sequence Diagram Halaman Admin
sd resepp
User Master Resep Pilih Pencarian form resep
Pilih Menu()
setidresep (var)
getidresep : ()
cari()
setnamapasien(var)
getnamapasien : namapasien()
cari()
setalamatpasien (var)
getalamatpasien : alamatpasien()
cari()
setnamadokter(var)
getnamadokter()
cari()
setalamatpraktek (var)
getalamatpraktek()
cari()
settglresep(date)
gettglresep()
cari()
settotal(double)
gettotal()cari()
63
a. Sequence Diagram User
Gambar. IV.22.Sequence Diagram User
b. Sequence Diagram Obat
sd Sequence Diagram form user baru
Admin Form User Input data User baru
User Baru
Pilih Menu()
setnama(var)
getnama()
simpan()
setalamat(var)
getalamat()
update()
settelepon(var)
gettelepon()
delete()
setstatus(var)
getstatus()
username(var)
refresh()
getusername()
setpassword(var)
getpassword()
cari()
setakses(var)
getakses()
64
sd Sequence Diagram obat
Admin Obat Input Tabel Obat
Pilih Menu()
setkodeobat(var)
simpan()
getkodeobat()
update()
setjenis(var)
getjenis()
setkemasan(var)
getkemasan()
Gambar. IV.23. Sequence Diagram Obat
c. Sequence Diagram Distributor
65
sd Sequence Diagram distributor
Admin Distributor Input Distributor Baru
Tampil Tabel Distributor
Pilih Menu()
setnama(var)
getnama()
simpan()
setalamat(var)
update()
getalamat()
settelepon(var)
delete()
gettelepon()
refresh()
cari()
Gambar. IV.24. Sequence Diagram Distributor
d. Sequence Diagram Transaksi Pembelian
66
sd Sequence Diagram Transaksi Pembelian
Admin Pembelian Input Transaksi Pembelian
Data Pembelian
Pilih Menu Transaksi()
setjumlah(var)
getjumlah()
setiddistributor(int)
getiddistributor()
setjenispembelian(var)
getjenispembelian()
setkodeobat(var)
setnama0bat(var)
getnamaobat()
simpan()
Gambar. IV.25. Sequence Diagram Transaksi Pembelian
e. Sequence Diagram Transaksi Master Pembelian
67
sd Sequence Diagram Master Pembeli...
Admin Transaksi Pembelian
Kategori Pencarian Form Pembelian
Pilih Menu Transaksi()
setiddistributor(var)
getiddistributor()
setidpembelian(set)
getidpembelian()
setijenispembelian(var)
getjenispembelian()
cari()
Gambar. IV.26. Sequence Diagram Transaksi Master Pembelian
f. Sequence Diagram Transaksi Penjualan
68
sd Sequence Diagram Transaksi Penjualan
Admin Transaksi Penjualan
Input Form Penjualan
Form Penjualan
Pilih Menu Transaksi()
setjumlahtotal(var)
getjumlah()
setkodeobat(var)
getkodeobat()
setnamaobat(var)
getnamaobat()
setjumlah(int)
getjumlah()
setsubtotal(double)
getsubtotal()
simpan()
Gambar. IV.27.Sequence Diagram Transaksi Penjualan
g. Sequence Diagram Transaksi Master Penjualan
69
sd Sequence Diagram Master Penjual...
Admin Transaksi Penjualan
Kategori Pencarian Master Transaksi Penjualan
Pilih Menu Transaksi()
setidpenjualan(var)
getidpenjualan()
setiduser(var)
getiduser()
cari()
Gambar. IV.28. Sequence Diagram Master Penjualan
h. Sequence Diagram Report Laporan Obat
70
sd Sequence Diagram Laporan Obat
Admin Report Laporan Data ObatLaporan
pil ih menu Report()
Pilih menu()
Tampil()
Gambar. IV.29. Sequence Diagram Report Laporan Obat
i. Sequence Diagram Report Data Distributor
71
sd Sequence Diagram Laporan Distributor
Admin Report Data Distributor Laporan Data Distributor
pil ih menu()
Pilih()
Tampil()
Gambar. IV.30 . Sequence Diagram Report Data Distributor
j. Sequence Diagram Report Data User
72
sd Sequence Diagram Laporan user
Admin Report Data User Laporan Data User
memilih menu()
pil ih()
tampil()
Gambar. IV.31. Sequence Diagram Report Data User
k. Sequence Diagram Report Laporan Resep
73
sd Sequence Diagram Laporan resep
Admin Report Laporan Resep Laporan data resep Doketr
pil ih menu()
pil ih()
tampil()
Gambar. IV.32. Sequence Diagram Report Laporan Resep
l. Sequence Diagram Report Laporan Pembelian
Gambar. IV.33.
sd Sequence Diagram Laporan pembelian
Admin Report Laporan Pembelian
laporann Transaksi pembelian
pil ih menu()
priview()
cetak()
74
Sequence Diagram Report Laporan Pembelian
m. Sequence Diagram Report Laporan Penjualan
sd Sequence Diagram Laporan penjual...
Admin report laporan penjualan laporan transaksi penjualan
pil ih menu()
priview()
cetak()
Gambar. IV.34. Sequence Diagram Report Laporan Penjualan
75
B. Component Diagram
cmp Component Diagram HCD
Konfigurasi Database
MySQL Server: localhost via TCP/IP Versi Server: 5.1.33-community Protocol version: 10 Pengguna: root@localhost Charset MySQL: UTF-8 Unicode (utf8)
Web serv er Apache/2.2.11 (Win32) DAV/2 mod_ssl/2.2.11
OpenSSL/0.9.8i PHP/5.2.9 MySQL client version: 5.0.51a PHP extension: mysql
phpMyAdmin Informasi tentang versi: 3.1.3.1
Perangkat Lunak Dev elopmet
EditorProduct Version: NetBeans IDE 7.3 Beta 2 (Build 201211062253)Updates: NetBeans IDE is updated to version , NetBeans 7.3 Beta 2Java: 1.7.0_07; Java HotSpot(TM) 64-Bit Server VM 23.3-b01Runtime: Java(TM) SE Runtime Environment 1.7.0_07-b11System: Windows 7 version 6.1 running on amd64; Cp1252; en_US (nb)
CompilerLaunch4j 3.1.0-beta1
Sistem Operasi (Operating System)
* Microsoft Windows 7 Professional/ Linux Ubuntu:
Database Serv er Lokal
-------------------------------------------------
Disk Controller = Raid 5Disk : 320 GBProcessor : 2,4 GhzRAM = 1024 MB
76
Gambar. IV.35. Component Diagram
A. Deployment Diagram
deployment Deployment_HCD
Workstation
Aplikasi HCD
Database Server
MySQL database
Aplication Serv er
Database Interface
Presentation Layer (Aplication Interface)
Log File
http/https connection
TCP/ IP or local socket
Gambar. IV.36.Deployment Diagram
77
4.2.2. User Interface
1. Lampiran A-1a. Form Tampilan Login
Gambar IV. 37 . Form Tampilan Login Admin
2. Lampiran A-2b. Form Tampilan Menu
Utama Ruang Administrasi
Gambar IV. 38 . Form Tampilan Menu Utama Ruang Administrasi
78
3. Lampiran A-3b. Form Tampilan Form User
Gambar IV. 39. Form Tampilan Form User
4. Lampiran A-4d . Form Tampilan Form Obat
Gambar IV. 40. Form Tampilan Form Obat
79
5. Lampiran A-5e . Form Tampilan Form Distributor
Gambar IV.41 . Form Tampilan Form Distributor
6. Lampiran A-6f . Form Tampilan Form Transaksi Pembelian
Gambar IV.42 . Form Tampilan Form Transaksi Pembelian
7. Lampiran A-7g . Form Tampilan Form Master Transaksi Pembelian
80
Gambar IV.43 . Form Tampilan Form Master Transaksi Pembelian
8. Lampiran A-8h . Form Tampilan Form Penjualan
Gambar IV.44 . Form Tampilan Form Penjualan
9. Lampiran A-9i . Form Tampilan Form Master Transaksi Penjualan
Gambar IV.45 . Form Tampilan Form Master Transaksi Penjualan
81
4.3 Code Generation
a. Login
/* * To change this template, choose Tools | Templates * and open the template in the editor. */package apotik_2it_versi_2;import java.util.logging.Level;import java.util.logging.Logger;import java.awt.Dimension;import java.awt.Toolkit;import javax.swing.UIManager;import apotik_2it_versi_2.Gui.splash;import apotik_2it_versi_2.Gui.MenuLogin;/** * * @author Java */public class Apotik_2IT_Versi_2 {
/** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here splash pb = new splash(); pb.setVisible(true); for(int i=0;i<=100;i++){ try { pb.getProgressBar().setValue(i); Thread.sleep(25); } catch (InterruptedException ex) { Logger.getLogger(splash.class.getName()).log(Level.SEVERE, null, ex); } } pb.dispose(); /* try { UIManager.setLookAndFeel(new AcrylLookAndFeel()); } catch (UnsupportedLookAndFeelException ex) { Logger.getLogger(Menu.class.getName()).log(Level.SEVERE, null,ex); }*/ try {
82
UIManager.setLookAndFeel( "com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); } catch (Exception ignored) { } MenuLogin tampilan = new MenuLogin(); Dimension screen=Toolkit.getDefaultToolkit().getScreenSize(); int lebar=(screen.width-tampilan.getSize().width)/2; int tinggi=(screen.height-tampilan.getSize().height)/2; // tampilan.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); tampilan.setLocation(lebar,tinggi); tampilan.setResizable(false);
tampilan.setVisible(true); }}
b. Run
/* * To change this template, choose Tools | Templates * and open the template in the editor. */
package apotik_2it_versi_2.Gui;import java.util.logging.Level;import java.util.logging.Logger;import java.awt.Dimension;import java.awt.Toolkit;import javax.swing.UIManager;import apotik_2it_versi_2.Gui.splash;import apotik_2it_versi_2.Gui.MenuLogin;/** * * @author Rochim */public class run {public static void main(String[] args) { // TODO code application logic here splash pb = new splash(); pb.setVisible(true); for(int i=0;i<=100;i++){ try { pb.getProgressBar().setValue(i); Thread.sleep(25);
83
} catch (InterruptedException ex) { Logger.getLogger(splash.class.getName()).log(Level.SEVERE, null, ex); } } pb.dispose(); /* try { UIManager.setLookAndFeel(new AcrylLookAndFeel()); } catch (UnsupportedLookAndFeelException ex) { Logger.getLogger(Menu.class.getName()).log(Level.SEVERE, null,ex); }*/ try { UIManager.setLookAndFeel( "com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); } catch (Exception ignored) { } MenuLogin tampilan = new MenuLogin(); Dimension screen=Toolkit.getDefaultToolkit().getScreenSize(); int lebar=(screen.width-tampilan.getSize().width)/2; int tinggi=(screen.height-tampilan.getSize().height)/2; // tampilan.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); tampilan.setLocation(lebar,tinggi); tampilan.setResizable(false);
tampilan.setVisible(true);
}}
c. Form User
/* * To change this template, choose Tools | Templates * and open the template in the editor. */
/* * Distributorr.java * * Created on Dec 9, 2011, 9:31:42 PM */
package apotik_2it_versi_2.Gui.Kasir;
import apotik_2it_versi_2.Database.Control.KasirJpaController;
84
import apotik_2it_versi_2.Database.Control.exceptions.NonexistentEntityException;import apotik_2it_versi_2.Database.Entity.Kasir;import apotik_2it_versi_2.Gui.Dialogable;import apotik_2it_versi_2.Gui.Menu;import com.stripbandunk.jglasspane.JGlassPane;import com.stripbandunk.jglasspane.component.MessageComponent;import java.awt.Dimension;import java.awt.Point;import java.awt.Toolkit;import java.awt.event.MouseEvent;import java.util.ArrayList;import java.util.List;import javax.swing.JOptionPane;
/** * * @author Rochim */public class FormUser extends javax.swing.JDialog implements Dialogable{ private List<Kasir> kasir = new ArrayList<Kasir>(); private String id=null;private FormUser formUser; /** Creates new form Distributorr */ /* public Distributorr(java.awt.Frame parent, boolean modal) { super(parent, modal); initComponents(); }*/ public FormUser(Menu menu) { super(menu, true);
initComponents(); showtoTabel(); actionTable(); } void showtoTabel(){ KasirJpaController controller = new KasirJpaController(); kasir.clear(); kasir = controller.findKasirEntities(); tableModelKasir1.setDatatoTable(kasir);
} void actionTable(){ tableModelKasir1.addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) {
85
tableGlass1MouseClicked(evt); } private void tableGlass1MouseClicked(MouseEvent evt) { int row_hasil = tableModelKasir1.getSelectedRow(); id = tableModelKasir1.getValueAt(row_hasil, 0).toString(); String nama = tableModelKasir1.getValueAt(row_hasil, 1).toString(); String alamat = tableModelKasir1.getValueAt(row_hasil, 2).toString(); String telepon = tableModelKasir1.getValueAt(row_hasil, 3).toString(); String Status = tableModelKasir1.getValueAt(row_hasil, 4).toString(); String UserName = tableModelKasir1.getValueAt(row_hasil, 5).toString(); String Pass = tableModelKasir1.getValueAt(row_hasil, 7).toString(); String Hak = tableModelKasir1.getValueAt(row_hasil, 6).toString(); // textBox2.setText(id); textNama.setText(nama); textAlamat.setText(alamat); textTelpon.setText(telepon); textStatus.setText(Status); textUserName.setText(UserName); textPassword.setText(Pass); textHakAkses.setText(Hak); } }); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() {
panel_merah1 = new apotik_2it_versi_2.Utility.Panel_merah(); panelLine1 = new paket.launk.java.container.PanelLine(); buttonBig1 = new apotik_2it_versi_2.Utility.ButtonBig(); buttonBig4 = new apotik_2it_versi_2.Utility.ButtonBig(); buttonBig2 = new apotik_2it_versi_2.Utility.ButtonBig(); buttonBig3 = new apotik_2it_versi_2.Utility.ButtonBig(); textBox1 = new apotik_2it_versi_2.Utility.TextBox();
86
jLabel1 = new javax.swing.JLabel(); panelWhiteBorder1 = new paket.launk.java.container.PanelWhiteBorder(); textTelpon = new apotik_2it_versi_2.Utility.TextBox(); textAlamat = new apotik_2it_versi_2.Utility.TextBox(); textNama = new apotik_2it_versi_2.Utility.TextBox(); jLabel3 = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel(); jLabel5 = new javax.swing.JLabel(); jLabel6 = new javax.swing.JLabel(); textStatus = new apotik_2it_versi_2.Utility.TextBox(); jLabel7 = new javax.swing.JLabel(); textUserName = new apotik_2it_versi_2.Utility.TextBox(); jLabel8 = new javax.swing.JLabel(); jLabel9 = new javax.swing.JLabel(); textHakAkses = new apotik_2it_versi_2.Utility.TextBox(); SelectSt = new javax.swing.JButton(); SelectHak = new javax.swing.JButton(); textPassword = new apotik_2it_versi_2.Utility.PasswordBox(); jComboBox1 = new javax.swing.JComboBox(); scrollPane1 = new Java_2IT.UTILITY.ScrollPane(); tableModelKasir1 = new apotik_2it_versi_2.TabelModel.TableModelKasir(); jLabel2 = new javax.swing.JLabel(); glassPane = new com.stripbandunk.jglasspane.JGlassPane(); component = new com.stripbandunk.jglasspane.component.MessageComponent();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setTitle("Form User"); getContentPane().setLayout(new java.awt.GridLayout(1, 0));
panel_merah1.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
buttonBig1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/apotik_2it_versi_2/IMAGE/Button-Refresh-icon.png"))); // NOI18N buttonBig1.setText("REFRESH"); buttonBig1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonBig1ActionPerformed(evt); } });
87
buttonBig4.setIcon(new javax.swing.ImageIcon(getClass().getResource("/apotik_2it_versi_2/IMAGE/glossy-3d-blue-orbs2-037-icon.png"))); // NOI18N buttonBig4.setText("SAVE"); buttonBig4.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonBig4ActionPerformed(evt); } });
buttonBig2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/apotik_2it_versi_2/IMAGE/glossy-3d-blue-orbs2-045-icon.png"))); // NOI18N buttonBig2.setText("UPDATE"); buttonBig2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonBig2ActionPerformed(evt); } });
buttonBig3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/apotik_2it_versi_2/IMAGE/glossy-3d-blue-delete-icon.png"))); // NOI18N buttonBig3.setText("DELETE"); buttonBig3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonBig3ActionPerformed(evt); } });
javax.swing.GroupLayout panelLine1Layout = new javax.swing.GroupLayout(panelLine1); panelLine1.setLayout(panelLine1Layout); panelLine1Layout.setHorizontalGroup( panelLine1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panelLine1Layout.createSequentialGroup() .addGap(26, 26, 26) .addComponent(buttonBig4, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
88
.addComponent(buttonBig2, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(buttonBig3, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(buttonBig1, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(52, 52, 52)) ); panelLine1Layout.setVerticalGroup( panelLine1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panelLine1Layout.createSequentialGroup() .addContainerGap() .addGroup(panelLine1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(buttonBig3, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 111, Short.MAX_VALUE) .addComponent(buttonBig4, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 111, Short.MAX_VALUE) .addComponent(buttonBig2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 111, Short.MAX_VALUE) .addComponent(buttonBig1, javax.swing.GroupLayout.DEFAULT_SIZE, 111, Short.MAX_VALUE)) .addContainerGap()) );
panel_merah1.add(panelLine1, new org.netbeans.lib.awtextra.AbsoluteConstraints(12, 432, -1, -1));
textBox1.setForeground(new java.awt.Color(255, 0, 255)); textBox1.addCaretListener(new javax.swing.event.CaretListener() {
89
public void caretUpdate(javax.swing.event.CaretEvent evt) { textBox1CaretUpdate(evt); } }); panel_merah1.add(textBox1, new org.netbeans.lib.awtextra.AbsoluteConstraints(315, 120, 273, -1));
jLabel1.setFont(new java.awt.Font("Times New Roman", 1, 18)); jLabel1.setForeground(new java.awt.Color(0, 51, 255)); jLabel1.setText("SEARCH"); panel_merah1.add(jLabel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(28, 123, 86, 14));
jLabel3.setFont(new java.awt.Font("Tahoma", 1, 11)); jLabel3.setForeground(new java.awt.Color(255, 255, 255)); jLabel3.setText("Nama");
jLabel4.setFont(new java.awt.Font("Tahoma", 1, 11)); jLabel4.setForeground(new java.awt.Color(255, 255, 255)); jLabel4.setText("Alamat");
jLabel5.setFont(new java.awt.Font("Tahoma", 1, 11)); jLabel5.setForeground(new java.awt.Color(255, 255, 255)); jLabel5.setText("Telepon");
jLabel6.setFont(new java.awt.Font("Tahoma", 1, 11)); jLabel6.setForeground(new java.awt.Color(255, 255, 255)); jLabel6.setText("Status"); jLabel7.setFont(new java.awt.Font("Tahoma", 1, 11)); jLabel7.setForeground(new java.awt.Color(255, 255, 255)); jLabel7.setText("Username");
jLabel8.setFont(new java.awt.Font("Tahoma", 1, 11)); jLabel8.setForeground(new java.awt.Color(255, 255, 255)); jLabel8.setText("Password");
jLabel9.setFont(new java.awt.Font("Tahoma", 1, 11)); jLabel9.setForeground(new java.awt.Color(255, 255, 255)); jLabel9.setText("Hak Akses");
SelectSt.setText("..."); SelectSt.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { SelectStActionPerformed(evt); } });
SelectHak.setText("...");
90
SelectHak.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { SelectHakActionPerformed(evt); } });
javax.swing.GroupLayout panelWhiteBorder1Layout = new javax.swing.GroupLayout(panelWhiteBorder1); panelWhiteBorder1.setLayout(panelWhiteBorder1Layout); panelWhiteBorder1Layout.setHorizontalGroup( panelWhiteBorder1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panelWhiteBorder1Layout.createSequentialGroup() .addGap(26, 26, 26) .addGroup(panelWhiteBorder1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panelWhiteBorder1Layout.createSequentialGroup() .addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(64, 64, 64) .addComponent(textNama, javax.swing.GroupLayout.PREFERRED_SIZE, 199, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(panelWhiteBorder1Layout.createSequentialGroup() .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(64, 64, 64) .addComponent(textAlamat, javax.swing.GroupLayout.PREFERRED_SIZE, 199, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(panelWhiteBorder1Layout.createSequentialGroup() .addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(64, 64, 64) .addComponent(textTelpon, javax.swing.GroupLayout.PREFERRED_SIZE, 199, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(panelWhiteBorder1Layout.createSequentialGroup()
91
.addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(64, 64, 64) .addComponent(textStatus, javax.swing.GroupLayout.PREFERRED_SIZE, 199, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(1, 1, 1) .addComponent(SelectSt, javax.swing.GroupLayout.PREFERRED_SIZE, 37, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(panelWhiteBorder1Layout.createSequentialGroup() .addComponent(jLabel7, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(44, 44, 44) .addComponent(textUserName, javax.swing.GroupLayout.PREFERRED_SIZE, 199, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(panelWhiteBorder1Layout.createSequentialGroup() .addComponent(jLabel8, javax.swing.GroupLayout.PREFERRED_SIZE, 90, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(24, 24, 24) .addComponent(textPassword, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(panelWhiteBorder1Layout.createSequentialGroup() .addComponent(jLabel9, javax.swing.GroupLayout.PREFERRED_SIZE, 90, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(24, 24, 24) .addComponent(textHakAkses, javax.swing.GroupLayout.PREFERRED_SIZE, 199, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(1, 1, 1) .addComponent(SelectHak, javax.swing.GroupLayout.PREFERRED_SIZE, 37, javax.swing.GroupLayout.PREFERRED_SIZE)))) ); panelWhiteBorder1Layout.setVerticalGroup( panelWhiteBorder1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panelWhiteBorder1Layout.createSequentialGroup()
92
.addGap(50, 50, 50) .addGroup(panelWhiteBorder1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panelWhiteBorder1Layout.createSequentialGroup() .addGap(8, 8, 8) .addComponent(jLabel3)) .addComponent(textNama, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(16, 16, 16) .addGroup(panelWhiteBorder1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panelWhiteBorder1Layout.createSequentialGroup() .addGap(10, 10, 10) .addComponent(jLabel4)) .addComponent(textAlamat, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(26, 26, 26) .addGroup(panelWhiteBorder1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panelWhiteBorder1Layout.createSequentialGroup() .addGap(2, 2, 2) .addComponent(jLabel5)) .addComponent(textTelpon, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(16, 16, 16) .addGroup(panelWhiteBorder1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panelWhiteBorder1Layout.createSequentialGroup() .addGap(4, 4, 4) .addComponent(jLabel6)) .addComponent(textStatus, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(SelectSt)) .addGap(16, 16, 16) .addGroup(panelWhiteBorder1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
93
.addGroup(panelWhiteBorder1Layout.createSequentialGroup() .addGap(6, 6, 6) .addComponent(jLabel7)) .addComponent(textUserName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(16, 16, 16) .addGroup(panelWhiteBorder1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panelWhiteBorder1Layout.createSequentialGroup() .addGap(1, 1, 1) .addComponent(jLabel8)) .addComponent(textPassword, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(16, 16, 16) .addGroup(panelWhiteBorder1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panelWhiteBorder1Layout.createSequentialGroup() .addGap(3, 3, 3) .addComponent(jLabel9)) .addComponent(textHakAkses, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(SelectHak))) );
panel_merah1.add(panelWhiteBorder1, new org.netbeans.lib.awtextra.AbsoluteConstraints(606, 120, 387, 354));
jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Filtering By", "Id", "Nama", "Alamat", "User Name", "Hak Akses", " ", " " })); jComboBox1.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); jComboBox1.setOpaque(false); panel_merah1.add(jComboBox1, new org.netbeans.lib.awtextra.AbsoluteConstraints(147, 122, 139, -1));
scrollPane1.setViewportView(tableModelKasir1);
94
panel_merah1.add(scrollPane1, new org.netbeans.lib.awtextra.AbsoluteConstraints(12, 165, 568, 249));
jLabel2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/apotik_2it_versi_2/IMAGE/User.gif"))); // NOI18N panel_merah1.add(jLabel2, new org.netbeans.lib.awtextra.AbsoluteConstraints(230, 10, -1, -1));
component.setFont(new java.awt.Font("DejaVu Sans", 0, 3)); // NOI18N component.setMessageFont(new java.awt.Font("DejaVu Sans", 1, 5)); // NOI18N
javax.swing.GroupLayout componentLayout = new javax.swing.GroupLayout(component); component.setLayout(componentLayout); componentLayout.setHorizontalGroup( componentLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 920, Short.MAX_VALUE) ); componentLayout.setVerticalGroup( componentLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 60, Short.MAX_VALUE) );
component.setBounds(0, 10, 870, 50); glassPane.add(component, javax.swing.JLayeredPane.DEFAULT_LAYER);
panel_merah1.add(glassPane, new org.netbeans.lib.awtextra.AbsoluteConstraints(90, 60, 920, 60));
getContentPane().add(panel_merah1);
pack(); }// </editor-fold>
private void buttonBig2ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: if(id==null ||textNama.getText().isEmpty() || textAlamat.getText().isEmpty() || textTelpon.getText().isEmpty() ||
95
textStatus.getText().isEmpty() || textUserName.getText().isEmpty() || textPassword.getText().isEmpty()|| textHakAkses.getText().isEmpty()){ // JOptionPane.showMessageDialog(null, "Mohon Klik tabel untuk mengedit data"); runMessageU(); }else{ try { Kasir m = new Kasir(); m.setIdkasir(Integer.valueOf(id)); m.setNama(textNama.getText()); m.setAlamat(textAlamat.getText()); m.setTelepon(textTelpon.getText()); m.setStatus(textStatus.getText()); m.setUsername(textUserName.getText()); m.setPassword(textPassword.getText()); m.setAkses(textHakAkses.getText());
KasirJpaController kasirJpaController = new KasirJpaController(); kasirJpaController.edit(m); showtoTabel(); reset(); runMessageUpdate(); } catch (NonexistentEntityException ex) { ex.printStackTrace(); } catch (Exception ex) { ex.printStackTrace(); } } }
private void SelectStActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: SelectStatus m = new SelectStatus(formUser, textStatus);
Point p = jLabel6.getLocationOnScreen(); p.setLocation(p.getX(), p.getY()+28); m.setLocation(p); m.setVisible(true); }
private void SelectHakActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:
96
SelectHak m = new SelectHak(formUser, textHakAkses);
Point p = jLabel9.getLocationOnScreen(); p.setLocation(p.getX(), p.getY()+28); m.setLocation(p); m.setVisible(true); }
private void buttonBig4ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: if(textNama.getText().isEmpty() || textAlamat.getText().isEmpty() || textTelpon.getText().isEmpty() || textStatus.getText().isEmpty() || textUserName.getText().isEmpty() || textPassword.getText().isEmpty()|| textHakAkses.getText().isEmpty()){ runMessageIsi(); //JOptionPane.showMessageDialog(null, "Mohon isi data dengan Lengkap"); }else{ Kasir m = new Kasir(); m.setNama(textNama.getText()); m.setAlamat(textAlamat.getText()); m.setTelepon(textTelpon.getText()); m.setStatus(textStatus.getText()); m.setUsername(textUserName.getText()); m.setPassword(textPassword.getText()); m.setAkses(textHakAkses.getText());
KasirJpaController kasirJpaController = new KasirJpaController(); kasirJpaController.create(m); showtoTabel(); reset(); runMessageSimpan(); }}
private void buttonBig3ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: if(id==null ||textNama.getText().isEmpty() || textAlamat.getText().isEmpty() || textTelpon.getText().isEmpty() || textStatus.getText().isEmpty() || textUserName.getText().isEmpty() || textPassword.getText().isEmpty()|| textHakAkses.getText().isEmpty()){ //JOptionPane.showMessageDialog(null, "Mohon Klik tabel untuk menghapus data");
97
runMessageD(); }else{ try{ KasirJpaController kasirJpaController = new KasirJpaController(); kasirJpaController.destroy(Integer.valueOf(id));; showtoTabel(); reset(); runMessageDelete(); } catch (NonexistentEntityException ex) { ex.printStackTrace(); } catch (Exception ex) { ex.printStackTrace(); } }}
private void buttonBig1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: showtoTabel(); reset();}
private void textBox1CaretUpdate(javax.swing.event.CaretEvent evt) { // TODO add your handling code here: if(jComboBox1.getSelectedIndex()==0){ // textBox1.setText("Pilih Opsi Pencarian"); }/*else if(ovalTextField4.getText().isEmpty()){ JOptionPane.showMessageDialog(null, "Mohon Isi Pencarian", "Warning",JOptionPane.WARNING_MESSAGE); }*/else if(jComboBox1.getSelectedIndex()==1){ // textBox1.setText(""); KasirJpaController controller = new KasirJpaController(); kasir = controller.findById(Integer.valueOf( textBox1.getText().trim())); tableModelKasir1.setDatatoTable(kasir);
}else if(jComboBox1.getSelectedIndex()==2){ // textBox1.setText(""); KasirJpaController controller = new KasirJpaController(); kasir = controller.findByNama(textBox1.getText().trim()); tableModelKasir1.setDatatoTable(kasir); }else if(jComboBox1.getSelectedIndex()==3){ // textBox1.setText(""); KasirJpaController controller = new KasirJpaController(); kasir = controller.findByAlamat(textBox1.getText().trim());
98
tableModelKasir1.setDatatoTable(kasir); }else if(jComboBox1.getSelectedIndex()==4){ // textBox1.setText(""); KasirJpaController controller = new KasirJpaController(); kasir = controller.findByUserName(textBox1.getText().trim()); tableModelKasir1.setDatatoTable(kasir); }else if(jComboBox1.getSelectedIndex()==5){ // textBox1.setText(""); KasirJpaController controller = new KasirJpaController(); kasir = controller.findByHak(textBox1.getText().trim()); tableModelKasir1.setDatatoTable(kasir); }} void reset(){ jComboBox1.setSelectedIndex(0); textBox1.setText(""); textNama.setText(""); textAlamat.setText(""); textTelpon.setText(""); textStatus.setText(""); textUserName.setText(""); textPassword.setText(""); textHakAkses.setText(""); id=null; }void runMessageSimpan (){
component = new MessageComponent();glassPane.addGlassPaneComponent(component);component.show("SIMPAN DATA SUKSES !!!", 5000);}void runMessageUpdate (){
component = new MessageComponent();glassPane.addGlassPaneComponent(component);component.show("UPDATE DATA SUKSES !!!", 5000);}void runMessageDelete (){
component = new MessageComponent();glassPane.addGlassPaneComponent(component);component.show("DELETE DATA SUKSES !!!", 5000);}void runMessageD (){
component = new MessageComponent();glassPane.addGlassPaneComponent(component);
99
component.showError("MOHON KLIK TABEL UNTUK MENGHAPUS DATA !!!", 5000);}void runMessageU (){
component = new MessageComponent();glassPane.addGlassPaneComponent(component);component.showWarning("MOHON KLIK TABEL UNTUK MENGEDIT DATA !!!", 5000);}void runMessageIsi (){
component = new MessageComponent();glassPane.addGlassPaneComponent(component);component.showWarning("MOHON ISI DATA DENGAN LENGKAP !!!", 5000);} /** * @param args the command line arguments */ /*public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { Distributorr dialog = new Distributorr(new javax.swing.JFrame(), true); dialog.addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent e) { System.exit(0); } }); dialog.setVisible(true); } }); }*/
@Override public void dialog() { setVisible(true); }
// Variables declaration - do not modify private javax.swing.JButton SelectHak; private javax.swing.JButton SelectSt; private apotik_2it_versi_2.Utility.ButtonBig buttonBig1; private apotik_2it_versi_2.Utility.ButtonBig buttonBig2; private apotik_2it_versi_2.Utility.ButtonBig buttonBig3;
100
private apotik_2it_versi_2.Utility.ButtonBig buttonBig4; private com.stripbandunk.jglasspane.component.MessageComponent component; private com.stripbandunk.jglasspane.JGlassPane glassPane; private javax.swing.JComboBox jComboBox1; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JLabel jLabel7; private javax.swing.JLabel jLabel8; private javax.swing.JLabel jLabel9; private paket.launk.java.container.PanelLine panelLine1; private paket.launk.java.container.PanelWhiteBorder panelWhiteBorder1; private apotik_2it_versi_2.Utility.Panel_merah panel_merah1; private Java_2IT.UTILITY.ScrollPane scrollPane1; private apotik_2it_versi_2.TabelModel.TableModelKasir tableModelKasir1; private apotik_2it_versi_2.Utility.TextBox textAlamat; private apotik_2it_versi_2.Utility.TextBox textBox1; private apotik_2it_versi_2.Utility.TextBox textHakAkses; private apotik_2it_versi_2.Utility.TextBox textNama; private apotik_2it_versi_2.Utility.PasswordBox textPassword; private apotik_2it_versi_2.Utility.TextBox textStatus; private apotik_2it_versi_2.Utility.TextBox textTelpon; private apotik_2it_versi_2.Utility.TextBox textUserName; // End of variables declaration
}
d. Obat
/* * To change this template, choose Tools | Templates * and open the template in the editor. */
/* * SearchObat.java * * Created on Dec 22, 2011, 2:38:35 PM */package apotik_2it_versi_2.Gui.Transaksi.Penjualan;
import apotik_2it_versi_2.Gui.Resep.*;
101
import apotik_2it_versi_2.Database.Control.ObatJpaController;import apotik_2it_versi_2.Database.Entity.Obat;import apotik_2it_versi_2.Gui.Transaksi.Penjualan.FormPenjualan;import apotik_2it_versi_2.Utility.TextBox;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.MouseEvent;import java.util.ArrayList;import java.util.List;import javax.swing.JOptionPane;import javax.swing.JTextField;
/** * * @author Java */public class SearchObat1 extends javax.swing.JDialog implements ActionListener{ FormPenjualan frm; private List<Obat> obat = new ArrayList<Obat>();private List<Obat> obatLengkap = new ArrayList<Obat>();private String kode=null;private String nama=null;private String hargaJual=null;private String jumlah =null;private String hargaPokok =null;private String jenisl =null;private String kemasan =null;private String indikasi =null;
/** Creates new form SearchObat */ SearchObat1(TransasksiResep transasksiResep, TextBox textObat ) { /* super( transasksiResep,true); initComponents(); // this.parameter1=(TextBox) textObat; // this.parameter2=(TextBox) textNama; showtoTabel(); actionTable(); select.addActionListener(this); // actionTable();*/ } public SearchObat1(FormPenjualan formPenjualan) { super( formPenjualan,true); initComponents(); showtoTabel();
102
actionTable(); select.addActionListener(this); frm = formPenjualan; } public void actionPerformed(ActionEvent e) { if(textId.getText().isEmpty() || textNama.getText().isEmpty() ){ JOptionPane.showMessageDialog(null, "Mohon isi Klik Tabel untuk memilih data"); }else{
Object obj = e.getSource();
if(obj.equals(select)) { String var1 = this.textId.getText(); String var2 = this.textNama.getText(); frm.textIdObat.setText(var1); frm.textNamaObat.setText(var2); frm.harga.setText(hargaJual); frm.jumlahStok=jumlah; frm.jenis=jenisl; frm.kemasan=kemasan; frm.hargapokok=hargaPokok; frm.indikasi=indikasi; this.dispose(); } } }
void showtoTabel(){ ObatJpaController controller = new ObatJpaController(); obat.clear(); obat = controller.findObatEntities(); tableModelObatt1.setDatatoTable(obat);
}
void actionTable(){ tableModelObatt1.addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { tableMouseClicked(evt);
103
} private void tableMouseClicked(MouseEvent evt) { int row_hasil = tableModelObatt1.getSelectedRow(); kode = tableModelObatt1.getValueAt(row_hasil, 0).toString(); nama = tableModelObatt1.getValueAt(row_hasil, 1).toString(); // harga = tableModelObatt1.getValueAt(row_hasil, 2).toString(); textId.setText(kode); textNama.setText(nama); searchObatLengkap(); } }); } void searchObatLengkap(){ObatJpaController controller = new ObatJpaController(); obatLengkap = controller.findByKode(kode); tableModelObatt2.setDatatoTable(obatLengkap); kode = tableModelObatt1.getValueAt(0, 0).toString(); nama = tableModelObatt1.getValueAt(0, 1).toString(); jenisl = tableModelObatt2.getValueAt(0, 2).toString(); kemasan = tableModelObatt2.getValueAt(0, 3).toString(); indikasi= tableModelObatt2.getValueAt(0, 4).toString(); hargaPokok = tableModelObatt2.getValueAt(0, 5).toString(); hargaJual = tableModelObatt2.getValueAt(0, 6).toString(); jumlah= tableModelObatt2.getValueAt(0, 7).toString(); System.out.println("AAA =" +jumlah); System.out.println("jenis =" +jenisl); System.out.println("kemasan =" +kemasan); System.out.println("hargapokok =" +hargaPokok); System.out.println("indikasi =" +indikasi);
} /*void showtoTabelObattLengkap(){ ObatJpaController controller = new ObatJpaController(); obat.clear(); obat = controller.findObatEntities(); tableModelObatt2.setDatatoTable(obat);
}*/
public JTextField gettextNama(){ return textNama; } /** This method is called from within the constructor to * initialize the form.
104
* WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() {
jScrollPane1 = new javax.swing.JScrollPane(); tableModelObatt2 = new apotik_2it_versi_2.TabelModel.TableModelObatt(); panel1 = new apotik_2it_versi_2.Utility.Panel(); scrollPane1 = new apotik_2it_versi_2.Utility.ScrollPane(); tableModelObatt1 = new apotik_2it_versi_2.TabelModel.TableModelObattSearch(); select = new apotik_2it_versi_2.Utility.Button(); button2 = new apotik_2it_versi_2.Utility.Button(); textId = new apotik_2it_versi_2.Utility.TextBox(); jLabel1 = new javax.swing.JLabel(); jComboBox1 = new javax.swing.JComboBox(); textBox1 = new apotik_2it_versi_2.Utility.TextBox(); textNama = new apotik_2it_versi_2.Utility.TextBox();
jScrollPane1.setViewportView(tableModelObatt2);
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); getContentPane().setLayout(new java.awt.GridLayout(1, 0));
scrollPane1.setViewportView(tableModelObatt1);
select.setForeground(new java.awt.Color(0, 0, 0)); select.setText("SELECT"); select.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { selectActionPerformed(evt); } });
button2.setForeground(new java.awt.Color(0, 0, 0)); button2.setText("CANCEL"); button2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { button2ActionPerformed(evt); } });
105
textId.setForeground(new java.awt.Color(0, 0, 0));
jLabel1.setFont(new java.awt.Font("Tahoma", 1, 15)); jLabel1.setForeground(new java.awt.Color(255, 255, 255)); jLabel1.setText("SEARCH");
jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Filtering By", "Kode", "Nama", "Jenis", "Kemasan", "Indikasi" })); jComboBox1.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); jComboBox1.setOpaque(false);
textBox1.setForeground(new java.awt.Color(255, 0, 255)); textBox1.addCaretListener(new javax.swing.event.CaretListener() { public void caretUpdate(javax.swing.event.CaretEvent evt) { textBox1CaretUpdate(evt); } });
textNama.setForeground(new java.awt.Color(0, 0, 0));
javax.swing.GroupLayout panel1Layout = new javax.swing.GroupLayout(panel1); panel1.setLayout(panel1Layout); panel1Layout.setHorizontalGroup( panel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panel1Layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel1) .addContainerGap(463, Short.MAX_VALUE)) .addGroup(panel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panel1Layout.createSequentialGroup() .addGap(0, 13, Short.MAX_VALUE) .addGroup(panel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panel1Layout.createSequentialGroup() .addGap(78, 78, 78) .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, 143, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18)
106
.addComponent(textBox1, javax.swing.GroupLayout.PREFERRED_SIZE, 270, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(scrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 509, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(panel1Layout.createSequentialGroup() .addComponent(textId, javax.swing.GroupLayout.PREFERRED_SIZE, 89, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(6, 6, 6) .addComponent(textNama, javax.swing.GroupLayout.PREFERRED_SIZE, 219, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(select, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(10, 10, 10) .addComponent(button2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addGap(0, 12, Short.MAX_VALUE))) ); panel1Layout.setVerticalGroup( panel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panel1Layout.createSequentialGroup() .addGap(22, 22, 22) .addComponent(jLabel1) .addContainerGap(254, Short.MAX_VALUE)) .addGroup(panel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panel1Layout.createSequentialGroup() .addGap(0, 15, Short.MAX_VALUE) .addGroup(panel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panel1Layout.createSequentialGroup() .addGap(2, 2, 2) .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(textBox1, javax.swing.GroupLayout.PREFERRED_SIZE,
107
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(11, 11, 11) .addComponent(scrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 188, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addGroup(panel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(textId, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(textNama, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(panel1Layout.createSequentialGroup() .addGap(1, 1, 1) .addComponent(select, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(panel1Layout.createSequentialGroup() .addGap(1, 1, 1) .addComponent(button2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addGap(0, 15, Short.MAX_VALUE))) );
getContentPane().add(panel1);
pack(); }// </editor-fold>
private void textBox1CaretUpdate(javax.swing.event.CaretEvent evt) { // TODO add your handling code here: if(jComboBox1.getSelectedIndex()==0){ // textBox1.setText("Pilih Opsi Pencarian"); }/*else if(ovalTextField4.getText().isEmpty()){ JOptionPane.showMessageDialog(null, "Mohon Isi Pencarian", "Warning",JOptionPane.WARNING_MESSAGE); }*/else if(jComboBox1.getSelectedIndex()==1){ // textBox1.setText(""); ObatJpaController controller = new ObatJpaController();
108
obat = controller.findByKode(textBox1.getText().trim()); tableModelObatt1.setDatatoTable(obat);
}else if(jComboBox1.getSelectedIndex()==2){ // textBox1.setText(""); ObatJpaController controller = new ObatJpaController(); obat = controller.findByNama(textBox1.getText().trim()); tableModelObatt1.setDatatoTable(obat); }else if(jComboBox1.getSelectedIndex()==3){ // textBox1.setText(""); ObatJpaController controller = new ObatJpaController(); obat = controller.findByJenis(textBox1.getText().trim()); tableModelObatt1.setDatatoTable(obat); }else if(jComboBox1.getSelectedIndex()==4){ // textBox1.setText(""); ObatJpaController controller = new ObatJpaController(); obat = controller.findByKemasan(textBox1.getText().trim()); tableModelObatt1.setDatatoTable(obat); }else if(jComboBox1.getSelectedIndex()==5){ // textBox1.setText(""); ObatJpaController controller = new ObatJpaController(); obat = controller.findByIndikasi(textBox1.getText().trim()); tableModelObatt1.setDatatoTable(obat); }}
private void selectActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: // parameter1.setText(textId.getText()); // parameter2.setText(textNama.getText()); // dispose(); /*Object obj = evt.getSource(); if(obj.equals(select)) { String var1 = this.textId.getText(); String var2 = this.textNama.getText(); TransasksiResep frm = new TransasksiResep(var1, var2); frm.show(); this.dispose(); }*/ }
private void button2ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: dispose();}
109
/** * @param args the command line arguments */ //private final TextBox parameter1; // private final TextBox parameter2; // Variables declaration - do not modify private apotik_2it_versi_2.Utility.Button button2; private javax.swing.JComboBox jComboBox1; private javax.swing.JLabel jLabel1; private javax.swing.JScrollPane jScrollPane1; private apotik_2it_versi_2.Utility.Panel panel1; private apotik_2it_versi_2.Utility.ScrollPane scrollPane1; private apotik_2it_versi_2.Utility.Button select; private apotik_2it_versi_2.TabelModel.TableModelObattSearch tableModelObatt1; private apotik_2it_versi_2.TabelModel.TableModelObatt tableModelObatt2; private apotik_2it_versi_2.Utility.TextBox textBox1; private apotik_2it_versi_2.Utility.TextBox textId; private apotik_2it_versi_2.Utility.TextBox textNama; // End of variables declaration }
e. Distributor
/* * To change this template, choose Tools | Templates * and open the template in the editor. */
/* * SearchObat.java * * Created on Dec 22, 2011, 2:38:35 PM */
package apotik_2it_versi_2.Gui.Transaksi.Pembelian;
import apotik_2it_versi_2.Database.Control.DistributorJpaController;import apotik_2it_versi_2.Database.Entity.Distributor;
import apotik_2it_versi_2.Utility.TextBox;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.MouseEvent;import java.util.ArrayList;
110
import java.util.List;import javax.swing.JOptionPane;import javax.swing.JTextField;
/** * * @author Java */public class SearchIdDistributor extends javax.swing.JDialog implements ActionListener{ FormPembelian frm;private List<Distributor> distributor = new ArrayList<Distributor>();
private String kode=null;
/** Creates new form SearchObat */ public SearchIdDistributor(FormPembelian formPembelian) { super( formPembelian,true); initComponents(); showtoTabel(); actionTable(); select.addActionListener(this); frm = formPembelian; } public void actionPerformed(ActionEvent e) { if(textId.getText().isEmpty() ){ JOptionPane.showMessageDialog(null, "Mohon isi Klik Tabel untuk memilih data"); }else{
Object obj = e.getSource();
if(obj.equals(select)) { frm.textIdDistributor.setText(kode); this.dispose(); } } }
void showtoTabel(){ DistributorJpaController controller = new DistributorJpaController(); distributor.clear(); distributor = controller.findDistributorEntities(); table.setDatatoTable(distributor);
111
}
void actionTable(){ table.addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { tableMouseClicked(evt); } private void tableMouseClicked(MouseEvent evt) { int row_hasil = table.getSelectedRow(); kode = table.getValueAt(row_hasil, 0).toString(); // harga = tableModelObatt1.getValueAt(row_hasil, 2).toString(); textId.setText(kode); } }); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() {
panel1 = new apotik_2it_versi_2.Utility.Panel(); scrollPane1 = new apotik_2it_versi_2.Utility.ScrollPane(); table = new apotik_2it_versi_2.TabelModel.TableModelDistributorSearch(); select = new apotik_2it_versi_2.Utility.Button(); button2 = new apotik_2it_versi_2.Utility.Button(); textId = new apotik_2it_versi_2.Utility.TextBox(); jComboBox1 = new javax.swing.JComboBox(); textBox1 = new apotik_2it_versi_2.Utility.TextBox(); jLabel1 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); getContentPane().setLayout(new java.awt.GridLayout(1, 0));
scrollPane1.setViewportView(table);
select.setForeground(new java.awt.Color(51, 51, 51));
112
select.setText("SELECT");
button2.setForeground(new java.awt.Color(51, 51, 51)); button2.setText("CANCEL"); button2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { button2ActionPerformed(evt); } });
textId.setForeground(new java.awt.Color(51, 51, 51));
jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Filtering By", "Id", "Nama", " " })); jComboBox1.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); jComboBox1.setOpaque(false);
textBox1.setForeground(new java.awt.Color(255, 0, 255)); textBox1.addCaretListener(new javax.swing.event.CaretListener() { public void caretUpdate(javax.swing.event.CaretEvent evt) { textBox1CaretUpdate(evt); } });
jLabel1.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N jLabel1.setText("Select Distributor");
javax.swing.GroupLayout panel1Layout = new javax.swing.GroupLayout(panel1); panel1.setLayout(panel1Layout); panel1Layout.setHorizontalGroup( panel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panel1Layout.createSequentialGroup() .addGroup(panel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panel1Layout.createSequentialGroup() .addContainerGap() .addGroup(panel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addGroup(panel1Layout.createSequentialGroup() .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, 104, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18)
113
.addComponent(textBox1, javax.swing.GroupLayout.PREFERRED_SIZE, 222, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(panel1Layout.createSequentialGroup() .addComponent(scrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 238, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addGroup(panel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(select, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(textId, javax.swing.GroupLayout.PREFERRED_SIZE, 89, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(button2, javax.swing.GroupLayout.DEFAULT_SIZE, 89, Short.MAX_VALUE))))) .addGroup(panel1Layout.createSequentialGroup() .addGap(90, 90, 90) .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 183, javax.swing.GroupLayout.PREFERRED_SIZE))) .addContainerGap()) ); panel1Layout.setVerticalGroup( panel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panel1Layout.createSequentialGroup() .addContainerGap(12, Short.MAX_VALUE) .addComponent(jLabel1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(panel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(textBox1, javax.swing.GroupLayout.PREFERRED_SIZE,
114
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(panel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panel1Layout.createSequentialGroup() .addGap(18, 18, 18) .addComponent(textId, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(select, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(button2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(panel1Layout.createSequentialGroup() .addGap(6, 6, 6) .addComponent(scrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 188, javax.swing.GroupLayout.PREFERRED_SIZE))) .addGap(20, 20, 20)) );
getContentPane().add(panel1);
pack(); }// </editor-fold>
private void textBox1CaretUpdate(javax.swing.event.CaretEvent evt) { // TODO add your handling code here: if(jComboBox1.getSelectedIndex()==0){ // textBox1.setText("Pilih Opsi Pencarian"); }/*else if(ovalTextField4.getText().isEmpty()){ JOptionPane.showMessageDialog(null, "Mohon Isi Pencarian", "Warning",JOptionPane.WARNING_MESSAGE); }*/else if(jComboBox1.getSelectedIndex()==1){ // textBox1.setText(""); DistributorJpaController controller = new DistributorJpaController(); distributor = controller.findById(Integer.valueOf(textBox1.getText().trim())); table.setDatatoTable(distributor);
115
}else if(jComboBox1.getSelectedIndex()==2){ // textBox1.setText(""); DistributorJpaController controller = new DistributorJpaController(); distributor = controller.findByNama(textBox1.getText().trim()); table.setDatatoTable(distributor); }}
private void button2ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: dispose();}
/** * @param args the command line arguments */ //private final TextBox parameter1; // private final TextBox parameter2; // Variables declaration - do not modify private apotik_2it_versi_2.Utility.Button button2; private javax.swing.JComboBox jComboBox1; private javax.swing.JLabel jLabel1; private javax.swing.JScrollPane jScrollPane1; private apotik_2it_versi_2.Utility.Panel panel1; private apotik_2it_versi_2.Utility.ScrollPane scrollPane1; private apotik_2it_versi_2.Utility.Button select; private apotik_2it_versi_2.TabelModel.TableModelDistributorSearch table; private apotik_2it_versi_2.Utility.TextBox textBox1; private apotik_2it_versi_2.Utility.TextBox textId; // End of variables declaration }
4.4 Testing
a. Form Login
Tabel IV.24Hasil Pengujian Black Box Testing Form Login
116
No Skenario Pengujian
Test Case Hasil yang diharapkan
Hasil Pengujian
Kesimpulan
1 Mengosongkan semua isian form logi, lalu tekan tombol masuk
Nik : (kosong)Kata Kunci : ( Kosong)
Sistem akan menolak akses login dan menampilkan pesan “Mohon isi data dengan benar dan lengkap”
Sesuai harapan
Valid
2 Hanya mengisi Nik saja, dan mengosongkan kata kunci lalu langsung menekan tombol masuk
Nik : 123Kata Kunci : (Kosong)
Sistem akan menolak akses login dan menampilkan pesan “Mohon isi data dengan benar dan lengkap”
Sesuai harapan
Valid
3 Hanya mengisi kata kunci saja, dan mengosongkan Nik, lalu langsung menekan tombol masuk
Nik : (Kosong)
Kata Kunci : 123
Sistem akan menolak akses login dan menampilkan pesan “Mohon isi data dengan benar dan lengkap”
Sesuai harapan
Valid
4 Menginput Nik dan Kata Kunci yang sesuai, dan kondisi Nik sudah diaktifkan
Nik :123
Kata Kunci : 123
Sistem menerima akses login lalu akan tampil Menu Utama
Sesuai harapan
Valid
4.5 Support
4.5.1. Spesifikasi Hardware dan Software
Kebutuhan KeteranganSistem Operasi : Windows 7/ Linux UbuntuProcessor : Intel Pentium IV/ Core 2 Duo 2,4 Ghz lebih
117
disarankanRAM : 512 MBHarddisk : 160 GBCD/DVD - RW : 52xMonitor : LCD 14”Keyboard : 108 keyPrinter : LaserjetMouse : SandardBrowser : Mozila Firefox / Internet ExplorerSoftware : MySQL
Apache/2.2.11 (Win32) DAV/2 mod_ssl/2.2.11 OpenSSL/0.9.8i PHP/5.2.9MySQL client version: 5.0.51aPHP extension: mysql
Server: localhost via TCP/IPVersi Server: 5.1.33-communityProtocol version: 10
NetBeans IDE 7.2.1 (Build 201210100934) Java: 1.7.0_10; Java HotSpot(TM) Client VM 23.6-b04
4.6 Spesifikasi Dokumen Sistem Usulan
a. Nama Dokumen : Laporan ObatFungsi : Sebagai laporan data obatSumber : AdminTujuan : Farmasi
118
Media : KertasFrekuensi : Setiap MingguFormat : Lampiran B – 1
b. Nama Dokumen : Laporan DistributorFungsi : Sebagai laporan data pengirimanSumber : AdminTujuan : Pihak PengirimMedia : KertasFrekuensi : Setiap terjadi laporan pengirimanFormat : Lampiran B – 2
c. Nama Dokumen : Laporan UserFungsi : Sebagai Laporan Data UserSumber : AdminTujuan : UserMedia : KertasFrekuensi : Setiap terjadi penambahan userFormat : Lampiran B - 3
d. Nama Dokumen : Laporan ResepFungsi : Sebagai laporan data resepSumber : AdminTujuan : FarmasiMedia : KertasFrekuensi : Setiap terjadi penambahan data resep baruFormat : Lampiran B – 4
e. Nama Dokumen : Laporan PembelianFungsi : Sebagai laporan data pembelianSumber : AdminTujuan : FarmasiMedia : KertasFrekuensi : Setiap terjadi pembelian obatFormat : Lampiran B – 5
f. Nama Dokumen : Laporan PenjualanFungsi : Sebagai laporan data penjualanSumber : AdminTujuan : FarmasiMedia : KertasFrekuensi : Setiap terjadi penjualan obatFormat : Lampiran B - 6