IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Enregistrement dans des fichiers


Sujet :

C++

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Enregistrement dans des fichiers
    Bonjour à tous,

    Je suis un débutant en C++ (et en progra en général). Et j'ai un projet a rendre qui consiste a faire "une petite base de donnée" (attention ca ne doit pas tout a fait fonctionner comme tel). Je vous explique mon problème, j'ai 3 classes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    class Personne  {
    protected:
            char nom_[32];
            char prenom_[32];
            ...
    public:
    	Personne();
    	void ajouterPersonne(Personne &pers);
    	virtual void affiche();
    	~Personne();
    }
    class Utilisateur:public Personne
    {
    	// Gérer le num client
    	static int IDclient_;
    	int numclient_;
     
    	// Info Utilisateur
    	char numinscription_[32];
    	bool vipo_;
    	int cheque_;
     
    	//Gestion des Inscriptions
    	Inscription* inscriptions[MAX];
    	int nombreInscriptions;
    	//Gestion des demandes
    	Demande* demandes[MAX];
    	int nombreDemandes;
     
    public:
    	Utilisateur();
    	int utilisateurLibre(); // Va chercher dans le tableau d'objet le 1ere emplacement libre.
    	void affiche();
    	void listingUtilisateur(Utilisateur *util);
    	void ajouterUtilisateur(Utilisateur &Util);
    	~Utilisateur();
    }
     
    class Inscription
    {
    	static int IDinscr_;
    	int numinscr_;
    	char dateinscription_[16];
    	char numinscription_[16];
    	char dateecheance_[16];
    public:
    	Inscription();
    	int inscriptionLibre(); // Va chercher dans le tableau d'objet le 1ere emplacement libre.
    	void ajouterInscription(Inscription &inscr);
    	void affiche();
    	~Inscription();
    };
    Voici mes 3 classes, J'aimerais bien faire une fonction qui va enregistrer tout le contenu de ses classes dans un fichier (.txt) et une fonction qui va reprendre le contenu de mon fichier (.txt) et le remettre dans mes classes (en lançant le programme), je sais déjà que je vais avoir des problèmes avec mes pointeurs, que je vais surement devoir reconstruire. Si vous pouviez m'aider pour y voir un peu plus clair dans la façon de procéder, des liens de tuto, ou quoi que ce soit je suis preneur

    Merci d'avance.

    Ps : étant donné que je suis débutant, je ne peux pas utiliser des trucs trop poussé

  2. #2
    Membre éclairé Avatar de seeme
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    430
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 430
    Points : 791
    Points
    791
    Par défaut
    Il est possible d'utiliser des framework pour faire de la serialisation (boost par exemple), mais je pense que c'est trop compliqué pour le moment.

    Ce que tu peux faire (sans avoir regardé ton code dans le détail), pour remplacer les pointeurs, c'est d'utiliser des identifiants uniques pour faire le lien. A toi de voir comment générer ces identifiants.

    Edit: je vient de voir que tu as déjà des identifiants (à toi de t'assurer qu'ils sont uniques). Sers toi de tes clef primaires pour remplacer les pointeurs au moment de la sérialisation.

    Ensuite à la désérialisation, utilise ces clef pour créer ton lien sous la forme de pointeur.

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Oui je pense que les Framework ca va être un peu compliqué

    Pour mes identifiants, ils sont bien uniques.

    Par contre je ne vois pas trop se que tu veux dire par sérialisation et desérialisation.

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Ok c'est bon je pense avoir compris,

    Il a plus qu'a le faire !

  5. #5
    Membre averti
    Homme Profil pro
    Analyse système
    Inscrit en
    Novembre 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 227
    Points : 311
    Points
    311
    Par défaut
    La sérialisation des données consiste à écrire dans un fichier les informations de ta classe toujours dans le même ordre (elles sont écrites en série). La désérialisation et l'opération inverse. A partir d'un fichier, tu sais dans quel ordre tu doit lire tes données et tu peux ainsi les affecter directements à tes variables.

    Je te conseille de te créer ces deux méthodes (serialisation et deserialisation) pour chacune de tes classes par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void Personne::serialisation(std::ifstream &flux )
    {
    flux << nom_ << ";" << prenom_ << std::endl;
    }
    void Personne::derialisation(std::ifstream &flux )
    {
    std::string tempo;
    flux >> nom_ >> tempo >> prenom;
    }

  6. #6
    Membre expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Points : 3 156
    Points
    3 156
    Par défaut
    Salut

    J'ai pas trop de temps à y consacrer là mais j'émet un fort doute sur le fonctionnement de ceci :

    Citation Envoyé par andnicam Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void Personne::derialisation(std::ifstream &flux )
    {
    std::string tempo;
    flux >> nom_ >> tempo >> prenom;
    }
    En quoi l'usage de "tempo" permettrait de reparser la chaîne ???
    Find me on github

  7. #7
    Membre chevronné Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 042
    Points : 2 232
    Points
    2 232
    Par défaut
    J'ai pas trop de temps à y consacrer là mais j'émet un fort doute sur le fonctionnement de ceci
    +1

    que ça sois un string vide, ou un ";" ce n'est pas ce qu'il y a de plus naturel.
    D'ailleurs un string vide écris dans un fichier n'écrira rien, les variables enregistrées seront concaténé et bonjour pour le relire :p.
    Un simple espacement ' ' sera le plus simple pour le re-parser derrière. Et un traditionnel guillement entre les chaines de caractères.
    Homer J. Simpson


Discussions similaires

  1. Réponses: 0
    Dernier message: 25/07/2010, 18h22
  2. Réponses: 4
    Dernier message: 22/07/2010, 16h46
  3. enregistrement des matrices dans des fichier text
    Par fleurrouge dans le forum Signal
    Réponses: 1
    Dernier message: 22/05/2009, 21h23
  4. Réponses: 1
    Dernier message: 18/01/2009, 10h34
  5. Réponses: 2
    Dernier message: 11/09/2008, 12h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo