begin process at 2012 02 12 08:32:12
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > CARNET D'ADRESSE

CARNET D'ADRESSE


 Information sur la source

Note :
Aucune note
Catégorie :Divers Niveau :Débutant Date de création :20/03/2003 Date de mise à jour :20/03/2003 12:06:06 Vu :4 947

Auteur : AmK

Ecrire un message privé
Commentaire sur cette source (14)
Ajouter un commentaire et/ou une note

 Description

ideal pour comprendre la manipulation de fichiers et aussi les fonctions ce carnet d'adresse permet de stocker : nom prenom adresse d'une personne !

Source

  • #include <stdio.h> /* printf et scanf bien sur :) */
  • #include <conio.h> /*pour getche(); et getch(); */
  • #include <string.h> /* pour strcpy */
  • typedef struct adresse {int no;char cp[50],rue[50],ville[50];};
  • typedef struct personne{char nom[20],prenom[20];
  • adresse adre;
  • };
  • int menu(); /* declaration de fonction */
  • void main(void)
  • {
  • int choix;
  • personne e;
  • char nom[20],prenom[20]; /* pour la modification */
  • char rep;
  • FILE *x,*y; /*pointeurs de fichiers x-->pointeur source y-->pointeur cible */
  • do
  • {
  • choix=menu();
  • switch(choix)
  • {
  • /*****************************************************************************/
  • case 1:
  • x=fopen("Agenda.txt","a+");
  • do {
  • clrscr();
  • printf("Infos de la personne : nom,prenom !");
  • scanf(" %s %s",e.nom,e.prenom);
  • printf("\n adresse (no de rue,rue,ville,code postal) ?");
  • scanf("\n %d %s %s %s",&e.adre.no,e.adre.rue,e.adre.ville,e.adre.cp);
  • fwrite(&e,sizeof(personne),1,x);
  • printf("\n encore ?o/n");
  • rep=getche();
  • }while (rep=='o'); /* tant que la reponse est o on execute le do */
  • fclose(x);
  • break;
  • /*******************************************************************************/
  • case 2:
  • clrscr();
  • x=fopen("Agenda.txt","r"); /* ouverture du fichier en mode lecture */
  • fread(&e,sizeof(personne),1,x);
  • while (!feof(x)) /* tant que non fin de fichier */
  • {
  • printf("\n %s %s",e.nom,e.prenom);
  • printf("\n %d %s %s %s",e.adre.no,e.adre.cp,e.adre.rue,e.adre.ville);
  • fread(&e,sizeof(personne),1,x);
  • }
  • fclose(x);
  • getch();
  • break;
  • /*******************************************************************************/
  • case 3:
  • printf("\n Quel est le nom et le prenom de la personne ?");
  • scanf("%s %s",nom,prenom);
  • x=fopen("Agenda.txt","r+"); /* source */
  • y=fopen("Agenda.txt","r+"); /* cible */
  • fread(&e,sizeof(personne),1,x);
  • while (!feof(x)) /* tant que non fin de fichier */
  • {
  • if (strcmp(nom,e.nom)==0 && (prenom,e.prenom)==0)
  • {
  • printf("\n nouvelle adresse !?");
  • scanf("%d %s %s %s",&e.adre.no,e.adre.cp,e.adre.rue,e.adre.ville);
  • }
  • fwrite(&e,sizeof(personne),1,y);
  • fread(&e,sizeof(personne),1,x);
  • }
  • fclose(x);
  • fclose(y);
  • }
  • }while(choix!=4);
  • }
  • /*******************************************************************************/
  • int menu() /* definition de fontion */
  • {
  • int choix;
  • clrscr();
  • printf("\n 1.Création \n 2.Consultation \n 3.Modification 4.Quitter \n");
  • scanf("%d",&choix);
  • return choix;
  • }
  • /********************************************************************************/
  • /* FIn du code */
#include <stdio.h>    /* printf et scanf bien sur :) */
#include <conio.h>   /*pour getche(); et getch(); */
#include <string.h> /* pour strcpy */
typedef struct adresse {int no;char cp[50],rue[50],ville[50];};
typedef struct personne{char nom[20],prenom[20];
				adresse adre;
				};
int menu(); /* declaration de fonction */
void main(void)
{
int choix;
personne e;
char nom[20],prenom[20]; /* pour la modification */
char rep;
FILE *x,*y;  /*pointeurs de fichiers x-->pointeur source y-->pointeur cible */
do
{
choix=menu();
switch(choix)
{
/*****************************************************************************/
case 1:
x=fopen("Agenda.txt","a+");
do {
clrscr();
printf("Infos  de la personne : nom,prenom !");
scanf(" %s %s",e.nom,e.prenom);
printf("\n adresse (no de rue,rue,ville,code postal) ?");
scanf("\n %d %s %s %s",&e.adre.no,e.adre.rue,e.adre.ville,e.adre.cp);
fwrite(&e,sizeof(personne),1,x);
printf("\n encore ?o/n");
rep=getche();
}while (rep=='o');  /* tant que la reponse est o on execute le do */
fclose(x);
break;

/*******************************************************************************/
case 2:
clrscr();
x=fopen("Agenda.txt","r");           /* ouverture du fichier en mode lecture */
fread(&e,sizeof(personne),1,x);
while (!feof(x))          /* tant que non fin de fichier */
{
printf("\n %s %s",e.nom,e.prenom);
printf("\n %d %s %s %s",e.adre.no,e.adre.cp,e.adre.rue,e.adre.ville);
fread(&e,sizeof(personne),1,x);
}
fclose(x);
getch();
break;
/*******************************************************************************/
case 3:
printf("\n Quel est le nom et le prenom de la personne ?");
scanf("%s %s",nom,prenom);

x=fopen("Agenda.txt","r+"); /* source */
y=fopen("Agenda.txt","r+"); /* cible  */

fread(&e,sizeof(personne),1,x);
while (!feof(x))   /* tant que non fin de fichier */
{
if (strcmp(nom,e.nom)==0 && (prenom,e.prenom)==0)
{
printf("\n nouvelle adresse !?");
scanf("%d %s %s %s",&e.adre.no,e.adre.cp,e.adre.rue,e.adre.ville);
}
fwrite(&e,sizeof(personne),1,y);
fread(&e,sizeof(personne),1,x);
}
fclose(x);
fclose(y);
}
}while(choix!=4);
}

/*******************************************************************************/
int menu()       /* definition de fontion */
{
int choix;
clrscr();
printf("\n 1.Création \n 2.Consultation \n 3.Modification 4.Quitter \n");
scanf("%d",&choix);
return choix;
}
/********************************************************************************/

                                     /* FIn du code */

 Conclusion

voila je debute donc vos commentaires et conseils seront les bienvenus !


 Sources du même auteur

Source avec Zip Source avec une capture LIBRAIRIE DE TRAITEMENT DU SIGNAL
Source avec Zip SNAKE GRAPHIQUE ( 1/2 JOUEURS ET IA)
Source avec Zip BLACKJAK AVEC ALLEGRO !!!
Source avec Zip DEMO AVEC ALLEGRO !(HERVÉ AND DADY)
Source avec Zip Source avec une capture SNAKE EN MODE TEXTE !(LAHNACHE)

 Sources de la même categorie

Source avec Zip ÉDITEUR DE RECTANGLES EN CONSOLE par seoseo
CONVERSION DE FICHIER EN FICHIER BMP par seoseo
Source avec Zip DETECTEUR EJP par idpro
Source avec Zip Source avec une capture SHOP MANAGER CONSOLE SUR WINDOWS par antho974
Source avec Zip JOUR DE NAISSANCE par fredg19

Commentaires et avis

Commentaire de superpa le 20/03/2003 13:39:49

C'est bien fait.
Dommage que c'est du C on l'a déjà dit 36.000 fois. Le site c'est cppfrance comme C Plus Plus
=&gt; flux (*stream) plutôt que printf ou encore fopen.

Je voudrais pas (me) faire de la pub mais pour un carnet d'adresse en mode graphique et avec accès à une bd:

http://www.cppfrance.com/article.aspx?Val=1557

Sinon c'est aussi dommage que tu ouvres et ferme le fichier. Utilise plutôt fseek. D'accord, l'intéret ici est limité mias ca pourrait être utile dans d'autres applics. Enfin de toute façon cette manière de faire est "deprecated" ;-)

Commentaire de AmK le 20/03/2003 15:56:08

bon en ce qui concerne www.cppfrance.com comme ya pas wwwcfrance.com alors je pense que on a le droit de poster des codes sources C ici :)
sinon pour fseek oui tu as raison je devrais mieu l'utiliser
merci pour tes conseils

Commentaire de Draven le 22/03/2003 11:27:02

salut superpa
qaund j ouvre la page cppfrance.com le titre qui apparait c'est  "CPPFRANCE.Com | C/C++ ..." et le logo en haut a gauche c'est "C /C++ CODES SOURCES"

a ton avis le C il signifie quoi???

Commentaire de AmK le 23/03/2003 09:25:53

ben oui lol :)

Commentaire de superpa le 25/03/2003 12:46:44

T'as raison Draven, j'avais jamais fait attention.
Sorry, AmK.
N'empêche que ...

Commentaire de Draven le 25/03/2003 21:39:39

N'empeche que??????

Commentaire de superpa le 26/03/2003 08:28:02

N'empêche que ... c'est pas la meilleure manière de programmer.
Si on a inventé le C++ et qu'on l'a développé, c'est qu'il doit avoir un certain nombre d'avantages: classes (variables + fonctions ou méthodes dans la même entité), polymorphisme (plusieurs fonctions portant le même nom et qui différent par au moins un paramètre), les flux, hértiage (classe qui récupère les propriétés d'une autre),...
T'as déjà remarqué comme il est facile de créer une fenêtre en C++ ou d'afficher une variable de n'importe quel type?
En plus, C++ est extensible (surcharge des opérateurs, manipulateurs, ...).
Mais je reconnais quand même qu'on a le droit de laisser des sources C sur ce site. C'est peut être utile à ceux qui sont restés à l'âge du bronze ;-)

Commentaire de AmK le 26/03/2003 09:13:50

oui je sais on me l'a deja dit !
mais n'oublie pas que je debute et puis de toute façon dans 1mois je me mets au c++ quzand j'aurai bien maitrise le C(c comme ça :))
sinon pour la surcharge de fontion elle est presente aussi en C !!!

Commentaire de superpa le 26/03/2003 14:16:21

