Final Project

 FINAL PROJECT

Nama    : Abdullah Nasih Jasir
NRP      : 5025211111
Kelas    : PBKK-A

Referensi Paper: Referensi Paper


Final Project
Berikut merupakan proyek akhir yang saya susun, terkait pengembangan perangkat lunak atau aplikasi berbasis web dengan struktur MVC. Dokumen ini mencakup deskripsi, desain database, rancangan antarmuka pengguna (front-end), bagian pengelolaan (back-end), serta tahapan implementasinya.

1. Buatlah deskribsi studi kasus aplikasi ditinjau dari MVC!
Sebelum saya merinci lebih lanjut, penting untuk memahami definisi dari konsep MVC itu sendiri. MVC merupakan singkatan dari Model View Controller yang menjadi landasan bagi para pengembang dalam merancang aplikasi mereka.
  • Model diartikan sebagai representasi dari data atau objek dalam aplikasi. Ini adalah bagian yang bertanggung jawab untuk mengatur, memanipulasi, dan menyimpan data. Dalam konteks pengembangan aplikasi, model mengelola logika dan aturan bisnis serta interaksi dengan basis data.
  • View diartikan sebagai bagian yang menangani tampilan atau antarmuka pengguna. Tugas utama dari view adalah menampilkan informasi kepada pengguna dalam bentuk yang dapat dipahami dan dapat diakses.
  • Controller diartikan sebagai pengatur atau pemimpin dari aliran informasi antara model dan view. Ia bertanggung jawab atas pengelolaan input dari pengguna, menginterpretasikan perintah, serta mengirimkan instruksi ke model atau view terkait berdasarkan input yang diterima. Controller juga menangani logika bisnis dan memastikan konsistensi antara model dan view dalam aplikasi.
Dalam proyek akhir ini, tujuan saya adalah menciptakan sebuah aplikasi web yang menjadi platform penjualan tiket pesawat di berbagai wilayah, terutama di Pulau Jawa. Platform ini dirancang untuk mempermudah penumpang dalam melakukan pembelian tiket secara daring. Selain fitur pembelian, saya juga bermaksud untuk mengembangkan berbagai fitur tambahan seperti pembatalan, pemesanan makanan, pemilihan tempat duduk, dan beberapa fitur bantuan lainnya. Rincian tentang pembagian fitur ini akan saya jelaskan di bawah ini.
  • Model. Dalam proyek saya mengenai pemesanan tiket pesawat, model yang diimplementasikan mencakup kemampuan memesan jenis peswat, tanggal keberangkatan, penentuan tempat duduk, pemesanan makanan dan minuman selama perjalanan, serta pengisian formulir umpan balik terkait pelayanan.
  • View. Implementasi pemesanan tiket pesawat dalam proyek ini akan memanfaatkan beberapa bahasa pemrograman seperti HTML, CSS, dan JavaScript. Di sini, berbagai tampilan (view) akan disiapkan, termasuk halaman selamat datang, beranda, dasbor pembeli, halaman umpan balik, halaman pemesanan, dan sejumlah lainnya.
  • Controller. Peran controller adalah menerima masukan dari pengguna dan mengarahkannya ke komponen model atau view yang relevan. Controller juga mengelola logika bisnis aplikasi. Dalam aplikasi sistem informasi jadwal dokter, controller akan menangani fungsi-fungsi berikut: menerima masukan dari pengguna, mengarahkan masukan ke model atau view yang tepat, serta menangani logika bisnis aplikasi.

2. Buatlah rancangan umum arsitektur atau fitur yang ada dalam aplikasi!
Berikut adalah rangkuman fitur yang akan tersedia sesuai dengan konsep pemesanan tiket pesawat yang akan saya implementasikan:

  • Fitur pemesanan tiket peswat merupakan fitur utama di mana pelanggan dapat memesan tiket pesawat sesuai dengan preferensi jam keberangkatan. Pemesanan dapat dilakukan dalam satu transaksi.
  • Fitur kedua adalah pemilihan kelas pada setiap peswat. Pesawat memiliki beberapa variasi kelas yang berbeda. Penumpang dapat menyesuaikan pilihan berdasarkan preferensi dan anggaran yang dimilikinya.
  • Fitur ketiga adalah pemilihan tempat duduk di dalam pesawat. Penumpang diberi kebebasan untuk memilih tempat duduk berdasarkan ketersediaan yang ada di dalam pesawat.
  • Fitur keempat adalah pemesanan makanan dan minuman. Selain makanan, penumpang juga dapat memesan minuman saat perjalanan sudah dimulai. Melalui aplikasi yang sama, pemesanan secara otomatis akan membantu penumpang, dan pihak administrasi pesawat akan dapat mengantarkan makanan ke tempat duduk yang telah dipilih oleh penumpang dalam database.
  • Fitur kelima adalah pemberian umpan balik. Feedback dapat diberikan oleh semua penumpang yang terdaftar sebagai pelanggan, bahkan jika mereka bukan yang melakukan pemesanan. Transparansi dalam memberikan umpan balik memungkinkan pihak internal pesawat untuk melakukan manajemen yang efektif.

3. Rancang desain databasenya
Berikut adalah rancangan database yang telah saya buat (berupa CDM)



Berikut adalah rancangan database yang telah saya buat (berupa PDM)


Berikut adalah syntax untuk membuat database sebagai back-end
CREATE TABLE Feedback (
    ID_Feedback int  NOT NULL,
    Isi_Feedback varchar(1000)  NOT NULL,
    Pemesan_Id_Pemesan int  NOT NULL,
    CONSTRAINT Feedback_pk PRIMARY KEY (ID_Feedback)
);
CREATE TABLE Pesawat (
    ID_Pesawat  int  NOT NULL,
    Nama_Pesawat varchar(256)  NOT NULL,
    Asal varchar(256)  NOT NULL,
    Tujuan varchar(256)  NOT NULL,
    jam_berangkat time  NOT NULL,
    jam_tiba time  NOT NULL,
    harga int  NOT NULL,
    Tanggal_Pemberangkatan date  NOT NULL,
    CONSTRAINT Pesawat_pk PRIMARY KEY (ID_Pesawat)
);
CREATE TABLE Menu_Makanan (
    ID_Menu int  NOT NULL,
    Nama_Menu varchar(256)  NOT NULL,
    Harga_Menu int  NOT NULL,
    CONSTRAINT Menu_Makanan_pk PRIMARY KEY (ID_Menu)
);
CREATE TABLE Pemesan (
    Id_Pemesan int  NOT NULL,
    Nama_Pemesan varchar(256)  NOT NULL,
    no_HP varchar(12)  NOT NULL,
    CONSTRAINT Pemesan_pk PRIMARY KEY (Id_Pemesan)
);
CREATE TABLE Tempat_Duduk (
    ID_TempatDuduk varchar(20)  NOT NULL,
    Nama_kelas varchar(256)  NOT NULL,
    Nomor_Kursi int  NOT NULL,
    Available boolean  NOT NULL,
    Harga_Tambahan int  NOT NULL,
    Transaksi_DetailPenumpang_id_DetailPenumpang int  NOT NULL,
    Pesawat_ID_Pesawat  int  NOT NULL,
    CONSTRAINT Tempat_Duduk_pk PRIMARY KEY (ID_TempatDuduk)
);
CREATE TABLE Transaksi_DetailPenumpang (
    id_DetailPenumpang int  NOT NULL,
    Nama_Penumpang varchar(256)  NOT NULL,
    No_HP varchar(12)  NOT NULL,
    Transaksi_Pemesanan_ID_TransaksiPemesanan int  NOT NULL,
    CONSTRAINT Transaksi_DetailPenumpang_pk PRIMARY KEY (id_DetailPenumpang)
);
CREATE TABLE Transaksi_Makanan (
    ID_TransaksiMakanan int  NOT NULL,
    jumlah int  NOT NULL,
    Transaksi_DetailPenumpang_id_DetailPenumpang int  NOT NULL,
    CONSTRAINT Transaksi_Makanan_pk PRIMARY KEY (ID_TransaksiMakanan)
);
CREATE TABLE Transaksi_Makanan_Menu_Makanan (
    Transaksi_Makanan_ID_TransaksiMakanan int  NOT NULL,
    Menu_Makanan_ID_Menu int  NOT NULL,
    CONSTRAINT Transaksi_Makanan_Menu_Makanan_pk PRIMARY KEY (Transaksi_TransaksiMakanan,Menu_ID_Menu)
);
CREATE TABLE Transaksi_Pemesanan (
    ID_TransaksiPemesanan int  NOT NULL,
    Tanggal_Pemesanan date  NOT NULL,
    Jumlah int  NOT NULL,
    Pemesan_Id_Pemesan int  NOT NULL,
    Pesawat_ID_Pesawat  int  NOT NULL,
    CONSTRAINT Transaksi_Pemesanan_pk PRIMARY KEY (ID_TransaksiPemesanan)
);

-- foreign keys
ALTER TABLE Feedback ADD CONSTRAINT Feedback_Pemesan
    FOREIGN KEY (Pemesan_Id_Pemesan)
    REFERENCES Pemesan (Id_Pemesan)  
    NOT DEFERRABLE
    INITIALLY IMMEDIATE
;
ALTER TABLE Transaksi_Pemesanan ADD CONSTRAINT Pesawat_Transaksi Pemesanan
    FOREIGN KEY (Pesawat_ID_Pesawat)
    REFERENCES Pesawat (ID_Pesawat)  
    NOT DEFERRABLE
    INITIALLY IMMEDIATE
;
ALTER TABLE Tempat_Duduk ADD CONSTRAINT Tempat Duduk_Pesawat
    FOREIGN KEY (Pesawat_ID_Pesawat)
    REFERENCES Pesawat (ID_Pesawat)  
    NOT DEFERRABLE
    INITIALLY IMMEDIATE
;
ALTER TABLE Tempat_Duduk ADD CONSTRAINT Tempat Duduk_Transaksi Detail Penumpang
    FOREIGN KEY (Transaksi_DetailPenumpang_id_DetailPenumpang)
    REFERENCES Transaksi_DetailPenumpang (id_DetailPenumpang)  
    NOT DEFERRABLE
    INITIALLY IMMEDIATE
;
ALTER TABLE Transaksi_DetailPenumpang ADD CONSTRAINT Transaksi Detail Penumpang_Transaksi Pemesanan
    FOREIGN KEY (Transaksi_Pemesanan_ID_TransaksiPemesanan)
    REFERENCES Transaksi_Pemesanan (ID_TransaksiPemesanan)  
    NOT DEFERRABLE
    INITIALLY IMMEDIATE
;
ALTER TABLE Transaksi_Makanan ADD CONSTRAINT Transaksi Makanan_Transaksi Detail Penumpang
    FOREIGN KEY (Transaksi_DetailPenumpang_id_DetailPenumpang)
    REFERENCES Transaksi_DetailPenumpang (id_DetailPenumpang)  
    NOT DEFERRABLE
    INITIALLY IMMEDIATE
;
ALTER TABLE Transaksi_Pemesanan ADD CONSTRAINT Transaksi Pemesanan_Pemesan
    FOREIGN KEY (Pemesan_Id_Pemesan)
    REFERENCES Pemesan (Id_Pemesan)  
    NOT DEFERRABLE
    INITIALLY IMMEDIATE
;
ALTER TABLE Transaksi_Makanan_Menu_Makanan ADD CONSTRAINT Transaksi_Makanan_Menu_Makanan_Menu_Makanan
    FOREIGN KEY (Menu_Makanan_ID_Menu)
    REFERENCES Menu_Makanan (ID_Menu)  
    NOT DEFERRABLE
    INITIALLY IMMEDIATE
;
ALTER TABLE Transaksi_Makanan_Menu_Makanan ADD CONSTRAINT Transaksi_Menu_Makanan_Transaksi_Makanan
    FOREIGN KEY (Transaksi_Makanan_ID_TransaksiMakanan)
    REFERENCES Transaksi_Makanan (ID_TransaksiMakanan)  
    NOT DEFERRABLE
    INITIALLY IMMEDIATE
;

4. Buat desain Front-end!
Pada bagian antarmuka depan (UI), saya menciptakan suatu antarmuka yang simpel. Di bagian depannya, pengguna dapat memilih bandara keberangkatan dan kedatangan beserta tanggal dan jumlah penumpang secara langsung. Variasi jumlah penumpang disesuaikan berdasarkan hubungan data yang telah saya atur di dalam basis data.


Langkah berikutnya setelah memilih tanggal serta bandara keberangkatan dan kedatangan adalah pengisian data oleh pembeli, seperti jenis pesawat, nomor tempat duduk, dan kelasnya.




Setelah semua data diisi, langkah terakhir adalah antarmuka pembayaran (UI payment). Antarmuka yang dibuat masih dalam tahap ekspektasi karena pengimplementasian CSS dan JS yang cukup rumit.

