## pISSN: 2442-3386  eISSN: 2442-4293
Vol 8 No 2 Jul – Des 2022, 201 - 212

## SISTEM PENJADWALAN KEHADIRAN SATPAM BERBASIS WEB DI PERUSAHAAN MOTOR JAKARTA
Muhamamd Yusuf Rinaldy 1 , Tjatursari Widiartin 2
1,2 Program Studi Informatika, Fakultas Teknik, Universitas Wijaya Kusuma Surabaya
1 rinaldy155@gmail.com , 2 widiartin@gmail.com

## Abstrak
Sistem  Penjadwalan  Kehadiran  Satpam  Berbasis Web Di  Perusahaan  Produksi  Motor  Jakarta  dibangun  untuk mempermudah  kepala  divisi  keamanan  dalam  membuat  jadwal  kehadiran  agar  terhindari  dari  benturan  jadwal kehadiran antara satpam dan jadwal kehadiran yang sama. Sistem dapat melakukan randomize jadwal kehadiran, menampilkan jadwal kehadiran aktif, dan histori jadwal kehadiran. Hasil dari pengujian sistem berhasil dengan baik,  dapat  memudahkan  kepala  divisi  keamanan  dalam  membuat  jadwal  kehadiran,  melihat  histori  jadwal kehadiran, mempermudah satpam dalam mengetahui jadwal kehadirannya agar dapat berpatroli.
Kata Kunci: Sistem, Penjadwalan, Patroli, Randomize

## Abstract
The Web-Based Security Guard Attendance Scheduling System at the Jakarta Motor Production Company was built to make it easier for the head of the security division to make attendance schedules to avoid collisions in attendance schedules  between  security  guards  and  the  same  attendance  schedule.  The  system  can  randomize  attendance schedules, display active attendance schedules, and attendance schedule history. The results of the system testing worked well, making it easier for the head of the security division to make attendance schedules, see the history of attendance schedules, make it easier for security guards to find out their attendance schedules so that they could patrol.
Keywords: System, Scheduling, Patrolling, Randomize

## I. PENDAHULUAN
Data  adalah  gambaran  suatu  kejadian  dalam  bentuk mentah yang belum diproses melalui pengolahan data, dan  data  yang  mentah  harus  diolah  sehingga  dapat memperoleh  informasi  yang  lebih  teratur  dan  jelas. Seiring  perkembangan  jaman,  teknologi  semakin berkembang dengan pesat, sehingga dapat mempermudah  dalam  mengelola  data  secara  efektif dan  efisien[1].  Pengolahan  data  merupakan  suatu proses  dalam  pengumpulan  data  yang  akan  dibentuk menjadi  berarti  dan  berguna  yang  berupa    suatu informasi[2].
Pada perusahaan produksi motor di Jakarta merupakan produksi  motor  yang  relatif  besar  sehingga  memiliki jumlah personil satpam yang cukup sebanyak yakni 96 personil.  Banyaknya  jumlah  personil  satpam  yang dimiliki perusahaan produksi motor ini mengakibatkan kepala  divisi  keamanan  bingung  dalam  melakukan pembuatan  jadwal  kehadiran  satpam.  Karena  sering terjadinya  benturan  jadwal shift antar  satpam  tidak hanya  2  kali,  maka  perlunya  dibuatkan  sistem penjadwalan ini. Agar terhindar dari jadwal kehadiran yang  sama,  maka  dibuatlah  optimasi  terhadap  jadwal kehadiran[3],  sehingga  satpam  mendapatkan  jadwal yang berbeda setiap periode.

## II. METODE
Di  dalam  penelitian  ini  akan  membuat  sistem penjadwalan kehadiran satpam di perusahaan produksi
motor  di  Jakarta  bertujuan  untuk  membantu  satuan pengamanan yang ada.
Metode  yang  digunakan  untuk  penelitian  ini  seperti pada gambar 1 yaitu:
Gambar 1. Alur Tahapan Penelitian Pembuatan Sistem Penjadwalan Pada Perusahaan Motor Jakarta
2.1. Identifikasi Masalah  Pembuatan Sistem Penjadwalan Pada Perusahaan Motor Jakarta
Tahap ini adalah tahap identifikasi masalah dari sistem penjadwalan  kehadiran  satpam  berbasis web di perusahaan  produksi  motor  Jakarta.    Proses  yang

## Melek IT

## Information Technology Journal. Vol 8 No 2 Jul - Des 2022, 202 - 212
dilakukan pertama kali adalah dengan mengumpulkan data.
Teknik  Pengumpulan  data  yang  dilakukan  untuk mendapatkan  informasi  tentang  objek  penelitian dengan mengumpulkan data dimulai dengan melakukan observasi. Hasil dari observasi digunakan untuk mengetahui alur nyata dari sistem yang ada pada Produksi Motor Jakarta. Kegiatan ini dilakukan selama beberapa  hari  dengan  mengamati  dan  melihat langsung  dari awal hingga akhir proses penjadwalan.

## 2.2.1
Penjadwalan Kehadiran Satpam
Di
Perusahaan Motor Jakarta
Perusahaan  produksi  motor  merupakan  perusahaan motor  yang  relatif  besar  sehingga  tidak  menutup kemungkinan  memiliki  jumlah  personil  satpam  yang cukup banyak. Banyaknya jumlah personil satpam yang dimiliki perusahaan produksi motor ini mengakibatkan sulitnya  Kepala  Divisi  Keamanan  dalam  menyusun jadwal  patroli,  karena  penyusunan  jadwal  tersebut disusun secara manual. Sering terjadi jadwal shift yang berbenturan  saat  disusun  secara  manual,  hal  ini menyebabkan kualitas dalam segi keamanan menurun dan  yang  dapat  berpotensi  terjadinya  kelalaian  dalam keamanan.

