Dateiverwaltung

Eine kurze, aber dennoch wirkungsvolle, Dateiverwaltung in Basic stellen wir hier vor. Das Programm bietet veränderbare Masken und ist noch dazu vollständig GEM-unter-stützt. Es beherrscht alle nötigen Fähigkeiten einer Dateiverwaltung und kann nach Belieben erweitert werden.

Dieses Programm dient dazu, Daten zu verwalten, die der Benutzer leicht abfragen kann.

Man kann z. B. damit eine Adressenverwaltung errichten. Das Programm beinhaltet folgende Funktionen:

Die Funktionen werden einfach mit der Maus angeklickt. Danach erscheint ein leeres Rechteck, worin sämtliche Eintragungen erfolgen. Sollten noch keine Daten im Speicher sein, so hat man nur die Möglichkeit zwischen Laden, Editieren und Quit.

Laden:
Nach der Eingabe eines 12 Buchstaben langen Filenamens werden die Daten aus diesem File von Diskette gelesen.

Speichern:
Die Daten werden auf Diskette unter dem Namen geschrieben, der beim Laden oder der Neueröffnung angegeben wurde.

Eingabe
Wenn sich noch keine Daten im Speicher befinden, so erscheint im Bearbeitungsfenster „Neueröffnung:“, und man wird aufgefordert, einen Namen für die Datei einzugeben. Dieser Name ist dann gleichzeitig der Filename, unter dem die Daten auf Diskette geschrieben werden. Danach fragt das Programm nach der Anzahl der Posten und deren Bezeichnungen. Im Falle einer Adressenverwaltung müßte man folgende Eingaben machen: Anzahl der Posten = 5

  1. Bez.: Name
  2. Bez.: Vorname
  3. Bez.: Strasse
  4. Bez.: Wohnort
  5. Bez.: Telefon

In dieser Reihenfolge werden die Daten anschließend eingegeben.

Hat man die letzte Eintragung gemacht, drückt man um mit der Eingabe aufzuhören, oder eine andere Taste, um damit fortzufahren. Die maximale Zahl der Eintragungen beträgt 299.

Ausgabe:
Drückt man die Taste ’D’, so erfolgt die Ausgabe auf dem Drucker in Säulenform. Ansonsten die Taste ’B’ für Bildschirm drücken. Die Daten erscheinen nun mit ihren Bezeichnungen auf dem Bildschirm.

Mit ’ ★ ’ kann man die Bildschirmausgabe jederzeit verlassen, oder man drückt eine andere Taste, um damit fortzufahren.

Editieren:
Zuerst gibt man den Posten an, der gesucht werden soll. Danach erfolgt die Eingabe einer Zeichenkette. Hat der Computer die betreffende Stelle gefunden, so braucht der Benutzer nur folgende Tasten zu betätigen:

’L’ - löscht die gesamte Eintragung. (Danach sollte man am besten neu sortieren).
’E’ - erwartet eine neue Eintragung des gesuchten Postens. '*' - verläßt den Editmodus, eine andere Taste - sucht weiter (Klein-, Großschrift wird unterschieden!!)

Sortieren:
Man gibt den Posten an, der sortiert werden soll. Dabei kann nach allen Posten sortiert werden.

Quit:
Beendet das Programm. (Alle Daten gehen verloren)

Die im Programm benutzten GEM-Routinen können natürlich, falls vom GEM-Kurs schon vorhanden, ’hinzu-gemergt’ werden. Man spart sich somit einige Tipparbeit.

Arnfried Griesert & Andreas Wienforth

