On vous demande de concevoir et réaliser un programme de gestion simple d'une bibliothèque, intégrant la gestion des lecteurs, des livres, des emprunts. Le cahier des charges est reporté ci-dessous. Les ouvrages seront caractérisés par :
- Le nom de l'auteur
- Le titre de l'ouvrage
- Le numéro ISBN
- Le nombre d'exemplaires achetés
Il faut pouvoir en ajouter, en retirer et rechercher un ouvrage (par son auteur/titre ou par son numéro). Un lecteur est caractérisé par :
- Son nom
- Son prénom
- Son adresse
- Son numéro de lecteur
Il faut pouvoir ajouter, retirer et rechercher un lecteur (par ses nom et prénom ou par son numéro). Un lecteur peut emprunter des livres différents et les retourner. Il faut pouvoir éditer des états :
- Liste des lecteurs
- Liste des ouvrages
- Liste des ouvrages empruntés, associés au nom de l'emprunteur et à la date de l'emprunt.
Extrait du document : "l'utilisation d'un iterator de list est indispensable pour retirer un élément d'une list (par exemple pour supprimer un livre, désinscrire un lecteur, ou retourner un emprunt). Nous avons donc écrit une fonction de recherche supplémentaire dans chacun des cas, utilisée uniquement si l'instance recherchée existe, et qui renvoie un iterator (rechLecExist(Lecteur*), rechLivExist(Livre*) et rechEmpExist(Emprunt*). En prenant en argument le pointeur retourné par une première fonction de recherche, on s'assure de l'existence de l'instance recherchée, et on n'a plus besoin d'effectuer de test.
Exemple : On cherche un lecteur pour le désinscrire. On donne son nom et son prénom au programme, qui grâce à la méthode Bibliotheque::rechercheLect(string, string) renvoie un pointeur Lecteur* le.
Si ce lecteur n'existe pas, le = 0, et c'est terminé. S'il existe, son pointeur peut être utilisé comme argument de la fonction Bibliotheque::rechLecExist(Lecteur* le) qui renvoie un list<Lecteur>::iterator it. On peut alors supprimer le lecteur voulu, grâce à la fonction erase(it) de la classe list."
[...] Le cahier des charges est reporté ci-dessous. Les ouvrages seront caractérisés par : Le nom de l'auteur Le titre de l'ouvrage Le numéro ISBN Le nombre d'exemplaires achetés Il faut pouvoir en ajouter, en retirer et rechercher un ouvrage (par son auteur/titre ou par son numéro). Un lecteur est caractérisé par : Son nom Son prénom Son adresse Son numéro de lecteur Il faut pouvoir ajouter, retirer et rechercher un lecteur (par ses nom et prénom ou par son numéro). [...]
[...] En revanche l'utilisation d'un iterator de list est indispensable pour retirer un élément d'une list (par exemple pour supprimer un livre, désinscrire un lecteur, ou retourner un emprunt). Nous avons donc écrit une fonction de recherche supplémentaire dans chacun des cas, utilisée uniquement si l'instance recherchée existe, et qui renvoie un iterator (rechLecExist(Lecteur*), rechLivExist(Livre*) et rechEmpExist(Emprunt*). En prenant en argument le pointeur retourné par une première fonction de recherche, on s'assure de l'existence de l'instance recherchée, et on n'a plus besoin d'effectuer de test. [...]
[...] Relation Emprunt-Livre Flèche unidirectionnelle emprunté car les instances de Livre seront manipulées à travers à la classe Emprunt. Elles n'ont donc pas besoin d'avoir accès à la classe Emprunt. La cardinalité indique qu'un emprunt est associé à un seul livre et qu'un exemplaire d'un même livre ne peut être emprunté qu'une seule fois. En effet, à chaque exemplaire de l'ouvrage correspond un nouvel emprunt. Relation Emprunt-Lecteur Flèche unidirectionnelle emprunteur car les instances de Lecteur seront manipulées à travers à la classe Emprunt. [...]
[...] Si ce lecteur n'existe pas, le = et c'est terminé. S'il existe, son pointeur peut être utilisé comme argument de la fonction Bibliotheque::rechLecExist(Lecteur* le) qui renvoie un list::iterator it. On peut alors supprimer le lecteur voulu, grâce à la fonction erase(it) de la classe list. Commentaires sur la méthode Bibliotheque::AjoutLivre() Si on essaie d'ajouter un livre qui est déjà fiché dans la bibliothèque, le programme ne crée pas de deuxième instance identique mais propose d'ajouter des exemplaires à l'aide de l'instance de Livre existante. [...]
[...] La relation Bibliothèque-Lecteur sera implémentée en ajoutant l'attribut list lecteurs; à la classe Bibliothèque. La relation Bibliothèque-Emprunt sera implémentée en ajoutant l'attribut list emprunts; à la classe Bibliothèque. La relation Emprunt-Livre sera implémentée en ajoutant l'attribut Livre* livre; à la classe Emprunt. La relation Emprunt-Lecteur sera implémentée en ajoutant l'attribut Lecteur* lecteur; à la classe Emprunt. Commentaires sur le Listing du programme Commentaires sur les fonctions de recherche Les fonctions de recherche (de lecteur, de livre et d'emprunt) de la classe Bibliotheque retournent des pointeurs, respectivement Lecteur*, Livre* et Emprunt*. [...]
Source aux normes APA
Pour votre bibliographieLecture en ligne
avec notre liseuse dédiée !Contenu vérifié
par notre comité de lecture