void article::saisir()
{
system("cls");
cin.ignore();
cout<<"\n Entrez un titre : ";
cin.getline(this->titre,50,'\n');
cout<<"\n\n Entrez un auteur : ";
cin.getline(this->auteur,50,'\n');
cout<<"\n\n Entrez un type : ";
cin.getline(this->type,50,'\n');
cout<<"\n\n Entrez un nom de fichier : ";
cin.getline(this->nom_fichier,50,'\n');
cout<<"\n\n Entrez un nombre de pages : ";
cin>>this->nb_pages;
cout<<"\n\n Entrez un nombre de mots cles: ";
cin>>this->nb_mots_cles;
for (
int i=0; // pour i allant de 0
i<this->nb_mots_cles; i++) // au nbre de mot cle entré
// faire :
{
cout<<"\n\n Entrer le mot cle numero "<< i+1 <<" : ";
cin.getline(this->mot_cles[i],50,'\n');
}
}
void article::modifier()
{
int choix;
do // boucle
{
system("cls");
cout<<"°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°\n";
cout<<"°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°\n";
cout<<"°°° °°°\n";
cout<<"°°° 1 - modifier le titre °°°\n";
cout<<"°°° 2 - modifier l'auteur °°°\n";
cout<<"°°° 3 - modifier le nombre de page °°°\n";
cout<<"°°° 4 - modifier le type °°°\n";
cout<<"°°° 5 - modifier le nom fichier °°°\n";
cout<<"°°° °°°\n";
cout<<"°°° 0 - Quitter °°°\n";
cout<<"°°° °°°\n";
cout<<"°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°\n";
cout<<"°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°\n";
cout<<" Choix : ";
cin>>choix;
switch (choix)
{
case 1 : // choix = modifier le titre
system("cls"); //efface l'écran actuel
cout<<"Entrez le nouveau titre : ";
cin.getline(this->titre,50,'\n');
break;
case 2 : // choix = modifier l'auteur
system("cls"); //efface l'écran actuel
cout<<"Entrez le nouvel auteur : ";
cin.getline(this->auteur,50,'\n');
break;
case 3 : // choix = modifier le nbre de pages
system("cls"); //efface l'écran actuel
cout<<"Entrez le nouveau nombre de pages : ";
cin>>this->nb_pages;
break;
case 4 : // choix = modifier le type
system("cls"); //efface l'écran actuel
cout<<"Entrez le nouveau type : ";
cin>>this->type;
break;
case 5 : // choix = modifier le nom du fichier
system("cls"); //efface l'écran actuel
cout<<"Entrez le nouveau nom de fichier : ";
cin.getline(this->nom_fichier,50,'\n');
break;
default : // choix par defaut (si choix différent de 0,1,2,3,4,5)
system("cls"); //efface l'écran actuel
cout<<" . : : Erreur de saisi : : . ";
break;
}
} // fin de la boucle
while (choix!=0); // condition pour la fin de la boucle
}
void article::afficher()
{
system("cls");
cout<<"\n\t . : : VISUALISATION DE L'ARTICLE : : . \t\n\n";
cout<<"\n Titre de l'article : "<<this->titre;
cout<<"\n\n Auteur de l'article : "<<this->auteur;
cout<<"\n\n Type de l'article : "<<this->type;
cout<<"\n\n Nombre de pages :"<<this->nb_pages;
cout<<"\n\n Nom du fichier :"<<this->nom_fichier;
cout<<"\n\n Nombre de mots cles :"<<this->nb_mots_cles;
for(int i=0;i<this->nb_mots_cles; i++)
{
cout<<"\n\n Le mot cles "<< i+1 <<" : "<<this->mot_cles[i];
}
}
void article::visualiser()
{
chaine chemin;
chaine commande;
system("cls");
cout<<"\n\n Le nom du fichier est : ";
cout<<this->nom_fichier;
cout<<"\n\n Completer le chemin SVP : ";
cin>>chemin;
strset(commande, '\0');
strcpy(commande, "start winword");
strcat(commande, "\");
strcat(commande, this->nom_fichier);
system(commande);
}
////////////////////////////////////////////////////////////////////////////////
//////////////////// Classe Article Journal //////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
void art_site::saisir()
{
this->article::saisir();
cout<<"\n Entrez le nom : ";
cin.getline(this->nom,50,'\n');
cout<<"\n Entrez saisir le type : ";
cin.getline(this->type,50,'\n');
cout<<"\n Entrez le sufixe du site : ";
cin.getline(this->sufixe,50,'\n');
}
void art_site::afficher()
{
this->article::afficher();
cout<<"\n Nom de l'article : "<<this->nom;
cout<<"\n Type de l'article : "<<this->type;
cout<<"\n Sufixe de l'article : "<<this->sufixe;
}
void art_site::modifier()
{
int choix;
do
{
system("cls");
cout<<"°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°\n";
cout<<"°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°\n";
cout<<"°°° °°°\n";
cout<<"°°° 1 - modifier les donnees de l'article °°°\n";
cout<<"°°° 2 - modifier le nom °°°\n";
cout<<"°°° 3 - modifier le type °°°\n";
cout<<"°°° 4 - modifier le sufixe °°°\n";
cout<<"°°° °°°\n";
cout<<"°°° 0 - Quitter °°°\n";
cout<<"°°° °°°\n";
cout<<"°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°\n";
cout<<"°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°\n";
cout<<" Choix : ";
cin>>choix;
switch (choix)
{
case 1 : system("cls");
this->article::modifier();
break;
case 2 : system("cls");
cout<<"\n Entrez le nouveau nom : ";
cin.getline(this->nom,50,'\n');
break;
case 3 : system("cls");
cout<<"\n Entrez le nouveau type : ";
cin.getline(this->type,50,'\n');
break;
case 4 : system("cls");
cout<<"\n Entrez le nouveau sufixe : ";
cin.getline(this->sufixe,50,'\n');
break;
template <class T>
void liste<T>::consulter()
{
chaine rech;
bool trouve;
T * p;
system("cls");
cout<<"\n Quel article voulez vous consulter (titre) : ";
cin.getline(rech,50,'\n');
p = this->tete;
trouve=false;
while (p && trouve==false)
{
if (strcmp(p->retour_titre(),rech)==0)
trouve=true;
else
p=p->retour_suiv();
}
if (trouve==true)
p->afficher();
else
cout<<"\n Article non trouve";
}
template <class T>
void liste<T>::afficher_tout()
{
T *p = this->tete;
system("cls");
cout<<"\n Il y a "<<this->nb_elements<<" article(s)";
while (p!=NULL)
{
p->afficher();
p=p->retour_suiv();
}
}
template <class T>
void liste<T>::modifier()
{
chaine rech;
bool trouve;
T * p;
cout<<"Quel article voulez vous modifier (titre) : ";
cin.getline(rech,50,'\n');
p = this->tete;
trouve=false;
while (p && !trouve)
{
if (strcmp(p->retour_titre(),rech)==0)
trouve=true;
else
p=p->retour_suiv();
}
if (trouve)
p->modifier();
else
cout<<"article non trouve";
}
template <class T>
void liste<T>::supprimer()
{
chaine rech;
bool trouve;
T * p, *q;
cout<<"Quel article voulez vous supprimer (titre) : ";
cin.getline(rech,50,'\n');
p = this->tete;
q = p;
trouve=false;
while (p && !trouve)
{
if (strcmp(p->retour_titre(),rech)==0)
trouve=true;
else
{
q=p;
p=p->retour_suiv();
}
}
if (!trouve)
{
cout<<"article non trouve";
}
else
{
p->afficher();
cout<<" La suppression a reussie";
this->nb_elements--;
if (p==this->tete)
{
// suppression à la tete
this->tete=this->tete->retour_suiv();
}
else if(p->retour_suiv()==NULL)
{
//suppression à la fin de la liste
q->modif_suiv(NULL);
}
else
{
// suppresion au milieu de la liste
q->modif_suiv(p->retour_suiv());
}
delete p;
}
}
template <class T>
void liste<T>::lister_critere(char * rech)
{
T * p;
p = this->tete;
int cpt = 0;
while (p)
{
if (strcmp(p->retour_nom(),rech)==0)
{
cpt++;
p->afficher();
}
p=p->retour_suiv();
}
if (cpt==0)
cout<<"aucun article";
else
cout<<cpt<<"article(s) trouve(s)s";
}
////////////////////////////////////////////////////////////////////////////////
/////////////////////////// Classe Base /////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
class Base
{
private :
liste liste_journal;
liste liste_site;
chaine nom;
public :
Base();
void initialiser();
void finaliser();
void ajouter();
void afficher();
void consulter();
void modifier();
void supprimer();
void consulter_journal();
void consulter_site();
void menu();
void moteur_recherche();
};
default : cout<<" . : : Erreur de saisi : : .";
break;
}
}while (choix != 0);
}
void Base::moteur_recherche()
{
int i,nb;
chaine mot[10];
system("cls");
cout<<"\n Donner le nombre de mot (de 1 à 10) : ";
cin>>nb;
for (i=0;i<nb;i++)
{
cin>>mot[i];
}
}
cout<<"\n\n Entrez le nom de la base (20 caracteres max): ";
cin.getline(this->nom,50,'\n');
cout<<"La base "<<this->nom <<" a t-elle été sauvegardée dans un fichier :(o/n) >> ";
cin>>choix;
do
{
// si le fichier a déja été sauvegardé if (choix 'O' || choix 'o')
{
cout<<"Entrer le nom (logique) du fichier : ";
cin>>fichier;
////////////////////////////////////////////////////////////////////////////////
//////////////////// programme principal /////////////////////////
////////////////////////////////////////////////////////////////////////////////
void main()
{
Base mabase;
// initialisation de la base
mabase.initialiser();
// affiche le menu
mabase.menu();
mabase.finaliser();
}
<Fin code>
Dans ma procedure void Base::initialiser(), je voudrais que le prog me demande si un fichier de sauvegarde existe deja. Si non, alors il commence tout de suite a executer le prog, si Oui, il ouvre le fichier et récupère les infos contenu à l'interieur :
cout<<"\n\n Entrez le nom de la base (20 caracteres max): ";
cin.getline(this->nom,50,'\n');
cout<<"La base "<<this->nom <<" a t-elle été sauvegardée dans un fichier :(o/n) >> ";
cin>>choix;
do
{
// si le fichier a déja été sauvegardé if (choix 'O' || choix 'o')
{
cout<<"Entrer le nom (logique) du fichier : ";
cin>>fichier;
/* CHARGEMENT DES ELEMENTS DU FICHIERS */
}
Dans ma procedure void Base::finaliser(), j'aimerais que le programme me demande si je veux enregistrer les informations entrées dans un fichier txt.
- Si je dis Non, il ferme le prog.
- Si Oui, il me demande dans quel nom de fichier (je donne le nom de fichier sans l'extension .txt, et lui m'enregistre les infos dans le fichier <nom_fichier.txt>
<debut code> void Base::finaliser()
{
FILE*fichier;
char nomF;
system("cls");
cout<<"\t°°°°°°°°°°°°°°°°°°°°°°°°°°°\n";
cout<<"\t°° °°\n";
cout<<"\t°° SAUVEGARDE DE LA BASE °°\n";
cout<<"\t°° °°\n";
cout<<"\t°°°°°°°°°°°°°°°°°°°°°°°°°°°\n";
cout<<"nom du fichier a creer: ";
cin>>nomF;
/* INSERTIONS DES DONNEES DANS LE FICHIER */
}
<fin code>
KKun pourrait il m'aider pour la creation et le chargement de ces fichiers SVP car g déja tenter d'aller voir des tutos ou des exemples mais je ne comprend pas et n'arrive pas a les integrer dans mon prog
Salut alors voilà si tu veut enregistré dans un fichier sait un peu comme si tu veut les infos à l'écran.
Imagine une fonction pour enregistrer seulement les article. (Si j'ai bien compris ton prog )
void article::afficher()
{
FILE * p_File;
fopen("ouptut.txt","w"); // le w signife write (écrire) tu peux rajouté un b pour écrire en binaire
char * temp;
sprintf(&temp,"\n\t . : : VISUALISATION DE
L'ARTICLE : : . \t\n\n\n Titre de l'article : %s\n\n Auteur de
l'article : %s\n\n Type
de l'article :%s \n\n Nombre de pages : %s \n\n Nom du fichier :
%s\n\n Nombre de mots cles
:%i",this->titre,this->auteur,this->type,this->nb_pages,this->nom_fichier,this->nb_mots_cles);
fwrite(&temp,1,strlen(temp),p_File);
for(int i=0;i<this->nb_mots_cles; i++)
{
sprintf(&temp,"\n\n Le
mot cles %i : %s",i+1,this->mot_cles[i]);
fwrite(&temp,1,strlen(temp),p_File);
}
fclose(p_File);
}
J'ai pas testé le code mais j'espère que ça pourra te donner des idées
Ok, c'est exactement sa que je voulais faire, mais en fait, mon prog est en C++ et ce n'est donc pas FILE mais ofstream ou un truc comme sa il me semble. Enfin, je vais regarder sa et tenter de le modifier :)
Me revoilà, je t'ai fais un simple code (compiler sous Dev-cpp 4.9.9.2 en C++) que j'ai testé. Car l'idée d'en comporte une erreur au moins ( p_File=fopen("ouptut.txt","w"); )
alors voila un petit code complet qui FONCTIONNE (rien avoir avec ton code mais c'est un exemple).
Pour exemple pour écrire un ficher :
#include <stdio.h>
int main(){
FILE * essai; // Pointeur
essai=fopen("Test.txt","w"); // ouverture du fichier
char text[]="Ca fonctionne"; // Le test
fwrite(text,1,sizeof(text),essai); // On écrit
fclose(essai); //Termine les opérations sur le fichier
}
Et un autre exemple pour le lire :
#include <stdio.h>
#include <stdlib.h>
int main(){
FILE * essai; // Pointeur
if(!(essai=fopen("Test.txt","r"))){ // ouverture du fichier
printf("Impossible d'ouvrir le fichier\n");
}else{
char text[15]; // Le test
fread(&text,1,15,essai); // On lit 15 caractères
printf("%s\n\n",text);
fclose(essai); //Termine les opérations sur le fichier
}
system("pause");
}