ENSA–Khouribga Dept Maths & Info Université Sultan Moulay Slimane Info 3 : Prog

ENSA–Khouribga Dept Maths & Info Université Sultan Moulay Slimane Info 3 : Programmation C Listes des Mini-Projets 1 Mini-Projet de programmation C 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 l’environnement CodesBlocks ou DevC (Winodows \ Linux \ MacOS), en langage C. 1.1 Objectifs du projet Le développement d’un projet est un moyen de progresser dans l’apprentissage d’un langage de program- mation. C’est dans cet esprit qu’il vous est proposé. Il doit vous permettre de consolider les connaissances acquises en TP et d’en acquérir de nouvelles. Pour cela, vous devrez développer un programme dont vous vous aurez vous même défini les fonctionna- lités. En fin de réalisation, votre travail sera évalué par les enseignants, lors d’une séance de présentation orale du travail réalisé. Valider les compétences du cours « Info 3 : Programmation C » par l’écriture d’un programme original d’environ 500 lignes en langage C, correspondant à 20 heures de travail effectives. 1.2 Organisation Les étudiants travaillent en binôme, groupe par groupe. 1.3 Ce qu’il faut rendre : * Le programme source complet largement commenté (obligatoire) * Un exécutable testé et opérationnel avec sa documentation d’installation * Un rapport (Maximum 15 pages) présentant le travail effectué : 1. Organisation du programme : découpage en fonctions, rôle de ces fonctions, explications du pro- gramme 2. Mode d’emploi du programme 3. Bilan qualitatif du travail, difficultés rencontrées, etc. Le tout sera placé dans un fichier archive (.zip ou .rar), à envoyer par mail à saadi_moyahoo.fr. 1.4 Évaluation du projet Elle repose sur les éléments suivants : * Le programme source : – Respect de l’énoncé, originalité du thème proposé – Qualité technique du programme : découpage en fonctions, instructions, algorithmes, efficacité, ges- tion des erreurs... * Présentation du programme : indentation, commentaires et nommage * Documentation fornie – Organisation du programme et son mode d’emploi – Bilan * Rapport de 15 pages au Maximum (imprimé). * Soutenance du travail API/2emeAnne page 1 Pr. M. SAADI – 2019-20 ENSA–Khouribga Dept Maths & Info Université Sultan Moulay Slimane – Démonstration du programme – Interrogation individuelle sur le travail réalisé 1.5 Calendrier et notation Les projets sont à rendre le 10 janvier 2020 (tout retard conduira à des pénalités). La soutenance du travail, d’une durée de 10 minutes, aura lieu la semaine suivante des examens. 2 Présentation du projet Vous devrez réaliser un programme permettant de gérer un système de réservation d’objets quelconques : Personnels (Employe et enfant), livres (Livres et emprunteurs), cassettes vidéo(DVD, Emprunteurs), chambres d’hôtel (Chambre et Client), voiture (Voiture et conducteur), ressources d’une école (salles de cours, enseigne- ments...), etc. Les exemples donnés ci-dessous concernent une gestion de prêts de livres dans une bibliothèque, et la gestion du personnels d’un groupe : 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 oeuvre 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. 2.1 Exemple 1 : Gestion de prêts de livres dans une bibliothèque 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). 2.2 Exemple 2 :Gestion de personnels Il faut créé un fichier où vous avez toutes les informations nécessaires concernant des personnes. Une personne est connue par son : nom, prénom, sexe, date de naissance (jour, mois, année), un identifiant le N° CIN (6 caractères ex : PP0001), le nombre d’enfants et leurs identifiants CIN identifie de manière unique une personne. Ex : perso.txt API/2emeAnne page 2 Pr. M. SAADI – 2019-20 ENSA–Khouribga Dept Maths & Info Université Sultan Moulay Slimane Mohamed Amine (nom prénom) M (Sexe). 10/02/1984 (date de naissance ). 0 (nombre d’enfants). P0001 (l‘identifiant) Said Mounir (nom prénom) M (Sexe). 11/08/1976 (date de naissance ). 0 (nombre d’enfants). P0002 (l‘identifiant) Fadili Zahra F 05/02/1966 3 P0005 P0006 P0007 (Ce sont les identifiants des enfants de Fadili ) P0002 Toutes les personnes seront stockées dans une liste qui est un pointeur. 3 Contraintes de programmation 3.1 Travail à faire Les traitements (fonctions) qu’il faut faire : – Charger les données du fichier dans une liste ou tableau (en utilisant une structure personne). – Ajouter dans la liste ou le tableau (donnée en paramètre). – Ajouter les enfants d’une personne (donnée en paramètre). – Supprimer de la liste ou tableau. – Consulter la liste ou tableau des personnes/adhérents. – Chercher une personne/adhérent par son nom ou prénom (utiliser fseek). – Afficher les informations sur les enfants d’une personne donnée en paramètre. – Retourner le nom de mère ou père d’une personne. (le nom de la personne est donné en paramètre) – Retourner les informations d’une personne/adhérent. – Modifier les enregistrements d’une personne. (Mise à jour). – Trier la liste des personnes/adhérents (selon le nom et l’identifiant). – Sauvegarder les données de la liste / tableau dans un fichier. – Toutes autres fonctions que vous considérez utiles ... 3.2 La fonction main : La fonction main() devra contenir un tableau ou liste de structures Adherent \ Personne et un tableau ou liste de structure Livre \ Groupe (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/clients – Ajouter, modifier ou supprimer un adhérent/client – afficher la liste des adhérents/clients par ordre alphabétique 2. Gestion des livres/produits – Ajouter, modifier ou supprimer un livre/produit – afficher la liste des livres/produits par ordre alphabétique (titre) API/2emeAnne page 3 Pr. M. SAADI – 2019-20 ENSA–Khouribga Dept Maths & Info Université Sultan Moulay Slimane 3. Gestion des emprunts/achats – Emprunter un livre / acheter un produit – Afficher la liste des livres empruntés / des produits vendus – Rendre un livre – Afficher la liste des emprunteurs de livres / la liste des clients par produit 4. Quitter le programme 3.3 Notes de mise en œuvre La suppression d’un élément du tableau ou liste implique de décaler la « case libre » vers la fin du tableau ou liste afin de supprimer les « trous » du tableau ou liste. API/2emeAnne page 4 Pr. M. SAADI – 2019-20 uploads/Litterature/ projet 7 .pdf

  • 30
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager