NAVA : Notre Avenir Vs Appelle
مرحبا

Projet répertoire téléphone -langage c

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل

default Projet répertoire téléphone -langage c

مُساهمة من طرف nordnet في الأحد 3 يونيو - 8:47

nava

#include
#include
#include
#define DIM 100
enum champs {nom,prenom,num,rue,cp,ville,tel};
char *nomchamp[7]={"Nom", "Prénom", "Numéro", "Rue",
"Code Postal", "Ville", "Tel"};
typedef struct
{ http://www.nava.do-talk.com
char nom[15];
char prenom[20];
int num;
char rue[60];
long codepostal;
char ville[20];
char tel[15];
} fiche;

fiche *rech_nom(fiche *,char *);
fiche *rech_prenom(fiche *,char *);
fiche *rech_num(fiche *,char *);
fiche *rech_rue(fiche *,char *);
fiche *rech_cp(fiche *,char *);
fiche *rech_ville(fiche *,char *);
fiche *rech_tel(fiche *,char *);
fiche *rech_nom(fiche *,char *);

typedef fiche *ptrfiche;
typedef ptrfiche (*ptrfonction)(ptrfiche,char*);
ptrfonction tabfonction[7]={rech_nom, rech_prenom, rech_num,
rech_rue, rech_cp, rech_ville, rech_tel};

void affiche(fiche *f)
{
if(f->nom[0])
printf("%s %s\n%d, %s\n%ld %s\nTel : %s\n", f->nom, f->prenom,
f->num, f->rue, f->codepostal, f->ville, f->tel);
else
printf("fiche inconnue\n");
}
int idem(char *s1,char *s2)
/* compare deux chaines, dit si elles sont égales (1), ou non (0). On
pourrait supposer égalité quand la chaine s2 est incluse dans s1 */
{
return(strcmp(s1,s2)?0:1);
}

fiche *rech_nom(fiche *pf,char *n)
{while ((pf->nom[0])&&(!idem(pf->nom,n)))pf++;
return(pf);}
fiche *rech_prenom(fiche *pf,char *n)
{while ((pf->nom[0])&&(!idem(pf->prenom,n)))pf++;
return(pf);}
fiche *rech_num(fiche *pf,char *n)
{while ((pf->nom[0])&&(pf->num!=atoi(n)))pf++;
return(pf);}
fiche *rech_rue(fiche *pf,char *n)
{while ((pf->nom[0])&&(!idem(pf->rue,n)))pf++;
return(pf);}
fiche *rech_cp(fiche *pf,char *n)
{while ((pf->nom[0])&&(pf->codepostal!=atoi(n)))pf++;
return(pf);}
fiche *rech_ville(fiche *pf,char *n)
{while ((pf->nom[0])&&(!idem(pf->ville,n)))pf++;
return(pf);}
fiche *rech_tel(fiche *pf,char *n)
{while ((pf->nom[0])&&(!idem(pf->tel,n)))pf++;
return(pf);}

int choix(void)
{
char lig[40];
enum champs i,rep;
for (i=nom;i<=tel;i++) printf("%d:%s ",i,nomchamp[i]);
gotoxy(10,10); printf("\nou -1 pour quitter. Type de recherche désirée ? ");
gets(lig);
sscanf(lig,"%d",&rep);
return(rep);
}

void lecture(fiche *tab)
{
char lig[40];
do
{
gotoxy(10,10);printf("nom ?");
gets(tab->nom);
if(tab->nom[0])
{
gotoxy(10,10); printf("prénom ? ");
gets(tab->prenom);
gotoxy(10,10);printf("N° ? ");
gets(lig);
sscanf(lig,"%d",&(tab->num));
gotoxy(10,10); printf("rue ? ");
gets(tab->rue);
gotoxy(10,10);printf("code postal ? ");
gets(lig);
sscanf(lig,"%ld",&(tab->codepostal));
gotoxy(10,10);printf("ville ? ");
gets(tab->ville);
gotoxy(10,10); printf("n° de téléphone ? ");
gets(tab->tel);
}
}
while ((tab++)->nom[0]);
}

void main(void)
{
enum champs c;
char clef[40];
fiche tab[DIM];
lecture(tab);
do
{
if (((c=choix())<0)||(c>6)) break;
gotoxy(10,10);printf("quel(le) %s recherche-t'on ? ",nomchamp[c]);
gets(clef);
affiche(tabfonction[c](tab,clef));
}
while (c>=0);
}

-------------------------------------------------------

www.nava.do-talk.com
avatar
nordnet
الادارة العامة الحرة
الادارة العامة الحرة

ذكر
عدد الرسائل : 835
العمر : 29
المدينة : المغرب
نقاط : 1006579278
تاريخ التسجيل : 06/07/2007

http://nava.do-talk.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة

- مواضيع مماثلة

 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى