BAB III PERANCANGAN DAN PEMBUATAN SISTEM
BAB III PERANCANGAN DAN PEMBUATAN SISTEM
3.1.
Deskripsi Kebutuhan Sistem Pada dasarnya sistem yang dibangun merupakan sebuah perangkat lunak yang memiliki fungsi untuk melakukan query, baik query fuzzy maupun query non-fuzzy yang dilakukan oleh user. Dalam sub-bab deskripsi kebutuhan sistem ini akan dibahas mengenai perancangan data. 3.1.1. Perancangan Data a) Kebutuhan Input Kebutuhan input sistem digolongkan menjadi 2, yaitu antara lain : o Input Fuzzy Data-data karyawan yang menjadi kriteria dan sebagai input fuzzy adalah sebagai berikut : 1) Usia. Data usia diperoleh dari tahun sekarang dikurangkan dengan tahun lahir karyawan. Data usia pada sistem ini mempunyai batas usia untuk usia muda dan usia tua. Batas-batas usia tersebut dapat diubah-ubah sesuai dengan keinginan. 2) Level Kompetensi. Nilai level kompetensi diperoleh dari hasil kuesioner. Masing-masing karyawan akan dinilai oleh atasan, karyawan yang sejajar, dan bawahan. Hasil kuesioner tersebut kemudian akan dihitung dan dirata-rata. Hasil rata-rata tersebut yang akan menjadi nilai level kompetensi karyawan. Nilai level kompetensi merupakan nilai karyawan dalam hal kerja sama dengan karyawan lain sesuai dengan bidang kerja masing-masing karyawan.
33
BAB III PERANCANGAN DAN PEMBUATAN SISTEM
3) Skill & Knowledge. Nilai skill & knowledge diperoleh dari hasil kuesioner. Masing-masing karyawan akan dinilai oleh atasan, karyawan yang sejajar, dan bawahan. Hasil kuesioner tersebut kemudian akan dihitung dan dirata-rata. Hasil rata-rata tersebut yang akan menjadi nilai skill & knowledge karyawan. Nilai skill & knowledge merupakan nilai untuk kemampuan pribadi karyawan sesuai dengan bidang kerja masing-masing karyawan. o Input Non-Fuzzy Data yang menjadi input non-fuzzy adalah data nama pelatihan yang ada di dalam perusahaan. b) Kebutuhan Output Hasil akhir dari sistem ini adalah berupa beberapa solusi alternatif karyawan yang akan ditugaskan berdasarkan kriteriakriteria yang telah ditentukan oleh user. 3.2. Perancangan Sistem 3.2.1. Diagram Sistem Gambaran umum sistem ini dapat dilihat pada diagram sistem berikut :
34
BAB III PERANCANGAN DAN PEMBUATAN SISTEM
Gambar 3.1. Diagram Sistem Berdasarkan diagram sistem di atas, sistem mempunyai dua user, yaitu user administrator dan user limited. User Administrator dapat melakukan proses penambahan ( input ) dan pengubahan ( edit ) data pada database dan mengoperasikan sistem dengan hak akses penuh. Sedangkan user limited hanya dapat melihat ( view ) data dari database dan mengoperasikan sistem tanpa dapat melakukan proses pengubahan data ( edit ) pada database. Output yang dihasilkan adalah beberapa solusi alternatif karyawan yang akan ditugaskan. Hasil yang diperoleh merupakan hasil akhir setelah data diproses dengan menggunakan metode Fuzzy Database Model Tahani. 3.2.2. Diagram Alir ( Flowchart ) Sistem Diagram alir ( flowchart ) sistem ini dapat digambarkan seperti berikut ini :
35
BAB III PERANCANGAN DAN PEMBUATAN SISTEM
START
data karyawan dan data pelatihan
nama pelatihan, level kompetensi, skill & knowledge, usia
data lengkap
T
Y proses data dengan menggunakan metode Fuzzy Database Model Tahani solusi alternatif karyawan STOP
Gambar 3.2. Diagram Alir ( Flowchart ) Sistem Data-data karyawan dan data-data pelatihan diinputkan ke dalam database sistem oleh seorang administrator. Administrator yang dimaksud adalah orang yang berhak melakukan input data karyawan dan data pelatihan, dalam kasus ini seorang administrator adalah Manager Human Resource Department perusahaan. Agar dapat menjalankan sistem ini, maka user harus menginputkan nama pelatihan yang akan diadakan beserta kriteriakriteria karyawan yang diinginkan. Kriteria-kriteria yang dimaksud meliputi usia, level kompetensi, dan skill & knowledge. Kemudian sistem akan melakukan validasi terhadap form inputan yang telah diisi oleh user. Jika terdapat form yang masih kosong atau 36
BAB III PERANCANGAN DAN PEMBUATAN SISTEM
tidak sesuai dengan nilai yang seharusnya, maka sistem akan mengingatkan user bahwa masih terdapat form yang belum diisi atau tidak sesuai dengan nilai yang seharusnya, dan sistem akan memfokuskan pada form yang belum diisi atau yang masih belum sesuai dengan nilai yang seharusnya. Jika semua form telah diisi dengan lengkap, maka sistem akan mengolah data-data inputan user dengan menggunakan metode fuzzy. Metode fuzzy yang digunakan adalah Fuzzy Database Model Tahani. Hasil akhir dari proses fuzzy akan menghasilkan beberapa solusi alternatif karyawan yang akan ditugaskan sesuai dengan kriteria-kriteria yang diinginkan. 3.2.3. Data Flow Diagram (DFD) 3.2.3.1. DFD Level 0 Adm inistra tor
Use r Inp ut Para meter Inp ut Data Get Data Inform ation
Get Data Inform ation
1 Decision Sup port System
+
Gambar 3.3. Data Flow Diagram (DFD) Level 0 Dari gambar tersebut di atas, terdapat 2 entitas yang berhubungan dengan sistem, yaitu administrator dan user. Administrator dapat melakukan proses input data ke dalam database, menjalankan sistem utama dan mendapatkan data dari database. Sedangkan user hanya dapat menjalankan sistem utama saja dengan cara menginputkan parameter-parameter yang dibutuhkan, yaitu usia, level kompetensi, dan skill & knowledge.
37
BAB III PERANCANGAN DAN PEMBUATAN SISTEM
3.2.3.2. DFD Level 1 Tip e Pela tihan Bid ang P elatiha n Jen is Pela tihan
1
Kat egori P elatih an Nam a Pe latihan NIK Karya wan Nam a Ka ryawan Tan ggal L ahir K aryawan Adm inistrator
Adm inistrator In put System Nam a Lokasi Ke rja Ka ryawan Nam a Po sisi Ke rja Karyawan Level Kom peten si Karyawan Skil l & Kn owled ge Karyawan Dat a Usia Karya wan
+
Dat a Leve l Kom peten si Karyawan
Dat a Skill & Kno wledg e Karyawan Get Data Inform ation 3 Get Data Info rmatio n System
Save OR Search Data
Get Data Inform ation Get Data Dat a Usia Karya wan Dat a Leve l Kom peten si Karyawan Use r Dat a Skill & Kno wledg e Karyawan
2 Sea rch Da ta Use r Inpu t System
Dat a Store
+
Gambar 3.4. Data Flow Diagram (DFD) Level 1 Berdasarkan gambar 3.3., administrator dapat melakukan input data. Data-data yang diinputkan adalah seperti yang terdapat pada gambar tersbut di atas. Data tipe pelatihan, bidang pelatihan, jenis pelatihan, kategori pelatihan, dan nama pelatihan merupakan data-data untuk pelatihan yang terdapat dalam perusahaan. Data NIK karyawan, nama karyawan, tanggal lahir karyawan, nama lokasi kerja karyawan, nama posisi karyawan, level kompetensi karyawan, dan skill & knowledge karyawan merupakan data-data untuk karyawan yang bekerja dalam perusahaan. Sedangkan data usia karyawan, data level kompetensi, dan data skill & knowledge merupakan data-data yang dibutuhkan untuk menjalankan sistem utama. 38
BAB III PERANCANGAN DAN PEMBUATAN SISTEM
Seperti yang telah dijelaskan pada DFD Level 0, user hanya dapat menjalankan sistem utama saja dengan cara menginputkan parameter-parameter yang dibutuhkan, yaitu data usia, data level kompetensi, dan data skill & knowledge. 3.2.3.3. DFD Level 2 3.2.3.3.1. Administrator Nam a Pel atihan Adm inistra tor 1 Tip e Pela tihan Adm inistra tor Bid ang Pe latiha n Inpu t Edit Delete Data Pelati han System
Adm inistra tor
Save Edit Delete Data
Dat abase Pelatih an
Adm inistra tor
Jen is Pela tihan Adm inistra tor Get Data
Kat egori P elatih an
Get Data I nforma tion
Adm inistra tor
6 Get Data Info rmatio n System NIK Karya wan Adm inistra tor
2 Nam a Karyawan
Adm inistra tor
Get Data Tan ggal L ahir K aryawa n
Adm inistra tor Nam a Lokasi Ke rja Karyawan Adm inistra tor
Inpu t Edit Delete Data Karyawan System Save Edit Delete Data
Dat abase Karyawan
Nam a Posisi Kerja Karyawan Adm inistra tor Get Data Adm inistra tor Level Kom peten si Karyawan Skil l & Kn owledg e Karyawan Adm inistra tor
4
Get Data
Hitu ng Fu ngsi Kea nggot aan System
Dat a Usia Karyawan Adm inistra tor
Dat a Leve l Kom petensi Karya wan Adm inistra tor
Save Miu Skill & Knowledge Karyawan 3
Inpu t Data Kriteria Karyawan System
Get Data Save Data
Dat abase Temp Krit eria Ka ryawa n
Dat abase Temp Skill & Kno wledg e Karyawan Save Miu Level Kompe tensi Karyawan
Save Miu Usia K aryawa n Dat a Skill & Kno wledge Karya wan Adm inistra tor
Dat abase Temp Level Kom peten si Karyawan Dat abase Temp Usia Karya wan
Get Data Dat abase Temp Hasil A khir
Get Data Save Data
Get Data 5 Fuzzy Dat abase Mod el Ta hani System
Gambar 3.5. Data Flow Diagram (DFD) Level 2 Administrator Berdasarkan gambar tersebut di atas, administrator mempunyai hak akses penuh terhadap sistem. Pada sistem yang menangani data-data pelatihan dan data-data karyawan, administrator dapat melakukan proses penambahan data, pengubahan data, dan penghapusan data. Pada proses yang menangani jalannya sistem utama, administrator harus menginputkan data-data parameter yang diperlukan untuk kualifikasi karyawan. Data parameter tersebut adalah data usia 39
BAB III PERANCANGAN DAN PEMBUATAN SISTEM
karyawan, data level kompetensi karyawan, dan data skill & knowledge karyawan. Data parameter tersebut akan disimpan di dalam tabel temp kriteria karyawan. Data-data dari tabel temp kriteria karyawan dan tabel karyawan diambil untuk proses perhitungan fungsi keanggotaan. Kemudian dari masing-masing data tersebut, data usia karyawan, data level kompetensi karyawan, dan data skill & knowledge karyawan, akan diperoleh nilai miu dan disimpan ke dalam tabel temp usia karyawan (untuk miu data usia), tabel temp level kompetensi karyawan (untuk miu data level kompetensi), dan tabel temp skill & knowledge karyawan (untuk miu data skill & knowledge). Data dari masing-masing tabel, tabel temp usia karyawan, tabel temp level kompetensi karyawan, dan tabel temp skill & knowledge, akan diambil untuk diproses dengan menggunakan metode fuzzy database model tahani. Data-data dari proses ini akan disimpan dalam tabel temp hasil akhir. 3.2.3.3.2. User Database Karyawann
Get Data
2
Hitung Fungsi Keanggotaan Sy st em
Data Usia Karyawan User
1 Get Data
Data Lev el Kompetensi Kary awan User
Sav e Miu Skill & Knowledge Kary awan
Sav e Data Input Data Kriteria Kary awan System
Database Temp Kriteria Kary awann
Data Skill & Knowledge Kary awan
Sav e Miu Lev el Kompet ensi Kary awan
User
Sav e Miu Usia Karyawan
Database Temp Skill & Knowledge Karyawann
Database Temp Level Kompetensi Karyawann Database Temp Usia Kary awann
Get Data Get Data
User Get Data Inf ormat ion
4 Get Data Inf ormat ion System
Get Data 3 Get Data Sav e Data
Fuzzy Database Model Tahani Sy st em
Database Temp Hasil Akhirr
Gambar 3.6. Data Flow Diagram (DFD) Level 2 User User hanya dapat menjalankan sistem utama saja dengan cara menginputkan parameter-parameter yang dibutuhkan untuk kualifikasi karyawan, yaitu data usia, data level kompetensi, dan data skill & knowledge. Data parameter tersebut akan disimpan di dalam tabel temp kriteria karyawan. Data-data dari tabel temp kriteria karyawan dan tabel karyawan diambil untuk proses perhitungan fungsi keanggotaan. 40
BAB III PERANCANGAN DAN PEMBUATAN SISTEM
Kemudian dari masing-masing data tersebut, data usia karyawan, data level kompetensi karyawan, dan data skill & knowledge karyawan, akan diperoleh nilai miu dan disimpan ke dalam tabel temp usia karyawan (untuk miu data usia), tabel temp level kompetensi karyawan (untuk miu data level kompetensi), dan tabel temp skill & knowledge karyawan (untuk miu data skill & knowledge). Data dari masing-masing tabel, tabel temp usia karyawan, tabel temp level kompetensi karyawan, dan tabel temp skill & knowledge, akan diambil untuk diproses dengan menggunakan metode fuzzy database model tahani. Data-data dari proses ini akan disimpan dalam tabel temp hasil akhir. 3.2.4. Use Case Diagram Use case diagram untuk sistem ini adalah sebagai berikut :
Verifikasi User
Input Data Pelatihan yang Akan Diadakan
Input Kriteria Karyawan
User
Administrator Add Data Pelatihan
Add Data Karyawan
Add Data User Delete Data User Edit Data Pelatihan
Delete Data Karyawan Edit Data Karyawan Edit Margin Usia Delete Data Pelatihan
Edit Data User
Gambar 3.7. Use Case Diagram 41
BAB III PERANCANGAN DAN PEMBUATAN SISTEM
Aktor pada use case diagram tersebut di atas ada 2, yaitu administrator dan user. Administrator mempunyai hak akses penuh terhadap sistem, sedangkan user hanya mempunyai hak akses untuk menjalankan sistem ini saja. Penjelasan masing-masing use case dari use case diagram tersebut di atas adalah sebagai berikut : Tabel 3.1. Tabel Rincian Use Case Use Case Keterangan Untuk membedakan hak akses Verifikasi User yang dimiliki Input Data Pelatihan yang Akan Untuk memilih pelatihan yang Diadakan akan diadakan Untuk memilih karyawan yang Input Kriteria Karyawan akan dipilih sesuai dengan kriteria tertentu Add Data Pelatihan Untuk menambah data pelatihan Add Data Karyawan Untuk menambah data karyawan Add Data User Untuk menambah data user Edit Data Pelatihan Untuk mengubah data pelatihan Edit Data Karyawan Untuk mengubah data karyawan Edit Data User Untuk mengubah data user Edit Margin Usia Untuk mengubah data margin usia Delete Data Pelatihan Untuk menghapus data pelatihan Delete Data Karyawan Untuk menghapus data karyawan Delete Data User Untuk menghapus data user 3.2.5. Class Diagram Sistem ini dibangun dengan menggunakan beberapa package. Package-package tersebut dapat digambarkan ke dalam sebuah class diagram sebagai berikut :
Gambar 3.8. Class Diagram untuk Package 42
BAB III PERANCANGAN DAN PEMBUATAN SISTEM
Dari keenam package tersebut di atas, package method merupakan package yang berisi class-class untuk menangani kerja dari sistem ini. Berikut ini adalah class diagram dari package method :
Gambar 3.9. Class Diagram untuk Package Method (dataManipulationMethod) Class dataManipulationMethod tersebut di atas digunakan untuk melakukan manipulasi data terhadap data dalam database. Class ini banyak digunakan oleh package table.
43
BAB III PERANCANGAN DAN PEMBUATAN SISTEM
Gambar 3.10. Class Diagram untuk Package Method (fuzzyLogicMethod) Class fuzzyLogicMethod tersebut di atas digunakan untuk melakukan proses data dengan menggunakan metode fuzzy database model tahani. Proses yang ditangani class ini adalah perhitungan fungsi keanggotaan untuk data usia, level kompetensi, dan skill & knowledge.
44
BAB III PERANCANGAN DAN PEMBUATAN SISTEM
Gambar 3.11. Class Diagram untuk Package Method (methods) Class methods tersebut di atas menangani semua kerja dari sistem ini. Semua package yang ada akan memanggil class mthods tersebut. 3.2.6. Desain Database Perancangan database dilakukan berdasarkan data-data hasil survey yang didapatkan, dalam hal ini adalah data dari PT. TELKOM DIVRE V Ketintang Surabaya. Dikarenakan sifat data-data yang sangat rahasia sehingga sangat sulit untuk membuat konsep database sesuai dengan keadaan aslinya. Dengan survey dan pengamatan yang mendalam pada perusahaan PT. TELKOM DIVRE V Ketintang Surabaya, maka konsep database yang akan dibuat adalah sebagai berikut :
45
BAB III PERANCANGAN DAN PEMBUATAN SISTEM
Tip e Pela tihan id_ tipe_p elatiha n nam a_tip e_pela tihan
Kat egori P elatih an
Jen is Pela tihan Mempunyai
id_ jenis_p elatih an nam a_jen is_pel atihan
Mempunyai
id_ katego ri_pela tihan nam a_kat egori_ pelati han
Bid ang P elatiha n Mempunyai
Mempunyai
id_ bidang _pela tihan nam a_bid ang_p elatih an Karyawan
Memilik NIK
Memiliki NIK
Berjenis Kelamin
Jen is Kela min id_ jenis_kelami n nam a_jen is_kel amin
nik nam a tgl_ lahir jen is_kela min pen didika n_tera khir nam a_lokasi_ke rja nam a_po sisi_ke rja leve l_kom peten si skill _knowledge hist ory pe latihan
Nam a Pe latihan id_ nama_ pelati han nam a_pe latihan sya rat_pe latihan pra syarat_ pelati han Memiliki
Pen didika n
Relation_156
id_ pendid ikan nam a_pe ndidika n
Dat a Ceta k Mamiliki NIK
Memiliki NIK
Miu Usia Karyawan nik nam a tgl_ lahir nam a_lokasi_ke rja nam a_po sisi_ke rja usia mu da parobaya tua
Miu Leve l Komp etensi nik nam a tgl_ lahir nam a_lokasi_ke rja nam a_po sisi_ke rja leve l_kom peten si K1 K2 K3 K4 K5
Ma rgin Usia id usia _mud a usia _tua
Miu Skill & Knowledge nik nam a tgl_ lahir nam a_lokasi_ke rja nam a_po sisi_ke rja skill _knowledge K1 K2 K3 K4 K5
nom or nik nam a tgl_ lahir nam a_lokasi_ke rja nam a_po sisi_ke rja leve l_kom peten si skill _knowledge kete ranga n Cek id vali d1 vali d2 vali d3 vali d4 vali d5
Use r id use rname password leve l
Gambar 3.12. Rancangan Database Dalam rancangan database yang ditunjukkan di atas, database terdiri dari 9 tabel dengan rincian sebagai berikut : Tabel 3.2. Tabel Rincian Database Nama Tabel Keterangan Tabel Karyawan Menyimpan semua data karyawan Tabel Tipe Pelatihan Menyimpan semua data tipe pelatihan Tabel Bidang Pelatihan Menyimpan semua data bidang pelatihan Tabel Jenis Pelatihan Menyimpan semua data jenis pelatihan Tabel Kategori Pelatihan Menyimpan semua data kategori pelatihan 46
BAB III PERANCANGAN DAN PEMBUATAN SISTEM
Tabel Nama Pelatihan Tabel Jenis Kelamin Tabel Pendidikan Tabel Margin Usia Tabel User Tabel Cek Tabel Miu Usia Tabel Miu Level Kompetensi Tabel Miu Knowledge
Skill
Tabel Temp Hasil Akhir Tabel Data Cetak
&
Menyimpan semua data nama pelatihan beserta syarat dan prasyarat yang dimiliki Menyimpan semua data jenis kelamin Menyimpan semua data pendidikan Menyimpan data batas usia muda dan tua Menyimpan semua data user administrator Menyimpan data untuk validasi Menyimpan semua data usia dan nilai miu usia masing-masing karyawan Menyimpan semua data level kompetensi dan miu level kompetensi masing-masing karyawan Menyimpan semua data skill & knowledge dan miu skill & knowledge masing-masing karyawan Menyimpan data hasil proses sistem Menyimpan data karyawan sementara yang akan disimpan
3.2.7. Fungsi Keanggotaan Pada sistem ini, setiap variabel fuzzy menggunakan fungsi keanggotaan trapesium sebagai pendekatan untuk memperoleh derajat keanggotaan suatu nilai dalam suatu himpunan fuzzy. a) Variabel Usia Variabel usia mempunyai 3 himpunan fuzzy, yaitu : MUDA, PAROBAYA, dan TUA.
47
BAB III PERANCANGAN DAN PEMBUATAN SISTEM
1
MUDA
TUA
PAROBAYA
µ[x]
0
35
40
50
45
59
Usia ( tahun )
Gambar 3.13. Representasi Grafik Variabel Usia Fungsi keanggotaan :
µ MUDA[x] =
1;
x ≤ 35
(40 - x) / (40 - 35);
35 ‹ x ‹ 40
0;
x ≥ 40
µ PAROBAYA[x] =
µ TUA[x] =
48
0;
x ≤ 35
(x - 35) / (40 - 35);
35 ‹ x ‹ 40
1;
40 ≤ x ≤ 45
(50 - x) / (50 - 45);
45 ‹ x ‹ 50
0;
x ≥ 50
0;
x ≤ 45
(x - 45) / (50 - 45);
45 ‹ x ‹ 50
1;
50 ‹ x ‹ 59
BAB III PERANCANGAN DAN PEMBUATAN SISTEM
b) Variabel Level Kompetensi Variabel level kompetensi mempunyai 5 himpunan fuzzy, yaitu : K1, K2, K3, K4, dan K5. 1
K5
K4
K3
K2
K1
µ[y]
-2
-1,2
-1
-0,8
-0,4 0,4 0 Level Kompetensi
0,8
1,2
2
Gambar 3.14. Representasi Grafik Variabel Level Kompetensi Fungsi keanggotaan :
µ K5[y] =
µ K4[y] =
1;
-2 ≤ y ≤ -1,2
(-1 - y) / (-1 + 1,2);
-1,2 ‹ y ‹ -1
0;
y ≥ -1
0;
y ≤ -1,2
(y + 1,2) / (-1 + 1,2);
-1,2 ‹ y ‹ -1
1;
-1 ≤ y ≤ -0,8
(-0,4 - y) / (-0,4 + 0,8); -0,8 ‹ y ‹ -0,4 0;
y ≥ -0,4
49
BAB III PERANCANGAN DAN PEMBUATAN SISTEM
0;
y ≤ -0,8
(y + 0,8) / (-0,4 + 0,8); -0,8 ‹ y ‹ -0,4 µ K3[y] =
µ K2[y] =
µ K1[y] =
1;
-0,4 ≤ y ≤ 0
(0,4 - y) / (-0,4);
0 ‹ y ‹ 0,4
0;
y ≥ 0,4
0;
y≤0
(y) / (0,4);
0 ‹ y ‹ 0,4
1;
0,4 ≤ y ≤ 0,8
(1,2 - y) / (1,2 – 0,8);
0,8 ‹ y ‹ 1,2
0;
x ≥ 1,2
0;
y ≤ 0,8
(y – 0,8) / (1,2 – 0,8);
0,8 ‹ y ‹ 1,2
1;
1,2 ≤ y ≤ 2
c) Variabel Skill & Knowledge Sama halnya dengan variabel level kompetensi, variabel skill & knowledge juga mempunyai 5 himpunan fuzzy, yaitu : K1, K2, K3, K4, dan K5.
50
BAB III PERANCANGAN DAN PEMBUATAN SISTEM
K5
1
K4
K2
K3
K1
µ[z]
-2
-1,2
-1
-0,8
-0,4
0
0,4
0,8
1,2
2
Skill & Knowledge
Gambar 3.15. Representasi Grafik Variabel Skill & Knowledge Fungsi Keanggotaan :
µ K5[z] =
µ K4[z] =
1;
-2 ≤ z ≤ -1,2
(-1 - z) / (-1 + 1,2);
-1,2 ‹ z ‹ -1
0;
z ≥ -1
0;
z ≤ -1,2
(z + 1,2) / (-1 + 1,2);
-1,2 ‹ z ‹ -1
1;
-1 ≤ z ≤ -0,8
(-0,4 - z) / (-0,4 + 0,8); -0,8 ‹ z ‹ -0,4 0;
z ≥ -0,4
51
BAB III PERANCANGAN DAN PEMBUATAN SISTEM
µ K3[z] =
µ K2[z] =
µ K1[z] =
0;
z ≤ -0,8
(z + 0,8) / (-0,4 + 0,8);
-0,8 ‹ z ‹ -0,4
1;
-0,4 ≤ z ≤ 0
(0,4 - z) / (-0,4);
0 ‹ z ‹ 0,4
0;
z ≥ 0,4
0;
z≤0
(z) / (0,4);
0 ‹ z ‹ 0,4
1;
0,4 ≤ z ≤ 0,8
(1,2 - z) / (1,2 – 0,8);
0,8 ‹ z ‹ 1,2
0;
z ≥ 1,2
0;
z ≤ 0,8
(z – 0,8) / (1,2 – 0,8);
0,8 ‹ z ‹ 1,2
1;
1,2 ≤ z ≤ 2
3.3. Perancangan Program 3.3.1. Perangkat Lunak Pendukung Perangkat lunak yang digunakan dalam pembangunan sistem ini adalah antara lain : a) Microsoft Windows XP Service Pack 3. b) Java SE Development Kit (JDK) 6 Update 14. c) NetBeans 6.7. d) Xampp 1.7.1. e) MySQL Connector Java 5.1.7. 52
BAB III PERANCANGAN DAN PEMBUATAN SISTEM
3.3.2. Koneksi Database Agar sistem dapat terhubung dengan database MySQL, langkahlangkah yang harus dilakukan adalah sebagai berikut : a) Copykan file MySQL-Connector-Java-5.1.7-bin.jar ke folder instalasi Java Anda. Sebagai contoh pada komputer yang digunakan untuk membangun sistem ini file MySQL-ConnectorJava-5.1.7-bin.jar dicopykan di : C:\Program Files\Java\jdk1.6.0_13\lib\ext C:\Program Files\Java\jdk1.6.0_10\jre\lib\ext C:\Program Files\Java\jre6\lib\ext Jangan terpaku pada contoh di atas. Sesuaikan dengan folder dimana program Java terinstal. b) Pada project yang akan dihubungkan dengan database MySQL, pastikan bahwa pada folder library telah terdapat MySQL-Connector-Java-5.1.7-bin.jar.
Gambar 3.16. Lokasi MySQL-Connector-Java-5.1.7-bin.jar Kemudian buatlah sebuah class yang berisi program untuk melakukan koneksi antara program Java dengan database MySQL.
53
BAB III PERANCANGAN DAN PEMBUATAN SISTEM
Berikut ini merupakan program untuk koneksi antara program Java dengan database MySQL : public void koneksi(){ String dbname = "jdbc:mysql://localhost:3306/final_project_2"; try{ Class.forName("com.mysql.jdbc.Driver"); con = DriverManager.getConnection(dbname,"root",""); }catch(ClassNotFoundException ex) { System.err.println("Driver Error"); ex.printStackTrace(); System.exit(1); }catch(SQLException e){ e.printStackTrace(); JOptionPane.showMessageDialog(null, "Tidak Berhasil Koneksi dengan Database"); System.exit(0); } } String dbname = "jdbc:mysql://localhost:3306/final_project_2"; merupakan baris program untuk menginisialisasi variabel String dbname dengan lokasi database MySQL dan port yang digunakan serta nama database yang akan digunakan, dalam sistem ini menggunakan database final_project_2. Class.forName("com.mysql.jdbc.Driver"); merupakan baris program untuk memanggil driver MySQL. Tiap-tiap database mempunyai driver yang berbeda. Driver untuk MySQL menggunakan com.mysql.jdbc.Driver. con = DriverManager.getConnection(dbname,"root",""); merupakan baris program untuk membuat koneksi dengan database MySQL. Method getConnection() melewatkan 3 parameter, yaitu URL lokasi database dalam bentuk jdbc:subprotocol:subname, nama username, serta password MySQL.
54
BAB III PERANCANGAN DAN PEMBUATAN SISTEM
3.3.3. Perancangan Antarmuka Pada bagian ini akan dibahas mengenai perancangan antarmuka sistem. Antarmuka yang akan dibangun dirancang sesederhana mungkin sehingga memudahkan user dalam menggunakannya. 3.3.3.1. Form Verifikasi User Form verifikasi user merupakan form dimana user harus menginputkan data username dan password. Form verifikasi user berfungsi untuk mengetahui level user yang akan menggunakan sistem ini. Berikut ini merupakan tampilan dari form verifikasi user :
Gambar 3.17. Form Verifikasi User 3.3.3.2. Form Utama Form utama merupakan form dimana program utama dari sistem ini akan bekerja. Berikut ini adalah tampilan dari form utama :
55
BAB III PERANCANGAN DAN PEMBUATAN SISTEM
Gambar 3.18. Form Utama (1) Pada form tersebut di atas, user diminta untuk memilih nama pelatihan yang akan diadakan pada comboBox yang telah disediakan. Isi dari masing-masing comboBox tersebut merupakan data yang telah tersimpan di dalam database. Ketika program dijalankan pertama kali, comboBox tipe pelatihan akan terisi secara otomatis dengan data yang telah tersimpan di dalam database. Berikut in adalah baris program untuk comboBox tipe pelatihan agar secara otomatis terisi dengan data yang telah tersimpan di dalam database : ResultSet hasilTipePelatihan = panggilMethod.getTipePelatihan(); try{ while(hasilTipePelatihan.next()){ cbTipePelatihan.addItem(hasilTipePelatihan.getString("nama_tipe_pel atihan")); } 56
BAB III PERANCANGAN DAN PEMBUATAN SISTEM
panggilMethod.tutupStatement(); }catch(SQLException e){ e.printStackTrace(); } ComboBox bidang pelatihan akan terisi apabila user telah memilih salah satu nilai yang terdapat pada comboBox tipe pelatihan. Jika user tidak memilih nilai apapun pada comboBox tipe pelatihan, maka comboBox bidang pelatihan tidak akan dapat diakses. Di bawah ini adalah baris program untuk comboBox bidang pelatihan : int jumlahIsi = 0; if(cbTipePelatihan.getSelectedIndex() != 0){ lBidangPelatihan.setEnabled(true); cbBidangPelatihan.setEnabled(true); String selectedIndex = cbTipePelatihan.getSelectedItem().toString(); ResultSet hasilBidangPelatihan panggilMethod.getBidangPelatihan(selectedIndex);
=
jumlahIsi = cbBidangPelatihan.getItemCount(); for(int i=jumlahIsi; i > 1; i--){ cbBidangPelatihan.removeItemAt(1); } try{ while(hasilBidangPelatihan.next()){ cbBidangPelatihan.addItem(hasilBidangPelatihan.getString("nama_bid ang_pelatihan")); } panggilMethod.tutupStatement(); }catch(SQLException e){ e.printStackTrace(); } }else{ jumlahIsi = cbBidangPelatihan.getItemCount(); for(int i=jumlahIsi; i > 1; i--){ 57
BAB III PERANCANGAN DAN PEMBUATAN SISTEM
cbBidangPelatihan.removeItemAt(1); } lBidangPelatihan.setEnabled(false); cbBidangPelatihan.setEnabled(false); } lJenisPelatihan.setEnabled(false); cbJenisPelatihan.setSelectedIndex(0); cbJenisPelatihan.setEnabled(false); lKategoriPelatihan.setEnabled(false); cbKategoriPelatihan.setSelectedIndex(0); cbKategoriPelatihan.setEnabled(false); lNamaPelatihan.setEnabled(false); cbNamaPelatihan.setSelectedIndex(0); cbNamaPelatihan.setEnabled(false); ComboBox jenis pelatihan akan terisi apabila user telah memilih salah satu nilai yang terdapat pada comboBox bidang pelatihan. Jika user tidak memilih nilai apapun pada comboBox bidang pelatihan, maka comboBox jenis pelatihan tidak akan dapat diakses. Di bawah ini adalah baris program untuk comboBox jenis pelatihan : int jumlahIsi = 0; String selectedIndex = ""; String selectedIndex_2 = ""; if(cbBidangPelatihan.getSelectedIndex() != 0){ if(cbTipePelatihan.getSelectedItem().toString().equalsIgnoreCase("No n Teknis")){ lNamaPelatihan.setEnabled(true); cbNamaPelatihan.setEnabled(true); selectedIndex = cbTipePelatihan.getSelectedItem().toString(); selectedIndex_2 = cbBidangPelatihan.getSelectedItem().toString(); ResultSet hasilNamaPelatihan = panggilMethod.getNamaPelatihan(selectedIndex, selectedIndex_2);
58
BAB III PERANCANGAN DAN PEMBUATAN SISTEM
jumlahIsi = cbNamaPelatihan.getItemCount(); for(int i=jumlahIsi; i > 1; i--){ cbNamaPelatihan.removeItemAt(1); } try{ while(hasilNamaPelatihan.next()){ cbNamaPelatihan.addItem(hasilNamaPelatihan.getString("nama_pelati han")); } panggilMethod.tutupStatement(); }catch(SQLException e){ e.printStackTrace(); } }else{ lJenisPelatihan.setEnabled(true); cbJenisPelatihan.setEnabled(true); selectedIndex = cbBidangPelatihan.getSelectedItem().toString(); ResultSet hasilJenisPelatihan panggilMethod.getJenisPelatihan(selectedIndex); jumlahIsi = cbJenisPelatihan.getItemCount(); for(int i=jumlahIsi; i > 1; i--){ cbJenisPelatihan.removeItemAt(1); }
=
try{ while(hasilJenisPelatihan.next()){ cbJenisPelatihan.addItem(hasilJenisPelatihan.getString("nama_jenis_p elatihan")); } panggilMethod.tutupStatement(); }catch(SQLException e){ e.printStackTrace(); } } }else{ 59
BAB III PERANCANGAN DAN PEMBUATAN SISTEM
jumlahIsi = cbJenisPelatihan.getItemCount(); for(int i=jumlahIsi; i > 1; i--){ cbJenisPelatihan.removeItemAt(1); } lJenisPelatihan.setEnabled(false); cbJenisPelatihan.setEnabled(false); jumlahIsi = cbNamaPelatihan.getItemCount(); for(int i=jumlahIsi; i > 1; i--){ cbNamaPelatihan.removeItemAt(1); } lNamaPelatihan.setEnabled(false); cbNamaPelatihan.setEnabled(false); } ComboBox kategori pelatihan akan terisi apabila user telah memilih salah satu nilai yang terdapat pada comboBox jenis pelatihan. Jika user tidak memilih nilai apapun pada comboBox jenis pelatihan, maka comboBox kategori pelatihan tidak akan dapat diakses. Di bawah ini adalah baris program untuk comboBox kategori pelatihan : int jumlahIsi = 0; if(cbJenisPelatihan.getSelectedIndex() != 0){ lKategoriPelatihan.setEnabled(true); cbKategoriPelatihan.setEnabled(true); String selectedIndex = cbJenisPelatihan.getSelectedItem().toString(); ResultSet hasilKategoriPelatihan = panggilMethod.getKategoriPelatihan(selectedIndex); jumlahIsi = cbKategoriPelatihan.getItemCount(); for(int i=jumlahIsi; i > 1; i--){ cbKategoriPelatihan.removeItemAt(1); } try{ while(hasilKategoriPelatihan.next()){ 60
BAB III PERANCANGAN DAN PEMBUATAN SISTEM
cbKategoriPelatihan.addItem(hasilKategoriPelatihan.getString("nama_ kategori_pelatihan")); } panggilMethod.tutupStatement(); }catch(SQLException e){ e.printStackTrace(); } }else{ jumlahIsi = cbKategoriPelatihan.getItemCount(); for(int i=jumlahIsi; i > 1; i--){ cbKategoriPelatihan.removeItemAt(1); } lKategoriPelatihan.setEnabled(false); cbKategoriPelatihan.setEnabled(false); } ComboBox nama pelatihan akan terisi apabila user telah memilih salah satu nilai yang terdapat pada comboBox kategori pelatihan. Jika user tidak memilih nilai apapun pada comboBox kategori pelatihan, maka comboBox nama pelatihan tidak akan dapat diakses. Di bawah ini adalah baris program untuk comboBox nama pelatihan : int jumlahIsi = 0; if(cbKategoriPelatihan.getSelectedIndex() != 0){ lNamaPelatihan.setEnabled(true); cbNamaPelatihan.setEnabled(true); String selectedIndex cbKategoriPelatihan.getSelectedItem().toString(); ResultSet hasilNamaPelatihan panggilMethod.getNamaPelatihan(selectedIndex);
= =
jumlahIsi = cbNamaPelatihan.getItemCount(); for(int i=jumlahIsi; i > 1; i--){ cbNamaPelatihan.removeItemAt(1); } 61
BAB III PERANCANGAN DAN PEMBUATAN SISTEM
try{ while(hasilNamaPelatihan.next()){ cbNamaPelatihan.addItem(hasilNamaPelatihan.getString("nama_pelati han")); } panggilMethod.tutupStatement(); }catch(SQLException e){ e.printStackTrace(); } }else{ jumlahIsi = cbNamaPelatihan.getItemCount(); for(int i=jumlahIsi; i > 1; i--){ cbNamaPelatihan.removeItemAt(1); } lNamaPelatihan.setEnabled(false); cbNamaPelatihan.setEnabled(false); } Setelah memilih nama pelatihan yang akan diadakan, textArea untuk syarat dan prasyarat akan terisi secara otomatis sesuai dengan syarat dan prasyarat yang dimiliki oleh nama pelatihan yang dipilih. Selanjutnya klik tombol berikutnya yang terdapat pada form tersebut di atas. Form yang akan tampil adalah form yang berisi sebuah tabel dan form-form untuk kriteria karyawan. Tabel pada form ini berisi data-data karyawan yang lolos seleksi berdasarkan syarat yang dimiliki oleh pelatihan.
62
BAB III PERANCANGAN DAN PEMBUATAN SISTEM
Gambar 3.19. Form Utama (2) Pada form kriteria karyawan, isikan data usia, level kompetensi, dan skill & knowledge sesuai dengan yang diinginkan. Masing-masing form pada form kriteria karyawan mempunyai batas, form usia mempunyai batas usia muda dan batas usia tua yang ditetapkan oleh user. Sedangkan batas level kompetensi dan skill & knowledge mempunyai batas antara -2 s/d 2. Jika form-form pada kriteria karyawan diisi dengan data yang tidak sesuai dengan batas-batas yang telah ditentukan, sistem akan memberikan peringatan bahwa data yang diisikan tidak valid. Jika semua form pada kriteria karyawan telah diisi sesuai dengan batas-batas yang telah ditentukan, maka tombol berikutnya secara otomatis akan menjadi enable. Klik tombol berikutnya. Form yang akan tampil adalah form dengan sebuah tabel. Tabel pada form ini berisi data-data karyawan yang lolos seleksi berdasarkan data-data yang telah diinputkan pada form kriteria karyawan. Pada saat tombol berikutnya diklik, proses perhitungan fungsi keanggotaan untuk variabel usia, level kompetensi, dan skill & knowledge karyawan yang telah terseleksi serta variabel-variabel yang terdapat pada kriteria karyawan dilakukan. Berikut ini adalah baris program untuk mengerjakan proses perhitungan fungsi keanggotaan untuk variabel-variabel pada kriteria karyawan : 63
BAB III PERANCANGAN DAN PEMBUATAN SISTEM
fuzzyLogicMethod fuzzy = new fuzzyLogicMethod(); fuzzy.fungsiKeanggotaanUsia(usia); float miuUsiaMuda = fuzzy.getMiuUsiaMuda(); float miuUsiaParobaya = fuzzy.getMiuUsiaParobaya(); float miuUsiaTua = fuzzy.getMiuUsiaTua(); panggilMethod.updateMiuUsia(miuUsiaMuda, miuUsiaParobaya, miuUsiaTua); fuzzy.fungsiKeanggotaanLevelKompetensi(levelKompetensi); double miuLevelKompetensiK1 = fuzzy.getMiuLevelKompetensiK1(); double miuLevelKompetensiK2 = fuzzy.getMiuLevelKompetensiK2(); double miuLevelKompetensiK3 = fuzzy.getMiuLevelKompetensiK3(); double miuLevelKompetensiK4 = fuzzy.getMiuLevelKompetensiK4(); double miuLevelKompetensiK5 = fuzzy.getMiuLevelKompetensiK5(); panggilMethod.updateMiuLevelKompetensi(miuLevelKompetensiK1, miuLevelKompetensiK2, miuLevelKompetensiK3, miuLevelKompetensiK4, miuLevelKompetensiK5); fuzzy.fungsiKeanggotaanSkillKnowledge(skillKnowledge); double miuSkillKnowledgeK1 = fuzzy.getMiuSkillKnowledgeK1(); double miuSkillKnowledgeK2 = fuzzy.getMiuSkillKnowledgeK2(); double miuSkillKnowledgeK3 = fuzzy.getMiuSkillKnowledgeK3(); double miuSkillKnowledgeK4 = fuzzy.getMiuSkillKnowledgeK4(); double miuSkillKnowledgeK5 = fuzzy.getMiuSkillKnowledgeK5(); panggilMethod.updateMiuSkillKnowledge(miuSkillKnowledgeK1, miuSkillKnowledgeK2, miuSkillKnowledgeK3, miuSkillKnowledgeK4, miuSkillKnowledgeK5); Sedangkan baris program untuk mengerjakan proses perhitungan fungsi keanggotaan untuk variabel usia, level kompetensi dan skill & knowledge masing-masing karyawan yang telah terseleksi adalah : int jumlahDataAwal = tabelModelDataHasilAwal.getRowCount(); int jumlahKolom = tabelModelDataHasilAwal.getColumnCount(); Object tempDataAwal = new Object(); String nik = ""; 64
BAB III PERANCANGAN DAN PEMBUATAN SISTEM
float usiaKaryawan = 0F; for(int i=0; i<jumlahDataAwal; i++){ for(int j=0; j<jumlahKolom; j++){ tempDataAwal = tabelModelDataHasilAwal.getValueAt(i, j); if(j == 1){ nik = tempDataAwal.toString(); panggilMethod.updateNikKaryawanTempUsiaKaryawan(nik); }else if(j == 2){ panggilMethod.updateNamaKaryawanTempUsiaKaryawan(nik, tempDataAwal.toString()); }else if(j == 3){ String usiaTemp = tempDataAwal.toString(); panggilMethod.updateTanggalLahirKaryawanTempUsiaKaryawan(nik , usiaTemp); int usiaTemp2 = Integer.parseInt(usiaTemp.substring(0, 4)); int tahunSekarang = Calendar.getInstance().get(Calendar.YEAR); usiaTemp2 = tahunSekarang - usiaTemp2; panggilMethod.updateUsiaKaryawanTempUsiaKaryawan(nik, usiaTemp2); usiaKaryawan = (float) usiaTemp2; }else if(j == 4){ panggilMethod.updateLokasiKerjaKaryawanTempUsiaKaryawan(nik, tempDataAwal.toString()); }else if(j == 5){ panggilMethod.updatePosisiKaryawanTempUsiaKaryawan(nik, tempDataAwal.toString()); }else{ continue; } fuzzy.fungsiKeanggotaanUsia(usiaKaryawan); panggilMethod.updateUsiaMudaKaryawanTempUsiaKaryawan(nik, fuzzy.getMiuUsiaMuda()); panggilMethod.updateUsiaParobayaKaryawanTempUsiaKaryawan(nik , fuzzy.getMiuUsiaParobaya()); panggilMethod.updateUsiaTuaKaryawanTempUsiaKaryawan(nik, fuzzy.getMiuUsiaTua()); } 65
BAB III PERANCANGAN DAN PEMBUATAN SISTEM
} double levelKompetensiKaryawan = 0D; for(int i=0; i<jumlahDataAwal; i++){ for(int j=0; j<jumlahKolom; j++){ tempDataAwal = tabelModelDataHasilAwal.getValueAt(i, j); if(j == 1){ nik = tempDataAwal.toString(); panggilMethod.updateNikKaryawanTempLevelKompetensiKaryawan( nik); }else if(j == 2){ panggilMethod.updateNamaKaryawanTempLevelKompetensiKaryawa n(nik, tempDataAwal.toString()); }else if(j == 3){ String usiaTemp = tempDataAwal.toString(); panggilMethod.updateTanggalLahirKaryawanTempLevelKompetensi Karyawan(nik, usiaTemp); }else if(j == 4){ panggilMethod.updateLokasiKerjaKaryawanTempLevelKompetensiKa ryawan(nik, tempDataAwal.toString()); }else if(j == 5){ panggilMethod.updatePosisiKaryawanTempLevelKompetensiKaryawa n(nik, tempDataAwal.toString()); }else if(j == 6){ String levelKompetensiTemp = tempDataAwal.toString(); levelKompetensiKaryawan = Double.parseDouble(levelKompetensiTemp); panggilMethod.updateLevelKompetensiKaryawanTempLevelKompete nsiKaryawan(nik, levelKompetensiKaryawan); }else{ continue; } fuzzy.fungsiKeanggotaanLevelKompetensi(levelKompetensiKaryawan ); panggilMethod.updateLevelKompetensiK1TempLevelKompetensiKar yawan(nik, fuzzy.getMiuLevelKompetensiK1()); panggilMethod.updateLevelKompetensiK2TempLevelKompetensiKar yawan(nik, fuzzy.getMiuLevelKompetensiK2()); 66
BAB III PERANCANGAN DAN PEMBUATAN SISTEM
panggilMethod.updateLevelKompetensiK3TempLevelKompetensiKar yawan(nik, fuzzy.getMiuLevelKompetensiK3()); panggilMethod.updateLevelKompetensiK4TempLevelKompetensiKar yawan(nik, fuzzy.getMiuLevelKompetensiK4()); panggilMethod.updateLevelKompetensiK5TempLevelKompetensiKar yawan(nik, fuzzy.getMiuLevelKompetensiK5()); } } double skillKnowledgeKaryawan = 0D; for(int i=0; i<jumlahDataAwal; i++){ for(int j=0; j<jumlahKolom; j++){ tempDataAwal = tabelModelDataHasilAwal.getValueAt(i, j); if(j == 1){ nik = tempDataAwal.toString(); panggilMethod.updateNikKaryawanTempSkillKnowledgeKaryawan(ni k); }else if(j == 2){ panggilMethod.updateNamaKaryawanTempSkillKnowledgeKaryawan (nik, tempDataAwal.toString()); }else if(j == 3){ String usiaTemp = tempDataAwal.toString(); panggilMethod.updateTanggalLahirKaryawanTempSkillKnowledgeKa ryawan(nik, usiaTemp); }else if(j == 4){ panggilMethod.updateLokasiKerjaKaryawanTempSkillKnowledgeKar yawan(nik, tempDataAwal.toString()); }else if(j == 5){ panggilMethod.updatePosisiKaryawanTempSkillKnowledgeKaryawan (nik, tempDataAwal.toString()); }else if(j == 7){ String skillKnowledgeTemp = tempDataAwal.toString(); skillKnowledgeKaryawan = Double.parseDouble(skillKnowledgeTemp); panggilMethod.updateSkillKnowledgeKaryawanTempSkillKnowledge Karyawan(nik, skillKnowledgeKaryawan); }else{ continue; 67
BAB III PERANCANGAN DAN PEMBUATAN SISTEM
} fuzzy.fungsiKeanggotaanSkillKnowledge(skillKnowledgeKaryawan); panggilMethod.updateSkillKnowledgeK1TempSkillKnowledgeKarya wan(nik, fuzzy.getMiuSkillKnowledgeK1()); panggilMethod.updateSkillKnowledgeK2TempSkillKnowledgeKarya wan(nik, fuzzy.getMiuSkillKnowledgeK2()); panggilMethod.updateSkillKnowledgeK3TempSkillKnowledgeKarya wan(nik, fuzzy.getMiuSkillKnowledgeK3()); panggilMethod.updateSkillKnowledgeK4TempSkillKnowledgeKarya wan(nik, fuzzy.getMiuSkillKnowledgeK4()); panggilMethod.updateSkillKnowledgeK5TempSkillKnowledgeKarya wan(nik, fuzzy.getMiuSkillKnowledgeK5()); } }
Gambar 3.20. Form Utama (3) Pada tabel yang terdapat pada form tersebut di atas, terdapat sebuah kolom yang berisi checkBox. Jika karyawan yang ditampilkan di dalam tabel ada yang dipilih untuk penugasan yang telah ditentukan sebelumnya, klik pada baris dimana karyawan tersebut berada, maka checkBox yang mewakili karyawan tersebut tersebut akan tercentang. Data-data karyawan pada tabel tersebut di atas dapat disimpan sebagai file *.pdf. Jika pada tabel tidak ada checkBox yang tercentang, maka jika user menekan tombol simpan sebagai PDF, data yang 68
BAB III PERANCANGAN DAN PEMBUATAN SISTEM
tersimpan adalah semua data yang ada pada tabel. Akan tetapi jika ada checkBox yang tercentang, maka data yang tersimpan hanya data-data yang tercentang saja. Berikut ini adalah baris program untuk menyimpan data pada tabel sebagai file *.pdf. this.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); String sistemOperasi = System.getProperty("os.name"); String pilihan = ""; int cekPilihan = 1; for(int baris=0; baris
BAB III PERANCANGAN DAN PEMBUATAN SISTEM
dataAkhir.setSkillKnowledge(Double.parseDouble(rs.getString("skill_ knowledge").toString())); dataAkhir.setKeterangan(rs.getString("keterangan").toString()); dataAkhir.setFireStrength(Double.parseDouble(rs.getString("fire_stren gth").toString())); dataAkhir.setPilihan(true); panggilMethod.insertTempDataCetak(nik, rs.getString("nama_karyawan").toString(), rs.getString("tgl_lahir").toString(), rs.getString("lokasi_kerja").toString(), rs.getString("posisi").toString(), rs.getString("level_kompetensi").toString(), rs.getString("skill_knowledge").toString(), rs.getString("keterangan").toString()); tabelModelDataHasilAkhir.updatedataAkhir(barisTabel, dataAkhir); tabelHasilAkhir.getColumnModel().getColumn(1).setCellRenderer(ne w booleanRender()); } panggilMethod.tutupStatement(); }catch(SQLException e){ e.printStackTrace(); } } } ResultSet rs = panggilMethod.getAllTempDataCetak(); int nomor=1; try{ while(rs.next()){ panggilMethod.updateNomorAllTempDataCetak(String.valueOf(nomo r), rs.getString("nik").toString()); nomor++; } }catch(SQLException e){ e.printStackTrace(); } Properties systemProp = System.getProperties(); String currentDir = systemProp.getProperty("user.dir"); if(currentDir.substring((currentDir.length() 4), 70
BAB III PERANCANGAN DAN PEMBUATAN SISTEM
currentDir.length()).equalsIgnoreCase("dist")){ currentDir = currentDir.substring(0, (currentDir.length() - 4)); } File dir = new File(currentDir); String reportName = "reportJRXML.jrxml"; String reportDirName = "report"; File fileRpt; String fullPath = "./src/javaSE/sun/com/report/reportJRXML.jrxml"; if (dir.isDirectory()) { String[] isiDir = dir.list(); for (int i = 0; i < isiDir.length; i++) { if(isiDir[i].equalsIgnoreCase("src")){ fileRpt = new File(currentDir + File.separatorChar + isiDir[i] + File.separatorChar + "javaSE" + File.separatorChar + "sun" + File.separatorChar + "com" + File.separatorChar + reportDirName + File.separatorChar + reportName); fullPath = fileRpt.toString(); break; } } } int paramKdKategori = 0; paramKdKategori= panggilMethod.createReplaceTempDataCetakView(); ResultSet hasilGetTempDataCetakView = panggilMethod.getTempDataCetakView(); try{ while(hasilGetTempDataCetakView.next()){ paramKdKategori = Integer.parseInt(hasilGetTempDataCetakView.getString("nik").toStrin g()); } }catch(SQLException e){ e.printStackTrace(); } boolean JasperPrint = false; try{ 71
BAB III PERANCANGAN DAN PEMBUATAN SISTEM
Map<String, Object> parameters = new HashMap<String, Object>(); parameters.put("PRM_TES", paramKdKategori); try{ JasperReport JRpt = JasperCompileManager.compileReport(fullPath); JasperPrint JPrint = JasperFillManager.fillReport(JRpt, parameters, panggilMethod.getConnection()); File lokasiSimpanPdf = new File(currentDir + File.separatorChar + "Data Karyawan.pdf"); String lokasiSimpanPdfString = lokasiSimpanPdf.toString(); JasperPrintManager.printReportToPdfFile(JPrint, lokasiSimpanPdfString); JOptionPane.showMessageDialog(null, "File Berhasil Disimpan", "Informasi", 1); if(sistemOperasi.equalsIgnoreCase("windows xp")){ Process p = Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " +lokasiSimpanPdfString); } }catch(Exception rptexcpt){ System.out.println("Report Can't view because : " + rptexcpt); JOptionPane.showMessageDialog(null, "ERROR !! :\nCek Apakah File Data Karyawan.pdf sedang Anda Akses ?"); rptexcpt.printStackTrace(); } }catch(Exception e){ e.printStackTrace(); } this.setCursor(Cursor.getDefaultCursor()); 3.3.3.3. Form Tambah Data Form tambah data merupakan form dimana user dapat melakukan penambahan data, baik data pelatihan, data karyawan, maupun data user. Berikut ini adalah tampilan dari form tambah data untuk penambahan data pelatihan :
72
BAB III PERANCANGAN DAN PEMBUATAN SISTEM
Gambar 3.21. Form Tambah Data Pelatihan Pada form tambah data pelatihan tersebut di atas, user dapat menambahkan nama pelatihan baru dengan jenis dan kategori yang baru maupun dengan menggunakan jenis dan kategori yang sudah ada sebelumnya (telah tersimpan di dalam database). Semua form-form yang tersedia dalam form tersebut harus diisi secara lengkap, karena program dibuat sedemikian rupa sehingga form-form yang ada tidak akan ada yang bernilai kosong (null). Klik tombol tambah yang terdapat dalam form tersebut di atas, maka semua data-data yang telah diiputkan akan tersimpan di dalam database. Pada form tambah data tersebut di atas, user juga dapat melakukan proses penambahan data karyawan. Di bawah ini merupakan tampilan dari form tambah data untuk penambahan data karyawan : 73
BAB III PERANCANGAN DAN PEMBUATAN SISTEM
Gambar 3.22. Form Tambah Data Karyawan Sama halnya dengan form tambah data pelatihan, semua formform yang ada harus diisi dengan lengkap. Jika NIK yang diinputkan sudah ada sebelumnya (telah tersimpan di dalam database), maka sistem akan memberikan peringatan bahwa kode NIK telah terpakai. Untuk menghindari terjadinya kesalahan ketika menginputkan tanggal lahir, sistem telah menyediakan window untuk kalender. Window tersebut dapat ditampilkan dengan menekan tombol yang terletak di samping form tanggal lahir. Pada window kalender tersebut, user dapat memilih tanggal, bulan, dan tahun kelahiran karyawan yang akan ditambahkan. Pada form tambah data karyawan, tidak terdapat form untuk nilai level kompetensi dan skill & knowledge karena karyawan baru belum mempunyai nilai level kompetensi dan skill & knowledge. 74
BAB III PERANCANGAN DAN PEMBUATAN SISTEM
Form tambah data juga menyediakan fasilitas untuk penambahan user. User pada sistem ini mempunyai 2 tipe, yaitu user administrator dan user limited. User administrator merupakan user yang mempunyai hak akses penuh terhadap sistem ini, yaitu menjalankan sistem utama termasuk dalam hal akses untuk penambahan, pengubahan, dan penghapusan data dari database. Sedangkan user limited hanya dapat menjalankan sistem utama saja. Pada saat melakukan penambahan data user, sistem akan mengecek apakah username yang diinputkan sudah tersimpan di dalam database. Jika sudah tersimpan di dalam database, maka akan tampil peringatan bahwa username telah terpakai. Sistem juga akan melakukan pengecekan apakah form password dan confirm password diisi dengan nilai yang sama. Jika diisi dengan nilai yang berbeda, maka akan tampil peringatan bahwa nilai password dan confirm password tidak sama. Tampilan dari form tambah data untuk penambahan data user adalah sebagai berikut :
75
BAB III PERANCANGAN DAN PEMBUATAN SISTEM
Gambar 3.23. Form Tambah Data User 3.3.3.4. Form Ubah Data Form ubah data merupakan form dimana user dapat melakukan pengubahan data terhadap data yang telah tersimpan di dalam database, baik data pelatihan, data karyawan, maupun data user. Berikut ini adalah tampilan dari form ubah data untuk pengubahan data pelatihan :
76
BAB III PERANCANGAN DAN PEMBUATAN SISTEM
Gambar 3.24. Form Ubah Data Pelatihan Pada form ubah data pelatihan tersebut di atas, user dapat mengubah data-data pelatihan yang telah tersimpan di dalam database, baik jenis pelatihan, kategori pelatihan, nama pelatihan, syarat pelatihan, maupun prasyarat pelatihan. Semua form yang ada, harus diisi secara lengkap. Jika ada form yang bernilai kosong (null), maka tombol ubah secara otomatis akan menjadi disable. Pada form ubah data tersebut di atas, user juga dapat melakukan pengubahan data terhadap data karyawan. Tampilan form ubah data untuk pengubahan data karyawan adalah sebagai berikut :
77
BAB III PERANCANGAN DAN PEMBUATAN SISTEM
Gambar 3.25. Form Ubah Data Karyawan Inputkan NIK karyawan yang akan diubah datanya pada form NIK yang tersedia kemudian tekan enter, maka data-data karyawan dengan NIK tersebut akan ditampilkan pada form-form yang ada. Apabila data NIK yang diinputkan tidak ditemukan di dalam database, maka akan ditampilkan peringatan bahwa data NIK tidak terdapat di dalam database. Data NIK pada form ubah data karyawan tersebut di atas tidak dapat diubah karena data NIK merupakan data yang sangat unik dalam perusahaan. Form ubah data karyawan tersebut di atas lebih ditekankan untuk pengubahan data level kompetensi, skill & knowledge, dan history pelatihan karyawan. Pengubahan data user dapat juga dilakukan pada form ubah data. Di bawah ini merupakan tampilan dari form ubah data untuk pengubahan data user : 78
BAB III PERANCANGAN DAN PEMBUATAN SISTEM
Gambar 3.26. Form Ubah Data User Kegunaan dari form ubah data user tersebut di atas lebih ditekankan pada pengubahan data password dan pengubahan data level user. Data username tidak dapat diubah karena data username merupakan data yang unik. Variabel usia merupakan salah satu variabel yang digunakan dalam metode pada sistem ini. Variabel usia dapat dibedakan menjadi usia muda dan usia tua. Penentuan muda dan tua tentu saja dapat berubah-ubah. Oleh karena itu, pada form ubah data, disediakan juga form untuk pengubahan data margin usia. Pada form pengubahan data margin usia, user dapat melakukan pengubahan terhadap batas-batas usia, baik batas usia muda maupun batas usia tua. Di bawah ini 79
BAB III PERANCANGAN DAN PEMBUATAN SISTEM
merupakan tampilan dari form ubah data untuk pengubahan data margin usia :
Gambar 3.27. Form Ubah Data Margin Usia Pada form ubah data margin usia tersebut di atas, pada form batas usia muda telah bernilai 24 dan form batas usia tua telah bernilai 59. Nilai-nilai tersebut merupakan batas usia muda dan usia tua yang digunakan ketika sistem ini dibangun. 3.3.3.5. Form Hapus Data Form hapus data merupakan form dimana user dapat melakukan penghapusan data terhadap data yang telah tersimpan di dalam database, baik data pelatihan, data karyawan, maupun data user. Sebelum melakukan proses penghapusan data, sebaiknya pikirkan 80
BAB III PERANCANGAN DAN PEMBUATAN SISTEM
terlebih dahulu apakah data yang akan dihapus benar-benar tidak dibutuhkan lagi. Berikut ini adalah tampilan dari form hapus data untuk penghapusan data pelatihan :
Gambar 3.28. Form Hapus Data Pelatihan Form-form yang terdapat dalam form hapus data pelatihan tersebut di atas tidak dapat dilakukan pengubahan terhadap isi datanya, karena memang didesain hanya untuk tampilan saja (view), dengan tujuan agar user dapat mengetahui isi data yang akan dihapus dan mempertimbangkan apakah data tersebut benar-benar akan dihapus dari database. Masing-masing perusahaan pasti mempunyai batas usia untuk pensiun. Jika seorang karyawan telah pensiun, maka data karyawan tersebut sebaiknya dihapus dari database sistem agar tidak membebani kinerja database sistem. Oleh karena itu, pada form hapus data, user juga dapat melakukan penghapusan data karyawan. Tampilan form hapus data untuk penghapusan data karyawan adalah sebagai berikut :
81
BAB III PERANCANGAN DAN PEMBUATAN SISTEM
Gambar 3.29. Form Hapus Data Karyawan Sama halnya dengan form hapus data untuk penghapusan data pelatihan, form-form yang terdapat dalam form hapus data karyawan tersebut di atas tidak dapat dilakukan pengubahan terhadap isi datanya, karena memang didesain hanya untuk tampilan saja (view), dengan tujuan agar user dapat mengetahui isi data yang akan dihapus dan mempertimbangkan apakah data tersebut benar-benar akan dihapus dari database. Pada form hapus data, user juga dapat melakukan penghapusan data terhadap data user. Tampilan form hapus data untuk penghapusan data user adalah sebagai berikut :
82
BAB III PERANCANGAN DAN PEMBUATAN SISTEM
Gambar 3.30. Form Hapus Data User Sama halnya dengan form hapus data untuk penghapusan data pelatihan dan penghapusan data karyawan, form-form yang terdapat dalam form hapus data user tersebut di atas tidak dapat dilakukan pengubahan terhadap isi datanya, karena memang didesain hanya untuk tampilan saja (view), dengan tujuan agar user dapat mengetahui isi data yang akan dihapus dan mempertimbangkan apakah data tersebut benarbenar akan dihapus dari database.
83