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

Pascal Discussion :

Gestion d'un fichier d'étudiants


Sujet :

Pascal

  1. #1
    Membre à l'essai
    Homme Profil pro
    information
    Inscrit en
    Décembre 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : information
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2012
    Messages : 17
    Points : 19
    Points
    19
    Par défaut Gestion d'un fichier d'étudiants
    Salut !!

    J'ai écrit un programme en langage Pascal, dont le but est de stocker des informations des étudiants (student=record) et les enregistrer dans un file (fichier).

    Il est demandé que le fichier ne soit pas ouvert seulement à partir du programme ! Je pense de type .dat ou .Pas. Je ne sais pas, c'est mon premier problème ..

    Le programme contient les procédures d'ajout et de suppression, d'affichage et d'autres. Le problème est que le programme fonctionne, mais les procédures d'offre et de suppression ne travaillent pas et je ne sais pas où est le problème ???
    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
    program TP02 ;
     
    uses
      crt;
     
    type
      student= Record
        nb : integer ;
        nom : string[20];
        pnom :string[20];
        date:string[10];
        ville:string[20];
        moy:0..20;
      end ;
     
    var
      f: file of student ;
      stud : student;
      c: integer;
     
    { creér new file procedure 1}
    Procedure creer;
    begin
      assign(f,'students.dat');
      rewrite(f);
    end;                                    
     
    { ajouter new student procedure 2}
    Procedure rempler(var stud : student);
    var
      i,n : integer;
    begin
      assign(f,'students.dat');
      rewrite(f);
      write('svp!.entrez le nombres des etudiants vou voulez ajoutee:');
      readln(n);
      for i:= 1 to n do
        begin
          write('entrez le numero de etudiant ',i,':');readln(stud.nb);
          write('entrez le nom de etudiant ',i,':');readln(stud.nom);
          write('entrez le prenom de etudiant ',i,':');readln(stud.pnom);
          write('entrez la date de naissance de etudiant ',i,':');readln(stud.date);
          write('entrez le lieu de naiss de etudiant ',i,':');readln(stud.ville);
          write('entrez la note de etudiant ',i,':');readln(stud.moy);
          write(f,stud);
        end;
      close(f);
    end;
     
    {procedure 3 chercer for student }
    Procedure recherche(var stud : student);
    var
      s,a:integer;
      b:string;
      t:boolean;
    begin
      write('vous voulez recherchez par numero(1) ou par nom(2)? 1 ou 2 :');
      readln(s);
      reset(f);
      t:= true;
      if s=1 then
        begin
          write('entrez le numero :');readln(a);
          while not eof(f) and t=true DO
            begin
              read(f,stud);
              if stud.nb =a then t:= false ;
            end;
          if t=false then
            begin
              writeln ('le numero de etudiqnt est;',stud.nb);
              writeln ('le numero de etudiqnt est;',stud.nom);
              writeln ('le numero de etudiqnt est;',stud.pnom);
              writeln ('le numero de etudiqnt est;',stud.date);
              writeln ('le numero de etudiqnt est;',stud.ville);
              writeln ('le numero de etudiqnt est;',stud.moy);
            end
          else
            writeln('le numero il n''existe pqs !!');
        end
      else
        begin
          write('entrez le num :');readln(b);
          while not eof(f) and t=true DO
            begin
              read(f,stud);
              if stud.nom =b then t:= false ;
            end;
          if t=false then
            begin
              writeln ('le numero de etudiqnt est;',stud.nb);
              writeln ('le numero de etudiqnt est;',stud.nom);
              writeln ('le numero de etudiqnt est;',stud.pnom);
              writeln ('le numero de etudiqnt est;',stud.date);
              writeln ('le numero de etudiqnt est;',stud.ville);
              writeln ('le numero de etudiqnt est;',stud.moy);
            end
          else
            writeln('le numero il n''existe pas !!');
        end;
      close(f);
    end;
     
    { supprimer student procedure 4}
    Procedure suprimer(var stud : student);     
    var
      s,a,r:integer;
      b:string;
      t:boolean;
    begin
      write('vous voulez suprimez par numero(1) ou par nom(2)? 1 ou 2 :');
      readln(s);
      rewrite(f);
      t:= true;
      r:=0;
      if s=1 then
        begin
          write('entrez le numero :');readln(a);
          while not eof(f) and t=true DO
            begin
              read(f,stud);
              r:=r+1;
              if stud.nb =a then t:= false ;
            end;
          if t=false then
            begin
              seek(f,r);
              Truncate(f);
              writeln ('le numero de etudiqnt est suprimee');
            end
          else
            writeln('le numero il n''existe pqs !!');
        end
      else
        begin
          write('entrez le num :');readln(b);
          while not eof(f) and t=true DO
            begin
              read(f,stud);
              r:=r+1;
              if stud.nom =b then t:= false ;
            end;
          if t=false then
            begin
              seek(f,r);
              Truncate(f);
              writeln ('le numero de etudiqnt est suprimee');
            end
          else
            writeln('le numero il n''existe pas !!');
        end;
      close(f);
    end;
     
    {procedure 5  afficher l'information of students}
    Procedure afficher(var stud : student);
    begin
      assign(f,'fille.dat');
      reset(f);
      while not eof(f) do
        begin
          read(f,stud);
          write (stud.nb);
          write (stud.nom);
          write (stud.pnom);
          write (stud.date);
          write (stud.ville);
          write (stud.moy);
        end;
      close(f);
    end;
     
    {program principale}
    begin
      clrscr ;
      assign(f,'fille.dat');
      rewrite(f);
      repeat
        begin
          writeln('1\creer');
          writeln('2\rempler');
          writeln('3\recherche');
          writeln('4\suprimer');
          writeln('5\afficher');
          writeln('0\creer');
          writeln('entrew votre choix:');readln(c);
          case c of
            1 : creer;
            2 : rempler (stud);
            3 : recherche(stud);
            4 : suprimer (stud);
            5 : afficher(stud);
          end;
        end ;
     UNTIL c=0;
    end.

  2. #2
    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
    Hie,
    Citation Envoyé par djwyyoucef Voir le message
    [SIZE="5"]le problème, que le programme fonctionne, mais procedures l'offre et de suppressions ne travaillent pas
    J'ai toujours adoré ça : ça fonctionne, mais ça ne marche pas.

    Inutile d'écrire si gros, ça n'amène pas plus de réponses, bien au contraire.

    Pour le code, il faut commencer par le mettre correctement en forme (indentation, ...).
    Si les cons volaient, il ferait nuit à midi.

  3. #3
    Membre à l'essai
    Homme Profil pro
    information
    Inscrit en
    Décembre 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : information
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2012
    Messages : 17
    Points : 19
    Points
    19
    Par défaut
    vraie!!!!!!!!

  4. #4
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 937
    Points : 59 417
    Points
    59 417
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    La procédure creer ne sert, à mon avis, à rien du tout puisque la procédure rempler (remplir ) recrée le fichier.

    Ensuite, certaines parties de ton programme travaillent sur deux fichiers différents : filles.dat et students.dat !

    Attention également que Truncate ne supprime pas un enregistrement : elle tronque le fichier à l'endroit où se trouve le pointeur. Donc, si tu as 10 enregistrements et que tu fais un Truncate sur le 5ème, ton fichier sera réduit aux 4 premiers enregistrements, ce qui n'est pas du tout le but recherché.

    Tu as encore du boulot, bon courage.
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  5. #5
    Membre éprouvé
    Avatar de EpiTouille
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 372
    Points : 917
    Points
    917
    Par défaut
    Salut,

    Ce qui serait sympas c'est que quand tu supprime ou ajoute des étudiants, tu ne le fasse pas directement dans le fichier, plutot dans un (tableau/liste chainée for the win) d'étudiant et que tu fasse une sauvegarde que de temps en temps, ça serait beaucoup moins lourd.

Discussions similaires

  1. [Turbo Pascal] Gestion de fichiers d'étudiants
    Par harrysw980 dans le forum Turbo Pascal
    Réponses: 1
    Dernier message: 08/03/2012, 22h15
  2. [vb.net] gestion d un fichier de configuration
    Par rangdalf dans le forum Windows Forms
    Réponses: 6
    Dernier message: 20/02/2006, 14h24
  3. Réponses: 3
    Dernier message: 18/10/2005, 17h23
  4. Réponses: 7
    Dernier message: 05/08/2005, 16h32
  5. Réponses: 8
    Dernier message: 06/07/2004, 14h17

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