Initiation à la Programmation avec Java Semestre 1-2008/2009. Compte rendu final du Projet



Documents pareils
Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

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

Manuel d administration de Virtual Box MANUEL D UTILISATION VIRTUAL BOX

Date M.P Libellé Catégorie S.Catégorie Crédit Débit Solde S.B

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

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

Importer un CD audio dans itunes

Premiers Pas en Programmation Objet : les Classes et les Objets

Paginer les données côté serveur, mettre en cache côté client

Chapitre 2 Devine mon nombre!

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

NOTICE TELESERVICES : Créer mon compte personnel

Application 1- VBA : Test de comportements d'investissements

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Les chaînes de caractères

Saisissez le login et le mot de passe (attention aux minuscules et majuscules) qui vous ont

Les Différents types de Requêtes dans Access

les Formulaires / Sous-Formulaires Présentation Créer un formulaire à partir d une table...3

Utilisation d objets : String et ArrayList

Chapitre 2. Classes et objets

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

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Notions fondamentales du langage C# Version 1.0

Gérer les règles de prix catalogue sur Magento

Les structures. Chapitre 3

B2i Brevet Informatique. Internet. Livret de l enseignant

Mes premiers diaporamas avec Open Office Impress?

TP, première séquence d exercices.

Solutions du chapitre 4

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Corrigé des TD 1 à 5

Langage Java. Classe de première SI

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Rechercher et supprimer les doublons!

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

ACTIVITÉ DE PROGRAMMATION

RÉALISATION D UN SITE DE RENCONTRE

Configurer un réseau domestique. Partager ses fichiers, ses dossiers et ses imprimantes sur tous ses PC.

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

Base est le module pour les bases

Généralités sur le Langage Java et éléments syntaxiques.

TRIGONOMETRIE Algorithme : mesure principale

Java Licence Professionnelle CISII,

BIRT (Business Intelligence and Reporting Tools)

Fiche Pratique. MAJ le 10/04/2013

Créer le schéma relationnel d une base de données ACCESS

COURS WINDEV NUMERO 3

Flex. Lire les données de manière contrôlée. Programmation Flex 4 Aurélien VANNIEUWENHUYZE

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

Chapitre 10. Les interfaces Comparable et Comparator 1

Utilitaires méconnus de StrataFrame

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

Algorithme. Table des matières


UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

TD/TP PAC - Programmation n 3

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Examen Médian - 1 heure 30

Corrigés des premiers exercices sur les classes

TD/TP PAC - Programmation n 3

Algorithme des fourmis appliqué à la détection et au suivi de contours dans une image

Créer sa première base de données Access Partie 3/4 - Création d un formulaire

Installation et configuration de base de l active Directory

Découverte de l ordinateur. Partie matérielle

Recherche dans un tableau

1 Introduction et installation

1 Lecture de fichiers

IV- Comment fonctionne un ordinateur?

Apprendre Java en 154 minutes

TP3 : Manipulation et implantation de systèmes de fichiers 1

A.-M. Cubat PMB - Import de lecteurs - Généralités Page 1 Source :

Traduction des Langages : Le Compilateur Micro Java

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

Algorithmique et Programmation, IMA

Programmer en JAVA. par Tama

CREG : versailles.fr/spip.php?article803

Présentation du langage et premières fonctions

COMPTABILITE SAGE LIGNE 30

MANUEL GANTT PROJECT

TP1 : Initiation à Java et Eclipse

Cours d algorithmique pour la classe de 2nde

Plan du cours. Historique du langage Nouveautés de Java 7

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

La programmation des PIC en C. Les fonctions, les interruptions.

TP 1. Prise en main du langage Python

Construire des plug-ins pour SAS Management Console SAS 9.1

Projet ISN - dossier réalisé par Randrianarimanana Stéphanie. Titre du projet : Site de rencontre. le nom de notre site de rencontre : Linkymeet

V- Manipulations de nombres en binaire

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

[WINDOWS 7 - LES FICHIERS] 28 avril Logiciel / Windows

Algorithmique & programmation

BDD - OpenOffice Base

L ALGORITHMIQUE. Algorithme

