{////////////////////////////entete du programme////////////////////////////} program graphinterac; {/////////////////////////declaration des unite/////////////////////////////} uses crt, graph,keyboard; {////////////////////////les types predefinis ////////////////////////////} type facture=record id:integer; date,adresse,prod:string[80]; num,QU:integer; montant,ttc,prix:real; jour:1..7; mois:1..30; an:1985..2010; end; {//////////////////////////declaration des variables/////////////////////} var f:file of facture; p:facture; i,driver, mode: integer; k,letter: char; procedure ajouter; {********* procedure qui appelle a la saisie**********} begin assign(f,'fact.dat'); reset(f); i:=filesize(f); seek(f,i); k:='o'; while k='o' do begin outtextxy(80,180,'Entrer votre nom'); readln(p.id); outtextxy(80,180,'entrer l''adresse du designataire'); readln(p.adresse); outtextxy(80,180,'Entrer le nom du produit'); readln(p.prod); outtextxy(80,180,'Entrer la quantite'); readln(p.qu); outtextxy(80,180,'Entrer le prix unitaire'); readln(p.montant); write(f,p); close(f); outtextxy(80,180,'voulez vous ajouter une autre facture'); readln(k); end; end; {****************fin de la procedure ajouter************************} {/////////////////////procedure de saisie///////////////////////////////} procedure saisie; var rep:char; begin rep:='o'; while rep='o' do begin outtextxy(80,180,'le numero de la facture:'); readln(p.num); outtextxy(80,180,'le nom du proprietaire:'); readln(p.id); outtextxy(80,180,'la date j/m/a'); read(p.jour); read(p.mois); read(p.an); outtextxy(80,180,'le montant de la facture:'); readln(p.montant); write(f,p); outtextxy(80,180,'voulez vous continuer la saisie o/n'); read(rep); readln; end; end;{///////////////////////////fin de la procedure/////////////////////////} {/////////////////////////////debut de la procedure recherche///////////////} procedure recherche; var c: integer; b:boolean; begin reset(f); outtextxy(80,180,'Donner le numero de la facture :'); read(c); b:=false; while not eof(f) and not(b) do begin read (f,p); if p.num=c then b:=true; end; if b then begin outtextxy(80,180,'le nom du proprietaire:'); readln(p.id); outtextxy(80,200,'le jour:'); readln(p.jour); outtextxy(80,210,'le mois:' ); readln(p.mois); outtextxy(80,220,'l"an:'); readln(p.an) ; outtextxy(80,230,'entrer le montant:'); readln(p.montant); readln; end else outtextxy(80,240,'Cette facture n''existe pas '); end;{////////////////////fin de la procedure/////////////////////////////} {///////////////////////debut de la procedure modification//////////////} procedure modification; var i,g:integer; d:boolean; begin outtextxy(80,260,'Donner le numero de la facture … modifier'); read(g); reset(f); d:=false; i:=0; while not eof(f) and not(d) do begin read (f,p); i:=i+1; if p.num=g then d:=true; end; if d then begin seek(f,i-1); outtextxy(80,180,'entrer le numero de la facture'); readln(p.num); outtextxy(80,200,'le nom du proprietaire:'); readln(p.id); outtextxy(80,220,'la date j/m/a'); readln(p.jour); readln(p.mois); readln(p.an); outtextxy(80,240,'le prix du produit'); readln(p.prix); write(f,p); end else outtextxy(80,180,'La facture que vous rechercher n''existe pas'); end;{///////////////////////fin de la procedure////////////////////////////} begin driver := Detect; InitGraph(driver, mode, 'c:\tp\bgi'); if (GraphResult <> grOk) then begin writeln('Erreur au cours de l''initialisation du mode graphique'); halt(1); end; outtextxy(50,30,'UNIVERSITE DES SCIENCES ET DE LA TECHNOLOGIE MOHAMED BOUDIAF'); outtextxy(50,50,'LMD-MIAS 1ERE ANNEE PROJET SIMULATEUR DUN LOGICIEL DE FACTURATION'); outtextxy(410,410,'Projet fait par cherif mohieddine belkacem'); SetFillStyle(1, red); bar(50,80,800,100); bar(50,80,50,400); bar(800,80,800,400); outtextxy(300,90,'LOGICIEL DE FACTURATION'); setcolor(red);line(260,100,260,400); line(50,400,800,400); outtextxy(52,130,'a:Ajouter une facture'); outtextxy(52,160,'b:consulter une facture'); outtextxy(52,190,'c:rechercher une facture'); outtextxy(52,210,'d:supprimer une facture'); outtextxy(52,240,'e:modifier une facture'); outtextxy(52,270,'f:sortir'); repeat letter:=readkey; case letter of #97:begin assign(f,'fact.dat');rewrite(f); saisie; end; #98:begin assign(f,'fact.dat');reset(f); seek(f,filesize(f)); saisie; end; #100:modification; #101:recherche; end; until letter=#27; close(f);; end .