Tugas Individu : Belajar Membuat Kalkulator Hitungan Menggunakan Pilihan " Case " di PHP

 Tugas Individu Kelas X PPLG1-2
 Belajar Membuat Kalkulator Hitungan Menggunakan Pilihan " Case " di PHP

Silahkan Buat dan ikuti Program kalkulator_fisika_mtk.php di bawah ini !

>> Fitur Utama
- Menu pilihan untuk 4 jenis perhitungan
​- Input otomatis berubah sesuai pilihan
​- Validasi nilai (tidak boleh kurang dari atau sama dengan 0)
​- Tampilan hasil yang jelas (dengan warna berbeda untuk error)
​- Responsif untuk perangkat mobile
​- Tampilan bersih dan mudah dipahami

>> Hasil Program

Tampilan Jika di input angka NOL ( 0 )
 
>> Program:
kalkulator_fisika_mtk.php

>> coding program :
<?php
// Inisialisasi variabel hasil
$hasil = '';
$jenis_perhitungan = '';

// Proses perhitungan jika form disubmit
if (isset($_POST['hitung'])) {
    $jenis_perhitungan = $_POST['jenis_perhitungan'];
    
    switch ($jenis_perhitungan) {
        // Luas Segitiga (L = 1/2 × alas × tinggi)
        case 'luas_segitiga':
            $alas = $_POST['alas'] ?? 0;
            $tinggi = $_POST['tinggi'] ?? 0;
            if ($alas > 0 && $tinggi > 0) {
                $luas = 0.5 * $alas * $tinggi;
                $hasil = "Luas Segitiga = 1/2 × $alas × $tinggi = $luas satuan luas";
            } else {
                $hasil = "Error: Nilai alas dan tinggi harus lebih besar dari 0!";
            }
            break;
        
        // Luas Persegi Panjang (L = panjang × lebar)
        case 'luas_persegi_panjang':
            $panjang = $_POST['panjang'] ?? 0;
            $lebar = $_POST['lebar'] ?? 0;
            if ($panjang > 0 && $lebar > 0) {
                $luas = $panjang * $lebar;
                $hasil = "Luas Persegi Panjang = $panjang × $lebar = $luas satuan luas";
            } else {
                $hasil = "Error: Nilai panjang dan lebar harus lebih besar dari 0!";
            }
            break;
        
        // Kecepatan (v = jarak / waktu)
        case 'kecepatan':
            $jarak = $_POST['jarak'] ?? 0;
            $waktu = $_POST['waktu'] ?? 0;
            if ($jarak > 0 && $waktu > 0) {
                $kecepatan = $jarak / $waktu;
                $hasil = "Kecepatan = $jarak / $waktu = $kecepatan satuan kecepatan (misal: m/s atau km/jam)";
            } else {
                $hasil = "Error: Nilai jarak dan waktu harus lebih besar dari 0!";
            }
            break;
        
        // Tegangan Listrik (V = arus × hambatan)
        case 'tegangan_listrik':
            $arus = $_POST['arus'] ?? 0;
            $hambatan = $_POST['hambatan'] ?? 0;
            if ($arus > 0 && $hambatan > 0) {
                $tegangan = $arus * $hambatan;
                $hasil = "Tegangan Listrik = $arus × $hambatan = $tegangan Volt";
            } else {
                $hasil = "Error: Nilai arus dan hambatan harus lebih besar dari 0!";
            }
            break;
        
        default:
            $hasil = "Pilih jenis perhitungan terlebih dahulu!";
            break;
    }
}
?>

<!DOCTYPE html>
<html lang="id">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Kalkulator Matematika & Fisika</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
            font-family: Arial, sans-serif;
        }

        body {
            background-color: #f0f4f8;
            padding: 20px;
        }

        .container {
            max-width: 600px;
            margin: 30px auto;
            background: white;
            padding: 30px;
            border-radius: 10px;
            box-shadow: 0 2px 15px rgba(0,0,0,0.1);
        }

        h1 {
            color: #2d3748;
            text-align: center;
            margin-bottom: 25px;
            border-bottom: 2px solid #3182ce;
            padding-bottom: 10px;
        }

        .form-group {
            margin-bottom: 15px;
        }

        label {
            display: block;
            margin-bottom: 5px;
            font-weight: bold;
            color: #4a5568;
        }

        select, input[type="number"] {
            width: 100%;
            padding: 10px;
            border: 1px solid #cbd5e0;
            border-radius: 5px;
            font-size: 16px;
        }

        button {
            background-color: #3182ce;
            color: white;
            border: none;
            padding: 12px 20px;
            border-radius: 5px;
            font-size: 16px;
            cursor: pointer;
            width: 100%;
            margin-top: 10px;
        }

        button:hover {
            background-color: #2b6cb0;
        }

        .input-section {
            margin: 20px 0;
            padding: 15px;
            border: 1px dashed #3182ce;
            border-radius: 5px;
            display: <?= $jenis_perhitungan ? 'block' : 'none' ?>;
        }

        .hasil {
            margin-top: 20px;
            padding: 15px;
            border-radius: 5px;
            background-color: #e2e8f0;
            font-size: 18px;
            font-weight: bold;
            text-align: center;
            color: #2d3748;
        }

        .error {
            background-color: #fed7d7;
            color: #c53030;
        }
    </style>
    <script>
        // Tampilkan input sesuai pilihan perhitungan
        function tampilkanInput() {
            const pilihan = document.getElementById('jenis_perhitungan').value;
            const inputSection = document.querySelector('.input-section');
            
            // Kosongkan input sebelumnya
            inputSection.innerHTML = '';
            
            if (pilihan) {
                inputSection.style.display = 'block';
                
                switch (pilihan) {
                    case 'luas_segitiga':
                        inputSection.innerHTML = `
                            <div class="form-group">
                                <label>Alas Segitiga:</label>
                                <input type="number" name="alas" step="any" required>
                            </div>
                            <div class="form-group">
                                <label>Tinggi Segitiga:</label>
                                <input type="number" name="tinggi" step="any" required>
                            </div>
                        `;
                        break;
                    case 'luas_persegi_panjang':
                        inputSection.innerHTML = `
                            <div class="form-group">
                                <label>Panjang:</label>
                                <input type="number" name="panjang" step="any" required>
                            </div>
                            <div class="form-group">
                                <label>Lebar:</label>
                                <input type="number" name="lebar" step="any" required>
                            </div>
                        `;
                        break;
                    case 'kecepatan':
                        inputSection.innerHTML = `
                            <div class="form-group">
                                <label>Jarak:</label>
                                <input type="number" name="jarak" step="any" required>
                            </div>
                            <div class="form-group">
                                <label>Waktu:</label>
                                <input type="number" name="waktu" step="any" required>
                            </div>
                        `;
                        break;
                    case 'tegangan_listrik':
                        inputSection.innerHTML = `
                            <div class="form-group">
                                <label>Arus Listrik (Ampere):</label>
                                <input type="number" name="arus" step="any" required>
                            </div>
                            <div class="form-group">
                                <label>Hambatan (Ohm):</label>
                                <input type="number" name="hambatan" step="any" required>
                            </div>
                        `;
                        break;
                }
            } else {
                inputSection.style.display = 'none';
            }
        }
    </script>
</head>
<body>
    <div class="container">
        <h1>Kalkulator Matematika & Fisika</h1>
        
        <form method="POST" onsubmit="return true">
            <div class="form-group">
                <label>Pilih Jenis Perhitungan:</label>
                <select id="jenis_perhitungan" name="jenis_perhitungan" onchange="tampilkanInput()" required>
                    <option value="">-- Pilih Opsi --</option>
                    <option value="luas_segitiga" <?= $jenis_perhitungan == 'luas_segitiga' ? 'selected' : '' ?>>Luas Segitiga</option>
                    <option value="luas_persegi_panjang" <?= $jenis_perhitungan == 'luas_persegi_panjang' ? 'selected' : '' ?>>Luas Persegi Panjang</option>
                    <option value="kecepatan" <?= $jenis_perhitungan == 'kecepatan' ? 'selected' : '' ?>>Kecepatan</option>
                    <option value="tegangan_listrik" <?= $jenis_perhitungan == 'tegangan_listrik' ? 'selected' : '' ?>>Tegangan Listrik</option>
                </select>
            </div>
            
            <!-- Bagian Input yang Berubah Sesuai Pilihan -->
            <div class="input-section">
                <?php
                // Tampilkan input jika sudah ada pilihan sebelumnya
                if ($jenis_perhitungan) {
                    switch ($jenis_perhitungan) {
                        case 'luas_segitiga':
                            echo '<div class="form-group"><label>Alas Segitiga:</label><input type="number" name="alas" step="any" value="' . ($_POST['alas'] ?? '') . '" required></div>';
                            echo '<div class="form-group"><label>Tinggi Segitiga:</label><input type="number" name="tinggi" step="any" value="' . ($_POST['tinggi'] ?? '') . '" required></div>';
                            break;
                        case 'luas_persegi_panjang':
                            echo '<div class="form-group"><label>Panjang:</label><input type="number" name="panjang" step="any" value="' . ($_POST['panjang'] ?? '') . '" required></div>';
                            echo '<div class="form-group"><label>Lebar:</label><input type="number" name="lebar" step="any" value="' . ($_POST['lebar'] ?? '') . '" required></div>';
                            break;
                        case 'kecepatan':
                            echo '<div class="form-group"><label>Jarak:</label><input type="number" name="jarak" step="any" value="' . ($_POST['jarak'] ?? '') . '" required></div>';
                            echo '<div class="form-group"><label>Waktu:</label><input type="number" name="waktu" step="any" value="' . ($_POST['waktu'] ?? '') . '" required></div>';
                            break;
                        case 'tegangan_listrik':
                            echo '<div class="form-group"><label>Arus Listrik (Ampere):</label><input type="number" name="arus" step="any" value="' . ($_POST['arus'] ?? '') . '" required></div>';
                            echo '<div class="form-group"><label>Hambatan (Ohm):</label><input type="number" name="hambatan" step="any" value="' . ($_POST['hambatan'] ?? '') . '" required></div>';
                            break;
                    }
                }
                ?>
            </div>
            
            <button type="submit" name="hitung">Hitung</button>
        </form>
        
        <!-- Tampilkan Hasil Perhitungan -->
        <?php if ($hasil) : ?>
            <div class="hasil <?= strpos($hasil, 'Error') !== false ? 'error' : '' ?>">
                <?= $hasil ?>
            </div>
        <?php endif; ?>
    </div>
</body>
</html>

>> Eksplorasi
- Silahkan ditambahkan Menu pilihannya (---Pilih Opsi---), yang semula 4 Jenis Perhitungan menjadi 8 Jenis Perhitungan Menu Pilihan, dengan ketentuan mencari Jenis Perhitungannya, bebas (misal : luas lingkaran atau yang lainnya).
- Bubuhkan nama sendiri pada tampilan teks berjalan warna merah dibagian footer.
SELAMAT MENGERJAKAN DAN TETAP SEMANGAT !!






Komentar

Postingan populer dari blog ini

Tugas Membuat, Menelusuri dan memperbaiki BUG (Implementasi QA : "Quality Assurance")

Tugas Kelas X PPLG1 dan X PPLG2