PG208, Projet n 1 : Gestion d une bibliothèque



Documents pareils
PG208, Projet n 3 : Serveur HTTP évolué

Le langage C. Séance n 4

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Créer et partager des fichiers

TP1 : Initiation à Java et Eclipse

Utilisation d objets : String et ArrayList

Securité de l information :

TD3: tableaux avancées, première classe et chaînes

Introduction à MATLAB R

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Une introduction à Java

SPECIFICATIONS TECHNIQUES : Gestion des Médicaments et des commandes de médicaments

Cours 14 Les fichiers

Ingénérie logicielle dirigée par les modèles

Tutorial Terminal Server sous

TP : Gestion d une image au format PGM

Projet 2. Gestion des services enseignants CENTRE D ENSEIGNEMENT ET DE RECHERCHE EN INFORMATIQUE. G r o u p e :

Cours 1: Java et les objets

TP, première séquence d exercices.

L'accès aux ressources informatiques de l'ufr des Sciences

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

2 Grad Info Soir Langage C++ Juin Projet BANQUE

Projet de programmation (IK3) : TP n 1 Correction

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

TP réseaux 4 : Installation et configuration d'un serveur Web Apache

GOL502 Industries de services

Atelier Le gestionnaire de fichier

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.

Programmer en JAVA. par Tama

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

Développement itératif, évolutif et agile

Programmation en Java IUT GEII (MC-II1) 1

Cahier Technique. «Développer une application intranet pour la gestion des stages des étudiants» Antonin AILLET. Remi DEVES

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Plateforme PAYZEN. Intégration du module de paiement pour la plateforme Magento version 1.3.x.x. Paiement en plusieurs fois. Version 1.

Plateforme de capture et d analyse de sites Web AspirWeb

Alfstore workflow framework Spécification technique

Cours d initiation à la programmation en C++ Johann Cuenin

Cours 420-KEG-LG, Gestion de réseaux et support technique. Atelier No2 :

Bases Java - Eclipse / Netbeans

Guide d utilisation de la bibliothèque en ligne du FMI Création d un livre personnalisé

UltraBackup NetStation 4. Guide de démarrage rapide

30.avr.10 Présentation miniprojet. 9.mars.10 Cours 3 4.mai.10 Cours C mars.10 Cours 4 11.mai.10 Cours C++ 2

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Devenez un véritable développeur web en 3 mois!

Guide de l utilisateur. Synchronisation de l Active Directory

Génie Logiciel avec Ada. 4 février 2013

Utilisez Toucan portable pour vos sauvegardes

VidZone, qu est-ce que c est? INSTALLATION DE VidZone

TP1 : Initiation à Java et Eclipse

Manuel d utilisation du site web de l ONRN

Access et Org.Base : mêmes objectifs? Description du thème : Création de grilles d écran pour une école de conduite.

UTILISER LE CLOUD COMPUTING : EDITION EN LIGNE ET TRAVAIL COLLABORATIF AVEC GOOGLE DRIVE

Chapitre 1 Windows Server

as Architecture des Systèmes d Information

Toute personne souhaitant maîtriser les techniques liées à la conception de produits multimédia et à la création de sites Web.

Programmation C++ (débutant)/instructions for, while et do...while

Les logiciels gratuits en ligne

SERVICE CONTACT INSTANTANÉ GUIDE D UTILISATEUR

Guide de l administrateur CorpoBack

Approche Contract First

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Le MSMQ. Version 1.0. Pierre-Franck Chauvet

Cahier n o 6. Mon ordinateur. Fichiers et dossiers Sauvegarde et classement

SQL Server Installation Center et SQL Server Management Studio

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Guide d utilisation 2012

A. À propos des annuaires

arcopole Studio Annexe 4 Intégration LDAP et processus d authentification Site du programme arcopole :

TP Configuration de l'authentification OSPF

ACTIVITÉ DE PROGRAMMATION

Tutoriel Création d une source Cydia et compilation des packages sous Linux

