Projet en langage C

Fermé
isaline Messages postés 25 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 18 avril 2010 - 15 sept. 2007 à 12:45
 soya - 29 avril 2008 à 19:08
Bonjour

J'ai un projet en langage C qui consiste a faire un programme qui enregistre les contacts comme dans un telephone portable.le programme doit permettre a l'utilisateur de de faire (ajout,suppression,modification et recherche d'un contact).
Les infos sur le contact sont:nom, numero de telephone portable , numero bureau, Email etc.
Merci bien de vouloir m'aider je compte sur vous pr rectifier ce que j'ai deja fait.

Au plaisir,
A voir également:

13 réponses

Ou peut on voir le code?
0
isaline Messages postés 25 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 18 avril 2010 5
15 sept. 2007 à 13:25
Bonjour,

Merci bien de preter attention a mon probleme, mais en realite ce que j'ai pu faire c'est l'interface et en plus je n'ai pas ca actuellement.
Mon souhait est qu'on me propose si possible un programme qui repond a ce que j'ai decrit.l'interface m'importe peu en realite c'est l'enregistrement, la suppression,la modification la recherche qui m'interesse.
Merci bien de bien vouloir m'aider
0
Isaline, je ne connais pas encore très bien ce forum, mais dans tous les forums d'aide à la programmation que je connais, on ne donne pas de programme tout fait, ca n'a aucun intéret. Le but est de t'aider pour que TU fasses TON travail. Sinon tu n'apprendras rien et ton travail n'aura aucune valeur.

Donc on va essayer de t'aider, mais c'est à toi de travailler, nous on ne sert qu'à t'orienter si tu es perdue.

Sans avoir le sujet exact de ton projet (ce serait pas mal que tu nous le donne d'ailleurs, si tu veux qu'on t'aide), je pense déjà que tu peux envisager une structure Contact, qui contiendra toutes les données relatives à un contact, donc le nom, le prénom, le numéro de portable, tout ce que tu veux d'autre. Tu auras également besoin de plusieurs fonctions relatives à la manipulation de ces contacts, ajouter un contact dans le répertoire (qui sera très certainement modélisé par un tableau de structures Contact), en supprimer un, en modifier un, afficher les informations d'un contact, rechercher un contact, ou que sais-je encore.

L'idée est donc de créer un fichier Contact.cpp et un fichier Contact.h, ainsi qu'un fichier main.cpp, qui stockera le tableau contenant tous les contacts et fera tous les appels de fonctions nécessaires.

Je pense que ces conseils devraient t'aider à t'orienter un peu plus sur ce que tu dois faire. Si tu n'es pas trop sure, tu peux poster ici la définition de ta structure et les prototypes des fonctions, histoire qu'on voit ca ensemble avant que n'écrives le corps des fonctions. Si tu as d'autres questions ou si quelquechose dans mes explications ne te parait pas clair, n'hésite pas à redemander. Poste-nous également le sujet exact de ton projet, tout ce qui est demandé de faire, afin qu'on puisse vérifier ensemble qu'on a bien tout traité.
0
isaline Messages postés 25 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 18 avril 2010 5
15 sept. 2007 à 14:36
Merci bien pour toutes ces informations, ce weekend je prendrai tout mon temps pour rediger mon projet et je vous ferai part de ca le lundi avec le sujet complet.
Merci bien pour tout et bon weekend.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
J'aimerais bien quand même avoir ton sujet complet. Parce que pour t'aider, si j'ai le temps d'y réfléchir, c'est mieux. Et aussi parce que ca me fera un bon entrainement de le faire en C++ ;)
0
isaline Messages postés 25 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 18 avril 2010 5
15 sept. 2007 à 15:02
Sujet:
Faire un progamme en C qui va enregistrer les contacts comme dans un telephone portable.Entre autre ce programme doit permettre a l'utisateur d'enregistrer les numeros, de le modifier, de supprimer un contact, de chercher un contact en saisissant le nom par exemple en fait ce qu'il ya dans le repertoire telephonique.
Tu dois egalement rediger un rapport qui explique ce que tu as utilise (fonction par exemple pourquoi tu as prefere les tableaux ou les pointeur ...).
Les informations sur le contact sont les suivant: nom, prenom, numero de telephone portable, numero de telephone bureau, numero de telephone domicile et E-mail.
0
Oki, bon ben je planche de mon côté en c++ pour m'entrainer et pour le plaisir. Le côté conception et spécifités sera commun en C et C++, à peu de choses près, donc je pourrai voir avec toi pour la suite.

Un dernier conseil: pense à bien plancher sur papier à toutes les choses que tu dois faire, notamment l'organisation du programme en différents fichiers, les protoypes des fonctions à écrire, leurs liens entre elles, etc. L'idéal est de faire un schéma, qui montre bien les appels successifs de fonctions suivant ce que demande l'utilisateur, l'ajout d'un contact, l'affichage du répertoire, etc.

Bon courage, et tiens-nous au courant!
0
ibma Messages postés 103 Date d'inscription jeudi 26 juillet 2007 Statut Membre Dernière intervention 17 juin 2010 20
15 sept. 2007 à 20:55
bonjour
vous pouvez aussi utiliser une base de données qui va manipuler qui stocke les informations relatives, en utilisant le langage SQL, c'est mieux avec une interface en c++
mais il faut connaitre bien ce langage et aussi faire un pont entre le langage c++ et la base de données.
merci.
0
bonjour, mon idée consiste à définir une nouvelle structure et utiliser les listes chainées. Et pour le choix des fonctions comme l'ajout et tout je propose d'utiliser Case et je suis là pour vos questions sur l'approfondissement des idées. A plus
0
Ibma : Isaline doit réaliser son projet en C, donc on peut oublier tout ce qui est bd et C++. Pour ma part, je débute en C++ après pas mal de temps passé sur le C, et je n'ai aucune notion en base de données, donc j'oublie aussi, bien que j'aie conscience que le sujet s'y prête parfaitement.

Mehood : Il me semble qu'elle doit pouvoir trier les contacts stockées, et dans ce cas, le tableau me semble plus facile d'utilisation. Néanmoins, c'est vrai que la suppression d'un contact dans une liste chainée serait plus facile. Ce qui pourrait donc être envisagé, c'est l'utilisation d'une liste chaînée qui ajouterait un nouveau contact au bon emplacement dans une liste déjà triée par ordre alphabétique, mais les listes chainées ne sont pas d'une utilisation facile.

Hum.. Après relecture du sujet qu'Isaline nous a donné, il n'y est fait aucune mention de tri. Donc la liste chaînée s'avère certainement le plus pratique.

Pour moi, ce sera les listes chaînées parce que je les maîtrise déjà, et je n'ai pas entendu parler de différences entre le C et le C++ à ce sujet, donc ca devrait aller.

Pour Isaline, il faudrait voir si elle connaît les listes chaînées et sait les utiliser. Sinon, on pourra toujours lui apprendre et l'aider, mais il faudrait aussi faire en fonction de la date de rendu de son projet. Pour ma part, je suis encore en vacances peandant une semaine, je suis donc largement disponible pour aider si besoin :)
0
Bonjour a tous merci bien pour le soutien.j'ai suivi vos conseil et voici ce que j'ai pu faire.si vous pouvez m'aider j'ai essaye en vin mais je n'arrive pas a finaliser le projet.je compte sur votre gentillesse.

voici le code:

#include<stdio.h>
#include<conio.h>
#include<string.h>
typedef struct
{
char nom,fonction[40];
char num_portable,num_domicile,num_bureau[30];
char couriel[40];
int valid;
}

contact;
//*****************************************************************************
void supprimer_contact(FILE *f)
{ char rep;
contact C;
char trouve=0;
char nom,fichier[30];
flushall();
f=fopen("fichier","r");
printf("\n\n\n\n\t\t\tENTRE LE NOM DU CONTACT : ");
scanf("%s",&nom);
flushall();
while(fread(&C,sizeof(contact),1,f)&&(C.valid==1))
{
if (C.nom==nom)
{
trouve=1;
clrscr();
}
if (trouve==0)
{
printf("\n\n\n\n\n\n\n\t\t\t\tCONTACT INCONNU " );
fclose(f);
}
else
{
gotoxy(15,38);printf("SUPPRIMER CE CONTACT ? (O/N) : ");
gotoxy(50,38); scanf("%c",&rep);
if ((rep=='O') || (rep=='o'))
{
//fseek(&C,sizeof(contact)*C.nom,SEEK_CUR);
C.valid=0;
fwrite(&C,sizeof(contact),1,f);
}
}
printf("\n\n\t\t\t APPUYER SUR UNE TOUCHE POUR CONTINUER ");
getch();

}
}
//**********************************************************************
void modifier_contact(FILE *f)
{
}
//****************************************************************
//****************************************************************
void ajouter_contact(FILE *f)
{
// clrscr();
contact C;
char choix1='o';
char rep,fichier[20];
while((choix1=='o')||(choix1=='O'))
{
f=fopen(fichier,"a+");
flushall();
clrscr();
gotoxy(10,3);printf(" --------------------------------------------");
gotoxy(10,3);printf("!");
gotoxy(10,4);printf("!");
gotoxy(10,6);printf("!");
gotoxy(10,5);printf("!");
gotoxy(10,7);printf("!");
gotoxy(10,8);printf("!");
gotoxy(10,9);printf("!");
gotoxy(10,10);printf("!");
gotoxy(10,11);printf("!");
gotoxy(10,12);printf("!");
gotoxy(10,13);printf("!");
gotoxy(10,14);printf("!");
gotoxy(10,15);printf("!");
gotoxy(10,16);printf("!");
gotoxy(10,17);printf("!");
gotoxy(10,18);printf("!");
gotoxy(10,19);printf("!");
gotoxy(10,20);printf("!");
gotoxy(10,22);printf("!");
gotoxy(10,21);printf("!");
gotoxy(10,23);printf("!");
gotoxy(18,4);printf("AJOUTER UN CONTACT");
gotoxy(12,9);printf("NOM :");
gotoxy(12,11);printf("FONCTION :");
gotoxy(12,13);printf("NøPORTABLE :");
gotoxy(12,15);printf("NøDOMICILE :");
gotoxy(12,17);printf("NøBUREAU :");
gotoxy(12,19);printf("Email : ");

gotoxy(10,23);printf("---------------------------------------------");
gotoxy(55,3);printf("!");
gotoxy(55,4);printf("!");
gotoxy(55,5);printf("!");
gotoxy(55,6);printf("!");
gotoxy(55,7);printf("!");
gotoxy(55,8);printf("!");
gotoxy(55,9);printf("!");
gotoxy(55,10);printf("!");
gotoxy(55,11);printf("!");
gotoxy(55,12);printf("!");
gotoxy(55,13);printf("!");
gotoxy(55,14);printf("!");
gotoxy(55,15);printf("!");
gotoxy(55,16);printf("!");
gotoxy(55,17);printf("!");
gotoxy(55,18);printf("!");
gotoxy(55,19);printf("!");
gotoxy(55,20);printf("!");
gotoxy(55,22);printf("!");
gotoxy(55,21);printf("!");
gotoxy(55,23);printf("!");


gotoxy(28,9);scanf("%s",&C.nom);
gotoxy(28,11);scanf("%s",&C.fonction);
gotoxy(28,13);scanf("%s",&C.num_portable);
gotoxy(28,15);scanf("%s",&C.num_domicile);
gotoxy(28,17);scanf("%s",&C.num_bureau);
gotoxy(28,19);scanf("%s",&C.couriel);
flushall();
gotoxy(13,21);printf("SAUVEGARDER CET ENREGISTREMENT (O/N) : ");
rep=getch();
if ((rep=='o')||(rep=='O'))
C.valid=1;
fwrite(&C,sizeof(contact),1,f);
clrscr();
gotoxy(15,12);printf("\t\t\tAJOUTER CONTACT ?(o/n):\n ");
gotoxy(30,20);choix1=getch();
}
fclose(f);
clrscr();
printf("\n\t\tFRAPPER UNE TOUCHE POUR CONTINUER\n");
getch();
}

//**************************************************************************************************************
void lister_contact(FILE *f,char *fichier)
{
contact C;
flushall();
f=fopen(fichier,"r");
rewind(f);
while(fread(&C,sizeof(contact),1,f)!=0);
{ printf("Nom Fonction Nø Portable NøBureau NøDomicile Email\n");
printf(" %s %s %s %s %s %s\n\n",C.nom,C.fonction,C.num_portable,C.num_domicile,C.num_bureau,C.couriel);
}
fclose(f);
printf("Frapper une touche pour continuer ");
getch();
}

//**********************************************************************************************************************************
void rechercher_contact(FILE *f)
{
contact C;
char trouve=0;
char nom,fichier[25];
f=fopen(fichier,"r");
printf("ENTRE LE NOM A RECHERCHER : ");
scanf("%s",&nom);
flushall();
while((fread(&C,sizeof(contact),1,f)!=0)&&(trouve==0))
{
if (C.nom==nom)
{ trouve=1;
clrscr();
printf("CONTACT EXISTANT");
}
}
if (trouve==0)

printf("\nCONTACT INCONNU " );
fclose(f);

// printf(" \n\nFRAPPER UNE TOUCHE POUR CONTINUER ");
getch();
}

void main()
{ FILE *C;
char choix;
char fichier[25];
do
{
clrscr();
printf("************************************************************\n\n");
gotoxy(1,2);printf("*");
gotoxy(60,2);printf("*");
gotoxy(1,3);printf("*");
printf("\t\t\t MENU GENERAL\n");
gotoxy(60,3);printf("*\n");
gotoxy(1,4);printf("*");
printf("\t\t\t------------\n\n\n");
gotoxy(60,4);printf("*\n");
gotoxy(1,5);printf("*");
printf("\tAJOUTER UN CONTACT-----------------------> 1\n\n");
gotoxy(60,5);printf("*\n");
gotoxy(1,6);printf("*");
gotoxy(60,6);printf("*\n");
gotoxy(1,7);printf("*");
printf("\tLISTER TOUS LES CONTACT------------------> 2\n\n");
gotoxy(60,7);printf("*\n");
gotoxy(1,8);printf("*");
gotoxy(60,8);printf("*\n");
gotoxy(1,9);printf("*");
printf("\tMODIFIER UN CONTACT----------------------> 3\n\n");
gotoxy(60,9);printf("*\n");
gotoxy(1,10);printf("*");
gotoxy(60,10);printf("*\n");
gotoxy(1,11);printf("*");
printf("\tRECHERCHER UN CONTACT--------------------> 4\n\n");
gotoxy(60,11);printf("*\n");
gotoxy(1,12);printf("*");
gotoxy(60,12);printf("*\n");
gotoxy(1,13);printf("*");
printf("\tSUPPRIMER UN CONTACT---------------------> 5\n\n");
gotoxy(60,13);printf("*\n");
gotoxy(1,14);printf("*");
gotoxy(60,15);printf("*\n");
gotoxy(1,15);printf("*");
gotoxy(60,14);printf("*\n");
gotoxy(1,16);printf("*");
gotoxy(60,15);printf("*\n");
gotoxy(60,16);printf("*\n");
gotoxy(1,17);printf("*");
printf("\tSORTIR-----------------------------------> S ");
gotoxy(60,17);printf("*\n");
gotoxy(1,18);printf("*");
gotoxy(60,18);printf("*\n");
gotoxy(1,19);printf("*");
printf("\tVOTRE CHOIX : ");
gotoxy(60,19);printf("*");
gotoxy(60,20);printf("*\n");
gotoxy(1,20);printf("*");
gotoxy(60,21);printf("*\n");
gotoxy(1,21);printf("*");
printf("\n************************************************************\n");
gotoxy(23,19);choix=getchar();

flushall();
switch(choix)
{
case'1':clrscr();ajouter_contact(C);break;
case'2':clrscr();lister_contact(C,fichier);break;
// case'3':clrscr();modifier_contact(C);break;
case'4':clrscr();rechercher_contact(C);break;
case'5':clrscr();supprimer_contact(C);break;
}
}
while((choix!='S')&&(choix!='s'));
}

Au plaisir,
0
w1sm3rhi11 Messages postés 372 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 30 mars 2009 53
20 sept. 2007 à 12:12
Salut,

Je pense qu'ici la manipulation de fichier est la meilleure solution mis à part si tu désires enregistrer 1 000 000 de contacts ^^

La liste chaînée n'est, à mon avis, pas très adaptée pour des raisons de sauvegarde du carnet de contacts. Dans ce cas, il faudrait envisager une sauvegarde en dur de la liste chaînée lors de la fermeture du programme et la reconstruction de la liste chaînée lors du démarrage.

La liste chaînée est adaptée pour le stockage de données temporaires.

@isaline :

Je pense que pour simplifier les traitements de fichiers tu n'auras pas besoin de la structure contacts mais uniquement d'écrire les différentes informations du contacts en les séparant par un simple '\t' dans ton fichier et de séparer les contacts par un '\n'.
Comme ca lors de l'enregistrement de tes contacts tu n'auras besoin que de simples char* que tu effaces pour les réutiliser pour le contact suivant.

Pour la lecture de ton fichier texte, tu pourras utiliser une boucle while de lecture ligne par ligne dont la condition d'arrêt sera EOF. Chaque ligne sera contenue dans un buffer et tu récupères les champs du buffer à l'aide des '\t' qui les séparent avec un sscanf par exemple.

Pour la suppression d'un contact : tu parcours ton fichier ligne par ligne en lisant le paramètre 'Nom' et si tu le trouves, tu effaces la ligne.

Je pense que ca pourrait simplifier ton code :)

J'espère que ca t'aidera et n'hésites pas si ca ne t'as pas paru clair


@Toupi

Les différence entre le C et le C++ pour les listes chaînées sont principalement l'utilisation des classes au lieu des struct et l'utilisation de la STL qui implémente un objet liste chaînée disposant de méthodes qui roxx ^^

@+
0
je dois finir un mini projet en langage c avant lundi prochain, normalement on aurai du le preparer avant mais il y avait des problemes,,,,le projet concerne la gestion des notes des élèves :definir le nom et le prenom de l'élève,sa matriculle
son code ,les matieres........c trop long et ça demande de connaitre comment construire un fichier ...vous pouvez m aider?
0