## 2.2.2 Penjadwalan  Pada  Perusahaan  Motor Jakarta
Penjadwalan  pada  Perusahaan  Motor  Jakarta  adalah proses  pengambilan  keputusan  yang  memiliki  peran cukup  penting  dalam  proses  manufaktur  dan  sistem produksi  begitu  juga  dalam  lingkup  pemrosesan informasi. Penjadwalan juga terdapat dalam transportasi  dan  distribusi  serta  dalam  industri[4]. Penjadwalan  juga merupakan suatu proses penempatan kegiatan  terhadap  waktu  agar  dapat  menghasilkan penempatan  kegiatan  yang  tepat  sesuai dengan urutan pekerjaan[5][6][7][8]. Proses dalam pembuatan jadwal diharapkan dapat membantu instansi maupun perusahaan  dalam  memenuhi  semua  kendala  agar seluruh aspek  pekerjaan dapat berjalan  dengan efektif dan efisien[9][10][11][12].

## 2.2.3 Struktur  Organisasi  Divisi  Satpam  Pada Perusahaan Motor Jakarta
Dokumentasi  struktur  organisasi  digunakan  sebagai dasar  teori  dalam  pembangunan  sistem  kehadiran satpam yang akan dijadikan aturan tingkat kewenangan seperti ditunjukkan pada gambar 2.

## 2.2.4 Prosedur  Penjadwalan  Pada  Perusahaan Motor Jakarta
Prosedur penjadwalan yang diterapkan pada Perusahaan Motor Di Jakarta adalah sebagai berikut:
• Kepala  Divisi  Keamanan  yang  membuat  jadwal patroli awal.
• Penjadwalan berdasarkan parameter tertentu.

## 2.2.5 Aturan  Penjadwalan  Pada  Perusahaan Motor Jakarta
Aturan penjadwalan yang diterapkan pada Perusahaan Motor Di Jakarta adalah sebagai berikut:
• Parameternya adalah satpam dan shift.
• Jadwal tidak boleh sama setiap minggunya.
• Satpam masuk setiap hari dan ada yang libur
• Satpam dapat melakukan pergantian shift apabila satpam  berhalangan  hadir,  maksimal  pergantian adalah 1 hari .

## Gambar 2.  Struktur Organisasi Divisi Satpam Perusahaan Motor Jakarta
Tabel 1. Simbol Data Flow Diagram SIMBOL NAMA FUNGSI Entitas Eksternal Sumber atau tujuan data. Proses Mewakili pekerjaan yang dilakukan dalam sistem. Data Flow Menunjukkan pergerakan data dari satu titik ke titik lain, dengan kepala panah mengarah ke tujuan data. Data Store Merepresentasikan penyimpanan manual, seperti lemari arsip, atau file atau database
yang terkomputerisasi. 2.2. Analisa Sistem Pembuatan Sistem Penjadwalan Pada Perusahaan Motor Jakarta
Pada  proses  analisa  sistem  dilakukan  analisa  untuk mencari  kebutuhan  sistem  penjadwalan  Satpam  di Perusahaan  Motor  Jakarta.  Gambaran  lengkap mengenai  kebutuhan  sistem  penjadwalan  kehadiran satpam ditunjukkan pada data flow diagram.

## pISSN: 2442-3386  eISSN: 2442-4293

## Vol 8 No 2 Jul – Des 2022, 203 - 212

## 2.2.1 Data  Flow  Diagram  Pembuatan  Sistem
Penjadwalan  Pada  Perusahaan  Motor
Jakarta
Data  flow  Diagram pembuatan  Sistem  Penjadwalan pada  Perusahaan  Motor  Jakarta  adalah  bentuk gambaran  grafis  yang  menampilkan  aliran  suatu  data dari sumbernya dalam bentuk objek yang terdapat pada Perusahaan  Motor  Jakarta  kemudian  melewati  suatu proses yang mentransformasikan ke bentuk tujuan yang lain,  yang  ada  pada  objek  lain[13][14]. Data  flow Diagram juga merupakan grafik yang menggambarkan pandangan  sejauh  mungkin  mengenai  suatu input , proses dan output sistem Penjadwalan Pada Perusahaan Motor Jakarta, yang berhubungan dengan input , proses dan output dari  model  sistem  pada  Perusahaan  Motor Jakarta [15].
Berdasarkan gambar 3 , terdapat 2 entity yaitu kepala divisi  keamanan,  kepala  regu,  satpam.  Kepala  divisi keamanan memasukkan data jadwal shift awal, sistem menampilkan  jadwal  shift  untuk  satpam.  Satpam mendapatkan jadwal shift, kemudian dapat melakukan patroli.
Gambar 3. Data Flow Diagram Konteks Pembuatan Sistem Penjadwalan Pada Perusahaan Motor Jakarta
Berdasarkan  DFD  pada  gambar  4  terdapat  2 entity yaitu  Kepala  Divisi  Keamanan,  dan  Satpam.  Kepala Divisi  Keamanan  memasukkan  identitas  satpam  dan disimpan  ke data  store satpam.  Kepala  Divisi Keamanan memasukkan jadwal awal dan disimpan ke data  store jadwal.  Dalam  menampilkan  kehadiran satpam,  diperlukannya  data  jadwal  yang  telah disimpan  pada data  store jadwal.  Dalam  melakukan penjadwalan  ulang diperlukan  data  jadwal  awal  yang berasal  dari data  store jadwal  kemudian  akan  di generate oleh sistem secara otomatis .
Pada  Gambar  5  Kepala  divisi  keamanan  memasukan jadwal awal yang akan diproses di rekam jadwal yang akan disimpan pada data store jadwal. Agar terhindar dari kesamaan jadwal, maka perlu adanya proses cek kesesusaian jadwal, apabila terdapat jadwal yang sama
maka  akan  muncul  peringatan  ke  kepala  divisi keamanan.
Gambar  4. Data  Flow  Diagram Level  0  Pembuatan Sistem Penjadwalan Pada Perusahaan Motor Jakarta
Gambar 5. Data Flow Diagram Level 1 Proses 2
Pembuatan Sistem Penjadwalan Pada Perusahaan
Motor Jakarta
Didalam tahapan desain sistem dilakukan desain antar muka  sistem  yang  digunakan  oleh  Kepala  Divisi  dan Satpam
Desain  basis  data  untuk  jadwal  kehadiran,  identitas petugas  patroli,  regu  patroli,  desain  algoritma randomize jadwal.

