Gestion d'un club de Tennis

Documents pareils
Programme Compte bancaire (code)

Le MSMQ. Version 1.0. Pierre-Franck Chauvet

Développement d un logiciel de messagerie instantanée avec Dotnet (version simplifiée)

Le hub d entreprise est une application de déploiement des applications mais aussi un outil de communication

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

Chapitre 10. Les interfaces Comparable et Comparator 1

Notions fondamentales du langage C# Version 1.0

Premiers Pas en Programmation Objet : les Classes et les Objets

ADO.NET. Ado.net propose deux modes d'accès, le mode connecté et le mode déconnecté.

Introduction à ADO.NET

Projet de programmation (IK3) : TP n 1 Correction

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

Création d objet imbriqué sous PowerShell.

Rafraichissement conditionné d'une page en.net

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

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Package Java.util Classe générique

INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février :30 à 20:30

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

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

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

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

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

TP1 : Initiation à Java et Eclipse

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Utilisation d objets : String et ArrayList

CONCOURS DE L AGRÉGATION INTERNE «ÉCONOMIE ET GESTION» SESSION 2014

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

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Programmation avec des objets : Cours 7. Menu du jour

Programmation en Java IUT GEII (MC-II1) 1

Convers3 Documentation version Par Eric DAVID : vtopo@free.fr

Une introduction à Java

PROJET 1 : BASE DE DONNÉES REPARTIES

.NET - Classe de Log

Corrigés des premiers exercices sur les classes

Gestion du cache dans les applications ASP.NET

A DESTINATION DES SERVICES TIERS. Editeurs d applications et ressources pédagogiques connectées à l ENT

INITIATION AU LANGAGE JAVA

Langage Java. Classe de première SI

Corrigé des exercices sur les références

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

Chapitre VI- La validation de la composition.

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Utilitaires méconnus de StrataFrame

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

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

Tp 1 correction. Structures de données (IF2)

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

Programmer en JAVA. par Tama

Problèmes liés à la concurrence

Cours 14 Les fichiers

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

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs

Objets et Programmation. origine des langages orientés-objet

2. Comprendre les définitions de classes

Projet gestion d'objets dupliqués

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

Java Licence Professionnelle CISII,

IRL : Simulation distribuée pour les systèmes embarqués

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

Programmation par les Objets en Java

Débuter avec EXPRESS. Alain Plantec. 1 Schema 2

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN

GOL502 Industries de services

Traduction des Langages : Le Compilateur Micro Java

RMI le langage Java XII-1 JMF

Alfstore workflow framework Spécification technique

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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

ETUDE DE CAS en UML : GESTION DES COMMANDES DE PIECES FABRIQUEES PAR LA SOCIETE C

Classes et Objets en Ocaml.

Java DataBaseConnectivity

Recherche dans un tableau

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

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

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

Développement XNA. pour la Xbox et le PC. Premiers pas en développement de jeu vidéo. Léonard Labat

as Architecture des Systèmes d Information

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

TD/TP PAC - Programmation n 3

Programmation Orientée Objet Java

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Développement Logiciel

Machines virtuelles fonctionnelles (suite) Compilation ML Java

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Serveur d'archivage 2007 Installation et utilisation de la BD exist

OS Réseaux et Programmation Système - C5

4. Groupement d objets

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

OpenPaaS Le réseau social d'entreprise


Introduction à JDBC. Accès aux bases de données en Java

Java Licence Professionnelle CISII,

Claude Delannoy. 3 e édition C++

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Transcription:

Gestion d'un club de Tennis Le jeune et dynamique club de tennis de Crillon le Brave (le plus beau village au monde) engage plusieurs équipes dans différentes compétitions. Il souhaite disposer d'un logiciel lui permettant de gérer: - la composition des équipes - le suivi des résultats obtenus Les règles de gestion sont les suivantes : Chaque équipe n'est engagée que pour une seule compétition. Une équipe est composée exclusivement de membres du club qui ont été sélectionnés par le capitaine de l'équipe pour toute la durée de la compétition. Un membre peut faire partie de plusieurs équipes si les dates de rencontre ne se chevauchent pas. Une compétition est qualifiée de "Simple" lorsque chaque match n'oppose que 2 joueurs (un contre un) et elle est qualifiée de "Multi" lorsqu'il y a à la fois des matchs "Simple" et des matchs de "Double" (2 joueurs contre 2 joueurs). Par exemple : La compétition nommée "Coupe Vincensini" comporte 2 matchs "Simple Homme", 2 matchs "Simple Femme" et un "Double Mixte". (Il faut noter qu'au tennis, il n'existe pas de "Double Femme"). Chaque compétition se déroule sur un nombre de journées connu à l'avance (ex : 5 journées pour la "coupe Vincensini"). Lors d'une journée (rencontre), tous les matchs prévus par le format de la compétition doivent être joués. Lors d'une rencontre, chaque match de "Simple" remporte 1 point et chaque match de "Double" remporte 2 points. SLAM2 _ Programmation c# (Gestion club tennis) page 1

