Quick actions

cmd+k|ctrl+k

Navigation

Languages

Tugas 3.2

Snippet info

Language

Kotlin

Visibility

public

Author

tomassasra12

Created

2025-03-15T17:39:42.071735Z

Updated

2025-03-15T17:43:36.305757Z

//Nama  : Tomas Sasra Bahu
//NIM   : 3420210028

fun main() {
    judul()
    ketentuan()
    daftarSepatu()
    
    println("Jumlah Data Pembeli : <Input> ")
    val jumlahPembeli = readln().toInt()
    garis(33)
    
    val daftarPembeli = mutableListOf<Customer>()
    
    var i = 1
    // Looping While
    while (i <= jumlahPembeli) {
        println("Data Ke - $i")
        println("Nama Pembeli        : <Input> ")
        val nama = readln()
        println("Kode Sepatu [1/2/3] : <Input>")
        val kodeSepatu = readln().toInt()
        println("Jenis Kelamin [P/W] : <Input>")
        val gender = readln().uppercase()
        
        val customer = Customer(nama, kodeSepatu, gender)
        daftarPembeli.add(customer)
        garis(33)
        i++
    }
    
    daftarTransaksi(daftarPembeli)
    garis(78)
    println("Nama  : ${Author()}")
    Email  ("Email : [email protected]")
}

// Function Not Return Value (Without Parameter)
fun judul() {
    garis(63)
    println("Tugas Kotlin 3.2")
    garis(63)
}

fun ketentuan() {
    println("Ketentuan!")
    println("1. Harus terdapat Range")
    println("2. Harus terdapat Struktur IF dan When")
    println("3. Harus terdapat Looping While, Do While, dan For")
    println("4. Harus terdapat Function Not Return Value (With Parameter)")
    println("5. Harus terdapat Function Not Return Value (Without Parameter)")
    println("6. Harus terdapat Function Return Value (With Parameter)")
    println("7. Harus terdapat Function Return Value (Without Parameter)")
    println("8. Harus terdapat Function untuk Format Ribuan")
    println("9. Harus terdapat Class")
    println("10. Function Not Return Value (Tanpa Parameter) Inside Class")
    garis(63)
}

fun daftarSepatu() {
    println("| Reebok Official Store         |")
    garis(33)
    println("| Kode | Tipe                   |")
    garis(33)
    println("| 1    | Reebok Smash Edge      |")
    println("| 2    | Reebok Court Retro     |")
    println("| 3    | Reebok Prime Set       |")
    garis(33)
    println("| Kode | Pria (P)  | Wanita (W) |")
    garis(33)
    println("| 1    | 1.200.000 | 1.050.00)  |")
    println("| 2    | 1.200.000 | 1.050.00)  |")
    println("| 3    | 1.200.000 | 1.050.00)  |")
    garis(33)
}

// Range
fun garis(Panjang: Int): Unit {
    val Range_A = 1.rangeTo(Panjang)
    // Looping For
    for (i in Range_A) print("-")
    println()
}

// Function Return Value (With Parameter) & Struktur When
fun getTipeSepatu(kode: Int): String = when (kode) {
    1 -> "Reebok Smash Edge"
    2 -> "Reebok Court Retro"
    3 -> "Reebok Prime Set"
    else -> "Kode Salah"
};

// Function Return Value (With Parameter)
fun getHarga(kode: Int, gender: String): Int {
    // Struktur IF & When
    return if (gender == "P") {
        when (kode) {
            1 -> 1200000
            2 -> 1000000
            3 -> 900000
            else -> 0
        }
    } else {
        when (kode) {
            1 -> 1050000
            2 -> 850000
            3 -> 800000
            else -> 0
        }
    }
}

// Function untuk Format Ribuan
fun formatRupiah(amount: Int): String = "%,d".format(amount).replace(',', '.');

// Class Customer
class Customer(val nama: String, val kodeSepatu: Int, val gender: String) {
    // Function Not Return Value (Tanpa Parameter) Inside Class
    fun daftarData(no: Int) {
        val tipe = getTipeSepatu(kodeSepatu)
        val harga = getHarga(kodeSepatu, gender)
        val jenisKelamin = if (gender == "P") "Pria" else "Wanita"
        println("| %-3d | %-13s | %-13s | %-20s | Rp %10s |".format(no, nama, jenisKelamin, tipe, formatRupiah(harga)))
    }
}

// Function Not Return Value (With Parameter)
fun daftarTransaksi(customers: List<Customer>) {
    println("Data Transaksi Reebok Official Store")
    garis(78)
    println("| No  | Nama Customer | Jenis Kelamin | Tipe Sepatu          | Harga         |")
    garis(78)
    
    var totalHarga = 0
    var index = 1
    
    // Looping Do While
    do {
        customers[index - 1].daftarData(index)
        totalHarga += getHarga(customers[index - 1].kodeSepatu, customers[index - 1].gender)
        index++
    } while (index <= customers.size)
    
    garis(78)
    println("Total Data Transaksi: Rp ${formatRupiah(totalHarga)}")
}

// Function Return Value (Without Parameter)
fun Author(): String = "Tomas Sasra Bahu";

// Function Not Retrurn Value (With Parameter)
fun Email(mail: String) = println(mail)
INFO