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
sangat membantu makasih yah
ReplyDeletescania truk