You are on page 1of 2

TP – Les Listes Chainées Simples

Objectif : apprendre à créer et à utiliser les types abstraits dynamique notamment les listes chainées simples ;
définir correctement la structure liste chainées simple, coder les opérations de base, créer une bibliothèque
spécifique à un contexte

On se propose de réaliser une application (version simplifiée) de gestion des clients pour le compte
d’un centre de remise en forme selon le cahier des charges ci-dessous.
Le centre souhaite offrir plusieurs services à ces clients (physiothérapie, soins esthétiques, salles de
sports, piscines, ..). Ces services sont identifiés par des numéros positifs à deux chiffres. Mais au
lancement de son activité, le centre commence par un service unique identifié 99 : la salle de sport
Le centre fonctionne comme suit :
Le client se présente à l’accueil avec sa carte d’accès et indique à l’hôtesse d’accueil le service qui
l’intéresse puis s’installe en salle d’attente (SA) le temps qu’une place se libère.
L’hôtesse d’accueil récupère la carte du client et effectue la saisie des données :
 NumC : Numéro de la carte,
 Nom : le prénom et le nom du client,
 Service : le service demandé - par défaut 99
 Access = Type de carte 0 ou 1;
En effet, Le centre de remise en forme propose à ces clients 2 types de cartes d’accès :
Un accès VIP (Access=1) qui donne une priorité d’accès au client au service demandé dès qu’il est
disponible
Un accès Standard (Access =0) qui donne au client un accès au service demandé après avoir servi
tous les VIPs en attente s’il en a.

Version 1 : le service unique


Dans cette version, par mesure de simplification on se limite au service unique : salle de sport,
identifié 99. La salle d’attente sera modélisée par une liste chaînée simple (LCS) de clients.
On vous demande de :
A. Définir les structures de données Client et Cellule.

J.Moslah
1
B. Définir le type liste comme un pointeur sur la structure Cellule (correspondant à une LCS).
C. D’écrire le code des prototypes des fonctions suivantes :
1. void saisirClient ( Client *c ); qui permet de saisir un seul Client (on suppose que tous les
clients demandent le service 99).
2. void afficherClient( Client c ); qui permet d'afficher un seul Client.
3. liste AjoutClient ( liste tete, Client c ) , qui permet d’ajouter un nouveau Client à la fin de
la liste identifiée par son pointeur tete.
4. void NbClientParAcces (liste tete, int *vip, int *standard), qui compte et retourne le
nombre de Clients VIP, et le nombre de Clients « standard ».
5. liste ChercherVIP ( liste tete ), qui cherche le premier client VIP sur la liste et renvoi son
adresse s’il existe et NULL sinon
6. liste ServirClient ( liste tete ), qui permet de servir un Client. Cette opération correspond
à une suppression de la lister effectuée de la manière suivante : s’il n’y a aucun Client VIP
en attente alors c’est le premier Client de la liste qui est supprimé (servi). Sinon on
supprime le premier Client VIP.
7. void ConsulterSA ( liste tete ) , qui affiche tous les clients en attente
8. void ConsulterSAParPriorite ( liste tete ) , qui affiche tout d’abord les Clients VIP, ensuite
autres Clients .
9. int SauvegarderClients (liste tete), qui permet de sauvegarder les Clients da la liste dans
un fichier « Clients.sa » est de renvoyer le nombre de clients sauvegardés ou -1 si
l’opération échoue
10. int ChargerListeClients(liste SA), qui permet de retourner dans une liste chaînée SA les
données stockés dans le fichier « Clients.sa ».

D. en faisant appel aux fonctions précédemment définies, Présenter (pour l’hôtesse d’accueil) un
menu de choix permettant de gérer la salle d’attente SA (SA étant la variable de type liste
représentant une salle d’attente)

J.Moslah
2

You might also like