Je voudrais pas que qqn croie que je veux avoir le dernier mot mais je ne pense pas que la surcharge des fonctions est présente en C.
Je m'explique:
tu peux peut être créer des fonctions qui portent le même nom et les compiler. Ca ne provoque aucune erreur ni à la ompil ni à l'exécution.
Mais si c'est possible (en tout cas je crois) c'est parce que ton compilateur est en réalité un compilateur C++ (genre Visual Studio).
Peut être que je me trompe mais en tout cas, quand j'ai commencé le C c'était pas possible. Et c'était il n'y a pas si longtemps de ça (3ans ce qui prouve que j'ai aussi débuté avec le C ;-) ). Mon compilateur Turbo C ne voulait pas.

Commentaire de GoldenEye le 26/03/2003 17:09:57

superpa =&gt; c'est quoi ce racisme anti C ? Je reconnais que le C++ possède des atouts de par sa philosophie objet mais bon ne me dis pas que pour faire un prog de carnet d'adresses tu dois oblgiatoirement passer par le C++. C'est comme traverser une rue de 10 m de large avec une ferrari alors qu'on peut le faire à pied.
Le meilleur langage est celui qui est le plus adapté à la finalité du programme.

Commentaire de AmK le 28/03/2003 00:12:50

bien dit ça :p
le debat continue ?

Commentaire de superpa le 28/03/2003 08:25:48

Si tu insistes, le débat peut continuer même s'il s'agit d'une perte de temps.
GoldenEye, t'as 100% raison avec ta définition du meilleur langage.
Mais comme tu l'as dit, les atouts de C++ (et de sa philosophie objet) pourraient apporter qqch à ce carnet d'adresse:
Imagine une petite classe qui encapsulerait les mécanismes des flux:
AmK créerais une classe qui contient un pointeur vers un ifstream et un ofstream et un certain nombre de méthodes utiles à la réalisation de certaines opérations sur les fichiers.
Certes, ça prendrait plus de temps pour concevoir ce simplissime(excuse-moi AmK) carnet d'adresse mais si le nombre de fonctionnalité augmentait, ça pourrait s'avérer payant.
En d'autres termes, si on lui demandait (par après) plus que de traverser la rue : traverser la ville, il serait content d'avoir sa Ferrari.
Encore une fois, ce ne sera pas le cas ici, donc l'intérêt est limité je le concède.
Mais il pourrait réutiliser sa classe Fichier pour d'autres applications. Et là, le temps perdu à la création du programme serait gagné.
J'espère que cette discution futile s'arrêtera là.

Commentaire de DragonicFlash le 19/09/2003 18:33:18

Salut tout le monde !!   ^_^

Et bien moi, je suis très content d'un tel programme. Je suis moi-même dévelopeur, et ça fait un bon bout de temps que je n'ai pas touché à du C ou un langage similaire. Je suis en train de me reformer à ce langage... Quel plaisir de retrouver un p'tit prog' sympa regroupant quelques fonctions importantes, tel que l'utilisation de fichier, tableaux, et autres.

Pour ma part, je pense que ce programme est "basique", et peut être optimisé. Mais il n'est pas ici pour cela. Il est ici pour que les gens ayant "perdu" ce langage ou en train de l'apprendre voient certains aspects du programme.

Désolé de te décevoir SuperPa, mais maintenant, dans les entreprises, c'est C ou C#. Le C++, malgré ses apports, commence à se voir abandonner, et le C is still alive. Il disparaîtra aussi, et on parlera que du C# et des technologies .NET. Mais en attendant, je trouve cela sympa. Il faut quand même comprendre l'esprit du site, qui est pour tous les niveaux...

Si tu parles d'optimisation, je vais t'en parler. Un carnet d'adresse, je t'en fait un en 5mn avec un C# ou même Visual Basic. Ca, c'est pour le temps de prog'... LOL Si, au contraire, tu veux optimiser en langage d'exécution, et bien prends des lunettes 3D, relies tes veines à de la caféine pure, réserves-toi 6 mois, et écris ton appli avec des 0 et des 1. Y aura pas exécution plus rapide que celle donnée direct' au proc'. Enfin bref, je ne sais pas si tu m'auras compris, mais le faire comme tu le suggères rend le prog' plus stylé, voire professionnel, mais ne change rien à la qualité de l'appli ou sa vitesse (Cf. choix du langage en fonction des besoins...). La seule chose que tu feras, c'est d'embrouiller ceux qui commence ou recommence le C à ses débuts. Mais recommencer le code, avec cette philosophie, avec un "niveau" modifié, OK. Mais laissons les petites appli aux petits gens, par pitié ! Et le C++ ne serait rien sans le C, ne l'oublions pas !

Commentaire de DragonicFlash le 19/09/2003 18:34:49

Avec tout ça, j'ai oublié de dire ce que j'avais à dire... LOL
Ouais... chuis pô content, car le prog' ne compile pas. Ce n'est pas très gentil !

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,622 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales