[quote]Bonjour
J'ai un programme de gestion adhérents pour un prêt de livre en DEV-C++. L'enregistrement du prêt doit pouvoir faire : Sortie, Retour, Encours.
Exemple: Sortie:4, Retour:2, Encours:2 (avec date d'enregistrement ). Cordialement
Cette partie sur laquelle je suis est celle ci:
Ce sur lequel j'ai travaillé :
- Menu « Emprunt » : dans ce menu :
- demande du num adherent
- demande du num de livre qu’il souhaite empreinter
- ici 2 possibilités :
- le livre est dispo, j'inscrit cet emprunt (num adhérent +
num livre, date de retour prévu)
- le livre est déjà pris, j'affiche la date de retour prévue
pour ce livre(
- Menu « Retour d’emprunt » : dans ce menu :
- demande du num adherent
- demande du num de livre qu’il retourne
- suppression ou marquage de l’enregistrement qui mentionnait cet
emprunt (* ou n)
[/quote]
[code]
bool setDispoLivre( int idLivr,std::string sdispo)
{
bool trouve = false;
it_livre = vector_livre.begin();
while (it_livre!= vector_livre.end() && trouve == false) //tant que it_livre est # de la fin du vecteur et trouve est false
{
//cout<<"Pour test, id courant ="<<(it_livre)->getIdentLivre();
if( (it_livre)->getIdentLivre() == idLivr)
{
//std::cout << (it_livre)->getDispo()<<endl;// affiche la disponibilité
(it_livre)->setDispo(sdispo);
trouve = true; // on affecte true à trouve
}
it_livre++;//Incrementation pour passer au suivant
} // fin while
return trouve;
} // fin fonction setDispoLivre
bool getDispoLivre( int idLivr)
{
bool trouve = false;
it_livre = vector_livre.begin();
while (it_livre!= vector_livre.end() && trouve == false) //tant que it_livre est # de la fin du vecteur et trouve est false
{
//cout<<"Pour test, id courant ="<<(it_livre)->getIdentLivre();
if( (it_livre)->getIdentLivre() == idLivr)
{
std::cout << "Livre : "<<(it_livre)->getTitre()<<", Dispo : ";
std::cout << (it_livre)->getDispo()<<endl;// affiche la disponibilité
trouve = true; // on affecte true à trouve
}
it_livre++;//Incrementation pour passer au suivant
} // fin while
return trouve;
} // fin fonction getDispoLivre
//--------------------------------------------------------------------------------
//Faire le compte Livres en Plus ou Moins et les Encours . Maximunm 5 livres
int Comptelivremprunt(int idAdh)
{
bool trouve = false;
int nblivre;
it_adherent = vector_adherent.begin();
while (it_adherent!= vector_adherent.end() && trouve == false) //tant que it_livre est # de la fin du vecteur et trouve est false
{
if( (it_adherent)->getIdentAdherent() == idAdh)
{
//std::cout << (it_livre)->getDispo()<<endl;// affiche la disponibilité
nblivre = (it_adherent)->getcptLivre();
trouve = true; // on affecte true à trouve
}
it_adherent++;//Incrementation pour passer au suivant
} // fin while
return nblivre;
} // fin fonction Nbrelivremprunt
//Vérification du nombre de livre dejà emprunte. Maximunm 5 livres
int Nbrelivremprunt(int idAdh)
{
bool trouve = false;
int nblivre;
it_adherent = vector_adherent.begin();
while (it_adherent!= vector_adherent.end() && trouve == false) //tant que it_livre est # de la fin du vecteur et trouve est false
{
if( (it_adherent)->getIdentAdherent() == idAdh)
{
//std::cout << (it_livre)->getDispo()<<endl;// affiche la disponibilité
nblivre = (it_adherent)->getcptLivre();
trouve = true; // on affecte true à trouve
}
it_adherent++;//Incrementation pour passer au suivant
} // fin while
return nblivre;
} // fin fonction Nbrelivremprunt
void Saisie_Emprunt()
{
string sdispo = "o";
char continuer = 'o';
int idAdh, idLivr;
static int cptLivre = 0;//Compteur à zéro pour increment du livre
int nb;
int SortieLivre;
int RetourLivre;
int EncoursLivre;
while( continuer == 'O' || continuer == 'o')
{
//début boucle saisie des identifiants livres et adherents
std::cout<<"Voulez-vous saisir un emprunt ? ( O/N )"<<endl;
std::cin>>continuer;
if (continuer == 'O' || continuer == 'o')
{
std::cout<<endl<<"Quel est l identifiant adherent ?"<<endl;
std::cin>>idAdh;
std::cout<<endl<<"Quel est l identifiant livre ?"<<endl;
std::cin>>idLivr;
// Livre dispo ?
if (getDispoLivre(idLivr) == true)
{
sdispo = "o";
cout<<"livre dispo"<<endl;
}
else
{
cout<<"Livre non disponible"<<endl;
}
if (getDispoLivre(idLivr) == false)
{
sdispo = "n";
cout<<"Date retour prévue"<< date Retour; <<endl;//Date retour prevue pour ce livre( idLivr)
}
// regarder si l'emprunteur n'a pas dépassé son max !
int nblivre;
nblivre = Nbrelivremprunt(idAdh);
if (nblivre < 5 && sdispo == "o")
{
//Effectuer l'action reelle de l'emprunt
vector_pret.push_back(Emprunt(idAdh,idLivr,date Date_Emprunt);//On reserve en memoire pour nouveau element: l'Indentifiant,Titre
// mettre le livre non dispo
setDispoLivre(idLivr,"n"); // mettre la dispo à non car emprunt effectue
}
else
{
cout<<endl<<"Nb livre max atteint"<<endl;
}
// Les Sorties
std::cout<<endl<<"Emprunt par l'Adherent ?"<<endl;
std::cin>>nb;
SortieLivre = SortieLivre + nb;
{
cout<<"Emprunt Adherent "<< SortieLivre; // Affiche le prêt de l'adhérent
}
// Les Encours
EncoursLivre = SortieLivre - RetourLivre;
{
cout<<"Encours Emprunt "<< EncoursLivre;// Affiche les emprunts qui sont en possession de l'adherent
}
} // fin if continuer
} //fin de la boucle de saisie des livres et auteurs
//sauvegarde_pret();
}//fin saisie_emprunt
void Retour_Emprunt()
{
string sdispo = "o";
char continuer = 'o';
int idAdh, idLivr;
static int cptLivre = 0;//Compteur à zéro pour increment du livre
int nb;
int SortieLivre;
int RetourLivre;
int EncoursLivre;
while( continuer == 'O' || continuer == 'o')
{
//début boucle saisie des identifiants livres et adherents
std::cout<<"Voulez-vous saisir un emprunt ? ( O/N )"<<endl;
std::cin>>continuer;
if (continuer == 'O' || continuer == 'o')
{
std::cout<<endl<<"Quel est l identifiant adherent ?"<<endl;//Demande N°adherent
std::cin>>idAdh;
std::cout<<endl<<"Quel est l identifiant livre ?"<<endl;//Demande du N° livre retour
std::cin>>idLivr;
// Livre dispo ?
if (getDispoLivre(idLivr) == true)
{
sdispo = "o";
cout<<"livre dispo"<<endl;
}
else
{
cout<<"Livre non disponible"<<endl;
}
if (getDispoLivre(idLivr) == false)
{
sdispo = "n";
cout<<"Date retour prévue"<< date Retour; <<endl;//Date retour prevue pour ce livre( idLivr)
}
// regarder si l'emprunteur n'a pas dépassé son max !
int nblivre;
nblivre = Nbrelivremprunt(idAdh);
if (nblivre < 5 && sdispo == "o")
{
//Effectuer l'action reelle de l'emprunt
vector_pret.push_back(Emprunt(idAdh,idLivr,date Date_Retour);//On reserve en memoire pour nouveau element: l'Indentifiant,Titre
// mettre le livre non dispo
setDispoLivre(idLivr,"o"); // mettre la dispo à OUI car retour Livre en bibliotheque
}
else
{
cout<<endl<<"Nb livre max atteint"<<endl;
}
// Les Retours
std::cout<<endl<<"Retour Emprunt de l'Adherent ?"<<endl;
std::cin>>nb;
RetourLivre = RetourLivre - nb;
{
cout<<"Retour Emprunt "<< RetourLivre;// Affiche le retour d'emprunt par l'adhérent
}
// Les Encours
EncoursLivre = SortieLivre - RetourLivre;
{
cout<<"Encours Emprunt "<< EncoursLivre;// Affiche les emprunts qui sont en possession de l'adherent
}
} // fin if continuer
} //fin de la boucle de saisie des livres et auteurs
//sauvegarde_pret();
}//fin Retour_emprunt
void Sauvegarde_emprunt()
{
// sauvegarde
int IdentAdherent;
int IdentLivre;
int idAdh;
int idLivr;
ofstream fic_sauvemprunt("saisie_emprunt.txt");// Ecriture pour stocker les informations d'emprunt
bool trouve = false;
it_pret = vector_pret.begin();
while (it_pret!= vector_pret.end()) //tant que it_livre est # de la fin du vecteur
{
fic_sauvemprunt << (it_pret)->getIdentAdherent() << ";";
fic_sauvemprunt << (it_pret)->getIdentLivre() << ";";
date Date_Emprunt;
Date_Emprunt = (it_pret)->getDate_Emprunt();
fic_sauvemprunt << Date_Emprunt.get_jour()<< "/" <<Date_Emprunt.get_mois()<<"/"<<Date_Emprunt.get_an() <<endl;
it_pret++;//Incrementation pour passer au suivant
} // fin while
fic_sauvemprunt.close();
std::cout<<"Fin sauvegarde"<<endl;
}// fin de la fonction Sauve_Emprunt
void lecture_emprunt() // on remplit le vecteur emprunt
{
//Début fonction lecture_collection
//---Lire l'interface Emprunt à partir d'un fichier texte---
int IdentAdherent;//initialiser Identifiant Adhérent
int IdentLivre;//initialiser Identifiant Adhérent
date Date_Emprunt;//Permet de saisir date (jj/mm/aaaa)
string sdispo;//Permet de saisir 'O' ou 'N'
string chaine;
string sdate;
vector<string>recup;
char ligne;
int ident = 1;
ifstream fic_sauvemprunt("saisie_emprunt.txt");// Ecriture pour stocker les informations d'emprunt
if (!fic_sauvemprunt) // tester l'existence du fichier
std::cout << "Erreur à l'ouverture de saisie_emprunt.txt" << endl;
else
{
//it_emprunt = vector_emprunt.begin(); //vecteur vide a cet instant
std::cout<<endl<<"Affichage contenu fichier (ligne a ligne)"<<endl;
while (getline(fic_sauvemprunt,chaine))//tout est charge en une seule fois
{
Extract(chaine, recup, ";");
std::cout << recup[0] << " / " << recup[1] << " / " << recup[2] << " / " << recup[3];// autre méthode pour afficher
std::cout<<endl;
IdentAdherent = string_to_int(recup[0]);
IdentLivre = string_to_int(recup[1]);
sdate = recup[2];
sdispo = recup[3];
//Insérer dans le vecteur par le push back
vector_pret.push_back(Emprunt(IdentAdherent,IdentLivre));//On reserve en memoire pour nouveau element:
recup.clear();//Réinitialise le vecteur temporaire recup
}
}
fic_sauvemprunt.close();
// Afficher Lire interface Emprunt à partir d'un fichier texte (affichage implicite avec while )
it_pret = vector_pret.begin();
std::cout<<endl<<"Affichage vector_pret"<<endl;
while (it_pret == vector_pret.end())
{
std::cout<<endl<<(it_pret)->getIdentLivre()<<" - "<<(it_pret)->getIdentAdherent();
it_pret++;
} // fin de la boucle d'affichage
std::cout<<endl<<"Fin lecture base prêt"<<endl;
system("PAUSE");
system("cls");
}//Fin fonction lecture_pret
[/code]
ERREUR BBCODE SUR CE MESSAGE : - La valeur de la balise "quote" n'est pas correcte !
[quote]Bonsoir,
Je vous remercie de votre réponse et questionnement.
Les parties du projet qui marchent sont :
1) Saisie Stock, 2) Saisie Adherent, 3) Recherche Livre OK ca marche.
C'est Saisie_Emprunt et Retour_Emprunt avec le mouvement de stock et Affichage des résultats qui font défaut pour qu'il y ait cohérence, car mon prog est décousu. Je pense que les idées compatables sont là, mais la date et les identifiants font défauts sur la logique d'exécution de l'interface de saisie avec les bonnes valeurs et variables par rapport aux classes. Je evrais rendre cela aujourd'hui, mais un délai m'a été accordé jusqu'à samedi.
[b]Problème[/b] :
La date de prêt ne s'affiche pas, date prévue de retour livre ne s'affiche pas, erreur de mouvement de stock qui affiche des chiffres que je n'ai pas demandés, c'est la galère. L'espace d'envoi est limité sur le site, sinon pas j'aurai pu vous envoyer mon projet avec les classes.
Cordialement
ERREUR BBCODE SUR CE MESSAGE : - La valeur de la balise "quote" n'est pas correcte !