Application Kotlin pour gérer des playlists musicales en mémoire et fichiers JSON avec ajout, suppression, affichage et sauvegarde facile.
import kotlinx.serialization.*
import kotlinx.serialization.json.*
import java.io.File
// Classe représentant un morceau unique
@Serializable
data class Brano(
val titolo: String,
val artista: String,
val durataSecondi: Int
)
// Classe représentant une playlist de morceaux
@Serializable
class Playlist {
private val brani = mutableListOf<Brano>()
// Ajoute un morceau à la playlist
fun aggiungiBrano(brano: Brano) {
brani.add(brano)
println("Morceau ajouté : ${brano.titolo} par ${brano.artista}")
}
// Supprime un morceau de la playlist par index
fun rimuoviBrano(indice: Int) {
if (indice in brani.indices) {
val rimosso = brani.removeAt(indice)
println("Morceau supprimé : ${rimosso.titolo} par ${rimosso.artista}")
} else {
println("Index non valide.")
}
}
// Affiche tous les morceaux de la playlist
fun mostraPlaylist() {
if (brani.isEmpty()) {
println("La playlist est vide.")
return
}
println("Playlist :")
brani.forEachIndexed { index, brano ->
println("${index + 1}. ${brano.titolo} - ${brano.artista} (${brano.durataSecondi} sec)")
}
}
// Sérialise la playlist en JSON
fun toJson(): String {
return Json.encodeToString(this)
}
// Charge la playlist depuis JSON
companion object {
fun fromJson(jsonString: String): Playlist {
return Json.decodeFromString(jsonString)
}
}
// Sauvegarde la playlist dans un fichier
fun salvaSuFile(percorsoFile: String) {
val json = toJson()
File(percorsoFile).writeText(json)
println("Playlist sauvegardée dans le fichier : $percorsoFile")
}
// Charge la playlist depuis un fichier
fun caricaDaFile(percorsoFile: String) {
val file = File(percorsoFile)
if (!file.exists()) {
println("Fichier non trouvé : $percorsoFile")
return
}
val json = file.readText()
val playlistCaricata = fromJson(json)
brani.clear()
brani.addAll(playlistCaricata.brani)
println("Playlist chargée depuis le fichier : $percorsoFile")
}
}
fun main() {
val playlist = Playlist()
while (true) {
println("\nMenu Playlist :")
println("1. Ajouter un morceau")
println("2. Supprimer un morceau")
println("3. Afficher la playlist")
println("4. Sauvegarder la playlist dans un fichier")
println("5. Charger la playlist depuis un fichier")
println("6. Quitter")
print("Choisissez une option : ")
val scelta = readLine()?.toIntOrNull() ?: continue
when (scelta) {
1 -> {
print("Entrez le titre du morceau : ")
val titolo = readLine() ?: ""
print("Entrez l'artiste : ")
val artista = readLine() ?: ""
print("Entrez la durée en secondes : ")
val durata = readLine()?.toIntOrNull() ?: 0
if (titolo.isNotBlank() && artista.isNotBlank() && durata > 0) {
playlist.aggiungiBrano(Brano(titolo, artista, durata))
} else {
println("Données invalides, veuillez réessayer.")
}
}
2 -> {
playlist.mostraPlaylist()
print("Entrez le numéro du morceau à supprimer : ")
val indice = readLine()?.toIntOrNull()
if (indice != null) {
playlist.rimuoviBrano(indice - 1)
} else {
println("Entrée non valide.")
}
}
3 -> playlist.mostraPlaylist()
4 -> {
print("Entrez le chemin du fichier pour sauvegarder (ex. playlist.json) : ")
val percorso = readLine() ?: "playlist.json"
playlist.salvaSuFile(percorso)
}
5 -> {
print("Entrez le chemin du fichier à charger (ex. playlist.json) : ")
val percorso = readLine() ?: "playlist.json"
playlist.caricaDaFile(percorso)
}
6 -> {
println("Sortie de l'application.")
break
}
else -> println("Option non valide.")
}
}
}Bibliothèque standard Kotlin : pour les fonctionnalités de base du langage.
Bibliothèque kotlinx.serialization : pour sérialiser et désérialiser des objets Kotlin en JSON et inversement.
Système de fichiers local : pour sauvegarder et charger les fichiers JSON contenant les playlists.
Configuration des dépendances Gradle : ajout de 'kotlinx-serialization-json' pour la gestion JSON.
Aucun matériel externe ou Arduino impliqué dans ce projet.