import [Link].
*;
import [Link];
import [Link];
// Kelas Abstrak Kendaraan
abstract class Kendaraan {
private String nama;
private double hargaSewa;
private String jenis;
private boolean status;
public Kendaraan(String nama, double hargaSewa, String jenis) {
[Link] = nama;
[Link] = hargaSewa;
[Link] = jenis;
[Link] = true; // Kendaraan baru tersedia
}
public String getNama() {
return nama;
}
public double getHargaSewa() {
return hargaSewa;
}
public String getJenis() {
return jenis;
}
public boolean isStatus() {
return status;
}
public void setStatus(boolean status) {
[Link] = status;
}
public abstract void tampilKendaraan();
}
// Kelas Mobil
class Mobil extends Kendaraan {
private int kapasitasPenumpang;
public Mobil(String nama, double hargaSewa, int kapasitasPenumpang) {
super(nama, hargaSewa, "Mobil");
[Link] = kapasitasPenumpang;
}
@Override
public void tampilKendaraan() {
[Link]("Nama: " + getNama() + ", Jenis: " + getJenis() + ",
Harga Sewa: " + getHargaSewa() + ", Kapasitas Penumpang: " + kapasitasPenumpang +
", Status: " + (isStatus() ? "Tersedia" : "Tidak Tersedia"));
}
}
// Kelas Motor
class Motor extends Kendaraan {
private int cc;
public Motor(String nama, double hargaSewa, int cc) {
super(nama, hargaSewa, "Motor");
[Link] = cc;
}
@Override
public void tampilKendaraan() {
[Link]("Nama: " + getNama() + ", Jenis: " + getJenis() + ",
Harga Sewa: " + getHargaSewa() + ", CC: " + cc + ", Status: " + (isStatus() ?
"Tersedia" : "Tidak Tersedia"));
}
}
// Kelas Bus
class Bus extends Kendaraan {
private int kapasitasPenumpang;
public Bus(String nama, double hargaSewa, int kapasitasPenumpang) {
super(nama, hargaSewa, "Bus");
[Link] = kapasitasPenumpang;
}
@Override
public void tampilKendaraan() {
[Link]("Nama: " + getNama() + ", Jenis: " + getJenis() + ",
Harga Sewa: " + getHargaSewa() + ", Kapasitas Penumpang: " + kapasitasPenumpang +
", Status: " + (isStatus() ? "Tersedia" : "Tidak Tersedia"));
}
}
// Kelas RentalKendaraan
class RentalKendaraan {
private ArrayList<Kendaraan> daftarKendaraan;
public RentalKendaraan() {
daftarKendaraan = new ArrayList<>();
}
public void tambahKendaraan(Kendaraan kendaraan) {
[Link](kendaraan);
}
public void tampilDaftarKendaraan() {
for (Kendaraan kendaraan : daftarKendaraan) {
[Link]();
}
}
public Kendaraan sewaKendaraan(String nama) throws Exception {
for (Kendaraan kendaraan : daftarKendaraan) {
if ([Link]().equalsIgnoreCase(nama) && [Link]())
{
[Link](false); // Tandai kendaraan sebagai tidak
tersedia
return kendaraan;
}
}
throw new Exception("Kendaraan tidak tersedia atau tidak ditemukan.");
}
public void simpanDaftarKendaraan(String filename) throws IOException {
try (BufferedWriter writer = new BufferedWriter(new FileWriter(filename)))
{
for (Kendaraan kendaraan : daftarKendaraan) {
[Link]([Link]() + "," + [Link]() +
"," + [Link]() + "," + [Link]());
[Link]();
}
}
}
public void muatDaftarKendaraan(String filename) throws IOException {
try (BufferedReader reader = new BufferedReader(new FileReader(filename)))
{
String line;
while ((line = [Link]()) != null) {
String[] data = [Link](",");
String nama = data[0];
double hargaSewa = [Link](data[1]);
String jenis = data[2];
boolean status = [Link](data[3]);
Kendaraan kendaraan;
switch (jenis) {
case "Mobil":
kendaraan = new Mobil(nama, hargaSewa, 5); // Default
kapasitas
break;
case "Motor":
kendaraan = new Motor(nama, hargaSewa, 150); // Default cc
break;
case "Bus":
kendaraan = new Bus(nama, hargaSewa, 30); // Default
kapasitas
break;
default:
continue;
}
[Link](status);
tambahKendaraan(kendaraan);
}
}
}
}
// Kelas Penyewaan
class Penyewaan {
private ArrayList<Kendaraan> kendaraanDisewa;
public Penyewaan() {
kendaraanDisewa = new ArrayList<>();
}
public void tambahKendaraan(Kendaraan kendaraan) {
[Link](kendaraan);
}
public double hitungTotalBiaya() {
double total = 0;
for (Kendaraan kendaraan : kendaraanDisewa) {
total += [Link]();
}
return total;
}
public void cetakStruk() {
[Link]("Struk Penyewaan:");
for (Kendaraan kendaraan : kendaraanDisewa) {
[Link]();
}
[Link]("Total Biaya: " + hitungTotalBiaya());
}
}
// Kelas Utama
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner([Link]);
RentalKendaraan rentalKendaraan = new RentalKendaraan();
Penyewaan penyewaan = new Penyewaan();
while (true) {
[Link]("Menu:");
[Link]("1. Tambah Kendaraan");
[Link]("2. Tampilkan Daftar Kendaraan");
[Link]("3. Sewa Kendaraan");
[Link]("4. Cetak Struk Penyewaan");
[Link]("5. Simpan Daftar Kendaraan");
[Link]("6. Muat Daftar Kendaraan");
[Link]("7. Keluar");
[Link]("Pilih menu: ");
int pilihan = [Link]();
[Link](); // Mengkonsumsi newline
try {
switch (pilihan) {
case 1:
[Link]("Masukkan jenis kendaraan
(Mobil/Motor/Bus): ");
String jenis = [Link]();
[Link]("Masukkan nama kendaraan: ");
String nama = [Link]();
[Link]("Masukkan harga sewa: ");
double hargaSewa = [Link]();
if ([Link]("Mobil")) {
[Link]("Masukkan kapasitas penumpang: ");
int kapasitas = [Link]();
[Link](new Mobil(nama,
hargaSewa, kapasitas));
} else if ([Link]("Motor")) {
[Link]("Masukkan cc: ");
int cc = [Link]();
[Link](new Motor(nama,
hargaSewa, cc));
} else if ([Link]("Bus")) {
[Link]("Masukkan kapasitas penumpang: ");
int kapasitasBus = [Link]();
[Link](new Bus(nama,
hargaSewa, kapasitasBus));
} else {
[Link]("Jenis kendaraan tidak valid.");
}
break;
case 2:
[Link]();
break;
case 3:
[Link]("Masukkan nama kendaraan yang ingin
disewa: ");
String namaSewa = [Link]();
Kendaraan kendaraanDisewa =
[Link](namaSewa);
[Link](kendaraanDisewa);
[Link]("Kendaraan berhasil disewa.");
break;
case 4:
[Link]();
break;
case 5:
[Link]("Masukkan nama file untuk menyimpan daftar
kendaraan: ");
String saveFile = [Link]();
[Link](saveFile);
[Link]("Daftar kendaraan berhasil disimpan.");
break;
case 6:
[Link]("Masukkan nama file untuk memuat daftar
kendaraan: ");
String loadFile = [Link]();
[Link](loadFile);
[Link]("Daftar kendaraan berhasil dimuat.");
break;
case 7:
[Link]("Keluar dari program.");
[Link]();
return;
default:
[Link]("Pilihan tidak valid.");
}
} catch (Exception e) {
[Link]("Terjadi kesalahan: " + [Link]());
}
}
}
}