Mini répertoire téléphonique

Description

C'est un répertoire téléphonique en mode console. Il est programmé orienté objet.
il peut enregistrer le nom, prénom, numéro téléphone de domicile, numéro téléphone portable, numéro téléphone du travail, adresse de la personne, code postal, ville et 3 adresses mail. La sauvegarde se fait avec un fichier .txt qui se trouve dans le même répertoire que le fichier .exe (\bin\Debug).

Source / Exemple :


using System;
using System.IO;			//Pour utiliser les flux
using System.Collections;	//Pour utiliser l'ArrayList
using nsClearConsole;		//Pour effacer la console

namespace repert
{
	/// <summary>
	/// Description résumée de Class1.
	/// </summary>
	
	// ----- - CLASSE personne - ------	
	class personne
	{
		private string nom;
		private string prenom;
		private string tel_home;	//telephone domicile
		private string tel_port;	//telephone portable
		private string tel_bur;		//telephone du bureau
		private string adr_n_rue;	//numero de rue
		private string adr_rue;		//nom de la rue
		private string adr_cp;		//code postal
		private string adr_ville;	//ville
		private string email1;		//adresse mail 1
		private string email2;		//adresse mail 2
		private string email3;		//adresse mail 3

		//---------------------- Constructeur (sans parametre)-------------------
		public personne ()
		{
			nom="";
			prenom="";
			tel_home="";
			tel_port="";
			tel_bur="";
			adr_n_rue="";
			adr_rue="";
			adr_cp="";
			adr_ville="";
			email1="";
			email2="";
			email3="";
		}
		//---------------------- Constructeur (avec ts parametres)---------------
		public personne(string p_nom,string p_prenom,string p_teldomicile,
		string p_telportabl,string p_telbureau,string p_adnumrue,
		string p_adrue,string p_adcodepostal,string p_adville,
		string p_email1,string p_email2,string p_email3)
		{
			nom=p_nom;
			prenom=p_prenom;
			tel_home=p_teldomicile;
			tel_port=p_telportabl;
			tel_bur=p_telbureau;
			adr_n_rue=p_adnumrue;
			adr_rue=p_adrue;
			adr_cp=p_adcodepostal;
			adr_ville=p_adville;
			email1=p_email1;
			email2=p_email2;
			email3=p_email3;
		}
		//---------------------- Get et Set (nom) -------------------------------
		public string getnom()
		{
			return (nom);
		}
		public void setnom(string n)
		{
			nom=n;
		}
		//---------------------- Get et Set (prenom) ----------------------------
		public string getprenom()
		{
			return (prenom);
		}
		public void setprenom(string p)
		{
			prenom=p;
		}
		
		//---------------------- Get et Set (telephone home) --------------------
		public string gettel_h()
		{
			return (tel_home);
		}
		
		public void settel_h(string t)
		{
			tel_home=t;
		}
		
		//---------------------- Get et Set (telephone port) --------------------
		public string gettel_p()
		{
			return (tel_port);
		}
		public void settel_p(string tp)
		{
			tel_port=tp;
		}
		//---------------------- Get et Set (telephone bureau) ------------------
		public string gettel_b()
		{
			return (tel_bur);
		}
		public void settel_b(string tb)
		{
			tel_bur=tb;
		}
		//---------------------- Get et Set (numero de rue) ---------------------
		public string getnrue()
		{
			return (adr_n_rue);
		}
		public void setnrue(string anr)
		{
			adr_n_rue=anr;
		}
		//---------------------- Get et Set (nom de la rue) ---------------------
		public string getrue()
		{
			return (adr_rue);
		}
		public void setrue(string ar)
		{
			adr_rue=ar;
		}
		//---------------------- Get et Set (code postal) -----------------------
		public string getcp()
		{
			return (adr_cp);
		}
		public void setcp(string cp)
		{
			adr_cp=cp;
		}
		//---------------------- Get et Set (nom de la ville) -------------------
		public string getville()
		{
			return (adr_ville);
		}
		public void setville(string ville)
		{
			adr_ville=ville;
		}
		//---------------------- Get et Set (premier mail) ----------------------
		public string getemail1()
		{
			return (email1);
		}
		public void setemail1(string e1)
		{
			email1=e1;
		}
		//---------------------- Get et Set (deuxième mail) ---------------------
		public string getemail2()
		{
			return (email2);
		}
		public void setemail2(string e2)
		{
			email2=e2;
		}
		//---------------------- Get et Set (troisième mail) --------------------
		public string getemail3()
		{
			return (email3);
		}
		public void setemail3(string e3)
		{
			email3=e3;
		}
		//---------------------- Override de la Méthode ToString() --------------------
		// ----- Chaque chaine sont séparée par une virgule ---- 
		public override string ToString()
		{
			return(this.getnom()+","+this.getprenom()+","+this.gettel_h()+","+this.gettel_p()+","+this.gettel_b()+","+this.getnrue()+","+this.getrue()+","+this.getcp()+","+this.getville()+","+this.getemail1()+","+this.getemail2()+","+this.getemail3()+",");
		}
	}
	
	// ------- - CLASSE repertoire - ------	
	class repertoire : ArrayList
	{
		//private personne[] rep=new personne[500];
		private int nbp=0;
		
		// destructeur
		~repertoire()
		{
			// Perform some cleanup operations here.
			//this.Initialize();
		}

		//------------------- Constructeur (sans paramètre) ---------------------
		public repertoire()
		{
			string n,p,th,tb,tp,nr,r,cp,v,e1,e2,e3;
			// Table de chaîne qui contiendra les chaînes d'une ligne
			string[] tabn = new string[12];
			
			// Ouverture du Flux d'écriture pour tester si le fichier existe
			StreamWriter sw = new StreamWriter("repertoire.txt",true, System.Text.Encoding.Default);
			// On ferme le flux d'ecriture
			sw.Close();
			
			// Ouverture du Flux de lecture du fichier texte
			StreamReader sr=new StreamReader("repertoire.txt");
			
			//Lecture du fichier texte
			try
			{
				n=sr.ReadLine();
				while (n!=null)
				{
					// affecte dans chaque case, chaque mot séparé par les virgules
					tabn=n.Split(',');
					// Affectation dans les variables hôtes
					n=tabn[0];
					p=tabn[1];
					th=tabn[2];
					tp=tabn[3];
					tb=tabn[4];
					nr=tabn[5];
					r=tabn[6];
					cp=tabn[7];
					v=tabn[8];
					e1=tabn[9];
					e2=tabn[10];
					e3=tabn[11];
					// Stocke dans une nouvelle classe personne
					personne Pe=new personne(n,p,th,tp,tb,nr,r,cp,v,e1,e2,e3);
					ajouter(Pe);
					// Lire la ligne suivante
					n=sr.ReadLine();
				}
			
				sr.Close();
			}
			catch(Exception ex)
			{
				Console.WriteLine("{0} \nLe fichier est peut-être endommagé ou inexistant, Veuillez le changer.",ex);
			}
		}

		//------------------- Procédure ajouter ---------------------------------
		public void ajouter(personne p)
		{
			/*int pos;
			pos=0;
			Tri Croissant
			while (pos>1 && p.getnom() < rep[pos-1].getnom())
			{
				rep[pos]=rep[pos-1];
				pos++;
			}*/
			this.Add(p);
		}

		//------------------- Procédure modifier ------------------- 
		public void modifier(personne p)
		{
			// Modifier les coordonnées d'une personne;
		}

		//------------------- Procédure afficherrep (sans parametre)-------------
		public void afficherrep()
		{
			string m_rien="inconnu";
			string adr;
			Console.WriteLine("\nContenu du répertoire :\n");
			foreach (personne Pe in rep)
			{
				if (Pe != null)
				{
					Console.WriteLine("Nom:{0} Prénom:{1}",Pe.getnom(),Pe.getprenom());
					Console.WriteLine("TélDomicile:{0} TélPortable:{1} TélDuBureau: {2}",((Pe.gettel_h()=="")?m_rien:Pe.gettel_h()),((Pe.gettel_p()=="")?m_rien:Pe.gettel_p()),((Pe.gettel_b()=="")?m_rien:Pe.gettel_b()));
					if (Pe.getnrue() != "" || Pe.getrue() != "")
					{
						adr=Pe.getcp()+", "+Pe.getrue();
					}
					else
					{
						adr="inconnu";
					}
					Console.WriteLine("Adresse:{0}",adr);
					Console.WriteLine("CodePostal:{0} Ville:{1}",((Pe.getcp()=="")?m_rien:Pe.getcp()),((Pe.getville()=="")?m_rien:Pe.getville()));
					Console.WriteLine("AdressesMail:\n-{0}\n-{1}\n-{2}",((Pe.getemail1()=="")?m_rien:Pe.getemail1()),((Pe.getemail2()=="")?m_rien:Pe.getemail2()),((Pe.getemail3()=="")?m_rien:Pe.getemail3()));
					Console.ReadLine() ;	//Pause
				}else{
					break;
				}
			}
		}