Une analyse du problème a permis de structurer les classes suivantes. Structure des classes correspondantes Classe CLUB Propriétés LesEquipes : LesMembres Collection d'équipes Collection de Membres Méthodes GetNbEquipe() : entier // Retourne le nombre d'équipes engagées GetNbMembres() : entier // Retourne le nombre total de membres AddEquipe(UneEquipe : Equipe) : // Ajoute une équipe AddCompetMulti(UneCompet : CompetitionMulti) AddCompetSimple(UneCompet : CompetitionSimple) SuppCompet (NumCompet : entier) Classe EQUIPE Propriétés Num_equipe : Nom_Equipe Nom_Capitaine LaCompetition LesJoueurs LesJournees entier chaîne(20) chaîne(20) Competition Collection de membres Collection de journées Méthodes GetNbJoueurs() : entier // Retourne le nombre de personnes dans l'équipe AddJoueur(UnJoueur : Membre) :// Ajoute un membre en vérifiant si son // classement est compatible avec le classement maxi de la compétition AddJournee(UneJournee : Journee) GetResultatTotal() : chaîne(3) // Retourne le nombre de points de l'équipe SuppJoueur(NumJoueur : entier) // Supprime le joueur dont le N est passé en paramètre SuppJoueur(Position : entier) // Supprime le joueur en fonction de sa position VerifEquipe() : booléen // Retourne vrai si l'équipe est en nombre suffisant Classe MEMBRE Propriétés NumMembre : NomMembre PrenomMembre Sexe DateNaissance AdresseRue CodePostal Ville TelephoneFixe TelephonePortable Classement chaîne(5) chaîne(20) chaîne(20) chaîne(1) Date chaîne(40) chaîne(20) chaîne(20) chaîne(10) chaîne(10) chaîne(3) SLAM2 _ Programmation c# (Gestion club tennis) page 2

Méthodes GetNbreMatchsJoues(): entier // Retourne le nombre de matchs joués GetNbreMatchsPerdus(): entier // Retourne le nombre de matchs perdus GetNbreMatchsGagne(): entier // Retourne le nombre de matchs remportés Classe COMPETITION Propriétés NumCompetition: NomCompetition Niveau NbreJoueursMini NombreJournees ClassementMaxi entier chaîne(20) chaîne(20) // Régional, Départemental, National, entier entier entier Méthodes GetClassementMaxi() : chaîne(3) //Retourne le classement maxi autorisé pour la compétition GetNbreJournees() : entier // Retourne le nombre de journées pour cette compétition Classe COMPETITION_MULTI hérite de COMPETITION Propriétés NbreSimpleF NbreSimpleH NbreDoubleMixte NbreDoubleH : entier : entier : entier : entier Méthodes GetNbrePointsCompet() : entier // Retourne le nombre de points total pour cette compétition Classe COMPETITION_SIMPLE hérite de COMPETITION Propriétés NbreSimpleF NbreSimpleH : entier : entier Méthodes GetNbrePointsCompet() : entier // Retourne le nombre de points total pour cette compétition Classe JOURNEE Propriétés Num_journee: Date Lieu LesResultats entier Date chaîne(20) Collection de Resultats SLAM2 _ Programmation c# (Gestion club tennis) page 3

Méthodes GetResultatJournee() : chaîne(3) // Retourne le score final d'une journée (ex: 4/2) GetGagne() : booléen // Vrai si l'équipe à gagné VerifResultats() : booléen // Vérifie si tous les matchs ont été joués Classe RESULTAT Propriétés Num_match: entier LesParticipants Collection de Membres (1 ou 2) Decision caractère (V ou D) Score chaîne(15) Méthodes GetDecision() : Chaîne(1) // V pour Victoire D pour Défaite GetScore() : Chaîne(15) // Score de la rencontre ex: 6/3 6/2 Travail à faire : Il vous est demandé de développer dans une application permettant la gestion des équipes engagées dans le club de Crillon le Brave. On utilisera donc une seule instance de la classe CLUB. L'interface que vous devez construire doit permettre la gestion des équipes (affichage de la composition, ajout ou suppression de joueurs, ). Elle doit également permettre la gestion des résultats obtenus par chaque équipe (saisie, affichage, contrôle, ). Pour rendre les données persistantes, on utilisera la sérialisation binaire dans un fichier. Au démarrage de l'application, les données seront chargées (désérialiser) à partir du fichier. A la fermeture de l application, les données devront être sérialisées. Les programmes développés en langage c# utiliseront les classes décrites ci-dessus. SLAM2 _ Programmation c# (Gestion club tennis) page 4

