home *** CD-ROM | disk | FTP | other *** search
- (* Jedes Pascalprogramm muss einen Namen haben ! *)
- PROGRAM AdressVerwaltung(INPUT, OUTPUT, Datenfile, Indexfile);
- (* In den Klammern hinter dem Programmname muessen die Kanaele stehen*)
- (* ueber die das Programm mit der Aussenwelt kommuniziert. INPUT und *)
- (* OUTPUT ist die Standard Ein- und Ausgabe auf dem Terminal. *)
- (* "Datenfile" ist der Name der FILE-Variablen fuer die Adressdaten. *)
- (* "Indexfile" ist der Name der FILE-Variablen, mit der die Index- *)
- (* felder auf Massenspeicher gerettet werden. *)
-
- (* Als erstes muessen die Konstantendefinitionen kommen. *)
- CONST MaxDaten = 300; (* Maximal 300 Adressen koennen verwaltet werden. *)
- (* Dieser Wert kann auch beliebig hoeher ange- *)
- (* setzt werden. Dabei muss aber beachtet werden, *)
- (* dass das Indexfeld in den Hauptspeicher passt! *)
- Schluessellaenge = 30; (* Ein Schluessel kann 30 signifikante *)
- (* Zeichen lang sein. Auch dieser Wert *)
- (* kann individuellen Beduerfnissen *)
- (* angepasst werden. *)
- EintragLaenge = 80; (* Laenge der Eintraege i. d. Adressverwaltung *)
-
-
- (* Als zweites kommen TYPE-Definitionen. *)
- TYPE tSchluessel = STRING[Schluessellaenge]; (* Schluesselstrings dimen- *)
- (* sionieren. *)
-
- tEintrag = STRING[EintragLaenge]; (* Stringtyp fuer Eintraege *)
- (* in die Datensaetze. *)
-
- tDatum = RECORD (* Einen Typ fuer Datumein- *)
- Tag, Monat, Jahr : INTEGER; (* traege definieren. *)
- END;
-
- tDatensatz = RECORD (* Dieser Datensatz kann natuerlich *)
- Name, (* persoenlichen Beduerfnissen ent- *)
- Vorname, (* sprechend variiert werden. *)
- Strasse,
- Wohnort : tEintrag;
- PLZ : INTEGER;
- Geburtstag : tDatum;
- Kommentar : tEintrag;
- END;
-
- tDatenfile = FILE OF tDatensatz;
-
- tIndex = RECORD
- Schluessel : tSchluessel;
- RecNr : INTEGER; (* Nr des Datensatzes im File *)
- END;
-
- tIndexfeld = ARRAY[1..MaxDaten] OF tIndex; (* Schluesselfeld *)
-
- tIndexfile = FILE OF tIndexfeld; (* Zum sichern des Index. *)
-
- VAR Datenfile : tDatenfile;
- Indexfile : tIndexfile;
- Wahl : CHAR; (* Fuer Auswahl im Hauptmenue. *)
-
-
- (* . *)
- (* . *)
- (* . *)
- (* Hier kommen dann die Unterprogramme hin. *)
- (* . *)
- (* . *)
- (* . *)
-
-
- (* Hier beginnt das Hauptprogramm *)
- BEGIN
- REPEAT (* Haupt-Schleife *);
- ClrScr; (* Bildschirm loeschen, Cursor nach links oben *)
- (* Menue ausgeben *)
- WriteLn(' > > > P A S C A L < < <');
- WriteLn(' Adressverwaltung');
- WriteLn; WriteLn; WriteLn; (* Einige Leerzeilen *)
- WriteLn(' O Oeffnen Adress-Datei');
- WriteLn;
- WriteLn(' E Eingeben Adressen');
- WriteLn;
- WriteLn(' S Suchen Adressen');
- WriteLn;
- WriteLn(' R soRtieren Adressen');
- WriteLn;
- WriteLn(' L Loeschen Adressen');
- WriteLn;
- WriteLn(' A Ausgeben Adressen');
- WriteLn;
- WriteLn(' C sChliessen Adress-Datei');
- WriteLn;
- WriteLn;
- WriteLn(' Q Quit');
- WriteLn; WriteLn; WriteLn;
- Write(' Ihre Wahl: '); read(Wahl);
- (* Gueltiges Auswahl-Zeichen ? *)
- IF (Wahl IN ['o','O','e','E','s','S','r','R',
- 'l','L','a','A','c','C','q','Q']) THEN
- CASE Wahl OF (* Fallunterscheidung *)
- 'o','O' : (* Adressdatei oeffnen *) ;
- 'e','E' : (* Adressen eingeben *) ;
- 's','S' : (* Adressen suchen *) ;
- 'r','R' : (* Adressen sortieren *) ;
- 'l','L' : (* Adressen loeschen *) ;
- 'a','A' : (* Adressen ausgeben *) ;
- 'c','C' : (* Adressdatei schliessen *) ;
- 'q','Q' : BEGIN (* Programm verlassen ? *)
- ClrScr; (* Bildschirm loeschen *)
- (* Ueberschrift *)
- WriteLn(' ##### Programm beenden #####');
- WriteLn; (* Zwei Leerzeilen *)
- WriteLn;
- (* Sicherheitsabfrage *)
- Write(' Programm verlassen ');
- Write('(Datei geschlossen !?) ? (j/n) ');
- ReadLn(Wahl);
- IF (Wahl In ['j','J']) THEN
- Wahl := 'q' (* Anzeigen, dass Programmende *)
- ELSE
- Wahl := '0'; (* Weiter geht's ! *)
- END;
- END;
- UNTIL (Wahl IN ['q','Q']); (* Benutzer will raus ! *)
- END.