home *** CD-ROM | disk | FTP | other *** search
- (* ----------------------------------------------------------------------- *)
- (* HAKAINC.PAS *)
- PROCEDURE Guthaben;
- BEGIN
- GotoXY(23,2); ClrEol; Invers;
- Write(' Guthaben : ',Guth:4:2,' DM '); Normal;
- END;
- (* ----------------------------------------------------------------------- *)
- PROCEDURE Eingabe (was : Stringtyp);
- CONST Fehlerton = ^G; (* ASCII Zeichen 'Bell' : CONTRL-G *)
- VAR y, kontroll: INTEGER;
- Preis : REAL;
- Eingabe : STRING[10];
- BEGIN
- Summe := 0; y := 4; ClrScr;
- GotoXY(9,1); ClrEol; GotoXY(9,1); Invers;
- Write(Blank,'Eingabe : ',was,' fuer Monat : ',Monat,Blank); Normal;
- Guthaben; GotoXY(promptx-6,prompty); Invers;
- Write(' Eingabe ',was,' beenden mit RETURN !'); Normal;
- REPEAT
- GotoXY(15,y); Write(y-3:2,' ........ : '); Preis := 0;
- REPEAT (* Eingabe ueberpruefen, es wird Punkt und Komma erkannt *)
- ReadLn(Eingabe);
- WHILE Pos(' ',Eingabe) > 0 DO (* loesche Leerzeichen in Eingabe *)
- Delete(Eingabe, Pos(' ',Eingabe), 1);
- IF Pos(',', Eingabe) > 0 THEN (* ersetze ',' durch '.' *)
- Eingabe[Pos(',', Eingabe)] := '.';
- Val(Eingabe,Preis,kontroll); (* wandle Eingabestring in Zahl um *)
- IF kontroll > 0 THEN BEGIN (* Eingabe ist keine korrekte Dezimalzahl *)
- Write(Fehlerton); Pause(200); Write(Fehlerton); Pause(1000);
- GotoXY(29,y); ClrEol;
- END;
- UNTIL kontroll = 0;
- Summe := Summe + Preis;
- Guth := Guth - Preis; (* Guthaben aktualisieren und anzeigen *)
- Guthaben; y := Succ(y);
- UNTIL (y = 19) OR (Preis = 0);
- ClrScr;
- END;
- (* ----------------------------------------------------------------------- *)
- PROCEDURE Einlesen;
- BEGIN
- key := GetKey;
- WHILE NOT(key IN ['L','T','I','A','P','K','W','B','F','D','H']) DO
- key := Error_c('Falsche Eingabe !');
- WITH Liste DO
- CASE key OF
- 'L' : BEGIN
- Eingabe('Lebensmittel'); SummeL := SummeL+Summe;
- END;
- 'T' : BEGIN
- Eingabe('Toilettenartikel'); SummeT := SummeT+Summe;
- END;
- 'I' : BEGIN
- Eingabe('Literatur'); SummeLit := SummeLit+Summe;
- END;
- 'A' : BEGIN
- Eingabe('Auto'); SummeKfz := SummeKfz+Summe;
- END;
- 'P' : BEGIN
- Eingabe('Post'); SummePost := SummePost+Summe;
- END;
- 'K' : BEGIN
- Eingabe('Kleidung'); SummeKleid := SummeKleid+Summe;
- END;
- 'W' : BEGIN
- Eingabe('Wohnung'); SummeWoh := SummeWoh+Summe;
- END;
- 'B' : BEGIN
- Eingabe('Bueroartikel'); SummeBuro := SummeBuro+Summe;
- END;
- 'F' : BEGIN
- Eingabe('Freizeit/Hobby'); SummeFrei := SummeFrei+Summe;
- END;
- 'D' : BEGIN
- Eingabe('Diverses'); SummeDiv := SummeDiv+Summe;
- END;
- 'H' : mflag1 := FALSE;
- END; (* Case *)
- END;
- (* ----------------------------------------------------------------------- *)
- PROCEDURE Schleife;
- BEGIN
- REPEAT
- mflag1 := TRUE;
- WHILE mflag1 DO BEGIN
- Guthaben; GotoXY(15,4);
- Write('Welche Daten sollen erfasst werden : ');
- Say('Lebensmittel',1,20,6); Say('Toilettenartikel',1,20,7);
- Say('LIteratur',2,20,8); Say('Auto',1,20,9);
- Say('Post',1,20,10); Say('Kleidung',1,20,11);
- Say('Wohnung',1,20,12); Say('Bueroartikel',1,20,13);
- Say('Freizeit/Hobby',1,20,14); Say('Diverses',1,20,15);
- Say('Zum Hauptmenue',5,20,17);
- Einlesen;
- END;
- UNTIL JaNein(' Sind Sie wirklich fertig ');
- Liste.Guthaben := Guth; ClrScr; Daten_Speichern; Ueberschrift;
- END;
- (* ----------------------------------------------------------------------- *)
- PROCEDURE Neuer_Monat;
- BEGIN
- ClrScr; Ext := Copy(Monat,1,3);
- Assign(Datei,'HAKA'+'.'+Ext); (* Ueberpruefen ob Datei schon existiert: *)
- (*$I-*) ReSet(Datei); (*$I+*) (* Datei zum Lesen vorbereiten *)
- Fehler := IOResult;
- IF Fehler = 1 THEN
- BEGIN
- GotoXY(9,1); Invers;
- Write(Blank,Blank,Nmon,Blank,Tag,'.',Monat,' ',Jahr,Blank);
- GotoXY(9,10);
- Write(Blank,'Bitte geben Sie Ihr aktuelles Guthaben ',Blank);
- GotoXY(9,11);
- Write(Blank,'am Monatsanfang ein : ');Normal;
- ReadLn(Guth); Liste.Guthaben_MonAnfang := Guth;
- GotoXY(9,10); ClrEol; GotoXY(9,11); ClrEol;
- Guthaben;
- Schleife;
- END
- ELSE
- BEGIN
- ClrScr; GotoXY(promptx,prompty-2);
- Write('Achtung : Datei fuer ',Monat,' existiert schon !!');
- GotoXY(promptx,prompty-1);
- Write('Bitte mit AKTUELLEM Monat weitermachen !');
- GotoXY(promptx,prompty); Write('Beliebige Taste druecken . . . . .');
- key := GetKey;
- END;
- END;
- (* ----------------------------------------------------------------------- *)
- PROCEDURE Aktueller_Monat; (* Daten des laufenden Monats erfassen *)
- VAR Eink : REAL;
- BEGIN
- Eink := 0; Fehler := 0; ClrScr; Daten_Lesen; ClrScr;
- IF Fehler = 0 THEN BEGIN
- GotoXY(9,1); Invers;
- Write(Blank,Amon,Blank,Tag,'.',Monat,' ',Jahr,Blank);
- GotoXY(9,10);
- Write(Blank,'Hatten Sie Einkuenfte in diesem Monat ?',Blank);
- GotoXY(9,11);
- Write(' wenn ja, wieviel ? ( sonst RETURN ) : '); Normal;
- ReadLn(Eink);
- Liste.Einkommen := Liste.Einkommen + Eink;
- Guth := Liste.Guthaben + Eink;
- GotoXY(9,10); ClrEol; GotoXY(9,11); ClrEol; GotoXY(23,2); Invers;
- WriteLn(' Guthaben : ',Guth:4:2,' DM '); Normal;
- Schleife;
- END;
- END;
- (* ----------------------------------------------------------------------- *)
- PROCEDURE Mon_Stat; (* Monats-Statistik *)
- VAR ch : CHAR; dev : TEXT;
- BEGIN
- ClrScr; GotoXY(9,1); LowVideo;
- Write('Ausgabe auf Drucker '); NormVideo; Write(' (D)'); LowVideo;
- Write(' oder Bildschirm '); NormVideo; Write(' (B)'); LowVideo;
- Write(' ? : '); NormVideo;
- Read(Kbd,ch); (* von Tastatur ohne Bildschirmecho lesen *)
- ch := UpCase(ch);
- IF ch = 'D' THEN (* Ausgabe auf den Drucker *)
- BEGIN Assign(dev,'LST:'); WriteLn(dev); WriteLn(dev); END
- ELSE Assign(dev,'CON:'); (* oder auf den Bildschirm leiten *)
- GotoXY(9,1); ClrEol; Daten_Lesen; ClrScr;
- IF NOT KeineDaten THEN BEGIN
- GotoXY(0,0); WriteLn(dev,Blank,Blank,Mstat,' fuer : ',Monat,' ',Jahr);
- WriteLn(dev,underline); WriteLn(dev);
- WriteLn(dev,'Ihr Guthaben am Monatsanfang betrug : ',
- Liste.Guthaben_MonAnfang:8:2,' DM');
- IF Liste.Einkommen <> 0 THEN
- WriteLn(dev,'Einkuenfte in diesem Monat : ',
- Liste.Einkommen:8:2,' DM')
- ELSE WriteLn(dev);
- WriteLn(dev);
- WriteLn(dev,'Davon haben Sie ausgegeben '); WriteLn(dev);
- WriteLn(dev,' fuer Lebensmittel : ',
- Liste.SummeL:8:2,' DM');
- WriteLn(dev,' Toilettenartikel : ',
- Liste.SummeT:8:2,' DM');
- WriteLn(dev,' Literatur : ',
- Liste.SummeLit:8:2,' DM');
- WriteLn(dev,' Auto : ',
- Liste.SummeKfz:8:2,' DM');
- WriteLn(dev,' Post : ',
- Liste.SummePost:8:2,' DM');
- WriteLn(dev,' Kleidung : ',
- Liste.SummeKleid:8:2,' DM');
- WriteLn(dev,' Wohnung : ',
- Liste.SummeWoh:8:2,' DM');
- WriteLn(dev,' Bueroartikel : ',
- Liste.SummeBuro:8:2,' DM');
- WriteLn(dev,' Freizeit/Hobby : ',
- Liste.SummeFrei:8:2,' DM');
- WriteLn(dev,' Diverses : ',
- Liste.SummeDiv:8:2,' DM');
- WriteLn(dev); WriteLn(dev,underline);
- WriteLn(dev,'===> Ihr Guthaben am Monatsende : ',
- Liste.Guthaben:8:2,' DM');
- WriteLn(dev,
- ' ============= ');
- WriteLn(dev);
- Datum;
- WriteLn(dev,'Ausdruckdatum : ',Tag,'.',Mon,'.',Jahr);
- GotoXY(promptx,prompty); Write(Con,' Weiter mit beliebiger Taste ! ');
- key := GetKey; ClrScr;
- END;
- END;
- (* ----------------------------------------------------------------------- *)
- (* HAKAINC.PAS *)
-