BÜTÇE

Bu ay madem ki şahsi kullanımlarınıza uygun programlar ile başladık, aynı şekilde devam edelim. Bu ayki ikinci programımız bir başka Amiga kullanıcısı Mehmet DEVELİOĞLU'ndan. Bütçenizi hesaplamak, aylara göre analiz yapmak ve grafiğini çizdirmek için rahatlıkla kullanabileceğiniz BÜTÇE programı, kendi yazacağınız programlarda da size kaynak teşkil edebilecek nitelikte. Programda kullanılan dosyalar, sequential olarak açılmıştır. Menü seçenekleri ile bilgi girişi yapılıp kaydedilen bütçe gider verileri, programın analiz bölümüne girilip harcama kalemi seçilerek analiz edilebilir, grafik bölümünde bar grafik olarak görülebilir. Analiz bölümünde, seçilen harcama kaleminin bir yıl içindeki aylık gelirlere oranı ve bir önceki ay yüzdesine göre artış ya da azalışı '+' ve '-' olarak gösterilmiştir. Kayıt okuma sırasında, istenen 'hangi ay' sorusunun yanıtı, diskete daha önce kaydedilen aylık veri içeren dosyanın ismi olmalıdır. Dosyalara istenen ismi vermek mümkün; 0, 1, Ocak, 01, OCAK 1990 gibi. Giriş esnasında, aylık net geliriniz de sorulacaktır. Girişlerde gerçek dışı veriler girilmesi ya da aylık gelirin aşılması durumunda program ana menüye dönecektir.

10 SCREEN 1,640,240,2,2 
20 WINDOW 2, "       B U T C E K O N T R O L      (C) COPYRIGHT 1989 BY MIDSOFT",16,1 
30 WINDOW OUTPUT 2 
40 DIM A(10),A$(10),AY$(12),AT(120),ANA(12),ATG(12) 
50 W=1 :WW=1 :TPL=0 
70ONERRORGOTO1540 
80 CHDIR "df0:":GOTO 1200 
100 REM ************ GIRIS *********** 
110CLS:GOSUB930 
130 FOR X=1 TO 10:READ A$(X):NEXT X:FOR X=1 TO 10:A(X)=0:NEXT X :TPL=0 
140 LOCATE 5,1:INPUT 'HANG AY :";AYY$:AYY$=UCASE$(AYY$):GOSUB 1060 
İ 
160 LOCATE 1,45:PRINT AYY$; 
180 FOR X=1 TO 9: LOCATE 5,1: PRINT " 
"; 
210 LOCATE 5,1 :PRINT A$(X);:INPUT :A(X) 
230 LOCATE 2+X,42:PRINT X;V*;A$(X);USING "#########.##" :A(X) 
250 TPL=TPL+A(X):LOCATE 14,40:PR NT " TOPLAM = 
M:TPL:
M GELİR = ":GELIR 
I
260 IF TPL>GELIR THEN GOTO 1600 
270 NEXT X 
275 A(10)=GELIR-TPL:LOCATE 12,42:PRINT "10 >";A$(10);USING "#########.##" :A( 10) 
280 Q$=INKEY$:IF Q$="" THEN 280 
285 RETURN 
290 REM **************** GRAFİK *************** 
300 CLS:FOR X=1 TO 10:READ A$(X):NEXT X 
330 DATA "KIRA        :","YAKIT       :","YIYECEK     :","GIYIM       :","ULASTIRMA   :","KIRTASIYE   :" 
340 DATA "EĞLENCE     :","S GLIK      :","DIGERLERI   :","TASARRUF   :" 
A
350 LOCATE 1,45:PRINT AY$ 
370 FOR X=1 TO 10:LOCATE 2+X,42 
390 PRINT X;">";A$(X);USING "#########.##" ;A(X):NEXT X 
410 LINE (14,160)-(15,10)„B 
420 LOCATE 21,1:PRINT "0":LOCATE 14,1:PRINT 
H5
M 
440 LOCATE 8,1:PRINT "10":LOCATE 2,1:PRINT 
W15
M 
460 LINE (15,160)-(475,161)„B 
470 LOCATE 22,1 :PRINT "    1   2 3 4 5 6 7 8 9 1 0" 
480 LOCATE 20,44:PRINT BOLM0;"._ TL OLARAK" 
490 REM ** BAR GRAFİK ICIN HESAPLAMALAR ** 
500 FOR X=1 TO 10:A1=A(X)/BOL 
520 FOR Y=1 TO A1:LINE (30*X,160-Y)-((30*X)+15,160-Y):NEXT Y 
550 LINE (30*X+25,160)-(30*X+25,155-A1) :REM *** dik uzun çizgi 
560 LINE (30*X+15,160-A1)-(30*X+25,155-A1) :REM sağdaki / 
570 LINE (30*X,160-A1)-(30*X+10,155-A1) :REM soldaki  /
580 LINE (30*X+10,155-A1)-(30*X+25,155-A1) :REM ust - 
590 NEXT X 
600 REM ****************** DEĞİŞTİRME *************** 
610 LOCATE 15,45:INPUT "DEĞİŞİM İSTİYOR MUSUNUZ? [E/H] ",C$:C$=UCASE$(C$) 
640 IF C$="H" OR C$="" THEN GOTO 1200 
650 LOCATE 16,46: INPUT "KA NO'LU MASRAF";M 
C
670 IF M<1 OR M>10 THEN 650 
680 LOCATE 17,45:PRINT "ESKİ DEĞERİ =";A(M) 
700 LOCATE 18,45:INPUT "YENİ DEĞER =";Y 
720 A(M)=Y:X=M:A1=Y/BOL:GOSUB 800 
760 LINE (350,105)-(620,150),0,BF:GOTO 610 
780 RESTORE 30 
3
810GOSUB900 
820 FOR Y=1 TO A1 :LINE (30*X,160-Y)-((30*X)+15,160-Y):NEXT Y 
850 ÜNE (30*X+25,160)-(30*X+25,155-A1) :REM *** dik uzun çizgi 
860 LINE (30*X+15,160-A1)-(30*X+25,155-A1) :REM sağdaki / 
870 LINE (30*X,160-A1)-(30*X+10,155-A1) :REM soldaki  /
880 LINE (30*X+10,155-A1)-(30*X+25,155-A1) :REM ust - 
890 RETURN 
910 LINE (30*X,159)-(30*X+25,1),0,BF:RETURN 
940 CLS:LOCATE 11,27:INPUT "AYLIK GELİRİNİZ =";GELIR 
970 IF GELİR >1500000000& THEN BOL=30000000&:GOTO 1030 
980 IF GELİR >150000000& THEN BOL=3000000&:GOTO 1030 
990 IF GELİR >15000000& THEN BOL=300000&:GOTO 1030 
1000 IF GELİR >1500000& THEN BOL=30000&:GOTO 1030 
1010 IF GELİR >150000& THEN BOL=3000:GOTO 1030 
1020BOL=300 
1040CLS:RETURN 
1050 FOR 0=1 TO 12 
1060 IF LEFT$(AY$(0),LEN(AYY$))=AYY$ THEN AY=0:NEXT O 
1190 RETURN 
1210 DATA OCAK,SUBAT,MART,NISAN,MAYIS,HAZIRAN,TEMMUZ 
1220 DATA AGUSTOS,EYLUL,EKIM,KASIM,ARALIK
1230 RESTORE 1210.FOR P=1 TO 12.READ AY$(P):NEXT P 
1240 CLS:RESTORE:LOCATE 5,1 :GOSUB 1650 
1250 ON S GOSUB 110,300,1420,1320,3000,1990 
1300 GOTO 1200 
1^10 REM *************** KAYIT ************* 
1330 OPEN AYY$ FOR OUTPUT AS #1 
1340 WRITE #1,BOL 
1350WRITE#1,GELIR 
1360 FOR X=1 TO 10:WRITE#1,A(X):NEXT X 
1390 CLOSE #1 
1400 RETURN 
1410 REM *************** OKUMA ************** 
1430 CLS.LOCATE 11, 0:INPUT "HANGI AY :";AYY$ 
3
1460 OPEN T\#1,AYY$ 
1470 INPUT #1,BOL 
1480 INPUT #1,GELIR 
1490 FOR X=1 TO 10.INPUT #1,A(X):NEXT X 
1520 CLOSE #1 
1530 RETURN 
1540 REM ************* HATA *********** 
1560 LOCATE 1,1:PRINT " HATA VAR !...
M:RESUME NEXT 
1570 IF (ERR=53) AND (ERL=3060) THEN RESUME NEXT 
1580 IF (ERR=53) AND (ERL=1460) THEN RESUME NEXT 
1610 LOCATE 22,45: PRINT "GELIRIN ZI ASTINIZ!..." 
I
1620 E$=INKEY$:IF E$="" THEN 1620 
1630 GOTO 1200 
1660 CLS:LINE (234,15)-(356,24)„B 
1680 LOCATE 3,31: PRINT " M I D S O F T " 
1700 LINE (175,30)-(413,40)„B 
1710 LOCATE 5,23: PRINT " WRITTEN BY MEHMET DEVELIOGLU" 
1730 LINE (175,45)-(413,97)„B 
1740 LOCATE 7,25:PRINT " 1> YENI GIRIS 
H 
1760 LOCATE 8,25:PRINT " 2> GRAFIK DOKUMU" 
1780 LOCATE 9,25:PRINT " 3> DISKTEN OKUMA" 
1800 LOCATE 10,25:PRINT " 4> DISKE KAYIT" 
1820 LOCATE 11,25:PRINT " 5> ANALIZ" 
1825 LOCATE 12,25:PRINT " 6> SON" 
1840 LINE (15,100)-(605,160)„B 
1850 LOCATE 15,3 
1860 PRINT " BU PROGRAM AYLIK HARCAMALARINIZI AYRI AYRI DOSYALAR HALINDE SAKLAR VE" 
1870 LOCATE 16,3 
1880 PRINT " ISTENDIGINDE DISKETTEN GERI CAGIRARAK ISTENILEN DEGISIKLIGI VEYA ANALIZ" 
1890 LOCATE 17,3 
1900 PRINT " YAPMA IMKANI VERIR " 
1910 LOCATE 20,3 
1920 PRINT " ADRES.NATO CADDESI TURKAY SOKAK YILDIZ AP. A.BLOK PK:2 38010 KAYSERI " 
1950 LINE (234,165)-(356,178)„B 
1960 LOCATE 22,43:PRINT " ":LOCATE 22,31 .PRINT "SECIMINIZ =" 
1970 LOCATE 22,43:PRINT "*":W$=INKEY$:IF W$=""THEN 1960 
1975 IF W$ < "1" OR W$ > "6" THEN 1960 
1980 S=VAL(W$):RETURN 
1990 REM * PROGRAMDAN CIKIS * 
2000 CHDIR "dfO:" 
2010 WINDOW CLOSE 2:WINDOW OUTPUT 1 -.SCREEN CLOSE 1 -.END 
3000 REM ****** ANALIZ BOLUMU ******* 
3001 CLS:RESTORE 3002:FOR X=1 TO 10:READ A$(X):NEXT X 
3002 DATA "KIRA","YAKIT","YIYECEK","GIYIM","ULASTIRMA","KIRTASIYE" 
3003 DATA "EGLENCE","SAGLIK","DIGERLERI","TASARRUF" 
3030 CLS:FOR X=1 TO 10:LOCATE 2+X,2 
3040 PRINT X;">";A$(X):NEXT X 
3050 PRINT .PRINT :PRINT -.INPUT "ANALIZI YAPILACAK GIDER TURUNUN NUMARASI = ",NUM 
3055 FOR S=1 TO 12 -.WINDOW OUTPUT 2 
3060 OPEN T',#1,AY
$(S)
3070 INPUT #1,BOL 
3080 INPUT #1,GELIR 
3090 FOR X=1 TO 10:INPUT #1,A(X):NEXT X 
3100 CLOSE #1 
3110ANA(S)=A(NUM):ATG(S)=GELIR:A(NUM)=0 
3120 NEXT S 
3130 CLS 
3131 SCREEN 1,640,240,2,2 
3132 WINDOW 2,"       B U T C E K O N T R O L     (C) COPYRIGHT 1989 BY MIDSOFT',,16,1 
3133 WINDOW OUTPUT 2 ::YUZDE1=0:YUTO=0 
3140 FOR C=1 TO 12 
3150 LOCATE (3+C),3 
3160 PRINT TAB(1) AY$ C);TAB(9) "ICIN";TAB(14) A$(NUM) 
(
3165 LOCATE (4+C),24 
3170 PRINT " GIDERI ";:PRINT USING "#########";ANA(C);:PRINT "._TL OLMUSTUR."; 
3172 IF ANA(C)=0 THEN ANA(C)=.00001 
3173 IF ATG(C)=0 THEN ATG(C)=1 
3174YUZDE=ANA(C)/ATG(C)*100:YUTO=YUTO+YUZDE 
3175 LOCATE (4+C),55:PRINT " AYLIK'A ORANI = %";:PRINT USING "###";YUZDE;:IF YUZDE>YUZDE1 THEN PRINT " 
+" ELSE PRINT " -" 
3190 YUZDE1=YUZDE -.NEXT C 
3195 YTG#=0:FOR T=1 TO 12:YTG#=YTG#+ATG(T):NEXT T 
3200 LOCATE 18,1 
3210 PRINT " YILLIK TOPLAM GELIRINIZ =";YTG#;"        ORTALAMA %=";:PRINT USING "###.#";YUTO/12 
3220 Q$=INKEY$:IF Q$="" THEN 3220 
3230 RETURN 
AMIGA DUNYASI93