		//-------------------- Fonction afficherrep (avec parametre) -----------
		public void afficherrep(personne Pe)
		{
			string m_rien="inconnu";
			string adr;
			
			Console.WriteLine("\nNom:{0} Prénom:{1}",Pe.getnom(),Pe.getprenom());
			Console.WriteLine("TélDomicile:{0}",((Pe.gettel_h()=="")?m_rien:Pe.gettel_h()));
			Console.WriteLine("TélPortable:{1}",((Pe.gettel_p()=="")?m_rien:Pe.gettel_p()));
			Console.WriteLine("TélDuBureau:{2}",((Pe.gettel_b()=="")?m_rien:Pe.gettel_b()));
			if (Pe.getnrue() != "" || Pe.getrue() != "")
			{
				adr=Pe.getcp()+", "+Pe.getrue();
			}
			else
			{
				adr="inconnu";
			}
			Console.WriteLine("Adresse:{0}",adr);
			Console.Write("CodePostal:{0}",((Pe.getcp()=="")?m_rien:Pe.getcp()));
			Console.WriteLine("Ville:{1}",((Pe.getville()=="")?m_rien:Pe.getville()));
			Console.WriteLine("AdressesMail:");
			Console.WriteLine("-{0}",((Pe.getemail1()=="")?m_rien:Pe.getemail1()));
			Console.WriteLine("-{1}",((Pe.getemail2()=="")?m_rien:Pe.getemail2()));
			Console.WriteLine("-{2}",((Pe.getemail3()=="")?m_rien:Pe.getemail3()));
			Console.ReadLine() ;	//Pause
		}

		//------------------- Fonction rechercherpers ---------------------------
		public personne rechercherpers(string n)
		{
			personne Pe = new personne();

			foreach (personne p in this)
			{
				if (p.getnom()==n)
				{
					Pe=p;
				}
			}
			if (Pe.getnom()==n)
			{
				return(Pe);
			}
			else
			{
				return (null);
			}
		}
		
		//------------------- Fonction rechercherpers (nom + prenom) ---------------------------
		public personne rechercherpers(string n,string pm)
		{
			personne[] tbp = new personne[0];
			personne Pe = new personne();
			int i=0;

			nbp=0;
			foreach (personne p in this)
			{
				if (p.getnom()==n)
				{
					tbp[i] = p;
					i++;
					Console.WriteLine("i={0}",i);
				}
				else
				{
					nbp++;
				}
			}
			Console.WriteLine("nbp={0}",nbp);
			if (Pe.getnom()==n)
			{
				while (i<tbp.Length)
				{
					if (tbp[i].getprenom() == pm)
					{
						Pe = tbp[i];
					}
					else
					{
						i++;
					}
				}
				return(Pe);
			}
			else
			{
				return (null);
			}
		}

		//------------------- Fonction rechbytel --------------------------------
		public void rechbytel(string t)
		{
			int j=0;
			
			foreach (personne p in this)
			{
				if (p.gettel_h()==t)
				{
					Console.WriteLine("Personne trouvé :{0} {1}",p.getnom(),p.getprenom());
					j++;
				}
			}
			if (j <= 1)
			{
				Console.WriteLine("Nombre de personne{0} trouvée{0} : {1}",((j==1)?"":"s"),j);
			}
			else
			{
				Console.WriteLine("Aucun résultat.");
			}
			Console.ReadLine();	//Pause
		}
		
		//------------------- Fonction rechbynom --------------------------------
		public void rechbynom(string nm)
		{
			int j=0;
			
			foreach (personne p in this)
			{
				if (p.getnom() == nm)
				{
					Console.WriteLine("Personne trouvé :{0} {1}",p.getnom(),p.getprenom());
					j++;
				}
			}
			if (j <= 1)
			{
				Console.WriteLine("Nombre de personne{0} trouvée{0} : {1}",((j==1)?"":"s"),j);
			}
			else
			{
				Console.WriteLine("Aucun résultat.");
			}
			Console.ReadLine();	//Pause
		}
		
		//------------------- Fonction rechbyprenom --------------------------------
		public void rechbyprenom(string pm)
		{
			int j=0;
			
			foreach (personne p in this)
			{
				if (p.getprenom() == pm)
				{
					Console.WriteLine("Personne trouvé :{0} {1}",p.getnom(),p.getprenom());
					j++;
				}
			}
			if (j <= 1)
			{
				Console.WriteLine("Nombre de personne{0} trouvée{0} : {1}",((j==1)?"":"s"),j);
			}
			else
			{
				Console.WriteLine("Aucun résultat.");
			}
			Console.ReadLine();	//Pause
		}
		
		//------------------- Fonction rechbyville --------------------------------
		public void rechbyville(string vl)
		{
			int j=0;
			
			foreach (personne p in this)
			{
				if (p.getville() == vl)
				{
					Console.WriteLine("Personne trouvé :{0} {1}",p.getnom(),p.getprenom());
					j++;
				}
			}
			if (j <= 1)
			{
				Console.WriteLine("Nombre de personne{0} trouvée{0} : {1}",((j==1)?"":"s"),j);
			}
			else
			{
				Console.WriteLine("Aucun résultat.");
			}
			Console.ReadLine();	//Pause
		}
		
		//------------------- Procédure sauvegarder -----------------------------
		public void sauvegarder()
		{

			// Flux qui va écrire dans le fichier
			// true permet d'ajouter au lieu de remplacer le fichier
			StreamWriter sw = new StreamWriter("repertoire.txt",false,System.Text.Encoding.UTF8);
			
			foreach (personne Pe in this)
			{
				
				if (Pe == null)
				{
					continue;
				}
				sw.WriteLine(Pe.ToString());
			}
			//sw.WriteLine();
			// On ferme le flux d'ecriture
			sw.Close();
		}
	}
	class Class1
	{
		/// <summary>
		/// Point d'entrée principal de l'application.
		/// </summary>
		[STAThread]
		static void Main(string[] args)
		{
			//
			// TODO : ajoutez ici le code pour démarrer l'application
			//
			ClearConsole ClearMyConsole = new ClearConsole();
			repertoire rpt= new repertoire();
			personne per=new personne();
			string nomp,prenomp,telhp,telpp,telbp;
			string numrp,ruep,cpostp,villp,email1p;
			string email2p,email3p;
			string mdfnm,mdfpm;
			string tmp="";
			int choix;
			int choix1=0;
			string quit;

			do
			{
				Console.WriteLine("------------------- MENU -------------------\n");
				Console.WriteLine("1) Afficher tout le répertoire,");
				Console.WriteLine("2) Ajouter une nouvelle personne dans le répertoire,");
				Console.WriteLine("3) Afficher les coordonnées d'une personne,");
				Console.WriteLine("4) Modifier les coordonnées d'une personne,*");
				Console.WriteLine("5) Supprimer une personne,*");
				Console.WriteLine("6) Rechercher par numéro de téléphone,");
				Console.WriteLine("7) Rechercher par nom,");
				Console.WriteLine("8) Rechercher par prénom,");
				Console.WriteLine("9) Rechercher par ville,");
				Console.WriteLine("10) Afficher les personnes commencant par une lettre du nom,*");
				Console.WriteLine("11) Afficher le nombre de personnes enregistrées,");
				Console.WriteLine("12) Actualiser,");
				Console.WriteLine("13) Réinitialiser la console");
				Console.WriteLine("14) Quitter");
				Console.Write("Votre choix : ");
				try
				{
					choix=Convert.ToInt32(Console.ReadLine());
				}
				catch(System.FormatException)
				{
					choix=0;
				}
				
				switch (choix)
				{
					case 1 : rpt.afficherrep();
						break;
					
					case 2 : Console.WriteLine("Ajouter une personne dans votre répertoire");
						// Saisie des coordonnées de la personne qui sera ajouter dans le répertoire
						Console.WriteLine("Entrer le nom :");
						nomp=Console.ReadLine();
						Console.WriteLine("Entrer le prénom :");
						prenomp=Console.ReadLine();
						Console.WriteLine("Entrer le n° téléphonique du domicile :");
						telhp=Console.ReadLine();
						Console.WriteLine("Entrer le n° du téléphone portable :");
						telpp=Console.ReadLine();
						Console.WriteLine("Entrer le n° téléphonique du bureau :");
						telbp=Console.ReadLine();
						Console.WriteLine("Entrer le n° de la rue :");
						numrp=Console.ReadLine();
						Console.WriteLine("Entrer le nom de la rue :");
						ruep=Console.ReadLine();
						Console.WriteLine("Entrer le code postal :");
						cpostp=Console.ReadLine();
						Console.WriteLine("Entrer le nom de la ville :");
						villp=Console.ReadLine();
						Console.WriteLine("Entrer le 1er adresse mail :");
						email1p=Console.ReadLine();
						Console.WriteLine("Entrer le 2ème adresse mail :");
						email2p=Console.ReadLine();
						Console.WriteLine("Entrer le 3ème adresse mail :");
						email3p=Console.ReadLine();
						// Création d'une nouvelle classse personne
						per=new personne(nomp,prenomp,telhp,telpp,telbp,numrp,ruep,cpostp,villp,email1p,email2p,email3p);
						// Ajout la nouvelle classe personne dans le répertoire
						rpt.ajouter(per);
						// Affichage du résultat
						rpt.afficherrep(per);
						break;

					case 3 : Console.WriteLine("Entrer le nom de la personne recherchée");
						nomp=Console.ReadLine();
						if (rpt.rechercherpers(nomp) != null)
						{
							per=rpt.rechercherpers(nomp);
							rpt.afficherrep(per);
						}
						else
						{
							Console.WriteLine("La personne que vous recherchez n'existe pas");
						}
						break;

					case 4 : // modifie les coordonnées d'une personne
						Console.WriteLine("Quel personne voulez-vous modifier?");
						Console.WriteLine("1. En recherchant dans la liste,");
						Console.WriteLine("2. En donnant le nom et prénom de la personne");
						Console.Write("Indiquez votre choix: ");
						try
						{
							choix1=Convert.ToInt32(Console.WriteLine());
						}
						catch(System.FormatException)
						{
							Console.WriteLine("Vous avez mal indiqué votre choix.");
							choix1=0;
						}
						switch(choix1)
						{
							case 1 : //ezkg,zeoig,
								break;

							case 2 : // Modification en indiquant nom & prénom de la personne
								Console.Write("Nom : ");
								mdfnm=Console.ReadLine();
								Console.Write("Prénom : ");
								mdfpm=Console.ReadLine();
								per=rpt.rechercherpers(mdfnm,mdfpm);
								break;

							default : break;
						}
						if ( choix1 == 1 || choix1 == 2)
						{
							rpt.modifier(per);
						}
						break;

					case 5 : // supprime une personne
						break;

					case 6 : // recherche par numéro de téléphone
						Console.WriteLine("Entrer le numéro de téléphone de domicile recherché :");
						telhp=Console.ReadLine();
						rpt.rechbytel(telhp);
						break;

					case 7 : // recherche par nom
						Console.WriteLine("Entrer le nom recherché :");
						nomp=Console.ReadLine();
						rpt.rechbynom(nomp);
						break;

					case 8 : // recherche par prénom
						Console.WriteLine("Entrer le prénom recherché :");
						prenomp=Console.ReadLine();
						rpt.rechbyprenom(prenomp);
						break;

					case 9 : // recherche par ville
						Console.WriteLine("Entrer la ville recherchée :");
						villp=Console.ReadLine();
						rpt.rechbyville(villp);
						break;

					
					case 10 : // affiche les personnes par lettre du nom
						break;
					
					case 11 : // affiche le nombre de personne dans le répertoire.
						if (rpt.Count != 0)
						{
							Console.WriteLine("Il y a actuellement {0} personne{1} dans le répertoire.",rpt.Count,((rpt.Count != 1)?"s":""));
						}
						else
						{
							Console.WriteLine("Le répertoire est vide.");
						}
						break;

					case 12 : //Finalize();	//destructeur ou constructeur pr actualiser
						break;

					case 13 : ClearMyConsole.Clear(); // Clear the screen
						break;

					case 14 : Console.Write("Voulez-vous réellement quitter l'application (o/n)? ");
						quit=Console.ReadLine();
						if (quit == "o" || quit == "O")
						{
							rpt.sauvegarder();
						}
						else
						{
							choix=0;
						}
						break;
					
					default : break;
				}
			}while(choix != 14);
		}
	}
}

Conclusion :


Je vous préviens que le code est incomplet.
Ses fonctions pour le moment sont l'ouverture du fichier txt, la lecture,
affichage des coordonnées d'une personne, et la sauvegarde (l'écriture) dans le fichier 'repertoire.txt'.

Je voudrais que vous puissiez m'aider pour faire les autres fonctions, c'est-à-dire la recherche par numéro de téléphone, la recherche par nom, la recherche par prénom et la recherche par ville; ces recherches doivent afficher le résultat en une liste de personne.
Et j'ai découvert un énorme problème : lorsque je fais 'Quitter' dans mon programme, il sauvegarde le contenu de l'ArrayList dans le fichier .txt mais dans le fichier .txt, il y a 2 lignes qui sont rajouté à la fin (ou plutôt il y a 2 retour à la lignes à la fin). Si je relance l'application, il y a un bug car c'est à cause de ces 2 retours à la ligne qui pose problème.

/!\
----------------------------------------------------------------------------------------------------------------------
Si vous pourriez m'aider à corriger et compléter mon code.
Les coordonnées dans le fichier 'repertoire.txt' sont entièrement factices issues de ma propre imagination.
N'essayer pas de faire quoi que ce soit avec ces coordonnées.
Je décline toute resposabilitée.
----------------------------------------------------------------------------------------------------------------------

Merci bien.

Codes Sources

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.