Accueil > > > GESTION D'UN RESTAURANT
GESTION D'UN RESTAURANT
Information sur la source
Description
Mon logiciel s'adapte à tous commerces. specialement dans la restauration rapide. (pizzaria,kebab...) il vous permet de : - saisir de commandes - rechercher des commandes - éditer le chiffre d'affaire journalié - créer des produits - savoir commbien chaque vendeur a encaissé - les produits à faire - initiatialiser les fichiers nécessaires
Source
- unit U_pizzaria;
-
- interface
-
- uses SysUtils,
- crt,
- mes_outils;
-
- const nb_max_pizza = 30;
- nb_max_de_commande = 250;
- nb_max_de_clients = 100;
- tva = 0.055;
- file_commande = 'mina.jul';
- file_commande_annulee= 'cmd_annulee_modifiee.jul';
- file_client = 'nos_clients.jul';
- file_produit = 'nos_produits.jul';
- type type_prix = real;
- T_pizza = record
- code : string[4];
- libelle : string[15];
- quantite : BYTE;
- prix : type_prix;
- end{record};
- T_tab_pizza = array[1..nb_max_pizza] of T_pizza;
- T_les_pizzas = record
- nb_pizza : byte;
- les_pizzas : T_tab_pizza;
- end {record};
-
- la_commande = record
- les_pizzas : T_tab_pizza;
- nb_de_pizza : byte;
- end {record};
-
- T_client = record
- num_tel : string[10];
- nom : string[10];
- adresse : string[26];
- nb_cmd_effectuer: byte;
- commande_client : la_commande;
- end{record};
-
- T_tab_client = array[0..nb_max_de_clients] of T_client;
- T_les_clients = record
- nb_client : byte;
- les_clients : T_tab_client;
- end{record};
-
- T_commande = record
- code_vendeur : string[4];
- le_client : T_client;
- prix_total : type_prix;
- date_commande : STRING[12];
- heure_commande : tdatetime;
- end{record};
-
- T_tab_commande = array[0..nb_max_de_commande] of t_commande;
- T_les_commandes = record
- nb_commande : byte;
- les_commandes : T_tab_commande;
- end {record};
- fichier_client = file of T_client;
- fichier_commande = file of T_commande;
- fichier_produit = file of T_pizza;
-
- ////////////------ LES VARIABLES GLOBALES ----------////////////
- //
- var objet : fichier_commande; //
- objet_client : fichier_client; //
- objet_produit : fichier_produit; //
- com : T_commande; //
- client : T_client; //
- ////////////////////////////////////////////////////////////////
-
- procedure initialiser_fichier(file_name: string);
- procedure initialisation;
- procedure ajouter_produit;
- procedure fiche_vide(num_commande : SMALLINT);
- procedure fiche_vide0;
- procedure afficher_prix(out piz : T_pizza;i: byte);
- procedure a_faire(phrase : string);
- procedure efface_ecran;
- procedure fiche_encaissement;
- procedure rechercher_commande;
- procedure recherche_par_date;
- procedure saisir_commande(out comm : T_commande);
- procedure afficher_commande(num_cmd: cardinal);
- procedure decaisser_vendeur;
- procedure pizza_a_faire;
- procedure menu;
- procedure ecrir_fichier (commande : T_commande);
- procedure fermer_fichier(file_name : string);
- procedure ouvrir_fichier(file_name : string);
- procedure ajouter_client (client : T_client);
- procedure modifier_client(num_tel : string) ;
- procedure afficher_les_clients;
- procedure journal;
- procedure sous_menuR;
- procedure sous_menuS;
- procedure annuler_commande(num_cmd: cardinal);
- procedure modifier_commande(num_cmd: cardinal);
- procedure commande_precedente(var num_cmd: cardinal);
- procedure commande_suivante(var num_cmd: cardinal);
-
-
-
- function est_pizza(const code : string) : boolean;
- function est_valable(const s : string): boolean;
- function est_client (numero_tel : string) : boolean;
- function lire_nos_pizzas(file_produit: string) : T_les_pizzas;
- function lire_une_commande (num_commande : integer) :T_commande;
- function lire_les_commandes_du_jour (la_date : string):T_les_commandes;
- function lire_les_clients(file_client: string) : T_les_clients;
- function lire_un_client (numero_tel: string) : T_client;
- function formatage_fichier (file_name : string):T_les_commandes;
- function nb_total_commande(file_commande : string): byte;
-
-
-
- implementation
-
-
- procedure initialiser_fichier(file_name: string);
- begin
- assign(objet,file_name);
- rewrite(objet);
- close(objet);
- a_faire('Fichiers initialises "Enter" pour retourner au Menu principal !');
-
- end{initaliser_fichiers};
-
- procedure initialisation;
-
- Var reponse : char;
- label la;
- procedure fiche;
- begin
- efface_ecran;
- un_rectangle(5,5,58,20);
- un_rectangle(5,7,58,20);
- gotoxy(8,6);write('INITIALISATIONS DES FICHIERS');
- gotoxy(7,9);write('1 - TOUS LES FICHIERS');
- gotoxy(7,11);write('2 - FICHIER DES CLIENTS ');
- gotoxy(7,13);write('3 - FICHIER DES PRODUITS ');
- gotoxy(7,15);write('4 - FICHIERS DES COMMANDES');
- gotoxy(7,17);write('5 - FICHIERS DES COMMANDES ANNULEES OU MODIFIEES');
- gotoxy(7,19);write('6 - MENU PRINCIPAL');
- a_faire('Appuyer sur un numero pour initialiser le fichier correspondant !');
-
- end{fiche_produit};
-
- begin
- fiche;
- la: reponse:=readkey;
- case reponse of
- '1' : BEGIN
- initialiser_fichier(file_client);
- initialiser_fichier(file_produit);
- initialiser_fichier(file_commande);
- initialiser_fichier(file_commande_annulee);
- a_faire('Fichiers initialises');
- READLN;
- menu;
- END;
-
- '2' : BEGIN
- initialiser_fichier(file_client);
- readln;
- end;
- '3' : begin
- initialiser_fichier(file_produit);
- readln;
- end;
- '4' : begin
- initialiser_fichier(file_commande);
- readln;
- end;
-
- '5' : begin
- initialiser_fichier(file_commande_annulee);
- readln;
- end;
- '6' : menu;
- else goto la ;
- end {case};
-
- end{initialisation};
-
- procedure ajouter_produit;
-
- var
- reponse : char;
- label ici, labas;
-
- Procedure fiche_produit;
- begin
- efface_ecran;
- un_rectangle(5,5,40,20);
- un_rectangle(5,7,40,20);
- gotoxy(8,6);write('A J O U T E R P R O D U I T');
- gotoxy(6,9);write('CODE PRODUIT :');
- gotoxy(6,11);write('NOM PRODUIT :');
- gotoxy(6,13);write('PRIX PRODUIT :');
- end{fiche_produit};
-
- procedure saisir_produit;
- var pizz: T_pizza;
- begin
- fiche_produit;
- assign(objet_produit,file_produit);
- reset(objet_produit);
- repeat
- a_faire('Entrer le code du Produit ou Q pour Quitter ');
- gotoxy(21,9);readln(pizz.code);
- if (pizz.code ='Q') or (pizz.code ='q') then begin
- exit;
- end;
- until pizz.code<>'';
- repeat
- a_faire('Entrer le libelle du Produit ou Q pour Quitter ');
- gotoxy(21,11);readln(pizz.libelle);
- if (pizz.libelle='Q') or (pizz.libelle='q') then begin
- exit;
- end;
- until pizz.libelle<>'';
- a_faire('Entrer le Prix du Produit ou Q pour Quitter ');
- gotoxy(21,13);readln(pizz.prix);
- seek(objet_produit,filesize(objet_produit));
- write(objet_produit,pizz);
- close(objet_produit);
- ajouter_produit;
- end{saisir_produit};
-
- procedure rechercher_produit;
- var pizz: T_pizza;
- code :string;
-
- begin
- fiche_produit;
- repeat
- a_faire('Entrer le code du Produit ou Q pour Quitter ');
- gotoxy(21,9);readln(code);
- if (code ='Q') or (code ='q') then begin
- ajouter_produit;
- end;
- until pizz.code<>'';
- if est_pizza(code) then begin
- assign(objet_produit,file_produit);
- reset(objet_produit);
- while not eof(objet_produit) do begin
- read(objet_produit,pizz);
- if code=pizz.code then begin
- gotoxy(21,11);write(pizz.libelle);
- gotoxy(21,13);write(pizz.prix:0:2);
-
- end{if};
- end{while};
- close(objet_produit);
- end else begin
- a_faire('Ce produit n''existe pas ! ');
-
- end;
-
- readln;
- a_faire('Appuyer sue " Enter " pour continuer...');
- ajouter_produit;
- end{saisir_produit};
-
-
- begin
-
-
- labas:
- efface_ecran;
- fiche_produit;
- a_faire(' ');
- gotoxy(8,18);write('1- Creer 2- Recherche 3-Menu');
- reponse:=readkey;
- case upcase(reponse) of
- 'C','1',#13 : saisir_produit;
- 'R','2' : rechercher_produit;
- 'M','3' : menu;
- else goto labas;
- end{case};
-
- end{ajouter_produit};
-
- function lire_nos_pizzas(file_produit: string) : T_les_pizzas;
- var i : integer;
- nos_pizzas : T_les_pizzas;
- pizza : T_pizza;
-
- begin
- assign(objet_produit,file_produit);
- reset(objet_produit);
- i:=0;
- nos_pizzas.nb_pizza :=0;
- while not (eof(objet_produit)) do begin
- inc(nos_pizzas.nb_pizza);
- seek(objet_produit,i);
- read(objet_produit,pizza);
- nos_pizzas.les_pizzas[nos_pizzas.nb_pizza]:=pizza;
- inc(i);
-
- end{while};
- lire_nos_pizzas := nos_pizzas;
- close(objet_produit);
-
-
- end {lire_nos_pizzas};
-
- function est_pizza(const code : string) : boolean;
- var
- pizza : T_pizza;
- resultat : boolean;
-
- begin
- assign(objet_produit,file_produit);
- reset(objet_produit);
- resultat:=false;
-
- while not (eof(objet_produit)) do begin
- read(objet_produit,pizza);
- resultat:= resultat or (code=pizza.code);
- end{while};
- close(objet_produit);
- est_pizza:= resultat;
-
-
- end {est_pizza};
-
- procedure annuler_commande(num_cmd: cardinal);
- var cmd : T_commande;
- reponse : char;
- begin
-
- a_faire('Confirmer l''annulation de la Commande (O) ou (N)');
- reponse:=readkey;
- case upcase(reponse) of
- 'O',#13 : begin
- cmd:= lire_une_commande(num_cmd);
- cmd.prix_total:=0;
- cmd.le_client.commande_client.nb_de_pizza:=0;
- ouvrir_fichier(file_commande);
- seek(objet,num_cmd-1);
- write(objet,cmd);
- fermer_fichier(file_commande);
- menu;
- end;
- 'N' : saisir_commande(com);
- else saisir_commande(com);
- end{case};
- end{annuler_commande};
-
- procedure modifier_commande(num_cmd: cardinal);
- var cmd : T_commande;
- reponse : char;
- label labas,la,ici;
- begin
-
- gotoXY(11,13);write('Appuyer sur ''ENTREE'' pour modifier la commande');
- gotoXY(11,14);write('Appuyer sur une touche pour aller au Menu principal');
- reponse := readkey;
- case reponse of
- #13 : goto ici;
- else BEGIN
- gotoXY(11,13);write(' ');
- gotoXY(11,14);write(' ');
- GOTO labas;
- END;
- end{case};
- ici:
- gotoXY(11,13);write(' ');
- gotoXY(11,14);write(' ');
- afficher_commande(num_cmd);
- cmd := lire_une_commande(num_cmd);
- with cmd do begin
- with le_client do begin
-
- prix_total:=0;
- commande_client.nb_de_pizza:=1;
- la:
- a_faire('Entrer le code du produit ou ''V'' pour Valider ''Q'' pour Quitter');
- gotoxy(7,20+commande_client.nb_de_pizza);
-
- readln(commande_client.les_pizzas[commande_client.nb_de_pizza].code);
- if (commande_client.les_pizzas[commande_client.nb_de_pizza].code=('q'))
- or (commande_client.les_pizzas[commande_client.nb_de_pizza].code=('Q'))
- then
- begin
- sous_menuS;
- exit;
- end;
- while (commande_client.les_pizzas[commande_client.nb_de_pizza].code<>'V')
- or
- (commande_client.nb_de_pizza=nb_max_pizza) do begin
- if not est_pizza(commande_client.les_pizzas[commande_client.nb_de_pizza].code) then begin
- gotoxy(7,20+commande_client.nb_de_pizza);
- write(' ');
- gotoxy(7,20+commande_client.nb_de_pizza);
- goto la;
- end else begin
- afficher_prix(commande_client.les_pizzas[commande_client.nb_de_pizza],commande_client.nb_de_pizza);
- prix_total := prix_total +
- (commande_client.les_pizzas[commande_client.nb_de_pizza].prix *
- commande_client.les_pizzas[commande_client.nb_de_pizza].quantite);
- inc(commande_client.nb_de_pizza);
- gotoxy(60,40);writeln(prix_total:0:2);
- a_faire('Entrer le code du produit ou ''V'' pour Valider ''Q'' pour Quitter');
- gotoxy(7,20+commande_client.nb_de_pizza);
- readln(commande_client.les_pizzas[commande_client.nb_de_pizza].code);
- if (commande_client.les_pizzas[commande_client.nb_de_pizza].code=('q'))
- or (commande_client.les_pizzas[commande_client.nb_de_pizza].code=('Q'))
- then
- begin
- sous_menuS;
- exit;
- end;
- end{if};
- end{while};
- ouvrir_fichier(file_commande);
- seek(objet,num_cmd-1);
- write(objet,cmd);
- fermer_fichier(file_commande);
- labas:
- a_faire('1-Creer 2-Modifier 3-Annuler 4-Precedente 5-Suivante 6-mEnu');
- reponse := readkey;
- case upcase(reponse) of
- '1','C',#13 : saisir_commande(cmd);
- '2','M' : modifier_commande(num_cmd);
- '3','A' : annuler_commande(num_cmd);
- '4','P' : commande_precedente(num_cmd);
- '5','S' : commande_suivante(num_cmd);
- '6','E' : menu;
- else goto labas;
- end;
-
- end {with le_client};
- end {with cmd};
-
-
- end{modifier_commande};
-
- procedure commande_precedente(var num_cmd: cardinal);
- label
- labas;
- var
- reponse : char;
- begin
- efface_ecran;
- case num_cmd of
- 1 : begin
- num_cmd:=nb_total_commande(file_commande)-1;
- afficher_commande(num_cmd);
- end;
- else begin
- dec(num_cmd);
- afficher_commande(num_cmd);
- end;
- end{case};
- labas:
- a_faire('1-Creer 2-Modifier 3-Annuler 4-Precedente 5-Suivante 6-mEnu');
- reponse := readkey;
- case upcase(reponse) of
- '1','C',#13 : saisir_commande(com);
- '2','M' : modifier_commande(num_cmd);
- '3','A' : annuler_commande(num_cmd);
- '4','P' : commande_precedente(num_cmd);
- '5','S' : commande_suivante(num_cmd);
- '6','E' : menu;
- else goto labas;
- end{case};
-
-
-
- end{commande_precedente};
-
- procedure commande_suivante(var num_cmd: cardinal);
- label
- labas;
- var
- reponse : char;
- n : byte;
- begin
- efface_ecran;
- n :=nb_total_commande(file_commande)-1;
- if num_cmd = n then begin
- num_cmd:=1;
- afficher_commande(num_cmd);
- end else begin
- inc(num_cmd);
- afficher_commande(num_cmd);
- end{if};
-
- labas :
- a_faire('1-Creer 2-Modifier 3-Annuler 4-Precedente 5-Suivante 6-mEnu');
- reponse := readkey;
- case upcase(reponse) of
- '1','C',#13 : saisir_commande(com);
- '2','M' : modifier_commande(num_cmd);
- '3','A' : annuler_commande(num_cmd);
- '4','P' : commande_precedente(num_cmd);
- '5','S' : commande_suivante(num_cmd);
- '6','E' : menu;
- else goto labas;
- end{case};
-
- end{commande_suivante};
-
-
- procedure ecrir_fichier (commande : T_commande);
-
- begin
- assign(objet,file_commande);
- reset(objet);
- seek(objet,filesize(objet));
- write(objet,commande);
- close(objet);
- end{ecrir_fichier };
-
- procedure ouvrir_fichier ;
-
- begin
- assign(objet,file_name);
- reset(objet);
-
- end{ouvrir_fichier};
-
- function nb_total_commande(file_commande : string): byte;
- var
- n : byte;
- begin
- assign(objet,file_commande);
- reset(objet);
- n := filesize(objet)+1;
- close(objet);
- nb_total_commande := n;
- end{num_commande};
-
-
- procedure fermer_fichier ;
- begin
- assign(objet,file_name);
- reset(objet);
- close(objet);
- end{fermer_fichier };
-
-
-
- function lire_une_commande(num_commande : integer) : T_commande;
-
- var
- commande: T_commande;
- begin
-
- assign(objet,file_commande);
- reset(objet);
- seek(objet,num_commande-1);
- read(objet,commande);
- lire_une_commande := commande;
- close(objet);
-
- end{lire_une_commande };
-
- function formatage_fichier (file_name : string):T_les_commandes;
-
- var
- une_com : T_les_commandes;
- com : T_commande;
- i : integer;
- begin
- assign(objet,file_name);
- reset(objet);
- i:=0;
- while not(eof(objet)) do begin
- seek(objet,i);
- read(objet,com);
- une_com.les_commandes[i]:=com;
- inc(i);
- end{while};
- une_com.nb_commande:=filesize(objet)+1;
- formatage_fichier := une_com;
- close(objet);
- end{formatage_fichier};
-
- function lire_les_clients(file_client: string) : T_les_clients;
- var
- clients : T_les_clients;
- i : integer;
- un_client : T_client;
-
- begin
- assign(objet_client,file_client);
- reset(objet_client);
- clients.nb_client := filesize(objet_client);
- i:=0;
- while not(eof(objet_client)) do begin
- seek(objet_client,i);
- read(objet_client,un_client) ;
- clients.les_clients[i]:=un_client;
- inc(i);
- end{while};
- lire_les_clients := clients;
- close(objet_client);
- end{lire_les_clients};
-
- function est_client (numero_tel: string) : boolean;
- var
- resultat: boolean;
- clients : T_les_clients;
- i : integer;
- begin
- resultat := false;
- clients := lire_les_clients(file_client);
- for i:=0 to clients.nb_client do begin
- if numero_tel = clients.les_clients[i].num_tel then begin
- resultat := true;
- end{if};
- end{for};
- est_client :=resultat;
- end{est_client};
-
- function lire_un_client (numero_tel: string) : T_client;
- var
- clients : T_les_clients;
- i : integer;
- begin
- clients := lire_les_clients(file_client);
- for i:=0 to clients.nb_client do begin
- if numero_tel = clients.les_clients[i].num_tel then begin
- client:=clients.les_clients[i];
- end{if};
- end{for};
- lire_un_client := client;
- end{est_client};
-
- procedure modifier_client(num_tel : string) ;
- var
- i : integer;
- client : T_client;
-
- begin
- assign(objet_client,file_client);
- reset(objet_client);
- i:=0;
- while not(eof(objet_client)) do begin
- seek(objet_client,i);
- read(objet_client,client) ;
- if client.num_tel=num_tel then begin
- writeln('numeror telephone : ',num_tel);
- writeln('nom: ',client.nom);
- writeln('adresse: ',client.adresse);
- writeln('+++++++++++++++++++++++++++++++++++++++++++++');
- writeln('numeror telephone : ',num_tel);
- write('nom: ');readln(client.nom);
- write('adresse: ');readln(client.adresse);
- seek(objet_client,i);
- write(objet_client,client);
- exit;
- end{if};
- inc(i);
- end{while};
- close(objet_client);
-
- end{modifier_client};
-
- procedure modifier_nb_cmd_effectue(num_tel:string;n:smallint) ;
- var
- i : integer;
- client : T_client;
-
- begin
- assign(objet_client,file_client);
- reset(objet_client);
- i:=0;
- while not(eof(objet_client)) do begin
- seek(objet_client,i);
- read(objet_client,client) ;
- if client.num_tel=num_tel then begin
- client.nb_cmd_effectuer:=n;
- seek(objet_client,i);
- write(objet_client,client);
- exit;
- end{if};
- inc(i);
- end{while};
- close(objet_client);
-
- end{modifier_nb_cmd_effectue};
-
- procedure afficher_les_clients ;
- var
- i : integer;
- client : T_client;
-
- begin
- assign(objet_client,file_client);
- reset(objet_client);
- i:=0;
- while not(eof(objet_client)) do begin
- seek(objet_client,i);
- read(objet_client,client) ;
- writeln('numeror telephone : ',client.num_tel);
- writeln('nom: ',client.nom);
- writeln('adresse: ',client.adresse);
- writeln('+++++++++++++++++++++++++++++++++++++++++++++');
- inc(i);
- end{while};
- READLN;
- close(objet_client);
-
- end{afficher_les_clients};
-
-
-
- procedure ajouter_client (client : T_client);
- begin
- assign(objet_client,file_client);
- reset(objet_client);
- seek(objet_client,filesize(objet_client));
- write(objet_client,client);
- close(objet_client);
- end{ajouter_client};
-
- function lire_les_commandes_du_jour (la_date : string):T_les_commandes;
-
- var resultat: T_les_commandes;
-
- objet : fichier_commande;
- commande : T_commande;
- begin
-
- assign(objet,file_commande);
- reset(objet);
- resultat.nb_commande:=0;
- while not eof(objet) do begin
- read(objet,commande);
- if commande.date_commande=la_date then begin
- inc(resultat.nb_commande);
- resultat.les_commandes[resultat.nb_commande]:=commande;
- end{if};
- end{for};
- lire_les_commandes_du_jour := resultat;
-
- end{lire_les_commandes_du_jour};
-
-
-
-
-
- procedure journal;
-
- type
- T_chiffre_daffaire = record
- nb_commandes : byte;
- montant : real;
- end{record};
-
-
- var
- toutes_les_commandes : T_les_commandes;
- i : byte;
- ca_emporter,ca_livraison : T_chiffre_daffaire;
- chiffre_daffaire_ttc,chiffre_daffaire_ht: real;
- reponse : char;
- label
- ici,labas;
- procedure trace_du_journal;
- begin
- un_rectangle(11,5,70,45);
- un_rectangle(11,10,70,30);
- un_rectangle(11,10,70,12);
- un_rectangle(40,10,55,30);
- gotoXY(20,7);write('J O U R N A L');
- gotoXY(14,17);write('CHIFFRE D''AFFAIRE V.A.E');
- gotoXY(14,22);write('CHIFFRE D''AFFAIRE L.A.D');
- gotoXY(17,35);write('CHIFFRE D''AFFAIRE H.T');
- gotoXY(17,39);write('CHIFFRE D''AFFAIRE T.T.C');
- un_rectangle(50,34,68,36);
- un_rectangle(50,38,68,40);
- gotoXY(41,11);write('Nbre Commandes');
- gotoXY(56,11);write('Montant total');
- gotoXY(52,42);write('T.V.A = ',tva*100:0:2,' %');
- end{trace_du_journal};
-
- var la_date : string[10];
- begin
- ici:
- efface_ecran;
- trace_du_journal;
- ca_emporter.nb_commandes:=0;
- ca_emporter.montant:=0;
- ca_livraison.nb_commandes:=0;
- ca_livraison.montant:=0;
- un_rectangle(48,6,68,8);
- gotoXY(13,11);write('HEURE :');
- gotoXY(21,11);WRITE(timetostr(time));
- gotoXY(50,7);write('DATE :',datetostr(date));
- a_faire('Entrer une date pour afficher le Journal ');
- gotoXY(56,7);readln(la_date);
- if la_date ='' then begin
- toutes_les_commandes:=lire_les_commandes_du_jour(datetostr(date));
- end else begin
- toutes_les_commandes:=lire_les_commandes_du_jour(la_date);
- end{if};
- a_faire(' ');
- for i:=1 to toutes_les_commandes.nb_commande do begin
- with toutes_les_commandes.les_commandes[i] do begin
- if (le_client.num_tel ='1') or (le_client.num_tel ='2') then begin
- ca_emporter.montant := ca_emporter.montant + prix_total;
- inc(ca_emporter.nb_commandes)
- end else begin
- ca_livraison.montant := ca_livraison.montant + prix_total;
- inc(ca_livraison.nb_commandes)
- end{if};
-
-
- end{with};
- end{for};
- chiffre_daffaire_ttc := ca_emporter.montant + ca_livraison.montant;
- chiffre_daffaire_ht := chiffre_daffaire_ttc - (chiffre_daffaire_ttc*tva);
- gotoxy(45,17);write(ca_emporter.nb_commandes);
- gotoxy(58,17);write(ca_emporter.montant:0:2);
- gotoxy(45,22);write(ca_livraison.nb_commandes);
- gotoxy(58,22);write(ca_livraison.montant:0:2);
- gotoxy(52,35);write(chiffre_daffaire_ht:0:2);
- gotoxy(52,39);write(chiffre_daffaire_ttc:0:2);
-
- labas:
-
- gotoxy(30,47);write('1-Journal 2-Menu');
- reponse := readkey;
- case upcase(reponse) of
- '1','J',#13 : goto ici;
- '2','M' : menu;
- else goto labas;
- end{case};
-
- end{journal};
-
-
-
- procedure efface_ecran;
- var
- j : byte;
- begin
-
- for j:= 0 to 80 do begin
- gotoxy(0,j);writeln(' ');
- gotoxy(1,1);
- end {for};
- end{efface_ecran};
-
- procedure fiche_vide(num_commande : smallint);
-
- begin
-
-
- un_rectangle(5,5,70,20);
- un_rectangle(5,20,70,41);
- un_rectangle(5,41,70,45);
- un_rectangle(5,20,15,41);
- un_rectangle(25,20,55,41);
- un_rectangle(57,42,68,44);
- un_rectangle(5,18,70,20);
- un_rectangle(5,18,15,20 );
- un_rectangle(25,18,55,20);
- gotoXY(20,3);write ('S A I S I E D E C O M M A N D E');
- gotoXY(6,6);write ('CODE VENDEUR :');
- gotoXY(45,6);write('NUM COMMANDE: ');
- gotoXY(60,6);write(num_commande);
- gotoXY(6,8);write ('NUM TEL :');
- gotoXY(45,8);write('NOM CLIENT : ');
- gotoXY(6,10);write('ADRESSE CLIENT:');
- gotoXY(28,16);write('C O M M A N D E');
- gotoXY(6,19);write('Code Prod');
- gotoXY(17,19);write('Quantite') ;
- gotoXY(34,19);write('Nom Produit');
- gotoXY(60,19);write('Prix');
- gotoXY(45,43);write('PRIX TOTAL');
-
- gotoXY(5,18);write(#204);
- gotoXY(5,20);write(#204);
- gotoXY(5,41);write(#204);
- gotoXY(70,18);write(#185);
- gotoXY(70,20);write(#185);
- gotoXY(70,41);write(#185);
- gotoXY(15,18);write(#203);
- gotoXY(25,18);write(#203);
- gotoXY(55,18);write(#203);
- gotoXY(15,20);write(#206);
- gotoXY(25,20);write(#206);
- gotoXY(55,20);write(#206);
- gotoXY(15,41);write(#202);
- gotoXY(25,41);write(#202);
- gotoXY(55,41);write(#202);
-
-
- end {fiche_vide};
-
- procedure fiche_vide0;
-
- begin
-
- un_rectangle(5,5,70,20);
- un_rectangle(5,20,70,41);
- un_rectangle(5,41,70,45);
- un_rectangle(5,20,15,41);
- un_rectangle(25,20,55,41);
- un_rectangle(57,42,68,44);
- un_rectangle(5,18,70,20);
- un_rectangle(5,18,15,20 );
- un_rectangle(25,18,55,20);
- gotoXY(6,6);write ('CODE VENDEUR :');
- gotoXY(45,6);write('NUM COMMANDE: ');
- gotoXY(6,8);write ('NUM TEL :');
- gotoXY(45,8);write('NOM CLIENT : ');
- gotoXY(6,10);write('ADRESSE CLIENT:');
- gotoXY(28,16);write('C O M M A N D E');
- gotoXY(6,19);write('Code Prod');
- gotoXY(17,19);write('Quantite') ;
- gotoXY(34,19);write('Nom Produit');
- gotoXY(60,19);write('Prix');
- gotoXY(45,43);write('PRIX TOTAL');
-
- gotoXY(5,18);write(#204);
- gotoXY(5,20);write(#204);
- gotoXY(5,41);write(#204);
- gotoXY(70,18);write(#185);
- gotoXY(70,20);write(#185);
- gotoXY(70,41);write(#185);
- gotoXY(15,18);write(#203);
- gotoXY(25,18);write(#203);
- gotoXY(55,18);write(#203);
- gotoXY(15,20);write(#206);
- gotoXY(25,20);write(#206);
- gotoXY(55,20);write(#206);
- gotoXY(15,41);write(#202);
- gotoXY(25,41);write(#202);
- gotoXY(55,41);write(#202);
-
-
-
- end {fiche_vide};
-
- procedure fiche_encaissement;
- begin
- efface_ecran;
- un_rectangle(5,18,70,60);
- un_rectangle(5,20,79,57);
- un_rectangle(12,18,24,57);
- un_rectangle(35,18,60,57);
- un_rectangle(60,57,70,60);
- un_rectangle(70,18,79,60);
- //gotoxy(2,10);write('DATE : ',datetostr(date));
- //gotoxy(45,10);write('HEURE : ',timetostr(time));
- gotoXY(12,16);write('E N C A I S S E M E N T V E N D E U R');
- gotoXY(6,19);write('NumCom');
- gotoXY(15,19);write('Numtel') ;
- gotoXY(25,19);write('NomClient');
- gotoXY(40,19);write('Adresse Client');
- gotoXY(63,19);write('Prix');
- gotoXY(72,19);write('Heure');
-
- end{fiche_encaissement} ;
-
- function est_valable(const s : string): boolean;
- var
-
- ss : string;
- const intervalle =[48..57];
-
- begin
- ss:=s;
- if (ss='') then est_valable:=true
- else if not(integer(ss[length(ss)]) in intervalle) then
- est_valable:=false
-
- else begin
- delete(ss,length(ss),length(ss)+1);
- est_valable:=est_valable(ss);
- end{if};
-
- end{est_valable};
-
-
- procedure afficher_prix(out piz : T_pizza; i: byte);
-
-
- var qte : string[3] ;
- pizza : T_pizza;
-
- begin
-
- assign(objet_produit,file_produit);
- reset(objet_produit);
- while not (eof(objet_produit)) do begin
- read(objet_produit,pizza);
- if piz.code = pizza.code then begin
- repeat
- a_faire('Entrer la quantite');
- gotoxy(19,20+i);write(' ');
- gotoxy(19,20+i);readln(qte);
- until est_valable(qte);
- if qte='' then begin
- piz.quantite:=1;
- gotoxy(19,20+i);write(1);
-
- end else piz.quantite:=strtoint(qte);
- gotoxy(35,20+i);write(pizza.libelle);
- gotoxy(61,20+i);write(pizza.prix:0:2);
- piz.prix:=pizza.prix;
- piz.libelle:=pizza.libelle;
-
- end{if};
-
-
- end{while};
- close(objet_produit);
-
-
-
-
- end {afficher_prix};
-
- procedure a_faire(phrase : string);
- begin
- gotoXY(6,47);write(' ');
- gotoXY(6,47);write(phrase);
- end{a_faire};
-
- procedure saisir_commande(out comm : T_commande);
- label
- ici,labas,la;
- var
- reponse : char;
- last_commande : cardinal;
- n : integer;
- les_commandes : T_les_commandes;
- procedure saisir_client(out le_client : T_client);
- begin
-
- le_client.nb_cmd_effectuer:=1;
- repeat
- a_faire('Entrer le nom du client');
- gotoxy(60,8);readln(le_client.nom);
- until (le_client.nom<>'');
- repeat
- a_faire('Entrer l''adresse du client');
- gotoxy(21,10);readln(le_client.adresse);
- until le_client.adresse<>'';
- end{saisir_client};
-
- procedure afficher_client(numero_tel: string);
- var
- client : T_client;
- begin
- client := lire_un_client(numero_tel);
- inc(client.nb_cmd_effectuer);
- gotoxy(60,8);write(client.nom);
- gotoxy(21,10);write(client.adresse);
- modifier_nb_cmd_effectue(numero_tel,client.nb_cmd_effectuer);
- if ((numero_tel<>'1') and (numero_tel<>'2')) then begin
- gotoxy(10,16);
- write(client.nom,' a commande ',client.nb_cmd_effectuer,' fois chez nous !!');
- end{if};
- comm.le_client:=client;
-
- end{afficher_client};
-
-
-
- begin
- ici:last_commande := nb_total_commande(file_commande);
- les_commandes :=lire_les_commandes_du_jour(datetostr(date));
- n:=les_commandes.nb_commande;
- efface_ecran;
- fiche_vide(n);
- gotoXY(60,6);write(n,'-00',last_commande);
- //fiche_vide(last_commande);
- gotoXY(6,12);write ('DATE :');write(datetostr(date));
- gotoXY(50,12);write ('HEURE :');;write(timetostr(time));
- with comm do begin
- repeat
- a_faire('Entrer le code du Vendeur');
- gotoxy(21,6);readln(code_vendeur);
- if (code_vendeur=('q')) or (code_vendeur=('Q')) then
- BEGIN
- sous_menuS;
- exit ;
- end;
- until code_vendeur<>'';
-
- repeat
- a_faire('Entrer le numero de telephone du client');
- gotoxy(21,8);readln(le_client.num_tel);
- if (le_client.num_tel=('q')) or (le_client.num_tel=('Q')) then
- begin
- sous_menuS;
- exit;
- end;
- until le_client.num_tel<>'';
- with le_client do begin
- if not(est_client(num_tel)) then begin
- saisir_client(le_client)
- end else begin
- afficher_client(num_tel);
- end{if};
- commande_client.nb_de_pizza:=1;
- prix_total:=0;
- la:
- a_faire('Entrer le code du produit ou ''V'' pour Valider ''Q'' pour Quitter');
- gotoxy(7,20+commande_client.nb_de_pizza);
- readln(commande_client.les_pizzas[commande_client.nb_de_pizza].code);
- if (commande_client.les_pizzas[commande_client.nb_de_pizza].code=('q'))
- or (commande_client.les_pizzas[commande_client.nb_de_pizza].code=('Q'))
- then
- begin
- sous_menuS;
- exit;
- end;
- while (commande_client.les_pizzas[commande_client.nb_de_pizza].code<>'V') or (commande_client.nb_de_pizza=nb_max_pizza) do begin
- if not est_pizza(commande_client.les_pizzas[commande_client.nb_de_pizza].code) then begin
- gotoxy(7,20+commande_client.nb_de_pizza);
- write(' ');
- gotoxy(7,20+commande_client.nb_de_pizza);
- goto la;
- end else begin
- afficher_prix(commande_client.les_pizzas[commande_client.nb_de_pizza],commande_client.nb_de_pizza);
- prix_total := prix_total +
- (commande_client.les_pizzas[commande_client.nb_de_pizza].prix *
- commande_client.les_pizzas[commande_client.nb_de_pizza].quantite);
- inc(commande_client.nb_de_pizza);
- gotoxy(60,43);writeln(prix_total:0:2);
- a_faire('Entrer le code du produit ou ''V'' pour Valider ''Q'' pour Quitter');
- gotoxy(7,20+commande_client.nb_de_pizza);
- readln(commande_client.les_pizzas[commande_client.nb_de_pizza].code);
- end{if};
- end{while};
- end {with le_client};
- date_commande:=datetostr(date);
- heure_commande:=(time);
- ecrir_fichier(comm);
- if not(est_client(le_client.num_tel)) then begin
- ajouter_client(le_client);
- end{if};
- labas:
- a_faire('1-Creer 2-Modifier 3-Annuler 4-Precedente 5-Suivante 6-mEnu');
- reponse := readkey;
- case upcase(reponse) of
- '1','C',#13 : goto ici;
- '2','M' : modifier_commande(last_commande);
- '3','A' : annuler_commande(last_commande);
- '4','P' : commande_precedente(last_commande);
- '5','S' : commande_suivante(last_commande);
- '6','E' : menu;
- else goto labas;
- end{case};
- end{with};
-
- end{saisir_commande};
-
- procedure afficher_commande(num_cmd: cardinal);
-
- VAR i : byte;
- n : integer;
- commande:T_commande;
- begin
- efface_ecran;
- n:=nb_total_commande(file_commande);
- commande:=lire_une_commande(num_cmd);
- fiche_vide(num_cmd);
- gotoXY(6,12);write ('DATE :');write(Commande.date_commande);
- gotoXY(50,12);write ('HEURE :');;write(timetostr(commande.heure_commande));
- gotoXY(65,6);WRITE('/',n-1);
- with commande do begin
- gotoxy(21,6);write(code_vendeur);
- with le_client do begin
- gotoxy(21,8);write(num_tel);
- gotoxy(60,8);write(nom);
- gotoxy(21,10);write(adresse);
- for i := 1 to commande_client.nb_de_pizza-1 do begin
- gotoxy(7,20+i);
- write(commande_client.les_pizzas[i].code);
- gotoxy(19,20+i);
- write(commande_client.les_pizzas[i].quantite);
- gotoxy(35,20+i);
- write(commande_client.les_pizzas[i].libelle);
- gotoxy(61,20+i);
- write(commande_client.les_pizzas[i].prix:0:2);
- gotoxy( 60,43);writeln(prix_total:0:2);
-
- end{for};
- end {with le_client};
- end{with commande};
-
- end{afficher_commande};
-
- procedure sous_menuR;
- var rep : char;
- label labas;
-
- begin
- labas:
- a_faire('1-Recherche 2- 3- 4- 5- 6-mEnu');
- rep := readkey;
- case upcase(rep) of
- '1','R',#13 : rechercher_commande;
- '6','E' : menu;
- else goto labas;
- end;
- end{sous_menu};
- procedure sous_menuS;
- var rep : char;
- label labas;
-
- begin
- labas:
- a_faire('1-Creer 2- 3- 4- 5- 6-mEnu');
- rep := readkey;
- case upcase(rep) of
- '1','C',#13 : saisir_commande(com);
- '6','E' : menu;
- else goto labas;
- end;
- end{sous_menuS};
-
-
- procedure rechercher_commande;
- var
- num,n : cardinal;
- reponse : char;
- numero : string;
- label ici, labas;
- begin
-
- ici: efface_ecran;
- n:=nb_total_commande(file_commande);
- fiche_vide0;
- repeat
- gotoXY(60,6);write(' ');
- gotoXY(60,6);readln(numero);
- if (numero=('q')) or (numero=('Q')) then
- BEGIN
- sous_menuR;
- exit ;
- end;
- until est_valable(numero);
- charger(50,10,13);
- if numero='' then
- num:=1
- else
- num:=strtoint(numero);
- if (num < n) AND (num>0) then begin
- afficher_commande(num);
-
- end else begin
- gotoxy(10,12);write(' ');
- gotoxy(10,13);write(' ');
- gotoxy(10,14);write(' ');
- gotoxy(10,15);write(' ');
- gotoxy(10,13);write('Ce numero de commande n''existe pas !!!');
- BEGIN
- sous_menuR;
- exit;
- end;
- end {if};
- labas:
- a_faire('1-Recherche 2-Modifier 3-Annuler 4-Precedente 5-Suivante 6-mEnu');
- reponse := readkey;
- case upcase(reponse) of
- '1','R',#13 : goto ici;
- '2','M' : modifier_commande(num);
- '3','A' : annuler_commande(num);
- '4','P' : commande_precedente(num);
- '5','S' : commande_suivante(num);
- '6','E' : menu;
- else goto labas;
- end;
-
- end {rechercher_commande};
-
- procedure recherche_par_date;
- type recherche = record
- date : string;
- debut:integer;
- fin :integer;
- end{record};
- type T_recherche = array of recherche;
- var commande : T_commande;
- search : recherche;
- tab_rech: T_recherche;
- i,j : integer;
-
- begin
- i:=0;
- j:=0;
- assign(objet,file_commande);
- reset(objet);
- if filesize(objet)<>0 then
- begin
- seek(objet,0);
- read(objet,commande);
- search.date:=commande.date_commande;
- search.debut:=i+1;
- while not eof(objet) do begin
-
- if commande.date_commande=search.date then begin
- read(objet,commande);
- inc(i);
- end else begin
- search.fin:=i;
- setlength(tab_rech,j+1);
- tab_rech[high(tab_rech)]:=search;
- inc(i);
- inc(j);
- search.debut:=i;
- read(objet,commande);
- search.date:=commande.date_commande;
- end;
- end{while};
- close(objet);
- end;
- for j:=low(tab_rech) to high(tab_rech) do begin
- if (j+1) mod 10 = 0 then
- begin
- write('Appuyer sur Enter pour voir la suite....');
- readln;
- end{if};
- with tab_rech[j] do begin
- writeln('Pour la date du ',date,' les commandes sont comprises entre');
- writeln('le N° ',debut,' et N° ',fin);
- writeln;
- writeln('-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+');
- End {with};
-
- end{for};
-
- end{recherche_par_date};
-
- procedure menu ;
- var
- choix : char;
- label ici;
- begin
- ici:
- efface_ecran;
- un_rectangle(1,1,50,27);
- un_rectangle(1,1,50,7);
- gotoxy(1,7);write(#204);
- gotoxy(50,7);write(#185);
- gotoxy(22,4);write('M E N U');
- gotoxy(2,2);write('DATE : ',datetostr(date));
- gotoxy(34,2);write('HEURE : ',timetostr(time));
- gotoxy(3,9);write('1 - (S)AISIR COMMANDE');
- gotoxy(3,11);write('2 - (R)ECHERCHER UNE COMMANDE');
- gotoxy(3,13);write('3 - (D)ECAISSER VENDEUR');
- gotoxy(3,15);write('4 - (J)OURNAL');
- gotoxy(3,17);write('5 - (I)NITIALISATION FICHIER');
- gotoxy(3,19);write('6 - (C)REER PRODUIT');
- gotoxy(3,21);write('7 - (P)IZZAS A FAIRE');
- gotoxy(3,23);write('8 - (Q)UITTER');
- gotoxy(10,26);write('VOTRE CHOIX ? [1,2,3,4,5,6,7,8]');
- choix := readkey;
- case upcase(choix) of
- '1','S',#13 : saisir_commande(com);
- '2','R' : rechercher_commande ;
- '3','D' : decaisser_vendeur;
- '4','J' : journal;
- '5','I' : initialisation;
- '6','C' : ajouter_produit;
- '7','P' : pizza_a_faire;
- '8','Q' : exit;
- else
- begin
- efface_ecran;
- gotoxy(5,21);write('Choisir entre [1,2,3,4,5,6,7,8] !');
- sleep(2000);
- goto ici;
- end;
- end;{case}
- end {menu};
-
- procedure decaisser_vendeur;
-
- var i,j : byte;
- montant_du : real;
- reponse : char;
- com : T_les_commandes;
- num : string[4];
- label ici, labas;
- begin
- com := lire_les_commandes_du_jour(datetostr(date));
- ici: efface_ecran;
- fiche_encaissement;
- j:=0;
- montant_du :=0;
- gotoXY(22,13);write('Entrer le code du vendeur : ');
- repeat
- gotoXY(50,13);readln(num);
- until num<>'';
- for i:=0 to com.nb_commande do begin
- if num = com.les_commandes[i].code_vendeur then begin
- gotoxy(8,21+j);write(i);
- gotoxy(13,21+j);write(com.les_commandes[i].le_client.num_tel);
- gotoxy(26,21+j);write(com.les_commandes[i].le_client.nom);
- gotoxy(36,21+j);write(com.les_commandes[i].le_client.adresse);
- gotoxy(62,21+j);write(com.les_commandes[i].prix_total:0:2);
- gotoXY(71,21+j);write(TIMEtostr(com.les_commandes[i].heure_commande));
- montant_du:=montant_du+com.les_commandes[i].prix_total;
- inc(j);
- end{if};
-
- end {for};
- gotoXY(12,58);write('Montant total encaisse par le vendeur ',num,' est : ');
- gotoXY(62,58);write(montant_du:0:2);
- labas:
- gotoxy(30,61);write('1-Decaisser 2-Menu');
- reponse := readkey;
- case upcase(reponse) of
- '1','D',#13 : goto ici;
- '2','M' : menu;
- else goto labas;
- end{case};
-
-
- end{decaisser_vendeurs};
- procedure pizza_a_faire;
- VAR
- t : T_les_commandes;
- i,j,k : integer;
- begin
- repeat
- k:=0;
- efface_ecran;
- un_rectangle(5,18,50,60);
- un_rectangle(5,20,50,60);
- un_rectangle(12,18,24,60);
- un_rectangle(35,18,50,60);
- gotoXY(6,19);write('Qte');
- gotoXY(15,19);write('Code') ;
- gotoXY(25,19);write('Num Commande');
- gotoXY(40,19);write('Duree');
- t:=lire_les_commandes_du_jour(datetostr(date));
- for j:=0 to t.nb_commande do begin
- for i:=1 to t.les_commandes[j].le_client.commande_client.nb_de_pizza-1 do begin
- t := lire_les_commandes_du_jour(datetostr(date));
- gotoXY(8,21+k);write(t.les_commandes[j].le_client.commande_client.les_pizzas[i].quantite);
- gotoXY(17,21+k);write(t.les_commandes[j].le_client.commande_client.les_pizzas[i].code);
- gotoXY(38,21+k);write(timetostr(time-t.les_commandes[j].heure_commande));
- inc(k);
- end{for};
-
- end{for};
- gotoXY(50,60);write('1-Actualiser 2-Menu');
-
- until (readkey='M') OR (readkey='m') OR (readkey='2');
- menu;
-
- end{pizza_a_faire};
-
- end.
unit U_pizzaria;
interface
uses SysUtils,
crt,
mes_outils;
const nb_max_pizza = 30;
nb_max_de_commande = 250;
nb_max_de_clients = 100;
tva = 0.055;
file_commande = 'mina.jul';
file_commande_annulee= 'cmd_annulee_modifiee.jul';
file_client = 'nos_clients.jul';
file_produit = 'nos_produits.jul';
type type_prix = real;
T_pizza = record
code : string[4];
libelle : string[15];
quantite : BYTE;
prix : type_prix;
end{record};
T_tab_pizza = array[1..nb_max_pizza] of T_pizza;
T_les_pizzas = record
nb_pizza : byte;
les_pizzas : T_tab_pizza;
end {record};
la_commande = record
les_pizzas : T_tab_pizza;
nb_de_pizza : byte;
end {record};
T_client = record
num_tel : string[10];
nom : string[10];
adresse : string[26];
nb_cmd_effectuer: byte;
commande_client : la_commande;
end{record};
T_tab_client = array[0..nb_max_de_clients] of T_client;
T_les_clients = record
nb_client : byte;
les_clients : T_tab_client;
end{record};
T_commande = record
code_vendeur : string[4];
le_client : T_client;
prix_total : type_prix;
date_commande : STRING[12];
heure_commande : tdatetime;
end{record};
T_tab_commande = array[0..nb_max_de_commande] of t_commande;
T_les_commandes = record
nb_commande : byte;
les_commandes : T_tab_commande;
end {record};
fichier_client = file of T_client;
fichier_commande = file of T_commande;
fichier_produit = file of T_pizza;
////////////------ LES VARIABLES GLOBALES ----------////////////
//
var objet : fichier_commande; //
objet_client : fichier_client; //
objet_produit : fichier_produit; //
com : T_commande; //
client : T_client; //
////////////////////////////////////////////////////////////////
procedure initialiser_fichier(file_name: string);
procedure initialisation;
procedure ajouter_produit;
procedure fiche_vide(num_commande : SMALLINT);
procedure fiche_vide0;
procedure afficher_prix(out piz : T_pizza;i: byte);
procedure a_faire(phrase : string);
procedure efface_ecran;
procedure fiche_encaissement;
procedure rechercher_commande;
procedure recherche_par_date;
procedure saisir_commande(out comm : T_commande);
procedure afficher_commande(num_cmd: cardinal);
procedure decaisser_vendeur;
procedure pizza_a_faire;
procedure menu;
procedure ecrir_fichier (commande : T_commande);
procedure fermer_fichier(file_name : string);
procedure ouvrir_fichier(file_name : string);
procedure ajouter_client (client : T_client);
procedure modifier_client(num_tel : string) ;
procedure afficher_les_clients;
procedure journal;
procedure sous_menuR;
procedure sous_menuS;
procedure annuler_commande(num_cmd: cardinal);
procedure modifier_commande(num_cmd: cardinal);
procedure commande_precedente(var num_cmd: cardinal);
procedure commande_suivante(var num_cmd: cardinal);
function est_pizza(const code : string) : boolean;
function est_valable(const s : string): boolean;
function est_client (numero_tel : string) : boolean;
function lire_nos_pizzas(file_produit: string) : T_les_pizzas;
function lire_une_commande (num_commande : integer) :T_commande;
function lire_les_commandes_du_jour (la_date : string):T_les_commandes;
function lire_les_clients(file_client: string) : T_les_clients;
function lire_un_client (numero_tel: string) : T_client;
function formatage_fichier (file_name : string):T_les_commandes;
function nb_total_commande(file_commande : string): byte;
implementation
procedure initialiser_fichier(file_name: string);
begin
assign(objet,file_name);
rewrite(objet);
close(objet);
a_faire('Fichiers initialises "Enter" pour retourner au Menu principal !');
end{initaliser_fichiers};
procedure initialisation;
Var reponse : char;
label la;
procedure fiche;
begin
efface_ecran;
un_rectangle(5,5,58,20);
un_rectangle(5,7,58,20);
gotoxy(8,6);write('INITIALISATIONS DES FICHIERS');
gotoxy(7,9);write('1 - TOUS LES FICHIERS');
gotoxy(7,11);write('2 - FICHIER DES CLIENTS ');
gotoxy(7,13);write('3 - FICHIER DES PRODUITS ');
gotoxy(7,15);write('4 - FICHIERS DES COMMANDES');
gotoxy(7,17);write('5 - FICHIERS DES COMMANDES ANNULEES OU MODIFIEES');
gotoxy(7,19);write('6 - MENU PRINCIPAL');
a_faire('Appuyer sur un numero pour initialiser le fichier correspondant !');
end{fiche_produit};
begin
fiche;
la: reponse:=readkey;
case reponse of
'1' : BEGIN
initialiser_fichier(file_client);
initialiser_fichier(file_produit);
initialiser_fichier(file_commande);
initialiser_fichier(file_commande_annulee);
a_faire('Fichiers initialises');
READLN;
menu;
END;
'2' : BEGIN
initialiser_fichier(file_client);
readln;
end;
'3' : begin
initialiser_fichier(file_produit);
readln;
end;
'4' : begin
initialiser_fichier(file_commande);
readln;
end;
'5' : begin
initialiser_fichier(file_commande_annulee);
readln;
end;
'6' : menu;
else goto la ;
end {case};
end{initialisation};
procedure ajouter_produit;
var
reponse : char;
label ici, labas;
Procedure fiche_produit;
begin
efface_ecran;
un_rectangle(5,5,40,20);
un_rectangle(5,7,40,20);
gotoxy(8,6);write('A J O U T E R P R O D U I T');
gotoxy(6,9);write('CODE PRODUIT :');
gotoxy(6,11);write('NOM PRODUIT :');
gotoxy(6,13);write('PRIX PRODUIT :');
end{fiche_produit};
procedure saisir_produit;
var pizz: T_pizza;
begin
fiche_produit;
assign(objet_produit,file_produit);
reset(objet_produit);
repeat
a_faire('Entrer le code du Produit ou Q pour Quitter ');
gotoxy(21,9);readln(pizz.code);
if (pizz.code ='Q') or (pizz.code ='q') then begin
exit;
end;
until pizz.code<>'';
repeat
a_faire('Entrer le libelle du Produit ou Q pour Quitter ');
gotoxy(21,11);readln(pizz.libelle);
if (pizz.libelle='Q') or (pizz.libelle='q') then begin
exit;
end;
until pizz.libelle<>'';
a_faire('Entrer le Prix du Produit ou Q pour Quitter ');
gotoxy(21,13);readln(pizz.prix);
seek(objet_produit,filesize(objet_produit));
write(objet_produit,pizz);
close(objet_produit);
ajouter_produit;
end{saisir_produit};
procedure rechercher_produit;
var pizz: T_pizza;
code :string;
begin
fiche_produit;
repeat
a_faire('Entrer le code du Produit ou Q pour Quitter ');
gotoxy(21,9);readln(code);
if (code ='Q') or (code ='q') then begin
ajouter_produit;
end;
until pizz.code<>'';
if est_pizza(code) then begin
assign(objet_produit,file_produit);
reset(objet_produit);
while not eof(objet_produit) do begin
read(objet_produit,pizz);
if code=pizz.code then begin
gotoxy(21,11);write(pizz.libelle);
gotoxy(21,13);write(pizz.prix:0:2);
end{if};
end{while};
close(objet_produit);
end else begin
a_faire('Ce produit n''existe pas ! ');
end;
readln;
a_faire('Appuyer sue " Enter " pour continuer...');
ajouter_produit;
end{saisir_produit};
begin
labas:
efface_ecran;
fiche_produit;
a_faire(' ');
gotoxy(8,18);write('1- Creer 2- Recherche 3-Menu');
reponse:=readkey;
case upcase(reponse) of
'C','1',#13 : saisir_produit;
'R','2' : rechercher_produit;
'M','3' : menu;
else goto labas;
end{case};
end{ajouter_produit};
function lire_nos_pizzas(file_produit: string) : T_les_pizzas;
var i : integer;
nos_pizzas : T_les_pizzas;
pizza : T_pizza;
begin
assign(objet_produit,file_produit);
reset(objet_produit);
i:=0;
nos_pizzas.nb_pizza :=0;
while not (eof(objet_produit)) do begin
inc(nos_pizzas.nb_pizza);
seek(objet_produit,i);
read(objet_produit,pizza);
nos_pizzas.les_pizzas[nos_pizzas.nb_pizza]:=pizza;
inc(i);
end{while};
lire_nos_pizzas := nos_pizzas;
close(objet_produit);
end {lire_nos_pizzas};
function est_pizza(const code : string) : boolean;
var
pizza : T_pizza;
resultat : boolean;
begin
assign(objet_produit,file_produit);
reset(objet_produit);
resultat:=false;
while not (eof(objet_produit)) do begin
read(objet_produit,pizza);
resultat:= resultat or (code=pizza.code);
end{while};
close(objet_produit);
est_pizza:= resultat;
end {est_pizza};
procedure annuler_commande(num_cmd: cardinal);
var cmd : T_commande;
reponse : char;
begin
a_faire('Confirmer l''annulation de la Commande (O) ou (N)');
reponse:=readkey;
case upcase(reponse) of
'O',#13 : begin
cmd:= lire_une_commande(num_cmd);
cmd.prix_total:=0;
cmd.le_client.commande_client.nb_de_pizza:=0;
ouvrir_fichier(file_commande);
seek(objet,num_cmd-1);
write(objet,cmd);
fermer_fichier(file_commande);
menu;
end;
'N' : saisir_commande(com);
else saisir_commande(com);
end{case};
end{annuler_commande};
procedure modifier_commande(num_cmd: cardinal);
var cmd : T_commande;
reponse : char;
label labas,la,ici;
begin
gotoXY(11,13);write('Appuyer sur ''ENTREE'' pour modifier la commande');
gotoXY(11,14);write('Appuyer sur une touche pour aller au Menu principal');
reponse := readkey;
case reponse of
#13 : goto ici;
else BEGIN
gotoXY(11,13);write(' ');
gotoXY(11,14);write(' ');
GOTO labas;
END;
end{case};
ici:
gotoXY(11,13);write(' ');
gotoXY(11,14);write(' ');
afficher_commande(num_cmd);
cmd := lire_une_commande(num_cmd);
with cmd do begin
with le_client do begin
prix_total:=0;
commande_client.nb_de_pizza:=1;
la:
a_faire('Entrer le code du produit ou ''V'' pour Valider ''Q'' pour Quitter');
gotoxy(7,20+commande_client.nb_de_pizza);
readln(commande_client.les_pizzas[commande_client.nb_de_pizza].code);
if (commande_client.les_pizzas[commande_client.nb_de_pizza].code=('q'))
or (commande_client.les_pizzas[commande_client.nb_de_pizza].code=('Q'))
then
begin
sous_menuS;
exit;
end;
while (commande_client.les_pizzas[commande_client.nb_de_pizza].code<>'V')
or
(commande_client.nb_de_pizza=nb_max_pizza) do begin
if not est_pizza(commande_client.les_pizzas[commande_client.nb_de_pizza].code) then begin
gotoxy(7,20+commande_client.nb_de_pizza);
write(' ');
gotoxy(7,20+commande_client.nb_de_pizza);
goto la;
end else begin
afficher_prix(commande_client.les_pizzas[commande_client.nb_de_pizza],commande_client.nb_de_pizza);
prix_total := prix_total +
(commande_client.les_pizzas[commande_client.nb_de_pizza].prix *
commande_client.les_pizzas[commande_client.nb_de_pizza].quantite);
inc(commande_client.nb_de_pizza);
gotoxy(60,40);writeln(prix_total:0:2);
a_faire('Entrer le code du produit ou ''V'' pour Valider ''Q'' pour Quitter');
gotoxy(7,20+commande_client.nb_de_pizza);
readln(commande_client.les_pizzas[commande_client.nb_de_pizza].code);
if (commande_client.les_pizzas[commande_client.nb_de_pizza].code=('q'))
or (commande_client.les_pizzas[commande_client.nb_de_pizza].code=('Q'))
then
begin
sous_menuS;
exit;
end;
end{if};
end{while};
ouvrir_fichier(file_commande);
seek(objet,num_cmd-1);
write(objet,cmd);
fermer_fichier(file_commande);
labas:
a_faire('1-Creer 2-Modifier 3-Annuler 4-Precedente 5-Suivante 6-mEnu');
reponse := readkey;
case upcase(reponse) of
'1','C',#13 : saisir_commande(cmd);
'2','M' : modifier_commande(num_cmd);
'3','A' : annuler_commande(num_cmd);
'4','P' : commande_precedente(num_cmd);
'5','S' : commande_suivante(num_cmd);
'6','E' : menu;
else goto labas;
end;
end {with le_client};
end {with cmd};
end{modifier_commande};
procedure commande_precedente(var num_cmd: cardinal);
label
labas;
var
reponse : char;
begin
efface_ecran;
case num_cmd of
1 : begin
num_cmd:=nb_total_commande(file_commande)-1;
afficher_commande(num_cmd);
end;
else begin
dec(num_cmd);
afficher_commande(num_cmd);
end;
end{case};
labas:
a_faire('1-Creer 2-Modifier 3-Annuler 4-Precedente 5-Suivante 6-mEnu');
reponse := readkey;
case upcase(reponse) of
'1','C',#13 : saisir_commande(com);
'2','M' : modifier_commande(num_cmd);
'3','A' : annuler_commande(num_cmd);
'4','P' : commande_precedente(num_cmd);
'5','S' : commande_suivante(num_cmd);
'6','E' : menu;
else goto labas;
end{case};
end{commande_precedente};
procedure commande_suivante(var num_cmd: cardinal);
label
labas;
var
reponse : char;
n : byte;
begin
efface_ecran;
n :=nb_total_commande(file_commande)-1;
if num_cmd = n then begin
num_cmd:=1;
afficher_commande(num_cmd);
end else begin
inc(num_cmd);
afficher_commande(num_cmd);
end{if};
labas :
a_faire('1-Creer 2-Modifier 3-Annuler 4-Precedente 5-Suivante 6-mEnu');
reponse := readkey;
case upcase(reponse) of
'1','C',#13 : saisir_commande(com);
'2','M' : modifier_commande(num_cmd);
'3','A' : annuler_commande(num_cmd);
'4','P' : commande_precedente(num_cmd);
'5','S' : commande_suivante(num_cmd);
'6','E' : menu;
else goto labas;
end{case};
end{commande_suivante};
procedure ecrir_fichier (commande : T_commande);
begin
assign(objet,file_commande);
reset(objet);
seek(objet,filesize(objet));
write(objet,commande);
close(objet);
end{ecrir_fichier };
procedure ouvrir_fichier ;
begin
assign(objet,file_name);
reset(objet);
end{ouvrir_fichier};
function nb_total_commande(file_commande : string): byte;
var
n : byte;
begin
assign(objet,file_commande);
reset(objet);
n := filesize(objet)+1;
close(objet);
nb_total_commande := n;
end{num_commande};
procedure fermer_fichier ;
begin
assign(objet,file_name);
reset(objet);
close(objet);
end{fermer_fichier };
function lire_une_commande(num_commande : integer) : T_commande;
var
commande: T_commande;
begin
assign(objet,file_commande);
reset(objet);
seek(objet,num_commande-1);
read(objet,commande);
lire_une_commande := commande;
close(objet);
end{lire_une_commande };
function formatage_fichier (file_name : string):T_les_commandes;
var
une_com : T_les_commandes;
com : T_commande;
i : integer;
begin
assign(objet,file_name);
reset(objet);
i:=0;
while not(eof(objet)) do begin
seek(objet,i);
read(objet,com);
une_com.les_commandes[i]:=com;
inc(i);
end{while};
une_com.nb_commande:=filesize(objet)+1;
formatage_fichier := une_com;
close(objet);
end{formatage_fichier};
function lire_les_clients(file_client: string) : T_les_clients;
var
clients : T_les_clients;
i : integer;
un_client : T_client;
begin
assign(objet_client,file_client);
reset(objet_client);
clients.nb_client := filesize(objet_client);
i:=0;
while not(eof(objet_client)) do begin
seek(objet_client,i);
read(objet_client,un_client) ;
clients.les_clients[i]:=un_client;
inc(i);
end{while};
lire_les_clients := clients;
close(objet_client);
end{lire_les_clients};
function est_client (numero_tel: string) : boolean;
var
resultat: boolean;
clients : T_les_clients;
i : integer;
begin
resultat := false;
clients := lire_les_clients(file_client);
for i:=0 to clients.nb_client do begin
if numero_tel = clients.les_clients[i].num_tel then begin
resultat := true;
end{if};
end{for};
est_client :=resultat;
end{est_client};
function lire_un_client (numero_tel: string) : T_client;
var
clients : T_les_clients;
i : integer;
begin
clients := lire_les_clients(file_client);
for i:=0 to clients.nb_client do begin
if numero_tel = clients.les_clients[i].num_tel then begin
client:=clients.les_clients[i];
end{if};
end{for};
lire_un_client := client;
end{est_client};
procedure modifier_client(num_tel : string) ;
var
i : integer;
client : T_client;
begin
assign(objet_client,file_client);
reset(objet_client);
i:=0;
while not(eof(objet_client)) do begin
seek(objet_client,i);
read(objet_client,client) ;
if client.num_tel=num_tel then begin
writeln('numeror telephone : ',num_tel);
writeln('nom: ',client.nom);
writeln('adresse: ',client.adresse);
writeln('+++++++++++++++++++++++++++++++++++++++++++++');
writeln('numeror telephone : ',num_tel);
write('nom: ');readln(client.nom);
write('adresse: ');readln(client.adresse);
seek(objet_client,i);
write(objet_client,client);
exit;
end{if};
inc(i);
end{while};
close(objet_client);
end{modifier_client};
procedure modifier_nb_cmd_effectue(num_tel:string;n:smallint) ;
var
i : integer;
client : T_client;
begin
assign(objet_client,file_client);
reset(objet_client);
i:=0;
while not(eof(objet_client)) do begin
seek(objet_client,i);
read(objet_client,client) ;
if client.num_tel=num_tel then begin
client.nb_cmd_effectuer:=n;
seek(objet_client,i);
write(objet_client,client);
exit;
end{if};
inc(i);
end{while};
close(objet_client);
end{modifier_nb_cmd_effectue};
procedure afficher_les_clients ;
var
i : integer;
client : T_client;
begin
assign(objet_client,file_client);
reset(objet_client);
i:=0;
while not(eof(objet_client)) do begin
seek(objet_client,i);
read(objet_client,client) ;
writeln('numeror telephone : ',client.num_tel);
writeln('nom: ',client.nom);
writeln('adresse: ',client.adresse);
writeln('+++++++++++++++++++++++++++++++++++++++++++++');
inc(i);
end{while};
READLN;
close(objet_client);
end{afficher_les_clients};
procedure ajouter_client (client : T_client);
begin
assign(objet_client,file_client);
reset(objet_client);
seek(objet_client,filesize(objet_client));
write(objet_client,client);
close(objet_client);
end{ajouter_client};
function lire_les_commandes_du_jour (la_date : string):T_les_commandes;
var resultat: T_les_commandes;
objet : fichier_commande;
commande : T_commande;
begin
assign(objet,file_commande);
reset(objet);
resultat.nb_commande:=0;
while not eof(objet) do begin
read(objet,commande);
if commande.date_commande=la_date then begin
inc(resultat.nb_commande);
resultat.les_commandes[resultat.nb_commande]:=commande;
end{if};
end{for};
lire_les_commandes_du_jour := resultat;
end{lire_les_commandes_du_jour};
procedure journal;
type
T_chiffre_daffaire = record
nb_commandes : byte;
montant : real;
end{record};
var
toutes_les_commandes : T_les_commandes;
i : byte;
ca_emporter,ca_livraison : T_chiffre_daffaire;
chiffre_daffaire_ttc,chiffre_daffaire_ht: real;
reponse : char;
label
ici,labas;
procedure trace_du_journal;
begin
un_rectangle(11,5,70,45);
un_rectangle(11,10,70,30);
un_rectangle(11,10,70,12);
un_rectangle(40,10,55,30);
gotoXY(20,7);write('J O U R N A L');
gotoXY(14,17);write('CHIFFRE D''AFFAIRE V.A.E');
gotoXY(14,22);write('CHIFFRE D''AFFAIRE L.A.D');
gotoXY(17,35);write('CHIFFRE D''AFFAIRE H.T');
gotoXY(17,39);write('CHIFFRE D''AFFAIRE T.T.C');
un_rectangle(50,34,68,36);
un_rectangle(50,38,68,40);
gotoXY(41,11);write('Nbre Commandes');
gotoXY(56,11);write('Montant total');
gotoXY(52,42);write('T.V.A = ',tva*100:0:2,' %');
end{trace_du_journal};
var la_date : string[10];
begin
ici:
efface_ecran;
trace_du_journal;
ca_emporter.nb_commandes:=0;
ca_emporter.montant:=0;
ca_livraison.nb_commandes:=0;
ca_livraison.montant:=0;
un_rectangle(48,6,68,8);
gotoXY(13,11);write('HEURE :');
gotoXY(21,11);WRITE(timetostr(time));
gotoXY(50,7);write('DATE :',datetostr(date));
a_faire('Entrer une date pour afficher le Journal ');
gotoXY(56,7);readln(la_date);
if la_date ='' then begin
toutes_les_commandes:=lire_les_commandes_du_jour(datetostr(date));
end else begin
toutes_les_commandes:=lire_les_commandes_du_jour(la_date);
end{if};
a_faire(' ');
for i:=1 to toutes_les_commandes.nb_commande do begin
with toutes_les_commandes.les_commandes[i] do begin
if (le_client.num_tel ='1') or (le_client.num_tel ='2') then begin
ca_emporter.montant := ca_emporter.montant + prix_total;
inc(ca_emporter.nb_commandes)
end else begin
ca_livraison.montant := ca_livraison.montant + prix_total;
inc(ca_livraison.nb_commandes)
end{if};
end{with};
end{for};
chiffre_daffaire_ttc := ca_emporter.montant + ca_livraison.montant;
chiffre_daffaire_ht := chiffre_daffaire_ttc - (chiffre_daffaire_ttc*tva);
gotoxy(45,17);write(ca_emporter.nb_commandes);
gotoxy(58,17);write(ca_emporter.montant:0:2);
gotoxy(45,22);write(ca_livraison.nb_commandes);
gotoxy(58,22);write(ca_livraison.montant:0:2);
gotoxy(52,35);write(chiffre_daffaire_ht:0:2);
gotoxy(52,39);write(chiffre_daffaire_ttc:0:2);
labas:
gotoxy(30,47);write('1-Journal 2-Menu');
reponse := readkey;
case upcase(reponse) of
'1','J',#13 : goto ici;
'2','M' : menu;
else goto labas;
end{case};
end{journal};
procedure efface_ecran;
var
j : byte;
begin
for j:= 0 to 80 do begin
gotoxy(0,j);writeln(' ');
gotoxy(1,1);
end {for};
end{efface_ecran};
procedure fiche_vide(num_commande : smallint);
begin
un_rectangle(5,5,70,20);
un_rectangle(5,20,70,41);
un_rectangle(5,41,70,45);
un_rectangle(5,20,15,41);
un_rectangle(25,20,55,41);
un_rectangle(57,42,68,44);
un_rectangle(5,18,70,20);
un_rectangle(5,18,15,20 );
un_rectangle(25,18,55,20);
gotoXY(20,3);write ('S A I S I E D E C O M M A N D E');
gotoXY(6,6);write ('CODE VENDEUR :');
gotoXY(45,6);write('NUM COMMANDE: ');
gotoXY(60,6);write(num_commande);
gotoXY(6,8);write ('NUM TEL :');
gotoXY(45,8);write('NOM CLIENT : ');
gotoXY(6,10);write('ADRESSE CLIENT:');
gotoXY(28,16);write('C O M M A N D E');
gotoXY(6,19);write('Code Prod');
gotoXY(17,19);write('Quantite') ;
gotoXY(34,19);write('Nom Produit');
gotoXY(60,19);write('Prix');
gotoXY(45,43);write('PRIX TOTAL');
gotoXY(5,18);write(#204);
gotoXY(5,20);write(#204);
gotoXY(5,41);write(#204);
gotoXY(70,18);write(#185);
gotoXY(70,20);write(#185);
gotoXY(70,41);write(#185);
gotoXY(15,18);write(#203);
gotoXY(25,18);write(#203);
gotoXY(55,18);write(#203);
gotoXY(15,20);write(#206);
gotoXY(25,20);write(#206);
gotoXY(55,20);write(#206);
gotoXY(15,41);write(#202);
gotoXY(25,41);write(#202);
gotoXY(55,41);write(#202);
end {fiche_vide};
procedure fiche_vide0;
begin
un_rectangle(5,5,70,20);
un_rectangle(5,20,70,41);
un_rectangle(5,41,70,45);
un_rectangle(5,20,15,41);
un_rectangle(25,20,55,41);
un_rectangle(57,42,68,44);
un_rectangle(5,18,70,20);
un_rectangle(5,18,15,20 );
un_rectangle(25,18,55,20);
gotoXY(6,6);write ('CODE VENDEUR :');
gotoXY(45,6);write('NUM COMMANDE: ');
gotoXY(6,8);write ('NUM TEL :');
gotoXY(45,8);write('NOM CLIENT : ');
gotoXY(6,10);write('ADRESSE CLIENT:');
gotoXY(28,16);write('C O M M A N D E');
gotoXY(6,19);write('Code Prod');
gotoXY(17,19);write('Quantite') ;
gotoXY(34,19);write('Nom Produit');
gotoXY(60,19);write('Prix');
gotoXY(45,43);write('PRIX TOTAL');
gotoXY(5,18);write(#204);
gotoXY(5,20);write(#204);
gotoXY(5,41);write(#204);
gotoXY(70,18);write(#185);
gotoXY(70,20);write(#185);
gotoXY(70,41);write(#185);
gotoXY(15,18);write(#203);
gotoXY(25,18);write(#203);
gotoXY(55,18);write(#203);
gotoXY(15,20);write(#206);
gotoXY(25,20);write(#206);
gotoXY(55,20);write(#206);
gotoXY(15,41);write(#202);
gotoXY(25,41);write(#202);
gotoXY(55,41);write(#202);
end {fiche_vide};
procedure fiche_encaissement;
begin
efface_ecran;
un_rectangle(5,18,70,60);
un_rectangle(5,20,79,57);
un_rectangle(12,18,24,57);
un_rectangle(35,18,60,57);
un_rectangle(60,57,70,60);
un_rectangle(70,18,79,60);
//gotoxy(2,10);write('DATE : ',datetostr(date));
//gotoxy(45,10);write('HEURE : ',timetostr(time));
gotoXY(12,16);write('E N C A I S S E M E N T V E N D E U R');
gotoXY(6,19);write('NumCom');
gotoXY(15,19);write('Numtel') ;
gotoXY(25,19);write('NomClient');
gotoXY(40,19);write('Adresse Client');
gotoXY(63,19);write('Prix');
gotoXY(72,19);write('Heure');
end{fiche_encaissement} ;
function est_valable(const s : string): boolean;
var
ss : string;
const intervalle =[48..57];
begin
ss:=s;
if (ss='') then est_valable:=true
else if not(integer(ss[length(ss)]) in intervalle) then
est_valable:=false
else begin
delete(ss,length(ss),length(ss)+1);
est_valable:=est_valable(ss);
end{if};
end{est_valable};
procedure afficher_prix(out piz : T_pizza; i: byte);
var qte : string[3] ;
pizza : T_pizza;
begin
assign(objet_produit,file_produit);
reset(objet_produit);
while not (eof(objet_produit)) do begin
read(objet_produit,pizza);
if piz.code = pizza.code then begin
repeat
a_faire('Entrer la quantite');
gotoxy(19,20+i);write(' ');
gotoxy(19,20+i);readln(qte);
until est_valable(qte);
if qte='' then begin
piz.quantite:=1;
gotoxy(19,20+i);write(1);
end else piz.quantite:=strtoint(qte);
gotoxy(35,20+i);write(pizza.libelle);
gotoxy(61,20+i);write(pizza.prix:0:2);
piz.prix:=pizza.prix;
piz.libelle:=pizza.libelle;
end{if};
end{while};
close(objet_produit);
end {afficher_prix};
procedure a_faire(phrase : string);
begin
gotoXY(6,47);write(' ');
gotoXY(6,47);write(phrase);
end{a_faire};
procedure saisir_commande(out comm : T_commande);
label
ici,labas,la;
var
reponse : char;
last_commande : cardinal;
n : integer;
les_commandes : T_les_commandes;
procedure saisir_client(out le_client : T_client);
begin
le_client.nb_cmd_effectuer:=1;
repeat
a_faire('Entrer le nom du client');
gotoxy(60,8);readln(le_client.nom);
until (le_client.nom<>'');
repeat
a_faire('Entrer l''adresse du client');
gotoxy(21,10);readln(le_client.adresse);
until le_client.adresse<>'';
end{saisir_client};
procedure afficher_client(numero_tel: string);
var
client : T_client;
begin
client := lire_un_client(numero_tel);
inc(client.nb_cmd_effectuer);
gotoxy(60,8);write(client.nom);
gotoxy(21,10);write(client.adresse);
modifier_nb_cmd_effectue(numero_tel,client.nb_cmd_effectuer);
if ((numero_tel<>'1') and (numero_tel<>'2')) then begin
gotoxy(10,16);
write(client.nom,' a commande ',client.nb_cmd_effectuer,' fois chez nous !!');
end{if};
comm.le_client:=client;
end{afficher_client};
begin
ici:last_commande := nb_total_commande(file_commande);
les_commandes :=lire_les_commandes_du_jour(datetostr(date));
n:=les_commandes.nb_commande;
efface_ecran;
fiche_vide(n);
gotoXY(60,6);write(n,'-00',last_commande);
//fiche_vide(last_commande);
gotoXY(6,12);write ('DATE :');write(datetostr(date));
gotoXY(50,12);write ('HEURE :');;write(timetostr(time));
with comm do begin
repeat
a_faire('Entrer le code du Vendeur');
gotoxy(21,6);readln(code_vendeur);
if (code_vendeur=('q')) or (code_vendeur=('Q')) then
BEGIN
sous_menuS;
exit ;
end;
until code_vendeur<>'';
repeat
a_faire('Entrer le numero de telephone du client');
gotoxy(21,8);readln(le_client.num_tel);
if (le_client.num_tel=('q')) or (le_client.num_tel=('Q')) then
begin
sous_menuS;
exit;
end;
until le_client.num_tel<>'';
with le_client do begin
if not(est_client(num_tel)) then begin
saisir_client(le_client)
end else begin
afficher_client(num_tel);
end{if};
commande_client.nb_de_pizza:=1;
prix_total:=0;
la:
a_faire('Entrer le code du produit ou ''V'' pour Valider ''Q'' pour Quitter');
gotoxy(7,20+commande_client.nb_de_pizza);
readln(commande_client.les_pizzas[commande_client.nb_de_pizza].code);
if (commande_client.les_pizzas[commande_client.nb_de_pizza].code=('q'))
or (commande_client.les_pizzas[commande_client.nb_de_pizza].code=('Q'))
then
begin
sous_menuS;
exit;
end;
while (commande_client.les_pizzas[commande_client.nb_de_pizza].code<>'V') or (commande_client.nb_de_pizza=nb_max_pizza) do begin
if not est_pizza(commande_client.les_pizzas[commande_client.nb_de_pizza].code) then begin
gotoxy(7,20+commande_client.nb_de_pizza);
write(' ');
gotoxy(7,20+commande_client.nb_de_pizza);
goto la;
end else begin
afficher_prix(commande_client.les_pizzas[commande_client.nb_de_pizza],commande_client.nb_de_pizza);
prix_total := prix_total +
(commande_client.les_pizzas[commande_client.nb_de_pizza].prix *
commande_client.les_pizzas[commande_client.nb_de_pizza].quantite);
inc(commande_client.nb_de_pizza);
gotoxy(60,43);writeln(prix_total:0:2);
a_faire('Entrer le code du produit ou ''V'' pour Valider ''Q'' pour Quitter');
gotoxy(7,20+commande_client.nb_de_pizza);
readln(commande_client.les_pizzas[commande_client.nb_de_pizza].code);
end{if};
end{while};
end {with le_client};
date_commande:=datetostr(date);
heure_commande:=(time);
ecrir_fichier(comm);
if not(est_client(le_client.num_tel)) then begin
ajouter_client(le_client);
end{if};
labas:
a_faire('1-Creer 2-Modifier 3-Annuler 4-Precedente 5-Suivante 6-mEnu');
reponse := readkey;
case upcase(reponse) of
'1','C',#13 : goto ici;
'2','M' : modifier_commande(last_commande);
'3','A' : annuler_commande(last_commande);
'4','P' : commande_precedente(last_commande);
'5','S' : commande_suivante(last_commande);
'6','E' : menu;
else goto labas;
end{case};
end{with};
end{saisir_commande};
procedure afficher_commande(num_cmd: cardinal);
VAR i : byte;
n : integer;
commande:T_commande;
begin
efface_ecran;
n:=nb_total_commande(file_commande);
commande:=lire_une_commande(num_cmd);
fiche_vide(num_cmd);
gotoXY(6,12);write ('DATE :');write(Commande.date_commande);
gotoXY(50,12);write ('HEURE :');;write(timetostr(commande.heure_commande));
gotoXY(65,6);WRITE('/',n-1);
with commande do begin
gotoxy(21,6);write(code_vendeur);
with le_client do begin
gotoxy(21,8);write(num_tel);
gotoxy(60,8);write(nom);
gotoxy(21,10);write(adresse);
for i := 1 to commande_client.nb_de_pizza-1 do begin
gotoxy(7,20+i);
write(commande_client.les_pizzas[i].code);
gotoxy(19,20+i);
write(commande_client.les_pizzas[i].quantite);
gotoxy(35,20+i);
write(commande_client.les_pizzas[i].libelle);
gotoxy(61,20+i);
write(commande_client.les_pizzas[i].prix:0:2);
gotoxy( 60,43);writeln(prix_total:0:2);
end{for};
end {with le_client};
end{with commande};
end{afficher_commande};
procedure sous_menuR;
var rep : char;
label labas;
begin
labas:
a_faire('1-Recherche 2- 3- 4- 5- 6-mEnu');
rep := readkey;
case upcase(rep) of
'1','R',#13 : rechercher_commande;
'6','E' : menu;
else goto labas;
end;
end{sous_menu};
procedure sous_menuS;
var rep : char;
label labas;
begin
labas:
a_faire('1-Creer 2- 3- 4- 5- 6-mEnu');
rep := readkey;
case upcase(rep) of
'1','C',#13 : saisir_commande(com);
'6','E' : menu;
else goto labas;
end;
end{sous_menuS};
procedure rechercher_commande;
var
num,n : cardinal;
reponse : char;
numero : string;
label ici, labas;
begin
ici: efface_ecran;
n:=nb_total_commande(file_commande);
fiche_vide0;
repeat
gotoXY(60,6);write(' ');
gotoXY(60,6);readln(numero);
if (numero=('q')) or (numero=('Q')) then
BEGIN
sous_menuR;
exit ;
end;
until est_valable(numero);
charger(50,10,13);
if numero='' then
num:=1
else
num:=strtoint(numero);
if (num < n) AND (num>0) then begin
afficher_commande(num);
end else begin
gotoxy(10,12);write(' ');
gotoxy(10,13);write(' ');
gotoxy(10,14);write(' ');
gotoxy(10,15);write(' ');
gotoxy(10,13);write('Ce numero de commande n''existe pas !!!');
BEGIN
sous_menuR;
exit;
end;
end {if};
labas:
a_faire('1-Recherche 2-Modifier 3-Annuler 4-Precedente 5-Suivante 6-mEnu');
reponse := readkey;
case upcase(reponse) of
'1','R',#13 : goto ici;
'2','M' : modifier_commande(num);
'3','A' : annuler_commande(num);
'4','P' : commande_precedente(num);
'5','S' : commande_suivante(num);
'6','E' : menu;
else goto labas;
end;
end {rechercher_commande};
procedure recherche_par_date;
type recherche = record
date : string;
debut:integer;
fin :integer;
end{record};
type T_recherche = array of recherche;
var commande : T_commande;
search : recherche;
tab_rech: T_recherche;
i,j : integer;
begin
i:=0;
j:=0;
assign(objet,file_commande);
reset(objet);
if filesize(objet)<>0 then
begin
seek(objet,0);
read(objet,commande);
search.date:=commande.date_commande;
search.debut:=i+1;
while not eof(objet) do begin
if commande.date_commande=search.date then begin
read(objet,commande);
inc(i);
end else begin
search.fin:=i;
setlength(tab_rech,j+1);
tab_rech[high(tab_rech)]:=search;
inc(i);
inc(j);
search.debut:=i;
read(objet,commande);
search.date:=commande.date_commande;
end;
end{while};
close(objet);
end;
for j:=low(tab_rech) to high(tab_rech) do begin
if (j+1) mod 10 = 0 then
begin
write('Appuyer sur Enter pour voir la suite....');
readln;
end{if};
with tab_rech[j] do begin
writeln('Pour la date du ',date,' les commandes sont comprises entre');
writeln('le N° ',debut,' et N° ',fin);
writeln;
writeln('-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+');
End {with};
end{for};
end{recherche_par_date};
procedure menu ;
var
choix : char;
label ici;
begin
ici:
efface_ecran;
un_rectangle(1,1,50,27);
un_rectangle(1,1,50,7);
gotoxy(1,7);write(#204);
gotoxy(50,7);write(#185);
gotoxy(22,4);write('M E N U');
gotoxy(2,2);write('DATE : ',datetostr(date));
gotoxy(34,2);write('HEURE : ',timetostr(time));
gotoxy(3,9);write('1 - (S)AISIR COMMANDE');
gotoxy(3,11);write('2 - (R)ECHERCHER UNE COMMANDE');
gotoxy(3,13);write('3 - (D)ECAISSER VENDEUR');
gotoxy(3,15);write('4 - (J)OURNAL');
gotoxy(3,17);write('5 - (I)NITIALISATION FICHIER');
gotoxy(3,19);write('6 - (C)REER PRODUIT');
gotoxy(3,21);write('7 - (P)IZZAS A FAIRE');
gotoxy(3,23);write('8 - (Q)UITTER');
gotoxy(10,26);write('VOTRE CHOIX ? [1,2,3,4,5,6,7,8]');
choix := readkey;
case upcase(choix) of
'1','S',#13 : saisir_commande(com);
'2','R' : rechercher_commande ;
'3','D' : decaisser_vendeur;
'4','J' : journal;
'5','I' : initialisation;
'6','C' : ajouter_produit;
'7','P' : pizza_a_faire;
'8','Q' : exit;
else
begin
efface_ecran;
gotoxy(5,21);write('Choisir entre [1,2,3,4,5,6,7,8] !');
sleep(2000);
goto ici;
end;
end;{case}
end {menu};
procedure decaisser_vendeur;
var i,j : byte;
montant_du : real;
reponse : char;
com : T_les_commandes;
num : string[4];
label ici, labas;
begin
com := lire_les_commandes_du_jour(datetostr(date));
ici: efface_ecran;
fiche_encaissement;
j:=0;
montant_du :=0;
gotoXY(22,13);write('Entrer le code du vendeur : ');
repeat
gotoXY(50,13);readln(num);
until num<>'';
for i:=0 to com.nb_commande do begin
if num = com.les_commandes[i].code_vendeur then begin
gotoxy(8,21+j);write(i);
gotoxy(13,21+j);write(com.les_commandes[i].le_client.num_tel);
gotoxy(26,21+j);write(com.les_commandes[i].le_client.nom);
gotoxy(36,21+j);write(com.les_commandes[i].le_client.adresse);
gotoxy(62,21+j);write(com.les_commandes[i].prix_total:0:2);
gotoXY(71,21+j);write(TIMEtostr(com.les_commandes[i].heure_commande));
montant_du:=montant_du+com.les_commandes[i].prix_total;
inc(j);
end{if};
end {for};
gotoXY(12,58);write('Montant total encaisse par le vendeur ',num,' est : ');
gotoXY(62,58);write(montant_du:0:2);
labas:
gotoxy(30,61);write('1-Decaisser 2-Menu');
reponse := readkey;
case upcase(reponse) of
'1','D',#13 : goto ici;
'2','M' : menu;
else goto labas;
end{case};
end{decaisser_vendeurs};
procedure pizza_a_faire;
VAR
t : T_les_commandes;
i,j,k : integer;
begin
repeat
k:=0;
efface_ecran;
un_rectangle(5,18,50,60);
un_rectangle(5,20,50,60);
un_rectangle(12,18,24,60);
un_rectangle(35,18,50,60);
gotoXY(6,19);write('Qte');
gotoXY(15,19);write('Code') ;
gotoXY(25,19);write('Num Commande');
gotoXY(40,19);write('Duree');
t:=lire_les_commandes_du_jour(datetostr(date));
for j:=0 to t.nb_commande do begin
for i:=1 to t.les_commandes[j].le_client.commande_client.nb_de_pizza-1 do begin
t := lire_les_commandes_du_jour(datetostr(date));
gotoXY(8,21+k);write(t.les_commandes[j].le_client.commande_client.les_pizzas[i].quantite);
gotoXY(17,21+k);write(t.les_commandes[j].le_client.commande_client.les_pizzas[i].code);
gotoXY(38,21+k);write(timetostr(time-t.les_commandes[j].heure_commande));
inc(k);
end{for};
end{for};
gotoXY(50,60);write('1-Actualiser 2-Menu');
until (readkey='M') OR (readkey='m') OR (readkey='2');
menu;
end{pizza_a_faire};
end.
Conclusion
merci à Mina Diarra qui m'a aidé à créer ce logiciel.
Historique
- 29 juin 2005 04:57:15 :
- correction d'un bug
- 29 juin 2005 15:30:30 :
- j'ai ajouté le fichier crt.dcu
- 30 juin 2005 03:58:56 :
- rajouter un code source.
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Connection et gestion de MySQL [ par SMoG ]
comment connecter mon executable a ma base de données mysql de chez free, en récupérant des informations ?SMoGhttp://ploofgames.free.fr/
Proprietes de gestion d'alimentation [ par Gysmo ]
Existe t'il une commande permettant de modifié les temps de mise en veille de l'ecran?Si oui lakel?!Merci
Un prog de gestion de vidéohtèque [ par biose ]
Et voilà un super soft pour gérer sa colleciton de DVD, DivX, VHS etc ... un programme de base de donnée écrit avec l'édition personnel !!! Son point
gestion d'erreur [ par Stephane ]
saluj'ai encor besoin de vos lumieres !voila, je suis en train de faire un client ftp avec nmftp, mais lorsque j'envoi une commande a celui-ci, si il
Gestion des espaces dans un nom de fichier ? [ par Fredelphi ]
Bonjour,Comment gère-t-on les espaces dans un nom de fichier ?Par exemple je veux créer ou renommer un fichier qui contient des espaces, ca ne marche
gestion des champs incrementé (help) [ par okeefe ]
voir mon topicça doit pas être trop dureAide
Création dynamique d'objet - Gestion des evenements [ par fram ]
Bonjour,Quelqu'un peut il me dire comment associer une procédure à un evenement d'un objet créé dynamiquement?Merci
Gestion l'heure et date en client et serverur [ par scorpion103 ]
Salut!!J?aimerais savoir comment travailler avec NMTime NMDayTime pour connaître l?heure et la date sur mon serveur et pour synchronisé (heure, da
Création de composant [ par Chong ]
Tout d'abord Merci beaucoup pour ceux qui m'ont répondu...je ne les nommerai pas discrétion.Voilà les mecs (frapading!), j'ai un autre soucciDans le b
logiciel de gestion [ par hanenlem ]
comment fait-on pour imprimer à l'aide d'un seul bouton une page ? càd le code derrière ?
|
Derniers Blogs
[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Arnault Nouvel et Antoine Dongois Le processus à prendre : Apprendre (découvrir la plateforme) Préparer (documenter l'historique et choisir la méthode de MAJ) Test (Test de MAJ) Implémenter (Effectuer la MAJ) Valid...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : LA PLEINIèRE DU SECOND JOURTECHDAYS PARIS 2010 : LA PLEINIèRE DU SECOND JOUR par ROMELARD Fabrice
Après un retour sur l'histoire des TechDays de Paris et le fait que ce soit le plus gros event MS au monde (du fait de sa gratuité), le président de MS France (Eric Boustoullier) a fait une présentation de la vision Microsoft pour les années à venir...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|