Carnet d'adresse en c++

Contenu du snippet

C'est un petit exemple de carnet d'adresse en c++ (Borland), Il y a dees constructeurs , une classe et des fichiers ...;

Source / Exemple :


# include<iostream.h>
# include<conio.h>
# include<fstream.h>
# include<string.h>
# include<dos.h>

    class carnet
{

        struct donnee
        {
        	char nom[20];
        	char prenom[20];
        	char adnum[4];
        	char adrue[80];
        	char adtype[15];
        	//char adresse[80];
        	char tel[12];
        	char fax[12];
        	char email [26];
        };

    donnee info[100];
    donnee temp;

    int compte,n,index;
    char car;
public:

    //Constructeur qui lit les données stockées dans le ficarier

        carnet()
        {
        	 clrscr();
          cout<<"Lecture donnee..";
          sleep(1);
        	 compte=0;
          n=0;

        	//lit les données sur le hdd.
        	ifstream lecture("carnet.dat");

            	while(lecture.read((char *)&temp,sizeof(temp))!=0)
               {
            	 strcpy(info[compte].nom,temp.nom);
                strcpy(info[compte].adrue,temp.adrue);
                strcpy(info[compte].adtype,temp.adtype);
                strcpy(info[compte].adnum,temp.adnum);
            	 strcpy(info[compte].tel,temp.tel);
                strcpy(info[compte].fax,temp.fax);
            	 strcpy(info[compte].email,temp.email);
            	 if(temp.nom[0]!=' ')compte++;
            	}
            	lecture.close();
               cout<<"\n.Termine.\n\n";
               sleep(1);
        };
        //Detruit et ecris dans le fichier

        ~carnet()
        {
        	cout<<"Ecriture dans le fichier..";
        	//Ecris les données sur le DD.
        	ofstream ecriture("carnet.dat",ios::trunc|ios::binary);

            	for(n=0;n<compte;n++)

               {
            	 ecriture.write((char *)&info[n],sizeof(info[n]));
            	}

            	ecriture.close();
               cout<<"Termine\n\n";
               sleep(1);
        };

        //Methode de nouvelle insertion de données

            nouveau()
            {
            	cout<<"Nom:";
               cin>>temp.nom;
               cout<<endl;
               cout<<"Prenom:";
               cin>>temp.prenom;
               cout<<endl;
            	cout<<"Numero adresse:";
               cin>>temp.adnum;
               cout<<endl;
               cout<<"Type [allee,rue...]:";
               cin>>temp.adtype;
               cout<<endl;
               cout<<"Nom de la rue:";
               cin>>temp.adrue;
               cout<<endl;
            	cout<<"Telephone:";
               cin>>temp.tel;
               cout<<endl;
            	cout<<"Fax:";
               cin>>temp.fax;
               cout<<endl;
            	cout<<"Email:";
               cin>>temp.email;cout<<endl;
            	strcpy(info[compte].nom,temp.nom);
               strcpy(info[compte].prenom,temp.prenom);
               strcpy(info[compte].adnum,temp.adnum);
               strcpy(info[compte].adtype,temp.adtype);
               strcpy(info[compte].adrue,temp.adrue);
            	strcpy(info[compte].tel,temp.tel);
               strcpy(info[compte].fax,temp.fax);
            	strcpy(info[compte].email,temp.email);
            	compte++;
        		};

        //Methodes qui affichent et traite les donnéez

        int affichage()
        { n=0;
        
        	//Affiche les enregistrements
        	while(car!=27)
         {
          clrscr();
          cout<<"\t\t\t***********************************\n";
        	 cout<<"\t\t\t<ESC>     Quitter.\n\n";
          cout<<"\t\t\t<D>       Supprimer enregistrement.\n";
          cout<<"\t\t\t<HAUT>    Enregistrement precedent.\n";
          cout<<"\t\t\t<BAS>     Enregistrement suivant.\n";
        	 cout<<"\t\t\t<A>       Ajouter.\n";
          cout<<"\t\t\t<S>       Trier la base de donnees\n\n";
          cout<<"\t\t\t***********************************\n";
          cout<<"\n\n\t	  Nombre d'enregistrement :"<<compte;
        	 cout<<"\n\n\t	  Enregistrement Num:"<<(n+1)<<"\n\n";

          switch ( compte)
          {
          	case 0:
            	   cout<<"\t\t\t\tPlus d'enregistrements";
               	break;
          	default:
          			cout<<"\t\t\t\t"<<info[n].nom<<" "<<info[n].prenom<<endl<<"\t\t\t\t"<<info[n].adnum<<" "<<info[n].adtype<<" "
          			<<info[n].adrue<<endl<<"\t\t\t\t"<<info[n].tel<<endl;
        	 			cout<<"\t\t\t\t"<<info[n].fax<<endl<<"\t\t\t\t"<<info[n].email<<endl;
          }

        	 car=getch();clrscr();//if(car==0)car=getch();

        	 if (car==72 && n>0)n--;
        	 if (car==80 && n<compte-1)n++;
        	 if (car=='d'||car=='D')

          {//Suppression d'un enregistrement.
         	 if (compte!=0)
       		 	 {
       			   temp=info[n];
       				info[n]=info[compte-1];
          			compte--; return 1;
          			}

        	 }

        	 if(car=='a'||car=='A')return 2;
        	 if(car=='s'||car=='S')return 1;
        	}
        	return 0;//Retourne le nombre d'enregistrement.
    };

        tri()
        {
        //Tri a bulle

            	for(n=1;n<compte-1;n++)
               {
            	 index=1;

                	 while(index<=compte-n)
                   {

                    	 if(strcmp(info[index-1].nom,info[index].nom)>0)

                      {
                    		temp=info[index-1];
                    		info[index-1]=info[index];
                    		info[index]=temp;
                      }

                    	 index++;
                   }
        }

       }
}

ex;

main()
{

int command=205;

while(command!=0)
	{
   command= ex.affichage();//retourne un nombre

   if(command==2)
   	{
       ex.nouveau();

      }
   }
}

Conclusion :


C'est mon ap ... (Montmorency 95)

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.