Guest User

Untitled

a guest
Dec 14th, 2018
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.15 KB | None | 0 0
  1. // LibSim.cpp : Defines the entry point for the console application.
  2. //
  3. #include "stdafx.h"/*
  4. #include <iostream>
  5. #include <stdio.h>
  6. #include <stdlib.h>
  7. #include <math.h>
  8. #include <time.h>
  9. using namespace std;*/
  10.  
  11. #define NBLIV 1000 //1.000 livres (unités, au total)
  12. #define NBREF 200 //nombre de réferences de livres
  13. #define NBUSAGERS 1000 //1.000 usagers
  14. #define NBMAXEXEMP 30 //nombre maximal d'exemplaires par référence
  15.  
  16. int tabdisp [NBREF][NBMAXEXEMP]; //tableau avec la disponibilité des examplaires
  17. int tabemprunt [NBREF][NBMAXEXEMP]; //tableau avec le nombre de fois les explaires ont été empruntés
  18. int tabusageremp [NBREF][NBMAXEXEMP]; //tableau avec les codes des usagers ayant emprunté/résérvé des exemplaires
  19. int tabretour [NBREF][NBMAXEXEMP]; //tableau avec les dates prevues de retour des exemplaires
  20. int nbexemp [NBREF]; //tableau avec le nombre d'exemplaires pour chaque référence
  21. int secdisc [NBREF]; //tableau avec la section disciplinaire por chauque référence
  22. int contlist = 1; //variable utilisée pour aider à la formatation de l'affichage
  23.  
  24. int aleatoire (int liminf, int limsup) //genère un chiffre aleatoire entre liminf et limsup
  25. {
  26. return liminf + rand () % (limsup - liminf + 1);
  27. }
  28.  
  29. void affichage (int i, int j) //i = nombre de référence, j = nombre d'exemplaire
  30. {
  31. int x;
  32.  
  33. printf ("Code du livre : %d.%d\n", i, j);
  34. switch (tabdisp[i][j])
  35. {
  36. case 1:
  37. printf ("Disponible\n");
  38. break;
  39. case 2:
  40. printf ("Emprunte\n");
  41. break;
  42. case 3:
  43. printf ("Reserve\n");
  44. break;
  45. case 4:
  46. printf ("Manquant\n");
  47. break;
  48. }
  49. printf ("Nombre d'exemplaires : %d\n", nbexemp[i]);
  50. printf ("Nombre d'emprunts total : %d\n", tabemprunt[i][j]);
  51.  
  52. if (tabdisp[i][j] == 2)
  53. {
  54. printf ("Numero de l'usager ayant emprunte ce livre : %d\n", tabusageremp[i][j]);
  55. printf ("Date prevue de retour : %d\n", tabretour[i][j]);
  56. }
  57. else if (tabdisp[i][j] == 3)
  58. {
  59. printf ("Numero de l'usager ayant reserve ce livre : %d\n", tabusageremp[i][j]);
  60. }
  61.  
  62. printf ("\n");
  63.  
  64. if (contlist == 10) //pause d'affichage toutes les 10 livres
  65. {
  66. printf ("Tapez '1' pour continuer la liste\n");
  67. scanf ("%d", &x);
  68. while (x != 1)
  69. {
  70. printf ("Chiffre invalide, tapez '1' pour continuer la liste\n");
  71. scanf ("%d", &x);
  72. }
  73. contlist = 1;
  74. }
  75. contlist++;
  76. }
  77.  
  78. void recherchecategorie (int selection)
  79. {
  80. int i, j;
  81.  
  82. for (i = 1; i <= NBREF; i++)
  83. {
  84. if (secdisc[i] == selection) //checks if correct category
  85. {
  86. for (j = 1; j <= nbexemp[i]; j++) //if so, zoom at books inside that reference
  87. affichage (i, j);
  88. }
  89. }
  90. }
  91.  
  92. void rechercheref (int ref)
  93. {
  94. int j;
  95.  
  96. for (j = 1; j <= nbexemp [ref]; j++) //affichage d'informations pour chaque exemplaire
  97. affichage (ref, j);
  98. }
  99.  
  100. void remplirtabdisp ()
  101. {
  102. int i, j;
  103.  
  104. for (i = 1; i <= NBREF; i++)
  105. for (j = 1; j <= nbexemp[i]; j++) //limite les colonnes pour chaque ligne selon le nombre d'exemplaires par référence
  106. tabdisp[i][j] = aleatoire (1, 4); //attribue entre 1 et 4 à chaque exemplaire pour définir les disponibilités individuelles
  107. }
  108.  
  109. void remplirtabemprunt ()
  110. {
  111. int i, j;
  112.  
  113. for (i = 1; i <= NBREF; i++)
  114. for (j = 1; j <= nbexemp[i]; j++)
  115. tabemprunt[i][j] = aleatoire (1, 200); //attribue entre 1 et 200 au nombre d'emprunts pour chaque exemplaire
  116. }
  117.  
  118. void remplirtabusageremp ()
  119. {
  120. int i, j;
  121.  
  122. for (i = 1; i <= NBREF; i++)
  123. for (j = 1; j <= nbexemp[i]; j++)
  124. {
  125. if (tabdisp[i][j] == 2 || tabdisp[i][j] == 3) //si exemplaire emprunté ou résérvé
  126. tabusageremp[i][j] = aleatoire(1, NBUSAGERS); //attribue un numéro d'usager l'ayant emprunté ou résérvé
  127. }
  128. }
  129.  
  130. void remplirtabretour (int jour, int mois, int annee)
  131. {
  132. int i, j;
  133. int jo, m, a; //le jour, le mois et l'année pour la date de retour de l'exemplaire
  134.  
  135. for (i = 1; i <= NBREF; i++)
  136. {
  137. for (j = 1; j <= nbexemp[i]; j++)
  138. {
  139. if (tabdisp[i][j] == 2)
  140. {
  141. jo = jour + aleatoire (0, 21); //date pour rendre l'exemplaire jusqu'à + 3 semaines
  142. m = mois;
  143. a = annee;
  144. if (jo > 30)
  145. {
  146. jo -= 30;
  147. m++;
  148.  
  149. if (m > 12)
  150. {
  151. m -= 12;
  152. a++;
  153. }
  154. }
  155. tabretour[i][j] = a * 10000 + 100 * m + jo;
  156. }
  157. }
  158. }
  159. }
  160.  
  161. void remplirsecdisc ()
  162. {
  163. int i;
  164.  
  165. for (i = 0; i < NBREF; i++)
  166. secdisc[i] = aleatoire (1, 9);
  167. }
  168.  
  169. int main()
  170. {
  171. int categorie; //choix de la catégorie de livre
  172. int ref; //référence du livre à chercher
  173. int annee, mois, jour; //date actuelle
  174. int i; //contrôleur de boucle
  175.  
  176. srand ((unsigned)time(NULL)); //initialisation de la fonction rand
  177.  
  178. for (i = 1; i <= NBREF; i++) //determiner combien d'exemplaires il y a par référence (fixe)
  179. nbexemp[i] = aleatoire (1, NBMAXEXEMP);
  180.  
  181. printf ("Entrez l'annee\n");
  182. scanf ("%d", &annee);
  183. printf ("Entrez le mois\n");
  184. scanf ("%d", &mois);
  185. while (mois > 12 || mois < 1)
  186. {
  187. printf ("Le mois saisi n'est pas valable, merci de le saisir a nouveau\n");
  188. scanf ("%d", &mois);
  189. }
  190. printf ("Entrez le jour (max 30)\n");
  191. scanf ("%d", &jour);
  192. while (jour > 30 || jour < 1)
  193. {
  194. printf ("Le mois saisi n'est pas valable, merci de le saisir a nouveau\n");
  195. scanf ("%d", &jour);
  196. }
  197.  
  198. remplirtabdisp ();
  199. remplirtabemprunt ();
  200. remplirtabusageremp ();
  201. remplirtabretour (jour, mois, annee);
  202. remplirsecdisc ();
  203.  
  204. do
  205. {
  206. //menu screen, authentication and options
  207. printf ("Tapez '1' pour chercher des livres par categorie ou '2' pour tapez le code d'un livre directement. ('0' pour quitter)\n");
  208. scanf ("%d", &i);
  209. while (i < 0 || i > 2)
  210. {
  211. printf ("Choix invalide, merci de resaisir votre choix\n");
  212. scanf ("%d", &i);
  213. }
  214. if (i == 1)
  215. {
  216. printf ("Quelle categorie de livre voulez-vous chercher ? 1 pour biologie, 2 chimie, 3 electronique, 4 informatique, 5 mathematiques, 6 physique, 7 droit, 8 economie, 9 langues\n");
  217. scanf ("%d", &categorie);
  218. while (categorie < 1 || categorie > 9)
  219. {
  220. printf ("Choix invalide, merci de resaisir votre choix\n");
  221. scanf ("%d", &categorie);
  222. }
  223. recherchecategorie (categorie);
  224. }
  225. else printf ("Tapez la reference du livre souhaite\n");
  226. scanf ("%d", &ref);
  227.  
  228. rechercheref (ref);
  229.  
  230. } while (i != 0);
  231.  
  232. return 0;
  233. }
Add Comment
Please, Sign In to add comment