Procédures Stockées WAVESOFT ws_sp_getidtable Exemple : ws_sp_getnextsouche Exemple :... 12

SVP j ai besoin d aide!

Guide de l Administrateur

Initiation à Excel. Frédéric Gava (MCF)

Transcription:

Initiation à la Programmation avec Java Semestre 1-2008/2009 Compte rendu final du Projet Jean-Baptiste Leprêtre Groupe Y1 Chargé de TD : Fabienne Thomarat 1

SOMMAIRE : I) Cahier des Charges II) Analyse du Programme 1) Classe Œuvre 2) Classe Principale o a) Chargement des Œuvres et création de la bibliothèque o b) Demande des critères de recherche o c) Recherche pour chaque critère o d) Demande si on veut ajouter un critère supplémentaire o e) Affichage des solutions o f) Transfert de support o g) Demande de nouvelle recherche III) Mode d emploi 2

I) Cahier des Charges : Le programme demandé doit pouvoir effectuer des recherches d œuvres ou d albums, à partir d une base de données représentée par un fichier.txt. Chaque œuvre est caractérisée par un titre, un artiste, un album, un style, un support, une année de parution ainsi qu un instrument. Mon programme permet ainsi de trouver une œuvre parmi la base de données et ayant telles ou telles caractéristiques. Nous pourrons ainsi trouver les œuvres datant de l année 1950. Il est noté que l on demande au lancement du programme si l utilisateur souhaite chercher plutôt un titre de morceau ou plutôt un album. Une grande attention a été effectuée sur les dates, puisque nous pourrons aussi demander les oeuvres précédant l année 1950 ou suivant l année 1950. Nous pourrons ajouter autant de critère à notre recherche que nous le voulons, ce qui permet d affiner la demande. Il sera ainsi possible de chercher quels sont les albums de Juliette, sur support mp3, et sortis après 1995. Lorsque nous avons fini d énumérer les critères demandés, le programme nous donne les réponses. Il préviendra s il n y a pas de solution. Il nous encouragera alors à faire une autre recherche. S il y a des réponses, il les affiche les unes en dessous des autres. Il va alors nous poser la question si nous souhaitons transférer ces fichiers obtenus sur un support. Nous pouvons alors les transférer n importe où, par exemple sur le disque dur. Puis nous pourrons faire, à nouveau, une recherche, où nous pourrons vérifier que les fichiers ont bien été transférés. De plus, la position des majuscules et minuscules n importe pas dans l ensemble des réponses. En résumé, ce programme permet donc de charger les œuvres depuis le fichier.txt, de faire des requêtes multiples et de transférer des fichiers d un support à un autre. J ai malheureusement un regret sur le fait que lorsque l on cherche des albums, il peut arriver, suivant les critères, qu une même réponse s affiche plusieurs fois à l écran. 3

II) Analyse du Programme : Lorsque j ai réalisé mon programme afin qu il fasse seulement des requêtes simples j ai utilisé une classe œuvre. Cependant, pour mon programme final, je n utilise plus cette classe. Je vais quand même proposer un développement de cette classe. 1) Classe Œuvre : Comme son nom l indique, cette classe représente une œuvre. Elle possède 7 attributs : Titre de type String Artiste de type String Album de type String Style de type String Support de type String Date de type String Instrument de type String Cette classe possède une méthode qui permet à partir du fichier.txt, de charger les œuvres. La signature de cette méthode est Œuvre chargement(string) 2) Classe Principale: La classe principale forme ainsi à la fin, l ensemble de mon programme. a) Chargement des Œuvres et création de la bibliothèque : 4

