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 :

Exercice de gestion de stagiaires


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Langage c
    Inscrit en
    Janvier 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Langage c

    Informations forums :
    Inscription : Janvier 2021
    Messages : 3
    Points : 0
    Points
    0
    Par défaut Exercice de gestion de stagiaires
    Écrire en C un programme permettant de gérer le service des stages . Pour cela vous devrez prendre en compte les informations suivantes :
    ➢ Les stagiaires (nom, prénom, salaire, ...),
    ➢ Les entreprises d'accueil (nom, adresse, ...), ➢ Les professeurs de suivi (nom, prénom, ...).
    Le logiciel permettra de gérer ces différentes ressources : ajout, modification ou suppression. Il pourra également offrir certains des services suivants :
    ➢ Liste des stagiaires dont un enseignant est responsable, ➢ Liste des stagiaires présents dans une même entreprise, ➢ Mémoriser la date des visites de l'enseignant,
    ➢ Etc...
    qui peut m’aide avec se programme
    Je suis débutant .

  2. #2
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 438
    Points : 43 081
    Points
    43 081
    Par défaut
    qui peut m’aide avec se programme
    Comme dit l'expression ; Aides-toi et le ciel t'aidera.

    Nous pourrons t'aider mais ne ferons pas le travail à ta place.

    Postes ton code et dis nous ou tu bloques.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556
    Par défaut
    La question la + importante à se poser, c'est comment rendre persistent le stockage ? (parce que tu ne vas pas saisir à chaque fois tous les profs, tous les étudiants, ...)

    Et la réponse c'est base de données ... quelle soit basique avec 1 fichier à plat (simple json/ xml/ "key value"/ ...), fichier à plat NoSQL ou SGBD (le + simple en C c'est SQLite)

    Donc voila, il te faut 1 bibliothèque, la prendre en main, faire ta base de données (MCD + requêtes) et ensuite le programme est assez basique : 1 petite 10zaine d'écrans

  4. #4
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Bonjour,

    Joli titre, particulièrement explicite.
    Si les cons volaient, il ferait nuit à midi.

  5. #5
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 685
    Points : 30 974
    Points
    30 974
    Billets dans le blog
    1
    Par défaut
    Je demande de l'aide
    Bonjour. Super ton titre. Il résume bien le problème du topic. Ceux qui viendront sur le forum sauront immédiatement de quoi il s'agit.

    Citation Envoyé par Motana Voir le message
    Je suis débutant .
    Oui, l'excuse habituelle qu'on voit dans ce genre de cas. Malheureusement cela n'est pas une justification suffisante pour qu'on fasse ton TP à ta place car ce n'est pas le but d'un TP.
    Surtout qu'un TP de ce genre n'est pas donné à un débutant. Donc 2 solutions
    • sois tu n'as pas eu les cours adéquats, et dans ce cas toute la classe étant dans le même cas pourra aller se plaindre au chef d'établissement (je pars du principe que tu es dans une école) de la difficulté des TP que donne le prof par rapport au niveau
    • sois tu as eu les cours mais tu révassais à autre chose quand on t'apprenait les bases et maintenant tu as du retard et dans ce cas, tu télécharges un tuto sur le net et tu te sors les doigts pour te remettre au niveau


    Citation Envoyé par chrtophe Voir le message
    Postes ton code et dis nous ou tu bloques.
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #include <stdio.h>
    int main() {
    }
    Ca coince à partir de là...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Langage c
    Inscrit en
    Janvier 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Langage c

    Informations forums :
    Inscription : Janvier 2021
    Messages : 3
    Points : 0
    Points
    0
    Par défaut Voilà ce que j’ai fait mais sa donne pa.
    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    struct stagiaire
    {
    int  n;
    char nom[100];
    char prenom[100];
    char filiere[100];
    char cnib[100];
    int salaire;
    };
    struct entreprise
    {
    int i;
    char nom[100];
    char adresse[100];
    char code[100];
    };
    struct professeur
    {
    int  x;
    char nom[100];
    char prenom[100];
    char mail[100];
    char cnib[100];
    int date;
    };
    struct Stagaire*sta;
    /*-------fonction de recherche-----------*/
    int rech(int nrech)
    {
    FILE*F;
    F=fopen("stagaire.txt","r");
    do
    {
    fscanf(F,"%d ;%s; %s; %s ; %s; %d \n",&(sta->n),&sta->nom,sta->prenom,sta->filiere,sta->cnib,sta->salaire);
    fflush(stdin);
    if((sta->n)==nrech)
    {
    fclose(F);
    return 1;
    }
    }
    while(feof(F));
    fclose(F);
    return -1;
    }
    /*............procedure d'ajout.................*/
    void Ajouterstagiaire(struct stagiaire*sta)
    {
    FILE*F;
    int n;
    F=fopen("stagiaire.txt","a");
    printf("\n entre le numero du nouveau stagiaire:");
    scanf("%d",&n);
    fflush(stdin);
    while(rech(n)==1)
    { 
    printf("\n ce numero exite deja:");
    printf("\n entrer le numero du stagiaire:");
    scanf("%d",&n);
    }
    sta->n=n;
    printf("\n entrer le nom:");
    gets(sta->nom);
    fflush(stdin);
    printf("\n entrer le prenom:");
    gets(sta->prenom);
    fflush(stdin);
    printf("\n entrer la filiere:");
    gets(sta->filiere);
    fflush(stdin);
    printf("\n entrer le numero de la CNIB:");
    gets(sta->cnib);
    fflush(stdin);
    printf("\n entrer le salaire:");
    scanf("%d",&(sta->salaire));
    fprintf(F,"%d ;%s ;%s ;%s ;%s ;%d\n",sta->n,sta->nom,sta->prenom,sta->filiere,sta->cnib,(sta->salaire));
    //fflush(stdin);
    close(F);
    }
    /*-----------recherche et afficher---------*/
    void Recherche(struct stagiaire*sta)
    {
    int nR;
    printf("Entrer le numero du stagiaire a recherche\n");
    scanf("%d",&nR);
    FILE*F;
    F=fopen("stagiaire.txt","r");
    do
    {
    fscanf(F,"%d ;%s ;%s ;%s ;%s ;%d\n",&(sta->n),&sta->nom,&sta->prenom,&sta->filiere,&sta->cnib,&(sta->salaire));
    if(nR == sta->n);
    {
    printf("----------information sur le stagiaire:-------------\n\n");
    printf("Numero\t: %d \n", sta->n);
    printf("Nom:\t%s\n",sta->nom);
    printf("prenom:\t%s\n ",sta->prenom);
    printf("filiere:\t%s\n",sta->filiere);
    printf("CNIB:\t%s\n ",sta->cnib);
    printf("salaire\t: %d \n",(sta->salaire));
    }
    }
    while(!feof(F));
    fclose(F);
    }
    /*--------------procedure de suppression---------------*/
    void Supprimerstagiaire(struct stagiaire*sta)
    {
    char rep;
    int nRech;
    printf("entrer le numero du stagiaire a supprimer:");
    scanf("%d",&nRech);
    fflush(stdin);
    if(rech(nRech)==1)
    {
         printf("\nvoulez vous vraiment supprimer o/n ?");
         scanf("%c",&rep);
         fflush(stdin);
         if(rep=='o'|| rep=='O');
    {
    FILE*Fich,*F;
    F=fopen("stagiaire.txt","r");
    Fich=fopen("Tempstagiaire.txt","a");
    do
    {
    fscanf("%%d;%s ;%s ;%s ;%s ;%d\n",&sta->n,&sta->prenom,&sta->filiere,&sta->cnib,&(sta->salaire));
    if(nRech!=sta->n)
    {
    fprintf(Fich,"%d, %s; %s; %s; %s;%d\n",sta->n,sta->prenom,sta->filiere,sta->cnib,(sta->salaire));
    }
    }
    while (!feof(F));
    fclose(Fich);
    fclose(F);
    remove("stagiaire.txt");
    rename("Tempstagiaire.txt","stagiaire.txt");
    printf("suppression effectuee avec succees");
    }
    }
    else
    {
    printf("\n ce numero du stagiaire n'exit pas");
    }
    }
    /*--------procedure modifier stagiaire-----------*/ 
    void Modifierstagiaire(struct stagiaire*sta)
    FILE*F,*Fich;
    int n;
    const char rep='n';
    printf("\n entrer le numero du stagiaire a Modifieer:");
    scanf("%d",&n);
    fflush(stdin);
    if(rech(n)==1)
    {
    printf("\n voulez vous vraiment Modifier o/n?");
    scanf("%c",&rep);
    fflush(stdin);
    printf("%c",rep);
    if(rep=='o'|| rep=='O');
    {
    F=fopen("stagiaire.txt","r");
    Fich=fopen("Tempstagiaire.txt","a");
    do
    {
    fscanf(F,"%d; %s; %s; %s; %s; %d\n",&sta->n,&sta->nom,&sta->prenom,&sta->filiere,&sta->cnib,&(sta->salaire));
    if( n==sta->n)
    {
    sta->n==n;
    printf("\nentrer le nouveau nom:");
    gets(sta->nom);
    printf("\n entrer le nouveau prenom:");
    gets(sta->prenom);
    printf("entrer la nouvelle filiere:");
    gets(sta->filiere);
    printf("entrer l nouveau CNIB:");
    gets(sta->cnib);
    printf("\n entre le nouveau salaire");
    scanf("%d",&(sta->salaire));
    }
    fprintf(Fich,"%d; %s; %s; %s; %s; %d\n",sta->n,sta->nom,sta->prenom,sta->filiere,sta->cnib,(sta->salaire));
    }
    while(!feof(F));
    fclose(F);
    fclose(Fich);
    remove("stagiaire.txt");
    rename("Tempstagiaire.txt","stagiaire.txt");
    printf("\n la modification a reussi");
    }
    else
    {
    printf("\n la modificationa ete annule\n");
    }
    else
    {
    printf("\nce numero du stagiaire n exite pas");
    }
    }
    /*------------procedure d'affichage-------*/
    void afficherTt(struct stagiaire*sta)
    {
    FILE*F;
    F=fopen("stagiaire.txt","r");
    printf("La liste des stagiaire est:\n  \n");
    printf("numero\t nom\n prenom\t filier\t CNIB\t salaire\n");
    do
    {
    fscanf(F,"%d;%s;%s;%s;%s;%d\n",&sta->n,&sta->nom,&sta->prenom,&sta->filiere,&sta->cnib,&(sta->salaire));
    fflush(stdin);
    printf("%d\t",sta->n);
    printf("%s\t",sta->nom);
    printf("%s\t",sta->prenom);
    printf("%s\t",sta->filiere);
    printf("%s\t",sta->cnib);
    printf("%d\t",sta->salaire);
    }
    while(!feof(F));
    fclose(F);
    }
    /*--------------le menu principale----------*/
    void main(struct stagiaire*sta)
    {
    int choix;
    char rep;
    do
    {
    sustem("cls");
    printf("*************MENU**************\n");
    printf("1-Ajouter un stagiaire\n");
    printf("2-recherche un stagiaire\n");
    printf("3-modifier un stagiaire\n");
    printf("4-supprimer un stagiaire\n");
    printf("5-Afficher tout les stagiaire\n");
    printf("6-quitter\n");
    do
    {
    printf("\n-ENTRE VOTRE CHOIX:");
    scanf("%d",& choix);
    }
    while(choix<1|| choix>6);
    switch(choix)
    {
    case 1:Ajouterstagiaire(struct stagiaire*sta);
    break;
    case 2:recherche(struct stagiaire*sta);
    break;
    case 3:supprimerstagiaire(struct stagiaire*sta);
    break;
    case 4:Modifierstagiaire(struct stagiaire*sta);
    break;
    case 5:afficherTt(struct stagiaire*sta);
    break;
    case 6:break;
    }
    printf("\n Voulez-vous continuez O/N:");
    scanf("%s",&rep);
    fflush(stdin);
    }
    while (rep=='o'|| rep=='O');
    }

  7. #7
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 685
    Points : 30 974
    Points
    30 974
    Billets dans le blog
    1
    Par défaut


    Sinon ce que je vois (lecture rapide)
    • tu utilises feof() pour tester la fin de fichier. Cette fonction ne sert pas à ça. Elle sert à détecter, une fois qu'on ne lit plus le fichier, si la fin de lecture est due à une fin de fichier ou autre chose. Il s'ensuit que quand tu es à la fin du fichier, la fonction ne le voit pas encore. Il te faut faire une lecture de plus, lecture qui échoue, pour qu'elle puisse s'utiliser. Mais comme tu n'as pas testé l'échec de lecture, tu fais un traitement sur une donnée qui n'a pas été lue.
      Pour détecter qu'on a atteint la fin de fichier, il faut tester la fonction de lecture elle-même style while (fscanf(...) > 0)
    • fflush(stdin) est une aberration et peut être implémenté ou pas. fflush() est une fonction qui sert à purger un tampon d'écriture, pas de lecture. On n'a théoriquement jamais besoin de purger le clavier quand on le maitrise et si cela doit arriver, alors on boucle sur fgetc(stdin) != EOF
    .
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Langage c
    Inscrit en
    Janvier 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Langage c

    Informations forums :
    Inscription : Janvier 2021
    Messages : 3
    Points : 0
    Points
    0
    Par défaut Exemple
    Je demande un exemple pour avoir une idée de ce que tu dit.

  9. #9
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 685
    Points : 30 974
    Points
    30 974
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Motana Voir le message
    Je demande un exemple pour avoir une idée de ce que tu dit.

    Exemple de lecture de fichier
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    char ligne[1000 + 1];	// On part du principe que les lignes ne feront jamais plus de 1000 caractères et on en réserve un de plus pour le '\0'
    FILE *fp;
     
    // Ouverture fichier
    fp=fopen(..., "r");
    // Normalement on teste ici que fp n'est pas NULL sinon on ne peut rien faire mais tu veux juste une idée de lecture, pas de traitement complet avec gestion d'erreur donc je laisse pisser
     
    // Lecture et affichage
    while (fgets(ligne, 1000 + 1 /* parce que fgets() lit un octet de moins que demandé */, fp) != NULL {
    	printf("%s", ligne);
    }
    fclose(fp);
    Pas besoin de feof(). Mais si on veut on peut rajouter (juste avant le fclose(fp))
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (feof(fp)) {
    	printf("Fin de lecture due à fin de fichier\n");
    else
    	printf("Fin de lecture due à une erreur ou autre\n");
    }
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. aide modélisation pour gestion de stagiaire
    Par metalman75 dans le forum Modélisation
    Réponses: 10
    Dernier message: 17/07/2011, 22h15
  2. [MCD] Gestion de stagiaires
    Par limopsy dans le forum Schéma
    Réponses: 8
    Dernier message: 21/04/2011, 13h49
  3. Conception d'application de gestion de stagiaires
    Par MRKHALID dans le forum Modélisation
    Réponses: 3
    Dernier message: 08/12/2010, 15h48
  4. [Entité-Association] Relation ternaire dans gestion Stages/stagiaires
    Par secondechance dans le forum Schéma
    Réponses: 17
    Dernier message: 22/07/2008, 20h05
  5. [MCD] aide pour MCD gestion des stagiaires dans un bureau d'etude
    Par secondechance dans le forum Schéma
    Réponses: 6
    Dernier message: 06/07/2008, 13h44

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