Premiers Pas en Programmation Objet : les Classes et les Objets

TD d économétrie appliquée : Introduction à STATA

INFO-F-105 Language de programmation I Séance VI

Sérère Sine Network Diokodial : Bienvenue sur le Réseau Social Sérère Sine

WINDOWS SHAREPOINT SERVICES 2007

Dragon Naturally Speaking 13

La base de données XML exist. A. Belaïd

Projet en nouvelles technologies de l information et de la communication

COURS EN LIGNE DU CCHST Manuel du facilitateur/de l administrateur

Programme Compte bancaire (code)

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB Olivier Augereau Formation UML

«LIRE», février 2015, classe de CP-CE1 de Mme Mardon, école Moselly à TOUL (54)

TP redondance DHCP. Gillard Frédéric Page 1/17. Vue d ensemble du basculement DHCP

et Programmation Objet

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

Installation / Sauvegarde Restauration / Mise à jour

EXERCICES UML. Modéliser cette situation par un diagramme de cas d utilisation. Consulter planning

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Cours d Algorithmique et de Langage C v 3.0

Administration Centrale : Opérations

TP sauvegarde et restauration avec le logiciel Cobian Backup

findit.lu Les guides d utilisation Leçon 17

Programmation en C/C++

Portail : mode d emploi

C. SCIT Le 9 juillet 2003

Transcription:

PG208, Projet n 1 : Gestion d une bibliothèque Bertrand LE GAL, Serge BOUTER et Clément VUCHENER Filière électronique 2 eme année - Année universitaire 2011-2012 1 Introduction 1.1 Objectif du projet L objectif du projet est de mettre en œuvre les notions appréhendées durant l enseignement de de PG208. Durant cet enseignement vous avez normalement acquis les notions de base de la programmation orientée objets appliquées au langage C++. Le point de départ du projet est constitué du présent document. Ce dernier correspond au cahier des charges spécifié par le client (votre enseignant). Afin de mener à bien ce projet, vous allez devoir : lire le cahier des charges, identifier les besoins exprimés par le client, comprendre ce que vous devez développer, élaborer un modèle de solution, développer et mettre au point votre application. Pour mener à bien les quatre premières étapes, il vous est demandé de mettre en pratique les notion d UML vues en cours. Cela vous permettra de structurer vos idées et de les partager (avec votre binôme et votre enseignant). De plus, étant donné que le projet est un projet de conception objets, il vous est demandé dans les deux dernière étapes de mettre en œuvre les notions vues en cours (héritage, classes, polymorphisme, surcharge, etc.). 1.2 Déroulement du projet La durée estimée du projet est d environ 18 heures. Six séances de TP de 3 heures sont programmés dans votre emploi du temps. Toutefois, elles ne sont pas toutes encadrées : les 2 premières et les 2 dernières bertrand.legal(at)ims-bordeaux.fr serge.bouter(at)u-bordeaux1.fr clement.vuchener(at)inria.fr 1

