Untitled

 avatar
unknown
c_cpp
5 months ago
4.2 kB
4
Indexable
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;

// Fungsi Judul
void JUDUL() {
    cout << "----------------------------------------------------------------------------------------------------------------\n";
    cout << "PROGRAM TIKET KERETA\n";
    cout << "----------------------------------------------------------------------------------------------------------------\n";
    cout << " Kelas\t\t| AG(Argo Bromo) | AL(Argo Lawu) | PH(Argo Wilis) |\n";
    cout << "----------------------------------------------------------------------------------------------------------------\n";
    cout << "| 1-Executive\t| 500.000\t | 475.000\t | 450.000\t  |\n";
    cout << "| 2-Bisnis\t| 480.000\t | 455.000\t | 430.000\t  |\n";
    cout << "| 3-Ekonomi\t| 460.000\t | 435.000\t | 410.000\t  |\n";
    cout << "----------------------------------------------------------------------------------------------------------------\n";
    cout << "Ketentuan Discount: \n";
    cout << "Apabila pembelian tiket diatas 10 maka diskon 10% dari Total\n";
    cout << "Apabila pembelian tiket diatas 5 maka diskon 5% dari Total\n";
    cout << "----------------------------------------------------------------------------------------------------------------\n";
}

// Fungsi Cek Harga
float CEK_HARGA(const string& kodeKereta, int kodeKelas) {
    if (kodeKereta == "AG" || kodeKereta == "ag") {
        switch (kodeKelas) {
            case 1: return 500000;
            case 2: return 480000;
            case 3: return 460000;
        }
    } else if (kodeKereta == "AL" || kodeKereta == "al") {
        switch (kodeKelas) {
            case 1: return 475000;
            case 2: return 455000;
            case 3: return 435000;
        }
    } else if (kodeKereta == "PH" || kodeKereta == "ph") {
        switch (kodeKelas) {
            case 1: return 450000;
            case 2: return 430000;
            case 3: return 410000;
        }
    }
    return 0.0; // Jika kodeKereta atau kodeKelas tidak valid
}

// Fungsi Cek Nama Kereta
string CEK_NAMA_KERETA(const string& kodeKereta) {
    if (kodeKereta == "AG" || kodeKereta == "ag") return "Argo Bromo";
    if (kodeKereta == "AL" || kodeKereta == "al") return "Argo Lawu";
    if (kodeKereta == "PH" || kodeKereta == "ph") return "Argo Wilis";
    return "Kode kereta tidak valid";
}

// Fungsi Cek Nama Kelas
string CEK_NAMA_KELAS(int kodeKelas) {
    switch (kodeKelas) {
        case 1: return "Executive";
        case 2: return "Bisnis";
        case 3: return "Ekonomi";
        default: return "Kode kelas tidak valid";
    }
}

// Fungsi Cek Diskon
float CEK_DISKON(int jumlahBeli, float subtotal) {
    if (jumlahBeli > 10) return 0.1 * subtotal; // Diskon 10%
    if (jumlahBeli > 5) return 0.05 * subtotal; // Diskon 5%
    return 0.0; // Tidak ada diskon
}

int main() {
    string namaPemesan, kodeKereta;
    int kodeKelas, jumlahBeli;

    JUDUL();

    cout << "\nNama Pemesan\t\t\t: ";
    getline(cin, namaPemesan);

    cout << "\nMasukkan Kode Kereta [AG/AL/PH] : ";
    cin >> kodeKereta;

    cout << "\nMasukkan Kode Kelas [1/2/3]\t: ";
    cin >> kodeKelas;


    // Validasi Input
    float hargaTiket = CEK_HARGA(kodeKereta, kodeKelas);
    if (hargaTiket == 0.0) {
        cout << "\nInput Kode Kereta atau Kode Kelas salah!\n";
        return 1;
    }

    string namaKereta = CEK_NAMA_KERETA(kodeKereta);
    string namaKelas = CEK_NAMA_KELAS(kodeKelas);
    
    // Output
    cout << "\nDATA PEMESANAN KERETA\n";
    cout << "-------------------------\n";
    cout << "Nama Pemesan: " << namaPemesan << endl;
    cout << "Kode Kereta : " << namaKereta << endl;
    cout << "Kode Kelas  : " << namaKelas << endl;
    cout << "Harga Tiket : " << fixed << setprecision(2) << hargaTiket << endl;
    cout << "\nJumlah Beli: ";
    cin >> jumlahBeli;
    
    float subtotal = hargaTiket * jumlahBeli;
    float diskon = CEK_DISKON(jumlahBeli, subtotal);
    float total = subtotal - diskon;
    
    cout << "Subtotal    : " << subtotal << endl;
    cout << "Diskon      : " << diskon << endl;
    cout << "Total       : " << total << endl;
    return 0;
}
Editor is loading...
Leave a Comment