#include <iostream>
using std::cout;
using std::cerr;
using std::cin;
using std::ios;
using std::endl;
#include <string>
using std::string;
#include <fstream>
using std::ofstream;
using std::ifstream;
using std::fstream;
struct Joueur // Défini la structure Joueur
{
string nom; // Le nom de famille du joueur
string prenom; // Le prenom du joueur
double pointsMensuels; // Les points mensuels du joueur
double pointsCours; // Les points en cour
};
int menuPrincipal ();
void gestionJoueurs (fstream &);
void ajouterVictoire (fstream &);
void ajouterDefaite (fstream &);
void cloturerMois (fstream &);
int main()
{
// Créé l'objet sortieFichierJoueurs comme fichier binaire
ofstream sortieFichierJoueurs ("informations.dat", ios::binary);
if (!sortieFichierJoueurs) // Teste l'ouverture du fichier
{
cerr << "Ouverture du fichier impossible.";
exit (1);
}
// Ouvre le fichier en entrée et en sortie
fstream sortieEntreeFichierJoueurs ("informations.dat", ios::in | ios::out);
int choix; // Contient le choix de l'utilisateur
void (* fonction [4]) (fstream &) = {gestionJoueurs, ajouterVictoire, ajouterDefaite,
cloturerMois};
Joueur joueur1 = {"tc", "tn", 650.0, 642.0};
sortieEntreeFichierJoueurs.write (reinterpret_cast <const char *> (&joueur1),
sizeof (Joueur));
Joueur joueur2 = {"rf", "fd", 720.0, 745.0};
sortieEntreeFichierJoueurs.write (reinterpret_cast <const char *> (&joueur2),
sizeof (Joueur));
while ((choix = menuPrincipal ()) != 5)
{
(* fonction [choix - 1]) (sortieEntreeFichierJoueurs); // Appelle la fonction correspondante
// à l'aide des pointeurs de
// fonctions
}
system("PAUSE");
return 0;
}
// Fonction gestionJoueurs : permet de voir la liste des joueurs, d'ajouter un joueur, de
// supprimer un joueur et enfin de changer le joueur actif.
void gestionJoueurs (fstream & fichierJoueurs)
{
// Prototypes des fonctions. Ainsi, elles ne peuvent être utilisées par d'autres
// fonctions du programme, mais seulement par gestionJoueurs ()
void afficherListe (fstream &);
//void supprimerJoueur (ofstream &);
//void ajouterJoueur (ofstream &);
int choix;
do
{
system ("cls");
cout << "1 - Voir la liste des joueurs"
<< "\n2 - Supprimer un joueur"
<< "\n3 - Ajouter un joueur"
<< "\n4 - Changer le joueur actif"
<< "\n5 - Revenir au menu precedent"
<< "\nVotre choix : ";
cin >> choix;
} while (choix < 1 || choix > 5);
switch (choix) // Introduit un switch
{
case 1:
afficherListe (fichierJoueurs);
break;
case 2:
//supprimerJoueur ();
break;
case 3:
//ajouterJoueur ();
break;
case 4:
break;
case 5:
return;
default:
cerr << "Erreur.";
exit (1);
}
}
void afficherListe (fstream & fichierLire)
{
Joueur temp;
system ("cls");
cout << "Les joueurs possedant une fiche sont :" << endl << endl;
fichierLire.seekg (0); // Replace le curseur de lecture au début du fichier
fichierLire.read (reinterpret_cast <char *> (& temp),
sizeof (Joueur));
while (!fichierLire.eof())
{
cout << temp.nom << ' ' << temp.prenom << endl;
cout << "Points mensuels (base de calcul) : " << temp.pointsMensuels << endl
<< "Points en cours : " << temp.pointsCours << endl
<< "Progression : " << temp.pointsCours - temp.pointsMensuels << endl << endl
<< "--------------" << endl << endl;
fichierLire.read (reinterpret_cast <char *> (& temp),
sizeof (Joueur));
}
cout << endl << endl;
system ("PAUSE");
}
void ajouterVictoire (fstream & fichierJoueurs)
{
cout << "Hello.";
}
void ajouterDefaite (fstream & fichierJoueurs)
{
cout << "Hello.";
}
void cloturerMois (fstream & fichierJoueurs)
{
cout << "Hello.";
}
int menuPrincipal ()
{
int rubrique;
do
{
system ("cls"); // Vide l'affichage
cout << "1 - Gestion des joueurs"
<< "\n2 - Ajouter une victoire"
<< "\n3 - Ajouter une defaite"
<< "\n4 - Cloturer le mois"
<< "\n5 - Quitter"
<< "\nVotre choix : ";
cin >> rubrique;
} while (rubrique < 1 || rubrique > 5); // Vérifie le choix de l'utilisateur
return rubrique; // Retourne le choix;
}
Partager