Voila, il s'agit d'un programme ki gere les emprunts dans un vidéo club (comme ca, ca le fait, mais le prog est a chier ), enfin bon...
On peut ajouter des titres, mais il peuve avoir le meme numéro ! Je voudrais integrer une fonction dans la méthode ajout() qui verifie si le numéro est déja present, et si c le cas, lui dire de choisir un autre numéro...
VOila la source :
// bibliotheque
#include <iostream.h>
#include <string.h>
// structure str_film
struct str_film
{
int id_film; // numéro du film
char title_film[25]; // titre du film
};
// classe emprunt
class emprunt
{
str_film tab_film[100]; // tableau de structure des films enregistrés
int nb_film; // nombre de films enregistrés
public:
emprunt(); // constructeur de la classe
void affiche(void); // methode affichage de la liste des films
void ajout(int ajout_id_film, char ajout_title_film[25]); // methode d'ajout d'un film
void supprimer(int del_id_film); // methode de supression d'un film
void recherche(int num_film); // methode de recherche n°1 (par n° film)
void recherche2(char title[25]); // methode de recherche n°2 (par titre)
};
//constructeur de la classe
emprunt::emprunt()
{
nb_film = 0;
// initialisation du tableau de structure
for(int i=0 ; i<100 ; i++)
{
tab_film[i].id_film = 0;
}
}
//affichage de tous les films de la liste
void emprunt::affiche(void)
{
for(int i=0 ; i<nb_film ; i++)
{
cout<<"\nNumero du film: "<<tab_film[i].id_film<<" ";
cout<<"Titre: "<<tab_film[i].title_film<<"\n";
}
}
//ajout d'un film
void emprunt::ajout(int ajout_id_film, char ajout_title_film[25])
{
int i=0;
//comparaison du numero saisi et des numeros de la liste
for(i=0 ; i<nb_film ; i++)
{
if(tab_film[i].id_film > ajout_id_film)
{
//on sort de la boucle lorsque le numero saisi est inférieur à au moins un des numeros de la liste
break;
}
}
//cas où le numero saisi est superieur à tout les numeros de la liste
if(i == nb_film)
{
//insertion du numero et du titre à la dernière position de la liste
tab_film[i].id_film = ajout_id_film;
strcpy(tab_film[i].title_film,ajout_title_film);
}
else
{
//cas où le numero saisi est inferieur à au moins un des numeros de la liste
for(int j=nb_film ; j>=i ; j--)
{//décalage
tab_film[j+1].id_film = tab_film[j].id_film;
strcpy(tab_film[j+1].title_film,tab_film[j].title_film);
}
//ecrasement
tab_film[i].id_film = ajout_id_film;
strcpy(tab_film[i].title_film,ajout_title_film);
}
nb_film++;
}
//suppression d'un film
void emprunt::supprimer(int del_id_film)
{
int i=0;
int k=0;
for(i=0 ; i<=nb_film ; i++)
{
//si le numero saisi est dans la liste
if(tab_film[i].id_film == del_id_film)
{
//décalage
for(k=(i+1) ; i<=nb_film ; i++)
{
tab_film[k-1].id_film = tab_film[k].id_film;
strcpy(tab_film[k-1].title_film,tab_film[k].title_film);
}
//on supprime le dernier film de la liste (dernier film de la liste en double à cause du décalage)
nb_film--;
//on sort de la boucle
break;
}
}
}
//recherche d'un film par le n°film dans la liste
void emprunt::recherche(int num_film)
{
int test=0;
for(int i=0 ; i<= nb_film ; i++)
{
//si le numero saisi est dans la liste
if(num_film == tab_film[i].id_film)
{
test=1;
cout<<"\nVoici le titre du film cherche: "<<tab_film[i].title_film<<"\n";
}
}
//si le numero saisi n'est pas dans la liste
if (test==0)
{
cout<<"\nLe film n'est pas dans la liste\n";
}
}
//recherche d'un film par le titre dans la liste
void emprunt::recherche2(char title[25])
{
int test=0;
for(int i=0 ; i< nb_film ; i++)
{
//si le titre saisi est dans la liste
if(strcmp(tab_film[i].title_film,title) == 0)
{
test=1;
cout<<"\nVoici le numero du film cherche: "<<tab_film[i].id_film<<"\n";
}
}
//si le titre saisi n'est pas dans la liste
if (test==0)
{
cout<<"\nLe film n'est pas dans la liste\n";
}
}
int main()
{
//instance de la classe emprunt
emprunt a;
int choix;
int numero;
char titre[25];
do
{
//menu
cout<<"\n1 - Ajout d'un film\n";
cout<<"2 - Suppression d'un film\n";
cout<<"3 - Recherche d'un film par numero \n";
cout<<"4 - Recherche d'un film par titre\n";
cout<<"5 - Affichage de la liste des films\n";
cout<<"6 - Quitter\n";
cout<<"Entrer le chiffre desire : ";
cin>>choix;
//ajout d'un film
if (choix == 1)
{
cout<<"\nEntrer un numero:";
cin>>numero;
cout<<"\nEntrer le titre du film:";
cin>>titre;
a.ajout(numero,titre);
}
//suppression d'un film
if (choix == 2)
{
cout<<"\nEntrer un numero:";
cin>>numero;
a.supprimer(numero);
}
//recherche d'un film par numero
if (choix == 3)
{
cout<<"\nEntrer un numero:";
cin>>numero;
a.recherche(numero);
}
//recherche d'un film par titre
if (choix == 4)
{
cout<<"\nEntrer un titre: ";
cin>>titre;
a.recherche2(titre);
}
//affichage de la liste des films
if (choix == 5)
{
cout<<"\nVoici la liste des films:\n";
a.affiche();
}
//quitter le programme
}while (choix != 6);
return 0;
}