Advertisement
Guest User

Untitled

a guest
Oct 12th, 2017
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 6.02 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #define MAX 5
  5. #define TAILLE 30
  6.  
  7. struct uniteEnseignement
  8. {
  9.     char identifiant[10+1];
  10.     char nom_unite[200+1];
  11.     int nombre_credits;
  12.     char nom_responsable[60+1];
  13.     struct uniteEnseignement* prerequises[MAX];
  14.     int nombreUePrerequises;
  15.     struct uniteEnseignement* corequises[MAX];
  16.     int nombreUeCorequises;
  17. };
  18.  
  19. int menu();
  20. void encodageUnite(struct uniteEnseignement*);
  21. void afficherUnitesEncodees(struct uniteEnseignement[], int);
  22. void afficherIdUnite(struct uniteEnseignement);
  23. void afficherDetails(struct uniteEnseignement);
  24. void ajouterUePreRequise(struct uniteEnseignement*, struct uniteEnseignement*);
  25. void ajouterUeCoRequise(struct uniteEnseignement*, struct uniteEnseignement*);
  26.  
  27. int main()
  28. {
  29.     struct uniteEnseignement mesUnites[TAILLE];
  30.     struct uniteEnseignement ue;
  31.     int ueChoisie, ueRequisChoisie, choixMenu, nombreUnites = 0;
  32.     do
  33.     {
  34.         switch(choixMenu = menu())
  35.         {
  36.         case 1:
  37.             encodageUnite(&ue);
  38.             mesUnites[nombreUnites] = ue;
  39.             nombreUnites++;
  40.             break;
  41.         case 2:
  42.             if (nombreUnites < 2)
  43.             {
  44.                 printf("Vous n'avez pas assez d'UE pour cette action\n");
  45.             } else
  46.             {
  47.                 printf("Choisissez une unité à laquelle vous souhaitez affecter un prérequis\n");
  48.                 afficherUnitesEncodees(mesUnites, nombreUnites);
  49.                 scanf("%i%*c", &ueChoisie);
  50.                 printf("Choisissez le prérequis à affecter à cette unité\n");
  51.                 afficherUnitesEncodees(mesUnites, nombreUnites);
  52.                 scanf("%i%*c", &ueRequisChoisie);
  53.                 ajouterUePreRequise(&mesUnites[ueChoisie-1], &mesUnites[ueRequisChoisie-1]);
  54.             }
  55.             break;
  56.         case 3:
  57.             if (nombreUnites < 2)
  58.             {
  59.                 printf("Vous n'avez pas assez d'UE pour cette action\n");
  60.             } else
  61.             {
  62.                 printf("Choisissez une unité à laquelle vous souhaitez affecter un corequis\n");
  63.                 afficherUnitesEncodees(mesUnites, nombreUnites);
  64.                 scanf("%i%*c", &ueChoisie);
  65.                 printf("Choisissez le corequis à affecter à cette unité\n");
  66.                 afficherUnitesEncodees(mesUnites, nombreUnites);
  67.                 scanf("%i%*c", &ueRequisChoisie);
  68.                 ajouterUeCoRequise(&mesUnites[ueChoisie-1], &mesUnites[ueRequisChoisie-1]);
  69.             }
  70.             break;
  71.         case 4:
  72.             if (nombreUnites < 1)
  73.             {
  74.                 printf("Vous n'avez pas assez d'UE pour cette action\n");
  75.             } else
  76.             {
  77.                 printf("Pour quelle unite souhaitez-vous les détails?\n");
  78.                 afficherUnitesEncodees(mesUnites, nombreUnites);
  79.                 scanf("%i%*c", &ueChoisie);
  80.                 afficherDetails(mesUnites[ueChoisie-1]);
  81.  
  82.             }
  83.             break;
  84.         case 5:
  85.             return EXIT_SUCCESS;
  86.         }
  87.     } while (choixMenu != 0);
  88.     return EXIT_SUCCESS;
  89. }
  90.  
  91. int menu()
  92. {
  93.     int choix;
  94.     printf("------------------------------------------\n");
  95.     printf("Faites votre choix : \n");
  96.     printf("1. Encoder une unité d'enseignement.\n");
  97.     printf("2. Ajouter un prérequis.\n");
  98.     printf("3. Ajouter un corequis\n");
  99.     printf("4. Afficher les infos d'une UE\n");
  100.     printf("5. Quitter\n");
  101.     printf("------------------------------------------\n");
  102.     scanf("%i%*c", &choix);
  103.     return choix;
  104. }
  105.  
  106. void encodageUnite(struct uniteEnseignement *unite)
  107. {
  108.     printf("Identifiant (format : B1-Q1-UE1) : "); scanf("%10[^\n]%*c", unite->identifiant);
  109.     printf("Nom de l'unité : "); scanf("%200[^\n]%*c", unite->nom_unite);
  110.     printf("Nombre de crédits : "); scanf("%i%*c", &(unite->nombre_credits));
  111.     printf("Nom du responsable : "); scanf("%60[^\n]%*c", unite->nom_responsable);
  112. }
  113.  
  114. void afficherUnitesEncodees(struct uniteEnseignement mesUnites[], int nombreUnites)
  115. {
  116.     int i;
  117.     for(i=0; i<nombreUnites;i++)
  118.     {
  119.         printf("%i. ", i+1);
  120.         afficherIdUnite(mesUnites[i]);
  121.     }
  122. }
  123.  
  124. void afficherIdUnite(struct uniteEnseignement unite)
  125. {
  126.     printf("%s\n", unite.identifiant);
  127. }
  128.  
  129. void afficherDetails(struct uniteEnseignement unite)
  130. {
  131.     int i,j;
  132.  
  133.     printf("------------------------------------------\n");
  134.     printf("Identifiant : %s\n", unite.identifiant);
  135.     printf("Nom de l'unité : %s\n", unite.nom_unite);
  136.     printf("Nombre de crédits : %i\n", unite.nombre_credits);
  137.     printf("Nom du responsable : %s\n", unite.nom_responsable);
  138.     if (unite.nombreUePrerequises > 0)
  139.     {
  140.         printf("Unités prérequises : ");
  141.         for(i=0; i < unite.nombreUePrerequises; i++)
  142.         {
  143.             printf("%s |",unite.prerequises[i]->identifiant);
  144.         }
  145.         printf("\n");
  146.     }
  147.     if (unite.nombreUeCorequises > 0)
  148.     {
  149.         printf("Unités corequises :");
  150.         for(j=0; j < unite.nombreUeCorequises; j++)
  151.         {
  152.             printf(" %s |",unite.corequises[j]->identifiant);
  153.         }
  154.         printf("\n");
  155.     }
  156. }
  157.  
  158. void ajouterUePreRequise(struct uniteEnseignement* ueBase, struct uniteEnseignement* ueRequise)
  159. {
  160.     if (ueBase->nombreUePrerequises > 5)
  161.     {
  162.         printf("Cette UE possède déjà 5 prérequis");
  163.     }
  164.     else if (ueBase->identifiant[1] == 1)
  165.     {
  166.         printf("Impossible d'ajouter un prerequis à une UE du bloc1");
  167.     }
  168.     else
  169.     {
  170.         ueBase->prerequises[ueBase->nombreUePrerequises] = ueRequise;
  171.         ueBase->nombreUePrerequises++;
  172.         printf("Prérequis ajouté\n");
  173.     }
  174. }
  175.  
  176. void ajouterUeCoRequise(struct uniteEnseignement* ueBase, struct uniteEnseignement* ueRequise)
  177. {
  178.     if (ueBase->nombreUeCorequises > 5)
  179.     {
  180.         printf("Cette UE possède déjà 5 corequis");
  181.     }
  182.     else
  183.     {
  184.         ueBase->corequises[ueBase->nombreUeCorequises] = ueRequise;
  185.         ueBase->nombreUeCorequises++;
  186.         printf("Corequis ajouté\n");
  187.     }
  188. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement