Dosen Pengampu: Bayutama Isnaini, S.Si., M.Si.

Disusun oleh: Kelompok 2

Nama NIM
Humaida Annafsul Mutmainnah 21108062610047
Keisha Dwian Kirani 21108062610055
Khansa Puspitasari 21108062610060
Masayu Putri Gunaratna 21108062610066
Muhamad Radifattah Anggaraksa 21108062610068

1. Latar Belakang Masalah

Dunia Fantasi (Dufan) merupakan salah satu destinasi wisata wahana terbesar yang menghadapi lonjakan pengunjung setiap harinya, baik pada hari kerja (weekdays) maupun hari libur akhir pekan (weekends). Saat ini, sistem pencatatan loket tiket masuk masih dilakukan secara semi-manual, sehingga sering terjadi antrean panjang akibat lambatnya proses pengelompokkan kategori usia pengunjung dan perhitungan tarif yang bervariasi.

Untuk meningkatkan efisiensi operasional dan akurasi data finansial, pihak manajemen Dufan memutuskan untuk membangun sebuah Sistem Kasir Otomatis berbasis bahasa pemrograman R. Sistem ini diharapkan mampu mengolah data profil pengunjung secara massal (vektor data) untuk menghasilkan kode antrean, kategori kelompok usia, serta nominal harga tiket yang harus dibayar secara instan.

2. Aturan Bisnis & Logika Keputusan

Kebijakan manual Dufan diintegrasikan ke dalam algoritma komputasi dengan ketentuan sebagai berikut:

  • Sistem Penomoran Antrean (no_id): Setiap pengunjung mendapatkan kode unik 4 digit yang merepresentasikan identitas hari kedatangan dan nomor urut mereka (misalnya kode huruf “A” untuk hari Senin, “B” untuk Selasa, hingga “G” untuk hari Minggu).
  • Segmentasi Pengunjung (klmpk_umur): Kategori anak-anak jika berusia maksimal 14 tahun, dan kategori dewasa untuk usia di atas 14 tahun.
  • Diferensiasi Harga Dasar (hrga):
    • Pengunjung berumur 0 hingga 14 tahun dikenakan harga tiket dasar sebesar Rp40.000.
    • Pengunjung berumur di atas 14 tahun dikenakan harga tiket dasar sebesar Rp50.000.
  • Biaya Tambahan Akhir Pekan (Surcharge Pekan - trf): Pengunjung yang datang pada hari Sabtu atau Minggu (weekends) dikenakan biaya tambahan (surcharge) sebesar 10% dari nilai harga dasar tiket mereka.

2.1 Memasukkan Data Pengunjung

Berikut adalah data mentah dari 30 pengunjung pertama yang dimasukkan ke dalam sistem:

nma <- c("Aris", "Bimo", "Caca", "Dedi", "Egao", "Fani", "Gani", "Heri", "Iwan", "Joko", 
         "Kiki", "Lili", "Mira", "Niko", "Okiw", "Pian", "Rian", "Sita", "Tioa", "Vina", 
         "Wawan", "Yudi", "Zaki", "Rara", "Budi", "Joni", "Tika", "Rani", "Zian", "Aliw")

usia <- c(26, 8, 15, 4, 35, 11, 6, 22, 12, 50, 
          10, 18, 1, 45, 9, 28, 7, 60, 11, 16, 
          2, 32, 12, 19, 8, 72, 24, 10, 5, 30)

harii <- rep(c("senin", "selasa", "rabu", "kamis", "jumat", "sabtu", "minggu"), times = c(4, 3, 2, 4, 6, 6, 5))

# Membuat data frame awal untuk visualisasi data mentah
data_mentah <- data.frame(No = 1:30, Nama = nma, Usia = usia, Hari = harii)

knitr::kable(
  data_mentah,
  caption = "Data Profil Mentah Pengunjung Dufan",
  format.args = list(big.mark = ".", decimal.mark = ",")
)
Data Profil Mentah Pengunjung Dufan
No Nama Usia Hari
1 Aris 26 senin
2 Bimo 8 senin
3 Caca 15 senin
4 Dedi 4 senin
5 Egao 35 selasa
6 Fani 11 selasa
7 Gani 6 selasa
8 Heri 22 rabu
9 Iwan 12 rabu
10 Joko 50 kamis
11 Kiki 10 kamis
12 Lili 18 kamis
13 Mira 1 kamis
14 Niko 45 jumat
15 Okiw 9 jumat
16 Pian 28 jumat
17 Rian 7 jumat
18 Sita 60 jumat
19 Tioa 11 jumat
20 Vina 16 sabtu
21 Wawan 2 sabtu
22 Yudi 32 sabtu
23 Zaki 12 sabtu
24 Rara 19 sabtu
25 Budi 8 sabtu
26 Joni 72 minggu
27 Tika 24 minggu
28 Rani 10 minggu
29 Zian 5 minggu
30 Aliw 30 minggu

3. Konsep Dasar Pemrograman

Program ini memanfaatkan beberapa fungsi dan konsep dasar pemrograman R untuk otomatisasi: 1. Manajemen Vektor Data (c() dan rep()): Memasukkan data mentah dan melakukan replikasi data hari agar seimbang. 2. Logika Percabangan / Kondisi Vektor (ifelse()): Digunakan untuk menyaring kondisi hari (weekdays / weekends), mengelompokkan kategori umur, serta menghitung tarif bersyarat. 3. Penyusunan Laporan Akhir (data.frame()): Menggabungkan seluruh variabel independen menjadi satu objek tabel dua dimensi yang terstruktur.

4. Penyelesaian dan Perhitungan Algoritma

Proses pengolahan data antrean, penentuan segmentasi hari, pengelompokan umur, hingga kalkulasi tarif akhir dilakukan menggunakan komputasi vektor di bawah ini:

# 1. Menghitung Penomoran Antrean Unik
urutan <- seq(0.01, 0.30, length.out = 30)
kode <- rep(LETTERS[1:7], times =  c(4, 3, 2, 4, 6, 6, 5))
no_id <- paste0(kode, urutan)

# 2. Menentukan Segmentasi Hari (Weekdays vs Weekends)
pekan <-  ifelse(harii == "minggu" | harii == "sabtu", "weekends", "weekdays")

# 3. Segmentasi Kelompok Umur Demografi
klmpk_umur <- ifelse(usia <= 14, "anak-anak", "dewasa")

# 4. Menentukan Harga Dasar Berdasarkan Aturan Usia Baru (0-14 Tahun)
hrga <- ifelse(usia <= 14, 40000, 50000)

# 5. Menghitung Tarif Akhir Menggunakan Surcharge 10% di Akhir Pekan
trf <- ifelse(pekan == "weekends", hrga + (hrga * 0.1), hrga)

# 6. Menggabungkan ke Laporan Utama
tiket_dufan <- data.frame(no = 1:30, no_id, nma, usia, pekan, harga = trf)

5. Hasil dan Pembahasan

5.1 Tabel Hasil Penilaian Struk Kasir Utama

Berikut adalah output lembar manifest atau struk laporan kasir utama Dunia Fantasi (Dufan) yang berhasil dipetakan secara otomatis oleh sistem:

knitr::kable(
  tiket_dufan,
  caption = "Laporan Manifes Sistem Kasir Otomatis Dunia Fantasi",
  format.args = list(big.mark = ".", decimal.mark = ",")
)
Laporan Manifes Sistem Kasir Otomatis Dunia Fantasi
no no_id nma usia pekan harga
1 A0.01 Aris 26 weekdays 50.000
2 A0.02 Bimo 8 weekdays 40.000
3 A0.03 Caca 15 weekdays 50.000
4 A0.04 Dedi 4 weekdays 40.000
5 B0.05 Egao 35 weekdays 50.000
6 B0.06 Fani 11 weekdays 40.000
7 B0.07 Gani 6 weekdays 40.000
8 C0.08 Heri 22 weekdays 50.000
9 C0.09 Iwan 12 weekdays 40.000
10 D0.1 Joko 50 weekdays 50.000
11 D0.11 Kiki 10 weekdays 40.000
12 D0.12 Lili 18 weekdays 50.000
13 D0.13 Mira 1 weekdays 40.000
14 E0.14 Niko 45 weekdays 50.000
15 E0.15 Okiw 9 weekdays 40.000
16 E0.16 Pian 28 weekdays 50.000
17 E0.17 Rian 7 weekdays 40.000
18 E0.18 Sita 60 weekdays 50.000
19 E0.19 Tioa 11 weekdays 40.000
20 F0.2 Vina 16 weekends 55.000
21 F0.21 Wawan 2 weekends 44.000
22 F0.22 Yudi 32 weekends 55.000
23 F0.23 Zaki 12 weekends 44.000
24 F0.24 Rara 19 weekends 55.000
25 F0.25 Budi 8 weekends 44.000
26 G0.26 Joni 72 weekends 55.000
27 G0.27 Tika 24 weekends 55.000
28 G0.28 Rani 10 weekends 44.000
29 G0.29 Zian 5 weekends 44.000
30 G0.3 Aliw 30 weekends 55.000

5.2 Pembahasan Hasil

Sistem otomatisasi ini berhasil memetakan harga tiket dasar secara tepat berdasarkan aturan usia fisik. Dari 30 data pengunjung yang diproses, kolom pekan berhasil menyaring kedatangan akhir pekan (weekends) pada urutan baris ke-20 hingga ke-30 secara tepat, sehingga rumus kalkulasi surcharge tambahan sebesar 10% otomatis aktif hanya untuk pengunjung di hari Sabtu dan Minggu. Hal ini meminimalkan risiko kesalahan hitung manual oleh petugas loket.

6. Kesimpulan

  1. Dominasi Pengunjung Anak-Anak: Terdapat total 15 orang pengunjung yang masuk dalam kategori anak-anak (usia 0-14 tahun), membuktikan Dufan sebagai destinasi utama liburan keluarga.
  2. Karakteristik Usia: Rata-rata usia pengunjung berada di angka 20.3 tahun, yang didominasi kelompok usia dewasa muda.
  3. Analisis Finansial: Melalui otomatisasi tarif dan surcharge akhir pekan, sistem mencatat total pendapatan kotor yang dikumpulkan dari 30 antrean ini adalah sebesar Rp1.400.000.

7. Ekspor Laporan ke Excel

Laporan manifest ini dapat diekspor langsung ke format .xlsx dengan mengaktifkan pustaka openxlsx:

library(openxlsx)
write.xlsx(tiket_dufan, file = "Laporan_Tiket_Dufan.xlsx", overwrite = TRUE)