Help me !!!

cs_pascal13 Messages postés 3 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 5 octobre 2004 - 4 oct. 2004 à 10:23
cs_pascal13 Messages postés 3 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 5 octobre 2004 - 5 oct. 2004 à 15:17
j arrive pas a compiler mon programme...

je sais que g qlq que souccis au niveau de la sauvegarde des données sur le fichier

toutes remarques seront les bienvenu ...
merci!

/*********************************************
* *
* *
* *
*Descrition: *
*Ce programme sert à façiliter la gestion *
*des employés dans une entreprise. *
* *
* *
* *
*Note(s): *
* *
*********************************************/

#include <stdio.h> //Pour printf et scanf
#include <string.h> //Pour stricmp et strnicmp
#include

/*********************************************
*Déclaration des constantes. *
*********************************************/

const short MAX = 10;
const short MAX2 = 30;

FILE* fichier = NULL;

/********************************************/

class id
{

//Structure contenant les caractéristiques des employés
public:
struct Employe
{
char nom[MAX2];
char prenom[MAX2];
char adresse[MAX2];
char ville[MAX2];
char code_poste[MAX];
char num_tel[MAX];
char num_port[MAX];
char date_naissance[MAX];
char date_arrivee[MAX];
char emploi[MAX2];
char paye[MAX];
} employe;

/*********************************************
*Fonction qui crée un nouveau fichier employé*
*********************************************/
void id::newE (char fnom[], int error)
{
cout << endl << "Veuillez entrer les donnees demandees concernant l'employe(e)." << endl << "son nom : ";
cin >> nom;

cout << "son prenom : ";
cin >> prenom;

cout << "son adresse : ";
cin >> adresse;

cout << "son ville : ";
cin >> ville;

cout << "son code postale : ";
cin >> code_poste;

cout << "son numero de tel : ";
cin >> num_tel;

cout << "son numero de port : ";
cin >> num_port;

cout << "sa date de naissance : ";
cin >> date_naissance;

cout << "la date de son arrivee dans l'entreprise : ";
cin >> date_arrivee;

cout << "son emploi : ";
cin >> emploi;

cout << "le montant de sa paye(par mois) : ";
cin >> paye;

fnom = "BdD employe";
fichier = fopen(fnom,"rt");

if(!fichier) //Si le fichier existe déjà, il
{ //ne faut pas l'écraser
error = id.save(employe, fnom);

if(error)
cout << "Une erreur est survenue pendant la creation du fichier " << fnom ;
}
else
{
cout << "Un fichier du m\x88me nom existe d\x82j\x85." ;
fclose(fichier);
}
}

/*********************************************
*Fonction servant à consulter et/ou modifier *
*un ficher déjà existant *
*********************************************/
void id::open(char fnom[], int error)
{
short choice = 1;

fnom = "BdD employe";

fichier = fopen(fnom, "rt");

if(!fichier)
{
cout << endl << "Une erreur est survenue durant l'ouverture du fichier " << fnom;
return ;
}

rewind(fichier);
fread(nom, sizeof(nom), 1, fichier);

fseek(fichier, MAX2, SEEK_CUR);
fread(prenom, sizeof(prenom), 1, fichier);

fseek(fichier, MAX2, SEEK_CUR);
fread(adresse, sizeof(adresse), 1, fichier);

fseek(fichier, MAX2, SEEK_CUR);
fread(ville, sizeof(ville), 1, fichier);

fseek(fichier, MAX, SEEK_CUR);
fread(code_poste, sizeof(code_poste), 1, fichier);

fseek(fichier, MAX, SEEK_CUR);
fread(num_tel, sizeof(num_tel), 1, fichier);

fseek(fichier, MAX, SEEK_CUR);
fread(num_port, sizeof(num_port), 1, fichier);

fseek(fichier, MAX, SEEK_CUR);
fread(date_naissance, sizeof(date_naissance), 1, fichier);

fseek(fichier, MAX, SEEK_CUR);
fread(date_arrivee, sizeof(date_arrivee), 1, fichier);

fseek(fichier, MAX2, SEEK_CUR);
fread(emploi, sizeof(emploi), 1, fichier);

fseek(fichier, MAX, SEEK_CUR);
fread(paye, sizeof(paye), 1, fichier);

fclose(fichier);

for(;;)
{
cout << endl << "Donnees :\t\t\t\t" ;
cout << endl << "1.nom :\t\t\t\t" << nom ;
cout << endl << "2.prenom :\t\t\t" << prenom;

cout << endl << "3.adresse :\t\t\t" << adresse;
cout << endl << "4.ville :\t\t\t" << ville;
cout << endl << "5.code postale :\t\t" << code_poste;
cout << endl << "6.numero de tel :\t\t" << num_tel;
cout << endl << "7.numero de port. :\t\t" << num_port;

cout << endl << "8.date de naissance :\t\t" << date_naissance ;
cout << endl << "9.date d'arrivee : \t" << date_arrivee ;
cout << endl << "10.emploi : \t\t" << emploi;
cout << endl << "11.paye :\t\t\t" << paye;
cout << endl;
cout << endl << "Quelle donnee voulez-vous modifier";
cout << endl << "(Pour arr\x88ter d'entrer des donnees, tapez '0') : " ;


cin >> choice;

if(!choice)
break;

cout << "Veuillez entrer la nouvelle donnee : ";

switch(choice)
{
case 1: cin >> nom;
break;
case 2: cin >> prenom;
break;
case 3: cin >> adresse;
break;
case 4: cin >> ville;
break;
case 5: cin >> code_poste;
break;
case 6: cin >> num_tel;
break;
case 7: cin >> num_port;
break;
case 8: cin >> date_naissance;
break;
case 9: cin >> date_arrivee;
break;
case 10: cin >> emploi;
break;
case 11: cin >> paye;
break;
}
}

error = id::save(employe, fnom);

if(error)
cout << "Une erreur est survenue pendant l'ecriture dans le fichier " << fnom;

return;
}

/*********************************************

*Fonction qui sauvegarde les donnees *
*dans le fichier specifie. *
*********************************************/
int id::save(Employe employe, char fnom[])
{
fichier = fopen(fnom, "wt"); //Création ou ouverture du fichier employé

if(!fichier) //Vérification
return 1;

rewind(fichier); //On se place au début du fichier

//Ecriture des données dans le fichier créé
fwrite(nom, sizeof(nom), 1, fichier);

fseek(fichier, MAX2, SEEK_CUR);
fwrite(prenom, sizeof(prenom), 1, fichier);

fseek(fichier, MAX2, SEEK_CUR);
fwrite(adresse, sizeof(adresse), 1, fichier);

fseek(fichier, MAX2, SEEK_CUR);
fwrite(ville, sizeof(ville), 1, fichier);

fseek(fichier, MAX, SEEK_CUR);
fwrite(code_poste, sizeof(code_poste), 1, fichier);

fseek(fichier, MAX, SEEK_CUR);
fwrite(num_tel, sizeof(num_tel), 1, fichier);

fseek(fichier, MAX, SEEK_CUR);
fwrite(num_port, sizeof(num_port), 1, fichier);

fseek(fichier, MAX, SEEK_CUR);
fwrite(date_naissance, sizeof(date_naissance), 1, fichier);

fseek(fichier, MAX, SEEK_CUR);
fwrite(date_arrivee, sizeof(date_arrivee), 1, fichier);

fseek(fichier, MAX2, SEEK_CUR);
fwrite(emploi, sizeof(emploi), 1, fichier);

fseek(fichier, MAX, SEEK_CUR);
fwrite(paye, sizeof(paye), 1, fichier);

cout << endl << "Donnees sauvergardees.";

fclose(fichier);

return 0;
}
}//fin de class id

