'=========================================================================== ' Subject: BUDGET V1.0 - MONEY MANAGER Date: 12-12-99 (18:52) ' Author: Remi Poulin Code: QB, QBasic, PDS ' Origin: kazzel@hotmail.com Packet: MISC.ABC '=========================================================================== ' ÚÄÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÄ¿ ' º Budget.bas º ' º Version 1.0 (1999) º ' º Programmed by Remi Poulin º ' ÀÄÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÄÙ fen = 1: ligne = 1: num = 1 ran = 1: ran2 = 1: a = 0: saute = 0 DIM da$(30), de$(30), se(30), mo(30), co$(30) ON ERROR GOTO trouble OPEN "budget.dat" FOR INPUT AS #1 IF erreur = 0 THEN INPUT #1, banque, salsem, salmoi, autre1, autre2 FOR i = 1 TO 30 INPUT #1, da$(i), de$(i), se(i), mo(i), co$(i) NEXT i ELSE READ banque, salsem, salmoi, autre1, autre2 FOR i = 1 TO 30 READ da$(i), de$(i), se(i), mo(i), co$(i) NEXT i END IF CLOSE #1 CLS SCREEN 0 LOCATE 1, 1, 0 PALETTE 15, 12 PALETTE 11, 10 COLOR 15, 0 PRINT "ÉÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»" PRINT "º"; : COLOR 11, 0: PRINT " Date "; : COLOR 15, 0: PRINT " º"; : COLOR 11, 0: PRINT " Expense "; : COLOR 15, 0: PRINT " º"; COLOR 11, 0: PRINT " Week "; : COLOR 15, 0: PRINT "º"; : COLOR 11, 0: PRINT " Month "; : COLOR 15, 0: PRINT "º"; : COLOR 11, 0: PRINT " Comment "; : COLOR 15, 0: PRINT " º" PRINT "ÌÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹" FOR i = 1 TO 13 PRINT "º ³ ³ ³ ³ "; : COLOR 7, 4: PRINT "°": COLOR 15, 0 NEXT i PRINT "ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ" PALETTE 2, 48 PALETTE 13, 28 COLOR 13, 0 PRINT "ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ"; : COLOR 0, 2: PRINT " Income "; : COLOR 13, 0: PRINT "ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ"; : COLOR 0, 2: PRINT " Expense "; : COLOR 13, 0: PRINT "ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»" FOR i = 1 TO 5 PRINT "º º º" NEXT i PRINT "ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ"; COLOR 0, 4: LOCATE 4, 80: PRINT "": LOCATE 16, 80: PRINT "" PALETTE 5, 32: LOCATE 25, 1: COLOR 7, 5 PRINT " Budget 1.0 "; : COLOR 11, 5: PRINT " ³"; : COLOR 7, 5: PRINT " F1"; : COLOR 11, 5: PRINT "-Help"; : COLOR 7, 5: PRINT " Enter"; : COLOR 11, 5: PRINT "-Modify "; : COLOR 7, 5: PRINT " Tab"; : COLOR 11, 5: PRINT "-Window "; COLOR 7, 5: PRINT "Direction "; : COLOR 11, 5: PRINT CHR$(27); CHR$(26); CHR$(24); CHR$(25); : COLOR 7, 5: PRINT " Esc"; : COLOR 11, 5: PRINT "-Quit "; GOSUB comptage ' ]---- D‚but -----[ bouge: FOR i = 1 TO 13 COLOR 12, 0: LOCATE 3 + i, 2: PRINT da$(i + a) COLOR 3, 0: LOCATE 3 + i, 10: PRINT de$(i + a) COLOR 6, 0: LOCATE 3 + i, 34 IF se(i + a) <> 0 THEN PRINT USING "#####.##"; se(i + a); : PRINT " " IF se(i + a) = 0 THEN PRINT " ----- " LOCATE 3 + i, 44 IF mo(i + a) <> 0 THEN PRINT USING "#####.##"; mo(i + a); : PRINT " " IF mo(i + a) = 0 THEN PRINT " ----- " COLOR 7, 0: LOCATE 3 + i, 54: PRINT co$(i + a) NEXT i COLOR 7, 0: LOCATE 19, 3: PRINT "Pay by week:"; : LOCATE 19, 30: COLOR 6, 0 IF salsem <> 0 THEN PRINT USING "######.##"; salsem; : PRINT " " IF salsem = 0 THEN PRINT " ------ " COLOR 7, 0: LOCATE 20, 3: PRINT "Pay by month:"; : LOCATE 20, 30: COLOR 6, 0 IF salmoi <> 0 THEN PRINT USING "######.##"; salmoi; : PRINT " " IF salmoi = 0 THEN PRINT " ------ " COLOR 7, 0: LOCATE 21, 3: PRINT "Other income by month:"; : COLOR 6, 0: LOCATE 21, 30 IF autre1 <> 0 THEN PRINT USING "######.##"; autre1; : PRINT " " IF autre1 = 0 THEN PRINT " ------ " COLOR 7, 0: LOCATE 22, 3: PRINT "Other money by month:"; : COLOR 6, 0: LOCATE 22, 30 IF autre2 <> 0 THEN PRINT USING "######.##"; autre2; : PRINT " " IF autre2 = 0 THEN PRINT " ------ " COLOR 7, 0: LOCATE 23, 3: PRINT "Total income by month:"; : LOCATE 23, 30: COLOR 6, 0 IF total <> 0 THEN PRINT USING "######.##"; total IF total = 0 THEN PRINT " ------ " COLOR 7, 0: LOCATE 19, 42: PRINT "Expense by week:"; : LOCATE 19, 70: COLOR 6, 0: PRINT USING "######.##"; se COLOR 7, 0: LOCATE 20, 42: PRINT "Total income by month:"; : LOCATE 20, 70: COLOR 6, 0 IF total <> 0 THEN PRINT USING "######.##"; total IF total = 0 THEN PRINT " ------ " COLOR 7, 0: LOCATE 21, 42: PRINT "Expense by month:"; : LOCATE 21, 70: COLOR 6, 0: PRINT USING "######.##"; mo COLOR 7, 0: LOCATE 22, 42: PRINT "Money left:"; : LOCATE 22, 69: COLOR 6, 0: PRINT USING "#######.##"; total - mo COLOR 7, 0: LOCATE 23, 42: PRINT "Money in Bank:"; : LOCATE 23, 69: COLOR 6, 0 IF banque <> 0 THEN PRINT USING "#######.##"; banque; : PRINT " " IF banque = 0 THEN PRINT " ------ " IF fen = 1 THEN COLOR 0, 7 IF ran = 1 THEN posi = 2: LOCATE 3 + ligne, posi: PRINT da$(num) IF ran = 2 THEN posi = 10: LOCATE 3 + ligne, posi: PRINT de$(num) IF ran = 3 THEN posi = 34 LOCATE 3 + ligne, posi IF se(num) <> 0 THEN PRINT USING "#####.##"; se(num); : PRINT " " IF se(num) = 0 THEN PRINT " ----- " END IF IF ran = 4 THEN posi = 44 LOCATE 3 + ligne, posi IF mo(num) <> 0 THEN PRINT USING "#####.##"; mo(num); : PRINT " " IF mo(num) = 0 THEN PRINT " ----- " END IF IF ran = 5 THEN posi = 54: LOCATE 3 + ligne, posi: PRINT co$(num) END IF IF fen = 2 THEN COLOR 0, 7 IF ran2 = 1 THEN LOCATE 19, 30 IF salsem <> 0 THEN PRINT USING "######.##"; salsem; : PRINT " " IF salsem = 0 THEN PRINT " ------ " END IF IF ran2 = 2 THEN LOCATE 20, 30 IF salmoi <> 0 THEN PRINT USING "######.##"; salmoi; : PRINT " " IF salmoi = 0 THEN PRINT " ------ " END IF IF ran2 = 3 THEN LOCATE 21, 30 IF autre1 <> 0 THEN PRINT USING "######.##"; autre1; : PRINT " " IF autre1 = 0 THEN PRINT " ------ " END IF IF ran2 = 4 THEN LOCATE 22, 30 IF autre2 <> 0 THEN PRINT USING "######.##"; autre2; : PRINT " " IF autre2 = 0 THEN PRINT " ------ " END IF END IF IF fen = 3 THEN COLOR 0, 7: LOCATE 23, 69 IF banque <> 0 THEN PRINT USING "#######.##"; banque; : PRINT " " IF banque = 0 THEN PRINT " ------ " END IF continue: x$ = INKEY$: IF x$ = "" THEN GOTO continue IF MID$(x$, 2, 1) = "P" AND fen = 1 THEN IF a < 17 AND ligne = 13 THEN a = a + 1 num = num + 1: IF num > 30 THEN num = 30: saute = 1 ligne = ligne + 1: IF ligne = 14 THEN ligne = 13 END IF IF MID$(x$, 2, 1) = "H" AND fen = 1 THEN IF a > 0 AND ligne = 1 THEN a = a - 1 num = num - 1: IF num < 1 THEN num = 1: saute = 1 ligne = ligne - 1: IF ligne < 1 THEN ligne = 1 END IF IF MID$(x$, 2, 1) = "M" AND fen = 1 THEN ran = ran + 1 IF ran = 6 THEN ran = 5: saute = 1 END IF IF MID$(x$, 2, 1) = "K" AND fen = 1 THEN ran = ran - 1 IF ran = 0 THEN ran = 1: saute = 1 END IF IF MID$(x$, 2, 1) = "P" AND fen = 2 THEN ran2 = ran2 + 1: IF ran2 = 5 THEN ran2 = 1 END IF IF MID$(x$, 2, 1) = "H" AND fen = 2 THEN ran2 = ran2 - 1: IF ran2 = 0 THEN ran2 = 4 END IF IF MID$(x$, 2, 1) = ";" THEN GOTO aide IF ASC(x$) = 9 THEN fen = fen + 1: IF fen = 4 THEN fen = 1 IF ASC(x$) = 27 THEN GOTO save IF ASC(x$) = 13 THEN GOTO enter IF saute = 1 THEN saute = 0: GOTO continue GOTO bouge enter: changer = 0 new$ = "" av = 0 COLOR 7, 1 IF fen = 1 THEN LOCATE 3 + ligne, posi IF ran = 1 THEN lim = 6: PRINT da$(num) IF ran = 2 THEN lim = 22: PRINT de$(num) IF ran = 3 THEN lim = 8: PRINT USING "#####.##"; se(num); : PRINT " " IF ran = 4 THEN lim = 8: PRINT USING "#####.##"; mo(num); : PRINT " " IF ran = 5 THEN lim = 25: PRINT co$(num) LOCATE 3 + ligne, posi + 1, 1 END IF IF fen = 2 THEN lim = 9 LOCATE 18 + ran2, 30 IF ran2 = 1 THEN PRINT USING "######.##"; salsem; : PRINT " " IF ran2 = 2 THEN PRINT USING "######.##"; salmoi; : PRINT " " IF ran2 = 3 THEN PRINT USING "######.##"; autre1; : PRINT " " IF ran2 = 4 THEN PRINT USING "######.##"; autre2; : PRINT " " LOCATE 18 + ran2, 31, 1 END IF IF fen = 3 THEN lim = 10 LOCATE 23, 69 PRINT USING "#######.##"; banque; : PRINT " " LOCATE 23, 70, 1 END IF enter2: x$ = INKEY$: IF x$ = "" THEN GOTO enter2 IF MID$(x$, 2, 1) <> "" THEN GOTO enter2 IF ASC(x$) = 10 OR ASC(x$) = 12 OR ASC(x$) = 30 OR ASC(x$) = 31 OR ASC(x$) = 9 OR ASC(x$) = 29 OR ASC(x$) = 7 OR ASC(x$) = 11 THEN GOTO enter2 IF ASC(x$) = 34 OR ASC(x$) = 26 THEN GOTO enter2 IF ASC(x$) = 13 THEN LOCATE , , 0: GOSUB change: GOSUB comptage: GOTO bouge IF ASC(x$) = 8 AND av = 0 THEN GOTO enter2 IF fen = 1 AND av = 0 THEN PRINT STRING$(lim - 1, " "): LOCATE 3 + ligne, posi + 1, 1 IF fen = 2 AND av = 0 THEN PRINT STRING$(lim - 1, " "): LOCATE 18 + ran2, 31, 1 IF fen = 3 AND av = 0 THEN PRINT STRING$(lim - 1, " "): LOCATE 23, 70, 1 IF ASC(x$) = 8 AND fen = 1 THEN av = av - 1: new$ = LEFT$(new$, LEN(new$) - 1): LOCATE 3 + ligne, posi + 1 + av, 1: PRINT " "; : LOCATE 3 + ligne, posi + 1 + av, 1 IF ASC(x$) = 8 AND fen = 2 THEN av = av - 1: new$ = LEFT$(new$, LEN(new$) - 1): LOCATE 18 + ran2, 31 + av, 1: PRINT " "; : LOCATE 18 + ran2, 31 + av, 1 IF ASC(x$) = 8 AND fen = 3 THEN av = av - 1: new$ = LEFT$(new$, LEN(new$) - 1): LOCATE 23, 70 + av, 1: PRINT " "; : LOCATE 23, 70 + av, 1 IF ASC(x$) = 8 THEN GOTO enter2 av = av + 1: changer = 1 IF av < lim THEN PRINT x$; : new$ = new$ + x$ IF av = lim THEN av = av - 1 IF fen = 1 AND ran = 1 AND av = 2 THEN PRINT "-"; : new$ = new$ + "-": av = 3 GOTO enter2 change: IF changer = 1 AND new$ = "" THEN new$ = " " IF fen = 1 AND new$ <> "" THEN IF ran = 1 THEN IF VAL(MID$(new$, 1, 2)) > 0 AND VAL(MID$(new$, 1, 2)) < 32 AND MID$(new$, 3, 1) = "-" AND VAL(MID$(new$, 4, 2)) > 0 AND VAL(MID$(new$, 4, 2)) < 32 THEN da$(num) = " " + new$ + " " ELSE da$(num) = " ----- " END IF IF VAL(MID$(da$(num), 2, 1)) = 0 AND MID$(da$(num), 2, 1) <> "0" THEN da$(num) = " ----- " IF VAL(MID$(da$(num), 3, 1)) = 0 AND MID$(da$(num), 3, 1) <> "0" THEN da$(num) = " ----- " IF VAL(MID$(da$(num), 5, 1)) = 0 AND MID$(da$(num), 5, 1) <> "0" THEN da$(num) = " ----- " IF VAL(MID$(da$(num), 6, 1)) = 0 AND MID$(da$(num), 6, 1) <> "0" THEN da$(num) = " ----- " END IF IF ran = 2 THEN de$(num) = " " + new$ + STRING$(22 - LEN(new$), " ") IF ran = 3 THEN IF VAL(new$) < 10000 THEN se(num) = VAL(new$) IF VAL(new$) < 0 OR VAL(new$) > 9999.99 THEN se(num) = 0 END IF IF ran = 4 THEN IF VAL(new$) < 10000 THEN mo(num) = VAL(new$) IF VAL(new$) < 0 OR VAL(new$) > 9999.99 THEN mo(num) = 0 END IF IF ran = 5 THEN co$(num) = " " + new$ + STRING$(25 - LEN(new$), " ") END IF IF fen = 2 AND new$ <> "" THEN IF ran2 = 1 THEN IF VAL(new$) >= 0 AND VAL(new$) < 100000 THEN salsem = VAL(new$) IF VAL(new$) < 0 OR VAL(new$) > 99999.99 THEN salsem = 0 END IF IF ran2 = 2 THEN IF VAL(new$) >= 0 AND VAL(new$) < 100000 THEN salmoi = VAL(new$) IF VAL(new$) < 0 OR VAL(new$) > 99999.99 THEN salmoi = 0 END IF IF ran2 = 3 THEN IF VAL(new$) >= 0 AND VAL(new$) < 100000 THEN autre1 = VAL(new$) IF VAL(new$) < 0 OR VAL(new$) > 99999.99 THEN autre1 = 0 END IF IF ran2 = 4 THEN IF VAL(new$) >= 0 AND VAL(new$) < 100000 THEN autre2 = VAL(new$) IF VAL(new$) < 0 OR VAL(new$) > 99999.99 THEN autre2 = 0 END IF END IF IF fen = 3 AND new$ <> "" THEN IF VAL(new$) >= 0 AND VAL(new$) <= 999999 THEN banque = VAL(new$) ELSE banque = 0 END IF END IF RETURN comptage: total = salmoi + autre1 + autre2 se = 0: mo = 0 FOR i = 1 TO 30: se = se + se(i): NEXT i FOR i = 1 TO 30: mo = mo + mo(i): NEXT i RETURN DATA 5000,250,1000,0,20 DATA " 01-02 "," Bourse ",5.9,23.6, " For rich people " DATA " ----- "," Insurance ", 0,25.92, " " DATA " 01-12 "," Ice Cream ", 4.4,17.6," Slush, Sunday, Twist " DATA " 15-07 "," Cinema ", 4.5, 18," " DATA " ----- "," Cellular Phone ",0,30.3, " " DATA " 04-01 "," Internet ", 9, 36, " It's fun " DATA " 31-12 "," Arcade ", 2,8," New game " DATA " 11-05 "," Page ",0,19.95," It's cheap " DATA " ----- "," Restaurant ", 16, 64," " DATA " ----- "," Bars ",0 , 6," " DATA " 08-08 "," Essence ", 20, 80," Super " DATA " 13-11 "," Food ", 70, 280," I am human " DATA " ----- "," Apartment ", 0, 300," " DATA " 07-04 "," Electricity ", 0, 100," " DATA " 11-05 "," Phone ", 0, 20," For call pizza " DATA " 05-07 "," Cable videotron ", 0, 21.00," " DATA " 11-10 "," Newspaper ", 0.75, 3, " Always bad news " DATA " 02-09 "," French book ",0,100, " I speak French " DATA " ----- "," Magazine ",3,12, " " DATA " 12-12 "," Food for cat ",0,50, " My cat is very big " DATA " ----- "," ",0,0, " " DATA " ----- "," ",0,0, " " DATA " ----- "," ",0,0, " " DATA " ----- "," ",0,0, " " DATA " ----- "," ",0,0, " " DATA " ----- "," ",0,0, " " DATA " ----- "," ",0,0, " " DATA " ----- "," ",0,0, " " DATA " ----- "," ",0,0, " " DATA " ----- "," ",0,0, " " aide: LOCATE 4, 20: COLOR 13, 0: PRINT "ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»" LOCATE 5, 20: PRINT "º"; : COLOR 14, 0: PRINT " Budget 1.0 (1999) by Remi Poulin"; : COLOR 13, 0: PRINT " º" LOCATE 6, 20: PRINT "ºÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ-º" LOCATE 7, 20: PRINT "º"; : COLOR 11, 0: PRINT " F1 "; : COLOR 13, 0: PRINT "-"; : COLOR 11, 0: PRINT " Show this help "; : COLOR 13, 0: PRINT " º" LOCATE 8, 20: PRINT "º"; : COLOR 11, 0: PRINT " Enter "; : COLOR 13, 0: PRINT "-"; : COLOR 11, 0: PRINT " Modify your data "; : COLOR 13, 0: PRINT " º" LOCATE 9, 20: PRINT "º"; : COLOR 11, 0: PRINT " Tab "; : COLOR 13, 0: PRINT "-"; : COLOR 11, 0: PRINT " Change window "; : COLOR 13, 0: PRINT " º" LOCATE 10, 20: PRINT "º"; : COLOR 11, 0: PRINT " Direction "; : COLOR 13, 0: PRINT "- "; : COLOR 11, 0: PRINT CHR$(27); CHR$(26); CHR$(24); CHR$(25); : COLOR 13, 0: PRINT " º" LOCATE 11, 20: PRINT "º"; : COLOR 11, 0: PRINT " Load "; : COLOR 13, 0: PRINT "-"; : COLOR 11, 0: PRINT " Load when you start "; : COLOR 13, 0: PRINT " º" LOCATE 12, 20: PRINT "º"; : COLOR 11, 0: PRINT " Save "; : COLOR 13, 0: PRINT "-"; : COLOR 11, 0: PRINT " Save when you quit "; : COLOR 13, 0: PRINT " º" LOCATE 13, 20: PRINT "º"; : COLOR 11, 0: PRINT " Esc "; : COLOR 13, 0: PRINT "-"; : COLOR 11, 0: PRINT " Quit and save your data "; : COLOR 13, 0: PRINT " º" LOCATE 14, 20: PRINT "ºÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ-º" LOCATE 15, 20: PRINT "º"; : COLOR 4, 0: PRINT " Press any key to continue "; : COLOR 13, 0: PRINT " º" LOCATE 16, 20: PRINT "ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ" z$ = INKEY$: IF z$ = "" THEN GOTO aide COLOR 15, 0 FOR z = 1 TO 13 LOCATE 3 + z, 20 PRINT " ³ ³ ³ " NEXT z GOTO bouge save: OPEN "budget.dat" FOR OUTPUT AS #1 WRITE #1, banque, salsem, salmoi, autre1, autre2 FOR i = 1 TO 30 WRITE #1, da$(i), de$(i), se(i), mo(i), co$(i) NEXT i CLOSE #1 COLOR 7, 0 CLS : PALETTE: END trouble: erreur = 1: 'BEEP RESUME NEXT