INTRODUCTION L’ordinateur est une machine électronique servant au traitement au

INTRODUCTION L’ordinateur est une machine électronique servant au traitement automatique et rationnel de l’information. Le besoin d’automatiser des tâches se fait de plus en plus ressentir et cela interpelle la communication entre l’Homme et l’ordinateur. Ce dernier ne comprend qu’un langage appelé langage machine dont le vocabulaire est constitué d’une suite de 0 et de 1 difficilement compréhensible par le commun des mortels. Ainsi pour simplifier cette communication, plusieurs langages conventionnels dits langage de programmation, parmi lesquels le Pascal, ont été créés, s’interposant entre l’Homme et la machine et qui par le biais d’un programme appelé compilateur traduit le langage naturel en langage machine compréhensible par l’ordinateur ; désormais l’homme peut instruire et ce de manière conviviale, l’ordinateur d’effectuer une série d’instructions finies, ordonnées, précises et non ambigus appelé programme. Comme nous le disions tantôt, le besoin d’automatiser les tâches devient de plus en plus crucial, par exemple pour une boutique dont le vendeur voudrait avoir un contrôle sur ses produits, effectué des ventes et de générer automatiquement des factures, se fait d’avantage ressentir dans un monde qui se modernise, d’où le projet porté à notre étude : Gestion d’un stock de 14 articles, vente et facturation. Pour se faire nous nous appuierons sur le langage de programmation turbo pascal et dans la suite il sera question pour nous de dresser le dossier algorithmique y référant notamment à travers l’énoncé du problème d’une part, d’autres part la description de la méthode de résolution et en fin la description de l’environnement de travail. I. ENONCE DU PROBLEME : Comme nous l’avons dit plutôt dans notre propos liminaire, il s’agit ici d’écrire un programme en langage turbo pascal qui effectue la vente puis ressort la facture dans un stock de 14 articles. II. LA METHODE DE RESOLUTION : Nous avons optés pour une notation mathématiques des opérations à effectuées, soient : Ai=article i (i allant de 1 à 14) ; V=vente =nombre total de pièces des Ai disponible après vente ; F=facture après vente =prix total des articles vendus Pi =prix unité de l’article Ai ; Ni=nombre total de pièce de Ai disponible ; Vi=nombre de pièces de Ai vendu ; Ainsi nous aurons le principe : V=σσ III. L’ENVIRONNEMENT DE TRAVAIL : Pour la résolution du problème posé, il s’est avéré important et indispensable pour nous de définir de nouveaux types dans lesquels certains de nos objets prendrons leur valeur, il s’agit notamment : type article=record {----designe un article----} nom:string[30]; nombre:integer; prix:integer; end; part=record{----designe le contenu substanciel d'une facture----} designation:string[255]; quantite:integer; prix_unite:integer; prix_total:integer; end; facture=record {----designe la facture des differents articles vendu----} numero:integer; client:string[30]; contenu:array[1..t]of part; net_payer:integer; vendeur:string[30]; end; liste_article=array[1..t]of article;{----stock des articles à vendre----} la définition des types prédéfinis étant faite, la listes des objets de même que leur quintessences, que nous utiliserons dans notre programme est résumée ainsi qu’il suit dans le tableau suivant: NOM TYPE NATURE SENS UTILISATION VALEUR INITIALE VALEUR FINALE T integer constante Taille de la liste des articles intermédiaire 14 14 I integer Variable Parcours de boucle intermédiaire / / J integer Variable Parcours de boucle intermédiaire / / K integer Variable Récupère l’index d’un élément dans un tableau intermédiaire / / Option char Variable Opère un choix et offre menu associé entrée / / L Liste_article Variable Stock des articles disponibles entrée / / F facture Variable Facture des articles vendus sortie / / Nom_article String[30] Variable Rechercher un nom d’article dans le stock des articles entrée / / Annee Word Variable Année du jour de vente sortie / / Mois Word Variable Mois du jour de vente Sortie / / Jour Word Variable Indice du jour de vente Sortie / / Joursem Word Variable Jour de vente Sortie / / Joursem2 String[30] Variable Jour de vente Sortie / / Heure Word Variable Heure de vente Sortie / / Minute Word Variable Minute de vente Sortie / / Seconde Word Variable Seconde de vente Sortie / / Centieme word Variable Centième de vente sortie / / a,b,c,d integer Variable Coordonnée d’une fenêtre : (a,b)=coordonnée s du coin superieur gauche ;(c,d)=coordo nnées du con inferieur droit. intermediaire / / c, l, c_a, n_l interval, l_a, n_c integer variable (c,l)=coordonnée de debut de ligne ou de colonne; C_a=colonne d’arrêt de ligne n_l=nombre de ligne ; interval=intervalle entre les lignes ou des colonnes intermédiaire / / l_a :ligne d’arrêt n_c=nombre de colonne V Array[1..t]o f part variable Liste des produits vendus intermediaire / / E integer variable Couleur de remplissage de la fenêtre intermédiaire / / Compt integer variable Nombre d’article vendu intermédiaire / / IV. CODE SOURCE : program projet_pascal; {----declaration des unités----} uses crt,dos;{----les unité crt pour la gestion de l'ecran et dos pour la gestion date et heure----} {----declaration des constantes----} const t=14; {----t designe le nombre d'article----} {----definition des types predefinis----} type article=record {----designe un article----} nom:string[30]; nombre:integer; prix:integer; end; part=record{----designe le contenu substanciel d'une facture----} designation:string[255]; quantite:integer; prix_unite:integer; prix_total:integer; end; facture=record {----designe la facture des differents articles vendu----} numero:integer; client:string[30]; contenu:array[1..t]of part; net_payer:integer; vendeur:string[30]; end; liste_article=array[1..t]of article;{----stock des articles à vendre----} {----declaration des variables locales----} var i,j,k:integer;{---i,j,k en general pour les parcours de boucle et k specialement pour localiser et recuperer une valeur---} option:char;{----pour operer des choix et en general pour aller d'un menu à un autre} l:liste_article; nom_article:string[30];{----pour rechercher un article dans le stock----} f:facture; annee,mois,jour,joursem,heure,minute,seconde,centieme:word;{-------------------------------------- -------------} joursem2:string[30]; {------ pour recuperer date et heure du système-----} {---------------------------------------------------} {--------------------------------------------------------------} {--------------------------------------------------------------} {-------------declaration procedure et fonction----------------} {--------------------------------------------------------------} {--------------------------------------------------------------} {------------------------------------} {----interface graphique bordure-----} {------------------------------------} procedure interface_principale; var i,j:integer; begin window(1,1,80,26); {cadre principal} gotoxy(1,1); write(chr(201)); for i:=2 to 79 do write(chr(205)); write(chr(187)); for i:=2 to 5 do writeln(chr(186)); gotoxy(80,1); for i:=2 to 5 do begin gotoxy(80,i); writeln(chr(186)); end; gotoxy(1,5); write(char(204)); for i:=2 to 79 do write(chr(205)); write(chr(185)); for i:=5 to 18 do writeln(chr(186)); gotoxy(80,5); for i:=6 to 19 do begin gotoxy(80,i); writeln(chr(186)); end; gotoxy(1,20); write(chr(204)); for i:=2 to 79 do write(chr(205)); write(chr(185)); for i:=20 to 23 do writeln(chr(186)); gotoxy(80,20); for i:=21 to 24 do begin gotoxy(80,i); writeln(chr(186)); end; gotoxy(1,25); write(chr(200)); for i:=2 to 79 do write(chr(205)); write(chr(188)); {premiere case} window(2,2,79,4); for i:=2 to 79 do for j:=2 to 4 do begin textbackground(9); write(' '); end; gotoxy(23,2); textcolor(10); write('***** GESTION DES ARTICLES *****'); {deuxieme case} window(2,6,79,19); for i:=2 to 79 do for j:=6 to 20 do begin textbackground(10); write(' '); end; {troisième case} window(2,21,79,24); for i:=2 to 79 do for j:=21 to 25 do begin textbackground(11); write(' '); end; end; {------------------------------------------} {----interface graphique menu principal----} {------------------------------------------} procedure menu_principal; begin window(1,26,80,57); clrscr; interface_principale; window(2,6,79,19); textbackground(4); textcolor(15); gotoxy(1,1); writeln('MENU PRINCIPAL'); textbackground(11); for i:=6 to 10 do begin gotoxy(25,i); textbackground(10); case i of 6:write('A- Afficher la liste des articles'); 8:write('B- Vente et facturation'); 10:write('C- Quitter l''application'); end; end; window(2,21,79,24); gotoxy(13,3); textbackground(11); write('Entrer votre choix:'); window(35,23,37,23); for i:=35 to 37 do begin textbackground(0); write(' '); gotoxy(2,2); end; end; {---------------------------------------} {--initialise en couleur case 2---------} {--------------------------------------} procedure init_case2; begin window(2,6,79,19); for i:=2 to 79 do for j:=6 to 20 do begin textbackground(10); write(' '); end; end; {---------------------------------------} {--initialise en couleur case 3--------} {--------------------------------------} procedure init_case3; begin window(2,21,79,24); for i:=2 to 79 do for j:=21 to 25 do begin textbackground(11); write(' '); end; end; {------------------------------------------------} {---procedure fenetre rectangulaire couleur------} {------------------------------------------------} procedure rectangulaire(a,b,c,d,e:integer); begin window(a,b,c,d); for i:=a to c do for j:=b to d do begin gotoxy(i,j); textbackground(e); write(' '); end; end; {-----------------------------------------------} {------interface menu vente article-------------} {-----------------------------------------------} procedure interface_vente(a:integer); begin init_case3; init_case2; textbackground(4); textcolor(15); gotoxy(1,1); write('MENU VENTE ET FACTURATION'); case a of 1:begin textbackground(10); gotoxy(4,4); write('client:');rectangulaire(13,9,30,11,0);window(2,6,79,19);textbackground(10); gotoxy(4,10); write('vendeur:');rectangulaire(13,14,30,16,0);window(2,6,79,19);textbackground(10); end; 2:begin textbackground(10); gotoxy(40,4); write('Article:');rectangulaire(50,9,68,11,0);window(2,6,79,19);textbackground(10); gotoxy(40,10); write('nombre:');rectangulaire(50,14,68,16,0);window(2,6,79,19); end; end; readln; end; {--------------------------------------------} {-----recherche article dans le stock--------} {--------------------------------------------} function recherche(nom_article:string):boolean; begin for i:=1 to t do begin if l[i].nom=nom_article then begin k:=i; recherche:=true; break; end else recherche:=false; end; end; {-------------------------------------------------------------------------------------} {----trace n_l lignes d'interval interval à partir de (c,l),jusqu'à la colonne c_a----} {-------------------------------------------------------------------------------------} procedure ligne(c,l,c_a,n_l,interval:integer); begin for i:=1 to n_l-l do begin gotoxy(c,l); for j:=1 to c_a-c do begin write(char(196)); gotoxy(c+j,l); end; l:=l+interval; end; end; {------------------------------------------------------------------------------------} {----trace n_c colonnes d'interval interval à partir de (c,l),jusqu'a la ligne l_a---} {------------------------------------------------------------------------------------} procedure colonne(c,l,l_a,n_c,interval:integer); begin for i:=1 to n_c-c do begin gotoxy(c,l); for j:=1 to l_a-l do begin write(char(179)); gotoxy(c,l+j); end; c:=c+interval; end; end; {----------------------------------------------------} {--------met à jour le stock apres vente-------------} {----------------------------------------------------} procedure actualiser_liste_article; begin rectangulaire(1,26,19,28,4); gotoxy(5,2); write('NUMERO'); rectangulaire(20,26,39,28,5); gotoxy(5,2); write('NOM'); rectangulaire(39,26,57,28,6); gotoxy(4,2); write('NOMBRE'); rectangulaire(58,26,77,28,10); gotoxy(6,2); write('PRIX'); textcolor(15); textbackground(0); window(1,29,80,140); ligne(1,1,78,16,2); colonne(1,1,30,6,19); for i:=1 to t do begin gotoxy(9,2*i); write(i); gotoxy(22,2*i); writeln(l[i].nom); gotoxy(42,2*i); for j:=1 to 12 do begin gotoxy(42+j,2*i); write(' '); end; gotoxy(42,2*i); writeln(l[i].nombre); gotoxy(62,2*i); writeln(l[i].prix); end; end; {------------------------------------------------} {----fonction qui teste si le stock est vide-----} {------------------------------------------------} function test_facture(p:facture):boolean; begin for i:=1 to t do begin if p.contenu[i].quantite<>0 then begin test_facture:=true; break; end else test_facture:=false; end; end; {-----------------------------------------------} {------procedure qui genère facture-------------} {-----------------------------------------------} procedure fiche_facture; var compt:integer; v: array[1..t]of part; begin window(1,26,80,140); textbackground(0); textcolor(15); gotoxy(2,2); writeln('I . A . I - CAMEROUN'); gotoxy(45,2); getdate(annee,mois,jour,joursem); case joursem of 0:begin joursem2:='dimanche' end; 1:begin joursem2:='lundi' end; 2:begin joursem2:='Mardi' end; 3:begin joursem2:='Mercredi' end; 4:begin joursem2:='Jeudi' end; 5:begin joursem2:='Vendredi' end; 6:begin joursem2:='Samedi' end; end; write(joursem2,' le ',jour,'/',mois,'/',annee,' '); gettime(heure,minute,seconde,centieme); write('A ',heure,'H',minute,'''',seconde,'"'); gotoxy(30,5); write('FACTURE numero ',f.numero); gotoxy(2,8); write('Mr(Mme): ',f.client); compt:=0; for uploads/Marketing/ projet-pascal.pdf

  • 37
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager
  • Détails
  • Publié le Jan 12, 2021
  • Catégorie Marketing
  • Langue French
  • Taille du fichier 0.4032MB