Selasa, 20 September 2022

Pemrograman Web C | Tugas 4

 

Membuat Website Pencarian Kode Pos dengan Javascript


Nama : Gabriel Solomon Sitanggang
NRP : 5025201165

Link repository dapat diakses di link berikut. Atau bisa dilihat langsung dibawah ini
1. index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="style.css">
    <title>Postal Code</title>
</head>
<body>
    <div class="box">
        <div class="judul" id="judul">
            <h1>🗺️ INDONESIAN POSTAL CODE 🗺️</h1>
        </div>
        <div class="flex">
            <form id="form">
                <div class="divInput">
                    <label class="judul">Select Province:</label>
                    <select class="btn" id="prov" name="provinsi" required>
                        <option value="" disabled selected>Select Province</option>
                    </select>
                    <label class="judul">Select District:</label>
                    <select class="btn" id="kab" name="kabupaten" required>
                        <option value="" disabled selected>Select District</option>
                    </select>
                    <label class="judul">Postal Code:</label>
                    <input class="btn" id="cari" type="number" placeholder="Masukan kode pos">
                </div>
            </form>
        </div>
        <div class="result">
        </div>
    </div>
    
    <script type="module" src="main.js"></script>
</body>
</html>

2. style.css

body {
    margin: 0px;
    background-color: #3B9AE1;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    height: 100vh;
}

.box {
    background-color: #21E1E1;
    flex-direction: column;
    border: 2px solid black;
    width: 50em;
    height: 30em;
    box-shadow: 5px 5px 0px 0px rgba(0, 0, 0, 0.75);
    -webkit-box-shadow: 5px 5px 0px 0px rgba(0, 0, 0, 0.75);
    -moz-box-shadow: 5px 5px 0px 0px rgba(0, 0, 0, 0.75);
}

.judul {
    width: 100%;
    height: 20%;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #3120E0;
    font-family: monospace;
    font-size: larger;
    animation: show 2.5s;
    opacity: 1;
    visibility: visible;
    font-weight: bold;
}

.flex {
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-direction: column;
}

form {
    padding: 20px;
    width: 40%;
    height: 200px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    animation: show 2.5s;
    opacity: 1;
    visibility: visible;
}

.divInput {
    width: fit-content;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    row-gap: 8px;
}

.btn {
    cursor: pointer;
    padding: 5px;
    border: 2px solid black;
    background-color: #F0EABE;
    color: black;
    font-weight: bold;
    width: 100%;
}

.btn:hover {
    background-color: #3B9AE1;
    color: #000000;
    transition: 0.18s ease-in-out;
    box-shadow: 3px 3px 0px 0px rgba(0, 0, 0, 0.75);
    -webkit-transition: 0.18s ease-in-out;
    -moz-transition: 0.18s ease-in-out;
    -ms-transition: 0.18s ease-in-out;
    -o-transition: 0.18s ease-in-out;
}

form select,
input {
    margin-top: 20px;
    width: 90%;
    height: 30px;
    border-radius: 4px;
}

form label {
    margin-bottom: -10px;
    font-size: 20px;
}
form h1{
    display: block;
    margin: 0 auto;
    margin-top: -20px;
    margin-bottom: 40px;
}
h3{
    font-size: 14px;
    font-weight: normal;
}
p{
    font-size: 14px;
}

.result {
    margin-top: 200px;
    display: grid;
    grid-template-columns: auto auto auto auto auto auto;
    gap: 20px;
    width: 100%;
    justify-content: center;
}

.card {
    background-color: tomato;
    padding: 10px;
    text-align: center;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    justify-content: center;
    flex-wrap: wrap;
    width: 200px;
    height: 200px;
    border: solid black;
    border-radius: 8px;
    box-shadow: 11px 10px 20px -9px rgba(0, 0, 0, 0.7);
    -webkit-box-shadow: 11px 10px 20px -9px rgba(0, 0, 0, 0.7);
    -moz-box-shadow: 11px 10px 20px -9px rgba(0, 0, 0, 0.7);
    animation: show 2.5s;
    opacity: 1;
    visibility: visible;
    font-family: monospace;
    font-size: larger;
}

.card:hover {
    background-color: #3be140;
    color: #000000;
    transition: 0.18s ease-in-out;
    box-shadow: 3px 3px 0px 0px rgba(0, 0, 0, 0.75);
    -webkit-transition: 0.18s ease-in-out;
    -moz-transition: 0.18s ease-in-out;
    -ms-transition: 0.18s ease-in-out;
    -o-transition: 0.18s ease-in-out;
}

@keyframes show {
    0%{
        opacity: 0;
        visibility: hidden;
    }
    100%{
        opacity: 1;
        visibility: visible;
    }
}


3. main.js

import data from "../data/data.json" assert {type: "json"}
let data_postal = []
const data_prov = []
const provinsi = document.querySelector("#prov")

const select = document.querySelector("#prov")
const select_kab = document.querySelector("#kab")
const kab = document.querySelector("#kab")

document.addEventListener('DOMContentLoaded', function () {
    addprov()
    setKab()
    result()
    form()
});

function setKab() {
    provinsi.addEventListener("change", function () {
        const id = provinsi.value
        const postal = data.postal[id]
        const option = document.createElement('option')
        option.innerText = "Pilih Kabupaten";
        option.setAttribute("selected",true)
        option.setAttribute("disabled",true)
        select_kab.innerText = ''
        select_kab.append(option)
        data_prov.push(postal)
        const city = [...new Set(postal.map((data) => {
            return data.city;
        }))]
        city.sort((a,b)=>{
            let fa = a.toLowerCase()
            let fb = b.toLowerCase()
    
            if (fa < fb) {
                return -1;
            }
            if (fa > fb) {
                return 1;
            }
            return 0;
        })
        city.map((data) => {
            makeOptionKab(data)
        })
    })
}

function addprov() {
    const prov = Object.entries(data.province)
     const data_baru = prov.map((data) => {
        return data[1]
    })
    data_baru.sort((a,b)=>{
        let fa = a.province_name.toLowerCase()
        let fb = b.province_name.toLowerCase()

        if (fa < fb) {
            return -1;
        }
        if (fa > fb) {
            return 1;
        }
        return 0;
    })
    data_baru.map((data)=>{
        makeOption(data)
    })
}

function makeOption(provinsi) {
    const option = document.createElement('option')
    option.innerText = provinsi.province_name;
    option.setAttribute('value', provinsi.province_code)
    select.append(option)
    return select
}

function makeOptionKab(kabupaten) {
    const option = document.createElement('option')
    option.innerText = kabupaten;
    option.setAttribute('value', kabupaten)
    select_kab.append(option)
    return select
}

function result() {
    kab.addEventListener("change", function () {
        const elemet = document.getElementsByClassName("card")
        if(elemet.length != 0){
            for(let i = 0,card ;card = elemet[i];i++)
            elemet[i].remove()
        }
        const value = kab.value;
        const result = data_prov[0].filter((data) => {
            if ( value  == data.city) return data
        })
        result.map((data) => {
            data_postal.push(data)
        })
        
        data_postal.map((data)=>{
            makeResult(data)
        })
        data_postal = []
    })


}

function makeResult(data) {
    const container = document.querySelector(".result");
    const div = document.createElement("div")
    const title = document.createElement("h3")
    const kecamanatan = document.createElement("h3")
    const p = document.createElement("p")
    title.innerText = `Desa : ${data.urban}`
    kecamanatan.innerText = `Kecamatan : ${data.sub_district}`
    p.innerText = `kode pos: ${data.postal_code}`
    div.classList.add("card")
    div.append(kecamanatan,title,p)
    container.append(div)
    return container
}

function form(){
    const cariForm = document.getElementById("form")
    cariForm.addEventListener("submit",function(e){
        e.preventDefault()
        const title = document.getElementsByTagName("p");
        const cari = document.querySelector("#cari")    
        const filter = document.getElementsByClassName("card");
        const value = cari.value;
        for (let i = 0, list; list = title[i]; i++) {
            let text = list.innerHTML;
            if (text.indexOf(value) > -1) {
                filter[i].style.display = "";
            } else if (value.length == 0) {
                console.log("hai");
            } else
                filter[i].style.display = "none";
        }

    })
    
}


Untuk tampilan dapat dilihat di bawah ini :

1. Tampilan Awal


2. Tampilan Memilih Provinsi yang Akan Dicari Kode Posnya

3. Tampilan Memilih Kabupaten yang Akan Dicari Kode Posnya

4. Hasil dari Pencarian Kode Pos Berdasarkan Provinsi dan Kabupaten yang Berisikan Informasi tentang Kecamatan, Desa, serta Kode Posnya

5. Dapat Juga Langsung Dicari Berdasarkan Kode Posnya yang Akan Menampilkan Informasi tentang Kecamatan, Desa, serta Kode Posnya



Rabu, 14 September 2022

Pemrograman Web C | Tugas 3

  Halo teman-teman perkenalkan nama saya Gabriel Solomon Sitanggang dengan NRP 5025201165. Pada pertemuan ketiga, kami ditugaskan untuk membuat Form Login dan Sign Up. Untuk tampilannya seperti dibawah ini :


LOGIN



SIGN UP



Link repository dapat diakses di link berikut.


Rabu, 07 September 2022

Pemrograman Web C | Tugas 2

 Halo teman-teman perkenalkan nama saya Gabriel Solomon Sitanggang dengan NRP 5025201165. Pada pertemuan kedua, kami ditugaskan untuk membuat Portal Berita. Untuk tampilannya seperti dibawah ini :


Link Reprository dapat diakses di link berikut.

Selasa, 06 September 2022

Pemrograman Web C | Tugas 1

 Halo teman-teman perkenalkan nama saya Gabriel Solomon Sitanggang dengan NRP 5025201165. Pada pertemuan pertama, kami ditugaskan untuk membuat CV. Untuk tampilannya seperti dibawah ini :











Untuk link portofolio dapat diakses di link berikut.

Untuk link repository dapat diakses di link berikut

Selasa, 14 Juni 2022

Pemrograman Berbasis Kerangka Kerja A | Tugas 10

MODELS ON CI

Pada artikel ini, saya Gabriel Solomon Sitanggang dengan NRP 5025201165 akan menggunakan MVC pada CI 3. Untuk referensi dapat dilihat di link ini.

Model View Controller (MVC) adalah sebuah pola arsitektur dalam membuat sebuah aplikasi dengan cara memisahkan kode menjadi 3 bagian berikut.

  • Model
Model merupakan bagian yang bertugas dalam menyiapkan, mengatur, memanipulasi, dan mengorganisasikan data yang ada dalam database.

  • View
View merupakan bagian yang bertugas untuk menampilkan informasi dalam bentuk Graphical User Interface (GUI)

  • Controller
Controller merupakan bagian yang bertugas untuk menghubungkan serta mengatur model dan view agar dapat saling terhubung.

Alur dari MVC adalah sebagai berikut
  • Pertama-tama, view akan meminta data untuk ditampilkan dalam bentuk grafis kepada pengguna
  • Permintaan tadi akan diterima oleh controller dan diteruskan ke model untuk diproses
  • Setelah itu, model akan mencari dan mengolah data yang diminta di dalam database
  • Kemudian, model akan mengirim data tersebut kepada controller untuk ditampilkan di view
  • Dan di akhir, controller akan mengambil data hasil pengolahan model dan mengaturnya di bagian view untuk ditampilkan kepada pengguna
 Manfaat MVC adalah sebagai berikut
  • Mempermudah pemeliharaan
  • Perbaikan bug atau error lebih cepat
  • Dapat melakukan testing dengan lebih mudah
  • Penulisan kode menjadi lebih rapi
  • Proses pengembangan aplikasi menjadi lebih efisien
Penerapan CRUD pada CodeIgniter :

















Untuk source code nya dapat di lihat di link berikut.

Pemrograman Berbasis Kerangka Kerja A | Tugas 11

 AUTHENTICATION USING LARAVEL

Pada artikel ini, saya Gabriel Solomon Sitanggang NRP 5025201165

Akan mengimplementasikan framework laravel yaitu membuat form registrasi, login, change password dengan menggunakan fitur CRUD (Create, Read, Update, Delete).


Dokumentasi dari form ini dapat dilihat sebagai berikut
















Source code dari form di atas dapat diakses di link berikut.

Pemrograman Berbasis Kerangka Kerja A | Tugas 9

VIEW DENGAN CODE IGNITER

Pada tugas 9 ini, kita akan menggunakan bootstrap untuk melakukan view admin. Sebelum memulai mengerjakan tugas ini, ada beberapa hal yang perlu dipersiapkan yaitu sebagai berikut
  1. File project Codeigniter
  2. XAMPP
  3. File SB Admin
Link download SB Admin dapat didownload di link berikut : SB Admin
Link download CodeIgniter dapat didownload di link berikut : CodeIgniter
Langkah-langkah yang harus dilakukan menggunakan bootstrap template SB Admin pada Codeigniter sebagai berikut
  1. Konfigurasi Codeigniter
  2. Membuat controller untuk menampilkan view
  3. Simpan file SB Admin pada folder public/assets
  4. Membuat view admin menggunakan template dari file SB Admin
  5. Lakukan link/ref ke file css pada folder public/assets pada view admin yang dibuat
Berikut dokumentasi SB Admin yang telah dibuat


Untuk link source code nya dapat di lihat di link ini.

Pemrograman Berbasis Kerangka Kerja A | Tugas 8

IMPLEMENTASI MVC (MODEL, VIEW, CONTROLLER) MENGGUNAKAN CODE IGNITER

Pada artikel ini, saya akan membuat halaman web yang berisikan profil diri dengan menggunakan CodeIgniter. Sebelumnya, unduh terlebih dahulu Code Igniter pada link berikut :

Code Igniter

Kemudian unduh XAMPP pada link berikut :

XAMPP

Untuk pengimplementasiannya, saya mengikuti tutorial yang ada di web berikut

Tutorial


PEMBUATAN DATA DIRI

  • Masukkan folder Code Igniter yang telah didownload ke dalam xampp/htdocs, lalu rename folder menjadi Tugas8 (penamaan folder bebas)
  • Buka folder Tugas8 menggunakan Visual Studio Code
  • Buka file application/controllers/Welcome.php. Tambahkan route /profile/ didalam controllers welcome dengan method profile dibawah method index seperti kodingan dibawah
 <?php  
 defined('BASEPATH') OR exit('No direct script access allowed');  
 class Welcome extends CI_Controller {  
   /**  
    * Index Page for this controller.  
    *  
    * Maps to the following URL  
    *   http://example.com/index.php/welcome  
    * - or -  
    *   http://example.com/index.php/welcome/index  
    * - or -  
    * Since this controller is set as the default controller in  
    * config/routes.php, it's displayed at http://example.com/  
    *  
    * So any other public methods not prefixed with an underscore will  
    * map to /index.php/welcome/<method_name>  
    * @see https://codeigniter.com/user_guide/general/urls.html  
    */  
   public function index()  
   {  
     // fungsi untuk me-load view welcome_message.php sebagai index  
     $this->load->view('welcome_message');  
   }  
   public function profile()  
   {  
     // fungsi untuk me-load view profile.php  
     $this->load->view('profile');  
   }  
 }  
asdf
  • Buka file application/config/routers.php dan tambahkan kode route untuk profile

 <?php  
 defined('BASEPATH') OR exit('No direct script access allowed');  
 $route['default_controller'] = 'welcome';  
 $route['profile'] = 'welcome/profile';  
 $route['404_override'] = '';  
 $route['translate_uri_dashes'] = FALSE;  
  • Buka file application/views/welcome_message.php dan tambahkan kode program sebagai berikut

 <?php  
 defined('BASEPATH') OR exit('No direct script access allowed');  
 ?><!DOCTYPE html>  
 <html lang="en">  
 <head>  
   <meta charset="utf-8">  
   <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">  
   <title>Gabriel's Bio</title>  
   <style type="text/css">  
   body {  
     margin-top:20px;  
     color: #000;  
     text-align: left;  
     background-color: #e2e8ff;    
   }  
   .card {  
     box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2);  
     max-width: 300px;  
     margin: auto;  
     text-align: center;  
     font-family: arial;  
     background-color:#ffffff;  
   }  
   .title {  
     color: #000000;  
     font-size: 18px;  
   }  
   button {  
     border: none;  
     outline: 0;  
     display: inline-block;  
     padding: 8px;  
     color: white;  
     background-color: #7FCDCD;  
     text-align: center;  
     cursor: pointer;  
     width: 100%;  
     font-size: 18px;  
     color: white;  
   }  
   a {  
     text-decoration: none;  
     font-size: 22px;  
     color: black;  
   }  
   button:hover, a:hover {  
     opacity: 0.7;  
   }  
   </style>  
 </head>  
 <body>  
   <h2 style="text-align:center; font-family:Arial;">User Profile Card - Tugas PBKK A</h2>  
   <div class="card">  
     <img src="https://media-exp1.licdn.com/dms/image/C4E03AQEY7pPDs-HSNA/profile-displayphoto-shrink_200_200/0/1632035278309?e=1660780800&v=beta&t=G2aQAJUf6x7cYCPkHYBcjNEUdCCML8Z75O2GkeVtDEQ" alt="Gabriel" style="width:80%">  
     <h1>Gabriel Solomon Sitanggang</h1>  
     <p class="title">Student at Informatics ITS</p>  
     <p>Institut Teknologi Sepuluh Nopember Surabaya</p>  
     <div style="margin: 24px 0;">  
       <a href="https://www.instagram.com/gabrielstg_/"><i class="fa fa-instagram"></i></a>  
       <a href="https://www.linkedin.com/in/gabriel-solomon-sitanggang-33b63521b/"><i class="fa fa-linkedin"></i></a>   
     </div>  
   </div>  
      <div class="row rofile-sm">  
       <div class="col-md-4">  
        <div class="card">  
         <div class="card-body">  
          <div class="d-flex flex-column align-items-center text-center">  
          </div>  
         </div>  
        </div>  
       </div>  
       <div class="col-md-8">  
        <div class="card mb-3">  
         <div class="card-body">  
          <div class="row">  
           <div class="col-sm-9"><h4 class="mb-0">Tugas PBKK A</h6></div>  
          </div>  
          <hr>  
          <div class="row"><div class="col-sm-3"><h6 class="mb-0">Nama Lengkap:</h6></div><div class="col-sm-9 text-secondary">Gabriel Solomon Sitanggang</div></div><hr>  
          <div class="row"><div class="col-sm-3"><h6 class="mb-0">Tanggal Lahir:</h6></div><div class="col-sm-9 text-secondary">31 Juli 2002</div></div><hr>  
          <div class="row"><div class="col-sm-3"><h6 class="mb-0">Email:</h6></div><div class="col-sm-9 text-secondary">gabrielsitanggang38@gmail.com</div></div><hr>  
          <div class="row"><div class="col-sm-3"><h6 class="mb-0">Nomor Telepon:</h6></div><div class="col-sm-9 text-secondary">082276563699</div></div><hr>  
          <div class="row"><div class="col-sm-3"><h6 class="mb-0">Alamat:</h6></div><div class="col-sm-9 text-secondary">Keputih Utara, Surabaya</div></div>  
         </div>  
        </div>  
         </div>  
        </div>  
       </div>  
      </div>  
     </div>  
 </body>  
 </html>  
asdfasd
Untuk dokumentasi Tugas 8 ini dapat dilihat sebagai berikut :
  • XAMPP


  • Data Diri

Sekian penjelasan tugas 8 saya, mohon maaf jika ada kekurangan. Terima Kasih.

Minggu, 12 Juni 2022

Pemrograman Berbasis Kerangka Kerja A | Tugas 7

MEMBUAT MOBILE APPLICATION MENGGUNAKAN XAMARIN

Untuk pengaplikasian mobile application ini berupa sebuah aplikasi sederhana android yaitu aplikasi Increment dan Decremen



Tampilan aplikasi sederhana android yang saya buat sebagai berikut
Source code nya dapat dilihat sebagai berikut

Main
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.    android:orientation="vertical"
  4.    android:layout_width="match_parent"
  5.    android:layout_height="match_parent">
  6.     <TextView
  7.        android:text="0"
  8.        android:textSize="50sp"
  9.        android:gravity="center"
  10.        android:layout_width="match_parent"
  11.        android:layout_height="wrap_content"
  12.        android:id="@+id/txtNumber"
  13.        android:layout_marginBottom="20dp"
  14.        android:layout_marginTop="20dp" />
  15.     <Button
  16.        android:text="Increment"
  17.        android:layout_width="match_parent"
  18.        android:layout_height="wrap_content"
  19.        android:id="@+id/btnIncrement" />
  20.     <Button
  21.        android:text="Decrement"
  22.        android:layout_width="match_parent"
  23.        android:layout_height="wrap_content"
  24.        android:id="@+id/btnDecrement" />
  25. </LinearLayout>


MainActivity.cs
  1. using Android.App;
  2. using Android.Widget;
  3. using Android.OS;
  4.  
  5. namespace XamarinTut
  6. {
  7. [Activity(Label = "XamarinTut", MainLauncher = true, Icon = "@drawable/icon")]
  8. public class MainActivity : Activity
  9. {
  10. TextView txtNumber;
  11.  
  12. int number;
  13.  
  14. protected override void OnCreate(Bundle bundle)
  15. {
  16. base.OnCreate(bundle);
  17.  
  18. // Set our view from the "main" layout resource
  19. SetContentView (Resource.Layout.Main);
  20.  
  21. txtNumber = FindViewById<TextView>(Resource.Id.txtNumber);
  22.  
  23. FindViewById<Button>(Resource.Id.btnIncrement).Click += (o, e) =>
  24. txtNumber.Text = (++number).ToString();
  25.  
  26. FindViewById<Button>(Resource.Id.btnDecrement).Click += (o, e) =>
  27. txtNumber.Text = (--number).ToString();
  28. }
  29. }
  30. }

Untuk referensi saya menggunakan link youtube berikut


Senin, 06 Juni 2022

Pemrograman Berbasis Kerangka Kerja A | EAS

Gabriel Solomon Sitanggang (5025201165)
Mohammad Fany Faizul Akbar (5025201225)

PERMASALAHAN

Mencari gedung untuk acara pernikahan, rapat atau acara lainnya yang untuk di Jakarta sekarang ini sangat sulit dalam segi waktu dan tempat. Selain itu kendala dalam melakukan pendaftaran atau booking, dimana sering terjadi duplikasi pesanan dalam waktu dan tempat yang sama sehingga terjadi data yang tidak akurat.

SOAL

  1. Konsep dan deskripsi yang mendata gedung yang bisa digunakan untuk acara/ event dan memberikan penawaran kepada Event Organizer. (Mandiri - Waktu pengerjaan hingga hari Selasa 07 Juni 2022 pukul 10.00)
  2. Implementasikan dengan menggunakan Framework sistem informasinya. Framework yang digunakan bisa NET, CI, Laravel, atau Google Apps  (bisa dikerjakan berkelompok maksimal 4)
  3. Hostingkan sistem informasinya, kemudian buat video demo dan presentasi kemudian upload di Youtube
  4. Buat laporan di blog beserta link hosting, dan juga embedded videonya. Waktu pengerjaan hingga hari Sabtu 11 Juni 2022 pukul 12.00

PENYELESAIAN

  1. SOAL 1
KONSEP

Berdasarkan permasalahan, masih sangat sulit untuk mendapatkan gedung untuk acara pernikahan, rapat, atau acara lainnya dalam segi waktu dan tempat. Seringkali dalam proses booking, terjadi duplikasi pemesanan dalam waktu dan tempat yang sama sehingga data tidak akurat. Selain itu, pelanggan harus mendatangi pihak penyedia gedung untuk mencari tema atau konsep yang sesuai dengan keinginan. Apabila tidak sesuai, pelanggan harus mencari penyedia gedung yang lainnya. Permasalahan lain adalah kecocokan harga yang menjadi pilihan pelanggan. Oleh karena itu, sistem berbasis web ini akan menjadi wadah bagi penyedia gedung di Jakarta. Manfaat yang diharapkan adalah memberikan kemudahan antara setiap pihak penyedia gedung dan pelanggan dalam menunjang kebutuhan acara pelanggan menggunakan sistem berbasis web ini, sehingga proses pelayanan akan lebih efektif dan efisien.

ALUR

Terdapat 3 aktor yaitu pelanggan, penyedia gedung, dan admin. Aktivitas yang dilakukan pelanggan dimulai dengan menanyakan penyedia gedung apakah ada gedung yang tersedia, kemudian pihak penyedia gedung memberikan informasi gedung yang tersedia, kemudian pelanggan memperoleh pilihan-pilihan gedung dan paket yang telah disediakan oleh penyedia gedung. Setelah itu pelanggan menentukan pilihan apabila pelanggan tidak melakukan pemilihan maka akan kembali keluar dan apabila pelanggan melakukan pilihan ya maka pelanggan memilih gedung dan paket yang tersedia kemudian melakukan pemesanan dan booking tanggal kemudian melakukan transaksi pembayaran uang muka.

AKTOR

  • PELANGGAN

  1. Mengisi data diri
  2. Melihat gedung, paket, dan harga
  3. Mengisi data diri
  4. Memesan paket lewat sistem berbasis web
  5. Membayar DP
  6. Membayar Tagihan
  • PENYEDIA GEDUNG
  1. Menerima data pemesanan pelanggan
  2. Memeriksa ketersediaan gedung
  3. Membuat dan mengatur jadwal
  4. Menyiapkan gedung yaitu konsep dan tema yang telah dipilih oleh pelanggan
  5. Melakukan transaksi DP
  6. Melakukan transaksi Tagihan
  • Admin
  1. Melakukan verifikasi akun yan baru saja registrasi
  2. Menampilkan data gedung yang telah diberi oleh penyedia gedung
  3. Menerima data pemesanan pelanggan
  4. Memproses pemesanan
  5. Menyediakan struk pembayaran
  6. Memproses pembayaran
  7. Melakukan CRUD pada data gedung
FITUR
  1. Verifikasi semua akun yang melakukan registrasi oleh admin
  2. Login bagi pelanggan, penyedia gedung, dan admin
  3. Menampilkan nama gedung, tema yang tersedia, harga, dll
  4. Melakukan CRUD bagi admin
  5. Dapat melakukan pembayaran (transfer bank, e-wallet)
  6. Menampilkan gedung terdekat menggunakan maps
  7. Pelanggan dapat melakukan pencarian berdasarkan nama gedung
  8. Dapat melakukan filter kategori sesuai keinginan pelanggan

Untuk pengimplementasian sistem berbasis web dapat di lihat di link github berikut.

Untuk video penjelasannya dapat di lihat di link youtube berikut.

Pemrograman Web C | EAS

5025201165 - Gabriel Solomon Sitanggang SOAL Kementrian Kelautan dan Perikanan sedang membutuhkan pegawai baru untuk menjalankan tugas di wi...