## 2.3 Desain Sistem Pembuatan Sistem Penjadwalan Pada Perusahaan Motor Jakarta
Didalam tahapan desain sistem akan dilakukan desain antarmuka sistem yang digunakan oleh Kepala Divisi Keamanan,  Kepala  Regu,  Wakil  Kepala  Regu,  dan Anggota. Desain basis data untuk sistem penjadwalan patroli,  desain  algoritma  untuk  seluruh  proses  pada sistem penjadwalan kehadiran satpam.
2.3.1  Desain  Conceptual  Data  Model  Pembuatan Sistem Penjadwalan Pada Perusahaan Motor Jakarta
Conceptual  Data  Model (CDM)  pada  pembuatan Sistem  Penjadwalan  pada  Perusahaan  Motor  Jakarta dibuat  untuk  Menggambarkan  secara  detail  struktur basis data dalam bentuk logic. Struktur ini independen terhadap  semua software [16] ,  maupun  struktur  data storage  tertentu  yang  digunakan  dalam  aplikasi Pembuatan  Sistem  Penjadwalan  pada  Perusahaan Motor Jakarta ini. CDM ditampilkan pada gambar 6.

## Melek IT

## Information Technology Journal. Vol 8 No 2 Jul - Des 2022, 204 - 212
Gambar 6. Conceptual Data Model pada sistem penjadwalan Satpam Perusahaan Motor Jakarta
2.3.2  Desain  Physical  Data  Model  Pembuatan Sistem  Penjadwalan  Pada  Perusahaan Motor Jakarta
Physical  Data  Model (PDM)  pembuatan  Sistem
Penjadwalan pada perusahaan Motor Jakarta merupakan  gambaran  secara  detail  basis  data  dalam bentuk fisik. Penggambaran rancangan PDM pembuatan  Sistem  Penjadwalan  pada  Perusahaan Motor Jakarta ini menunjukkan struktur penyimpanan data  yang  digunakan  sesungguhnya[17][18][19][20]  , PDM ditampilkan pada gambar 7.
Gambar 7. Physical Data Model pada sistem penjadwalan Satpam Perusahaan Motor Jakarta
2.3.3 Desain User Interface Penjadwalan

## Perusahaan Motor Jakarta
Pada  Gambar  9  user  melakukan  login  dengan  cara memasukkan username dan password .
Gambar 9. Desain Login Sistem Penjadwalan Perusahaan Motor Jakarta
Pada  Gambar  10  Kepala  Divisi  Keamanan,  dapat melihat  dan  dapat  mengambil  jadwal  untuk  hari berikutnya.
Gambar 10. Desain User Interface Jadwal pada sistem penjadwalan Satpam Perusahaan Motor Jakarta
Pada  Gambar  11  satpam  dapat  mengetahui  jadwal mereka hari ini dan besok. Satpam melakukan presensi terlebih dahulu sebelum bertugas.
Gambar 11.  Desain User Interface Tampilan User pada sistem penjadwalan Satpam Perusahaan Motor Jakarta
Pada  Gambar  12  Kepala  Divisi  Keamanan  dapat melakukan edit dan hapus pada data personil satpam.
Gambar 12. Desain User Interface Data Satpam Sistem Penjadwalan Pada Perusahaan Motor Jakarta

## pISSN: 2442-3386  eISSN: 2442-4293

## Vol 8 No 2 Jul – Des 2022, 205 - 212
Gambar 13. Flowchart Menampilkan Data Satpam pada sistem penjadwalan Satpam Perusahaan Motor Jakarta
Gambar 14. Flowchart Randomize Jadwal sistem penjadwalan Satpam Perusahaan Motor Jakarta

