Final Project PBKK 2023
Nama : Nadya Zuhria Amana
NRP : 5025211058
Kelas : PBKK A
Referensi Paper : https://jurnal.unived.ac.id/index.php/jmi/article/view/1121
- Buatlah deskribsi studi kasus aplikasi ditinjau dari MVC nya (individu)
Studi kasus yang akan dibahas adalah aplikasi sistem informasi jadwal dokter menggunakan framework CodeIgniter. Aplikasi ini akan dibangun untuk memenuhi kebutuhan masyarakat untuk mendapatkan informasi jadwal dokter secara akurat.Dari Segi MVC, aplikasi ini akan dibagi menjadi tiga komponen utama, yaitu:
- Model: Komponen ini bertanggung jawab untuk mengelola data aplikasi, seperti data dokter, jadwal praktek, dan pasien.
- View: Komponen ini bertanggung jawab untuk menampilkan data aplikasi kepada pengguna.
- Controller: Komponen ini bertanggung jawab untuk menerima input dari pengguna dan mengarahkannya ke komponen model atau view yang sesuai.
Berikut adalah penjelasan dari masing-masing komponen:
- Model
Model bertanggung jawab untuk mengelola data aplikasi. Data tersebut akan disimpan di database. Model akan menyediakan fungsi-fungsi untuk mengakses dan memanipulasi data di database.
Dalam aplikasi sistem informasi jadwal dokter, model akan menyediakan fungsi-fungsi untuk:
Mendapatkan daftar dokter, Mendapatkan jadwal praktek dokter, Menambahkan jadwal praktek dokter, Mengubah jadwal praktek dokter, Menghapus jadwal praktek dokter
- View
View bertanggung jawab untuk menampilkan data aplikasi kepada pengguna. View akan menggunakan bahasa markup, seperti HTML, CSS, dan JavaScript, untuk menampilkan data.
Dalam aplikasi sistem informasi jadwal dokter, view akan menampilkan halaman-halaman berikut:
Halaman beranda, Halaman daftar dokter, Halaman jadwal praktek dokter, Halaman tambah jadwal praktek dokter, Halaman ubah jadwal praktek dokter, dan Halaman hapus jadwal praktek dokter
- Controller
Controller bertanggung jawab untuk menerima input dari pengguna dan mengarahkannya ke komponen model atau view yang sesuai. Controller juga bertanggung jawab untuk menangani logika bisnis aplikasi.
Dalam aplikasi sistem informasi jadwal dokter, controller akan menangani fungsi-fungsi berikut:
Menerima input dari pengguna, Mengarahkan input ke model atau view yang sesuai, Menangani logika bisnis aplikasi
Implementasi Aplikasi
Aplikasi sistem informasi jadwal dokter akan dibangun menggunakan framework CodeIgniter. Framework CodeIgniter akan menyediakan komponen-komponen MVC yang dibutuhkan untuk membangun aplikasi.
Berikut adalah langkah-langkah untuk mengimplementasikan aplikasi sistem informasi jadwal dokter menggunakan framework CodeIgniter:
- Buat proyek baru di CodeIgniter.
- Tambahkan library yang diperlukan, seperti database dan form validation.
- Buat model, view, dan controller sesuai dengan rancangan yang telah dibuat.
- Buat koneksi ke database.
- Implementasikan logika bisnis di controller.
2. Buatlah rancangan umum arsitektur atau fitur yang ada dalam aplikasi (individu)
Arsitektur
- Model: Komponen ini bertanggung jawab untuk mengelola data aplikasi.
- View: Komponen ini bertanggung jawab untuk menampilkan data aplikasi kepada pengguna.
- Controller: Komponen ini bertanggung jawab untuk menerima input dari pengguna dan mengarahkannya ke komponen model atau view yang sesuai.
- Halaman beranda
- Halaman daftar dokter
Halaman daftar dokter akan menampilkan informasi detail tentang suatu dokter, seperti nama, spesialisasi, alamat, dan jadwal praktek.
- Halaman jadwal praktek dokter
Halaman jadwal praktek dokter akan menampilkan jadwal praktek suatu dokter. Jadwal praktek akan diurutkan berdasarkan tanggal dan waktu.
- Halaman tambah jadwal praktek dokter
Halaman tambah jadwal praktek dokter akan digunakan untuk menambahkan jadwal praktek dokter baru. Pengguna harus mengisi form dengan informasi jadwal praktek yang diinginkan.
- Halaman ubah jadwal praktek dokter
Halaman ubah jadwal praktek dokter akan digunakan untuk mengubah jadwal praktek dokter yang sudah ada. Pengguna harus mengisi form dengan informasi jadwal praktek yang baru.
- Halaman hapus jadwal praktek dokter
Halaman hapus jadwal praktek dokter akan digunakan untuk menghapus jadwal praktek dokter. Pengguna harus memilih jadwal praktek yang ingin dihapus.
3. Rancang desain databasenya (individu)
Rancangan Desain Database
Tabel dokter
Tabel dokter akan menyimpan informasi tentang dokter, seperti nama, spesialisasi, alamat, dan nomor telepon.
Kolom | Tipe Data | Keterangan |
---|---|---|
id_dokter | int | Primary key |
nama_dokter | varchar(255) | Nama dokter |
spesialisasi | varchar(255) | Spesialisasi dokter |
alamat | varchar(255) | Alamat dokter |
nomor_telepon | varchar(255) | Nomor telepon dokter |
Tabel jadwal_praktek
Tabel jadwal_praktek akan menyimpan informasi tentang jadwal praktek dokter, seperti tanggal, waktu, dan ketersediaan.
Kolom | Tipe Data | Keterangan |
---|---|---|
id_jadwal_praktek | int | Primary key |
id_dokter | int | Foreign key ke tabel dokter |
tanggal | date | Tanggal jadwal praktek |
waktu | time | Waktu jadwal praktek |
tersedia | boolean | Ketersediaan jadwal praktek |
Tabel berita
Tabel berita akan menyimpan informasi tentang berita yang diterbitkan oleh sistem informasi.
Kolom | Tipe Data | Keterangan |
---|---|---|
id_berita | int | Primary key |
judul_berita | varchar(255) | Judul berita |
isi_berita | text | Isi berita |
tanggal_terbit | date | Tanggal terbit berita |
penulis | varchar(255) | Penulis berita |
Tabel artikel
Tabel artikel akan menyimpan informasi tentang artikel yang diterbitkan oleh sistem informasi.
Kolom | Tipe Data | Keterangan |
---|---|---|
id_artikel | int | Primary key |
judul_artikel | varchar(255) | Judul artikel |
isi_artikel | text | Isi artikel |
tanggal_terbit | date | Tanggal terbit artikel |
penulis | varchar(255) | Penulis artikel |
Tabel admin
Tabel admin akan menyimpan informasi tentang admin sistem informasi.
Kolom | Tipe Data | Keterangan |
---|---|---|
id_admin | int | Primary key |
nama_admin | varchar(255) | Nama admin |
username | varchar(255) | Username admin |
password | varchar(255) | Password admin |
level_akses | int | Level akses admin |
Implementasi
Desain database ini dapat diimplementasikan menggunakan berbagai jenis database, seperti MySQL, PostgreSQL, atau Oracle. Untuk implementasi menggunakan MySQL, berikut adalah perintah untuk membuat tabel-tabel yang dibutuhkan:
CREATE TABLE jadwal (
id_jadwal INT NOT NULL AUTO_INCREMENT,
id_dokter INT NOT NULL,
tanggal DATE NOT NULL,
waktu TIME NOT NULL,
tersedia BOOLEAN NOT NULL,
PRIMARY KEY (id_jadwal),
FOREIGN KEY (id_dokter) REFERENCES dokter (id_dokter)
);
CREATE TABLE berita (
id_berita INT NOT NULL AUTO_INCREMENT,
judul_berita VARCHAR(255) NOT NULL,
isi_berita TEXT NOT NULL,
tanggal_terbit DATE NOT NULL,
penulis VARCHAR(255) NOT NULL,
PRIMARY KEY (id_berita)
);
CREATE TABLE artikel (
id_artikel INT NOT NULL AUTO_INCREMENT,
judul_artikel VARCHAR(255) NOT NULL,
isi_artikel TEXT NOT NULL,
tanggal_terbit DATE NOT NULL,
penulis VARCHAR(255) NOT NULL,
PRIMARY KEY (id_artikel)
);
CREATE TABLE admin (
id_admin INT NOT NULL AUTO_INCREMENT,
nama_admin VARCHAR(255) NOT NULL,
username VARCHAR(255) NOT NULL,
password VARCHAR(255) NOT NULL,
level_akses INT NOT NULL,
PRIMARY KEY (id_admin)
);
3. Buat desain front end (individu)
4. Tentukan Control yang akan mengandle logika back end.
Pada sistem informasi jadwal dokter, controller yang akan menangani logika back end adalah sebagai berikut:
- AuthController
Controller ini bertanggung jawab untuk menangani proses autentikasi dan otorisasi user.
- JadwalDokterController
Controller ini bertanggung jawab untuk menangani proses CRUD jadwal dokter.
- BeritaController
Controller ini bertanggung jawab untuk menangani proses CRUD berita.
- ArtikelController
Controller ini bertanggung jawab untuk menangani proses CRUD artikel.
Berikut adalah contoh kode untuk controller AuthController:
class AuthController
{
public function login()
{
// Cek username dan password
$username = $_POST['username'];
$password = $_POST['password'];
$user = User::where('username', $username)->first();
if ($user && $user->password === $password) {
// Login berhasil
$token = $user->createToken();
return response()->json([
'token' => $token,
]);
} else {
// Login gagal
return response()->json([
'error' => 'Username atau password salah',
], 401);
}
}
public function logout()
{
// Logout user
Auth::user()->token()->revoke();
// Redirect ke halaman login
return redirect('/login');
}
}
Kode tersebut akan menangani proses login user. Pertama, controller akan memeriksa apakah username dan password yang dikirimkan oleh user valid. Jika valid, maka controller akan membuat token untuk user tersebut. Token tersebut kemudian akan dikembalikan ke user dalam bentuk JSON.
Selain controller, logic back end juga dapat ditangani oleh service. Service adalah class yang menyediakan fungsi-fungsi yang dapat digunakan oleh controller.
Pada sistem informasi jadwal dokter, service yang dapat digunakan adalah sebagai berikut:
- JadwalDokterService
Service ini menyediakan fungsi-fungsi untuk mengelola jadwal dokter, seperti membuat, memperbarui, menghapus, dan mencari jadwal dokter.
- BeritaService
Service ini menyediakan fungsi-fungsi untuk mengelola berita, seperti membuat, memperbarui, menghapus, dan mencari berita.
- ArtikelService
Service ini menyediakan fungsi-fungsi untuk mengelola artikel, seperti membuat, memperbarui, menghapus, dan mencari artikel.
Berikut adalah contoh kode untuk JadwalDokterService:
class JadwalDokterService
{
public function create(array $data)
{
// Buat jadwal dokter baru
$jadwal_dokter = new JadwalDokter();
$jadwal_dokter->fill($data);
$jadwal_dokter->save();
// Kembalikan jadwal dokter yang baru dibuat
return $jadwal_dokter;
}
public function update(int $id, array $data)
{
// Cari jadwal dokter
$jadwal_dokter = JadwalDokter::find($id);
// Perbarui jadwal dokter
$jadwal_dokter->fill($data);
$jadwal_dokter->save();
// Kembalikan jadwal dokter yang telah diperbarui
return $jadwal_dokter;
}
public function delete(int $id)
{
// Cari jadwal dokter
$jadwal_dokter = JadwalDokter::find($id);
// Hapus jadwal dokter
$jadwal_dokter->delete();
}
public function search(array $filters)
{
// Buat query
$query = JadwalDokter::query();
// Terapkan filter
foreach ($filters as $key => $value) {
if ($value !== null) {
$query->where($key, $value);
}
}
// Kembalikan hasil pencarian
return $query->get();
}
}
Kode tersebut akan menyediakan fungsi-fungsi untuk membuat, memperbarui, menghapus, dan mencari jadwal dokter.
5. Implementasikan rancangan yang sudah dibuat menggunakan Framework NET, CI ataupun Framework Google (pilih salah satu - bisa kelompok maks 3)
6. Buat video presentasinya, upload di youtube, dan didokumentasikan di blog.
Pengumpulan terakhir 16 Des 2023 pukul 08.00 , di dokumentasi di blog masing-masing, dan mengisi lembar monitoring dengan judul "Final Project Pemrograman Berbasis Kerangka Kerja". Tidak lupa membuat koment link pekerjaan di halaman post ini.Link Referensi
Soal : https://fajarbaskoro.blogspot.com/2023/12/final-project-pbkk-2023-kelas-dan-b.html