Pour répondre au besoin de cette application nous avons développé l interface graphique cidessus. Puis nous avons écris les fonctions qui sont derrière les boutons avec le code suivant : using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace SLAM2_TD_Tennis public partial class FAdherent : Form // Déclaration des variable commune à la feuille Membre UnMembre; int i = 0; char Op = 'F'; public void transfere() UnMembre = (Membre)MG.ClubCrillon.LesMembres[i]; ZTNumero.Text = UnMembre.NumMembre.ToString(); ZTNom.Text = UnMembre.NomMembre; ZTPrenom.Text = UnMembre.PrenomMembre; public void transfere2() Membre UnMembre = new Membre(Convert.ToInt32(ZTNumero.Text), ZTNom.Text, ZTPrenom.Text); SLAM2 _ Programmation c# (Gestion club tennis) page 5

MG.ClubCrillon.LesMembres[i] = UnMembre; //Active zone de texte public void Activation() ZTNom.ReadOnly = false; ZTNumero.ReadOnly = false; ZTPrenom.ReadOnly = false; // Efface zone de texte public void Effacer() ZTNom.Text = ""; ZTNumero.Text = ""; ZTPrenom.Text = ""; // Desactive zone de texte public void Desactivation() ZTNom.ReadOnly = true; ZTNumero.ReadOnly = true; ZTPrenom.ReadOnly = true; public FAdherent() InitializeComponent(); private void label1_click(object sender, EventArgs e) private void BTPrem_Click(object sender, EventArgs e) // On se positionne sur le premier enregistremment s'il existe i = 0; if (MG.ClubCrillon.LesMembres.Count > 0) transfere(); private void BTSuiv_Click(object sender, EventArgs e) // On se déplace vers l'avant i++; if (i < MG.ClubCrillon.LesMembres.Count) transfere(); else i--; SLAM2 _ Programmation c# (Gestion club tennis) page 6

private void BTPrec_Click(object sender, EventArgs e) // On se déplace vers l'arrière if (i > 0) i--; transfere(); private void BTDern_Click(object sender, EventArgs e) if (MG.ClubCrillon.LesMembres.Count > 0) i = MG.ClubCrillon.LesMembres.Count - 1; transfere(); private void FAdherent_Load(object sender, EventArgs e) // Appel à la procedure Prem_click BTPrem_Click(sender, e); private void button1_click(object sender, EventArgs e) // Activation de la zone de texte Activation(); Effacer(); // Affiche les panels PanelAction.Visible = false; PanelValidation.Visible = true; PanelDeplacer.Visible = false; Op = 'N'; private void BTModifier_Click(object sender, EventArgs e) // Activation de la zone de texte Activation(); // Affiche les panels PanelAction.Visible = false; PanelValidation.Visible = true; PanelDeplacer.Visible = false; Op = 'M'; private void BTValider_Click(object sender, EventArgs e) // Transfere des zone de texte transfere2(); // Affiche les panels PanelDeplacer.Visible = true; PanelValidation.Visible = false; PanelAction.Visible = true; // Desactive zone de texte Desactivation(); SLAM2 _ Programmation c# (Gestion club tennis) page 7

private void BTAnnuler_Click(object sender, EventArgs e) private void BTSupprimer_Click(object sender, EventArgs e) DialogResult rep = MessageBox.Show("Etes vous sur de vouloir supprimer ce membre?", "Demande de confirmation", MessageBoxButtons.YesNo); if (rep == DialogResult.Yes) MG.ClubCrillon.LesMembres.RemoveAt(i); transfere(); BTPrem_Click(sender, e); Ensuite il y a les classes : using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Collections; namespace SLAM2_TD_Tennis public static class MG public static Club ClubCrillon = new Club(); //**************************************** //***************Class Club*************** //**************************************** [Serializable] public class Club // Collection LesEquipes public ArrayList LesEquipes = new ArrayList(); // Collection LesMembres public ArrayList LesMembres = new ArrayList(); // Constructeurs public Club() // Méthodes public int GetNbEquipe() SLAM2 _ Programmation c# (Gestion club tennis) page 8

public int GetNbMembres() public void AddEquipe() public void AddCompetMulti() public void AddCompetSimple() public void AddCompetSimple(int NomCompet) //****************************************** //***************Class Equipe*************** //****************************************** [Serializable] public class Equipe // Collection LesJoueurs public ArrayList LesJoueurs = new ArrayList(); // Collection LesJournees public ArrayList LesJournees = new ArrayList(); int num_equipe; public int Num_equipe get return num_equipe; set num_equipe = value; string nom_equipe; public string Nom_Equipe get return nom_equipe; set nom_equipe = value; string nom_capitaine; public string Nom_Capitaine get return nom_capitaine; set nom_capitaine = value; SLAM2 _ Programmation c# (Gestion club tennis) page 9

