Upload
others
View
19
Download
0
Embed Size (px)
Citation preview
38
BAB IV
RANCANGAN SISTEM DAN PROGRAM USULAN
4.1. Analisis Kebutuhan Software
A. Tahapan Analisis
Aplikasi sistem informasi absensi pada PT Rama Jasindo Abadi sudah
terkomputerisasi agar lebih efisien dengan menggunakan beberapa user.
Berikut ini spesifikasi kebutuhan (system requirement) dari aplikasi sistem
informasi tersebut:
Akses Admin:
A1. Admin dapat login
A2. Admin dapat mengelola data master admin
A3. Admin dapat mengelola data master jabatan
A4. Admin dapat mengelola data master karyawan
A5. Admin dapat mengelola data master lembur
A6. Admin dapat mengelola data master pengguna
A7. Admin dapat melakukan perubahan data login
A8. Admin dapat melakukan logout
Akses Pengguna:
B1. Pengguna dapat login
B2. Pengguna dapat melihat dashboard
39
B3. Pengguna dapat mengelola data master karyawan
B4. Pengguna dapat melihat laporan absensi karyawan
B5. Pengguna dapat melihat laporan lembur karyawan
B6. Pengguna dapat melakukan perubahan data login
B7. Pengguna dapat melakukan logout
Akses Karyawan
C1. Karyawan dapat melakukan absen masuk
C2. Karyawan dapat melihat informasi absen
C3. Karyawan dapat melakukan absen keluar
C4. Karyawan dapat melakukan lembur
B. Use Case Diagram
Diagram usecase menunjukan interaksi antara use case, actor dan
pekerja. Diagram ini menggambarkan model lengkap tentang apa yang
perusahaan lakukan, siap yang ada didalam berperan didalamnya dan siapa
orang yang berperan diluarnya. Hal ini menggambarkan ruang lingkup
organisasi, sehingga dapat dilihat apa atau siapa saja yang ada di luar
organisasi dan sampai mana batasannya.
40
1. Use Case Diagram Halaman Admin
Login
Mengelola
Data Master
Merubah
Data Login
Logout
Merubah
Data Master
Menghapus
Data Master
Menambahkan
Data Master
Admin
<<include>>
<<include>>
<<include>>
<<extend>>
<<extend>>
<<extend>>
Gambar IV.1. Use Case Diagram Halaman Admin
41
Tabel IV.1.
Use Case Diagram Halaman Admin
Use Case Name Halaman Admin
Requirements A1,A2,A3,A4,A5,A6,A7,A8
Goal - Admin dapat menambah, mengedit
dan menghapus data master.
- Admin dapat merubah data login.
- Admin dapat melakukan keluar
aplikasi.
Pre-conditions Admin melakukan login
Post-conditions - Menyimpan, menghapus dan
merubah data master
- Merubah data login.
Failed end condition Gagal menyimpan, mengupdate dan
menghapus
Primary Actors Admin
Main Flow / Basic Path - Admin melakukan login
- Admin masuk ke halaman
administrator
- Admin dapat menambahkan data
admin, data jabatan, data karyawan,
data lembur dan data pengguna.
- Admin dapat mengubah data admin,
data jabatan, data karyawan, data
lembur dan data pengguna.
- Admin dapat menghapus data
admin, data jabatan, data karyawan,
data, data lembur dan data
pengguna.
- Admin dapat merubah data login
Invariant A A9. Admin memilih action print pada
halaman data master karyawan.
A10. Admin mencetak id card
karyawan.
42
2. Use Case Diagram Halaman Pengguna
Login
Dashboard
Mengelola
Data Karyawan
Melihat
Laporan Absen
Merubah
Data LoginLogout
Melihat
Laporan Lembur
Secara Detail
Secara
Ringkas
Pengguna
<<include>>
<<include>>
<<include>>
<<include>>
<<include>>
Merubah
Data Karyawan
Menghapus
Data Karyawan
Menambahkan
Data Karyawan
<<include>>
<<extend>>
<<extend>>
<<extend>>
<<extend>>
<<extend>>
Gambar IV.2. Use Case Diagram Halaman Pengguna
43
Tabel IV.2.
Use Case Diagram Halaman Pengguna
Use Case Name Halaman Pengguna
Requirements B1,B2,B3,B4,B5,B6,B7
Goal - Pengguna dapat menambah, mengedit dan
menghapus data karyawan.
- Pengguna dapat melihat laporan absen
karyawan.
- Pengguna dapat melihat laporan lembur
secara detail maupun ringkas.
- Pengguna dapat merubah data login.
- Pengguna dapat melakukan keluar aplikasi.
Pre-conditions Pengguna melakukan login
Post-conditions - Menyimpan, menghapus dan merubah data
karyawan.
- Melihat laporan absen karyawan
- Melihat laporan lembur secara detail
maupun secara ringkas.
- Merubah data login.
Failed end
condition
Gagal login, menyimpan, mengupdate dan
menghapus
Primary Actors Pengguna
Main Flow /
Basic Path
- Pengguna melakukan login.
- Pengguna masuk ke halaman hrd.
- Pengguna dapat menambahkan, mengubah
dan menghapus data karyawan.
- Pengguna dapat melihat laporan absen
karyawan berdasarkan nama, perbulan,
pertanggal maupun pertahun.
- Pengguna dapat melihat laporan lembur
karyawan secara detail maupun secara
ringkas
- Pengguna dapat merubah data login
Invariant A B8. Pengguna memilih action print pada
halaman data master karyawan.
B9. Pengguna mencetak id card karyawan.
44
3. Use Case Diagram Absensi Karyawan
Melakukan
Absen Masuk
Melihat Informasi absen
dan Informasi karyawan
Karyawan
<<include>>
Melakukan
Lembur
Melakukan
Absen Keluar
<<include>>
<<include>>
Gambar IV.3. Use Case Diagram Absensi Karyawan
45
Tabel IV.3.
Use Case Diagram Absensi Karyawan
Use Case Name Halaman Karyawan
Requirements C1,C2,C3,C4
Goal - Karyawan melakukan absen masuk
- Karyawan melakukan absen keluar
- Karyawan melakukan lembur
Pre-conditions Karyawan melakukan absen masuk
Post-conditions - Menyimpan absen masuk
- Menyimpan absen keluar
Failed end condition Gagal absen keluar
Primary Actors Karyawan
Main Flow /
Basic Path
- Karyawan melakukan absen masuk.
- System akan menampilkan informasi data
karyawan dan keterangan absen masuk.
- System akan memberikan keterangan telat
apabila karyawan melakukan absen masuk
diatas pukul 08:00.
- Karyawan melakukan absen keluar.
- System akan menolak jika karyawan
melakukan absen keluar dibawah pukul
16:00.
- Jika karyawan melakukan absen keluar
diatas pukul 16:00 maka system akan
menampilkan kembali data karyawan dan
keterangan absen keluar
- System akan memberikan keterangan
lembur apabila karyawan melakukan absen
keluar diatas pukul 17:00.
Invariant A B8. Pengguna memilih action print pada
halaman data master karyawan.
B9. Pengguna mencetak id card karyawan.
46
C. Activity Diagram
1. Activity Diagram Absen Masuk
Activity DiagramActivity Diagram
KaryawanKaryawan SystemSystem PenggunaPengguna
Act
ivit
y D
iag
ram
Pro
ses
Ab
sen
Mas
uk
Act
ivit
y D
iag
ram
Pro
ses
Ab
sen
Mas
uk
Memasukkan
Nomor Induk
Karyawan
Y
T
Rekap AbsenMelihat rekap
absensi
Absen Masuk
Lebih dari jam 8
pagi
Terinput TelatTerinput Tepat
Waktu
YT
Pengecekan Nomor
Induk Karyawan
Gambar IV.4. Activity Diagram Absen Masuk
47
2. Activity Diagram Absen Keluar dan Perhitungan Lembur
Activity DiagramActivity Diagram
KaryawanKaryawan SystemSystem PenggunaPengguna
Act
ivit
y D
iag
ram
Pro
ses
Ab
sen
Kel
uar
dan
Per
hit
un
gan
Lem
bu
rA
ctiv
ity
Dia
gra
m P
rose
s A
bse
n K
elu
ar d
an P
erh
itu
ng
an L
emb
ur
Memasukkan
Nomor Induk
Karyawan
Y
T
Rekap AbsenMelihat rekap
absensi
Lebih dari jam 4
Absen Keluar
Y
Pengecekan Nomor
Induk Karyawan
T
Lebih dari jam 5
Perhitungan Lembur
Y
T
Melihat rekap
lemburRekap Lembur
Gambar IV.5.
Activity Diagram Absen Keluar dan Perhitungan Lembur
48
3. Activity Diagram Halaman Pengguna
Activity DiagramActivity Diagram
PenggunaPengguna SystemSystem
Act
ivit
y D
iagra
m H
alam
an P
engguna
Act
ivit
y D
iagra
m H
alam
an P
engguna
Login Validasi
Lihat laporan absen,
lembur dan
karyawan
T
Y
Gambar IV.6. Activity Diagram Halaman Pengguna
49
4. Activity Diagram Halaman Admin
Activity DiagramActivity Diagram
AdminAdmin SystemSystem
Act
ivit
y D
iag
ram
Hal
aman
Ad
min
Act
ivit
y D
iag
ram
Hal
aman
Ad
min
Login Validasi
Mengelola data
master
T
Y
Gambar IV.7. Activity Diagram Halaman Admin
50
4.2. Desain
4.2.1. Database
A. Entity Relationship Diagram
KaryawanAbsensi
Jabatan
Pengguna
Lembur
Melakukan
Melihat
Memiliki
Mengelola
Memiliki
absensiid
tanggal
jam_masuk
jam_keluar
status_absen
status_kehadiran
gambar_absenmasuk
gambar_absenkeluar
nik
jabatanid namajabatan
nik
namakaryawan
notelp email
tanggal_lahir
alamatkaryawanjabatanid
fotokaryawan
lemburid biaya_lembur jabatanid
id_pengguna
username
nama
password
fotopengguna
id_pengguna
id_pengguna
Gambar IV.8. Entity Relationship Diagram
51
B. Logical Record Structure
AbsensiAbsensi
KaryawanKaryawan
JabatanJabatan
LemburLembur
PenggunaPengguna
absensiidabsensiidPKPK
tanggaltanggal
jam_masukjam_masuk
jam_keluarjam_keluar
status_absenstatus_absen
status_kehadiranstatus_kehadiran
gambar_absenmasukgambar_absenmasuk
gambar_absenkeluargambar_absenkeluar
banyak_lemburbanyak_lembur
niknikFKFK
niknikPKPK
namakaryawannamakaryawan
notelpnotelp
emailemail
tanggal_lahirtanggal_lahir
alamatkaryawanalamatkaryawan
fotokaryawanfotokaryawan
jabatanidjabatanidFKFK
jabatanidjabatanidPKPK
namajabatannamajabatan
lemburidlemburidPKPK
biaya_lemburbiaya_lembur
jabatanidjabatanidFKFK
id_penggunaid_penggunaPKPK
usernameusername
passwordpassword
namanama
fotopenggunafotopengguna
id_penggunaid_penggunaFKFK
id_penggunaid_penggunaFKFK
1
M
1
1
1
1
1
M
1
1
Gambar IV.9. Logical Record Structure
52
C. Spesifikasi File
1. Spesifikasi File Absensi
Nama File : Absensi
Akronim : absensi.frm
Fungsi : untuk menyimpan data absensi dan perhitungan
lembur karyawan
Tipe File : File Transaksi
Organisasi File : Indexed Sequential
Akses File : Random
Media : Harddisk
Panjang Record : 589 byte
Kunci Field : absensiid
Software : Mysql
53
Tabel IV.4.
Spesifikasi file Absensi
No Elemen data Nama Field Tipe Size Ket
1 ID Absen absensiid int 11 Primary Key,
Auto Increment
2 Tanggal
Absensi tanggal date
3 Jam Masuk jam_masuk varchar 8
4 Jam Keluar jam_keluar varchar 8
5 Status Absen status_absen enum(‘1’,’2’,
‘3’,’4’,’5’)
6 Status
Kehadiran status_kehadiran
enum(‘TW’,
’TL’)
7 Gambar Absen
Masuk gambar_absenmasuk text 255
8 Gambar Absen
Keluar gambar_absenkeluar text 255
9 Banyaknya
Lembur banyak_lembur int 11
10 Nomor Induk
Karyawan nik varchar 7 Foreign Key
11 Id Pengguna id_pengguna int 11 Foreign Key
54
2. Spesifikasi File Admin
Nama File : Admin
Akronim : admin.frm
Fungsi : untuk menyimpan data master administrator
Tipe File : File Master
Organisasi File : Indexed Sequential
Akses File : Random
Media : Harddisk
Panjang Record : 341 byte
Kunci Field : id_admin
Software : Mysql
Table IV.5.
Spesifikasi file Admin
No Elemen data Nama Field Tipe Size Ket
1 ID Admin id_admin int 11 Primary Key,
Auto Increment
2 Username username varchar 25
3 Password password varchar 25
4 Nama nama varchar 25
5 Foto Admin fotoadmin text 255
55
3. Spesifikasi File Jabatan
Nama File : Jabatan
Akronim : jabatan.frm
Fungsi : untuk menyimpan data master jabatan
Tipe File : File Master
Organisasi File : Indexed Sequential
Akses File : Random
Media : Harddisk
Panjang Record : 31 byte
Kunci Field : jabatanid
Software : Mysql
Tabel IV.6.
Spesifikasi file Jabatan
No Elemen data Nama Field Tipe Size Ket
1 ID Jabatan jabatanid int 11 Primary Key,
Auto Increment
2 Nama Jabatan namajabatan varchar 30
56
4. Spesifikasi File Karyawan
Nama File : Karyawan
Akronim : karyawan.frm
Fungsi : untuk menyimpan data master karyawan
Tipe File : File Master
Organisasi File : Indexed Sequential
Akses File : Random
Media : Harddisk
Panjang Record : 651 byte
Kunci Field : nik
Software : Mysql
Tabel IV.7.
Spesifikasi file Karyawan
No Elemen data Nama Field Tipe Size Ket
1 Nomor Induk Karyawan nik varchar 7 Primary Key
2 Nama Karyawan namakaryawan varchar 50
3 No Telp notelp varchar 12
4 Email email varchar 50
5 Tanggal Lahir tanggal_lahir date
6 Alamat Karyawan alamatkaryawan text 255
7 Foto Karyawan fotokaryawan text 255
8 ID Jabatan jabatanid int 11 Foreign Key
9 ID Pengguna id_pengguna int 11 Foreign Key
57
5. Spesifikasi File Lembur
Nama File : Lembur
Akronim : lembur.frm
Fungsi : untuk menyimpan data master lembur
Tipe File : File Master
Organisasi File : Indexed Sequential
Akses File : Random
Media : Harddisk
Panjang Record : 30 byte
Kunci Field : lemburid
Software : Mysql
Tabel IV.8.
Spesifikasi file Lembur
No Elemen data Nama Field Tipe Size Ket
1 ID Lembur lemburid int 11 Primary Key,
Auto Increment
2 Biaya Lembur biaya_lembur double 8
3 ID Jabatan jabatanid int 11 Foreign Key
58
6. Spesifikasi File Pengguna
Nama File : Pengguna
Akronim : pengguna.frm
Fungsi : untuk menyimpan data master pengguna
Tipe File : File Master
Organisasi File : Indexed Sequential
Akses File : Random
Media : Harddisk
Panjang Record : 356 byte
Kunci Field : id_pengguna
Software : Mysql
Tabel IV.9.
Spesifikasi file Pengguna
No Elemen data Nama Field Tipe Size Ket
1 ID Pengguna id_pengguna int 11 Primary Key,
Auto Increment
2 Username username varchar 20
3 Password password varchar 20
4 Nama nama varchar 50
5 Foto Pengguna fotopengguna text 255
59
4.2.2. Software Architecture
A. Class Diagram
AbsenAbsen
+index
-Mkaryawan-Mabsen
AdminAdmin
+index+login+data_admin+data_jabatan+data_karyawan+data_lembur+data_pengguna+pengaturan+update
-Madmin-Mkaryawan-Mjabatan-Mlembur-Mpengguna
AuthAuth
+admin+pengguna+logout_admin+logout_pengguna
-Madmin-Mpengguna
Page404Page404
+index
PenggunaPengguna
+index+cuti+bolos+sakit+laporan_absen+laporan_tampil+lembur_detail+lembur_detail_tampil+lembur_ringkasan+lembur_ringkasan_tampil+data_karyawan+pengaturan+update+login
-Mabsen-Mkaryawan-Mpengguna
MabsenMabsen
+get_bydatarow+insert+update+get_all+get_bydata+get_bydatajoin+get_bydatajoinlembur
MadminMadmin
+get_bydata+get_byid+get_all+update+delete+insert
MjabatanMjabatan
+get_bydata+get_byid+get_all+update+delete+insert
MkaryawanMkaryawan
+get_bydata+get_byidrow+get_join+get_all+update+delete+insert
MlemburMlembur
+get_bydata+get_byid+get_all+update+delete+insert
MpenggunaMpengguna
+get_bydata+get_byid+get_all+update+insert+delete
viewAbsenviewAbsen
+Absen
viewAdminviewAdmin
+Admin
viewPenggunaviewPengguna
+Pengguna
view404view404
+Page404
Gambar IV.10. Class Diagram
60
B. Component Diagram
Frontend PageApache
Database Backend Page
Browser
Controller
View
Model
Gambar IV.11. Component Diagram
61
C. Deployment Diagram
Frontend Page
Backend Page
Controller
View
Model
Browser
Port 80
Apache Server
Database
Server
Port 3306
Gambar IV.12. Deployment Diagram
62
4.2.3. User Interface
A. Interface Halaman Absen Masuk Karyawan
Gambar IV.13. Halaman Absen Masuk Karyawan
Keterangan :
1) Hak Akses : Karyawan
2) Nama : Halaman Absen Masuk Karyawna
3) Fungsi : Melakukan absen masuk untuk karyawan dan melihat
keterangan absen.
63
B. Interface Halaman Absen Keluar Karyawan
Gambar IV.14. Halaman Absen Keluar Karyawan
Keterangan :
1) Hak Akses : Karyawan
2) Nama : Halaman Absen Keluar Karyawan
3) Fungsi : Melakukan absen keluar untuk karyawan dan melihat
keterangan absen.
64
C. Interface Halaman Login Pengguna
Gambar IV.15. Halaman Login Pengguna
Keterangan :
1) Hak Akses : Pengguna
2) Nama : Halaman Login Pengguna
3) Fungsi : Untuk masuk ke halaman pengguna.
65
D. Interface Halaman Dashboard Pengguna
Gambar IV.16. Halaman Dashboard Pengguna
Keterangan :
1) Hak Akses : Pengguna
2) Nama : Halaman Dashboard Pengguna
3) Fungsi : Melihat kegiatan absensi hari ini dan memberikan
action status absen jika karyawan melakukan ijin
maupun cuti.
66
E. Interface Halaman Laporan Absensi
Gambar IV.17. Halaman Laporan Absensi
Keterangan :
1) Hak Akses : Pengguna
2) Nama : Halaman Laporan Absensi
3) Fungsi : Menentukan laporan yang akan dicetak di halaman
selanjutnya berdasarkan nama. pertanggal, perbulan
dan pertahun.
67
F. Interface Halaman Tampil Laporan Absensi
Gambar IV.18. Halaman Tampil Laporan Absensi
Keterangan :
1) Hak Akses : Pengguna
2) Nama : Halaman Tampil Laporan Absensi
3) Fungsi : Melihat/menampilkan laporan absensi yang sudah
ditentukan di halaman sebelumnya
68
G. Interface Halaman Laporan Lembur Detail
Gambar IV.19. Halaman Laporan Lembur Detail
Keterangan :
1) Hak Akses : Pengguna
2) Nama : Halaman Laporan Lembur Detail
3) Fungsi : Menentukan laporan yang akan dicetak di halaman
selanjutnya berdasarkan nama. pertanggal, perbulan
dan pertahun.
69
H. Interface Halaman Tampil Laporan Lembur Detail
Gambar IV.20. Halaman Tampil Laporan Lembur Detail
Keterangan :
1) Hak Akses : Pengguna
2) Nama : Halaman Tampil Laporan Lembur Detail
4) Fungsi : Melihat/menampilkan laporan lembur secara detail
yang sudah ditentukan di halaman sebelumnya.
70
I. Interface Halaman Laporan Lembur Ringkasan
Gambar IV.21. Halaman Laporan Lembur Ringkasan
Keterangan :
1) Hak Akses : Pengguna
2) Nama : Halaman Laporan Lembur Ringkasan
4) Fungsi : Menentukan laporan yang akan dicetak di halaman
selanjutnya berdasarkan nama. pertanggal, perbulan
dan pertahun.
71
J. Interface Halaman Tampil Laporan Lembur Ringkasan
Gambar IV.22. Halaman Tampil Laporan Lembur Ringkasan
Keterangan :
1) Hak Akses : Pengguna
2) Nama : Halaman Tampil Laporan Lembur Ringkasan
5) Fungsi : Melihat/menampilkan laporan lembur secara ringkas
yang sudah ditentukan di halaman sebelumnya.
72
K. Interface Halaman Data Master Karyawan
Gambar IV.23. Halaman Data Master Karyawan
Keterangan :
1) Hak Akses : Pengguna
2) Nama : Halaman Data Master Karyawan
3) Fungsi : Mengelola data master karyawan.
73
L. Interface Halaman Cetak ID Card Karyawan
Gambar IV.24. Halaman Cetak ID Card Karyawan
Keterangan :
1) Hak Akses : Pengguna
2) Nama : Halaman Cetak ID Card Karyawan
3) Fungsi : Mencetak ID Card karyawan.
74
M. Interface Halaman Pengaturan Pengguna
Gambar IV.25. Halaman Pengaturan Pengguna
Keterangan :
1) Hak Akses : Penguna
2) Nama : Halaman Pengaturan Pengguna
3) Fungsi : Merubah data login pengguna.
75
N. Interface Halaman Login Admin
Gambar IV.26. Halaman Login Admin
Keterangan :
1) Hak Akses : Admin
2) Nama : Halaman Login Admin
3) Fungsi : Untuk masuk ke halaman admin.
76
O. Interface Halaman Data Master Admin
Gambar IV.27. Halaman Data Master Admin
Keterangan :
1) Hak Akses : Admin
2) Nama : Halaman Data Master Admin
3) Fungsi : Mengelola data master admin.
77
P. Interface Halaman Data Master Jabatan
Gambar IV.28. Halaman Data Master Jabatan
Keterangan :
1) Hak Akses : Admin
2) Nama : Halaman Data Master Jabatan
3) Fungsi : Mengelola data master jabatan.
78
Q. Interface Halaman Data Master Karyawan
Gambar IV.29. Halaman Data Master Karyawan
Keterangan :
1) Hak Akses : Admin
2) Nama : Halaman Data Master Karyawan
3) Fungsi : Mengelola data master karyawan.
79
R. Interface Halaman Data Master Lembur
Gambar IV.30. Halaman Data Master Lembur
Keterangan :
1) Hak Akses : Admin
2) Nama : Halaman Data Master Lembur
3) Fungsi : Mengelola data master lembur.
80
S. Interface Halaman Data Master Pengguna
Gambar IV.31. Halaman Data Master Pengguna
Keterangan :
1) Hak Akses : Admin
2) Nama : Halaman Data Master Pengguna
3) Fungsi : Mengelola data master pengguna
81
T. Interface Halaman Pengaturan Admin
Gambar IV.32. Halaman Pengaturan Admin
Keterangan :
1) Hak Akses : Admin
2) Nama : Halaman Pengaturan Admin
3) Fungsi : Merubah data login admin.
82
4.3. Code Generation
A. Class Absen
<!--
/**********************************************************
*/
/
/
/ @copyright handc0de
/
/
/
/
/**********************************************************
*/
-->
<?php
class Absen extends CI_Controller {
public function __construct() {
parent::__construct();
//load model
$this->load->model('Mabsen');
$this->load->model('Mkaryawan');
//load helper
$this->load->helper(array('url', 'form'));
}
public function index() {
83
$nik = $this->input->post('nik');
$data['title'] = "Aplikasi Absensi";
$data['judul'] = "Absen";
$data['nik'] = $nik;
$jam = date('H:i:s');
$tanggal = date('Y-m-d');
$jam_pembatas = date('H');
if(!empty($nik)) {
$this->cek = $this->Mkaryawan->get_byidrow($nik);
if ($this->cek>0) {
if ($jam_pembatas < '16') {
if ($jam_pembatas < '08') {
$kehadiran = 'TW';
$keterangan = 'Tepat Waktu';
} else {
$kehadiran = 'TL';
$keterangan = 'Telat';
}
$w = "nik='$nik' and
tanggal='$tanggal'";
$this->cekabsen = $this->Mabsen-
>get_bydatarow($w);
if ($this->cekabsen>0) {
$data['pesan'] = "<div
class='alert alert-block alert-danger fade in'>
<button data-dismiss='alert'
class='close close-sm' type='button'>
<i class='fa fa-times'></i>
</button>
<strong>Gagal!</strong> Anda
sudah melakukan absen masuk
84
</div>";
$data['gambar'] = 'no-pict.png';
$data['folder_gambar'] = 'default';
$data['keterangan'] = 'Data not found';
$data['jam'] = 'Data not
found';
} else {
$encoded_data = $this->input-
>post('mydata');
$binary_data =
base64_decode($encoded_data);
// save to server (beware of
permissions)
$date = date('Y-m-d H-i-s');
$gambar = $date.".jpg";
$result = file_put_contents(
'./upload/absen_masuk/'.$date.'.jpg', $binary_data );
$d = array(
'tanggal'
=> $tanggal,
'jam_masuk' =>
$jam,
'jam_keluar' =>
'',
'status_absen' =>
'1',
'status_kehadiran' =>
$kehadiran,
'gambar_absenmasuk' =>
$gambar,
'nik'
=> $nik
);
$this->Mabsen->insert($d);
$data['pesan'] = "<div
class='alert alert-success fade in'>
85
<button data-dismiss='alert'
class='close close-sm' type='button'>
<i class='fa fa-times'></i>
</button>
<strong>Sukses!</strong>
Berhasil melakukan absen masuk
</div>";
$data['gambar'] = $gambar;
$data['folder_gambar'] = 'absen_masuk';
$data['keterangan'] = $keterangan;
$data['jam'] = 'Anda
melakukan Absen Masuk pada jam '.$jam;
}
} else {
$w = "nik='$nik' and status_absen='2'
and tanggal='$tanggal'";
$this->cekabsen = $this->Mabsen-
>get_bydatarow($w);
if ($this->cekabsen>0) {
$data['pesan'] = "<div
class='alert alert-block alert-danger fade in'>
<button data-dismiss='alert'
class='close close-sm' type='button'>
<i class='fa fa-times'></i>
</button>
<strong>Gagal!</strong> Anda
sudah melakukan absen hari ini
</div>";
$data['gambar'] = 'no-pict.png';
$data['folder_gambar'] = 'default';
$data['keterangan'] = 'Data not found';
$data['jam'] = 'Data not
found';
} else {
$encoded_data = $this->input-
>post('mydata');
86
$binary_data =
base64_decode($encoded_data);
// menyimpan pict ke server
$date = date('Y-m-d H-i-s');
$gambar = $date.".jpg";
$result = file_put_contents(
'./upload/absen_keluar/'.$date.'.jpg', $binary_data );
$this->result = $this-
>Mkaryawan->get_join($nik);
foreach ($this->result as $h) {}
if ($h->jabatanid == "1" or $h-
>jabatanid == "3") {
$banyak_lembur = '0';
} else {
if ($jam_pembatas >
"20") {
$banyak_lembur
= "4";
} else {
$banyak_lembur
= $jam_pembatas - "16";
}
}
$d = array(
'jam_keluar'
=> $jam,
'status_absen'
=> '2',
'gambar_absenkeluar' =>
$gambar,
'banyak_lembur'
=> $banyak_lembur
87
);
$w = array (
'tanggal' =>
$tanggal,
'nik' =>
$nik
);
$this->Mabsen->update($d,$w);
$data['pesan'] = "<div
class='alert alert-success fade in'>
<button data-dismiss='alert'
class='close close-sm' type='button'>
<i class='fa fa-times'></i>
</button>
<strong>Sukses!</strong>
Berhasil melakukan absen keluar
</div>";
$data['gambar'] = $gambar;
$data['folder_gambar'] = 'absen_keluar';
$data['keterangan'] = 'Anda lembur selama
'.$banyak_lembur.' jam';
$data['jam'] = 'Anda
melakukan Absen Keluar pada jam '.$jam;
}
}
} else {
$data['pesan'] = "<div class='alert alert-block
alert-danger fade in'>
<button data-dismiss='alert' class='close close-
sm' type='button'>
<i class='fa fa-times'></i>
</button>
<strong>Gagal!</strong> Nik anda tidak
ditemukan
</div>";
$data['gambar'] = 'no-pict.png';
88
$data['folder_gambar'] = 'default';
$data['keterangan'] = 'Data not found';
$data['jam'] = 'Data not found';
}
} else {
$data['pesan'] = "";
}
$this->load->view('absen',$data);
}
}
?>
Listing Program IV.1. Class Absen
B. View Absen
<!--
/**********************************************************
*/
/ /
/ @copyright handc0de /
/ /
/**********************************************************
*/
-->
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-
scale=1.0">
89
<title><?php echo $judul ?> | <?php echo $title ?></title>
<link href="<?php echo base_url() ?>assets/css/bootstrap.min.css"
rel="stylesheet">
<link href="<?php echo base_url() ?>assets/font-awesome/css/font-
awesome.css" rel="stylesheet">
<link href="<?php echo base_url() ?>assets/css/animate.css"
rel="stylesheet">
<link href="<?php echo base_url() ?>assets/css/style.css"
rel="stylesheet">
</head>
<body class="gray-bg">
<h1 align="center">Selamat datang di Aplikasi Absensi Karyawan PT
RAMA JASINDO ABADI</h1>
<blink><h3 align="center">Gunakan barcode yang sudah disediakan
agar lebih cepat melakukan absensi</h3></blink>
<div class="loginColumns animated fadeInDown" style="margin-top:-
70px">
<div class="row">
<div class="col-md-6">
<div class="ibox-content">
<h2 class="form-signin-heading">Absen Karyawan</h2>
<form method="POST" action="<?php echo
base_url('Absen') ?>">
<input type="text" name="nik" class="form-control"
placeholder="nik" autofocus><br>
<input id="mydata" type="hidden" name="mydata"
value=""/>
<input type="submit" class="btn btn-primary"
onClick="take_snapshot()" value="Absen" style="width:100%;">
</form><br>
<div id="my_camera"></div>
<p class="m-t">
<small style="color:red">*Masukkan nik anda secara
manual jika barcode error</small>
</p>
90
</div>
</div>
<div class="col-md-6">
<div class="ibox-content">
<?php
if(!empty($nik)) {
$this->db->where('nik',$nik);
$q = $this->db->get('karyawan');
$cari = $q->num_rows();
if ($cari>0) {
$this->db->select("*");
$this->db->from("karyawan");
$this->db-
>join("jabatan","jabatan.jabatanid=karyawan.jabatanid");
$this->db->where('karyawan.nik',$nik);
$q = $this->db->get();
foreach ($q->result() as $tampil) {}
?>
<h2 align="center">Selamat datang</h2>
<center><img
style="width:150px;height:150px;margin-top:2%;" src="<?php echo
base_url('upload/'.$folder_gambar.'/'.$gambar) ?>"></center>
<table width="100%" style="margin-top:5%;margin-
bottom:5%;">
<tr>
<td width="23%"><div
style="background:red;color:white;padding:5px;margin:5px;border-
radius:5px;font-weight:bold;text-align:right;">NIK</div></td>
<td width="2%" align="center">:</td>
<td width="75%" height="30px"><div
style="background:blue;color:white;padding:5px;margin:5px;border-
radius:5px;font-weight:bold;"><?php echo $tampil->nik ?></div></td>
</tr>
91
<tr>
<td width="23%"><div
style="background:red;color:white;padding:5px;margin:5px;border-
radius:5px;font-weight:bold;text-align:right;">Nama</div></td>
<td width="2%" align="center">:</td>
<td width="75%" height="30px"><div
style="background:blue;color:white;padding:5px;margin:5px;border-
radius:5px;font-weight:bold;"><?php echo $tampil->namakaryawan
?></div></td>
</tr>
<tr>
<td width="23%"><div
style="background:red;color:white;padding:5px;margin:5px;border-
radius:5px;font-weight:bold;text-align:right;">Jabatan</div></td>
<td width="2%" align="center">:</td>
<td width="75%" height="30px"><div
style="background:blue;color:white;padding:5px;margin:5px;border-
radius:5px;font-weight:bold;"><?php echo $tampil->namajabatan
?></div></td>
</tr>
<tr>
<td width="23%"><div
style="background:red;color:white;padding:5px;margin:5px;border-
radius:5px;font-weight:bold;text-align:right;">Keterangan</div></td>
<td width="2%" align="center">:</td>
<td width="75%" height="30px"><div
style="background:blue;color:white;padding:5px;margin:5px;border-
radius:5px;font-weight:bold;"><?php echo $keterangan ?></div></td>
</tr>
<tr>
<td width="23%"><div
style="background:red;color:white;padding:5px;margin:5px;border-
radius:5px;font-weight:bold;text-align:right;">Jam</div></td>
<td width="2%" align="center">:</td>
<td width="75%" height="30px"><div
style="background:blue;color:white;padding:5px;margin:5px;border-
radius:5px;font-weight:bold;"><?php echo $jam ?></div></td>
</tr>
</table>
<?php
} else {
92
?>
<h2 align="center">Selamat datang</h2>
<center><img style="width:150px;height:150px;margin-
top:2%;" src="<?php echo base_url('upload/default/no-pict.png')
?>"></center>
<table width="100%" style="margin-top:5%;margin-
bottom:5%;">
<tr>
<td width="23%"><div
style="background:red;color:white;padding:5px;margin:5px;border-
radius:5px;font-weight:bold;text-align:right;">NIK</div></td>
<td width="2%" align="center">:</td>
<td width="75%" height="30px"><div
style="background:blue;color:white;padding:5px;margin:5px;border-
radius:5px;font-weight:bold;">Data not found</div></td>
</tr>
<tr>
<td width="23%"><div
style="background:red;color:white;padding:5px;margin:5px;border-
radius:5px;font-weight:bold;text-align:right;">Nama</div></td>
<td width="2%" align="center">:</td>
<td width="75%" height="30px"><div
style="background:blue;color:white;padding:5px;margin:5px;border-
radius:5px;font-weight:bold;">Data not found</div></td>
</tr>
<tr>
<td width="23%"><div
style="background:red;color:white;padding:5px;margin:5px;border-
radius:5px;font-weight:bold;text-align:right;">Jabatan</div></td>
<td width="2%" align="center">:</td>
<td width="75%" height="30px"><div
style="background:blue;color:white;padding:5px;margin:5px;border-
radius:5px;font-weight:bold;">Data not found</div></td>
</tr>
<tr>
<td width="23%"><div
style="background:red;color:white;padding:5px;margin:5px;border-
radius:5px;font-weight:bold;text-align:right;">Keterangan</div></td>
93
<td width="2%" align="center">:</td>
<td width="75%" height="30px"><div
style="background:blue;color:white;padding:5px;margin:5px;border-
radius:5px;font-weight:bold;"><?php echo $keterangan ?></div></td>
</tr>
<tr>
<td width="23%"><div
style="background:red;color:white;padding:5px;margin:5px;border-
radius:5px;font-weight:bold;text-align:right;">Jam</div></td>
<td width="2%" align="center">:</td>
<td width="75%" height="30px"><div
style="background:blue;color:white;padding:5px;margin:5px;border-
radius:5px;font-weight:bold;"><?php echo $jam ?></div></td>
</tr>
</table>
<?php
}
echo $pesan ?>
<?php
} else {
?>
<h2 align="center">Selamat datang</h2>
<center><img style="width:150px;height:150px;margin-
top:2%;" src="<?php echo base_url('upload/default/no-pict.png')
?>"></center>
<table width="100%" style="margin-top:5%;margin-
bottom:5%;">
<tr>
<td width="23%"><div
style="background:red;color:white;padding:5px;margin:5px;border-
radius:5px;font-weight:bold;text-align:right;">NIK</div></td>
<td width="2%">:</td>
<td width="75%" height="30px"><div
style="background:blue;color:white;padding:5px;margin:5px;border-
radius:5px;font-weight:bold;">Data not found</div></td>
</tr>
94
<tr>
<td width="23%"><div
style="background:red;color:white;padding:5px;margin:5px;border-
radius:5px;font-weight:bold;text-align:right;">Nama</div></td>
<td width="2%">:</td>
<td width="75%" height="30px"><div
style="background:blue;color:white;padding:5px;margin:5px;border-
radius:5px;font-weight:bold;">Data not found</div></td>
</tr>
<tr>
<td width="23%"><div
style="background:red;color:white;padding:5px;margin:5px;border-
radius:5px;font-weight:bold;text-align:right;">Jabatan</div></td>
<td width="2%">:</td>
<td width="75%" height="30px"><div
style="background:blue;color:white;padding:5px;margin:5px;border-
radius:5px;font-weight:bold;">Data not found</div></td>
</tr>
<tr>
<td width="23%"><div
style="background:red;color:white;padding:5px;margin:5px;border-
radius:5px;font-weight:bold;text-align:right;">Keterangan</div></td>
<td width="2%" align="center">:</td>
<td width="75%" height="30px"><div
style="background:blue;color:white;padding:5px;margin:5px;border-
radius:5px;font-weight:bold;">Data not found</div></td>
</tr>
<tr>
<td width="23%"><div
style="background:red;color:white;padding:5px;margin:5px;border-
radius:5px;font-weight:bold;text-align:right;">Jam</div></td>
<td width="2%" align="center">:</td>
<td width="75%" height="30px"><div
style="background:blue;color:white;padding:5px;margin:5px;border-
radius:5px;font-weight:bold;">Data not found</div></td>
</tr>
</table>
<?php echo $pesan ?>
95
<?php
}
?>
</div>
</div>
</div>
<hr/>
<div class="row">
<div class="col-md-6">
PT RAMA JASINDO ABADI
</div>
<div class="col-md-6 text-right">
<small>© 2016 - <?php echo date('Y') ?></small>
</div>
</div>
</div>
<!-- First, include the Webcam.js JavaScript Library -->
<script type="text/javascript" src="<?php echo base_url()
?>assets/webcam/webcam.js"></script>
<!-- Configure a few settings and attach camera -->
<script language="JavaScript">
Webcam.set({
width: 330,
height: 240,
image_format: 'jpeg',
jpeg_quality: 90
});
Webcam.attach( '#my_camera' );
</script>
<script language="JavaScript">
function take_snapshot() {
// take snapshot and get image data
Webcam.snap( function(data_uri) {
// display results in page
var raw_image_data =
data_uri.replace(/^data\:image\/\w+\;base64\,/, '');
document.getElementById('mydata').value = raw_image_data;
96
} );
}
</script>
</body>
</html>
Listing Progran IV.2. View Absen
C. Model Absen
<!--
/**********************************************************
*/
/ /
/ @copyright handc0de /
/ /
/**********************************************************
*/
-->
<?php
class Mabsen extends CI_Model {
var $table = 'absensi';
var $table_join = 'karyawan';
var $table_join_by = 'nik';
var $table_join2 = 'jabatan';
var $table_join2_by = 'jabatanid';
public function get_bydatarow($w) {
$this->db->where($w);
return $this->db->get($this->table)->num_rows();
}
97
public function insert($d) {
$this->db->insert($this->table, $d);
}
public function update($d,$w) {
$this->db->where($w);
$this->db->update($this->table,$d);
}
public function get_all() {
return $this->db->query("SELECT * from absensi
inner join
karyawan on karyawan.nik=absensi.nik
inner join jabatan
on jabatan.jabatanid=karyawan.jabatanid
order by
absensi.tanggal DESC");
}
public function get_bydata($data) {
$this->db->where($data);
return $this->db->get($this->table);
}
public function get_bydatajoin($data) {
return $this->db->query("SELECT * from absensi
inner join
karyawan on karyawan.nik=absensi.nik
inner join jabatan
on jabatan.jabatanid=karyawan.jabatanid
where $data
order by
absensi.tanggal DESC");
}
98
public function get_bydatajoinlembur($data) {
return $this->db->query("SELECT * from absensi
inner join
karyawan on karyawan.nik=absensi.nik
inner join jabatan
on jabatan.jabatanid=karyawan.jabatanid
inner join lembur
on lembur.jabatanid=jabatan.jabatanid
where $data
order by
absensi.tanggal DESC");
}
}
?>
Listing Program IV.3. Model Absen
99
4.4. Testing
Dalam penyusunan skripsi ini pengujian system dilakukan menggunakan
Black Box Testing.
A. Form Absen Masuk Karyawan
Tabel IV.10.
Black Box Testing Form Absen Masuk Karyawan
No Skenario Pengujian Test case Hasil yang
diharapkan
Hasil
pengujian Kesimpulan
1.
NIK tidak diisi
kemudian klik
tombol absen
Nik :
(kosong)
Sistem akan
menolak dan
tampil
peringatan
Sesuai
harapan Valid
2.
NIK diisi dengan
huruf atau simbol
kemudian klik
tombol absen
Nik :
12a!@
Sistem akan
menolak dan
tampil
peringatan
Sesuai
harapan Valid
3.
NIK diisi dengan
benar tapi tidak
terdaftar oleh
system
Nik :
2010202
Sistem akan
menolak dan
tampil
peringatan
Sesuai
harapan Valid
4.
NIK diisi dengan
benar dan sudah
terdaftar tapi
dilakukan diatas
pukul 8 pagi
Nik :
2010002
Sistem akan
menerima dan
karyawan
dinyatakan
telat
Sesuai
harapan Valid
5.
NIK diisi dengan
benar dan sudah
terdaftar dan
dilakukan dibawah
pukul 8 pagi
Nik :
2010002
Sistem akan
menerima dan
karyawan
dinyatakan
tepat waktu
Sesuai
harapan Valid
100
B. Form Absen Keluar Karyawan
Tabel IV.11.
Black Box Testing Form Absen Keluar Karyawan
No Skenario Pengujian Test case Hasil yang
diharapkan
Hasil
pengujian Kesimpulan
1.
NIK tidak diisi
kemudian klik
tombol absen
Nik :
(kosong)
Sistem akan
menolak dan
tampil
peringatan
Sesuai
harapan Valid
2.
NIK diisi dengan
huruf atau simbol
kemudian klik
tombol absen
Nik :
12a!@
Sistem akan
menolak dan
tampil
peringatan
Sesuai
harapan Valid
3.
NIK diisi dengan
benar tapi tidak
terdaftar oleh
system
Nik :
2010202
Sistem akan
menolak dan
tampil
peringatan
Sesuai
harapan Valid
4.
NIK diisi dengan
benar dan sudah
terdaftar tapi
dilakukan dibawah
pukul 4 sore
Nik :
2010002
Sistem akan
menolak dan
tampil
peringatan
Sesuai
harapan Valid
5.
NIK diisi dengan
benar dan sudah
terdaftar dan
melakukan absen
diatas pukul 4 sore
Nik :
2010002
Sistem akan
menerima dan
karyawan
telah
melakukan
absen keluar
Sesuai
harapan Valid
6.
NIK diisi dengan
benar dan sudah
terdaftar dan
dilakukan diatas
pukul 5
Nik :
2010002
Sistem akan
menerima dan
karyawan
memasuki
jam lembur
Sesuai
harapan Valid
101
C. Form Login Pengguna
Tabel IV.12.
Black Box Testing Form Login Pengguna
No Skenario
Pengujian Test case
Hasil yang
diharapkan
Hasil
pengujian Kesimpulan
1.
Username dan
password tidak
diisi kemudian
klik tombol login
Username :
(kosong)
Passowrd :
(kosong)
Sistem akan
menolak dan
tampil
peringatan
Sesuai
harapan Valid
2.
Username diisi
tapi password
tidak diisi
kemudian klik
tombol login
Username :
khairul
Password :
(kosong)
Sistem akan
menolak dan
tampil
peringatan
Sesuai
harapan Valid
3.
Password diisi
tapi username
tidak diisi
kemudian klik
tombol login
Username :
(kosong)
Password :
khairul
Sistem akan
menolak dan
tampil
peringatan
Sesuai
harapan Valid
4.
Username dan
password diisi
dengan benar tapi
tidak terdaftar
oleh sistem
Username :
retno
Password :
retno
Sistem akan
menolak dan
tampil
peringatan
Sesuai
harapan Valid
5.
Username dan
password diisi
dengan benar dan
sudah terdaftar di
sistem
Username :
khairul
Password :
khairul
Sistem akan
menerima dan
pengguna
akan di
arahkan ke
halaman
pengguna
Sesuai
harapan Valid
102
D. Form Login Admin
Tabel IV.13.
Black Box Testing Form Login Admin
No Skenario
Pengujian Test case
Hasil yang
diharapkan
Hasil
pengujian Kesimpulan
1.
Username dan
password tidak
diisi kemudian
klik tombol login
Username :
(kosong)
Passowrd :
(kosong)
Sistem akan
menolak dan
tampil
peringatan
Sesuai
harapan Valid
2.
Username diisi
tapi password
tidak diisi
kemudian klik
tombol login
Username :
admin
Password :
(kosong)
Sistem akan
menolak dan
tampil
peringatan
Sesuai
harapan Valid
3.
Password diisi
tapi username
tidak diisi
kemudian klik
tombol login
Username :
(kosong)
Password :
admin
Sistem akan
menolak dan
tampil
peringatan
Sesuai
harapan Valid
4.
Username dan
password diisi
dengan benar tapi
tidak terdaftar
oleh sistem
Username :
pengguna
Password :
pengguna
Sistem akan
menolak dan
tampil
peringatan
Sesuai
harapan Valid
5.
Username dan
password diisi
dengan benar dan
sudah terdaftar di
sistem
Username :
admin
Password :
admin
Sistem akan
menerima dan
pengguna
akan di
arahkan ke
halaman
admin
Sesuai
harapan Valid
103
4.5. Support
Dalam pembuatan sistem informasi absensi dan perhitungan lembur ini akan
membantu hrd untuk mengelola data-data absensi maupun perhitungan lembur dan
mempermudah dalam membuat laporan absensi maupun perhitungan lembur, untuk
itu penulis menggunakan framework PHP yang bernama CodeIgniter 3.0 dalam
pembuatan aplikasi. Untuk mengoperasikan program tersebut diperlukan spesifikasi
komputer yang cukup tinggi dan untuk mendukung pembuatan aplikasi kebutuhan
hardware yang diperlukan meliputi : processor, memory, harddisk, keyboard,
mouse, barcode scanner, camera sedangkan kebutuhan software yang diperlukan
meliputi sistem operasi dan software pendukung pemrograman lainnya.
4.5.1. Spesifikasi Hardware dan Software
Untuk menjalankan aplikasi ini membutuhkan spesifikasi hardware dan
software yang cukup tinggi agar aplikasi berjalan dengan lancar tanpa adanya bug
maupun error.
104
Tabel IV.14.
Spesifikasi Hardware dan Software
Kebutuhan Keterangan
Processor Core i3 2.30 GHz
RAM 2048 MB
Harddisk 320 GB
VGA AMD Radeon HD 6480G
Webcam Logitech HD 1080
Barcode Scanner Barcode Scanner Eppos X100
Keyboard 108 key
Mouse Standart
Printer Epson T1100
Sistem Operasi Windows 7 x86
Browser Google Chrome
Web Server Apache 2.4.17, PHP 5.6.21
Database Server MariaDB 10.1.13, phpMyAdmin 4.5.1
105
4.6. Spesifikasi Dokumen Sistem Usulan
A. Laporan Absensi Semua Karyawan Perbulan
Nama Dokumen : Laporan Absensi
Fungsi : Rekap file absen semua karyawan perbulan
Sumber : Halaman Pengguna
Tujuan : HRD & Umum
Media : Kertas
Frekuensi : Setiap membutuhkan laporan absensi
Format : Lampiran B - 1
B. Laporan Absensi Perkaryawan dan Perbulan
Nama Dokumen : Laporan Absensi
Fungsi : Rekap file absen perkaryawan dan perbulan
Sumber : Halaman Pengguna
Tujuan : HRD & Umum
Media : Kertas
Frekuensi : Setiap membutuhkan laporan absensi
Format : Lampiran B – 2
C. Laporan Lembur Semua Karyawan Perbulan
Nama Dokumen : Laporan Lembur
Fungsi : Rekap file lembur semua karyawan perbulan
Sumber : Halaman Pengguna
Tujuan : HRD & Umum
Media : Kertas
106
Frekuensi : Setiap membutuhkan laporan lembur
Format : Lampiran B - 3
D. Laporan Lembur Perkaryawan dan Perbulan
Nama Dokumen : Laporan Lembur
Fungsi : Rekap file lembur perkaryawan dan perbulan
Sumber : Halaman Pengguna
Tujuan : HRD & Umum
Media : Kertas
Frekuensi : Setiap membutuhkan laporan lembur
Format : Lampiran B - 4