---
# System prepended metadata

title: BAB 1 PENDAHULUAN

---

# BAB 1 PENDAHULUAN #
1.1. Latar Belakang

Dalam era digitalisasi pendidikan tinggi, institusi akademik dituntut untuk menyediakan layanan yang efisien, transparan, dan berbasis teknologi informasi. Salah satu layanan penting yang masih sering dikelola secara manual adalah proses pengajuan cuti kuliah mahasiswa. Cuti kuliah merupakan hak akademik yang memungkinkan mahasiswa untuk menghentikan sementara aktivitas perkuliahan karena alasan tertentu seperti kesehatan, kondisi ekonomi, atau urusan pribadi.

Dalam Program Studi Teknik Informatika Universitas Trunojoyo Madura, proses pengajuan cuti kuliah masih dilakukan secara konvensional melalui formulir kertas dan birokrasi manual. Mahasiswa harus datang langsung ke kampus, mengisi formulir, melampirkan dokumen pendukung, dan menunggu proses persetujuan yang melibatkan beberapa pihak. Proses ini tidak hanya memakan waktu, tetapi juga rentan terhadap kesalahan administratif, kehilangan dokumen, dan kurangnya transparansi.

Melalui observasi selama pelaksanaan kerja praktik, ditemukan bahwa sistem manual ini menyulitkan mahasiswa dan administrator akademik. Mahasiswa tidak dapat memantau status pengajuan secara real-time, sementara administrator kesulitan dalam melakukan tracking, validasi, dan pelaporan data cuti kuliah. Hal ini menunjukkan perlunya solusi berbasis teknologi yang dapat mengotomatisasi proses tersebut.

Pengembangan sistem informasi cuti kuliah berbasis web menjadi solusi yang relevan dan strategis. Sistem ini diharapkan mampu memberikan kemudahan akses, mempercepat proses persetujuan, meningkatkan akurasi data, serta mendukung digitalisasi layanan akademik secara menyeluruh.


1.2. Rumusan Masalah
Berdasarkan latar belakang yang telah diuraikan, maka dapat dirumuskan beberapa permasalahan sebagai berikut:

- Bagaimana merancang sistem informasi cuti kuliah berbasis web yang mempermudah mahasiswa dalam mengajukan permohonan cuti?
- Bagaimana mengimplementasikan workflow persetujuan cuti yang efisien bagi administrator akademik?
- Bagaimana merancang basis data yang terstruktur dan aman untuk menyimpan data pengajuan cuti kuliah?
- Bagaimana menyediakan fitur tracking status dan notifikasi otomatis bagi mahasiswa?
- Bagaimana memastikan sistem memenuhi aspek keamanan dan kemudahan akses bagi pengguna?


1.3. Tujuan
Tujuan dari pelaksanaan kerja praktik ini adalah:
- Mengembangkan sistem informasi cuti kuliah berbasis web yang efisien dan transparan.
- Merancang antarmuka pengguna yang sederhana dan mudah digunakan.
- Membangun workflow otomatis untuk proses persetujuan cuti.
- Menyusun basis data yang terstruktur dan aman.
- Mengimplementasikan fitur tracking status dan notifikasi otomatis.
- Menyediakan dashboard administratif untuk monitoring dan pelaporan.
- Melakukan pengujian sistem untuk memastikan fungsionalitas dan keamanan.


1.4. Manfaat

Bagi Mahasiswa:
- Mengajukan cuti kuliah secara online tanpa harus hadir fisik.
- Memantau status pengajuan secara real-time.
- Mengurangi biaya dan waktu dalam proses pengajuan.
- Mendapatkan notifikasi otomatis terkait status pengajuan.
- 
Bagi Administrator Akademik:
- Mempermudah proses verifikasi dan persetujuan pengajuan cuti.
- Menyediakan data terstruktur untuk pelaporan dan analisis.
- Mengurangi risiko kesalahan input dan kehilangan dokumen.

Bagi Institusi:
- Meningkatkan kualitas layanan akademik berbasis digital.
- Mendukung transformasi digital dalam pengelolaan administrasi kampus.
- Menunjukkan komitmen institusi terhadap efisiensi dan transparansi.

Bagi Pengembang:
- Memberikan pengalaman langsung dalam pengembangan sistem informasi.
- Mengasah keterampilan teknis dalam desain antarmuka, basis data, dan keamanan sistem.
- Menjadi portofolio proyek nyata yang dapat digunakan untuk pengembangan karier.


1.5 Batasan Masalah
Untuk memfokuskan pembahasan, batasan masalah ditetapkan sebagai berikut:
- Sistem hanya digunakan untuk pengajuan cuti kuliah mahasiswa Program Studi Teknik Informatika Universitas Trunojoyo Madura.
- Sistem berbasis web dan berdiri sendiri, tidak terintegrasi dengan sistem akademik utama universitas.
- Pengguna sistem terdiri dari mahasiswa dan administrator akademik.
- Fitur utama meliputi login, pengajuan cuti, upload dokumen, tracking status, workflow persetujuan, dan pelaporan.
- Aspek keamanan mencakup autentikasi, autorisasi, dan enkripsi data sensitif.
- Pengembangan dilakukan dalam konteks kerja praktik dengan skala menengah.


1.6 Sistematika Penulisan
Sistematika penulisan laporan kerja praktik ini disusun sebagai berikut:

Bagian Awal:
Halaman sampul, lembar pengesahan, abstrak, kata pengantar, daftar isi, daftar gambar, daftar tabel, dan daftar lampiran.

Bagian Inti:
- BAB I Pendahuluan: Latar belakang, rumusan masalah, tujuan, manfaat, batasan masalah, dan sistematika penulisan.
- BAB II Profil Lokasi Kerja Praktik: Gambaran umum institusi, struktur organisasi, dan relevansi lokasi kerja praktik.
- BAB III Landasan Teori: Teori-teori pendukung, konsep sistem informasi, teknologi web, basis data, keamanan sistem, dan metodologi pengembangan perangkat lunak.
- BAB IV Analisis dan Perancangan Sistem: Analisis kebutuhan, analisis sistem berjalan, perancangan arsitektur sistem, basis data, antarmuka pengguna, dan spesifikasi teknis.
- BAB V Implementasi dan Pengujian Sistem: Proses implementasi, pengujian fungsional, pengujian keamanan, pengujian performa, dan analisis hasil pengujian.
- BAB VI Penutup: Kesimpulan, pencapaian tujuan, keterbatasan sistem, dan saran pengembangan lanjutan.

Bagian Akhir:
Daftar pustaka dan lampiran-lampiran pendukung.


# BAB 2 PROFIL LOKASI KERJA PRAKTEK
2.1. Profil Instansi

Nama Instansi
Program Studi Teknik Informatika
Fakultas Teknik
Universitas Trunojoyo Madura

Alamat Lokasi
Jl. Raya Telang, PO Box 2, Kamal, Bangkalan, Jawa Timur 69162
![image](https://hackmd.io/_uploads/Bywbs2Mgbe.png)
Gambar 2.1. Titik Map Fakultas Teknik UTM

Sejarah Singkat
Program Studi Teknik Informatika merupakan salah satu program studi unggulan di Fakultas Teknik Universitas Trunojoyo Madura. Didirikan untuk menjawab kebutuhan akan tenaga ahli di bidang teknologi informasi, program studi ini terus berkembang dengan kurikulum yang adaptif terhadap perkembangan industri digital. Fokus utama pendidikan di Teknik Informatika adalah penguasaan rekayasa perangkat lunak, sistem informasi, kecerdasan buatan, jaringan komputer, dan keamanan sistem.

Bisnis Utama
Sebagai institusi pendidikan, bisnis utama Program Studi Teknik Informatika adalah penyelenggaraan pendidikan tinggi di bidang informatika, penelitian terapan, dan pengabdian kepada masyarakat berbasis teknologi informasi.

Visi dan Misi
Visi: Menjadi program studi yang unggul dan berdaya saing dalam bidang teknologi informasi di tingkat nasional dan internasional.

Misi:
- Menyelenggarakan pendidikan berkualitas di bidang informatika.
- Melaksanakan penelitian dan pengembangan teknologi informasi.
- Meningkatkan kontribusi terhadap masyarakat melalui penerapan teknologi.
- Membangun kerja sama strategis dengan industri dan institusi lain.

Struktur Organisasi
Program Studi Teknik Informatika berada di bawah naungan Fakultas Teknik dan memiliki struktur organisasi sebagai berikut:

- Ketua Program Studi
- Sekretaris Program Studi
- Koordinator Bidang Akademik
- Koordinator Bidang Kemahasiswaan
- Koordinator Kerja Praktik dan Tugas Akhir
- Dosen Tetap dan Tenaga Kependidikan

Produk dan Layanan
- Pendidikan Sarjana Teknik Informatika
- Penelitian dan publikasi ilmiah
- Pengembangan sistem informasi dan aplikasi digital
- Pelatihan dan workshop teknologi informasi
- Pengabdian masyarakat berbasis teknologi

Jumlah Karyawan
Terdiri dari lebih dari 20 dosen tetap dan tenaga kependidikan yang mendukung operasional akademik dan administratif.
Market
Mahasiswa dari seluruh Indonesia, mitra industri teknologi, institusi pemerintah, dan komunitas akademik yang membutuhkan solusi teknologi informasi.

2.2. Job Description Mahasiswa Selama KP
Selama pelaksanaan kerja praktik di Program Studi Teknik Informatika Universitas Trunojoyo Madura, mahasiswa terlibat dalam proyek pengembangan sistem informasi cuti kuliah berbasis web. Adapun deskripsi kegiatan yang dilakukan adalah sebagai berikut:
- Melakukan studi literatur dan observasi terhadap prosedur manual pengajuan cuti kuliah yang berlaku di lingkungan prodi.
- Merancang alur proses (workflow) pengajuan cuti kuliah mulai dari pengajuan oleh mahasiswa hingga persetujuan oleh administrator akademik.
- Mendesain antarmuka pengguna (UI) untuk mahasiswa dan administrator dengan pendekatan user-friendly dan responsif.
- Merancang dan mengimplementasikan basis data untuk menyimpan data mahasiswa, pengajuan cuti, dokumen pendukung, dan riwayat persetujuan.
- Mengembangkan fitur login, registrasi, pengajuan cuti, upload dokumen, tracking status, notifikasi otomatis, dan dashboard administratif.
- Melakukan pengujian fungsionalitas sistem, pengujian keamanan data, dan analisis performa sistem.
- Mendokumentasikan seluruh proses pengembangan dalam bentuk laporan kerja praktik dan dokumentasi teknis.
- Melakukan konsultasi rutin dengan dosen pembimbing untuk validasi desain dan implementasi sistem.

# BAB 3 DASAR TEORI

3.1. Sistem Informasi dan Aplikasi Web

Sistem informasi merupakan suatu kesatuan antara manusia, proses, dan teknologi yang dirancang untuk mendukung pengambilan keputusan melalui pengumpulan, pengolahan, penyimpanan, dan distribusi informasi secara sistematis. Dalam konteks perguruan tinggi, sistem informasi berperan penting dalam mendukung proses akademik seperti pengajuan cuti kuliah, yang membutuhkan alur kerja yang jelas dan data yang terintegrasi.
Aplikasi web sebagai implementasi dari sistem informasi berbasis internet bekerja dengan arsitektur client-server, di mana browser bertindak sebagai client yang mengirimkan permintaan melalui protokol HTTP, dan server bertugas memproses permintaan tersebut serta mengakses basis data melalui DBMS. Umumnya, aplikasi web dikembangkan dengan pendekatan tiga lapis (three-tier architecture) yang terdiri dari lapisan presentasi (antarmuka pengguna), lapisan logika aplikasi (pengolahan data dan aturan bisnis), dan lapisan data (penyimpanan dan pengambilan data).

3.2. Arsitektur Model–View–Controller (MVC)

Model–View–Controller (MVC) adalah pola arsitektur perangkat lunak yang memisahkan aplikasi menjadi tiga komponen utama untuk meningkatkan modularitas dan kemudahan pemeliharaan. Komponen Model bertanggung jawab terhadap representasi data dan aturan bisnis, termasuk interaksi dengan basis data dan validasi input. View berfungsi sebagai antarmuka pengguna yang menampilkan data dan menerima interaksi dari pengguna melalui elemen visual seperti HTML, CSS, dan JavaScript. Controller bertindak sebagai penghubung antara Model dan View, mengatur alur permintaan (request) dan tanggapan (response), serta menentukan logika yang dijalankan berdasarkan aksi pengguna.
Penerapan arsitektur MVC memberikan keuntungan dalam hal pemisahan kepentingan, sehingga pengembangan dan pengujian masing-masing komponen dapat dilakukan secara independen dan lebih efisien.

3.3. Basis Data Relasional

Basis data relasional adalah sistem penyimpanan data yang menggunakan struktur tabel untuk merepresentasikan entitas dan relasi antar data. Setiap tabel terdiri dari baris (tuple) dan kolom (atribut), dengan kunci utama (Primary Key) sebagai identifikasi unik dan kunci asing (Foreign Key) sebagai penghubung antar tabel. Untuk menjaga efisiensi dan integritas data, proses normalisasi dilakukan hingga bentuk normal ketiga (3NF), yang bertujuan mengurangi redundansi dan mencegah anomali saat melakukan operasi insert, update, atau delete.
Integritas data dijaga melalui referential integrity (hubungan antar tabel) dan domain integrity (validasi tipe data dan constraint). Penggunaan indeks pada kolom-kolom yang sering digunakan dalam pencarian atau penyaringan, seperti status pengajuan atau tanggal pembuatan, dapat meningkatkan performa query SELECT secara signifikan. Bahasa SQL digunakan untuk manipulasi data, yang terdiri dari perintah DDL (Data Definition Language), DML (Data Manipulation Language), dan DCL (Data Control Language).

3.4. Kontrol Akses Berbasis Peran (RBAC)

Kontrol akses berbasis peran atau Role-Based Access Control (RBAC) adalah pendekatan pengelolaan hak akses yang menetapkan izin berdasarkan peran pengguna dalam sistem, bukan berdasarkan identitas individu. Prinsip utama RBAC adalah pemberian hak akses seminimal mungkin (least privilege) dan pemisahan tugas (separation of duties) untuk menjaga keamanan dan efisiensi operasional.
Dalam sistem informasi cuti kuliah, peran pengguna dapat diklasifikasikan sebagai Superadmin, Admin Fakultas, dan Admin Prodi/Kaprodi. Superadmin memiliki akses penuh terhadap seluruh data dan fitur, termasuk pengelolaan pengguna dan ekspor data lintas fakultas. Admin Fakultas memiliki akses terbatas pada data di lingkup fakultasnya, sedangkan Admin Prodi hanya dapat melihat dan mengelola data pada program studi masing-masing. Validasi akses dilakukan di sisi server melalui pengamanan controller, dan diselaraskan dengan tampilan antarmuka pengguna dengan menyembunyikan atau menonaktifkan elemen yang tidak relevan.

3.5. Otentikasi, Otorisasi, dan Keamanan Web

Dalam sistem informasi berbasis web, aspek keamanan menjadi komponen krusial yang tidak dapat diabaikan. Otentikasi merupakan proses verifikasi identitas pengguna, biasanya dilakukan melalui kombinasi username dan password yang disimpan dalam bentuk terenkripsi menggunakan algoritma hashing seperti bcrypt. Setelah pengguna berhasil login, sistem akan menyimpan status autentikasi dalam session yang dikelola oleh server, termasuk pengaturan waktu kedaluwarsa (timeout) untuk mencegah akses tidak sah akibat sesi yang dibiarkan terbuka.
Otorisasi dilakukan setelah otentikasi berhasil, yaitu proses pemeriksaan hak akses pengguna terhadap fitur atau data tertentu berdasarkan peran yang dimilikinya. Setiap endpoint dalam sistem harus dilindungi dengan validasi otorisasi agar tidak terjadi eskalasi hak akses. Selain itu, sistem juga harus dilengkapi dengan proteksi umum seperti validasi input untuk mencegah injeksi, sanitasi output untuk menghindari serangan XSS (Cross-Site Scripting), pembatasan unggahan file berdasarkan tipe dan ukuran, penggunaan protokol HTTPS pada lingkungan produksi, serta penerapan token CSRF (Cross-Site Request Forgery) pada formulir yang bersifat menulis data.

3.6. Interaksi Asinkron (AJAX) dan Pengalaman Pengguna (UX)

AJAX (Asynchronous JavaScript and XML) adalah teknik dalam pengembangan web yang memungkinkan pertukaran data antara client dan server secara asinkron tanpa perlu memuat ulang seluruh halaman. Dalam konteks sistem informasi cuti kuliah, AJAX digunakan untuk meningkatkan pengalaman pengguna, misalnya saat melakukan pencarian data pengajuan, memfilter berdasarkan status, atau memuat halaman data secara bertahap (pagination).
Dengan menggunakan AJAX, sistem dapat memberikan respon yang lebih cepat dan interaktif, mengurangi beban server, serta menghemat bandwidth karena hanya data yang diperlukan yang dikirimkan. Pola umum implementasinya adalah: pengguna melakukan aksi (misalnya mengetik kata kunci), sistem mengirimkan permintaan ke endpoint tertentu, dan hasilnya ditampilkan secara dinamis di halaman tanpa reload.

3.7. Ekspor Data

Fitur ekspor data merupakan bagian penting dalam sistem informasi, terutama untuk keperluan pelaporan dan dokumentasi. Sistem informasi cuti kuliah mendukung ekspor data dalam format CSV/Excel dan PDF. Format CSV atau Excel digunakan karena kompatibel dengan berbagai perangkat lunak spreadsheet dan mudah diolah lebih lanjut. Dalam implementasinya, perlu diperhatikan penggunaan delimiter, newline, dan encoding karakter agar file dapat dibuka dengan benar.
Sementara itu, format PDF digunakan untuk keperluan cetak atau distribusi resmi. Pengaturan ukuran halaman (misalnya A4 landscape), margin, dan lebar kolom harus diperhatikan agar hasil cetakan rapi dan terbaca. Encoding karakter juga penting, terutama untuk teks berbahasa Indonesia, agar tidak muncul simbol aneh akibat ketidaksesuaian encoding (misalnya UTF-8 ke Windows-1252). Hasil ekspor harus konsisten dengan filter yang diterapkan oleh pengguna dan tetap menghormati batasan hak akses berdasarkan peran.

3.8. Manajemen Berkas

Dalam sistem pengajuan cuti kuliah, mahasiswa diwajibkan mengunggah dokumen pendukung seperti KHS atau surat keterangan. Oleh karena itu, sistem harus menyediakan fitur unggah berkas yang aman dan terstruktur. Validasi dilakukan terhadap ukuran file, ekstensi, dan tipe MIME untuk mencegah unggahan berkas berbahaya. Penamaan file dilakukan secara unik, misalnya dengan menambahkan timestamp atau UUID, untuk menghindari konflik nama file.
Berkas yang diunggah disimpan dalam direktori tertentu (misalnya assets/uploads/) dan metadata seperti path file, waktu unggah, dan pemilik file dicatat dalam basis data. Setiap berkas harus memiliki relasi yang jelas dengan entitas induknya, seperti pengajuan cuti, agar dapat dikelola dan ditelusuri dengan mudah.

3.9. Alur Bisnis Pengajuan Cuti

Alur bisnis dalam sistem informasi cuti kuliah mencerminkan proses nyata yang terjadi di lingkungan akademik. Proses dimulai dari mahasiswa yang mengajukan permohonan cuti dengan melampirkan dokumen pendukung seperti KHS. Pengajuan tersebut kemudian masuk ke status “pending” dan menunggu persetujuan dari pihak administrator akademik.
Administrator melakukan verifikasi terhadap data dan dokumen, lalu memberikan keputusan berupa “approved” atau “rejected”. Setiap keputusan dicatat secara sistematis dengan atribut seperti handled_by (ID admin), handled_by_name (nama admin), dan handled_at (timestamp keputusan).
Entitas utama yang terlibat dalam proses ini meliputi Mahasiswa, Pengajuan Cuti, KHS, dan Riwayat Cuti. Mahasiswa yang memiliki pengajuan cuti berstatus “approved” akan dikategorikan sebagai “Mahasiswa Cuti” dan dapat difilter dalam sistem untuk keperluan pelaporan dan analisis.

3.10. Integrasi Layanan Pesan (WhatsApp)

Untuk meningkatkan komunikasi dan notifikasi kepada pengguna, sistem mendukung integrasi dengan layanan pesan WhatsApp melalui pendekatan webhook atau HTTP service. Ketika status pengajuan cuti berubah, sistem dapat memanggil endpoint internal yang meneruskan pesan ke layanan WhatsApp.
Dalam implementasinya, sistem harus memperhatikan prinsip idempoten agar pengiriman pesan tidak terjadi ganda, serta penanganan kegagalan seperti retry atau rollback jika pengiriman gagal. Logging aktivitas notifikasi juga diperlukan untuk audit dan debugging.
Keamanan integrasi dijaga dengan validasi parameter, pembatasan akses ke endpoint, dan penyimpanan token secara aman di sisi server agar tidak terekspos ke publik.

3.11. Logging dan Audit

Logging merupakan komponen penting dalam sistem informasi untuk menelusuri aktivitas pengguna dan menjaga akuntabilitas. Dalam sistem cuti kuliah, terdapat beberapa jenis log yang digunakan, antara lain:
- Riwayat pengajuan (cuti_history): mencatat perubahan status dan waktu pengajuan.
- Log sesi pengguna (user_session_log): merekam aktivitas login dan logout.
- Jejak admin (handled_by, handled_at): mencatat siapa yang memproses pengajuan dan kapan keputusan dibuat.
Log ini tidak hanya berguna untuk audit internal, tetapi juga membantu dalam proses debugging dan analisis perilaku sistem.

3.12. Kinerja dan Skalabilitas

Untuk memastikan sistem dapat digunakan secara optimal oleh banyak pengguna, aspek kinerja dan skalabilitas harus diperhatikan. Optimasi dilakukan pada level query dengan penggunaan indeks pada kolom-kolom yang sering digunakan untuk pencarian dan penyaringan, seperti status pengajuan dan tanggal.
Pagination diterapkan untuk membatasi jumlah data yang ditampilkan per halaman, sehingga mengurangi beban server dan mempercepat waktu respon.
Caching ringan dapat digunakan pada data yang tidak sering berubah, seperti daftar fakultas atau program studi, untuk mengurangi frekuensi akses ke basis data.

3.13. Portabilitas dan Deployment

Sistem dirancang agar mudah dipindahkan dan di-deploy ke berbagai lingkungan. Basis data disiapkan dalam satu file skema (ci3.sql) yang dapat digunakan untuk bootstrap seluruh tabel. Konfigurasi sistem dibuat portabel, seperti base_url yang dapat mendeteksi otomatis, dan pengaturan database.php yang fleksibel.
Hak akses folder seperti uploads juga disesuaikan agar sistem dapat berjalan dengan baik di server lokal maupun produksi. Untuk keperluan backup dan restore, sistem mendukung ekspor basis data melalui phpMyAdmin dan arsip ZIP untuk seluruh proyek aplikasi.

3.14. Pengujian

Pengujian dilakukan untuk memastikan bahwa sistem berfungsi sesuai dengan kebutuhan pengguna dan bebas dari kesalahan kritis.
- Unit test digunakan untuk memverifikasi fungsi-fungsi kecil seperti formatter atau utilitas.
- Pengujian fungsional (black-box) dilakukan untuk memeriksa apakah setiap use case berjalan sesuai harapan dari sudut pandang pengguna.
- User Acceptance Test (UAT) dilakukan bersama pemangku kepentingan untuk memastikan sistem memenuhi kebutuhan riil.
- Pengujian keamanan mencakup validasi autentikasi dan otorisasi, pengujian unggahan file, serta proteksi terhadap injeksi dan eksploitasi input.



# BAB 4 METODOLOGI

4.1. Pendekatan Pengembangan

Pengembangan sistem informasi pengajuan cuti ini menggunakan pendekatan iteratif dan inkremental, yang merupakan salah satu prinsip inti dari metodologi Agile. Metode ini dipilih karena kemampuannya untuk beradaptasi terhadap perubahan kebutuhan yang dinamis selama proses pengembangan berlangsung. Berbeda dengan metode sekuensial seperti Waterfall yang menuntut semua kebutuhan didefinisikan secara lengkap di awal, pendekatan Agile memungkinkan fleksibilitas untuk menyempurnakan dan menambah fitur secara bertahap.

Alasan utama pemilihan metode ini adalah adanya perkembangan kebutuhan yang signifikan. Sebagai contoh, pada awalnya sistem mungkin hanya dirancang untuk satu jenis admin. Namun, seiring berjalannya pengembangan, muncul kebutuhan untuk membedakan hak akses secara lebih spesifik antara Superadmin, Admin Fakultas, dan Admin Program Studi. Selain itu, fitur-fitur seperti integrasi notifikasi WhatsApp dan penyesuaian format ekspor data (PDF, CSV) juga memerlukan penyesuaian berulang kali untuk memenuhi ekspektasi pengguna. Pendekatan iteratif memungkinkan perubahan-perubahan ini untuk diakomodasi dalam siklus pengembangan berikutnya tanpa mengganggu keseluruhan proyek.

* Setiap iterasi dalam pengembangan sistem ini mengikuti siklus yang terstruktur namun ringkas, yang terdiri dari beberapa tahapan:
* Perencanaan Kebutuhan (Planning): Di awal setiap siklus, tim pengembang bersama pemangku kepentingan mengidentifikasi dan memprioritaskan sejumlah kecil fitur yang akan dibangun. Contohnya, satu iterasi fokus pada implementasi fitur filter status cuti.
* Desain Ringan (Design): Dilakukan perancangan sederhana yang cukup untuk memandu implementasi fitur yang telah dipilih, seperti merancang tata letak modal unduh data atau struktur tabel PDF.
* Implementasi (Implementation): Tahap penulisan kode untuk mewujudkan fitur yang telah dirancang.
* Uji Cepat (Testing): Fitur yang baru selesai diimplementasikan segera diuji untuk memastikan fungsionalitasnya berjalan sesuai harapan dan tidak menimbulkan masalah baru.
* Rilis Kecil (Release/Increment): Fitur yang telah lulus pengujian diintegrasikan ke dalam sistem utama, menghasilkan sebuah increment atau versi sistem yang lebih lengkap dari sebelumnya.
* Umpan Balik (Feedback): Hasil dari rilis kecil tersebut dievaluasi oleh pengguna atau pemangku kepentingan. Umpan balik yang diterima kemudian menjadi masukan berharga untuk tahap perencanaan pada siklus iterasi selanjutnya.

4.2. Arsitektur Sistem
![image](https://hackmd.io/_uploads/Bk0UZp0J-x.png)
Gambar 4.1. Arsistektur Sistem

Sistem ini dirancang menggunakan arsitektur Model-View-Controller (MVC) yang diimplementasikan dengan framework CodeIgniter 3 untuk memastikan pemisahan yang jelas antara logika bisnis, akses data, dan antarmuka pengguna. Alur interaksi dimulai ketika Pengguna (Admin atau Mahasiswa) mengirimkan permintaan melalui protokol HTTP/S dari browser. Permintaan ini pertama kali diterima oleh Controller, yang bertindak sebagai pusat kendali. Controller bertanggung jawab untuk memproses logika bisnis dan berkoordinasi dengan Model untuk melakukan operasi data, seperti mengambil atau menyimpan informasi ke basis data MySQL/MariaDB melalui query SQL.

Setelah data diperoleh, Controller meneruskannya ke View, yang bertugas untuk merender data tersebut menjadi halaman HTML yang dinamis dan menampilkannya kembali kepada pengguna. Selain itu, untuk fitur notifikasi, Controller juga dapat berkomunikasi dengan layanan eksternal, yaitu Layanan WAHA (WhatsApp Gateway), untuk mengirimkan pesan kepada pengguna saat ada pembaruan status pengajuan. Arsitektur ini memungkinkan pengembangan yang terstruktur, pemeliharaan yang lebih mudah, dan skalabilitas sistem yang baik.

4.3. Lingkungan dan Perangkat

* Software: XAMPP (Apache, PHP 7.4.33, MySQL), VS Code, Docker Desktop (WAHA - Whatsapp API).
* Library: Codeigniter 3, Bootstrap - SB Admin 2.
* Platform testing: Windows (localhost).

4.4. Proses Bisnis Utama

![image](https://hackmd.io/_uploads/SyvkmHOlWg.png)
Gambar 4.2. Proses Bisnis Utama
Diagram ini mengilustrasikan tiga alur proses bisnis utama aplikasi.

* Manajemen Mahasiswa, semua admin dapat melihat dan mengunduh data, namun hanya Superadmin yang berwenang menambah atau mengimpor mahasiswa baru.
* Proses Cuti, mahasiswa mengajukan permohonan yang kemudian ditinjau dan diputuskan (disetujui atau ditolak) oleh admin
* Notifikasi dan Pelaporan, setiap keputusan cuti akan memicu pengiriman notifikasi otomatis via WhatsApp (WAHA), dan admin juga dapat melihat laporan rekapitulasi total pengajuan yang diterima dan ditolak.

![image](https://hackmd.io/_uploads/rkLEQuFgbl.png)
Gambar 4.3. Alur Pengiriman Whatsapp Broadcast

Diagram ini menjelaskan alur pengiriman notifikasi WhatsApp dari aplikasi. Proses dimulai saat admin menyetujui atau menolak cuti, yang memicu pemanggilan URL spesifik di controller Waha.php. Controller ini kemudian bertindak sebagai perantara: ia menerima permintaan, menormalkan nomor HP ke format internasional, menyusun pesan dalam format JSON, lalu mengirimkannya ke layanan WAHA yang berjalan di Docker. Terakhir, layanan WAHA menerima permintaan tersebut dan meneruskan pesan notifikasi ke pengguna melalui server WhatsApp.

* Laporan keseluruhan data mahasiswa (diterima cuti, ditolak)

![image](https://hackmd.io/_uploads/H17W_VdgZl.png)
Gambar 4.4. Alur Pengambilan Laporan 

Diagram ini menjelaskan alur sistem dalam menampilkan laporan statistik cuti di dashboard admin. Saat admin mengakses dashboard, sistem pertama-tama akan memeriksa hak aksesnya, apakah sebagai Superadmin, Admin Fakultas, atau Admin Prodi. Berdasarkan peran tersebut, sistem akan mengambil data statistik yang relevan—Superadmin melihat semua data, sementara admin lain hanya melihat data sesuai lingkup fakultas atau prodinya. Data yang sudah disaring ini kemudian dikirim ke halaman depan (frontend) untuk ditampilkan sebagai laporan visual, memastikan setiap admin hanya melihat informasi yang sesuai dengan kewenangannya.
4.5. Perancangan Basis Data

![image](https://hackmd.io/_uploads/rkb015xgbl.png)
Gambar 4.5. Rancangan Basis Data

Sistem basis data yang dirancang untuk aplikasi pengajuan cuti akademik mahasiswa ini terdiri dari 8 tabel utama yang saling terhubung melalui relasi foreign key untuk membentuk sistem yang terintegrasi. Tabel ADMINS dan MAHASISWA berfungsi sebagai entitas pengguna utama, dimana ADMINS mengelola sistem dan MAHASISWA sebagai pengaju cuti, keduanya terhubung dengan tabel FAKULTAS yang menyimpan informasi fakultas. Tabel PRODI (Program Studi) berelasi dengan FAKULTAS dan MAHASISWA untuk mengorganisir struktur akademik. Inti dari sistem adalah tabel CUTI yang menyimpan data pengajuan cuti mahasiswa dan terhubung dengan tabel pendukung yaitu CUTI_DRAFT untuk menyimpan draft pengajuan, CUTI_KHS untuk menyimpan dokumen Kartu Hasil Studi, dan CUTI_HISTORY untuk mencatat riwayat perubahan status pengajuan. Selain itu, tabel USER_SESSION_LOG berfungsi untuk tracking aktivitas login admin guna keperluan audit dan keamanan sistem. Keseluruhan struktur tabel ini dirancang untuk mendukung alur kerja pengajuan cuti yang kompleks mulai dari pembuatan draft, pengajuan resmi, proses persetujuan, hingga dokumentasi riwayat perubahan status.

4.5.1. ADMINS

Tabel untuk menyimpan data akun administrator yang mengelola sistem:

a. id: Kunci utama (Primary Key/PK) unik untuk setiap admin.
b. username: Nama pengguna untuk login, bersifat unik (Unique Key/UK).
c. password: Kata sandi yang sudah di-hash untuk keamanan.
d. is_superadmin: Penanda hak akses tertinggi (1 untuk         superadmin, 0 untuk admin biasa).
e. faculty dan prodi: Menentukan ruang lingkup (scope) buntuk admin fakultas atau admin prodi, digunakan untuk membatasi data yang bisa mereka lihat/kelola.

4.5.2. FAKULTAS

Tabel master untuk menyimpan daftar semua fakultas yang ada:

a. id: Kunci utama (PK).
b. kode dan nama: Informasi unik untuk setiap fakultas.

4.5.3. PRODI

Tabel master untuk menyimpan daftar semua program studi:

fakultas_id: Kunci asing (Foreign Key/FK) yang menghubungkan setiap prodi ke tabel FAKULTAS. Ini menunjukkan relasi "satu fakultas memiliki banyak prodi".

4.5.4. MAHASISWA

Tabel untuk menyimpan data profil lengkap setiap mahasiswa:

a. nim: Nomor Induk Mahasiswa, bersifat unik (UK).
b. status: Status akademik mahasiswa saat ini (misalnya: 'aktif', 'cuti').
c. faculty dan prodi: Menyimpan informasi fakultas dan prodi mahasiswa.
d. phone dan parent_name: Data kontak yang diperlukan untuk proses pengajuan cuti.


4.5.5. CUTI

Tabel untuk mengelola data pengajuan cuti mahasiswa:

* id: Primary key
* mahasiswa_id: Foreign key ke tabel MAHASISWA
* data: Tanggal pengajuan
* semester: Semester yang ingin dicuti
* file_surat: Path file surat permohonan cuti
* status: Status pengajuan (pending, approved, rejected)
* handled_by: Foreign key ke ADMINS (admin yang memproses)
* handled_by_name: Nama admin yang memproses
* timestamp: Waktu diproses

4.5.6. CUTI_DRAFT
Tabel untuk menyimpan draft pengajuan cuti sebelum disubmit:

* id: Primary key
* mahasiswa_id: Foreign key ke MAHASISWA
* text: Isi draft surat
* file_json: Data form dalam format JSON
* timestamp: Waktu pembuatan draft

4.5.7. CUTI_KHS
Tabel untuk menyimpan KHS (Kartu Hasil Studi) mahasiswa yang mengajukan cuti:

* id: Primary key
* cut_id: Foreign key ke tabel CUTI
* semester: Semester KHS
* decimal: IP/IPK dalam bentuk desimal
* file_scan: File scan KHS

4.5.8. CUTI_HISTORY
Tabel untuk tracking riwayat perubahan status cuti:

* id: Primary key
* cut_id: Foreign key ke tabel CUTI
* actor_name: Nama yang melakukan aksi
* status_from: Status sebelumnya
* status_to: Status sesudahnya
* timestamp: Waktu perubahan

4.5.9. USER_SESSION_LOG
Tabel untuk tracking login/aktivitas user:

* id: Primary key
* admin_id: Foreign key ke ADMINS
* ip: IP address user
* timestamp: Waktu login/aktivitas
* login_at: Waktu login
* logout_at: Waktu logout

4.6. Kontrol Akses (RBAC)

* Superadmin: penuh; tambah/import/unduh semua.
* Admin fakultas: unduh per fakultas dan prodi di dalam fakultasnya.
* Admin prodi/kaprodi: terkunci ke program studinya; hanya unduh.
* Guard server‑side pada endpoint dan visibilitas tombol di view.

4.7. Perancangan Antarmuka

* Daftar Mahasiswa: pencarian cepat (Nama/NIM, Fakultas, Prodi, Status).
* Dropdown Status: Semua, Mahasiswa Cuti (approved), Ditolak.
* Modal Download: Scope (terkunci sesuai peran), Fakultas→Prodi (dependen), Status, Format (CSV/Excel/PDF).
* PDF: kolom NIM, Nama, Fakultas, Prodi, Status Cuti, Semester, Admin (approver/rejector); encoding diperbaiki (Windows‑1252) agar tidak ada simbol aneh.

4.8. Aturan Bisnis Penting

* “Mahasiswa Cuti”: hanya yang berstatus cuti dan memiliki pengajuan cuti berstatus approved.
* Hanya superadmin yang boleh tambah/import; lainnya hanya unduh.
* Filtering AJAX; ekspor menghormati filter dan scope peran.
* Validasi upload: tipe/ukuran berkas, path terstruktur per entitas.

4.9. Strategi Pengujian

* Unit: model utilitas (filtering, builder ekspor).
* Fungsional: skenario CRUD, filter status, ekspor tiap format, WAHA saat approve/reject.
* Hak akses: matriks peran × tindakan (positive/negative tests).
* UAT: verifikasi UI, pagination, dan konsistensi data ekspor vs tampilan.

4.10. Deployment dan Migrasi

* Bootstrap DB: impor ci3.sql saja (file SQL lain dapat dihapus).
* Konfigurasi: application/config/database.php; base_url dikosongkan agar auto.
* Direktori tulis: assets/uploads/*.
* Integrasi WA: sesuaikan endpoint/token WAHA pada controller/konfigurasi terkait.

4.11. Keamanan

* Session & cookie: konfigurasi encryption_key.
* Input: filtering/escape, validasi server‑side, CSRF bawaan CI (opsional).
* Query: ActiveRecord/Query Builder, indeks pada kolom filter/foreign key.
* Hak akses: guard controller + hide tombol UI (defense in depth).

4.12. Pemeliharaan

* Logika ensure schema/migrasi ringan di model menjaga kompatibilitas.
* Ekspor versi: penamaan file menyertakan scope/status/tanggal (opsional).
* Cadangan: dump DB berkala; arsip project ZIP untuk portabilitas.

# BAB 5 HASIL DAN PEMBAHASAN 
5.1. Web Sistem Informasi 
hasil implementasi ditampilkan dalam halaman web dengan diawali halaman login

![image](https://hackmd.io/_uploads/B17ZpfJl-g.png)
Gambar 5.1. Halaman Login.

gambar diatas adalah laman login dari web sistem informasi cuti kuliah, dengan beberapa kelas login dari superadmin, admin, dan mahasiswa. dengan id buatan superadmin berpassword default = username/id/nim, ketika tidak ada aktifitas setelah login selama 5 menit akan dikembalikan ke halaman login.

5.2. Superadmin

![image](https://hackmd.io/_uploads/rkEzTf1xZe.png)
Gambar 5.2. Dashboard Superadmin

gambar diatas adalah halaman dashboard untuk superadmin, dengan beberapa menu atau perintah yang hanya bisa dilakukan oleh superadmin, juga opsi download laporan pdf untuk approved only.

![image](https://hackmd.io/_uploads/SyjZAvwxbg.png)
Gambar 5.3. Menu Mahasiswa.

menu mahasiswa menampilkan daftar seluruh data mahasiswa dari tiap fakultas dan prodi dengan beberapa menu yang bisa digunakan

![image](https://hackmd.io/_uploads/Hya4ADwgbe.png)
Gambar 5.4. Riwayat Cuti Mahasiswa.

klik NIM atau nama untuk menampilkan histori pengajuan cuti dari mahasiswa yang dipilih

![image](https://hackmd.io/_uploads/SJldADwxWe.png)
Gambar 5.5. Form Tambah Mahasiswa Manual.

opsi tambah mahasiswa secara manual dengan mengisi nim, nama, email, fakultas, prodi, dan password (opsional).

![image](https://hackmd.io/_uploads/Byo8CDvgbg.png)
Gambar 5.6. Form Import Mahasiswa.

opsi import csv dengan format yang sudah ditentukan, dan bisa dilakukan preview sebelum memastikan kesesuaian file import dengan format.

![image](https://hackmd.io/_uploads/H1ATRvwxbe.png)
Gambar 5.7. Download Data Mahasiswa.

opsi download data mahasiswa dengan opsi scope semua data, per fakultas dan per prodi, dengan pilihan status semua status, mahasiswa cuti, pengajuan ditolak, dengan format csv, xlsx, dan pdf.

![image](https://hackmd.io/_uploads/HJYIxOvxWe.png)
Gambar 5.8. Menu Admins.

menu admins yang berisi daftar keseluruhan admin dan terdapat opsi mengedit dan menghapus admin dibawah superadmin, opsi tambah admin manual, tambah admin via import csv dan download data admin.

![image](https://hackmd.io/_uploads/SyoOlOPlbg.png)
Gambar 5.9. Edit Admin Terpilih.

opsi edit admin yang bisa mengganti username, nama, password, fakultas dan prodi.

![image](https://hackmd.io/_uploads/SJGqlOPxZe.png)
Gambar 5.10. Tambah admin baru.

opsi tambah admin manual dengan mengisi form username, nama, password = username jika dikosongkan, lalu memilih fakultas dan prodi untuk admin baru yang akan dibuat.

![image](https://hackmd.io/_uploads/S1wjxOPeWl.png)
gambar 5.11. Import Admin.

opsi import admin via csv dengan mengimport sesuai dengan format kolom yang tertera, dan diberikan contoh template yang bisa diunduh, serta preview sebelum memastikan file yang diimport sesuai dengan format. Dengan tambahan ceklis di update only untuk mengimpor CSV yang hanya memperbarui akun admin yang sudah ada, tanpa menambah akun baru.

![image](https://hackmd.io/_uploads/SkkmW_PeWx.png)
Gambar 5.12. Download Data Admin.

opsi download data denmgan pilihan semua admin, per fakultas dan per prodi, dengan format csv atau xlsx.

![image](https://hackmd.io/_uploads/SkJ1QuwlWl.png)
gambar 5.13. Menu Fakultas.

menu fakultas menampilkan daftar fakultas yang tersedia dengan beberapa opsi untuk menambah fakultas atau menghapus fakultas.

![image](https://hackmd.io/_uploads/S1HMXOPg-l.png)
Gambar 5.14. Menu Prodi.
![image](https://hackmd.io/_uploads/HkUrQdPlWe.png)
Gambar 5.15. Menu Prodi Lanjutan.

menu prodi yang menampilkan list prodi yang aktif serta opsi untuk menambah prodi dengan memilih fakultas terlebih dahulu dan mengisi nama prodi, dan juga opsi menghapus prodi dengan memilih prodi yang sudah ada.

![image](https://hackmd.io/_uploads/HyFqX_Pe-e.png)
Gambar 5.16. Menu Profile.

menu profile yang ada disemua kelas yang dapat mengedit username login, nama, dan password.

5.3. Admin - Fakultas
![image](https://hackmd.io/_uploads/HJ77Tzye-e.png)
Gambar 5.17. Dashboard Admin Fakultas.

gambar diatas adalah halaman dashboard untuk kelas admin fakultas, dengan opsi tambahan untuk melihat keseluruhan record mahasiswa terbatas pada fakultas.

![image](https://hackmd.io/_uploads/rkgbVOvxWg.png)
Gambar 5.18. Menu Mahasiswa Fakultas.

menu data mahasiswa menampilkan seluruh mahasiswa dalam fakultas teknik dan opsi download data yang bisa dipilih data fakultas atau prodi dengan pilhan status serta format file. 

5.4. Admin - Prodi
![image](https://hackmd.io/_uploads/rJeEafJlWl.png)
Gambar 5.19. Dashboard Admin Prodi.

gambar diatas adalah halaman dashboard untuk kelas admin prodi, dengan opsi terbatas menerima atau menolak permintaan cuti dalam prodi, dan melihat record mahasiswa dalam prodi terpilih.

![image](https://hackmd.io/_uploads/BkCOE_DgZg.png)
Gambar 5.20. Data Mahasiswa Prodi.

menu mahasiswa menampilkan daftar mahasiswa dalam satu prodi dan opsi download data prodi dengan status cuti atau pengajuan ditolak dan format yang bisa dipilih csv atau pdf.

5.5. Mahasiswa
![image](https://hackmd.io/_uploads/H12ipzkgZx.png)
Gambar 5.21. Dashboard Mahasiswa.

gambar diatas adalah halaman 
dashboard untuk mahasiswa dengan menampilkan status mahasiswa dengan menu ajukan cuti.
![image](https://hackmd.io/_uploads/rJ8MZc7gbl.png)
Gambar 5.22. Menu Ajukan Cuti.

menu ajukan cuti berisikan form yang akan diisi mahasiswa yang mengajukan cuti dengan menyertakan file khs dan berkas form pendaftaran, dan memastikan seluruh form diisi dengan benar.

5.6. Alur Pengajuan Cuti
![image](https://hackmd.io/_uploads/HJtgIXOlWx.png)
Gambar 5.23. Mengisi Form Cuti.

Mahasiswa yang ingin megajukan cuti mengisikan form dimenu ajukan cuti lalu klik kirim permohonan, dan sebelumnya bisa memastikan file khs dan form yang diupload sudah benar dengan opsi lihat file.

![image](https://hackmd.io/_uploads/HyeOp7ul-l.png)
Gambar 5.24. Laporan Pengajuan.

setelah mengirimkan permohonan akan ada laporan singkat tentang pengajuan cuti dan permintaan sudah dikirimkan ke admin yang akan menangani permintaan cuti.

![image](https://hackmd.io/_uploads/S1CnaXOgbg.png)
Gambar 5.25. Dashboard Admin Prodi.

saat admin login akan muncul 1 pending dan klik untuk menampilkan detil requestnya, dan admin yang bisa menerima dan menolak adalah admin yang sesuai prodi, dalam kasus ini prodi teknik informatika.

![image](https://hackmd.io/_uploads/B1bIf4dgZg.png)
Gambar 5.26. Notifikasi Broadcast Telah Terkirim.

ketika approve, akan muncul notifikasi wa telah dikirmkan dengan template approved.

![image](https://hackmd.io/_uploads/ByB3zVdgWe.png)
Gambar 5.27. Broadcast Cuti Diterima.
![image](https://hackmd.io/_uploads/ryaZQ4dl-e.png)
Gambar 5.28. Status Mahasiswa Cuti.

template approve telah terkirim ke nomor mahasiswa pendaftar cuti, dan status mahasiswa didashboard telah berubah.

5.7. Integrasi WAHA

![image](https://hackmd.io/_uploads/SkgF8XdxWg.png)
Gambar 5.29. Docker Desktop.

integrasi waha dilakukan dengan menginstall docker desktop terlebih dahulu,lalu menginstall waha dengan command yang bisa dijalankan di powershell seperti berikut.

*docker run -it -p 3000:3000 devlikeapro/waha*
![image](https://hackmd.io/_uploads/SkTjhRYg-x.png)
Gambar 5.30. Install WAHA di Powershell.

akan muncul tulisan unable to find image jika waha belum diinstall, dan waha akan didownload otomatis dan sekaligus diinstall kedalam docker.

![image](https://hackmd.io/_uploads/HyPxPXOlZl.png)
Gambar 5.31. Waha Menggenerate Token.

setelah menginstall waha, klik run, dan ketika berjalan docker akan menggenerate beberapa token dari api key sampai waha password. token ini bisa berubah tiap restart docker

![image](https://hackmd.io/_uploads/SyaiDQ_gZe.png)
Gambar 5.32. Login Localhost:3000.

gunakan waha username dan waha password untuk masuk ke dashboard waha dan setting whatsapp

![image](https://hackmd.io/_uploads/rkozu7_gWl.png)
Gambar 5.33. Laman Awal WAHA API.

masuk ke laman awal setelah login waha dan klik dashboard

![image](https://hackmd.io/_uploads/SJgOum_ebl.png)
Gambar 5.34. Dashboard WAHA.

setelah masuk dashboard akan muncul notifikasi connection failed, dan hanya perlu mengubah token api dengan klik edit worker yang bertanda pensil

![image](https://hackmd.io/_uploads/ryd3u7_xZx.png)
Gambar 5.35. Edit Worker.
![image](https://hackmd.io/_uploads/S1UlFmOxbg.png)
Gambar 5.36. Mengganti API Key.

ganti api key dengan token api key yang sudah digenerate docker sebelumnya dan klik save.

![image](https://hackmd.io/_uploads/B1R7Y7Oxbg.png)
Gambar 5.37. Status Stopped.

lalu akan muncul info dan session, dengan session dan status stopped

![image](https://hackmd.io/_uploads/ryZ2KQOl-l.png)
Gambar 5.38. Start Services.

lalu klik tombol start untuk memulai services

![image](https://hackmd.io/_uploads/r1kTK7Olbl.png)
Gambar 5.39. Status Scan QR Code.

akan muncul info scan qr code untuk memasukkan nomor whatsapp dengan scan qr dari aplikasi whatsapp.

![image](https://hackmd.io/_uploads/rkwpFmulbx.png)
Gambar 5.40. Scan QR Code.

lalu klik tombol masuk atau kamera untuk scan qr code, lalu scan menggunakan aplikasi whatsapp dismartphone.

![image](https://hackmd.io/_uploads/Byne5QOxZl.png)
Gambar 5.40. Status Working.

setelah scan, akan muncul status working lalu account dari nomor yang didaftarkan akan muncul, dan waha siap digunakan.

![image](https://hackmd.io/_uploads/rJ1LqmdxWg.png)
Gambar 5.40. Controller WAHA.

ganti api token di controllers waha.php dengan token yang sudah digenerate docker, kalau belum diganti akan muncul error ketika admin mengaccept atau mereject permintaan cuti mahasiswa, tidak bisa mengirim notifikasi wa.

![image](https://hackmd.io/_uploads/S1tT37Ox-x.png)
Gambar 5.41. Template Cuti Diterima.
![image](https://hackmd.io/_uploads/r1fR2X_ebx.png)
Gambar 5.41. Template Cuti Ditolak.

template waha disiapkan dengan nama approved dan declined dan akan otomatis dikirimkan ke nomor mahasiswa ketika admin menerima atau menolak permintaan cuti yang telah dikirimkan.

5.8 Laporan 

![image](https://hackmd.io/_uploads/Bk3rFVdeZl.png)
Gambar 5.42. Laporan Rektor.

laporan mahasiswa yang disetujui dengan tanda rektor untuk kelas superadmin.

![image](https://hackmd.io/_uploads/H109YNOxZg.png)
Gambar 5.43. Laporan Fakultas.

laporan mahasiswa yang disetujui dengan tanda dekan untuk kelas admin fakultas.

![image](https://hackmd.io/_uploads/SkSdYVdlWl.png)
Gambar 5.44. Laporan Prodi.

laporan mahasiswa yang disetujui dengan tanda kaprodi untuk kelas admin prodi.

# BAB 6 KESIMPULAN DAN SARAN
6.1 Kesimpulan
Berdasarkan hasil kerja praktik yang telah dilaksanakan di Program Studi Teknik Informatika Universitas Trunojoyo Madura, dapat ditarik beberapa kesimpulan sebagai berikut:
1.	Sistem informasi pengajuan cuti kuliah berbasis web berhasil dikembangkan dengan arsitektur Model–View–Controller (MVC) menggunakan framework CodeIgniter 3, sehingga memisahkan logika bisnis, antarmuka, dan basis data secara terstruktur.
2.	Proses pengajuan cuti yang sebelumnya dilakukan secara manual dapat diotomatisasi melalui sistem, sehingga mahasiswa dapat mengajukan cuti secara online, melampirkan dokumen pendukung, dan memantau status pengajuan secara real-time.
3.	Implementasi Role-Based Access Control (RBAC) memastikan pembagian hak akses yang jelas antara Superadmin, Admin Fakultas, Admin Prodi, dan Mahasiswa, sehingga keamanan dan integritas data lebih terjamin.
4.	Integrasi dengan layanan pesan WhatsApp (WAHA API) memungkinkan notifikasi otomatis kepada mahasiswa terkait status pengajuan cuti, meningkatkan transparansi dan pengalaman pengguna.
5.	Fitur ekspor data (PDF, Excel) dan laporan rekapitulasi cuti mendukung kebutuhan pelaporan administratif bagi fakultas dan program studi.
6.	Pengujian sistem (black-box, UAT, dan keamanan) menunjukkan bahwa sistem berjalan sesuai kebutuhan, dengan tingkat fungsionalitas dan keamanan yang memadai.

6.2 Saran
Untuk pengembangan lebih lanjut, beberapa saran yang dapat diberikan adalah:
1.	Integrasi dengan Sistem Akademik Universitas – Sistem cuti kuliah sebaiknya dihubungkan dengan sistem akademik utama (SIAKAD) agar data mahasiswa lebih konsisten dan tidak terjadi duplikasi.
2.	Pengembangan Mobile Application – Menyediakan aplikasi berbasis Android/iOS agar mahasiswa dapat mengakses layanan cuti kuliah lebih mudah melalui perangkat mobile.
3.	Peningkatan Keamanan – Menambahkan fitur autentikasi dua faktor (2FA) dan enkripsi end-to-end untuk dokumen sensitif guna meningkatkan keamanan sistem.
4.	Analitik Data – Mengembangkan modul analitik untuk memantau tren pengajuan cuti, sehingga dapat digunakan sebagai bahan evaluasi kebijakan akademik.
5.	Skalabilitas Sistem – Menyesuaikan sistem agar mampu menangani jumlah pengguna yang lebih besar, terutama jika diterapkan di seluruh fakultas.
6.	User Experience (UX) Improvement – Melakukan survei kepuasan pengguna secara berkala untuk menyempurnakan antarmuka dan alur kerja sistem.

# daftar pustaka

1.	Hidayat, S., & Ramadhan, A. (2021). Pengembangan Sistem Informasi Akademik Berbasis Web. Jurnal Sistem Informasi dan Aplikasi, 5(2), 45–52.
2.	Pratama, R., & Nugroho, D. (2022). Implementasi Arsitektur MVC pada Sistem Informasi Pengajuan Cuti. Jurnal Teknologi Informasi dan Ilmu Komputer, 8(1), 33–40.
3.	Ramadhan, A., & Yusuf, M. (2021). Perancangan Basis Data Relasional untuk Sistem Akademik. Jurnal Informatika Universitas Pamulang, 6(2), 21–28.
4.	Sari, L., & Wibowo, T. (2020). Penerapan Role-Based Access Control pada Sistem Informasi Akademik. Jurnal Sistem Informasi (JSI), 10(1), 15–22.
5.	Hidayat, M., & Kurniawan, R. (2021). Keamanan Web Menggunakan Hashing dan CSRF Token. Jurnal Teknologi dan Sistem Komputer, 9(2), 60–67.
6.	Santoso, D., & Lestari, A. (2022). Peningkatan UX Menggunakan AJAX pada Sistem Informasi. Jurnal Informatika dan Sistem Informasi, 7(1), 12–19.
7.	Maulana, F., & Dewi, S. (2022). Fitur Ekspor PDF dan Excel pada Sistem Informasi Akademik. Jurnal Sistem Informasi dan Aplikasi, 6(1), 25–31.
8.	Nugraha, T., & Putri, R. (2021). Manajemen File Upload pada Sistem Informasi Mahasiswa. Jurnal Teknologi Informasi, 5(2), 40–47.
9.	Hakim, Z., & Aulia, N. (2022). Model Alur Bisnis Pengajuan Cuti Akademik. Jurnal Sistem Informasi (JSI), 11(2), 55–63.
10.	Fadhilah, A., & Rizki, M. (2023). Integrasi WhatsApp API untuk Notifikasi Sistem Informasi. Jurnal Informatika UPNVJ, 4(1), 18–25.
11.	Siregar, R., & Prasetyo, D. (2021). Implementasi Logging dan Audit Trail pada Sistem Informasi. Jurnal Teknologi dan Sistem Informasi, 8(2), 70–78.
12.	Setiawan, B., & Nugroho, I. (2023). Optimasi Query dan Skalabilitas Sistem Informasi. Jurnal Sistem Informasi dan Aplikasi, 7(1), 29–36.
13.	Wulandari, S., & Ramli, A. (2022). Strategi Deployment Sistem Informasi Berbasis Web. Jurnal Teknologi Informasi dan Ilmu Komputer, 9(1), 41–48.
14.	Yuliana, M., & Hadi, T. (2023). Metodologi Pengujian Sistem Informasi Akademik. Jurnal Sistem Informasi (JSI), 12(1), 10–17
