Exercice langage C: Base de données
Rédigé par GC Team, Publié le 17 Mars 2012, Mise à jour le Lundi, 07 Novembre 2022 09:53Dans cet exercice, vous allez écrire un programme permettant de gérer une petite base de données de numéros de téléphone.
- Commencez par définir une structure
Personne
dont les champs seront une chaîne de caractères pour le nom et une autre pour le numéro de téléphone. - Déclarez une variable de type
Personne
dansmain
puis initialisez-la en demandant à l'utilisateur d'entrer un nom et un numéro de téléphone. Faites afficher ensuite le nom et le numéro de téléphone contenus dans la structure:Le numero de Pierre est 123456.
- Ecrivez maintenant une fonction
nouveau_numero
qui reçoit un pointeur surPersonne
en paramètre. La fonction doit demander à l'utilisateur d'entrer un nouveau nom ainsi que le numéro de téléphone correspondant. Elle placera les nouvelles valeurs dans le pointeur passé en paramètre. Il faut aussi s'assurer que le nom commence bien par une majuscule, et modifier le nom en conséquence si ce n'est pas le cas. - Ecrivez maintenant une fonction
recherche
qui reçoit un tableau dePersonne
ainsi que sa taille en paramètres. La fonction doit demander à l'utilisateur le nom qu'il désire chercher puis effectuer une recherche dans le tableau depersonne
. Si le nom est trouvé, la fonction affichera le numéro de téléphone de la personne, sinon elle imprimera un message d'erreur. - Ecrivez une troisième fonction, nommée
liste
, qui prend un tableau dePersonne
ainsi que la taille du tableau en paramètres. Comme son nom l'indique, cette fonction affichera la liste de toutes les valeurs présentes dans le tableau. - Finalement, écrivez la fonction
main
(vous pouvez supprimer le code écrit au point 2). Il vous faudra tout d'abord déclarer un tableau dePersonne
qui sera votre base de données. Ensuite, une bouclewhile
affichera le menu suivant1) Nouveau numero 2) Recherche 3) Liste 4) Quitter
et attendra une entrée de l'utilisateur. Une fois que l'utilisateur a entré son choix, il ne vous restera plus qu'à appeler la bonne fonction.
#include
using namespace std;
struct Personne {
char nom[32];
char numero[32];
};
void nouveau_numero(Personne *nouveau) {
cout << "Nouvelle entree dans la base de donnees:" << endl;
cout << "Entrez le nom: ";
cin >> nouveau->nom;
cout << "Entrez le numero: ";
cin >> nouveau->numero;
if (nouveau->nom[0] >= 'a' && nouveau->nom[0] <= 'z') // minuscule
nouveau->nom[0] += 'A' - 'a'; // majuscule
}
void recherche(Personne *db, int taille) {
char search[32];
cout << " Entrez le nom a chercher: ";
cin >> search;
int index = 0;
while (index < taille && strcmp(db[index].nom, search) != 0)
index++;
if (index < taille)
cout << "Le numero de " << search << " est " << db[index].numero << endl;
else
cout << "Le nom '" << search << "' n'existe pas dans la base de donnees." << endl;
}
void liste(Personne *db, int taille) {
cout << endl << "Liste:" << endl;
for (int i=0; i<taille; i++)
cout << i+1 << ") " << db[i].nom << " " << db[i].numero << endl;
cout << endl;
}
int main(int argc, char **argv) {
const int max_adresses = 20;
Personne db[max_adresses];
int nombre_adresses = 0;
bool fin = false;
char choix;
do {
cout << "1) Nouveau numero" << endl;
cout << "2) Recherche" << endl;
cout << "3) Liste" << endl;
cout << "4) Quitter" << endl;
cin >> choix;
switch (choix) {
case '1':
if (nombre_adresses < max_adresses) {
nouveau_numero(db + nombre_adresses);
nombre_adresses++;
}
else
cout << "Base de donnees pleine\n";
break;
case '2':
recherche(db, nombre_adresses);
break;
case '3':
liste(db, nombre_adresses);
break;
case '4':
fin = true;
break;
}
} while (!fin);
return 0;
}