Пример #1
0
int main()
{
	cout << "________________________________________________" << endl;
	cout << "CREATION ET AFFICHAGE DES ABONNES" << endl << endl;
	// Creation des abonnes, des etudiants et des professeurs
	Abonne john("1839456", "Doe", "John", 23);
	Abonne nicolas("1630236", "Gagnon", "Nicolas", 8);
	Abonne martin("1269348", "Tremblay", "Martin", 18);
	
	Etudiant harry("1782965", "Potter", "Harry", 21, "Pourdlard");
	Etudiant hermione("1876458", "Granger", "Hermione", 20, "Pourdlard");
	EtudiantPolytechnique tony("1865487", "Stark", "Tony", 42);

	Professeur albus("p878546", "Dumbledore", "Albus", 78, { "Poudlard", "UdM", "Polytechnique" });

	// Affichage des informations sur chaque abonne (en utilisant cout <<)
	cout << john;
	cout << nicolas;
	cout << martin;

	cout << harry;
	cout << hermione;
	cout << tony;

	cout << albus;

	cout << "________________________________________________" << endl;
	cout << "CREATION ET AFFICHAGE DES OBJETS EMPRUNTABLES" << endl << endl;
	// Création des livres

	Livre *livre1 = new Livre("GA403", "Big C++", 2009, 8, 2, "Cay HORTSTMANN", "Informatique");
	Livre *livre2 = new Livre("QA203", "Calcul a plusieurs variables partie 1", 2011, 3, 1, "Cay HORTSTMANN", "Informatique");
	Livre *livre3 = new Livre(*livre2);
	livre3->modifierTitre("Calcul a plusieurs variables partie 2");
	livre3->modifierCote("QA204");
	livre3->modifierNbExemplaires(1);
	Livre *livre4 = new Livre("AC409", "Le chateau d'Ortrante", 1764, 16, 2, "Cay HORTSTMANN", "Informatique");
	Livre *livre5 = new Livre("BD302", "Harry Potter et le prisionier d'Azkaban", 1999, 3, 17, "JK ROWLING", "Science-Fiction");
	Livre *livre6 = new Livre();
	*livre6 = *livre1;
	livre6->modifierAnnee(2016);
	livre6->modifierCote("GA404");
	// Affichages des informations sur chaque livre

	cout << *livre1;
	cout << *livre2;
	cout << *livre3;
	cout << *livre4;
	cout << *livre5;
	cout << *livre6;

	// Creation des Dvds
	Dvd *dvd1 = new Dvd("D8403", "Rush Hour", 1998, 2, 13, "Al", { "Jackie Chan", "Chris Tucker" });
	Dvd *dvd2 = new Dvd("D7203", "Avenger", 2012, 3, 5, "Nick Fury", { "Iron Man", "Thor","Hulk", "Captain America", "Black Window" });

	// Affichage des informations sur les Dvds
	cout << *dvd1;
	cout << *dvd2;

	Bibliotheque biblio;
	cout << "________________________________________________" << endl;
	cout << "AJOUT DES DIFFERENTS ELEMENTS A LA BIBLIOTHEQUE" << endl << endl;
	// Ajout des éléments dans la bibliothèque
	biblio += john;
	biblio += nicolas;
	biblio += martin;
	//Ajout des Etudiants et du Professeur
	biblio += harry;
	biblio += tony;
	biblio += hermione;
	biblio += albus;

	biblio += *livre1;
	biblio += *livre2;
	biblio += *livre3;
	biblio += *livre4;
	biblio += *livre5;
	biblio += *livre6;
	//Ajout des Dvds
	
	biblio += *dvd1;
	biblio += *dvd2;
	// Enlever hermione de la bibliotheque
	// Enlevez l'édition 2009 de Big C++
	
	biblio -= hermione;
	biblio -= *livre1;


	// Création de vecteur pour effectuer les emprunts

	vector<string> vecMatricules =
	{ "1630236" , "1782965" , "1865487", "p878546"};
	vector<string> vecCote =
	{ "AC409", "BD302" ,  "BD302", "D7203", "QA203", "D8403", "QA204"};


	/*******************************************************************/
	/*                       DEBUT DES TESTS                           */
	/* Les modifications restantes sont a la fin de la fonction main.  */
	/*******************************************************************/


	// Test d'emprunts en utilisant les vecteurs précédents
	cout << "________________________________________________" << endl;
	cout << "TESTS D'EMPRUNTS" << endl << endl;
	for (size_t i = 0; i < vecMatricules.size(); i++)
	{
		int nombreEmpruntReussi = 0;
		int nombreEmpruntRate = 0;
		for (int j = 0; j < vecCote.size(); j++)
		{
			if (biblio.emprunter(vecMatricules[i], vecCote[j], 160204))
				nombreEmpruntReussi++;
			else
				nombreEmpruntRate++;
			
		}
		cout << vecMatricules[i] <<" a reussi " << nombreEmpruntReussi << " emprunt(s) !" << endl;
		cout << vecMatricules[i] << " a rate " << nombreEmpruntRate << " emprunt(s) !" << endl;

	}
	
	// Affichage des informations d'Albus avec la méthode infoAbonne de Bibliothèque
	cout << "________________________________________________" << endl;
	cout << "INFO ABONNE AVANT RETOUR" << endl << endl;
	biblio.infoAbonne("p878546");
	biblio.infoAbonne("1876458");

	cout << "________________________________________________" << endl;
	cout << "TESTS RETOUR LIVRE" << endl << endl;
	// Devrait marcher
	if (biblio.retourner("1630236", "BD302"))
	{
		cout << "BD302 remis par 1630236" << endl;
	}
	else
	{
		cout << "Echec remise" << endl;
	}
	// Ne devrait pas marcher car l'abonne n'a jamais fait ce pr�t
	if (biblio.retourner("1839456", "QA203"))
	{
		cout << "QA203 remis par 1839456" << endl;
	}
	else
	{
		cout << "Echec remise" << endl;
	}
	//Test de retour pour les classes Etudiant et Professeur 
	// Devrait marcher
	if (biblio.retourner("1782965", "D8403"))
	{
		cout << "D8403 remis par 1782965" << endl;
	}
	else
	{
		cout << "Echec remise" << endl;
	}
	// Ne devrait pas marcher car l'abonne n'a jamais fait ce pr�t
	if (biblio.retourner("1865487", "CD587"))
	{
		cout << "CD587 remis par 1865487" << endl;
	}
	else
	{
		cout << "Echec remise" << endl;
	}
	// Devrait marcher
	if (biblio.retourner("p878546", "D7203"))
	{
		cout << "D7203 remis par p878546" << endl;
	}
	else
	{
		cout << "Echec remise" << endl;
	}
	// Devrait marcher
	if (biblio.retourner("p878546", "QA203"))
	{
		cout << "QA203 remis par p878546" << endl;
	}
	else
	{
		cout << "Echec remise" << endl;
	}
	// Ne devrait pas marcher car l'abonne n'a jamais fait ce pr�t
	if (biblio.retourner("p878546", "QA204"))
	{
		cout << "QA204 remis par p878546" << endl;
	}
	else
	{
		cout << "Echec remise" << endl;
	}

	// Affichage des informations sur albus avec la méthode infoAbonne de la bibliothèque
	cout << "________________________________________________" << endl;
	cout << "INFO ABONNE APRES RETOUR" << endl << endl;
	biblio.infoAbonne("p878546");
		
	// Utiliser l'opérateur >> de Bibliothèque afin d'entrer des mots pour
	// trouver tous les livres correspondants
	// Les mots doivent être recherchés dans tous les attributs string des objets empruntables

	// Rechercher mot, 1er test
	cout << "________________________________________________" << endl;
	cout << "ENTREZ UN MOT A RECHERCHER (1er test)" << endl << endl;
	cin >> biblio;

	// Rechercher mot, 2e test
	cout << "________________________________________________" << endl;
	cout << "ENTREZ UN MOT A RECHERCHER (2e test)" << endl << endl;
	cin >> biblio;

	// Rechercher mot, 3e test
	cout << "________________________________________________" << endl;
	cout << "ENTREZ UN MOT A RECHERCHER (3e test)" << endl << endl;
	cin >> biblio;
	/*******************************/
	/*       FIN DES TESTS         */
	/*******************************/

	// Liberation les ressources 
	delete livre1;
	delete livre2;
	delete livre3;
	delete livre4;
	delete livre5;
	delete livre6;

	delete dvd1;
	delete dvd2;

	system("pause");
	return 0;
}
Пример #2
0
int main()
{
	cout << "________________________________________________" << endl;
	cout << "CREATION ET AFFICHAGE DES ABONNES" << endl << endl;
	// Creation des abonnes
	Abonne john("1839456", "Doe", "John", 23);
	Abonne nicolas("1630236", "Gagnon", "Nicolas", 8);
	Abonne martin("1269348", "Tremblay", "Martin", 18);

	// Afficher les informations sur chaque abonne (en utilisant cout <<)

	cout << john << nicolas << martin;

	cout << "________________________________________________" << endl;
	cout << "CREATION ET AFFICHAGE DES LIVRES" << endl << endl;

	// Constructeur par paramètre: 
	Livre livre1("GA403", "Big C++", 2009, 8, 3);
	Livre livre2("QA203", "Calcul a plusieurs variables partie 1", 2011, 3, 2);
	Livre livre3("AC409", "Le chateau d'Ortrante", 1764, 16, 1);
	Livre livre4("BD302", "Harry Potter et le prisionier d'Azkaban", 1999, 3, 1);

	//// Constructeur par copie :
	Livre livreParCopie("QA204", "Calcul a plusieurs variables partie 2", 2011, 3, 2);
	Livre livre5(livreParCopie);

	//// Opérateur =  :
	Livre livrePourOperateurEgal("GA404", "Big C++", 2016, 8, 3);
	Livre livre6 = livrePourOperateurEgal;

	//// Afficher les informations sur chaque livre 
	cout << livre1 << endl << livre2 << endl << livre3 << endl << livre4 << endl << livre5 << endl << livre6 << endl;

	Bibliotheque biblio;
	cout << "________________________________________________" << endl;
	cout  << "Ajout des livres et abonnes a la bibliotheque" << endl << endl;
	
	// Ajouter les abonnes et les livres a la bibliotheque
	// UTILISEZ: l'opérateur +=
	
	biblio += &john;
	biblio += &nicolas;
	biblio += &martin;

	biblio += &livre1;
	biblio += &livre2;
	biblio += &livre3;
	biblio += &livre4;
	biblio += &livre5;
	biblio += &livre6;

	// Enlever martin de la bibliotheque
	// Enlevez l'édition 2009 de Big C++
	
	biblio -= &martin;
	biblio -= &livre1;

	// Créer les vecteurs vecMatricules et vecCote  
	// tel qu'ils contienne les éléments suivants (string) :
	// { "1630236" , "1630236" , "1839456", "1630236", "1630236", "1630236" }
	// { "AC409" , "BD302" , "BD302" ,  "BD302", "QA204", "QA203" }

	vector<string>vecMatricules { "1630236", "1630236", "1839456", "1630236", "1630236", "1630236" };
	vector<string>vecCote { "AC409" , "BD302" , "BD302" ,  "BD302", "QA204", "QA203" };

	/*******************************************************************/
	/*                       DEBUT DES TESTS                           */
	/* Les modifications restantes sont a la fin de la fonction main.  */
	/*******************************************************************/

	// Test d'emprunts en utilisant les vecteurs précédents
	cout << "________________________________________________" << endl;
	cout << "TESTS D'EMPRUNTS" << endl << endl;
	for (size_t i = 0; i < vecMatricules.size(); i++)
	{
		if (biblio.emprunter(vecMatricules[i], vecCote[i], 160204))
		{
			cout << "AC409 emprunte par 1630236" << endl;
		}
		else
		{
			cout << "Echec emprunt" << endl;
		}
	}
	

	// Afficher les informations d'un abonné en utilisant la méthode infoAbonne de Bibliothèque
	cout << "________________________________________________" << endl;
	cout <<  "INFO ABONNE AVANT RETOUR" << endl << endl;
	biblio.infoAbonne("1630236");
	biblio.infoAbonne("1269348");

	cout << "________________________________________________" << endl;
	cout << "TESTS RETOUR LIVRE" << endl << endl;
	// Devrait marcher
	if (biblio.retourner("1630236", "BD302"))
	{
		cout << "BD302 remis par 1630236" << endl;
	}
	else
	{
		cout << "Echec remise" << endl;
	}
	// Ne devrait pas marcher car l'abonne n'a jamais fait ce pr�t
	if (biblio.retourner("1839456", "QA203"))
	{
		cout << "QA203 remis par 1839456" << endl;
	}
	else
	{
		cout << "Echec remise" << endl;
	}

	// Afficher les informations d'un abonné en utilisant la méthode infoAbonne de Bibliothèque
	cout << "________________________________________________" << endl;
	cout  << "INFO ABONNE APRES RETOUR" << endl<< endl;
	biblio.infoAbonne("1630236");


	// test des opérateurs == des classes Livre et Abonne
	Abonne john2 = john;
	Livre livre_test1 = Livre("AAA", "livre test aaa", 1999, 10, 3);
	Livre livre_test2 = Livre("BBB", "livre test bbb", 1999, 10, 3);
	Livre livre_test3 = livre_test1;
	Livre livre_test4 = livre_test3;
	livre_test4.modifierTitre("livre test ccc");

	cout << "________________________________________________" << endl;
	cout << "TEST OPERATEURS" << endl << endl;
	cout << "matricule == abonne : \t" << ("1839456" == john) << " --- "<< ("1839456" == martin) << endl;
	cout << "abonne == matricule : \t" << (john == "1839456") << " --- " << (martin == "1839456") << endl;
	cout << "abonne == abonne : \t" << (john == john2) << " --- " << (john == martin) << endl;
	
	cout << "cote == livre : \t" << ("AAA" == livre_test1) << " --- " << ("BBB" == livre_test1) << endl;
	cout << "livre == cote : \t" << (livre_test1 == "AAA") << " --- " << (livre_test1 == "BBB") << endl;
	cout << "livre == livre : \t" << (livre_test1 == livre_test3) << " --- " << (livre_test1 == livre_test2) << endl;

	cout << "livre a < livre b : \t" << (livre_test1 < livre_test2) << " --- " << (livre_test2 < livre_test1) << endl;
	cout << "livre b < livre c : \t" << (livre_test2 < livre_test4) << " --- " << (livre_test4 < livre_test2) << endl;

	// Utiliser l'opérateur >> de Bibliothèque afin d'entrer des mots pour
	// trouver tous les livres correspondants
	
	// Rechercher mot, 1er test
	cout << "________________________________________________" << endl;
	cout << "ENTREZ UN MOT A RECHERCHER (1er test)" << endl << endl;
	cin >> biblio;

	// Rechercher mot, 2e test
	cout << "________________________________________________" << endl;
	cout << "ENTREZ UN MOT A RECHERCHER (2e test)" << endl << endl;
	cin >> biblio;
	
	// Rechercher mot, 3e test
	cout << "________________________________________________" << endl;
	cout << "ENTREZ UN MOT A RECHERCHER (3e test)" << endl << endl;
	cin >> biblio;
	
	/*******************************/
	/*       FIN DES TESTS         */
	/*******************************/

	// Liberer les ressources si il le faut

	system("pause");
	return 0;
}