38
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
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.
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
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.
2. Use Case Diagram Halaman Pengguna
Login
Dashboard
Mengelola Data Karyawan
Melihat Laporan Absen
Merubah Data Login Logout
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
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.
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
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.
C. Activity Diagram
1. Activity Diagram Absen Masuk
Activity Diagram Activity Diagram
Karyawan
Karyawan SystemSystem PenggunaPengguna
Activity Diagram Proses Absen MasukActivity Diagram Proses Absen Masuk
Memasukkan Nomor Induk Karyawan
Y T
Rekap Absen Melihat rekap absensi Absen Masuk
Lebih dari jam 8 pagi
Terinput Telat Terinput Tepat
Waktu
Y T
Pengecekan Nomor Induk Karyawan
Gambar IV.4. Activity Diagram Absen Masuk
2. Activity Diagram Absen Keluar dan Perhitungan Lembur
Activity Diagram Activity Diagram
Karyawan
Karyawan SystemSystem PenggunaPengguna
Activity Diagram Proses Absen Keluar dan Perhitungan LemburActivity Diagram Proses Absen Keluar dan Perhitungan Lembur
Memasukkan Nomor Induk Karyawan
Y T
Rekap Absen Melihat rekap
absensi Lebih dari jam 4
Absen Keluar Y Pengecekan Nomor
Induk Karyawan
T
Lebih dari jam 5
Perhitungan Lembur Y
T
Melihat rekap lembur Rekap Lembur
Gambar IV.5.
Activity Diagram Absen Keluar dan Perhitungan Lembur
3. Activity Diagram Halaman Pengguna
Activity Diagram Activity Diagram
Pengguna
Pengguna SystemSystem
Activity Diagram Halaman PenggunaActivity Diagram Halaman Pengguna
Login Validasi
Lihat laporan absen, lembur dan
karyawan T
Y
Gambar IV.6. Activity Diagram Halaman Pengguna
4. Activity Diagram Halaman Admin
Activity Diagram Activity Diagram
Admin
Admin SystemSystem
Activity Diagram Halaman AdminActivity Diagram Halaman Admin
Login Validasi
Mengelola data master
T
Y
Gambar IV.7. Activity Diagram Halaman Admin
4.2. Desain 4.2.1. Database
A. Entity Relationship Diagram
Karyawan Absensi
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
alamatkaryawan jabatanid
fotokaryawan
lemburid biaya_lembur jabatanid id_pengguna
username
nama password
fotopengguna id_pengguna
id_pengguna
Gambar IV.8. Entity Relationship Diagram
B. Logical Record Structure
Absensi Absensi
Karyawan Karyawan
Jabatan Jabatan
Lembur Lembur Pengguna
Pengguna absensiid absensiid PK
PK
tanggal tanggal jam_masuk jam_masuk jam_keluar jam_keluar status_absen status_absen status_kehadiran status_kehadiran gambar_absenmasuk gambar_absenmasuk gambar_absenkeluar gambar_absenkeluar banyak_lembur banyak_lembur nik
nik FK FK
nik nik PK
PK
namakaryawan namakaryawan notelp notelp email email tanggal_lahir tanggal_lahir alamatkaryawan alamatkaryawan fotokaryawan fotokaryawan jabatanid jabatanid FK
FK
jabatanid jabatanid PK
PK
namajabatan namajabatan
lemburid lemburid PK
PK
biaya_lembur biaya_lembur jabatanid jabatanid FK
FK id_pengguna
id_pengguna PK
PK
username username password password nama nama fotopengguna fotopengguna id_pengguna id_pengguna FK
FK
id_pengguna id_pengguna FK
FK 1
M
1
1
1 1 1
M
1 1
Gambar IV.9. Logical Record Structure
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
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
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
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
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
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
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
4.2.2. Software Architecture A. Class Diagram
Absen Absen +index -Mkaryawan -Mabsen
Admin Admin +index +login +data_admin +data_jabatan +data_karyawan +data_lembur +data_pengguna +pengaturan +update -Madmin -Mkaryawan -Mjabatan -Mlembur -Mpengguna Auth
Auth +admin +pengguna +logout_admin +logout_pengguna -Madmin -Mpengguna
Page404 Page404 +index Pengguna
Pengguna +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
Mabsen Mabsen
+get_bydatarow +insert +update +get_all +get_bydata +get_bydatajoin +get_bydatajoinlembur
Madmin Madmin +get_bydata +get_byid +get_all +update +delete +insert
Mjabatan Mjabatan +get_bydata +get_byid +get_all +update +delete +insert
Mkaryawan Mkaryawan +get_bydata +get_byidrow +get_join +get_all +update +delete +insert
Mlembur Mlembur +get_bydata +get_byid +get_all +update +delete +insert
Mpengguna Mpengguna +get_bydata +get_byid +get_all +update +insert +delete viewAbsen
viewAbsen +Absen
viewAdmin viewAdmin +Admin
viewPengguna viewPengguna +Pengguna
view404 view404 +Page404
Gambar IV.10. Class Diagram
B. Component Diagram
Frontend Page Apache
Database Backend Page
Browser
Controller
View Model
Gambar IV.11. Component Diagram
C. Deployment Diagram
Frontend Page
Backend Page Controller
View Model
Browser
Port 80
Apache Server
Database Server
Port 3306
Gambar IV.12. Deployment Diagram
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.
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.
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.
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.
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.
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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.
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() {
$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
</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'>
<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');
$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
);
$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';
$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 / / [email protected] / / /
/**********************************************************
*/
-->
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial- scale=1.0">
<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>
</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>
<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 {
?>
<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>
<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>
<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 ?>
<?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;
} );
}
</script>
</body>
</html>
Listing Progran IV.2. View Absen C. Model Absen
<!--
/**********************************************************
*/
/ /
/ @copyright handc0de / / [email protected] / / /
/**********************************************************
*/
-->
<?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();
}
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");
}
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
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
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
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
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
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.
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
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
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