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 / Exemple :
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.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.