Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 0 additions & 15 deletions app/src/main/kotlin/org/example/App.kt

This file was deleted.

14 changes: 14 additions & 0 deletions app/src/main/kotlin/org/example/Book.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package org.example

class Book(
id: String,
title: String,
val author: String,
val isbn: String,
val pages: Int
) : LibraryItem(id, title) {
override fun getItemType(): String = "Book"
override fun calculateLateFee(daysLate: Int): Double {
return daysLate * 0.5
}
}
14 changes: 14 additions & 0 deletions app/src/main/kotlin/org/example/DVD.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package org.example

class DVD(
id: String,
title: String,
val director: String,
val duration: Int,
val genre: String
) : LibraryItem(id, title) {
override fun getItemType(): String = "DVD"
override fun calculateLateFee(daysLate: Int): Double {
return daysLate * 1.0
}
}
16 changes: 16 additions & 0 deletions app/src/main/kotlin/org/example/LibraryItem.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package org.example

abstract class LibraryItem(
val id: String,
val title: String,
var isAvailable: Boolean = true
) {
abstract fun getItemType(): String
abstract fun calculateLateFee(daysLate: Int): Double

open fun displayInfo(): String {
return "ID: $id, Title: $title, Available: $isAvailable"
}


}
13 changes: 13 additions & 0 deletions app/src/main/kotlin/org/example/Magazine.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package org.example

class Magazine(
id: String,
title: String,
val issueNumber: Int,
val publisher: String
) : LibraryItem(id, title) {
override fun getItemType(): String = "Magazine"
override fun calculateLateFee(daysLate: Int): Double {
return daysLate * 0.25
}
}
24 changes: 24 additions & 0 deletions app/src/main/kotlin/org/example/Main.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
/*
* This source file was generated by the Gradle 'init' task
*/
package org.example

fun main() {
val member1= Member("M1", "S", "s")
member1.setName("Smith")
member1.setEmail("smith.com")
member1.setEmail("smith@gmail.com")

val book1 = Book("B1", "Harry Potter", "JK", "1111-222", 122)
member1.borrowItem(book1)

val member2 = Member("M2", "John", "john@gmail.com")
member2.borrowItem(book1)

member2.returnItem(book1)
member1.returnItem(book1)
member2.borrowItem(book1)
member1.totalLateFees(15)
member2.totalLateFees(15)

}
64 changes: 64 additions & 0 deletions app/src/main/kotlin/org/example/Member.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
package org.example

class Member(
private val memberId: String,
private var name: String,
private var email: String
) {
private val borrowedItems = mutableListOf<LibraryItem>()

fun getMemberId(): String = memberId
fun getName(): String = name
fun getEmail(): String = email

fun setName(memberName: String) {
name = memberName
println("Member Name set to $name")
}
fun setEmail(memberEmail: String) {
if(
memberEmail.contains('@')
&&
memberEmail.contains('.')
) {
email = memberEmail
println("Member Email set to $email")
} else {
println("invalid email")
}
}

fun borrowItem(item: LibraryItem) {
if(item.isAvailable) {
borrowedItems.add(item)
item.isAvailable = false
println("Member $memberId $name borrowed item ${item.id} ${item.title}")
}
else {
println("item unavailable")
}
}

fun returnItem(item: LibraryItem) {
if(borrowedItems.contains(item)) {
borrowedItems.remove(item)
item.isAvailable = true
println("Member $memberId $name returned item ${item.id} ${item.title}")
} else {
println("Member $memberId $name did not borrow this item")
}
}

fun totalLateFees(daysLate: Int) {
if(borrowedItems.isEmpty()) {
println("no items borrowed")
}
else {
var total = 0.0
borrowedItems.forEach { item ->
total += item.calculateLateFee(daysLate)
}
println("Total Late Fees = $$total")
}
}
}