## 2.3.4.  Desain  Proses  Sistem  Penjadwalan  Satpam Perusahaan Motor Jakarta
Pada  bagian  ini  akan  dijelaskan  mengenai  setiap langkah langkah kegiatan yang   berada dalam Sistem Penjadwalan  Kehadiran  Satpam  Berbasis Web Di Perusahaan  Motor  Jakarta  untuk  menyelesaikan penelitian yang diilustrasikan pada bentuk flowchart .
Seperti  yang  ditunjukan  pada  DFD  level  0  proses  1 disebutkan  bahwa  proses  tersebut  mempunyai  alur menampilkan jadwal. Adapun Algoritma Untuk proses menampilkan jadwal ditunjukkan pada Gambar 13.
Seperti  ditunjukkan  pada  DFD  Level  0  Proses  4 disebutkan  bahwa  proses  tersebut  mempunyai  alur menamilkan jadwal. Adapun Algoritma Untuk proses menampilkan jadwal ditunjukkan pada Gambar 14.
Seperti  ditunjukkan  pada  DFD  Level  0  Proses  3 disebutkan  bahwa  proses  tersebut  mempunyai  alur menampilkan jadwal. Adapun Algoritma Untuk proses menampilkan jadwal ditunjukkan pada Gambar 15.
Gambar 15. Flowchart menampilkan jadwal Satpam pada sistem penjadwalan Satpam Perusahaan Motor Jakarta
2.3.5. Membangun Sistem
Source  Code untuk  melakukan  pengacakan  atau randomize jadwal kehadiran.
<?php // Include config file require_once "config.php";
require_once "helpers.php"; require_once "header.php"; $jadwal = $_GET['jadwal']; $sql1  =  "UPDATE  `jadwal`  SET  `status`  = 'Selesai'";
$result1  =  mysqli_query($link,$sql1)  or die(mysqli_error($link)); $sql = "SELECT * FROM tim";

