C++: Gestionnaire de rendez-vous

 

Objectifs

Ils sont de réviser la gestion de la mémoire (avec les problèmes de contruction par copie ...) et de revoir l'utilisation du lien dynamique (ici notamment en utilisant un objet comme critère de recherche dans un carnet de rendez-vous).
 

Sujet

On désire développer un gestionnaire de rendez-vous. Outre les fonctions de base (constructeur(s), destructeur ...), il est demandé de mettre en oeuvre les fonctions suivantes :
  • affichage dans un flot du rendez_vous passée en paramètre;
  • affichage dans un flot de tout un carnet;
  • saisie au clavier des données d'un rendez_vous;
  • ajout d'un rendez_vous dans un carnet;
  • recherche de tous les rendez_vous pour une date donnée; le résultat est inséré dans un carnet vierge passé en argument;
  • recherche de tous les rendez_vous pour un critère de recherche passé via un objet "critère de recherche"; le résultat est inséré dans un carnet vierge passé en argument;
  • suppression d'un rendez_vous;
  • suppression d'un lot de rendez-vous (par exemple, issu d'une recherche). 

Mise en œuvre

Le client ne veut pas de STL dans son code, en conséquence, le squelette des classes est obligatoirement le suivant :
 
class RendezVous
{
private:
  char * nom;
  char * date;
};
 
class Carnet
{
private:
  int nb;
  RendezVous ** rdvs;
};
 
Le programme doit comprendre un menu simple alphanumérique qui permet l'appel des fonctions précédentes. On peut, par exemple, exploiter l'embryon de code suivant :
 
void main_bidon()
{
  char c = 0;
  Carnet carnet;
 
  while (c != 'q') {
    cout << "(a)jouter (r)echercher (s)upprimer (l)ister (q)uitter\n";
    cin >> c;
    switch (c) {
      case 'a' : {
// Saisie et ajout d'un rendez-vous
break;
      }
      case 's' : {
// suppression d'un rendez-vous
break;
      }
      case 'l' : {
// affichage de tout le carnet
break;
      }
      case 'r' : {
// Recherche et affichage d'un rendez-vous ou d'un lot de rendez-vous
break;
      }
    }
  }
}