01 October 2017

MENGHITUNG DURASI - PEMOGRAMAN JAVA

Soal :
Buatlah suatu program untuk menghitung durasi dengan menggunakan konsep pemograman berorientasi objek. Waktu awal dan waktu akhir diinputkan dari keyboard.

Jawab :
Kasus yang diambil adalah Perhitungan harga sewa mobil dengan durasi waktu tertentu.
Aplikasi dibuat dengan 2 class

SewaMobil.java
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package uts;

/**
 *
 * @author Agus Sofyan Hidayat
 */
public class SewaMobil {
    private String str_waktu_awal,str_waktu_akhir;
    private int jam_awal,jam_akhir,menit_awal,menit_akhir,detik_awal,detik_akhir;
    private int jam,menit,detik;
    private int hargasewa;
    private double total_selisih;
    
    public void TampilWaktu(String str_jam_awal, String str_menit_awal, String str_detik_awal, String str_jam_akhir,
            String str_menit_akhir, String str_detik_akhir) {
        //  Tampilkan Waktu Awal dan Waktu Akhir
        str_waktu_awal = str_jam_awal+":"+str_menit_awal+":"+str_detik_awal;
        str_waktu_akhir = str_jam_akhir+":"+str_menit_akhir+":"+str_detik_akhir;
        System.out.println("Waktu Awal  : "+str_waktu_awal);
        System.out.println("Waktu Akhir : "+str_waktu_akhir);
    }
    
    public void KonversiData(String str_jam_awal, String str_menit_awal, String str_detik_awal, String str_jam_akhir,
            String str_menit_akhir, String str_detik_akhir, String str_sewa) {
        //  Konversi variable str menjadi integer
         jam_awal = Integer.parseInt(str_jam_awal);
         jam_akhir = Integer.parseInt(str_jam_akhir);
         menit_awal = Integer.parseInt(str_menit_awal);
         menit_akhir = Integer.parseInt(str_menit_akhir);
         detik_awal = Integer.parseInt(str_detik_awal);
         detik_akhir = Integer.parseInt(str_detik_akhir);
         
         hargasewa = Integer.parseInt(str_sewa);
    }
    
    public void SelisihWaktu() {
        //  Proses pencarian selisih Waktu Awal dan Waktu Akhir
        //  Langkah Ketiga, cari selisih detik awal dan detik akhir     
        int selisih_detik = 0;
         
        //  Jika detik awal > detik akhir
        //  Contohnya, detik awal = 40 dan detik akhir = 30
        if(detik_awal > detik_akhir) {
             
            while(detik_awal != detik_akhir) {
                 
                if(detik_awal == 60) {
                    detik_awal = 0;
                    menit_awal++;
                        continue;
                }
                detik_awal++;
                selisih_detik++;
            }
        }
         
        //  Jika detik awal < detik akhir
        //  Contohnya, detik awal = 30 dan detik akhir = 40
        else if(detik_awal < detik_akhir) {
            selisih_detik = detik_akhir - detik_awal;
        }
         
        //  Masukkan ke variable selisih waktu
        int selisih_waktu = selisih_detik;
         
        //-------------------------------------------------------
        //  Langkah Kedua, cari selisih menit awal dan menit akhir      
        int selisih_menit = 0;
         
        //  Jika menit awal > menit akhir.
        //  Contohnya, menit awal = 50 dan menit akhir = 10
        if(menit_awal > menit_akhir) {
             
            while(menit_awal != menit_akhir) {
                 
                if(menit_awal == 60) {
                    menit_awal = 0;
                    jam_awal++;
                        continue;
                }
                 
                menit_awal++;
                selisih_menit++;
            }
        }
         
        //  Jika menit awal < menit akhir
        //  Contohnya, menit awal = 10 dan menit akhir = 50
        else if(menit_awal < menit_akhir) {
            selisih_menit = menit_akhir - menit_awal;          
        }
         
        //  Ubah selisih menit menjadi satuan detik (1 menit = 60 detik)
        selisih_waktu += selisih_menit * 60;
         
        //  Langkah Pertama, cari selisih jam awal dan jam akhir        
        int selisih_jam = 0;
         
        //  Jika jam awal > jam akhir. Contohnya, Jam Awal = 22 (10 malam) dan Jam Akhir = 05 (5 pagi)
        if(jam_awal > jam_akhir) {
             
            //  Cocokkan antara jam awal dan jam akhir
            while(jam_awal != jam_akhir) {
                if(jam_awal == 24) {                
                    jam_awal = 0;
                    continue;
                }
                 
                jam_awal++;
                selisih_jam++;
            }
        }
         
        //  Jika jam awal < jam akhir. Contohnya, Jam Awal = 05 (5 pagi) dan Jam Akhir = 22 (10 malam)
        else if(jam_awal < jam_akhir)
            selisih_jam = jam_akhir - jam_awal;
         
        //  Ubah selisih jam menjadi satuan detik (1 jam = 3600 detik)
        selisih_waktu += selisih_jam * 3600;

        total_selisih= selisih_waktu;
        //  Tampilkan selisih antara waktu awal dan waktu akkhir dalam satuan detik
        System.out.println("Selisih antara waktu awal dan waktu akhir (detik) : "+total_selisih);
         
        //  Ubah selisih_waktu menjadi format waktu HH:mm:ss
        //  Ubah selisih waktu menjadi satuan jam
        jam = selisih_waktu / 3600;
        selisih_waktu %= 3600;
         
        //  Ubah selisih waktu menjadi satuan menit
        menit = 0;
        detik = 0;
        
        if(selisih_waktu >= 60) {
            menit = selisih_waktu / 60;
            detik = selisih_waktu % 60;
             
        } else {
            menit = 0;
            detik = selisih_waktu;
        }
         
        //  Tampilkan selisih antara waktu awal dan waktu akhir dalam format waktu HH:mm:ss
        String waktu = jam+":"+menit+":"+detik;
        System.out.println("Selisih antara waktu awal dan waktu akhir (HH:mm:ss) : "+waktu);
    }
    
