apriantoa917 /
php-UAS_SPK-SiDeDi
Repository ini berisi project UAS Sistem Pendukung Keputusan (SPK) untuk mengklasifikasi penyakit diabetes menggunakan metode NBC
51/100 healthLoading repository data…
deazhraa / repository
Repository ini berisi laporan jawaban UAS Basis Data mengenai rancangan database, dokumentasi ERD, serta aplikasi CRUD berbasis Python dan PHP.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
Nama: Ella Dea Azahra
NIM: 25091397098
Program Studi: D-4 Manajemen Informatika
Universitas Negeri Surabaya
Topik Sistem Informasi Rental Mobil dipilih karena memiliki kompleksitas relasi data Many-to-Many yang sangat ideal untuk mendemonstrasikan tahapan normalisasi, sekaligus relevan untuk menguji keandalan satu basis data terpusat ketika diintegrasikan secara real-time lintas platform menggunakan Python dan PHP.
Admin mengelola data armada mobil (input, update, status ketersediaan) dan melakukan registrasi data pelanggan baru sebelum mereka dapat menyewa.
Pelanggan memilih mobil yang tersedia. Admin mencatat transaksi penyewaan yang meliputi tanggal sewa, tanggal kembali, dan total biaya. Status mobil berubah menjadi Disewa.
Pelanggan mengembalikan mobil. Admin mengecek tanggal pengembalian. Jika terlambat, sistem otomatis menghitung denda. Admin menerima pembayaran dan status mobil kembali menjadi Tersedia.
Satu pelanggan dapat melakukan banyak transaksi penyewaan secara bergantian, namun satu transaksi sewa hanya tercatat untuk satu pelanggan.
Satu mobil dapat disewa berkali-kali dalam transaksi yang berbeda, namun satu transaksi sewa spesifik hanya melibatkan satu mobil.
Data struk sewa masih menyatu dalam satu tabel besar yang redundan (misalnya nama pelanggan dan merk mobil ditulis berulang-ulang setiap ada transaksi baru).
Pada tahap 1NF, semua atribut harus bernilai atomik (tidak ada grup berulang atau atribut bernilai ganda dalam satu kolom).
| Kolom/Atribut | Tipe Data | Keterangan |
|---|---|---|
| id_pelanggan | INT | Primary Key (Sementara) |
| nama | VARCHAR(100) | Data Pelanggan |
| no_telp | VARCHAR(15) | Data Pelanggan |
| alamat | TEXT | Data Pelanggan |
| id_mobil | INT | Primary Key (Sementara) |
| merk | VARCHAR(50) | Data Mobil |
| plat_nomor | VARCHAR(15) | Data Mobil |
| harga_sewa | INT | Data Mobil |
| status | ENUM | Status Ketersediaan Mobil |
| tgl_sewa | DATE | Data Transaksi |
| tgl_kembali_rencana | DATE | Data Transaksi |
| tgl_realisasi_kembali | DATE | Data Transaksi |
| total_bayar | INT | Data Transaksi |
| denda | INT | Data Transaksi |
| Nama Kolom | Tipe Data | Key | Keterangan |
|---|---|---|---|
| id_pelanggan | INT | PK | ID Unik Pelanggan |
| nama | VARCHAR(100) | - | Nama Lengkap |
| no_telp | VARCHAR(15) | - | Nomor Telepon |
| alamat | TEXT | - | Alamat Rumah |
| Nama Kolom | Tipe Data | Key | Keterangan |
|---|---|---|---|
| id_mobil | INT | PK | ID Unik Mobil |
| merk | VARCHAR(50) | - | Merk/Tipe Mobil |
| plat_nomor | VARCHAR(15) | UNIQUE | Nomor Polisi Kendaraan |
| harga_sewa | INT | - | Tarif Sewa per Hari |
| status | ENUM | - | Tersedia atau Disewa |
| Nama Kolom | Tipe Data | Key | Keterangan |
|---|---|---|---|
| id_sewa | INT | PK | ID Transaksi |
| id_pelanggan | INT | FK | Relasi ke pelanggan |
| id_mobil | INT | FK | Relasi ke mobil |
| tgl_sewa | DATE | - | Tanggal Mulai Sewa |
| tgl_kembali_rencana | DATE | - | Batas Pengembalian |
| tgl_realisasi_kembali | DATE | - | Tanggal Mobil Dikembalikan |
| total_bayar | INT | - | Total Tarif |
| denda | INT | - | Denda Keterlambatan |
Pada tahap 3NF, ketergantungan transitif dihilangkan sehingga atribut turunan tidak disimpan secara langsung.
| Nama Kolom | Tipe Data | Key | Keterangan |
|---|---|---|---|
| id_sewa | INT | PK | Auto Increment |
| id_pelanggan | INT | FK | Relasi ke pelanggan |
| id_mobil | INT | FK | Relasi ke mobil |
| tgl_sewa | DATE | - | Tanggal Mobil Keluar |
| tgl_kembali_rencana | DATE | - | Batas Pengembalian |
| tgl_realisasi_kembali | DATE | - | Tanggal Realisasi Pengembalian |
Catatan Implementasi
Secara teori pada tahap Third Normal Form (3NF), atribut
total_bayardandendamerupakan atribut turunan (derived attributes) karena nilainya dapat dihitung dari data transaksi dan tarif sewa. Namun pada implementasi MySQL, kedua atribut tersebut tetap disimpan dalam tabelsewauntuk mempermudah proses transaksi, pelaporan, dan mempercepat pengambilan data tanpa harus melakukan perhitungan ulang setiap saat.
CREATE DATABASE uas_rental_mobil;
USE uas_rental_mobil;
-- Tabel Pelanggan
CREATE TABLE pelanggan (
id_pelanggan INT AUTO_INCREMENT PRIMARY KEY,
nama VARCHAR(100) NOT NULL,
no_telp VARCHAR(15) NOT NULL,
alamat TEXT
);
-- Tabel Mobil
CREATE TABLE mobil (
id_mobil INT AUTO_INCREMENT PRIMARY KEY,
merk VARCHAR(50) NOT NULL,
plat_nomor VARCHAR(15) UNIQUE NOT NULL,
harga_sewa INT NOT NULL,
status ENUM('Tersedia', 'Disewa') DEFAULT 'Tersedia'
);
-- Tabel Sewa (Transaksi)
CREATE TABLE sewa (
id_sewa INT AUTO_INCREMENT PRIMARY KEY,
id_pelanggan INT,
id_mobil INT,
tgl_sewa DATE NOT NULL,
tgl_kembali_rencana DATE NOT NULL,
tgl_realisasi_kembali DATE NULL,
total_bayar INT DEFAULT 0,
denda INT DEFAULT 0,
FOREIGN KEY (id_pelanggan) REFERENCES pelanggan(id_pelanggan) ON DELETE CASCADE,
FOREIGN KEY (id_mobil) REFERENCES mobil(id_mobil) ON DELETE CASCADE
);
-- Insert Pelanggan
INSERT INTO pelanggan (nama, no_telp, alamat) VALUES
('Budi Santoso', '08123456789', 'Jl. Merdeka No. 10'),
('Siti Aminah', '08571234567', 'Jl. Sudirman No. 5');
-- Insert Mobil
INSERT INTO mobil (merk, plat_nomor, harga_sewa, status) VALUES
('Toyota Avanza', 'B 1234 ABC', 350000, 'Tersedia'),
('Honda Jazz', 'B 5678 DEF', 400000, 'Tersedia');
-- Insert Transaksi Sewa
INSERT INTO sewa (id_pelanggan, id_mobil, tgl_sewa, tgl_kembali_rencana) VALUES
(1, 1, '2026-06-01', '2026-06-03');
-- Mengubah nomor telepon pelanggan
UPDATE pelanggan SET no_telp = '08111111111' WHERE id_pelanggan = 1;
-- Mengubah status mobil saat disewa
UPDATE mobil SET status = 'Disewa' WHERE id_mobil = 1;
-- Menghapus data pelanggan dengan ID 3
DELETE FROM pelanggan WHERE id_pelanggan = 3;
Perintah hapus data di atas hanya menghapus data pelanggan nomor 3.
mysql-connector.crud_pelanggan.py.import mysql.connector
def get_connection():
return mysql.connector.connect(
host="localhost",
user="root",
password="",
database="uas_rental_mobil"
)
# ==================== CRUD TABEL PELANGGAN ====================
def create_pelanggan(nama, no_telp, alamat):
db = get_connection()
cursor = db.cursor()
cursor.execute("INSERT INTO pelanggan (nama, no_telp, alamat) VALUES (%s, %s, %s)", (nama, no_telp, alamat))
db.commit()
print("\n[SUKSES] Pelanggan berhasil ditambahkan!")
db.close()
def read_pelanggan():
db = get_connection()
cursor = db.cursor()
cursor.execute("SELECT * FROM pelanggan")
print("\n=== DATA PELANGGAN ===")
for row in cursor.fetchall():
print(f"ID: {row[0]} | Nama: {row[1]} | Telp: {row[2]} | Alamat: {row[3]}")
db.close()
def update_pelanggan(id_p, nama, no_telp, alamat):
db = get_connection()
cursor = db.cursor()
cursor.execute("UPDATE pelanggan SET nama=%s, no_telp=%s, alamat=%s WHERE id_pelanggan=%s", (nama, no_telp, alamat, id_p))
db.commit()
print("\n[SUKSES] Data pelanggan berhasil diubah!")
db.close()
def delete_pelanggan(id_p):
db = get_connection()
cursor = db.cursor()
cursor.execute("DELETE FROM pelanggan WHERE id_pelanggan=%s", (id_p,))
db.commit()
print("\n[SUKSES] Pelanggan berhasil dihapus!")
db.close()
# ==================== CRUD TABEL MOBIL ====================
def create_mobil(merk, plat, harga):
db = get_connection()
cursor = db.cursor()
cursor.execute("INSERT INTO mobil (merk, plat_nomor, harga_sewa) VALUES (%s, %s, %s)", (merk, plat, harga))
db.commit()
print("\n[SUKSES] Mobil berhasil ditambahkan!")
db.close()
def read_mobil():
db = get_connection()
cursor = db.cursor()
cursor.execute("SELECT * FROM mobil")
print("\n=== DATA MOBIL ===")
for row in cursor.fetchall():
print(f"ID: {row[0]} | Merk: {row[1]} | Plat: {row[2]} | Harga: Rp {row[3]:,} | Status: {row[4]}")
db.close()
def update_mobil(id_m, harga_baru):
db = get_connection()
cursor = db.cursor()
cursor.execute("UPDATE mobil SET harga_sewa=%s WHERE id_mobil=%s", (harga_baru, id_m))
db.commit()
print("\n[SUKSES] Harga mobil berhasil diubah!")
db.close()
def delete_mobil(id_m):
db = get_connection()
cursor = db.cursor()
cursor.execute("DELETE FROM mobil WHERE id_mobil=%s", (id_m,))
db.commit()
print("\n[SUKSES] Mobil berhasil dihapus!")
db.close()
# ==================== MENU UTAMA INTERAKTIF ====================
if __name__ == "__main__":
while True:
print("\n====================================")
print(" APLIKASI CRUD RENTAL MOBIL UAS ")
print("====================================")
print("1. Tampilkan Semua Data (Pelanggan & Mobil)")
print("2. Tambah Pelanggan Baru")
print("3. Ubah Data Pelanggan")
print("4. Hapus Pelanggan")
print("5. Tambah Mobil Baru")
print("6. Ubah Harg
Selected from shared topics, language and repository description—not editorial ratings.
apriantoa917 /
Repository ini berisi project UAS Sistem Pendukung Keputusan (SPK) untuk mengklasifikasi penyakit diabetes menggunakan metode NBC
51/100 healthwaisalqorni09 /
Repository ini berisi berbagai macam versi php
61/100 healthbayunuranto14 /
Repository ini berisi mengenai CRUD (Cread, Read, Update, Delete) menggunakan PHP + Mysql
/100 healthsatriabimantara /
Repository ini berisi projek tugas akhir untuk mata kuliah Metode Penalaran (Reasoning Method). Projek yang dibuat berjudul "Case Based Reasoning (CBR) Untuk Estimasi Tingkat Obesitas Menggunakan Metode Indexing K-Means". Penalaran CBR digunakan untuk menemukan solusi dari kasus baru berdasarkan sekumpulan kasus-kasus lama sebelumnya yang pernah terjadi. Pengukuran kesamaan masalah antar kasus menggunakan Euclidean Distance Similarity. K-Means digunakan untuk mengindeks kasus sehingga pengukuran similarity kasus hanya dicari dari kluster yang relevan saja dan tidak melibatkan semua kasus yang banyak. Aplikasi ini dikembangkan berbasis website dengan menggunakan bahasa pemrograman PHP Native, JS, CSS (Framework Bootrstrap), HTML5, serta MySQL.
28/100 healthwaisalqorni09 /
Repository ini berisi kode setting atau konfigurasi apache agar dapat membuka project web di berbagai versi php
37/100 healthbhimasty /
Repository ini berisi kode PHP dasar. Sumbernya dari YouTube channel Web Programming Unpas
27/100 health