C'est un programme qui à pour but de gérer les bouquins dans une bibliothèque
dans ce programme, il y a une petite particularité que je voudrais signaler : c'est que le nombre de bouquin n'augmente qu'après confirmation de l'utilisateur
Source / Exemple :
/*
Name: bilblio gestionner progect
Copyright: all right reserved (°c)2009 by Anon_inc.
Author: anass hajji
Date: 13/01/10 23:37
Description: devoir de gestion de bibliothèque
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <dos.h>
#include <string.h>
typedef struct
{
int jour;
int mois;
int annee;
}date;
typedef struct bib
{
int isbn;
char titre[81];
char auteur[81];
char editeur[81];
float prix;
date day;
}bib;
int recherche(bib t[],int n,int x);
void cadre(int dc,int fc,int dl,int fl,int c)
{
int i;
textcolor(c);
gotoxy(dc,dl); cprintf("É");
gotoxy(dc,fl); cprintf("È");
gotoxy(fc,dl); cprintf("»");
gotoxy(fc,fl); cprintf("¼");
for(i=dl+1;i<fl;i++)
{
gotoxy(dc,i); cprintf("º");
gotoxy(fc,i); cprintf("º");
}
for(i=dc+1;i<fc;i++)
{
gotoxy(i,dl); cprintf("Í");
gotoxy(i,fl); cprintf("Í");
}
}
void menu();
void remplissage(bib t[],int* n)
{
int j;float x;
int i1;
do
{
clrscr();
printf("bouquin numero %d",*n);
getch();
clrscr();
cadre(5,75,3,36,2);
gotoxy(21,20);puts("ISBN :");
gotoxy(21,22);puts("TITRE :");
gotoxy(21,24);puts("AUTEUR :");
gotoxy(21,26);puts("EDITEUR :");
gotoxy(21,28);puts("PRIX :");
gotoxy(21,30);puts("DATE EDITION:");
do{gotoxy(34,20);clreol();scanf("%d",&t[*n].isbn);}while(recherche(t,*n,t[*n].isbn)!=0);
do{gotoxy(34,22);clreol();scanf("%s",t[*n].titre);}while(strlen(t[*n].titre)>20);fflush(stdin);
do{gotoxy(34,24);clreol();scanf("%s",t[*n].auteur);}while(strlen(t[*n].auteur)>20);fflush(stdin);
do{gotoxy(34,26);clreol();scanf("%s",t[*n].editeur);}while(strlen(t[*n].editeur)>20);fflush(stdin);
gotoxy(34,28);scanf("%f",&x);t[*n].prix=x;
do{gotoxy(34,30);clreol();scanf("%d%d%d",&t[*n].day.jour,&t[*n].day.mois,&t[*n].day.annee);}while(t[*n].day.jour<=0||t[*n].day.jour>31||t[*n].day.mois<=0||t[*n].day.mois>12);
gotoxy(34,31);printf("continuer(1/0)?");
gotoxy(48,31);scanf("%d",&j);
}while(j!=0||*n>100);//i‡i,on suppose que notre gestionnaire ne peut supporter plus que 100 bouquins
menu();
}//fin de gestion de remplissage
void tri_auteur(bib t[],int n)
{
int i,j;
bib x;
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if(strcmp(t[i].auteur,t[j].auteur)>0)
{
x=t[i];
t[i]=t[j];
t[j]=x;
}
}
}
}
void tri_annee(bib t[],int n)
{
int i,j;
bib x;
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if(t[i].day.annee>t[j].day.annee||t[i].day.annee%100!=0&&t[i].day.annee%400==100&&t[j].day.annee%100==0&&t[j].day.annee%400!=100)//on a ajouté au controle de l'annee le fait que si la premiere annee est ou non bisextille
{
x=t[i];
t[i]=t[j];
t[j]=x;
if(t[i].day.mois<t[j].day.mois)
{
x=t[i];
t[i]=t[j];
t[j]=x;
}
}
}
}
}
void aff1(bib t[],int *n)
{
int i;
clrscr();
tri_auteur(t,*n);
for(i=0;i<=*n;i++)
{
gotoxy(21,20);puts("ISBN :");
gotoxy(21,22);puts("TITRE :");
gotoxy(21,24);puts("AUTEUR :");
gotoxy(21,26);puts("EDITEUR :");
gotoxy(21,28);puts("PRIX :");
gotoxy(21,30);puts("DATE D'EDITION:");
gotoxy(34,20);printf("%d",t[i].isbn);
gotoxy(34,22);puts(t[i].titre);
gotoxy(34,24);puts(t[i].auteur);
gotoxy(34,26);puts(t[i].editeur);
gotoxy(34,28);printf("%f",t[i].prix);
gotoxy(34,30);printf("%d/%d/%d",t[i].day.jour,t[i].day.mois,t[i].day.annee);
getch();
}
printf ("retour au menu principale dans 3sec!!");
delay(3000);
}
void aff2(bib t[],int *n)
{
int i;
clrscr();
tri_annee(t,*n);
for(i=0;i<*n;i++)
{
gotoxy(21,20);puts("ISBN :");
gotoxy(21,22);puts("TITRE :");
gotoxy(21,24);puts("AUTEUR :");
gotoxy(21,26);puts("EDITEUR :");
gotoxy(21,28);puts("PRIX :");
gotoxy(21,30);puts("DATE D'EDITION:");
gotoxy(34,20);printf("%d",t[i].isbn);
gotoxy(34,22);puts(t[i].titre);
gotoxy(34,24);puts(t[i].auteur);
gotoxy(34,26);puts(t[i].editeur);
gotoxy(34,28);printf("%f",t[i].prix);
gotoxy(34,30);printf("%d/%d/%d",t[i].day.jour,t[i].day.mois,t[i].day.annee);
getch();
}
printf("retour au menu principale dans 3sec!");
delay(3000);
}
int recherche2(bib t[],int n,int x);
int recherche(bib t[],int n,int x)
{
int i,j,find=0;
for(i=0;i<n;i++)
{
if(t[i].isbn==x){find=1;break;}
}
return find;
}
int recherche2(bib t[],int n,int x)
{
int i,j,find=0;
for(i=0;i<n;i++)
{
if(t[i].isbn==x){find=i;break;}
}
return find;
}
void add(bib t[],int *n)
{
remplissage(t,n);
menu();
}
void sup(bib t[],int *n,int num)
{
int i;
int find;
clrscr();
if(*n==0){clrscr();printf ("rien … supprimer");}
else
{
clrscr();
find=recherche2(t,*n,num);
if(find==0)
{clrscr();printf("element introuvable...impossible de supprimer");}
else
{
for(i=find;i<*n;i++)
t[i]=t[i+1];
printf("‚l‚ment supprim‚ avec succs");
}
}
}
void modif(bib t[],int n,int x)
{
int i,found;float price;
found=recherche(t,n,x);
clrscr();
if(found==0){clrscr();system("PAUSE");}
else
{
gotoxy(40,33);puts("entrer votre prix:");
gotoxy(58,33);scanf("%f",&price);
t[found].prix=price;
}
}
void menu()
{
//declaration des variables necessaires au traitement
bib t[100];
int i;
int x;
int isbn1;
int choix,CC;
int r;//recherche de l'isbn en cas de modification du prix d'un bouquin
char menu2[2][81]={"1-Par auteur","2-Par annee"};
char men[5][81]={"1-Remplissage.","2-Affichage.","3-Tri(par auteur/par annee).","4-Recherche.","5-Mises à jour"};
char menu3[2][81]={"1-Par auteur.","2-Par date."};
char menu4[3][81]={"1-Ajout bouquin.","2-Suppression bouquin.","3-modification prix."};
int leprix;
int C1,C2,C3;
int n;n=0;
//debut de traitement
clrscr();
cadre(5,75,3,36,1);//construction du cadre du menu principal-->remarque:la même fct de cadre sera appelée +rs fois
for(i=0;i<5;i++)
{gotoxy(i+10,4*i+10);puts(men[i]);}
gotoxy(40,33);printf ("entrer votre choix:");
gotoxy(59,33);scanf("%d",&choix);
switch(choix)
{
case 1:clrscr();
cadre(5,75,3,36,1);
gotoxy(21,20);
remplissage(t,&n);
menu();
break;
case 2:clrscr();
cadre(5,75,3,36,1);
for(i=0;i<2;i++)
{gotoxy(i+10,4*i+10);puts(menu2[i]);}
gotoxy(40,33);
puts("entrer votre choix:");
gotoxy(59,33);
scanf("%d",&C1);
switch(C1)
{
case 1:aff1(t,&n);
menu();
break;
case 2:aff2(t,&n);
menu();
break;
}
break;
case 3:clrscr();
cadre(5,75,3,36,1);
for(i=0;i<2;i++)
{gotoxy(i+10,4*i+10);puts(menu3[i]);}
gotoxy(40,33);puts("entrer votre choix:");
gotoxy(59,33);scanf("%d",&C2);
switch(C2)
{
case 1:tri_auteur(t,n);
menu();
break;
case 2:tri_annee(t,n);
menu();
break;
}
break;
case 4:clrscr();
gotoxy(40,25);puts("entrer isbn:");
gotoxy(53,25);scanf("%d",&x);
CC=recherche2(t,n,x);
printf("%d",CC);
if(CC==x) printf("bouquin TROUVE");
else if(CC==0)printf("bouquin introuvable!!");
getch();
menu();
break;
case 5:clrscr();
cadre(5,75,3,36,1);
for(i=0;i<3;i++)
{gotoxy(i+10,4*i+10);puts(menu4[i]);}
gotoxy(40,33);puts("entrer votre choix:");
scanf("%d",&C3);
switch(C3)
{
case 1:clrscr();
cadre(5,75,3,36,1);
add(t,&n);
menu();
break;
case 2:clrscr();
cadre(5,75,3,36,1);
clrscr();
gotoxy(30,25);
printf("entrer l'isbn:");
gotoxy(44,25);scanf("%d",&isbn1);
sup(t,&n,isbn1);
menu();
break;
case 3:clrscr();
cadre(5,75,3,36,1);
clrscr();
gotoxy(31,25);
printf("entrer le prix:");
gotoxy(44,25);scanf("%d",&leprix);
clrscr();
gotoxy(31,25);
puts("entrer isbn:");
gotoxy(44,25);scanf("%d",&isbn1);
r=recherche(t,n,isbn1);
if(r){
modif(t,n,leprix);
printf("prix modifié avec succes");
getch();
}
else {clrscr(); getch();}
menu();
}
getch();
menu();
break;
}
}
void main()
{
clrscr();
menu();
getch();
}