Application Kotlin pour la gestion de playlists musicales en mémoire et sur fichiers

Application Kotlin pour gérer des playlists musicales en mémoire et fichiers JSON avec ajout, suppression, affichage et sauvegarde facile.

Brève Introduction

Application Kotlin pour la gestion de playlists musicales en mémoire et sur fichiers (kotlin)
DESCRIPTION :
Cette application Kotlin permet de créer, modifier, sauvegarder et charger des playlists musicales en mémoire et depuis des fichiers JSON. L'application gère une liste de morceaux avec titre, artiste et durée, offrant des fonctionnalités d'ajout, suppression, affichage et persistance sur fichier.

NOTES SUPPLÉMENTAIRES :
L'application est conçue pour s'exécuter dans un environnement JVM (par exemple IntelliJ IDEA). Il est nécessaire de configurer correctement les dépendances de sérialisation dans le fichier build.gradle.kts pour utiliser la sérialisation JSON.

EXPLICATIONS :
- La classe 'Brano' représente un morceau unique avec titre, artiste et durée en secondes.
- La classe 'Playlist' contient une liste mutable de morceaux et des méthodes pour ajouter, supprimer et afficher les morceaux.
- La sérialisation JSON est gérée via kotlinx.serialization, permettant de convertir facilement la playlist en chaîne JSON et inversement.
- Les fonctions 'salvaSuFile' et 'caricaDaFile' gèrent la persistance de la playlist sur fichiers locaux.
- La fonction main fournit un menu textuel simple pour interagir avec la playlist.

Code d'Exemple : kotlin

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.")
        }
    }
}
×
×
×
Veux-tu régénérer la réponse ?
×
Exporter le chat
Choisissez le format d'export
⏳ Generazione PDF in corso…
Allegati
×
⚠️ Vous êtes sur le point de fermer le chat et de passer au générateur d’images. Si vous n’êtes pas connecté, vous perdrez notre conversation. Confirmez-vous ?
👁 Tu consultes une discussion partagée en mode temporaire. Elle ne sera pas enregistrée.
💬
×
Prompts enregistrés
×
Note privée
×
Étiquette
×
Rechercher dans toutes les discussions
×
Vos insights
Analyse en cours…
×
Préférences IA
Nom de l'assistant 30
Longueur des réponses
Modèle IA
Réponses structurées
Inclure des exemples
Utiliser des emojis
Guide-moi, ne résous pas Des indices et des questions plutôt que la réponse toute faite
Plus de réglages →
×
Partager cette discussion
Toute personne ouvrant ce lien pourra consulter la discussion ou l'ajouter à son profil comme discussion personnelle.
⚠️ Attention : les pièces jointes de la discussion seront également partagées. Qui l'ajoutera recevra une copie des fichiers dans son dossier.
Discussion partagée
Quelqu'un a partagé une discussion avec toi. Veux-tu seulement la consulter ou l'ajouter à tes discussions ?
⚠️ Attention : les pièces jointes de la discussion seront également partagées. Qui l'ajoutera recevra une copie des fichiers dans son dossier.
×

📌 Messages enregistrés

Chargement...

×

Historique des discussions

programmes-exemples · HISTORIQUE DU CHAT

Chargement...

Préférences IA

×
  • 🟢 BasiqueRéponses rapides et essentielles pour étudier
  • 🔵 MoyenQualité supérieure pour étude et programmation
  • 🟣 AvancéRaisonnement complexe et analyses détaillées
Expliquer les étapes

Qu'est-ce qu'il faut ?

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.

Sujets Similaires

Kotlin Hello World depuis la ligne de commande
Exemple simple de programme Kotlin Hello World exécuté depuis la ligne de commande pour apprendre la syntaxe et vérifier la configuration de l’environnement Kot
Calculatrice de somme de deux nombres en Kotlin
Programme Kotlin simple pour calculer la somme de deux nombres entiers, idéal pour débutants souhaitant apprendre les bases des entrées, sorties et opérations a
Impression d’une liste de noms avec une boucle for en Kotlin
Exemple simple en Kotlin montrant comment imprimer une liste de noms avec une boucle for, idéal pour débutants en programmation Kotlin.
Conversion de Celsius en Fahrenheit en Kotlin
Programme Kotlin simple pour convertir une température de Celsius en Fahrenheit avec gestion des erreurs et affichage formaté pour débutants en programmation.
Vérifier si un nombre est pair ou impair en Kotlin
Programme Kotlin pour vérifier si un nombre est pair ou impair avec gestion des entrées invalides et utilisation de la console pour la saisie et la sortie.
Mini programme Kotlin pour calculer l’âge à partir de l’année de naissance
Mini programme Kotlin simple pour calculer l’âge à partir de l’année de naissance avec gestion des erreurs et utilisation de java.time.Year.now().value.
Menu textuel simple avec when en Kotlin
Exemple simple de menu textuel en Kotlin utilisant when pour gérer les choix utilisateur avec lecture console et boucle while pédagogique.
Générateur de messages de bienvenue personnalisés en Kotlin
Programme Kotlin simple pour générer un message de bienvenue personnalisé en saisissant le nom de l’utilisateur avec gestion des entrées vides.