String message=utilitaire.lirefichier("c:/musique.txt"); int f=1; String []tableau; tableau=message.split("\n"); String [][] tableau2; tableau2 = new String[tableau.length][7]; tableau2[i]=tableau[i].split(";"); Nous créons, en fait, un tableau à deux dimensions où nous allons ranger nos œuvres. Il s appelle tableau2. Ce tableau regroupe des chaînes de caractères. Nous découpons le fichier.txt, en chaînes de caractères regroupant chaque ligne. (En effet chaque ligne correspond à une œuvre) Notre tableau2, celui à deux dimensions, aura donc autant de lignes qu il y a de ligne dans le fichier.txt. Il aura 7 colonnes correspondantes aux 7 critères caractérisant une œuvre. Pour remplir ces 7 colonnes, nous découpons chaque chaîne de caractère obtenue précédemment. Nous avons bien une bibliothèque avec l ensemble des œuvres. b) Demande des critères de recherche : int retour=0; String recherche=utilitaire.lirechaine("recherchez-vous un album ou une oeuvre?").touppercase(); while(retour==0){ int b=0; int []solution; solution=new int[tableau.length]; while(b==0){ String a=utilitaire.lirechaine("quel est votre critére de sélection? Titre, Auteur, Album, Style, Support, Date, Instrument ").touppercase(); Tout d abord, nous demandons si l utilisateur recherche une œuvre ou un album, afin de savoir ce qu il faudra afficher pour caractériser les réponses. On met la demande dans la variable chaîne de caractères «recherche». On crée une autre variable entier «retour» que l on initialise à 0. Tout le reste du programme va se retrouver dans une boucle «while», qui continuera tant que «retour» sera égal à 0. 5

Ceci permet de faire des requêtes l une après l autre, et l on est pas alors obligé de relancer le programme à chaque fois. Si on ne veut plus de questions, il suffira d augmenter «retour». Je crée de même une variable entier «b», initialisée à 0, qui permettra aussi grâce à une boucle «while» de faire des requêtes multiples. La base de mon système de recherche repose sur le tableau à une dimension «solution» qui possède autant d entrées qu il y a d œuvres dans la bibliothèque. C est un tableau d entier. La i éme entrée du tableau, correspond à la i éme œuvre de la bibliothèque. A chaque requête, si l œuvre remplit le critère, on ajoute 1 à l entrée du tableau correspondant à l œuvre. Pour trouver les œuvres répondant à tous les critères, il suffira de regarder quelles sont les entrées du tableau «solution» ayant la même valeur que le nombre de requêtes effectuées. Le programme ensuite demande quel est le critère de recherche. Il place ce critère dans une variable chaîne de caractère «a». La fonction.uppercase() permet de mettre l ensemble de la chaîne de caractères en majuscule, ce qui ne limite pas le programme à la stricte écriture du document.txt. c) Recherche pour chaque critère : if(a.equals("titre")){ String m=utilitaire.lirechaine("quel titre cherchezvous?").touppercase(); if(m.equals((tableau2[i][1]).touppercase())){ solution[i]=1+solution[i]; else if(a.equals("auteur")){ String m=utilitaire.lirechaine("quel auteur cherchezvous?").touppercase(); if(m.equals((tableau2[i][2]).touppercase())){ solution[i]=1+solution[i]; else if(a.equals("album")){ String m=utilitaire.lirechaine("quel album cherchezvous?").touppercase(); 6

if(m.equals((tableau2[i][3]).touppercase())){ solution[i]=1+solution[i]; else if(a.equals("style")){ String m=utilitaire.lirechaine("quel style cherchezvous?").touppercase(); if(m.equals((tableau2[i][4]).touppercase())){ solution[i]=1+solution[i]; else if(a.equals("support")){ String m=utilitaire.lirechaine("quel support cherchezvous?").touppercase(); if(m.equals((tableau2[i][5]).touppercase())){ solution[i]=1+solution[i]; else if(a.equals("date")){ int m=integer.parseint(utilitaire.lirechaine("quel date cherchez-vous?").touppercase()); String commande=utilitaire.lirechaine("cherchez-vous avant, pendant ou aprés cette date?").touppercase(); if(commande.equals("avant")){ if(integer.parseint(tableau2[i][6])<=m){ solution[i]=1+solution[i]; if(commande.equals("pendant")){ if(integer.parseint(tableau2[i][6])==m){ solution[i]=1+solution[i]; if(commande.equals("apres")){ if(integer.parseint(tableau2[i][6])>=m){ solution[i]=1+solution[i]; else{ String m=utilitaire.lirechaine("quel instrument cherchezvous?").touppercase(); if(m.equals((tableau2[i][7]).touppercase())){ solution[i]=1+solution[i]; 7

Nous allons utiliser une commande if qui permet de séparer les actions suivant la valeur de «a», c est à dire suivant le critère de recherche. Pour chaque critère, nous procédons de la même façon : On demande quel est le nom précis de la demande et on compare ce nom avec les éléments de la colonne correspondante au critère demandé. S il y a égalité, et donc que l on a trouvé un résultat, on ajoute plus 1, dans l entrée correspondante du tableau «solution». Pour le critère date, on rajoute une commande if pour savoir si on veut avant la date donnée, pendant ou après la date donnée. d) Demande si on veut ajouter un critère supplémentaire : String reponse=utilitaire.lirechaine("voulez-vous ajouter un critére de selection?").touppercase(); if(reponse.equals("oui")){ f++; else{b++; On demande si on veut ajouter des critères ou si on veut simplement afficher les réponses trouvées et on met la réponse dans une variable chaîne de caractères «réponse». Si la réponse est oui, on augmente la variable entier «f» de 1, «f» comptant le nombre de requête effectuée. Si c est non, on sort de la boucle «while» on augmentant «b» de 1. e) Affichage des solutions : int g=0; if(recherche.equals("album")){ if(solution[i]==f){g++; Utilitaire.ecrireLigne(tableau2[i][3]); else{for(int k=0;k<tableau.length;k++){ if(solution[k]==f){g++; 8

Utilitaire.ecrireLigne(tableau2[k][1]); if(g==0){ Utilitaire.ecrireLigne("Il n'y a pas de solution"); A partir d ici, on a fini d ajouter des critères. On crée tout d abord une variable entier «g», initialisée à 0 et qui va voir si on a des solutions. On différencie le cas où on recherche un album et celui où on recherche une œuvre grâce à la variable chaîne de caractères «recherche». On affiche alors les solutions qui correspondent à une entrée dans le tableau «solution» égale au nombre de requêtes. Si on trouve des solutions, on augmente «g» de 1. S il n y a pas de solution, on prévient l utilisateur. f) Transfert de support : else{ String action=utilitaire.lirechaine("voulez-vous transférer ces fichiers sur un support?").touppercase(); if(action.equals("oui")){ action=utilitaire.lirechaine("sur quel support voulezvous transférez ces fichiers?").touppercase(); if(action.equals("cd")){ if(solution[i]==f){ tableau2[i][5]="cd"; else if(action.equals("dd")){ if(solution[i]==f){ tableau2[i][5]="dd"; else if(action.equals("mp3")){ if(solution[i]==f){ tableau2[i][5]="mp3"; 9

On demande alors si on veut transférer ces fichiers obtenus sur un support. On stocke la réponse à la question. On utilise alors une commande if qui différencie entre la réponse oui et la réponse non. Si c est oui, le programme demande alors sur quel support. Avec une autre commande if, le programme différencie les cas et on change alors les valeurs dans le tableau2 qui représente la bibliothèque. Si c est non, on ne fait rien. g) Demande de nouvelle recherche : String fin=utilitaire.lirechaine("voulez-vous faire une autre recherche").touppercase(); if(fin.equals("non")){retour++; On demande alors si on veut faire une nouvelle recherche à critères multiples. Si la réponse est non, on sort du «while» en augmentant la valeur de «retour». Pour toute autre réponse, on recommence une autre recherche. III) Mode d emploi Après avoir chargé le programme sur une plate-forme JAVA, ce dernier vous guidera alors pas à pas. En effet, il vous demandera question après question, quels sont vos choix. Il vous demandera ainsi si vous cherchez un album ou un titre. Puis vous il posera autant de question que vous le souhaitez sur les critères de votre recherche. Vous pouvez vous arrêter à n importe quel moment. Il vous affichera alors les réponses. Vous pourrez ensuite transférer ces réponses sur un support, option que le programme vous proposera automatiquement. Vous aurez alors la possibilité, si vous le souhaitez, de recommencer une nouvelle requête. Ce programme a l avantage d être très intuitif. Il a aussi l autre avantage que les réponses ne dépendent pas de la place des majuscules. A noté, cependant qu il ne supportera pas les fautes d orthographes. 10