1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    juillet 2015
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mauritanie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2015
    Messages : 1
    Points : 1
    Points
    1

    Par défaut Gestion d'une DVDthèque

    Bonsoir , je viens tout juste de finir mon exercice de programmation Pascal mais au niveau de la compilation ca chauffe

    Enoncé
    Le responsable d’une DVDthèque désire connaître chaque jour la liste de tous les DVDs qui sont loués, avec le nom du client emprunteur. Chaque DVD est identifié par
    un numéro unique. Il dispose de trois fichiers :
    • Le fichier 1 «Film» fournit le numéro du DVD, le titre du film, le réalisateur, l’année et le producteur.
    • Le fichier 2 «Emprunt» contient le numéro du DVD, la date de début, la date de fin de l’emprunt, le nom de l’emprunteur (Chaque emprunt de DVD est enregistré
      et conservé ; la date de fin de l’emprunt vaut 00 00 0000 tant que le DVD n’a pas été rendu).
    • Le fichier 3 «Client» contient le nom du client, son prénom, son adresse, son numéro de téléphone (On suppose que deux clients ne portent pas le même nom).

    1. Indiquer les structures de données qu’utilisera le programme : c’est à dire les déclarations des constantes, des types et des variables du programme principal.

    2. Ecrire une procédure Recherche_Dernier_Emprunt qui renvoie à partir d’un numéro de DVD, le dernier emprunt du DVD : c’est à dire la date de début, la date de fin de l’emprunt et le nom de l’emprunteur.

    3. Ecrire une procédure Recherche_Client qui recherche le prénom, l’adresse et le numéro de téléphone à partir du nom du client.

    4. Ecrire une Fonction Duree_Dernier_Emprunt qui renvoie à partir d'un numéro de DVD, la durée (en nombre de jours) du dernier emprunt du DVD (on suppose que le DVD existe déjà dans le fichier).

    Fournir un programme COMPLET en Pascal
    Mon code

    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
    Program DVDtheque;
    Uses crt;
    const   nmax=50;
    Type    date=record
            jour:integer;
            mois:integer;
            annee:integer;
            end;
     
            film=record
            nom,annee : integer;
            titre,realisateur,producteur : string;
            end;
     
            emprunt=record
            numero : integer;
            datedeb,datefin:date;
            nom:string;
            end;
     
            client=record
            prenom,nom1 : string[50];
            numtel : integer;
            end;
     
            dvdloues=record
            num2,numtel : integer;
            nom,prenom,adresse,titre : string;
            datedebut:date;
            end;
     
            tfilm = array[1..nmax] of film;
            temprunt = array[1..nmax] of emprunt;
            tclient = array[1..nmax] of client;
     
            Ffilm=file of film;
            Femprunt=file of emprunt;
            Fclient=file of client;
     
    Var     tf:tfilm;
            tc:tclient;
            te:temprunt;
            emp:emprunt;
            ff:film;
            clt:client;
            dvdl:dvdloues;
            nf,ne,nc : integer;
            i,n:integer;
     
     
    Procedure saisie_film(var fl:film);
    Begin
            write('Nom          :     ');
            readln(fl.nom);
            write('Annee        :     ');
            readln(fl.annee);
            write('Titre        :     ');
            readln(fl.titre);
            write('Realisateur  :     ');
            readln(fl.realisateur);
            write('Producteur   :     ');
            readln(fl.producteur);
     
            writeln('Date de naissance');
     
    end;
     
    Procedure saisie_emprunt(var emp:emprunt);
    Begin
            write('Numero            :     ');
            readln(emp.numero);
            with emp.datedeb do
            Begin
                 write('Jour         :     ');
                 readln(jour);
                 write('Mois         :     ');
                 readln(mois);
                 write('Annee        :     ');
                 readln(annee);
            end;
            with emp.datefin do
            Begin
                 write('Jour         :     ');
                 readln(jour);
                 write('Mois         :     ');
                 readln(mois);
                 write('Annee        :     ');
                 readln(annee);
            end;
            write('Nom               :     ');
            readln(emp.nom);
     
    end;
     
    Procedure saisie_client(var clt:client);
    Begin
            write('Prenom                     :     ');
            readln(clt.prenom);
            write('Nom                        :     ');
            readln(clt.nom1);
            write('Numero de Telephone        :     ');
            readln(clt.numtel);
     
     
    end;
     
     
    Procedure recherche_dernier_emprunt(numero:integer;n:integer;var emp:emprunt;te:temprunt);
    var i,j,imax : integer;
    Begin
            emp.numero:=numero;
            emp.datedeb.jour:=00;
            emp.datedeb.mois:=00;
            emp.datedeb.annee:=0000;
            imax:=0;
            for i:=1 to n do
            if(te[i].numero=numero) then
                    if(te[i].datedeb.annee>emp.datedeb.annee) then
                            imax:=i+1
                    else if (te[i].datedeb.annee=emp.datedeb.annee) then
            if(te[i].datedeb.mois>emp.datedeb.mois) then
                    if(te[i].datedeb.jour>=emp.datedeb.jour) then
                            imax:=i;
                            emp:=te[imax];
    end;
     
    Procedure recherche_client(nom:string;tc:tclient;n:integer; var i:integer);
    Begin
            i:=1;
            while(i<=n) and (tc[i].nom1<>nom) do
                    i:=i+1;
    end;
     
     
    Procedure affiche_film(var ff:ffilm);
    var f:film;
    Begin
            assign(ff,'C:/film.data');
            reset(ff);
            while not(eof(ff)) do
            Begin
                    read(ff,f);
                    affiche_film(ff);
            end;
            close(ff);
    end;
     
    Procedure affiche_emprunt(var fe:femprunt);
    var e:emprunt;
    Begin
            assign(fe,'C:/emprun.data');
            reset(fe);
            while not(eof(fe)) do
            Begin
                    read(fe,e);
                    affiche_emprunt(fe);
            end;
            close(fe);
    end;
     
    Procedure affiche_client(var fc:fclient);
    var c:client;
    Begin
            assign(fc,'C:/client.data');
            reset(fc);
            while not(eof(fc)) do
            Begin
                    read(fc,c);
                    affiche_client(fc);
            end;
            close(fc);
    end;
     
    Begin
            clrscr;
            saisie_film(ff);
            saisie_emprunt(fe);
            saisie_client(fc);
            affiche_film(ff);
            affiche_emprunt(fe);
            affiche_client(fc);
            readkey;
    end.
    Merci d'avance pour votre aide

  2. #2
    Membre expert
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2002
    Messages
    2 488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : mai 2002
    Messages : 2 488
    Points : 3 944
    Points
    3 944

    Par défaut

    salut

    j'aurais été toi ... dans un premier lieux j'aurais fais un menu dans la boucle principal

    ensuite tu as quelque soucis quand a l'utilisation du readln,read, write et writeln
    toutes tes procédure d'affichage ne sont pas correcte tu boucle sans fin
    prenons un exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Procedure affiche_film(var ff:ffilm);
    var 
      f:film;
    Begin
      assign(ff,'C:/film.data');
      reset(ff);
      while not(eof(ff)) do 
      Begin
        read(ff,f);
        affiche_film(ff); <-- Ici tu rappel ta fonction appelante au lieu d'"écrire" ta valeur sur l’écran
      end;
      close(ff);
    end;
    il y a beaucoup de chose a dire sur ton code ... reprend tes cours et regarde bien l'utilisation de lecture et d'ecriture
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  3. #3
    Membre éprouvé

    Homme Profil pro
    linux, pascal, HTML
    Inscrit en
    mars 2002
    Messages
    435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Belgique

    Informations professionnelles :
    Activité : linux, pascal, HTML
    Secteur : Enseignement

    Informations forums :
    Inscription : mars 2002
    Messages : 435
    Points : 901
    Points
    901
    Billets dans le blog
    1

    Par défaut

    Bonjour anapurna
    Si c'est toi qui a conçu la base de données, j'aurais quelques suggestions à faire.
    • plusieurs DVD peuvent contenir le même film; il faudrait une table DVD avec un identifiant DVD et un identifiant du film
      et un table film avec un identifiant film
    • Pour définir un emprunteur, on peut utiliser un identifiant numérique lié à un client et l'identifiant du DVD; cela évite les doublons et les fautes de frappes.
      il faut donc ajouter un identifiant à la table client

  4. #4
    Membre expert
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2002
    Messages
    2 488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : mai 2002
    Messages : 2 488
    Points : 3 944
    Points
    3 944

    Par défaut

    salut michel,

    non ce n'est pas moi qui ai créé la base
    a priori c'est un exercice de programmation ... je ne faisait que répondre a la question
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  5. #5
    Membre éprouvé

    Homme Profil pro
    linux, pascal, HTML
    Inscrit en
    mars 2002
    Messages
    435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Belgique

    Informations professionnelles :
    Activité : linux, pascal, HTML
    Secteur : Enseignement

    Informations forums :
    Inscription : mars 2002
    Messages : 435
    Points : 901
    Points
    901
    Billets dans le blog
    1

    Par défaut

    Bonjour Anapurna
    une petite suggestion:
    j'ai voulu tester ton code et j'ai été bien embèté par des chaines tel que 'C:/emprun.data'
    Je travaille sous linux et donc cela n' aucune chance de fonctionner et le problème serait le même sous windows si on place les fichiers ailleur qu'à la racine de C:; donc il faudrait une constante qui définit le répertoire de base à placer au début du fichier ce qui permetrait une adaptation simple du code.
    L'idéal serai même un petit fichier de configuration qui contiendrait les différents paramètres.
    L'utilisateur n'aurait qu'à modifier de fichier pour utiliser le code compilé.

  6. #6
    Membre expert
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2002
    Messages
    2 488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : mai 2002
    Messages : 2 488
    Points : 3 944
    Points
    3 944

    Par défaut

    allo

    ce n'est pas mon code ... je ne fait que répondre à la question de "athiemohamed"
    je sais parfaitement que sont code n'est pas fonctionnel dans l'état et encore moins multiplateforme
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  7. #7
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    décembre 2011
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : décembre 2011
    Messages : 3 029
    Points : 10 993
    Points
    10 993
    Billets dans le blog
    4

    Par défaut

    Citation Envoyé par anapurna Voir le message
    ce n'est pas mon code ...
    Allez, avoue que c'est toi qui l'as écrit !

Discussions similaires

  1. Gestion d'une liste box
    Par norwy dans le forum Windows
    Réponses: 6
    Dernier message: 01/11/2005, 13h51
  2. Gestion d'une file d'attente
    Par jesus144 dans le forum Général Algorithmique
    Réponses: 2
    Dernier message: 22/09/2005, 20h58
  3. [Composite] Gestion d'une recherche avancée
    Par Loctar dans le forum Design Patterns
    Réponses: 12
    Dernier message: 23/06/2005, 19h32
  4. [Clavier] Gestion d'une invite de commandes
    Par Damian dans le forum Assembleur
    Réponses: 9
    Dernier message: 28/04/2005, 17h41
  5. gestion d'une erreur
    Par Jeannotc dans le forum Bases de données
    Réponses: 8
    Dernier message: 25/06/2004, 19h04

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