séances sont encadrées tandis que les 2 séances intermédiaires sont planifiées mais se dérouleront sans encadrement. Le sujet du projet a été écrit de manière à prendre en considération les différences de niveaux entre les groupes. Pour cela le sujet du projet est écrit sous forme de cahier des charges à tiroir. Cette particularité vous permettra d avancer à votre rythme. 1.3 Évaluation de votre travail La notation du projet se basera sur : La qualité de l analyse du cahier des charges. Cette analyse doit être réalisée à l aide d UML. L utilisation adéquate des possibilités offertes par le langage C++ (héritage, surcharge,... ). Le respect des fonctionnalités spécifiées dans le cahier des charges. L évaluation du projet sera réalisée en deux parties : Lors d une présentation orale de votre projet. Dans un rapport papier détaillant le développement de votre application. Lors de la présentation orale de votre application, vous êtes en charge de présenter à votre enseignant (le client) l application développée. Cette présentation d une durée approximative de 10 minutes vise à démontrer au client que vous avez développé ce qu il vous a commandé. Pour cela, vous présenterez vos choix de conception, vous expliquerez les différentes étapes par lesquelles vous êtes passées et enfin une réaliserez démonstration des fonctionnalités de l outil (démonstration que vous aurez pris soin de préparer). En ce qui concerne le rapport écrit, une attention particulière sera portée à la présentation des choix d implantation que vous aurez réalisés lors de votre développement. Ces choix ainsi que votre cheminement devront être détaillés clairement à l aide du langage UML. De plus une analyse des avantages et inconvénients du langage C++ par rapport au langage C devra être réalisée. 2 Cahier des charges Le sujet de projet n 1 s intéresse au développement d une application permettant de gérer une médiathèque. Les besoins de la médiathèque à laquelle nous allons nous intéresser seront simplifiée par rapport à un cas réel afin de rendre l étude réalisable dans le temps imparti. Pour cela, nous considérerons par exemple que la bibliothécaire possède des compétences en informatique et que cela ne lui pose pas de difficulté que l application soit développée en mode console. De plus, dans un premier temps, l application sera développée en mode mono-utilisateur, cela signifie qu un seul et unique utilisateur pourra utiliser l application à un instant donné. 2

L application doit permettre de gérer la disponibilité de l ensemble les ressources disponibles dans la médiathèque : des livres, des CD, des DVD, des revues et des vidéos VHS. Les informations mémorisées pour chacune des ressources contenues dans la médiathèque sont dépendantes du type de la ressource. Les informations liées aux ressources seront par exemple : le titre, l auteur, la durée, le nombre de pages, etc. L application devra au minimum fournir à l utilisateur les fonctionnalités suivantes : Permettre l ajout et la suppression de médias dans le système de gestion de la médiathèque, Permettre la consultation des ressources de la médiathèque (liste des ressources ou informations détaillées relatives à une ressource), Permettre de sauvegarder et de charger le contenu de la médiathèque à partir d un fichier, Permettre de rechercher un média à partir d une information (son titre, le nom de l auteur, etc. ), ces recherches pourront être incrémentales (possibilité de faire une recherche uniquement sur les résultats de la recherche précédente), Permettre de réserver, emprunter ou rendre une ressource. La liste des besoins exprimés ci-dessus n est pas exhaustive. Vous pourrez l étoffer en fonction des besoins que vous identifierez (ou bien en fonction de vos envies). L application doit permettre de mémoriser toutes les ressources disponibles dans une médiathèque classique. Pour cela nous allons devoir mémoriser les informations issues de différents types de supports : livres, revues, CD, DVD, VHS, etc. L ensemble de ces différentes ressources sont décrites à l aide d informations dépendant de leur type. Une liste non exhaustive des informations relatives aux différents types de ressources est fourni ci-dessous : Des livres : un livre est écrit par un auteur et publié durant une année précise. Il est composé de N pages et appartient à une certaine collection. De plus un livre possède un titre et il peut posséder un résumé. Des revues : une revue possède les mêmes caractéristiques que les livres sauf qu elle possède en plus un éditeur et un ainsi qu un attribut spécifiant le nombre d articles contenus dedans. Pour chaque revue on pourra mémoriser le nom des articles contenus afin d autoriser leur indexation. Des CD : un CD est un support musical qui possède une durée, un nombre de pistes, un auteur, une maison de production et un titre. Des vidéos VHS : une VHS est un support vidéo qui possède une durée, un auteur, et une maison de production. Des DVD : un DVD est un support vidéo similaire à une VHS sauf qu il possède en plus une information spécifiant le nombre de pistes (ou chapitres) qu il contient. Des ressources numériques : une ressource numérique sera pour nous un?simple? fichier. Un fichier possède un auteur, un type (format PDF, DOC, PPT, etc.), une taille ainsi qu un nom et un chemin d accès (nous supposerons que ces fichiers sont mémorisés sur un serveur WEB => le 3

chemin sera donc une URL). Les interactions entre l homme et la machine seront réalisées mode ligne de commandes afin de limiter la difficulté. Voici la liste des commandes que devra supporter votre application : BYE : lorsque l utilisateur lance cette commande, il demande simplement à quitter votre application. Dans ce cas là, vous devez tout simplement fermer proprement votre outil (dans le sens destruction des ressources allouées). ADD type : cette commande lancera la procédure permettant de créer une nouvelle ressource en fonction du type spécifié en paramètre. LOAD filename : cette commande doit permettre à l utilisateur de charger un fichier un fichier contenant les ressources disponibles dans la médiathèque. La contenu de ce fichier viendra remplacer les données actuellement chargées dans l outil. SAVE filename : cette commande permet à l utilisateur de sauvegarder les données actuellement dans l outil dans le fichier dont le nom est spécifié en paramètre. Le format de sauvegarde des données est laissé à votre discrétion. SEARCH chaine : cette fonction permet de rechercher dans la base de données les documents contenant la chaîne de caractères spécifiée en paramètre. Les résultats issus de la recherche remplaceront temporairement la base de données courante pour faire en sorte que si l utilisateur lance une seconde recherche elle ne s appliquera que sur les résultats de la première recherche (recherche incrémentale). CLEAR : cette commande permet de réinitialiser la base de données courante après une recherche. Si l utilisateur emploie cette commande après avoir effectué une recherche alors, les résultats sont détruits et la future recherche s appliquera à l ensemble des ressources disponibles dans la médiathèque. LIST : cette fonction permet d afficher de manière compacte les données contenues dans la base de données. Si une recherche a été lancée, alors cette commande ne doit afficher que les résultats de la recherche précédemment lancée. SHOW id : cette fonction doit permettre d afficher les informations détaillées sur une ressource précise contenue dans la médiathèque. Le paramètre passé lors de l appel de la procédure utilise un identifiant unique que doit posséder toute ressource appartenant à la médiathèque (identifiant de l objet par exemple => attribut static). DELETE id : cette méthode permet de supprimer une ressource particulière appartenant à la médiathèque. RESET : cette dernière méthode permet de supprimer toutes les ressources contenues dans la bibliothèque. L ensemble de ces commandes doit permettre à l utilisateur de réaliser les taches décrites dans le cahier des charges. Vous êtes toutefois libre de rajouter de nouvelles fonctionnalités à votre gré. 4

2.1 Extension des capacités de l outil Maintenant que vous avez développé une application capable de gérer une médiathèque nous allons étendre la capacité de l outil en intégrant la possibilité de gérer plusieurs utilisateurs différents. Pour cela nous allons considérer que nous avons 2 catégories d utilisateurs : un administrateur et des clients. Le cahier des charges initial va être modifié de la manière suivante : un client peut consulter les ressources disponibles dans la médiathèque. De plus, un client doit être capable de réaliser les recherches sur les documents présents. L administrateur possède un accès complet aux fonctions déjà développées dans la partie précédente du projet. Lors du lancement de l application, l utilisateur doit fournir le mot de passe administrateur lors d une phase d authentification, si l authentification échoue alors les droits associés à la session courante seront ceux d un client. Afin de permettre une véritable utilisation multi-utilisateurs, il est important de pouvoir lancer plusieurs fois l outil en simultané et que ces derniers travaillent sur la même base d informations (fichier). Pour que les clients puissent bénéficier des nouveaux produits rajoutés par l utilisateur, vous devrez rajouter une commande nommée Reload et qui permettra de recharger le fichier contenant les données. En fonction de vos connaissances, vous pourrez développer une méthode capable de recharger automatiquement le fichier lorsque l administrateur sauvegarde sa session courante. Pour cela pour pouvez par exemple vous baser sur la date d enregistrement du fichier (qui sera modifiée à chaque enregistrement). Dans votre rapport vous inclurez les nouveaux diagrammes de cas d utilisation ainsi que les diagrammes de classes permettant l implémentation de ces nouvelles fonctionnalités. 2.2 Pour les plus téméraires? Pour ceux qui trouveraient le sujet du projet trop court, il est possible de rajouter à ce dernier une dimension graphique. Cette partie ne doit être considérée que si vous avez terminé proprement la première partie (développement de l application avec une interface de type terminal). Afin d améliorer l ergonomie de l outil, on peut souhaiter lui adjoindre une interface graphique. Afin de développer de telles interfaces en C++, il existe la bibliothèque QT de Trolltech qui propose un certain nombre d objets graphiques facilement utilisables. Vous trouverez des tutoriaux pouvant vous aider dans le développement d une interface graphique pour l outil aux adresses suivantes : http://www.digitalfanatics.org/projects/qt_tutorial/index.html http://www.digitalfanatics. org/projects/qt_tutorial/chapter05.html http://www.digitalfanatics.org/projects/qt_tutorial/ chapter06.html http://www.digitalfanatics.org/projects/qt_tutorial/chapter07.html 5