    public double BiayaSewaMobil(){
        double Sewa;
        double TotalBiaya;
        
        Sewa=total_selisih/3600;
        
        TotalBiaya=Sewa*hargasewa;
        
        return TotalBiaya;
        
    }
}

DurasiWaktu.java
package uts;

import java.util.Scanner;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
/**
 *
 *  @author Agus Sofyan Hidayat
 *  Kasus menentukan jumlah biaya untuk sewa mobil di tempat Rental A
 */

public class DurasiWaktu {
    public static void main(String[] args) {
        //Class SewaMobil
        SewaMobil sewa=new SewaMobil();
        
        //Format Desimal
        DecimalFormat kursIndonesia = (DecimalFormat) DecimalFormat.getCurrencyInstance();
        DecimalFormatSymbols formatRp = new DecimalFormatSymbols();

        formatRp.setCurrencySymbol("Rp. ");
        formatRp.setMonetaryDecimalSeparator(',');
        formatRp.setGroupingSeparator('.');

        kursIndonesia.setDecimalFormatSymbols(formatRp);
        
        
        //  Scanner
        Scanner scan = new Scanner(System.in);
        
        System.out.println("PENYEWAAN MOBIL RENTAL A");
        //  Input Waktu Awal
        System.out.println("Waktu Awal");
        System.out.print("Input Jam   : ");     String str_jam_awal = scan.nextLine();
        System.out.print("Input Menit : ");     String str_menit_awal = scan.nextLine();
        System.out.print("Input Detik : ");     String str_detik_awal = scan.nextLine();
         
        //  Input Waktu Akhir
        System.out.println("\nWaktu Akhir");
        System.out.print("Input Jam   : ");     String str_jam_akhir = scan.nextLine();
        System.out.print("Input Menit : ");     String str_menit_akhir = scan.nextLine();
        System.out.print("Input Detik : ");     String str_detik_akhir = scan.nextLine();
        
        System.out.println("\nPenyewaan Perjam");
        System.out.print("Harga Sewa   : Rp");     String str_sewa = scan.nextLine();
         
        //Tampil waktu
        sewa.TampilWaktu(str_jam_awal, str_menit_awal, str_detik_awal, str_jam_akhir, str_menit_akhir, str_detik_akhir);
        
        sewa.KonversiData(str_jam_awal, str_menit_awal, str_detik_awal, str_jam_akhir, str_menit_akhir, str_detik_akhir, str_sewa);
        
        sewa.SelisihWaktu();
        
        System.out.println("\nTotal Biaya yang harus dibayarkan penyewa : "+kursIndonesia.format(sewa.BiayaSewaMobil()));
        
    }
}


Tampilan Aplikasi

1. Proses input waktu awal, waktu akhir dan harga sewa per jam

  
2. Hasil proses perhitungan harga sewa

1 comment:

Silakan masukkan komentar Anda untuk perkembangan blog ini.