1000 rem ##################################################
1005 rem ##	                 Dateiverwaltung            ##
1010 rem ##################################################
1015 rem ##             geschrieben am 23.03.86 von      ##
1020 rem ##                                              ##
1025 rem ##  Arnfried Griesert   ++ Andreas Wienforth    ##
1030 rem ##  Montanusstr. 8   ++   Am Kloster 36         ##
1035 rem ##  5653 Leichlingen 1  ++ 5653 Leichlingen 1   ##
1045 rem ##                                              ##
1050 rem ##################################################
1055 clear:dim name$ (5), lg (100), rg (100) : option base 1
1060 gosub init:gosub fu1lwind:gosub cleardesk:clearw 2
1065 for ypos1=48 to 252 Step 34	
1070 xpos1=38:xpos2=133:color 1.1,1,1,1
1075 ypos2=ypos1+29:ypos1-ypos1+3:gosub rechteck:ypos1=ypos1-3
1080 xpos1=35 :xpos2=130 : color 1,1.1,1,0
1085 ypos2=ypos1+2o:gosub rechteck:circle 145,ypos1+31,8 :next ypos1 
1090 gotoxy 3,4 :?"Laden"
1095 gotoxy 3.6 :?"Speichern" 
1100 gotoxy 3.8 :?"Eingabe" 
1105 gotoxy 3,10 :? "Ausgabe" 
1110 gotoxy 3,12:? "Sortieren"
1115 gotoxy 3,14: ? "Editieren"
1120 gotoxy 3,16:?"Quit"
1125 xpos1=60:xpos2=600:ypos1=10;ypos2=30
1130 color 1,3,1,1.1:fuell=1:gosub eckrund
1135 xpos1=50: xpos2=590 :ypos1=0 :ypos2=20
1140 color 1 ft.1.1,0:fuel1 = 1:gosub eckrund
1145 gotoxy 5.1:?"Datei Verwaltung"; S
1150 ? "	by Hugo-Soft-Coorperation"
1155 color 1,1,1,1,2: fill 0,0
1160 color 1,1,1,1,1:xpos1=305:ypos1=75 :xpos2=605:ypos2-325:gosub rechteck 
1165 color 1,1,1,2,2:xpos1=300:ypos1=70.:xpos2=600:ypos2=320:gosub rechteck 
1170 mausnr=3:gosub mausform:out 2,7
1175 gosub maus:if key< >1 then 1175
1180 if not (ymaus>48 and ymaus<286 and xmaus>35 and xmaus<153) then 1175 
1185 x=fix( (ymaus—48)/34)
1190 color 1,1,1,1,1 :pcircle 145,x*34+79,8
1195 for i=14 to 0 step -2:sound 1,i,x+1,6,2 :next i
1200 xalt=35:yalt=x*34+86:xneu=300:yneu=70:breit1=95:hoch1=26
1205 breit2=300:hoch2=250:gosub growbox
1210 color 1,4,1,1,0: xpos1=300: ypos1=70: xpos2=600 : ypos2=320 : gosub rechteck 
1215 on x+1 gosub laden,speichern,eingabe,ausgabe,sortieren.aendern.ende 
1220 color 1,1,1,2.2:gosub rechteck:gosub schrumpfbox 
1225 color 1,0,1,1,1:pcircle 145, x*34+79,8: circle 145, x*34+79.8 
1230 goto 1175

1240 LADEN:
1245 if len(file$)<>0 then return
1250 erase wert$,name$:dim wert$(5,300),name$(5)
1255 gotoxy 19,7:? "Laden einer Datei:"
1260 gotoxy 19,9:? "Namen der Datei: __________.____"
1265 gotoxy 27,9:1 ine input file$
1270 if len(file$)< >12 then goto 1260 
1275 on error goto 1310
1280 open "I",#1,file$:inputtl,anzahl,posten
1285 for i=1 to posten:name$(i)=space$(15):input#1,name$(i):next i
1290 for i=1 to anzahl:for i1=1 to Posten
1295 wert$(i1,i)=space$(20):input#l,wert$(il,i)
1300 next i1,i
1305 close #1:return 
1310 resume 
1305 '
1315	'----------------------------------------------------------------------
1320 SPEICHERN:
1325 if anzahl-0 or len(file$)=0 then return 
1330 gotoxy 19,7:print "Daten werden gesichert !"
1335 gotoxy 19,9:print "Bitte etwas Geduld ...”
1340 open ”0",#1,file$:print #1.anzah1.Posten 
1345 for i=1 to posten:print #1,name$(i):next
1350 for i=1 to anzahl:for i1=1 to posten:print #1,wert!(i1.i):next i1,i 
1355 close #1:return

1365 EINGABE:
1370 if anzahl>=299 then return 
1375 if len(file$)< >0 then 1425 
1380 gotoxy 19,7:? "Neueroeffnung:"
1385 gotoxy 19,9:? "Namen der Datei: __________.__"
1390 gotoxy 27,9: line input file$
1395 if len(file$)<>12 then goto 1385
1400 gotoxy 19,10:input "Wieviele Posten: ",posten:if posten>5 then 1400 
1405 for i=1 to Posten
1410 gotoxy 19.11+i:? i". ";:input "Bez.: ",name$(i):next
1415 dim wert$(5,200):anzahl=0
1420 gosub rechteck
1425 gotoxy 19.7:? "Eingabe:"
1430 anzahl=anzahl + l-.gotoxy 19.9:? "Nr.:"anzahl
1435 for i=1 to Posten:gotoxy 19,10+i:? name$(i);":";:input wert$(i,anzahl) 
1440 if len(wert$(i.anzahl))=0 then wert$(i,anzahl)="???"
1445 next i
1450 gotoxy 19,17:? "Taste druecken (* - Abbruch)"
1455 a=inp(2):if a=42 then return eise goto 1420