Competition lacompetition; internal Competition LaCompetition get return lacompetition; set lacompetition = value; // Constructeurs public Equipe() // Méthodes public int GetNbJoueurs() public void AddJoueur() public void AddJournee() public string GetResultatTotal() return "void"; public void SuppJoueur(int NumJoueur) public void SuppJoueurs(int Position) public bool VerifEquipe() return true; //****************************************** //***************Class Membre*************** //****************************************** [Serializable] public class Membre int nummembre; public int NumMembre SLAM2 _ Programmation c# (Gestion club tennis) page 10

get return nummembre; set nummembre = value; string nommembre; public string NomMembre get return nommembre; set nommembre = value; string prenommembre; public string PrenomMembre get return prenommembre; set prenommembre = value; string sexe; public string Sexe get return sexe; set sexe = value; DateTime datenaissance; public DateTime DateNaissance get return datenaissance; set datenaissance = value; string adresserue; public string AdresseRue get return adresserue; set adresserue = value; string codepostal; public string CodePostal get return codepostal; set codepostal = value; string ville; public string Ville get return ville; set ville = value; string telephonefixe; SLAM2 _ Programmation c# (Gestion club tennis) page 11

public string TelephoneFixe get return telephonefixe; set telephonefixe = value; string telephoneportable; public string TelephonePortable get return telephoneportable; set telephoneportable = value; string classement; public string Classement get return classement; set classement = value; // Constructeurs public Membre(int pnummembre, string pnom, string pprenom) NomMembre = pnom; NumMembre = pnummembre; PrenomMembre = pprenom; // Méthodes public int GetNbreMatchsJoues() public int GetNbreMatchsPerdus() public int GetNbreMatchsGagne() //*********************************************** //***************Class Competition*************** //*********************************************** [Serializable] public class Competition int numcompetition; public int NumCompetition get return numcompetition; set numcompetition = value; SLAM2 _ Programmation c# (Gestion club tennis) page 12

string nomcompetition; public string NomCompetition get return nomcompetition; set nomcompetition = value; string niveau; public string Niveau get return niveau; set niveau = value; int nbrejoueursmini; public int NbreJoueursMini get return nbrejoueursmini; set nbrejoueursmini = value; int nombrejournees; public int NombreJournees get return nombrejournees; set nombrejournees = value; int classementmaxi; public int ClassementMaxi get return classementmaxi; set classementmaxi = value; // Constructeurs public Competition() // Méthodes public string GetClassementMaxi() return "void"; public int GetbreJournees() //***************************************************** //***************Class Competition_Multi*************** //***************************************************** SLAM2 _ Programmation c# (Gestion club tennis) page 13

[Serializable] public class Competition_Multi : Competition int nbresimplef; public int NbreSimpleF get return nbresimplef; set nbresimplef = value; int nbresimpleh; public int NbreSimpleH get return nbresimpleh; set nbresimpleh = value; int nbredoubleixte; public int NbreDoubleixte get return nbredoubleixte; set nbredoubleixte = value; int nbredoubleh; public int NbreDoubleH get return nbredoubleh; set nbredoubleh = value; // Constructeurs public Competition_Multi() // Méthodes public int GetNbrePointsCompet() //****************************************************** //***************Class Competition_Simple*************** //****************************************************** [Serializable] public class Competition_Simple : Competition int nbresimplef; public int NbreSimpleF get return nbresimplef; set nbresimplef = value; SLAM2 _ Programmation c# (Gestion club tennis) page 14

int nbresimpleh; public int NbreSimpleH get return nbresimpleh; set nbresimpleh = value; // Constructeurs public Competition_Simple() // Méthodes public int GetNbrePointsCompet() //******************************************* //***************Class Journee*************** //******************************************* [Serializable] public class Journee // Collection LesResultats public ArrayList LesResultats = new ArrayList(); int num_journee; public int Num_journee get return num_journee; set num_journee = value; DateTime date; public DateTime Date get return date; set date = value; string lieu; public string Lieu get return lieu; set lieu = value; // Constructeurs public Journee() SLAM2 _ Programmation c# (Gestion club tennis) page 15

// Méthodes public string GetResultatJournee() return "void"; public bool GetGagne() return true; public bool VerifResultats() return true; //******************************************** //***************Class Resultat*************** //******************************************** [Serializable] public class Resultat // Collection LesParticipants public ArrayList LesParticipants = new ArrayList(); int num_match; public int Num_match get return num_match; set num_match = value; string score; public string Score get return score; set score = value; char decision; public char Decision get return decision; set decision = value; // Constructeurs public Resultat() // Méthodes public char GetDecision() return 'V'; SLAM2 _ Programmation c# (Gestion club tennis) page 16

public string GetScore() return "void"; SLAM2 _ Programmation c# (Gestion club tennis) page 17