5. Tentukan Control yang akan mengandle logika Back-end!
Terdapat beberapa control yang digunakan dalam menghandle logika Back-end project pemesanan tiket pesawat ini. Beberapa flow controller dari project ini saya jelaskan dalam deskripsi di bawah ini:
  • Fitur Pemesanan Tiket: Control Back-end akan bertanggung jawab atas proses pemesanan tiket pesawat, termasuk validasi data yang dimasukkan oleh pengguna, interaksi dengan basis data untuk menyimpan pesanan, serta mengatur proses transaksi.
  • Fitur Pemilihan Kelas: Kontrol Back-end akan mengatur logika terkait pemilihan kelas, termasuk verifikasi ketersediaan kursi di masing-masing kelas, menyimpan preferensi kelas yang dipilih oleh pengguna, dan memastikan konsistensi dalam penempatan penumpang pada pesawat
  • Fitur Pemilihan Tempat Duduk: Control Back-end akan mengelola informasi terkait ketersediaan tempat duduk di dalam pesawat, memvalidasi pilihan pengguna, dan menyimpan data tempat duduk yang dipilih oleh penumpang.
  • Fitur Pemesanan Makanan dan Minuman: Kontrol Back-end akan memproses pesanan makanan dan minuman, mengintegrasikan informasi pesanan dengan tempat duduk yang dipilih, serta memastikan pengiriman makanan sesuai dengan data yang tersimpan.
  • Fitur Pemberian Feedback: Control Back-end akan menangani pengelolaan data umpan balik dari pelanggan, menyimpan informasi yang diberikan, dan memfasilitasi proses manajemen feedback agar dapat digunakan untuk meningkatkan layanan pesawat.
6. Implementasikan rancangan yang sudah dibuat  menggunakan Framework NET, CI ataupun Framework Google!

Pada proses implementasi, saya mengerjakannya secara berkelompok yang terdiri dari
Abdullah Nasih Jasir - 5025211111 (saya sendiri)
Rayhan Almer Kusumah - 5025211115
Al-Ferro Yudisthira Putra - 5025211176

Dalam implementasi, kami menggunakan rancangan pembuatan pemesananhotel. Implementasi ini memfokuskan pada pengembangan sebuah situs web untuk reservasi kamar hotel dengan menggunakan framework CodeIgniter. Situs web ini dirancang untuk menyediakan layanan pemesanan kamar dari lima pilihan kamar hotel yang berbeda. Berikut adalah komponen utama dari situs web ini:
  • Halaman Registrasi (Register Page): Pengguna dapat mendaftar untuk membuat akun mereka sendiri di situs web. Informasi yang diperlukan untuk registrasi akan disediakan oleh pengguna untuk membuat akun baru.
  • Halaman Masuk (Login Page): Pengguna yang telah mendaftar dapat masuk ke dalam situs web dengan menggunakan informasi login yang mereka daftarkan sebelumnya.
  • Dashboard Admin: Bagian ini memungkinkan administrator untuk mengelola berbagai aspek dari situs web. Di sini, admin dapat melihat informasi seperti pendapatan bulanan yang terkumpul, status kamar yang terpakai, daftar pesanan yang masuk, dan informasi mengenai pegawai yang terdaftar.
  • Form Pemesanan: Pengguna dapat mengakses formulir pemesanan yang memungkinkan mereka memilih kamar hotel yang diinginkan, menentukan tanggal check-in dan check-out, serta jumlah malam yang diinginkan untuk pemesanan.
  • Halaman Pembayaran: Setelah mengisi formulir pemesanan, pengguna akan diarahkan ke halaman pembayaran. Di sini, mereka dapat memilih metode pembayaran dan menyelesaikan transaksi untuk memesan kamar hotel.
  • Halaman Beranda (Home Page): Merupakan halaman utama situs web yang memberikan informasi tentang layanan yang ditawarkan, kamar yang tersedia, dan mungkin juga menampilkan promosi atau informasi penting lainnya.
Selain itu, sistem ini memungkinkan pengguna untuk melakukan pemesanan kamar untuk lebih dari satu malam. Ini memberikan fleksibilitas bagi pengguna yang ingin menginap dalam jangka waktu yang lebih lama.

Untuk administrator, dashboard menyediakan akses ke informasi penting terkait performa situs, termasuk laporan keuangan bulanan, pemantauan ketersediaan kamar, manajemen pesanan yang masuk, serta daftar pegawai yang terdaftar dalam sistem.

Penggunaan framework CodeIgniter membantu dalam mengorganisir kode, mempercepat pengembangan, dan memastikan keamanan serta skalabilitas situs web reservasi hotel ini. Dengan fitur-fitur yang disebutkan di atas, situs web ini bertujuan untuk menyediakan pengalaman pemesanan kamar hotel yang mudah, cepat, dan terpercaya bagi pengguna serta kemudahan manajemen bagi pihak administrator.

7. Video Presentasi
Berikut adalah video penjelasan dari implementasi pembuatan website kami


Referensi
Referensi 1

Komentar

Postingan populer dari blog ini

Data Modeling

MVC Toko Online CI