Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // LibSim.cpp : Defines the entry point for the console application.
- //
- #include "stdafx.h"/*
- #include <iostream>
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- #include <time.h>
- using namespace std;*/
- #define NBLIV 1000 //1.000 livres (unités, au total)
- #define NBREF 200 //nombre de réferences de livres
- #define NBUSAGERS 1000 //1.000 usagers
- #define NBMAXEXEMP 30 //nombre maximal d'exemplaires par référence
- int tabdisp [NBREF][NBMAXEXEMP]; //tableau avec la disponibilité des examplaires
- int tabemprunt [NBREF][NBMAXEXEMP]; //tableau avec le nombre de fois les explaires ont été empruntés
- int tabusageremp [NBREF][NBMAXEXEMP]; //tableau avec les codes des usagers ayant emprunté/résérvé des exemplaires
- int tabretour [NBREF][NBMAXEXEMP]; //tableau avec les dates prevues de retour des exemplaires
- int nbexemp [NBREF]; //tableau avec le nombre d'exemplaires pour chaque référence
- int secdisc [NBREF]; //tableau avec la section disciplinaire por chauque référence
- int contlist = 1; //variable utilisée pour aider à la formatation de l'affichage
- int aleatoire (int liminf, int limsup) //genère un chiffre aleatoire entre liminf et limsup
- {
- return liminf + rand () % (limsup - liminf + 1);
- }
- void affichage (int i, int j) //i = nombre de référence, j = nombre d'exemplaire
- {
- int x;
- printf ("Code du livre : %d.%d\n", i, j);
- switch (tabdisp[i][j])
- {
- case 1:
- printf ("Disponible\n");
- break;
- case 2:
- printf ("Emprunte\n");
- break;
- case 3:
- printf ("Reserve\n");
- break;
- case 4:
- printf ("Manquant\n");
- break;
- }
- printf ("Nombre d'exemplaires : %d\n", nbexemp[i]);
- printf ("Nombre d'emprunts total : %d\n", tabemprunt[i][j]);
- if (tabdisp[i][j] == 2)
- {
- printf ("Numero de l'usager ayant emprunte ce livre : %d\n", tabusageremp[i][j]);
- printf ("Date prevue de retour : %d\n", tabretour[i][j]);
- }
- else if (tabdisp[i][j] == 3)
- {
- printf ("Numero de l'usager ayant reserve ce livre : %d\n", tabusageremp[i][j]);
- }
- printf ("\n");
- if (contlist == 10) //pause d'affichage toutes les 10 livres
- {
- printf ("Tapez '1' pour continuer la liste\n");
- scanf ("%d", &x);
- while (x != 1)
- {
- printf ("Chiffre invalide, tapez '1' pour continuer la liste\n");
- scanf ("%d", &x);
- }
- contlist = 1;
- }
- contlist++;
- }
- void recherchecategorie (int selection)
- {
- int i, j;
- for (i = 1; i <= NBREF; i++)
- {
- if (secdisc[i] == selection) //checks if correct category
- {
- for (j = 1; j <= nbexemp[i]; j++) //if so, zoom at books inside that reference
- affichage (i, j);
- }
- }
- }
- void rechercheref (int ref)
- {
- int j;
- for (j = 1; j <= nbexemp [ref]; j++) //affichage d'informations pour chaque exemplaire
- affichage (ref, j);
- }
- void remplirtabdisp ()
- {
- int i, j;
- for (i = 1; i <= NBREF; i++)
- for (j = 1; j <= nbexemp[i]; j++) //limite les colonnes pour chaque ligne selon le nombre d'exemplaires par référence
- tabdisp[i][j] = aleatoire (1, 4); //attribue entre 1 et 4 à chaque exemplaire pour définir les disponibilités individuelles
- }
- void remplirtabemprunt ()
- {
- int i, j;
- for (i = 1; i <= NBREF; i++)
- for (j = 1; j <= nbexemp[i]; j++)
- tabemprunt[i][j] = aleatoire (1, 200); //attribue entre 1 et 200 au nombre d'emprunts pour chaque exemplaire
- }
- void remplirtabusageremp ()
- {
- int i, j;
- for (i = 1; i <= NBREF; i++)
- for (j = 1; j <= nbexemp[i]; j++)
- {
- if (tabdisp[i][j] == 2 || tabdisp[i][j] == 3) //si exemplaire emprunté ou résérvé
- tabusageremp[i][j] = aleatoire(1, NBUSAGERS); //attribue un numéro d'usager l'ayant emprunté ou résérvé
- }
- }
- void remplirtabretour (int jour, int mois, int annee)
- {
- int i, j;
- int jo, m, a; //le jour, le mois et l'année pour la date de retour de l'exemplaire
- for (i = 1; i <= NBREF; i++)
- {
- for (j = 1; j <= nbexemp[i]; j++)
- {
- if (tabdisp[i][j] == 2)
- {
- jo = jour + aleatoire (0, 21); //date pour rendre l'exemplaire jusqu'à + 3 semaines
- m = mois;
- a = annee;
- if (jo > 30)
- {
- jo -= 30;
- m++;
- if (m > 12)
- {
- m -= 12;
- a++;
- }
- }
- tabretour[i][j] = a * 10000 + 100 * m + jo;
- }
- }
- }
- }
- void remplirsecdisc ()
- {
- int i;
- for (i = 0; i < NBREF; i++)
- secdisc[i] = aleatoire (1, 9);
- }
- int main()
- {
- int categorie; //choix de la catégorie de livre
- int ref; //référence du livre à chercher
- int annee, mois, jour; //date actuelle
- int i; //contrôleur de boucle
- srand ((unsigned)time(NULL)); //initialisation de la fonction rand
- for (i = 1; i <= NBREF; i++) //determiner combien d'exemplaires il y a par référence (fixe)
- nbexemp[i] = aleatoire (1, NBMAXEXEMP);
- printf ("Entrez l'annee\n");
- scanf ("%d", &annee);
- printf ("Entrez le mois\n");
- scanf ("%d", &mois);
- while (mois > 12 || mois < 1)
- {
- printf ("Le mois saisi n'est pas valable, merci de le saisir a nouveau\n");
- scanf ("%d", &mois);
- }
- printf ("Entrez le jour (max 30)\n");
- scanf ("%d", &jour);
- while (jour > 30 || jour < 1)
- {
- printf ("Le mois saisi n'est pas valable, merci de le saisir a nouveau\n");
- scanf ("%d", &jour);
- }
- remplirtabdisp ();
- remplirtabemprunt ();
- remplirtabusageremp ();
- remplirtabretour (jour, mois, annee);
- remplirsecdisc ();
- do
- {
- //menu screen, authentication and options
- printf ("Tapez '1' pour chercher des livres par categorie ou '2' pour tapez le code d'un livre directement. ('0' pour quitter)\n");
- scanf ("%d", &i);
- while (i < 0 || i > 2)
- {
- printf ("Choix invalide, merci de resaisir votre choix\n");
- scanf ("%d", &i);
- }
- if (i == 1)
- {
- 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");
- scanf ("%d", &categorie);
- while (categorie < 1 || categorie > 9)
- {
- printf ("Choix invalide, merci de resaisir votre choix\n");
- scanf ("%d", &categorie);
- }
- recherchecategorie (categorie);
- }
- else printf ("Tapez la reference du livre souhaite\n");
- scanf ("%d", &ref);
- rechercheref (ref);
- } while (i != 0);
- return 0;
- }
Add Comment
Please, Sign In to add comment