'Programme cr‚‚ par Micha‰l PERRIN (http://www.michaelperrin.fr.fm) monnaie$ = "FF" 'ENTREZ L'UNITE DE MONNAIE ICI (4 caractŠres au maximum). CLOSE SCREEN 0: CLS IF LEN(monnaie$) > 4 THEN PRINT "Erreur : l'unit‚ de monnaie contient plus de 4 caractŠres. Allez … la ligne 3 duprogramme.": END OPEN "c:\produit.dat" FOR BINARY AS #1 IF (LOF(1) / 78) - INT(LOF(1) / 78) <> 0 THEN COLOR 12 LOCATE 1, 32: PRINT "Erreur !" COLOR 7 LOCATE 3, 1: PRINT "Le fichier contenant les produits est endomag‚ (sa taille n'est pas valable)." PRINT "Cause : vous avez ‚dit‚ ce fichier." LOCATE 6, 1: INPUT "Voulez-vous supprimer ce fichier (c:\produit.dat) (o/n)"; a$ IF a$ = "o" THEN SHELL "del c:\produit.dat" ELSE LOCATE 9, 1: PRINT "Fermuture du programme.": CLOSE : END END IF CLOSE mainmenu: CLS COLOR 12 PRINT "Bonjour et bienvenue dans le programme de gestion de produits v1.1" PRINT "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ îîîî" COLOR 7 LOCATE 7, 10: PRINT "Que voulez-vous faire ?" LOCATE 9, 14: PRINT "1= Consulter un produit" LOCATE 10, 14: PRINT "2= Ajouter un produit … la liste actuelle" LOCATE 11, 14: PRINT "3= Modifier les propri‚t‚s d'un produit" LOCATE 12, 14: PRINT "4= Supprimer un produit" LOCATE 13, 14: PRINT "5= Consulter tous les produits actuels" LOCATE 14, 14: PRINT "6= Imprimer la liste de tous les produits" LOCATE 15, 14: PRINT "7= Quitter le programme" COLOR 14: LOCATE 21, 1: PRINT "Programme cr‚‚ par Micha‰l PERRIN" COLOR 10: PRINT "Site Web: http://www.michaelperrin.fr.fm" COLOR 9: PRINT "e-mail: mperrin@multimania.com" COLOR 7: LOCATE 17, 18: INPUT "Faites votre choix : ", abc abc = INT(abc) IF abc > 7 OR abc < 1 THEN GOTO mainmenu IF abc = 7 THEN CLS LOCATE 12, 12: INPUT "Etes-vous sur de vouloir quitter le programme (o/n) ? ", a$ IF a$ = "o" THEN END ELSE GOTO mainmenu END IF IF abc = 6 THEN CLS LOCATE 10, 10: COLOR 20: PRINT "VEUILLEZ ALLUMER VOTRE IMPRIMANTE !!!" LOCATE 11, 10: COLOR 4: PRINT "(appuyez sur une touche pour d‚marrer l'impression ou Echap pour annuler)" SLEEP 1 COLOR 7 att: a$ = INKEY$ IF a$ = CHR$(27) THEN CLOSE : GOTO mainmenu IF a$ = "" THEN GOTO att CLS LPRINT "Nom du produit ³Num‚ro ³Prix(" + monnaie$ + ")" + SPACE$(3 - LEN(monnaie$)) + " ³Nbr stock" LPRINT "ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄ" OPEN "c:\produit.dat" FOR BINARY AS #1 FOR t = 0 TO LOF(1) - 1 STEP 78 tt$ = "" jj$ = " " FOR i = 1 + t TO 40 + t GET #1, i, jj$ tt$ = tt$ + jj$ NEXT tt$ = tt$ + "³" FOR i = 41 + t TO 56 + t GET #1, i, jj$ tt$ = tt$ + jj$ NEXT tt$ = tt$ + "³" FOR i = 57 + t TO 66 + t GET #1, i, jj$ tt$ = tt$ + jj$ NEXT tt$ = tt$ + "³" FOR i = 67 + t TO 76 + t GET #1, i, jj$ tt$ = tt$ + jj$ NEXT LPRINT tt$ NEXT CLOSE GOTO mainmenu END IF IF abc = 2 THEN 0 : CLS COLOR 12: PRINT "Ajout d'un produit" PRINT "~~~~~~~~~~~~~~~~~~" COLOR 26: PRINT "Attention ! Toutes les lettres doivent ˆtre tap‚es en minuscules !" COLOR 14: PRINT "Si vous voulez quitter ce menu d'ajout de produit, taper "; CHR$(34); "quit"; CHR$(34) COLOR 7 LOCATE 6, 1: INPUT "Nom du produit (40 cara maxi) : ", nomp$ IF nomp$ = "quit" THEN GOTO mainmenu IF LEN(nomp$) > 40 THEN SOUND 440, 1 LOCATE 7, 1: PRINT "D‚sol‚ ! Le nom du produit ne doit pas d‚passer 40 caractŠres." SLEEP 1 LOCATE 7, 1: PRINT SPACE$(61) LOCATE 6, 31: PRINT SPACE$(49) GOTO 0 END IF a = 40 - LEN(nomp$) nomp$ = nomp$ + SPACE$(a) lon$ = SPACE$(40) OPEN "c:\produit.dat" FOR BINARY AS #1 FOR i = 1 TO LOF(1) GET #1, i, lon$ IF lon$ = nomp$ THEN EXIT FOR NEXT IF i <> LOF(1) + 1 AND LOF(1) <> 0 THEN SOUND 440, 1 LOCATE 7, 1: PRINT "Le nom du produit existe d‚j…" SLEEP 1 LOCATE 7, 1: PRINT SPACE$(29) CLOSE GOTO 0 END IF CLOSE 1 : LOCATE 8, 1: PRINT SPACE$(79) LOCATE 8, 1: INPUT "Num‚ro du produit (16 cara maxi) : ", nump$ IF nump$ = "quit" THEN GOTO mainmenu IF LEN(nump$) > 16 THEN SOUND 440, 1 LOCATE 9, 1: PRINT "D‚sol‚ ! Le num‚ro du produit ne doit pas d‚passer 16 caractŠres." SLEEP 1 LOCATE 8, 1: PRINT SPACE$(65) LOCATE 9, 1: PRINT SPACE$(70) GOTO 1 END IF a = 16 - LEN(nump$) nump$ = nump$ + SPACE$(a) lon$ = SPACE$(16) OPEN "c:\produit.dat" FOR BINARY AS #1 FOR i = 41 TO LOF(1) STEP 78 GET #1, i, lon$ IF lon$ = nump$ THEN EXIT FOR NEXT IF i <> LOF(1) + 41 AND LOF(1) <> 0 THEN SOUND 440, 1 LOCATE 9, 1: PRINT "Le num‚ro du produit existe d‚j…" SLEEP 1 LOCATE 9, 1: PRINT SPACE$(32) LOCATE 8, 35: PRINT SPACE$(45) CLOSE GOTO 1 END IF CLOSE 2 : LOCATE 10, 1: INPUT "Prix du produit (n'entrez que le prix ex: 1000 et non 1000.00 F) : ", prixp$ IF prixp$ = "quit" THEN GOTO mainmenu IF LEN(prixp$) > 10 THEN SOUND 440, 1 LOCATE 11, 1 PRINT "D‚sol‚ ! Le prix du produit ne doit pas d‚passer 10 caractŠres." SLEEP 1 LOCATE 11, 1: PRINT SPACE$(63) LOCATE 10, 68: PRINT SPACE$(12) GOTO 2 END IF 3 : LOCATE 12, 1: INPUT "Quantit‚ en stock : ", qts$ IF qts$ = "quit" THEN GOTO mainmenu IF LEN(qts$) > 10 THEN SOUND 440, 1 LOCATE 13, 1: PRINT "D‚sol‚ ! La quantit‚ en stock du produit ne doit pas d‚passer 10 caractŠres." SLEEP 1 LOCATE 13, 1: PRINT SPACE$(76) LOCATE 12, 20: PRINT SPACE$(60) GOTO 3 END IF LOCATE 15, 1: INPUT "Etes-vous s–r de toutes vos entr‚es (o/n) "; a$ IF a$ = "n" THEN GOTO 0 a = 10 - LEN(prixp$) prixp$ = prixp$ + SPACE$(a) a = 10 - LEN(qts$) qts$ = qts$ + SPACE$(a) all$ = nomp$ + nump$ + prixp$ + qts$ OPEN "c:\produit.dat" FOR APPEND AS #1 PRINT #1, all$ CLOSE GOTO mainmenu END IF IF abc = 3 THEN debmodif: CLS COLOR 12 PRINT "Modification d'un produit" PRINT "~~~~~~~~~~~~~~~~~~~~~~~~~" COLOR 7 LOCATE 4, 14: PRINT "Rechercher le produit par :" LOCATE 5, 18: PRINT "1= nom de produit" LOCATE 6, 18: PRINT "2= num‚ro de produit" LOCATE 7, 24: INPUT "Choix : ", af af = INT(af) IF af > 2 OR af < 1 THEN SOUND 440, 1: LOCATE 10, 1: PRINT "Faites le choix entre 1 et 2": SLEEP 2: LOCATE 10, 1: PRINT SPACE$(30): GOTO debmodif IF af = 1 THEN COLOR 26: LOCATE 11, 1: PRINT "Attention ! Toutes les lettres doivent ˆtre tap‚es en minuscules." COLOR 7: LOCATE 12, 1: INPUT "nom du produit : ", a$ ELSE LOCATE 12, 1: INPUT "Num‚ro du produit : ", a$ END IF IF af = 1 THEN lon$ = SPACE$(40) a = 40 - LEN(a$) a$ = a$ + SPACE$(a) ft = 1 ELSE lon$ = SPACE$(16) a = 16 - LEN(a$) a$ = a$ + SPACE$(a) ft = 41 END IF OPEN "c:\produit.dat" FOR BINARY AS #1 FOR i = ft TO LOF(1) STEP 78 GET #1, i, lon$ IF lon$ = a$ THEN EXIT FOR NEXT IF i = LOF(1) + ft THEN SOUND 440, 1 PRINT "Le produit n'a pas ‚t‚ trouv‚." SLEEP 2 CLOSE GOTO mainmenu ELSE nomp$ = SPACE$(40) nump$ = SPACE$(16) prixp$ = SPACE$(10) qts$ = SPACE$(10) IF af <> 1 THEN i = i - 40 GET #1, i, nomp$ GET #1, i + 40, nump$ GET #1, i + 56, prixp$ GET #1, i + 66, qts$ mainmodif: CLS COLOR 12 PRINT "Modification d'un produit" PRINT "~~~~~~~~~~~~~~~~~~~~~~~~~" COLOR 7 PRINT "1= modifier le nom (Attention : tapez en minuscules)" PRINT "2= modifier le num‚ro" PRINT "3= modifier le prix" PRINT "4= modifier la quantit‚ en stock" PRINT "5= retourner au menu principal" LOCATE 12, 1: PRINT "Nom actuel : "; nomp$ PRINT "Num‚ro actuel : "; nump$ PRINT "Prix actuel : "; prixp$ PRINT "Quantit‚ en stock actuelle : "; qts$ LOCATE 9, 6: INPUT "Faites votre choix : ", a a = INT(a) IF a < 1 OR a > 5 THEN GOTO mainmodif IF a = 5 THEN CLOSE : GOTO mainmenu IF a = 1 THEN a1: LOCATE 12, 14 PRINT SPACE$(65) LOCATE 12, 14 INPUT nomp$ IF LEN(nomp$) > 40 THEN SOUND 440, 1: LOCATE 20, 1: PRINT "D‚sol‚ ! Le nom du produit ne doit pas d‚passer 40 caractŠres.": SLEEP 1: LOCATE 20, 1: PRINT SPACE$(61): GOTO a1 a = 40 - LEN(nomp$) nomp$ = nomp$ + SPACE$(a) lon$ = SPACE$(40) FOR j = 1 TO LOF(1) STEP 78 GET #1, j, lon$ IF lon$ = nomp$ THEN EXIT FOR NEXT IF j <> LOF(1) + 1 THEN SOUND 440, 1 LOCATE 20, 1: PRINT "Le nom du produit existe d‚j…" SLEEP 1 LOCATE 20, 1: PRINT SPACE$(29) GOTO a1 END IF a = 40 - LEN(nomp$) nomp2$ = nomp$ + SPACE$(a) PUT #1, i, nomp2$ GOTO mainmodif END IF IF a = 2 THEN a2: LOCATE 13, 17 PRINT SPACE$(59) LOCATE 13, 17 INPUT nump$ IF LEN(nump$) > 20 THEN SOUND 440, 1: LOCATE 20, 1: PRINT "D‚sol‚ ! Le num‚ro du produit ne doit pas d‚passer 16 caractŠres.": SLEEP 1: LOCATE 20, 1: PRINT SPACE$(65): GOTO a2 a = 16 - LEN(nump$) nump$ = nump$ + SPACE$(a) lon$ = SPACE$(16) FOR j = 41 TO LOF(1) STEP 78 GET #1, j, lon$ IF lon$ = nump$ THEN EXIT FOR NEXT IF j <> LOF(1) + 41 THEN SOUND 440, 1 LOCATE 20, 1: PRINT "Le num‚ro du produit existe d‚j…" SLEEP 1 LOCATE 20, 1: PRINT SPACE$(33) GOTO a2 END IF a = 16 - LEN(nump$) nump2$ = nump$ + SPACE$(a) PUT #1, i + 40, nump2$ GOTO mainmodif END IF IF a = 3 THEN a3: LOCATE 14, 15 PRINT SPACE$(60) LOCATE 14, 15 INPUT prixp$ IF LEN(prixp$) > 10 THEN SOUND 440, 1: LOCATE 20, 1: PRINT "D‚sol‚ ! Le prix du produit ne doit pas d‚passer 10 caractŠres.": SLEEP 1: LOCATE 20, 1: PRINT SPACE$(63): GOTO a3 a = 10 - LEN(prixp$) prixp2$ = prixp$ + SPACE$(a) PUT #1, i + 56, prixp2$ GOTO mainmodif END IF IF a = 4 THEN a4: LOCATE 15, 30 PRINT SPACE$(45) LOCATE 15, 30 INPUT qts$ IF LEN(qts$) > 10 THEN SOUND 440, 1: LOCATE 20, 1: PRINT "D‚sol‚ ! La quantit‚ en stock du produit ne doit pas d‚passer 10 caractŠres.": SLEEP 1: LOCATE 20, 1: PRINT SPACE$(76): GOTO a4 a = 10 - LEN(qts$) qts2$ = qts$ + SPACE$(a) PUT #1, i + 66, qts2$ GOTO mainmodif END IF END IF CLOSE END IF IF abc = 1 THEN CLS COLOR 12 PRINT "Consultation d'un produit" PRINT "~~~~~~~~~~~~~~~~~~~~~~~~~" COLOR 7 LOCATE 4, 14: PRINT "Rechercher le produit par :" LOCATE 5, 18: PRINT "1= nom de produit" LOCATE 6, 18: PRINT "2= num‚ro de produit" LOCATE 7, 18: PRINT "3= retour au menu principal" mainconsul: LOCATE 9, 1: PRINT SPACE$(79) LOCATE 10, 1: PRINT SPACE$(79) LOCATE 8, 1: PRINT SPACE$(79) LOCATE 8, 24: INPUT "Choix : ", af af = INT(af) IF af > 2 OR af < 1 THEN GOTO mainmenu IF af = 1 THEN COLOR 26: LOCATE 9, 1: PRINT "Attention ! Toutes les lettres doivent ˆtre tap‚es en minuscules." COLOR 7: LOCATE 10, 1: INPUT "nom du produit : ", a$ ELSE LOCATE 10, 1: INPUT "Num‚ro du produit : ", a$ END IF IF af = 1 THEN lon$ = SPACE$(40) a = 40 - LEN(a$) a$ = a$ + SPACE$(a) ft = 1 ELSE lon$ = SPACE$(16) a = 16 - LEN(a$) a$ = a$ + SPACE$(a) ft = 41 END IF OPEN "c:\produit.dat" FOR BINARY AS #1 FOR i = ft TO LOF(1) STEP 78 GET #1, i, lon$ IF lon$ = a$ THEN EXIT FOR NEXT IF i = LOF(1) + ft THEN SOUND 440, 1 PRINT "Le produit n'a pas ‚t‚ trouv‚." SLEEP 2 CLOSE GOTO mainmenu ELSE nomp$ = SPACE$(40) nump$ = SPACE$(16) prixp$ = SPACE$(10) qts$ = SPACE$(10) IF af <> 1 THEN i = i - 40 GET #1, i, nomp$ GET #1, i + 40, nump$ GET #1, i + 56, prixp$ GET #1, i + 66, qts$ LOCATE 16, 1: PRINT SPACE$(79) PRINT SPACE$(79) PRINT SPACE$(79) PRINT SPACE$(79) LOCATE 13, 1: PRINT "Nom : "; nomp$ LOCATE 14, 1: PRINT "Num‚ro : "; nump$ LOCATE 15, 1: PRINT "Prix : "; prixp$ + monnaie$ LOCATE 16, 1: PRINT "Quantit‚ en stock : "; qts$ END IF CLOSE GOTO mainconsul END IF IF abc = 5 THEN CLS COLOR 12 LOCATE 1, 1: PRINT "Nom du produit" LOCATE 1, 41: PRINT CHR$(179) + "Num‚ro" LOCATE 1, 58: PRINT CHR$(179) + "Prix(" + monnaie$ + ")" LOCATE 1, 69: PRINT CHR$(179) + "Nbr stock" FOR an = 1 TO 80 jjj$ = jjj$ + CHR$(196) LOCATE 2, an: PRINT CHR$(196) NEXT LOCATE 2, 41: PRINT CHR$(197) LOCATE 2, 58: PRINT CHR$(197) LOCATE 2, 69: PRINT CHR$(197) FOR ff = 3 TO 22 LOCATE ff, 41: PRINT CHR$(179) LOCATE ff, 58: PRINT CHR$(179) LOCATE ff, 69: PRINT CHR$(179) NEXT COLOR 7 nomp$ = SPACE$(40) nump$ = SPACE$(16) prixp$ = SPACE$(10) qts$ = SPACE$(10) k = 1: kl = 0 OPEN "c:\produit.dat" FOR BINARY AS #1 FOR j = 1 TO LOF(1) STEP 78 GET #1, j, nomp$ GET #1, j + 40, nump$ GET #1, j + 56, prixp$ GET #1, j + 66, qts$ LOCATE (j - 1) / 78 + 4 - k, 1: PRINT nomp$ LOCATE (j - 1) / 78 + 4 - k, 42: PRINT nump$ LOCATE (j - 1) / 78 + 4 - k, 59: PRINT prixp$ LOCATE (j - 1) / 78 + 4 - k, 70: PRINT qts$ IF (j - 1) / 78 + 4 - k > 21 THEN LOCATE 23, 1 COLOR 13 PRINT "Suite de la liste : n'importe quelle touche. Menu principal : Esc." COLOR 7 attente: a$ = INKEY$ IF a$ = CHR$(27) THEN CLOSE : GOTO mainmenu IF a$ <> "" THEN k = k + 20: kl = 1 IF kl = 0 THEN GOTO attente ELSE kl = 0 FOR azer = 3 TO 22 LOCATE azer, 1 PRINT SPACE$(80) NEXT COLOR 12 FOR ff = 3 TO 22 LOCATE ff, 41: PRINT CHR$(179) LOCATE ff, 58: PRINT CHR$(179) LOCATE ff, 69: PRINT CHR$(179) NEXT COLOR 7 END IF END IF NEXT LOCATE 23, 1: PRINT SPACE$(79) LOCATE 23, 1: COLOR 13: PRINT "appuyez sur une touche pour retourner au menu principal" COLOR 7 DO LOOP UNTIL INKEY$ <> "" CLOSE GOTO mainmenu END IF IF abc = 4 THEN mainsuppr: CLS COLOR 12 PRINT "Suppression d'un produit" PRINT "~~~~~~~~~~~~~~~~~~~~~~~~" COLOR 7 LOCATE 4, 14: PRINT "Rechercher le produit par :" LOCATE 5, 18: PRINT "1= nom de produit" LOCATE 6, 18: PRINT "2= num‚ro de produit" LOCATE 7, 18: PRINT "3= retour au menu principal" LOCATE 8, 24: INPUT "Choix : ", af af = INT(af) IF af > 2 OR af < 1 THEN GOTO mainmenu IF af = 1 THEN COLOR 26: LOCATE 9, 1: PRINT "Attention ! Toutes les lettres doivent ˆtre tap‚es en minuscules." COLOR 7: LOCATE 10, 1: INPUT "nom du produit : ", a$ ELSE LOCATE 10, 1: INPUT "Num‚ro du produit : ", a$ END IF IF af = 1 THEN lon$ = SPACE$(40) a = 40 - LEN(a$) a$ = a$ + SPACE$(a) ft = 1 ELSE lon$ = SPACE$(16) a = 16 - LEN(a$) a$ = a$ + SPACE$(a) ft = 41 END IF OPEN "c:\produit.dat" FOR BINARY AS #1 FOR i = ft TO LOF(1) STEP 78 GET #1, i, lon$ IF lon$ = a$ THEN EXIT FOR NEXT IF i = LOF(1) + ft THEN SOUND 440, 1 PRINT "Le produit n'a pas ‚t‚ trouv‚." SLEEP 2 CLOSE GOTO mainmenu ELSE nomp$ = SPACE$(40) nump$ = SPACE$(16) prixp$ = SPACE$(10) qts$ = SPACE$(10) IF af <> 1 THEN i = i - 40 GET #1, i, nomp$ GET #1, i + 40, nump$ GET #1, i + 56, prixp$ GET #1, i + 66, qts$ LOCATE 13, 1: PRINT "Nom : "; nomp$ LOCATE 14, 1: PRINT "Num‚ro : "; nump$ LOCATE 15, 1: PRINT "Prix : "; prixp$ LOCATE 16, 1: PRINT "Quantit‚ en stock : "; qts$ END IF LOCATE 18, 10: INPUT "Etes-vous s–r de vouloir supprimer ce produit (o/n) "; a$ IF a$ = "o" THEN OPEN "c:\temp.dat" FOR BINARY AS #2 ag$ = " " PRINT "Veuillez patienter" FOR ff = 1 TO i - 1 GET #1, ff, ag$ PUT #2, ff, ag$ NEXT FOR ff = i + 78 TO LOF(1) GET #1, ff, ag$ PUT #2, ff - 78, ag$ NEXT CLOSE SHELL "del c:\produit.dat" SHELL "ren c:\temp.dat produit.dat" ELSE CLOSE COLOR 13: SOUND 440, 1: LOCATE 20, 1: PRINT "Le produit n'a pas ‚t‚ supprim‚" SLEEP 1 GOTO mainsuppr END IF GOTO mainmenu END IF