3 Exemples de codes sources utiles Le premier exemple de code vous montre comment il est possible de lire l ensemble d un fichier de type textuel en C++. Cet exemple lit les informations ligne par ligne et les affiche à l écran. #include <iostream > #include <fstream> #include <s t r i n g > using namespace std ; void main ( ) s t r i n g STRING; i f s t r e a m i n f i l e ; i n f i l e. open ( "names.txt" ) ; while (! i n f i l e. e o f ) g e t l i n e ( i n f i l e,string ) ; cout << STRING; i n f i l e. c l o s e ( ) ; Dans ce second exemple, le code C++ présenté permet de lire une chaine de caractère tapée par l utilisateur dans la console. La lecture de la chaine de caractères est réalisée lorsque l utilisateur appuie sur la touche return. void l e c t u r e _ c l a v i e r ( ) s t r i n g chaine ; cout << "Entrez une phrase : " << endl ; g e t l i n e ( cin, chaine ) ; cout << "La phrase est : " << chaine << endl ; Ce troisième exemple illustre les méthodes disponibles dans la classe string. Ces dernières vous seront surement utiles lors de votre développement. void t e s t _ s t r i n g ( ) s t r i n g c = "Voici une phrase!" ; cout << "Taille de la chaine : " << c. length ( ) << endl ; 6

cout << "Pos. du premier espace : " << c. f i n d ( " " ) << endl ; cout << "Pos. du dernier espace : " << c. r f i n d ( " " ) << endl ; cout << "Pos. du mot une : " << c. f i n d ( "une" ) << endl ; cout << "Premier mot : " << c. s u b s t r ( 0, c. f i n d ( " " ) ) << endl ; cout << "Comparaison (true) : " << c. compare ( c ) << endl ; cout << "Comparaison (false) : " << c. compare ( "TOTO" ) << endl ; Ce quatrième exemple vous permet de découper une chaine de caractères en sous parties en fonction d un séparateur (ici le caractère "="). void decoupe_string ( ) s t r i n g c ; cout << "Entrez une phrase : " << endl ; g e t l i n e ( cin, c ) ; int t a i l l e = c. s i z e ( ) ; i f ( t a i l l e!= 0 ) int pos = c. f i n d ( = ) ; cout << "Ligne lue : *" << c << "*" << endl ; cout << "Position: " << pos << endl ; cout << "Mot 1 : " << c. s u b s t r ( 0, pos ) << endl ; cout << "Mot 2 : " << c. s u b s t r ( pos +1, t a i l l e (pos +1)) << endl ; Ce dernier exemple vous indique la procédure à suivre pour récupérer un pointeur sur la chaine de caractère contenue dans un objet de type string. void pointeur_char ( ) s t r i n g STRING; cout << "Votre message = " ; g e t l i n e ( cin, STRING ) ; char chaine = STRING. c_str ( ) ; cout << "INTEGER = " << a t o i ( chaine ) ; 7