Projet langage c - mini-projet de programmation

1238 downloads 2474 Views 190KB Size Report
P. Lalevée / L Freund / C. Paul / A. Poupel. Page 1 sur 2. Mini-Projet de programmation. Il s'agit de produire un programme (fichiers source et un exécutable ...
ENSM.SE-SGC/CMP

Cycle ISMIN 1A

Programmation 1

Mini-Projet de programmation Il s'agit de produire un programme (fichiers source et un exécutable testé et opérationnel avec la documentation), dont le sujet est présenté dans la suite du document. Le développement de ce programme se fera obligatoirement sous environnement Linux, en langage C. Objectifs du projet Valider les compétences du cours « Programmation 1 » par l’écriture d’un programme original d’environ 500 lignes en langage C, correspondant à 20 heures de travail effectives. Organisation Les étudiants travaillent en binôme, groupe par groupe. Ce qu'il faut rendre : Le programme source complet largement commenté Un exécutable testé et opérationnel avec sa documentation d'installation Un rapport présentant le travail effectué : 1. Organisation du programme : découpage en fonctions, rôle de ces fonctions, explications du programme 2. Mode d’emploi du programme 3. Bilan qualitatif du travail, difficultés rencontrées, etc. Le tout sera placé dans un fichier archive1, à envoyer par mail à votre enseignant de groupe. Évaluation du projet Elle repose sur les éléments suivants : Le programme source : o Respect de l’énoncé, originalité du thème proposé o Qualité technique du programme : découpage en fonctions, instructions, algorithmes, efficacité, gestion des erreurs… Présentation du programme : indentation, commentaires et nommage Documentation fournie o Organisation du programme et son mode d’emploi o Bilan Soutenance du travail o Démonstration du programme o Interrogation individuelle sur le travail réalisé Calendrier et notation Les projets sont à rendre le 8 janvier 2010 (tout retard conduira à des pénalités). La soutenance du travail, d’une durée de 10 minutes, aura lieu 2 semaines plus tard. Présentation du projet Vous devrez réaliser un programme permettant de gérer un système de réservation d’objets quelconques : livres, cassettes vidéo, chambres d’hôtel, voiture, ressources d'une école (salles de cours, enseignements...), etc. Les exemples donnés ci-dessous concernent une gestion de 1

Voir http://www.emse.fr/~lalevee/ismin/programmation_1/projet pour créer cette archive.

P. Lalevée / L Freund / C. Paul / A. Poupel

Page 1 sur 2

ENSM.SE-SGC/CMP

Cycle ISMIN 1A

Programmation 1

prêts de livres dans une bibliothèque : vous devrez personnaliser votre programme en fonction de votre choix. A vous de choisir un système de gestion : soyez imaginatifs et créatifs Le modèle à mettre en œuvre contiendra deux structures différentes, dont les champs contiennent à minima les informations données ci-dessous. Vous devrez sans doute ajouter des champs dans ces structures en fonction du système de réservation que vous avez choisi. ADHERENT typedef struct SAdherent { int adh_Index; char adh_Nom[CMAX]; int adh_NbEmprunts; } Adherent;

LIVRE typedef struct SLivre { int liv_Index; char liv_Titre[CMAX]; char liv_Auteur[CMAX]; int liv_Emprunteur; } Livre;

adh_Index (resp. liv_Index) identifie de manière unique un adhérent (resp. un livre). Il vous appartient de gérer la notion de numéro unique. liv_Emprunteur contient la valeur de adh_Index de l’emprunteur du livre. Le nombre de livres empruntés par un adhérent est stocké dans adh_NbEmprunts (un adhérent peut donc emprunter plusieurs livres). Contraintes de programmation La fonction main() devra contenir un tableau de structures Adherent et un tableau de structure Livre (ce ne seront pas des variables globales). Vous devrez enregistrer les données de ces structures dans deux fichiers, en utilisant fscanf() et fprintf(). Votre programme devra proposer un menu comme celui-ci : (1) Gestion des adhérents Ajouter, modifier ou supprimer un adhérent afficher la liste des adhérents par ordre alphabétique (2) Gestion des livres Ajouter, modifier ou supprimer un livre afficher la liste des livres par ordre alphabétique (titre) (3) Gestion des emprunts Emprunter un livre Afficher la liste des livres empruntés Rendre un livre Afficher la liste des emprunteurs de livres (4) Quitter le programme Notes de mise en œuvre La suppression d'un élément du tableau implique de décaler la « case libre » vers la fin du tableau afin de supprimer les « trous » du tableau. Tous les tableaux doivent être passés par paramètre de la manière suivante : Si la fonction ne modifie pas le nombre borne d'éléments présents dans le tableau T dont le nombre maximal est taille, elle devra être déclarée comme suit : fonctionUtiliseTableau ( T[ ], int borne, int taille) ; Si la fonction modifie le nombre, pointé par pborne, d'éléments présents dans le tableau T dont le nombre maximal est taille, elle devra être déclarée comme suit : fonctionModifieTableau ( T[ ], int *pborne, int taille) Au retour de la fonction, *pborne donne le nouveau nombre d’éléments présents.

P. Lalevée / L Freund / C. Paul / A. Poupel

Page 2 sur 2