Untitled

 avatar
unknown
plain_text
2 months ago
4.8 kB
4
Indexable
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;  // <- Tambahkan ini
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;


public class Pertemuan14 {


    private static final String URL = "jdbc:sqlite:ausaf.db";

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        try (Connection conn = DriverManager.getConnection(URL)) {
            Class.forName("org.sqlite.JDBC");

            // Nomor Sewa (Auto Increment)
            System.out.println("~ Transaksi ~");

            // Input ID Pelanggan
            System.out.print("Input ID Pelanggan: ");
            String idPelanggan = scanner.nextLine();
            String[] pelanggan = getPelanggan(conn, idPelanggan);
            if (pelanggan == null) {
                System.out.println("Pelanggan tidak ditemukan!");
                return;
            }
            System.out.println(">> " + pelanggan[0]); // Nama
            System.out.println(">> " + pelanggan[1]); // No Telp

            // Input Kode Mobil
            System.out.print("\nInput Kode Mobil: ");
            String kodeMobil = scanner.nextLine();
            String[] mobil = getMobil(conn, kodeMobil);
            if (mobil == null) {
                System.out.println("Mobil tidak ditemukan!");
                return;
            }
            System.out.println(">> " + mobil[0] + " warna " + mobil[1]);
            System.out.println(">> Kapasitas " + mobil[2] + " orang");
            System.out.println(">> Rp " + mobil[3] + " / hari");
            System.out.println(">> Status: " + mobil[4]);

            // Jika status mobil "Disewa", batalkan transaksi
            if (mobil[4].equalsIgnoreCase("Disewa")) {
                System.out.println("Mobil sudah disewa! Pilih mobil lain.");
                return;
            }

            // Input Lama Sewa
            System.out.print("\nInput lama sewa (hari): ");
            int lamaSewa = scanner.nextInt();
            int totalBiaya = Integer.parseInt(mobil[3]) * lamaSewa;
            System.out.println("Biaya Sewa: Rp " + totalBiaya + ",-");

            // Simpan transaksi
            saveSewa(conn, idPelanggan, kodeMobil, lamaSewa, totalBiaya);

            // Update status mobil jadi "Disewa"
            updateMobilStatus(conn, kodeMobil);

            System.out.println("\nTransaksi berhasil disimpan!");
        } catch (Exception e) {
            e.printStackTrace();
        }
        scanner.close();
    }

    private static String[] getPelanggan(Connection conn, String id) throws SQLException {
        String query = "SELECT Nama, No_Telp FROM pelanggan WHERE ID = ?";
        try (PreparedStatement stmt = conn.prepareStatement(query)) {
            stmt.setString(1, id);
            ResultSet rs = stmt.executeQuery();
            if (rs.next()) {
                return new String[]{rs.getString("Nama"), rs.getString("No_Telp")};
            }
        }
        return null;
    }

    private static String[] getMobil(Connection conn, String kode) throws SQLException {
        String query = "SELECT merek, warna, kapasitas, harga_sewa, satuan FROM mobil WHERE kode = ?";
        try (PreparedStatement stmt = conn.prepareStatement(query)) {
            stmt.setString(1, kode);
            ResultSet rs = stmt.executeQuery();
            if (rs.next()) {
                return new String[]{
                        rs.getString("merek"),
                        rs.getString("warna"),
                        rs.getString("kapasitas"),
                        rs.getString("harga_sewa"),
                        rs.getString("satuan")
                };
            }
        }
        return null;
    }

    private static void saveSewa(Connection conn, String idPelanggan, String kodeMobil, int lamaSewa, int totalBiaya) throws SQLException {
        String query = "INSERT INTO sewa (id_pelanggan, kode_mobil, lama_sewa, total_biaya) VALUES (?, ?, ?, ?)";
        try (PreparedStatement stmt = conn.prepareStatement(query)) {
            stmt.setString(1, idPelanggan);
            stmt.setString(2, kodeMobil);
            stmt.setInt(3, lamaSewa);
            stmt.setInt(4, totalBiaya);
            stmt.executeUpdate();
        }
    }

    private static void updateMobilStatus(Connection conn, String kodeMobil) throws SQLException {
        String query = "UPDATE mobil SET satuan = 'Disewa' WHERE kode = ?";
        try (PreparedStatement stmt = conn.prepareStatement(query)) {
            stmt.setString(1, kodeMobil);
            stmt.executeUpdate();
        }
    }
}
Editor is loading...
Leave a Comment