1465 AUSGABE:
1470 if anzahl-0 or len(file$)=0 then return 
1475 gotoxy 19,7:? "Ausgabe von: ";file$
1480 gotoxy 19,9:? "Drucker oder Bildschirm (d/b) ?"
1485 a$=chr$(inp(2))
1490 if a$="d" or a$="D" then goto 1550
1495 if a$< >"b" and a$<>"B" then goto 1485 eise a=l
1500 while not(a>anzahl)
1505 gosub rechteck:gotoxy 19,7:? "Ausgabe von: ";file$
1510 gotoxy 19,9:? "Nr.:	"a'Vanzahl
1515 for i=1 to posten:gotoxy 19.10+i 
1520 print using "\xxxxxxxx\:";name$(i);
1525 print using " \xxxxxxxxxxxxxxxxxx\";wert$(i.a)
1530 next i
1535 a=a+1:gotoxy 19,17:print "Taste druecken (* “ Abbruch)"
1540 b=inp(2):if b-42 then a=anzahl+1
1545 wend:return

1550 ' Druckerausgabe
1555 lprint "Ausgabe von: ";file$
1560 lprint:lprint:lprint "
1565 for i=1 to posten:lprint using "\xxxxxxxxx\ ";name$(i)next:lprint 
1570 for i=1 to anzahl:lprint:lprint using "###) ";i;:for i1=1 to Posten 
1575 lprint using "\xxxxxxxxx\ ";wert$(il,i):
1580 next i1,i : lprint: lprint: lprint anzahl" Elemente"-.return

1590 SORTIEREN:
1595 if anzahl-0 or len(file$)-0 then return 
1600 gotoxy 19.7:? "Sortieren:"
1605 if Posten-1 then goto 1620
1610 for i=1 to Posten:gotoxy 19,8+i:print i:")	";namet(i):next
1615 gotoxy 19.15:input "Welchen Posten sortieren ";a
1620 REM QUICKSORT
1625 z=0:lg(1)-1:rg(l)-anzahl
1630 gosub 1640:	'Einsprung in Quicksort
1635 goto 1720: 'Ende
1640 'Anfang des rekursiven Unterprogramms 
1645 z—z+1:if lg(z)>-rg(z) then 1715 
1650 xx-lg(z):yy-rg(z)
1655 ' Vergleichselement holen (letztes Element)
1660 vg$-wert$(a.yy)
1665 if xx>yy then 1700
1670 if wert$(a,xx)<vg$ then xx=xx+l:goto 1670 
1675 if wert$(a,yy)>vg$ then yy«yy-l:goto 1675 
1680 if xx>yy then 1700

1685 for i=1 to posten-.swap wert$ ( i , xx) ,wert$ (i, yy) : next i 
1690 xx=xx+l:yy-yy-l 1695 goto 1665 
1700 '

1705 rg(z+1)=yy: lg(z+1)=lg(z):gosub 1640 
1710 lg(z+1)=xx: rg(z+1)=rg(z):gosub 1640 
1715 z=z-1:return 
1720 return
1730 AENDERN:
1735 if anzahl=0 or len(file$)=0 then return 
1740 gotoxy 19,7:? "Editieren:"
1745 if posten«l then goto 1765
1750 for i=1 to posten:gotoxy 19,8+i:? i;".	”;name$(i):next i
1755 gotoxy 19,15:input "Welchen Posten abaendern: ",a 
1760 if a<1 or a>posten then goto 1755 
1765 gosub rechteck:gotoxy 19,7:? "Editieren:"
1770 gotoxy 19,9:input "Gesucht wird: ",a$
1775 if len(a$)=0 then a$«"???"
1780 for i=1 to anzahl
1785 if instr(O.wertS(a.i),a$)«0 then goto 1855 
1790 gosub rechteck:gotoxy 19,7:? "Editieren:"
1795 for il=1 to Posten:gotoxy 19,8+il 
1800 Print name$(il);":
1805 print wert$(i1,i):next il
1810 gotoxy 19,15:? "Loeschen/weiter/edit/*"
1815 b$-chr$(inp(2))
1820 if b$<>"L" and b$<>"l" then goto 1835
1825 for il=l to posten:swap Werts(il,i),wert${il,anzahl):next il
1830 anzahl=anzahl-1:i=anzahl+1:goto 1855
1835 if b$«"W" or b$«"w" then goto 1855
1840 if b$-"*" then i-anzah1:goto 1855
1845 if b$< >"E" and b$<>"e" then goto 1855
1850 gotoxy 19,16-.? name$(a);":	";:input	wert$	(a. i): i-anzahl
1855 next i:return
1865 ENDE:
1870 color 1,1,1,1,1: fuell=1: xpos1=365: xpos2=550: ypos1=174: ypos2=194 
1875 gosub eckrund
1880 color 1,1,1,1,0: fuell=1: xpos1=360: xpos2=545: ypos1=169: ypos2=189 
1885 gosub eckrund
1890 gotoxy 22, 11:? " Auf. Wiedersehen !!!"
1895 a=inp (2) : end
1905 FULLWIND:
1910 poke gintin,3
1915 poke gintin+2,5
1920 poke gintin+4,0
1925 poke gintin+6,1
1930 poke gintin+8,658
1935 poke gintin+10,417 
1940 gemsys 105 
1945 return
1955 CLEARDESK:
1960 color 1,1,1,1.1:
1965 xpos1=-1 :xpos2=638 :ypos1=—40:ypos2=-20 
1970 gosub RECHTECK:color 1,1,1 
1975 return
1980 ' ----------------------------------------------
1985 SCHRUMPFBOX:
1990 schrumpf%=1 
1995 GROWBOX:
2000 poke control+2,8
2005 poke Control+4,1 
2010 poke gintin, xalt 
2015 poke gintin+2, yalt 
2020 poke gintin+4, breit1 
2025 poke gintin+6, hoch1 
2030 poke gintin+8, xneu +1 
2035 poke gintin+10,yneu +38 
2040 poke gintin+12,breit2 
2045 poke gintin+14,hoch2 
2050 gemsys 73 + schrumpf%
2055 schrumpf%= 0 
2060 return
2065	 ' -------—--------------------------------------------------------
2070 INIT:
2075 aes#=gb
2080 control = peek(aes#)
2085 global = peek(aes#+4 )
2090 gintin = peek(aes#+8 )
2095 ginout = peek(aes#+12)
2100 addrin = peek(aes#+16)
2105 addrout = peek(aes#+20)
2110 return

2115 ' ----------------------------------------------------------------
2120 MAUS:
2125 poke contr1,124 
2130 vdisys
2135 xmaus=peek(ptsout)-1 
2140 ymaus=peek(ptsout+2)-38 
2145 key=peek(intout)
2150 return

2155 ' -------------—--------------------------------------------------
2160 MAUSFORM:
2165 if mausnr>7 then return
2170 add#=gb
2175 gintin=peek(add#+8)
2180 addrin=peek(add#+16)
2185 poke gintin,mausnr 
2190 poke addrin,0
2195 gemsys(78)
2200 return
2205 ' -----------------------------------------------------------------
2210 RECHTECK:
2215 poke contrl	,11
2220 poke contrl +2 ,2 
2225 poke contrl +6 ,0 
2230 poke contrl +10,1 
2235 poke ptsin,xpos1 +1 
2240 poke ptsin+2,ypos1 +38 
2245 poke ptsin+4,xpos2 +1 
2250 poke ptsin+6,ypos2 +38 
2255 vdisys 
2260 return
2265 '------------------------------------------------------------------
2270 ECKRUND:
2275 poke contrl	,11
2280 poke contrl +2.2 
2285 poke contrl +6,0
2290 if fuell= 0 then poke contrl+10,8 else poke contrl+10,9 
2295 poke ptsin , xpos1 +1 
2300 poke Ptsin+2, ypos1 +38 
2305 poke ptsin+4, xpos2 +1 
2310 poke ptsin+6, ypos2 +38 
2315 vdisys 
2320 return
2325	 '--------------------------------------------
2330 '
2335 rem #########################################
2340 rem #### You have hardly reached the END ####
2345 rem #########################################


Aus: ST-Computer 07 / 1986, Seite 26

Links

Copyright-Bestimmungen: siehe Über diese Seite