/*********************************************
*Fonction principale *
*********************************************/
main(void)
{
id id;
bool sortir = false;
char entree[MAX2];
int choix;
char fnom[MAX2];
int error = 0;

cout << endl << endl << "Bonjour, Bienvenu sur la gestion des employes";

while(!sortir)
{
do
{
if(choix == 4)
cout << endl << "Vous avez effectue une mauvaise entree";
cout << endl
<< endl << "1 : Sortir du programme."
<< endl << "2 : Ajout d un nouveau Employe."
<< endl << "3 : Modifier la base."
<< endl << "Choix : ";

cin >> choix;

if (choix <1 || choix >3) choix = 4;

} while(choix == 4);

switch(choix)
{
case 1: sortir = true;
break;
case 2: id.newE(fnom, error);
break;
case 3: id.open(fnom, error);
break;
default: break;
}
}
cout << endl << "\tAu revoir." << endl << endl ;

return 0;
}

6 réponses

leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
4 oct. 2004 à 13:23
premiere chose, pk avoir mis stdio.h?????tu utilise que des cin et cout......?
deuxieme chose, je veux bien t'aider mais j'ai pas de compilo sous la main, dc je peux pas tester pour trouver rapidement les erreurs, stp post aussi tes erreurs, ca sera plus simple pour nous
0
cs_pascal13 Messages postés 3 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 5 octobre 2004
4 oct. 2004 à 13:54
ha vi dsl!
c parce que au debut j avais mis des printf et scanf ...
puis je l ai modifier et g oublier de l enlever!

voici les erreurs:

C:\Documents and Settings\Administrateur.OLYMPE\Bureau\Travaux c++\exo cpp\essay01\ess.cpp(26) : error C2143: syntax error : missing ';' before '*'

C:\Documents and Settings\Administrateur.OLYMPE\Bureau\Travaux c++\exo cpp\essay01\ess.cpp(26) : error C2501: 'FILE' : missing storage-class or type specifiers

C:\Documents and Settings\Administrateur.OLYMPE\Bureau\Travaux c++\exo cpp\essay01\ess.cpp(26) : error C2501: 'fichier' : missing storage-class or type specifiers

C:\Documents and Settings\Administrateur.OLYMPE\Bureau\Travaux c++\exo cpp\essay01\ess.cpp(325) : error C2059: syntax error : ')'

C:\Documents and Settings\Administrateur.OLYMPE\Bureau\Travaux c++\exo cpp\essay01\ess.cpp(326) : warning C4508: 'main' : function should return a value; 'void' return type assumed
Error executing cl.exe.

ess.obj - 4 error(s), 1 warning(s)

voilou..
et encore merci
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
4 oct. 2004 à 16:13
Salut,
Les 3 premières erreurs sont dûes à l'absence de "stdio.h". Tu dois garder #include <stdio.h> car la structure FILE est définie dans ce fichier. Il ne te restera donc qu'une erreur et un petit warning. Quand j'aurai le temps je testerai ton code.
A+
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
4 oct. 2004 à 18:34
Tu crois programmer en C ou en C++?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
4 oct. 2004 à 19:50
Salut,
Je viens de tester ton code. Ca marche après avoir corrigé quelques petites erreurs. Les voici:
1- L'accolade de fin de definition de la classe doit être suivi d'un "point virgule" comme ceci: }; //fin de class id
2- Une bonne douzaine de nouvelles erreurs apparaissent. Les variables "nom", "prenom" etc ne sont pas déclarées. C'est la structure "employe" qui est déclarée. Il faudra donc écrire par exemple "employe.nom" ,"employe.prenom" etc... exemple:
cin >> employe.nom; pareil pour les autres.
3-L'appel suivant est incorrect : error = id.save(employe, fnom);
Il fallait écrire: error = id::save(employe, fnom);
4-Reste un petit warning pas méchant car le tableau "entree" est declaré dans la fonction main sans être utilisé.

Une fois toutes ces petites erreurs d'inattention corrigées, tout rentre dans l'ordre.
Bonne programmation.
0
cs_pascal13 Messages postés 3 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 5 octobre 2004
5 oct. 2004 à 15:17
merci a tous ...
0
Rejoignez-nous