//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 : tomassasra12@gmail.com")
}
// 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)