Pengumpulan Tugas Pemrograman Perangkat Bergerak G - Pertemuan 6

 repository: https://github.com/RayyanFv/ppb-6-currencyconverter

Dokumentasi Aplikasi Currency Converter

Ringkasan

Aplikasi Currency Converter adalah aplikasi Android yang memungkinkan pengguna mengonversi jumlah uang dari Rupiah Indonesia (IDR) ke mata uang lain yang dipilih (seperti USD, EUR, GBP, JPY, dll.). Aplikasi ini menggunakan nilai tukar statis yang sudah didefinisikan dalam aplikasi.

Fitur:

  1. Input Pengguna: Pengguna dapat memasukkan jumlah uang dalam IDR (Rupiah Indonesia).

  2. Pemilihan Mata Uang: Pengguna dapat memilih mata uang target untuk konversi (misalnya USD, EUR, GBP, JPY, dll.).

  3. Perhitungan Konversi: Aplikasi menghitung jumlah yang dikonversi ke mata uang target berdasarkan nilai tukar yang telah didefinisikan.

  4. Output: Hasil konversi ditampilkan di layar dengan simbol mata uang yang sesuai.

  5. Penanganan Error: Aplikasi memberikan pesan error jika input yang dimasukkan tidak valid.


Teknologi yang Digunakan

  • Jetpack Compose: Digunakan untuk membangun antarmuka pengguna secara deklaratif.

  • Material3: Digunakan untuk komponen UI berbasis Material Design.

  • Kotlin: Bahasa pemrograman utama yang digunakan untuk aplikasi ini.


Alur Aplikasi

  1. Input Pengguna (IDR): Pengguna memasukkan jumlah uang dalam IDR (Rupiah Indonesia).

  2. Pemilihan Mata Uang: Pengguna memilih mata uang target dari dropdown (misalnya USD, EUR, GBP, dll.).

  3. Perhitungan Konversi: Ketika tombol Convert ditekan, aplikasi akan menghitung jumlah yang dikonversi sesuai dengan nilai tukar yang telah didefinisikan.

  4. Menampilkan Hasil: Hasil konversi ditampilkan dengan simbol mata uang yang sesuai.

  5. Penanganan Error: Jika input tidak valid (misalnya, input bukan angka), aplikasi akan menampilkan pesan "Invalid input".


Struktur Data

Aplikasi ini mendefinisikan sebuah kelas Currency yang berisi nama, kode, dan nilai tukar ke IDR untuk setiap mata uang yang didukung.

Model Data Currency:

data class Currency(
    val name: String,
    val code: String,
    val rateToIDR: Double // rateToIDR berarti 1 unit dari mata uang ini setara dengan rateToIDR dalam IDR
)

Daftar Mata Uang:

Daftar currencies berisi beberapa instance dari kelas Currency, masing-masing mewakili mata uang dengan nama, kode, dan nilai tukarnya ke IDR.

val currencies = listOf(
    Currency("US Dollar", "USD", 16851.0),  // 1 USD = 16851 IDR
    Currency("Indonesian Rupiah", "IDR", 1.0), // IDR ke IDR
    Currency("Japanese Yen", "JPY", 135.0),
    Currency("Euro", "EUR", 17500.0),
    Currency("British Pound", "GBP", 20000.0)
)

Fitur Utama

1. Input IDR

  • Komponen: OutlinedTextField

  • Tujuan: Untuk menerima jumlah dalam IDR dari pengguna.

  • Validasi: Memeriksa apakah input berupa angka yang valid.

2. Pemilih Mata Uang (Dropdown)

  • Komponen: ExposedDropdownMenuBox dan ExposedDropdownMenu

  • Tujuan: Untuk memungkinkan pengguna memilih mata uang target yang ingin dikonversi (misalnya USD, EUR, GBP, JPY, dll.).

  • Mata Uang yang Dipilih: Aplikasi mengingat mata uang yang dipilih dan melakukan konversi sesuai dengan pilihan tersebut.

3. Logika Konversi

  • Input: Jumlah dalam IDR.

  • Konversi: Aplikasi membagi jumlah yang dimasukkan dalam IDR dengan nilai tukar rateToIDR dari mata uang yang dipilih.

  • Contoh Konversi:

    • Untuk IDR → USD, perhitungan adalah: jumlah dalam IDR / rateToIDR dari USD.

    • Untuk IDR → EUR, perhitungan adalah: jumlah dalam IDR / rateToIDR dari EUR.

4. Menampilkan Hasil

  • Komponen: Card

  • Tujuan: Untuk menampilkan hasil konversi dengan simbol mata uang yang sesuai (misalnya USD, EUR, GBP, JPY).

5. Penanganan Error

  • Jika pengguna memasukkan nilai yang tidak valid (misalnya, bukan angka), aplikasi akan menampilkan pesan "Invalid input".


Penjelasan Kode

Data Class Currency:

Kelas Currency digunakan untuk merepresentasikan mata uang dan nilai tukarnya ke IDR.

data class Currency(
    val name: String,
    val code: String,
    val rateToIDR: Double
)

State Management dengan remember:

Kami menggunakan remember untuk menyimpan nilai state untuk input dan mata uang yang dipilih. State ini akan diperbarui secara dinamis saat pengguna berinteraksi dengan UI.

var usdAmount by remember { mutableStateOf(TextFieldValue("")) }
var result by remember { mutableStateOf("") }
var expanded by remember { mutableStateOf(false) }
var selectedCurrency by remember { mutableStateOf(currencies[1]) } // default adalah IDR
var showError by remember { mutableStateOf(false) }

Logika Konversi:

Ketika tombol Convert ditekan, input diperiksa dan logika konversi menghitung hasilnya.

val amount = usdAmount.text.replace(",", ".").toDoubleOrNull()
if (amount != null) {
    val convertedAmount = amount * selectedCurrency.rateToUSD
    result = when (selectedCurrency.code) {
        "USD" -> "$${"%,.2f".format(convertedAmount)}"
        "IDR" -> "Rp ${convertedAmount.roundToInt()}"
        "JPY" -> "¥${convertedAmount.roundToInt()}"
        "EUR" -> "€${"%,.2f".format(convertedAmount)}"
        "GBP" -> "£${"%,.2f".format(convertedAmount)}"
        else -> "%,.2f ${selectedCurrency.code}".format(convertedAmount)
    }
    showError = false
} else {
    showError = true
    result = ""
}

Tata Letak UI:

  • Input: OutlinedTextField untuk input jumlah dalam IDR.

  • Pemilihan Mata Uang: ExposedDropdownMenu untuk memilih mata uang yang akan digunakan.

  • Tombol: Tombol untuk memicu konversi.

  • Hasil Konversi: Menampilkan hasil konversi dalam format yang sesuai dengan simbol mata uang.


Cara Menggunakan Aplikasi

  1. Langkah 1: Masukkan jumlah uang dalam IDR (Rupiah Indonesia) di kolom yang disediakan.

  2. Langkah 2: Pilih mata uang target yang ingin Anda konversi menggunakan dropdown (misalnya USD, EUR, GBP, dll.).

  3. Langkah 3: Tekan tombol Convert untuk melakukan konversi.

  4. Langkah 4: Hasil konversi akan muncul di bawah tombol Convert dengan simbol mata uang yang sesuai.








Comments

Popular Posts