## Melek IT
$result = mysqli_query($link,$sql) or die(mysqli_error($link)); while  ($row  =  mysqli_fetch_array($result)) { $tim[] = $row['id_tim']; }
$shift =
array('Pagi','Siang','Malam','Libur');
$dayList = array( 'Sun' => 'Minggu', 'Mon' => 'Senin', 'Tue' => 'Selasa', 'Wed' => 'Rabu', 'Thu' => 'Kamis', 'Fri' => 'Jumat', 'Sat' => 'Sabtu' ); for ($i=0; $i < count($shift) ; $i++) { $day = date('D', strtotime($jadwal));
$sql2 = "INSERT INTO `jadwal` (`id_jadwal`,  `hari`,  `tanggal`,  `status`) VALUES (NULL,
'".$dayList[$day]."', '".$jadwal."', 'Aktif')";
$result2 = mysqli_query($link,$sql2) or die(mysqli_error($link));
$sql4  =  "SELECT  MAX(id_jadwal)  as id_jadwal FROM `jadwal`"; $result4 = mysqli_query($link,$sql4) or die(mysqli_error($link));
$result_jadwal = mysqli_fetch_assoc($result4); $id_jadwal = $result_jadwal['id_jadwal'];
for ($j=0; $j <count($tim) ; $j++) { $sql3 = "INSERT INTO `detail_jadwal` (`id_detail_jadwal`, `id_jadwal`,
`id_regu`, `shift`) VALUES (NULL, '".$id_jadwal."', '".$tim[$j]."',
'".$shift[$j]."')";
$result3 = mysqli_query($link,$sql3) or die(mysqli_error($link)); } $jadwal  =  strtotime("1  day", strtotime($jadwal)); $jadwal = date("Y-m-d", $jadwal); $wadah = $shift[0]; $shift[0] = $shift[1]; $shift[1] = $shift[2]; $shift[2] = $shift[3]; $shift[3] = $wadah; }
echo "<script> alert('Data Berhasil Ditambahkan'); location.replace('jadwal-aktif.php'); </script> "; ?>
Source Code untuk melakukan proses login.
<?php // mengaktifkan session php session_start(); include "koneksi.php";
$username = $_POST['username']; $password = $_POST['password'];
$data  =  mysqli_query($koneksi,  "SELECT  * FROM  user  where  username='$username'  and password=MD5('$password')" );
// menghitung jumlah data yang ditemukan $cek = mysqli_num_rows($data);
if ($cek > 0) { $cek = mysqli_fetch_assoc($data); $_SESSION['id'] =$cek['id_user']; $_SESSION['username'] =$cek['username'];
$_SESSION['nama_user'] =$cek['nama']; $_SESSION['level_user'] =$cek['level']; $_SESSION['status'] = "login";
header("location:dashboard.php?pesa n=sukses");
} else{ header("location:login.php?pesan=gagal" ); }
//  $query  =  mysqli_query($koneksi,  "SELECT full_name from user where id_user=''"); // $nama = mysqli_fetch_array($query);
Source Code untuk melakukan proses membuat user. <?php include ("header.php"); include ("sidebar.php"); include ("nav.php"); include ("koneksi.php"); // Include config file require_once "config.php"; require_once "helpers.php";
//  Define  variables  and  initialize  with empty values $id_tim = "";
$username = ""; $password = ""; $level = ""; $nama = ""; $alamat = ""; $no_telp = ""; $id_tim_err = ""; $username_err = ""; $password_err = "";
$level_err = ""; $nama_err = "";
$alamat_err = "";
$no_telp_err = "";
//  Processing  form  data  when  form  is submitted if($_SERVER["REQUEST_METHOD"] == "POST"){ $id_tim = trim($_POST["id_tim"]); $username = trim($_POST["username"]); $password = trim($_POST["password"]); $level = "satpam";
$nama = trim($_POST["nama"]);
$alamat = trim($_POST["alamat"]); $no_telp = trim($_POST["no_telp"]);
$dsn =
"mysql:host=$db_server;dbname=$db_name;char set=utf8mb4";
$options = [
PDO::ATTR_EMULATE_PREPARES     => false, // turn off emulation mode for "real" prepared statements PDO::ATTR_ERRMODE             => PDO::ERRMODE_EXCEPTION, //turn on errors in the form of exceptions PDO::ATTR_DEFAULT_FETCH_MODE  => PDO::FETCH_ASSOC,  //make  the  default  fetch be an associative array ];

## pISSN: 2442-3386  eISSN: 2442-4293

## Vol 8 No 2 Jul – Des 2022, 207 - 212
try { $pdo  =  new  PDO($dsn,  $db_user, $db_password, $options); } catch (Exception $e) { error_log($e->getMessage()); exit('Something weird happened'); //something a user can understand }
$vars = parse_columns('user', $_POST); $stmt  =  $pdo->prepare("INSERT  INTO user (id_tim,username,password,level,nama,alamat ,no_telp) VALUES (?,?,md5(?),?,?,?,?)");
if($stmt->execute([ $id_tim,$username,$password,$level,$nama,$a lamat,$no_telp  ])) { $stmt = null; echo "<script> alert('Data Berhasil Ditambahkan'); location.replace('jadwal- aktif.php'); </script> "; } else{ echo "Something went wrong. Please try again later."; }
} ?>
<!-- Begin Page Content --> <div class="container-fluid"> <h1 class="text-center h3 mb-0 text-gray- 800">  <span  class="font-weight-bold  text- info "> Create Data Satpam </h1> <div class="card-body"> <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">
<div class="form-group"> <label>Nama Tim</label> <select class="form-control" id="id_tim" name="id_tim"> <?php $sql = "SELECT *,id_tim FROM tim"; $result  = mysqli_query($link, $sql); while($row  = mysqli_fetch_array($result,  MYSQLI_ASSOC)) { $duprow = $row; unset($duprow["id_t im"]); $value = implode(" | ", $duprow); if ($row["id_tim"] == $id_tim){ echo '<option value="'
. "$row[id_tim]"
. '"selected="selected">' . "$value" .
'</option>'; } else { echo '<option value="' . "$row[id_tim]" . '">' . "$value" . '</option>'; } } ?> </select>
<span class="form-text"><?php echo $id_tim_err; ?></span> </div> <div class="form-group"> <label>Username</label> <input  type="text" name="username" maxlength="255"class="form- control" value="<?php echo $username; ?>"> <span class="form-text"><?php echo $username_err; ?></span> </div> <div class="form-group"> <label>Password</label> <input  type="text" name="password" maxlength="255"class="form- control" value="<?php echo $password; ?>"> <span class="form-text"><?php echo $password_err; ?></span> </div> <div class="form-group"> <label>Nama</label> <input  type="text" name="nama" class="form-control"><?php echo $nama ; ?></input> <span class="form-text"><?php echo $nama_err; ?></span> </div> <div class="form-group"> <label>Alamat</label> <input  type="text" name="alamat" maxlength="255"class="form- control" value="<?php echo $alamat; ?>"> <span class="form-text"><?php echo $alamat_err; ?></span> </div> <div class="form-group"> <label>No Telp</label> <input  type="text" name="no_telp"  maxlength="100"class="form- control" value="<?php echo $no_telp; ?>"> <span class="form-text"><?php echo $no_telp_err; ?></span> </div>
<input type="submit" class="btn btn-primary" value="Submit"> <a  href="user-index.php" class="btn btn-secondary">Cancel</a> </form> </div>
</div>
<?php include("footer.php") ?>
Source Code untuk melakukan proses update user. <?php include ("header.php"); include ("sidebar.php"); include ("nav.php"); include ("koneksi.php"); // Include config file require_once "config.php"; require_once "helpers.php";
//  Define  variables  and  initialize  with empty values $id_tim = ""; $username = ""; $password = ""; $level = ""; $nama = "";

## Melek IT

## Information Technology Journal. Vol 8 No 2 Jul - Des 2022, 208 - 212
$alamat = ""; $no_telp = "";
$id_tim_err = ""; $username_err = ""; $password_err = ""; $level_err = ""; $nama_err = ""; $alamat_err = ""; $no_telp_err = "";
//  Processing  form  data  when  form  is submitted if(isset($_POST["id_user"]) && !empty($_POST["id_user"])){ // Get hidden input value $id_user = $_POST["id_user"];
$id_tim = trim($_POST["id_tim"]); $username = trim($_POST["username"]); $password = trim($_POST["password"]); $level = $_SESSION['level_user']; $nama = trim($_POST["nama"]); $alamat = trim($_POST["alamat"]); $no_telp = trim($_POST["no_telp"]);
// Prepare an update statement
$dsn =
"mysql:host=$db_server;dbname=$db_name;char set=utf8mb4";
$options = [
PDO::ATTR_EMULATE_PREPARES     => false, // turn off emulation mode for "real" prepared statements PDO::ATTR_ERRMODE                  => PDO::ERRMODE_EXCEPTION, //turn on errors in the form of exceptions PDO::ATTR_DEFAULT_FETCH_MODE  => PDO::FETCH_ASSOC,  //make  the  default  fetch be an associative array ]; try { $pdo  =  new  PDO($dsn,  $db_user, $db_password, $options); } catch (Exception $e) { error_log($e->getMessage()); exit('Something weird happened'); }
$stmt = $pdo->prepare("UPDATE user SET id_tim=?,username=?,password=?,level=?,nama =?,alamat=?,no_telp=? WHERE id_user=?");
if(!$stmt->execute([ $id_tim,$username,$password,$level,$nama,$a lamat,$no_telp,$id_user  ])) { echo "Something went wrong. Please try again later."; header("location: error.php"); } else { $stmt = null; echo "<script> alert('Data Berhasil Diubah'); location.replace('user-index.php'); </script> "; } } else { // Check existence of id parameter before processing further
$_GET["id_user"]
= trim($_GET["id_user"]); if(isset($_GET["id_user"])
&&
!empty($_GET["id_user"])){ // Get URL parameter
$id_user =  trim($_GET["id_user"]); // Prepare a select statement $sql  =  "SELECT  *  FROM  user  WHERE id_user = ?"; if($stmt  =  mysqli_prepare($link, $sql)){ // Set parameters $param_id = $id_user;
// Bind variables to the prepared statement as parameters if (is_int($param_id)) $__vartype = "i"; elseif  (is_string($param_id)) $__vartype = "s"; elseif (is_numeric($param_id)) $__vartype = "d"; else $__vartype = "b"; // blob mysqli_stmt_bind_param($stmt, $__vartype, $param_id);
//  Attempt  to  execute  the prepared statement if(mysqli_stmt_execute($stmt)){ $result =
mysqli_stmt_get_result($stmt);
if(mysqli_num_rows($result) == 1){ /* Fetch result row as an associative array. Since the result set contains only one row, we don't need to use while loop */ $row  = mysqli_fetch_array($result, MYSQLI_ASSOC);
// Retrieve individual field value
$id_tim  = htmlspecialchars($row["id_tim"]); $username  = htmlspecialchars($row["username"]); $password  = htmlspecialchars($row["password"]); $level  = htmlspecialchars($row["level"]); $nama  = htmlspecialchars($row["nama"]); $alamat  = htmlspecialchars($row["alamat"]); $no_telp  = htmlspecialchars($row["no_telp"]);
} else{ // URL doesn't contain valid id. Redirect to error page header("location: error.php"); exit(); }
} else{ echo "Oops! Something went wrong.  Please  try  again  later.<br>".$stmt- >error; } }
// Close statement mysqli_stmt_close($stmt);
}  else{

## pISSN: 2442-3386  eISSN: 2442-4293
Vol 8 No 2 Jul – Des 2022, 209 - 212
// URL doesn't contain id parameter. Redirect to error page header("location: error.php"); exit(); } } ?>
<!-- Begin Page Content --> <div class="container-fluid"> <h1 class="text-center h3 mb-0 text-gray- 800">  <span  class="font-weight-bold  text- info "> Edit User </h1> <div class="card-body"> <form action="<?php echo htmlspecialchars(basename($_SERVER['REQUEST _URI'])); ?>" method="post"> <div class="form-group"> <label>id_tim</label> <select class="form-control" id="id_tim" name="id_tim"> <?php $sql = "SELECT *,id_tim FROM tim"; $result  = mysqli_query($link, $sql); while($row  = mysqli_fetch_array($result,  MYSQLI_ASSOC)) { $duprow = $row; unset($duprow["id_t im"]); $value = implode(" | ", $duprow); if ($row["id_tim"] == $id_tim){ echo '<option value="' . "$row[id_tim]" . '"selected="selected">' . "$value"
.
'</option>'; } else { echo '<option value="' . "$row[id_tim]" . '">' . "$value"
. '</option>';
}
}
?> </select> <span class="form-text"><?php echo $id_tim_err; ?></span> </div> <div class="form-group"> <label>username</label> <input  type="text" name="username" maxlength="255"class="form- control"  value="<?php  echo  $username;  ?>" required> <span class="form-text"><?php echo $username_err; ?></span> </div> <div class="form-group"> <label>nama</label> <textarea  name="nama" class="form-control"  required><?php  echo $nama ; ?></textarea> <span class="form-text"><?php echo $nama_err; ?></span> </div> <div class="form-group"> <label>alamat</label> <input  type="text" name="alamat" maxlength="255"class="form- control"  value="<?php  echo  $alamat;  ?>" required>
<span class="form-text"><?php echo $alamat_err; ?></span> </div> <div class="form-group"> <label>no_telp</label> <input  type="text" name="no_telp"  maxlength="100"class="form- control"  value="<?php  echo  $no_telp;  ?>" required> <span class="form-text"><?php echo $no_telp_err; ?></span> </div>
<input  type="hidden" name="password" value="<?php echo $password ?>"> <input  type="hidden" name="id_user"  value="<?php  echo  $id_user; ?>"/> <input type="submit" class="btn btn-primary" value="Submit"> <a  href="user-index.php" class="btn btn-secondary">Cancel</a> </form> </div> </div>
<?php include("footer.php") ?>

## III. HASIL DAN PEMBAHASAN
3.1. Uji  Coba  Sistem  pada  sistem  penjadwalan Satpam Perusahaan Motor Jakarta
Pada  tahap  implementasi  sistem  terdapat  beberapa tahap  yang  harus  dilakukan  yaitu  melakukan perencanaan sistem, seperti membuat desain antarmuka,  pengkodean    menggunakan Visual  Studio Code sebagai  editor  penulisan  kode  pemrograman yang  digunakan  untuk  membangun  sebuah web dan menggunakan  MySQL database untuk  menyimpan data[21].

## 3.1.1 Halaman Login Pada Sistem penjadwalan Satpam Perusahaan Motor Jakarta
Sebelum  masuk  ke  sistem,  kepala  divisi  dan  satpam harus  melakukan  login  terlebih  dahulu  yang  nanti diteruskan ke halaman dashboard seperti ditunjukkan pada gambar 16.
Gambar 16. User Interface HalamanLogin Pada Sistem penjadwalan Satpam Perusahaan Motor Jakarta

## Melek IT

## Information Technology Journal. Vol 8 No 2 Jul - Des 2022, 210 - 212
3.1.2 Halaman dashboard Kepala Divisi

## Keamanan  Pada  Sistem  penjadwalan
Satpam Perusahaan Motor Jakarta
Pada  gambar  17  terdapat  beberapa  menu  seperti  data jadwal  aktif,  data  rekapitulasi  penjadwalan,  data satpam, log out.
Gambar 17. User Interface Dashboard Kadiv Pada Sistem penjadwalan Satpam Perusahaan Motor
Jakarta 3.1.3 Menampilkan  dashboard  Satpam  Pada Sistem  penjadwalan  Satpam  Perusahaan Motor Jakarta
Pada Gambar 18 Satpam dapat melihat jadwal, dan log out.
Gambar 18. User Interface Menampilkan Dashboard Satpam Pada Sistem penjadwalan Satpam Perusahaan
Motor Jakarta 3.1.4 Menampilkan Jadwal Pada Sistem penjadwalan  Satpam  Perusahaan  Motor Jakarta
Pada  gambar  19  kepala  divisi  dapat  melihat  jadwal yang seang aktif.
Gambar 19. User Interface menampilkan Jadwal Pada Sistem penjadwalan Satpam Perusahaan Motor Jakarta

## 3.1.5
Menampilkan  History  Penjadwalan  Pada
Sistem  penjadwalan  Satpam  Perusahaan
Motor Jakarta
Pada  gambar  20  Kepala  divisi  dapat  melihat  Jadwal yang telah selesai.
Gambar 20. User Interface History Penjadwalan Pada Sistem penjadwalan Satpam Perusahaan Motor
Jakarta
3.1.6 Menampilkan  Data  Satpam  Pada  Sistem penjadwalan  Satpam  Perusahaan  Motor Jakarta
Pada  gambar  21  Kepala  Divisi  dapat  melihat  daftar satpam.
Gambar 21. User Interface menampilkan Data Satpam Pada Sistem penjadwalan Satpam Perusahaan
Motor Jakarta 3.1.7 Menampilkan Halaman Edit User
Pada  gambar  3.7 User dapat  mengganti  data profile user.
Gambar 22. User Interface Halaman Edit User Pada Sistem penjadwalan Satpam Perusahaan Motor Jakarta

## pISSN: 2442-3386  eISSN: 2442-4293

## Vol 8 No 2 Jul – Des 2022, 211 - 212
3.1.8 Menampilkan Halama Create Data Satpam
Pada  gambar  23  Kepala  Divisi  dapat  membuat  data satpam baru.
Gambar 23. User Interface Halaman Create Data Satpam Pada Sistem penjadwalan Satpam Perusahaan Motor Jakarta

## IV. PENUTUP
4.1. Kesimpulan
Berdasarkan  hasil  penelitian  yang  dilakukan  maka didapatkan beberapa kesimpulan:
1. Sistem Penjadwalan Kehadiran Satpam Berbasis Web  Di  Perusahaan  Produksi  Motor  Jakarta dalam  melakukan  pembuatan  penjadwalan  shift satpam.
2. Sistem Penjadwalan Kehadiran Satpam Berbasis Web Di Perusahaan Produksi Motor Jakarta dapat mempermudah dalam melakukan laporan rekapitulasi penjadwalan kehadiran satpam.
3. Sistem Penjadwalan Kehadiran Satpam Berbasis Web  Di  Perusahaan  Produksi  Motor  Jakarta  ini dapat  mempermudah  dalam  pengecekan  regu satpam yang telah dijadwalkan.
4.2. Saran
Saran  dari  hasil  dan  analisa  terhadap  Sistem Penjadwalan  Kehadiran  Satpam  Berbasis  Web  Di Perusahaan  Produksi  Motor  Jakarta  dapat  dioptimasi menggunakan algoritma penjadwalan yang kompleks.

## DAFTAR PUSTAKA
[1] A.  A.  Kiswara,  A.  S.  I.  Pratama,  and  T. Widiartin, “Sistem Informasi Koperasi Simpan Pinjam  Mitra  Duta  Artha  Pule  Berbasis Website,” Melek IT Inf. Technol. J. , vol. 8, no. 1, pp. 59–66, Oct. 2022,
doi:
10.30742/melekitjournal.v8i1.208.
[2] T.  Widiartin,  A.  N.  Ichtiarto,  and  M.  I.  Akbar, “Sistem  Informasi  Kegiatan  Sekolah  Berbasis Web Di SDN Semolowaru 1 Surabaya,” Melek IT  Inf.  Technol.  J. ,  vol.  7,  no.  2,  pp.  101–108,
Dec.
2021, doi: 10.30742/melekitjournal.v7i2.193.
[3] Y. Wang, J.-Q. Wang, and Y. Yin, “Multitasking scheduling  and  due  date  assignment  with
deterioration  effect  and  efficiency  promotion,” Comput.  Ind.  Eng. ,  vol.  146,  p.  106569,  Aug. 2020, doi: 10.1016/j.cie.2020.106569.
[4] E. Wahyuningtyas, “Sistem Informasi Penjadwalan Produksi Pada Cv. Bulu Nusantara Gresik,” vol. 5, no. 2, 2019. [5] W. A. Puspaningrum, A. Djunaidy, and J. A. R. Hakim, “Penjadwalan Mata Kuliah Menggunakan  Algoritma  Genetika  di  Jurusan Sistem Informasi ITS,” vol. 2, no. 1, 2013. [6] A. Darmawan and R. M. Hasibuan, “Penjadwalan  Mata  Kuliah  Menggunakan Algoritma Genetika Dengan Mempertimbangkan Team-Teaching,” 2014.
[7] I.  M.  B.  Adnyana,  “Implementasi  Algoritma Genetika  untuk  Penjadwalan  Asisten  Dosen  di STIKOM Bali,” vol. 12, no. 2, 2018.
[8] Y.  Elva,  “Sistem  Penjadwalan  Mata  Pelajaran Menggunakan  Algoritma  Genetika,” J.  Teknol. Inf. ,  vol.  3,  no.  1,  p.  49,  Jul.  2019,  doi: 10.36294/jurti.v3i1.687.
[9] N.  Azmi,  I.  Jamaran,  Y.  Arkeman,  and  D. Mangunwidjaja, “Penjadwalan Pesanan
Menggunakan  Algoritma  Genetika  Untuk  Tipe Produksi  Hybrid  And  Flexible  Flowshop  Pada Industri  Kemasan  Karton,” J.  Tek.  Ind. ,  vol.  2, no. 2, pp. 176–188, Jul. 2012, doi: 10.25105/jti.v2i2.7028.
[10]  H. C. W. Lau, G. T. S. Ho, Y. Zhao, and W. T. Hon, “Optimizing patrol force deployment using a genetic algorithm,” Expert Syst. Appl. , vol. 37, no.  12,  pp.  8148–8154,  Dec.  2012,  doi: 10.1016/j.eswa.2010.05.073.
[11]  L. Wu, A. Sugiyama, and T. Sugawara, “Energy- Efficient Strategies for Multi-Agent Continuous Cooperative  Patrolling  Problems,” Procedia Comput. Sci. , vol. 159, pp. 465–474, 2019, doi:
10.1016/j.procs.2019.09.201.
[12]  M. Fabbri and J. Klick, “The ineffectiveness of ‘observe and report’ patrols on crime,” Int. Rev. Law Econ. , vol. 65, p. 105972, Mar. 2021, doi: 10.1016/j.irle.2020.105972.
[13]  H. Hasanah and T. Widiartin, “Sistem Informasi Manajemen Aset Untuk Monitoring
Pemanfaatan  Dan  Pengadaan  Aset  Perusahaan Di  Cv.  Cahaya  Utama  Teknik,” Melek  IT  Inf. Technol. J. , vol. 7, no. 1, pp. 15–40, Jan. 2022, doi: 10.30742/melekitjournal.v7i1.182.
[14]  Kenneth E. Kendall and Julie E. Kendall, System Analysis And Design , 9th ed. Pearson, 2008.

## Melek IT
[15]  T.  Widiartin  and  E.  Noerhartati,  “Membangun Website Sorgum Sebagai Sarana Promosi Pusat Penelitian  Dan  Pengembangan  Sorgum  Di Universitas Wijaya Kusuma Surabaya,” Simetris J. Tek. Mesin Elektro Dan Ilmu Komput. , vol. 8,
no. 2, p. 477, Nov. 2017, doi: 10.24176/simet.v8i2.1318.
[16]  T. Widiartin and E. Noerhartati, “Build sorghum database for developing SEU digital network on sorghum  website  of  Wijaya  Kusuma  Surabaya University,” IOP  Conf.  Ser.  Mater.  Sci.  Eng. , vol.  434,  p.  012253,  Dec.  2018,  doi: 10.1088/1757-899X/434/1/012253.
[17]  R.  Elmasri  and  S.  Navathe, Fundamentals  of database  systems ,  Seventh  edition.  Hoboken, NJ: Pearson, 2016.
[18]  E.  D.  Madyatmadja  and  C.  Adora,  “Designing and  Using  a  MySQL  Database  for  Human Resource Management,” Adv. Sci. Technol. Eng. Syst.  J. ,  vol.  4,  no.  6,  pp.  285–290,  2019,  doi: 10.25046/aj040636.
[19]  T. Schaller, O. A. Bukhres, A. K. Elmagarmid, and  X.  Liu,  “The  Integration  of  Database Systems,” p. 27.
[20]  S. Jajodia and P. A. Ng, “Translation of entity- relationship diagrams into relational structures,” J. Syst. Softw. , vol. 4, no. 2–3, pp. 123–133, Jul. 1984, doi: 10.1016/0164-1212(84)90003-7.
[21]  R.  Nixon, Learning  PHP,  MySQL,  JavaScript, CSS  &  HTML5 ,  Third  edition.  Beijing ; Sebastopol, CA: O’Reilly Media, Inc, 2014.