' Auswahlmen DECLARE SUB Menue (tit$, pkt$, mp%, esc%) DECLARE SUB Nachricht (t$, f%) DECLARE SUB Dummy (t$) DIM drtyp$(5), ben$(19) FOR i% = 0 TO 5 READ drtyp$(i%) NEXT i% DATA "Epson ESC P/2", "HP DeskJet", "IBM ProPrinter", "Adobe PostScript" DATA "HP LaserJet PCL/5", "HP HPGL Plotter" ' Die Benutzer wrde man mit Dateien verwalten FOR i% = 0 TO 3 READ ben$(i%) NEXT i% DATA "Hansli", "Markus", "Jonathan", "Ciar n" papierbr% = 70 drucker% = 1 aktBen% = 2 nBen% = 4 mp% = 0 drin% = -1 WHILE drin% Menue "Hauptauswahl", "š_ben|_Statistik|E_instellungen|_Ende", mp%, 3 SELECT CASE mp% CASE 0 mp1% = 0 DO UNTIL mp1% = 4 Menue "Bitte šbungsart ausw„hlen", "_Addition|_Subtraktion|_Multiplikation|_Division|_Zurck", mp1%, 4 SELECT CASE mp1% CASE 0 mp2% = 0 DO UNTIL mp2% = 4 Menue "Gewnschter Typ der Addition", "Zahlen bis _20|Zahlen bis _100|_Dezimalbrche|Gemeine _Brche|_Zurck", mp2%, 4 SELECT CASE mp2% CASE 0 Dummy "Hier k„me Addieren von Zahlen bis 20" CASE 1 Dummy "Hier k„me Addieren von Zahlen bis 100" CASE 2 Dummy "Hier k„me Addieren von Dezimalbrchen" CASE 3 Dummy "Hier k„me Addieren von " + CHR$(34) + "normalen" + CHR$(34) + " Brchen" END SELECT LOOP CASE 1 mp2% = 0 DO UNTIL mp2% = 3 Menue "Gewnschter Typ der Subtraktion", "Zahlen bis _20|Zahlen bis _100|_Negative Zahlen|_Zurck", mp2%, 3 SELECT CASE mp2% CASE 0 Dummy "Hier k„me Subtrahieren von Zahlen bis 20" CASE 1 Dummy "Hier k„me Subtrahieren von Zahlen bis 100" CASE 2 Dummy "Hier k„me Subtraktion mit negativen Werten" END SELECT LOOP CASE 2 mp2% = 0 DO UNTIL mp2% = 4 Menue "Gewnschter Typ der Multiplikation", "_Einmaleins|_2-stellige Zahlen|_Dezimalbrche|Gemeine _Brche|_Zurck", mp2%, 4 SELECT CASE mp2% CASE 0 Dummy "Hier k„me das Einmaleins (1x1)" CASE 1 Dummy "Hier k„me Multiplikation 2-stelliger Zahlen" CASE 2 Dummy "Hier k„me Multiplikation von Dezimalbrchen" CASE 3 Dummy "Hier k„me Multiplikation von " + CHR$(34) + "normalen" + CHR$(34) + " Brchen" END SELECT LOOP CASE 3 mp2% = 0 DO UNTIL mp2% = 4 Menue "Gewnschter Typ der Division", "Zahlen bis _20|_Schriftliche Division|_Rest|Gemeine _Brche|_Zurck", mp2%, 4 SELECT CASE mp2% CASE 0 Dummy "Hier k„me die Division im Zahlenraum bis 20" CASE 1 Dummy "Hier k„me die schriftliche Division" CASE 2 Dummy "Hier k„me das Rechnen mit Teilerreste" CASE 3 Dummy "Hier k„me die Division von " + CHR$(34) + "normalen" + CHR$(34) + " Brchen" END SELECT LOOP END SELECT LOOP CASE 1 Dummy "Auswertestatistik" CASE 2 mp1% = 0 DO UNTIL mp1% = 3 Menue "Konfiguration", "_Druckertyp: " + drtyp$(drucker%) + "|Papier_breite:" + STR$(papierbr%) + "|_Benutzerverwaltung|_Zurck", mp1%, 3 SELECT CASE mp1% CASE 0 ' Drucker einstellen mp2% = drucker% h$ = "" FOR i% = 0 TO 5 IF i% > 0 THEN h$ = h$ + "|" END IF h$ = h$ + drtyp$(i%) NEXT i% Menue "Bitte Drucker w„hlen", h$, mp2%, -1 IF mp2% <> -1 THEN drucker% = mp2% END IF CASE 1 ' Papierbreite festlegen ok% = 0 DO COLOR 4, 3 CLS PRINT "Bisherige Papierbreite:"; papierbr% INPUT "Neue Papierbreite"; p1% IF p1% >= 10 AND p1% <= 300 THEN papierbr% = p1% ok% = -1 ELSE Nachricht "Unzul„ssige Papierbreite! Muss zwischen 10 und 300 liegen", 4 END IF LOOP UNTIL ok% CASE 2 ' Benutzerverwaltung mp2% = 0 DO UNTIL mp2% = 3 Menue "Benutzerverwaltung", "Benutzer _w„hlen (aktuell: " + ben$(aktBen%) + ")|Benutzer _hinzufgen|Benutzer _l”schen|_Zurck", mp2%, 3 SELECT CASE mp2% CASE 0 ' Benutzer w„hlen IF nBen% > 0 THEN h$ = "" FOR i% = 0 TO nBen% - 1 IF i% > 0 THEN h$ = h$ + "|" END IF h$ = h$ + ben$(i%) NEXT i% mp3% = aktBen% Menue "Benutzer w„hlen", h$, mp3%, nBen% IF mp3% < nBen% THEN aktBen% = mp3% END IF ELSE Nachricht "Kein Benutzer vorhanden!", 4 END IF CASE 1 ' Benutzer hinzufgen ok% = 0 DO COLOR 4, 3 CLS INPUT "Name des neuen Benutzers"; b1$ IF b1$ <> "" AND INSTR(b1$, "|") = 0 AND INSTR(b1$, "_") = 0 THEN ok% = -1 FOR i% = 0 TO nBen% IF UCASE$(b1$) = UCASE$(ben$(i%)) THEN ok% = 0 Nachricht "Benutzer " + b1$ + " bereits vorhanden!", 4 END IF NEXT i% ELSE Nachricht "Ungltiger Benutzername", 4 END IF LOOP UNTIL ok% ben$(nBen%) = b1$ Nachricht "Benutzer " + ben$(nBen%) + " hinzugefgt", 5 nBen% = nBen% + 1 CASE 2 ' Benutzer l”schen IF nBen% > 0 THEN h$ = "" FOR i% = 0 TO nBen% - 1 IF i% > 0 THEN h$ = h$ + "|" END IF h$ = h$ + ben$(i%) NEXT i% mp3% = aktBen% Menue "Zu l”schender Benutzer:", h$, mp3%, -1 IF mp3% <> -1 THEN mp4% = 1 Menue "Sind Sie sicher, dass Sie " + ben$(mp3%) + " l”schen wollen?", "_Ja|_Nein", mp4%, 1 IF mp4% = 0 THEN nBen% = nBen% - 1 ' Wir fllen die Lcke mit dem letzten Benutzer Nachricht "Benutzer " + ben$(mp3%) + " gel”scht", 5 ben$(mp3%) = ben$(nBen%) ben$(nBen%) = "" a1% = aktBen% IF aktBen% >= nBen% THEN aktBen% = 0 END IF IF mp3% = a1% THEN Nachricht "Warnung: Aktueller Benutzer auf " + ben$(aktBen%) + " ge„ndert", 4 END IF END IF END IF ELSE Nachricht "Kein zu l”schender Benutzer vorhanden!", 4 END IF END SELECT LOOP END SELECT LOOP CASE 3 mp1% = 1 Menue "Programm beenden?", "_Ja|_Nein", mp1%, 1 IF mp1% = 0 THEN drin% = 0 END IF END SELECT WEND COLOR 7, 0 CLS PRINT "Anwendung beendet" SUB Dummy (t$) ' Dies ist nur ein Platzhalter-Unterprogramm! COLOR 4, 3 CLS LOCATE 3, 41 - LEN(t$) \ 2 PRINT t$; COLOR 14 LOCATE 5, 33 PRINT "Weiter mit Taste" d$ = INPUT$(1) END SUB SUB Menue (tit$, pkt$, mp%, esc%) ' tit$ : Titel ' pkt$ : Menpunkte mit "|" getrennt, hervorgehobene Buchstaben mit _ ' mp% : Rckgabewert gew„hlter Punkt + bei Aufruf Default ' esc% : Rckgabewert, wenn gedrckt wird DIM m$(19) n% = 0 i% = 1 lm% = -1 DO j% = INSTR(i%, pkt$, "|") IF j% > 0 THEN m$(n%) = MID$(pkt$, i%, j% - i%) i% = j% + 1 ELSE m$(n%) = MID$(pkt$, i%) END IF ' breitester Menpunkt fr Zentrierung ermitteln IF LEN(m$(n%)) > lm% THEN lm% = LEN(m$(n%)) END IF n% = n% + 1 LOOP WHILE j% > 0 ' Men ausgeben COLOR 14, 3 CLS LOCATE 2, 41 - LEN(tit$) \ 2 PRINT tit$; FOR m1% = 0 TO n% - 1 GOSUB ZeichneMenuepunkt NEXT m1% drin% = -1 WHILE drin% DO t$ = INKEY$ LOOP WHILE t$ = "" m1% = mp% SELECT CASE t$ CASE CHR$(0) + "H" mp% = (mp% + n% - 1) MOD n% CASE CHR$(0) + "P" mp% = (mp% + 1) MOD n% CASE CHR$(0) + "G" mp% = 0 CASE CHR$(0) + "O" mp% = n% - 1 CASE CHR$(13) drin% = 0 CASE CHR$(27) mp% = esc% drin% = 0 CASE ELSE mp% = -1 FOR i% = 0 TO n% - 1 h% = INSTR(m$(i%), "_") IF h% > 0 THEN IF UCASE$(t$) = UCASE$(MID$(m$(i%), h% + 1, 1)) THEN ' Gedrckte Taste entspricht hervorgehobenem Buchstaben mp% = i% END IF END IF NEXT i% IF mp% = -1 THEN ' Buchstabe nicht gefunden SOUND 700, 1 mp% = m1% END IF END SELECT GOSUB ZeichneMenuepunkt IF mp% >= 0 AND mp% < n% THEN m1% = mp% GOSUB ZeichneMenuepunkt END IF WEND EXIT SUB ZeichneMenuepunkt: LOCATE 4 + 2 * m1%, 40 - lm% \ 2 h% = INSTR(m$(m1%), "_") IF m1% = mp% THEN COLOR 11, 1 ELSE COLOR 1, 3 END IF IF h% > 0 THEN PRINT " " + LEFT$(m$(m1%), h% - 1); COLOR 15 PRINT MID$(m$(m1%), h% + 1, 1); IF m1% = mp% THEN COLOR 11 ELSE COLOR 1 END IF PRINT MID$(m$(m1%), h% + 2) + " "; ELSE PRINT " " + m$(m1%) + " "; END IF RETURN END SUB SUB Nachricht (t$, f%) ' Ermittlung, welche Zeile l„nger ist IF LEN(t$) > 16 THEN b% = LEN(t$) ELSE b% = 16 END IF COLOR 10, 3 CLS LOCATE 11, 38 - b% \ 2 COLOR , f% PRINT "É"; STRING$(b%, 205); "»"; FOR i% = 12 TO 13 LOCATE i%, 38 - b% \ 2 PRINT "º"; SPACE$(b%); "º"; COLOR , 0 PRINT " "; COLOR , f% NEXT i% LOCATE 14, 38 - b% \ 2 PRINT "È"; STRING$(b%, 205); "¼"; COLOR , 0 PRINT " "; LOCATE 15, 40 - b% \ 2 PRINT SPACE$(b% + 2); COLOR 15, f% LOCATE 12, 39 - LEN(t$) \ 2 PRINT t$; COLOR 14 LOCATE 13, 31 PRINT "Weiter mit Taste"; IF f% = 4 THEN SOUND 1000, 2 END IF d$ = INPUT$(1) END SUB