Index TOC

Library DataBase of Books

by Joseph_Sixpack

and written in

GW-BASIC


10 ' Library.bas  Program by fhb4family
20 '   rev 1.00 11/24/98  copied & modified from music.bas v1.10 of 10/5/98 
30 '   save"library.bas",a '  your
40 '   save"books.bas",a   '  choice!
50 '     i forget why this section was left blank... sorry.. :-(
60 '
70 '
80 '
90 '
100 '
110 '
120 'Program:
130 GOSUB 400 'Initialization
140 GOSUB 530 'FunctionKeys
150 GOSUB 570 'CountData
160 GOSUB 630 'MainMenu
170 PRINT "Ended at progam":END
180 '--------------------------
190 'SubroutineLocator:
200 CLS:LIST  120-180  'Program
210 CLS:LIST  400-510  'VariableInitialization
220 CLS:LIST  530-550  'FunctionKeys
230 CLS:LIST  570-620  'CountData     (variable=TOTALBOOKS)
240 CLS:LIST  630-840  'MainMenu
250 CLS:LIST  850-930  'ActionTakenOnKeyPress
260 CLS:LIST  940-1200 'DisplayByBookNumber:
270 CLS:LIST 1210-1450 'DisplayBy (Title|Author|Category|Publisher|Note)
280 CLS:LIST 1460-1750 'MultipleFieldSearches
290 CLS:LIST 1720-1750 'ScreenScrollingPauser
300 CLS:LIST 1760-1810 'ScrollStop@4Records
310 CLS:LIST 1820-1860 'SearchCompleted-Go2MainMenu
320 CLS:LIST 1870-1910 'NoMatchFound-Go2MainMenu
330 CLS:LIST 1920-1950 'ScrollStop
340 CLS:LIST 1960-1990 'ReadDataCard
350 CLS:LIST 2000-2080 'PrintDataCard2Screen
360 CLS:LIST 2090-2230 'PrintAllData2Printer
370 CLS:LIST 2240-2290 'Exit2DOS
380 CLS:LIST 2300-     'DataCards
390 '-------------------------
400 'VariableInitialization:            ugh!  i forgot, a basket array...
410 KEY OFF:COLOR 14,4:OPTION BASE 0:VIEW PRINT
420 DIM V$(7,2)          'V stands for VARIABLES (basket array or table)
430  V$(0,0)= "Th-th-th-":V$(0,1)= "that's "   : V$(0,2)="all, folks!..."
440  V$(1,0)= "BNO$"     :V$(1,1)= "BOOKNO$"   : V$(1,2)="enter the Booknumber"
450  V$(2,0)= "TITL$"    :V$(2,1)= "TITLE$"    : V$(2,2)="the Title"
460  V$(3,0)= "AUTH$"    :V$(3,1)= "AUTHOR$"   : V$(3,2)="the Author's Name"
470  V$(4,0)= "CATEG$"   :V$(4,1)= "CATEGORY$" : V$(4,2)="the category"
480  V$(5,0)= "PUBL$"    :V$(5,1)= "PUBLISHER$": V$(5,2)="the Publisher"
490  V$(6,0)= "NTE$"     :V$(6,1)= "NOTE$"     : V$(6,2)="the notes"
500  V$(7,0)= "EMPTY  "  :V$(7,1)= "Enter fragment of ":V$(7,2)="empty slot"
510 RETURN 'to program, FunctionKeys
520 '----------------------------------
530 'FunctionKeys:
540 FOR FKEY=1 TO 10:KEY FKEY,"":NEXT FKEY ' all Function Keys turned off
550 RETURN 'to program, CountData
560 '-------------------------
570 'CountData: 'just to see how many datacards of cd's there are.
580   GOSUB 1960 'ReadDataCard
590     IF V$(1,1)="end of data" THEN RETURN 'to Program, MainMenu
600     TOTALBOOKS=TOTALBOOKS + 1
610     GOTO 580 '^^^^^^^^^^^^^^^^^^Loop thru data counting entries
620 '-------------------------
630 'MainMenu:
640 CLS
650 RESTORE
660 T=26
670 EASTEREGG=0
680 LINECOUNT=0
690 PRINT LEFT$(TIME$,5);
700 PRINT TAB(20)"The SixPacks Family's Library book locator";
710 PRINT TAB(70)DATE$
720 LOCATE  5,T:PRINT "Search & List";TOTALBOOKS;"entries by: "
730 LOCATE  8,T:PRINT "Book number"
740 LOCATE  9,T:PRINT "Title"    
750 LOCATE 10,T:PRINT "Author"
760 LOCATE 11,T:PRINT "Category"
770 LOCATE 12,T:PRINT "Publisher, ISBN, LOC info"
780 LOCATE 13,T:PRINT "Notes information"
790 LOCATE 14,T:PRINT "Multiple field query"
800 LOCATE 16,T:PRINT "Quit to interpreter"
810 LOCATE 17,T:PRINT "eXit"
820 LOCATE 25,T:PRINT "Press capital letter for selection";
830 GOSUB 1920 'ScreenPauseTilKeyPress
840 '---------------------
850 'ActionTakenOnKeyPress:
860 IF INSTR("bBtTaAcCpPnNmMqQxX",KP$)=0 THEN GOTO 630 'MainMenu
870 IF INSTR("qQ",KP$)>0 THEN CLS:LIST 190-390 'quit2Interpreter & list subrout.
880 IF INSTR("xX",KP$)>0 THEN 2240 'Exit2Dos
890 IF INSTR("bB",KP$)>0 THEN  940 'DisplayByRecordTapeDiskNumber
900 IF INSTR("tTaAcCpPnN",KP$)>0 THEN 1210 'DisplayByTitl|Auth|Categ|Pub|Note
910 IF INSTR("mM",KP$)>0 THEN 1460 'MultifieldSearch
920 'PRINT "Program end at:  ActionTakenOnKeyPress-MainMenu":END
930 '-------------------------------------
940 'DisplayByRecordTapeDiskNumber:
950 CLS
960 LOCATE 25,1
970 PRINT "RecCount=";TOTALBOOKS;
980 LOCATE 2,34: PRINT "AlphaRangeNo.":PRINT:PRINT
990 PRINT TAB(16)"A 1xx     G  7xx    M 13xx    S 19xx     Y 25xx"
1000 PRINT TAB(16)"B 2xx     H  8xx    N 14xx    T 20xx     Z 26xx"
1010 PRINT TAB(16)"C 3xx     I  9xx    O 15xx    U 21xx"
1020 PRINT TAB(16)"D 4xx     J 10xx    P 16xx    V 22xx"
1030 PRINT TAB(16)"E 5xx     K 11xx    Q 17xx    W 23xx"
1040 PRINT TAB(16)"F 6xx     L 12xx    R 18xx    X 24xx"
1050 LOCATE 12,24:PRINT "Input the book number"
1060 LOCATE 13,24:INPUT "keep book number between (100-2699): ";BNO$
1070 CLS
1080   IF BNO$="" THEN 630   'to main menu if no entry
1090   ENTRY.CHECK=VAL(BNO$) 'alphabet entrys set to zero
1100   IF ENTRY.CHECK <100 OR ENTRY.CHECK > 2699 THEN 940 'numeric range check
1110 GOSUB 1960 'ReadTheDataCards
1120   IF V$(1,1)="end of data" AND EASTEREGG=0 THEN GOTO 1870 'NoMatch
1130   IF V$(1,1)="end of data" AND EASTEREGG<>0 THEN GOTO 1820 'SearchComplet
1140   IF BNO$=V$(1,1) THEN GOSUB 2000 'PrintDataCard2Screen
1150   IF BNO$=V$(1,1) THEN LINECOUNT=LINECOUNT+1
1160   IF BNO$=V$(1,1) THEN EASTEREGG=EASTEREGG+1
1170   IF LINECOUNT=4 THEN GOSUB 1760 'ScreenStop@4Records
1180   GOTO 1110 '^^^^^^^^^^^^^^^^^^^^^^^^loop thru data
1190 'PRINT "ended at DisplayByRecordTapeOrDiskNumber":END
1200 '-------------------------------------
1210 'DisplayBy (Title|Author|Category|Publisher|note):
1220 CLS
1230 IF KP$="b"OR KP$="B" THEN KP=1  'book number
1240 IF KP$="t"OR KP$="T" THEN KP=2  'title
1250 IF KP$="a"OR KP$="A" THEN KP=3  'author
1260 IF KP$="c"OR KP$="C" THEN KP=4  'category
1270 IF KP$="p"OR KP$="P" THEN KP=5  'publisher
1280 IF KP$="n"OR KP$="N" THEN KP=6  'notes
1290 IF KP$="m"OR KP$="M" THEN KP=7  'multifield query
1300 LOCATE 8,20
1310 PRINT V$(7,1);V$(KP,2);:INPUT V$(KP,0)
1320   IF V$(KP,0)="" THEN 630  'MainMenu 
1330 CLS
1340 LOCATE 1,20
1350 PRINT V$(7,1);V$(KP,2);":  ";V$(KP,0)
1360 GOSUB 1960
1370   IF V$(1,1)="end of data" AND EASTEREGG = 0 THEN GOTO 1870 'NoMatch
1380   IF V$(1,1)="end of data" AND EASTEREGG <> 0 THEN GOTO 1820 'SerchComplet
1390   IF INSTR((V$(KP,1)),V$(KP,0))>0 THEN GOSUB 2000 'PrintDataCard2Screen
1400   IF INSTR((V$(KP,1)),V$(KP,0))>0 THEN LINECOUNT=LINECOUNT+1
1410   IF INSTR((V$(KP,1)),V$(KP,0))>0 THEN EASTEREGG=EASTEREGG+1
1420   IF LINECOUNT=4 THEN GOSUB 1760 'ScrollStop@4Records
1430   GOTO 1360 '^^^^^^^^^^^^^^^^^^^^^^^^loop thru data                  
1440 'END
1450 '-------------------------------------
1460 'MultipleFieldSearches:
1470 CLS
1480 PRINT:PRINT
1490 PRINT TAB(30) "Multiple Field Query"
1500 PRINT: PRINT: PRINT TAB(5) "                            TITLE: "
1510 PRINT TAB(5) "                           AUTHOR: "
1520 PRINT TAB(5) "                         CATEGORY: "
1530 PRINT TAB(5) "                        PUBLISHER: "
1540 PRINT TAB(5) "                             NOTE: "
1550 LOCATE  6,40:INPUT;V$(2,0)
1560 LOCATE  7,40:INPUT;V$(3,0)
1570 LOCATE  8,40:INPUT;V$(4,0)
1580 LOCATE  9,40:INPUT;V$(5,0)
1590 LOCATE 10,40:INPUT;V$(6,0)
1600   IF V$(2,0) ="" AND V$(3,0)="" AND V$(4,0)="" AND V$(5,0)="" AND V$(6,0)="" THEN GOTO 630 'goto MainMenu if no input
1610 LOCATE 25,1
1620 PRINT "Press the Anykey to search or 'N' to reedit query.";
1630 GOSUB 1920 'ScreenPauseTilKeyPress
1640   IF KP$="n" OR KP$="N" THEN 1460 'MultipleFieldSearches
1650 CLS
1660 GOSUB 1960 'ReadDataCard
1670   IF V$(1,1)="end of data" AND EASTEREGG=0 THEN GOTO 1870 'No match
1680   IF V$(1,1)="end of data" AND EASTEREGG<>0 THEN GOTO 1820 'Search complete
1690   IF INSTR(V$(2,1),V$(2,0))>0 AND INSTR(V$(3,1),V$(3,0))>0 AND INSTR(V$(4,1),V$(4,0))>0 AND INSTR(V$(5,1),V$(5,0))>0 AND INSTR(V$(6,1),V$(6,0))>0 THEN GOSUB 2000
1700   IF INSTR(V$(2,1),V$(2,0))>0 AND INSTR(V$(3,1),V$(3,0))>0 AND INSTR(V$(4,1),V$(4,0))>0 AND INSTR(V$(5,1),V$(5,0))>0 AND INSTR(V$(6,1),V$(6,0))>0 THEN LINECOUNT=LINECOUNT + 1
1710   IF INSTR(V$(2,1),V$(2,0))>0 AND INSTR(V$(3,1),V$(3,0))>0 AND INSTR(V$(4,1),V$(4,0))>0 AND INSTR(V$(5,1),V$(5,0))>0 AND INSTR(V$(6,1),V$(6,0))>0 THEN EASTEREGG=EASTEREGG + 1
1720   IF LINECOUNT=4 THEN GOSUB 1760 'ScreenScrollStop@4Records
1730   GOTO 1660 '^^^^^^^^^^^^^^^^^^^^^^^^^^loop thru data
1740 'END
1750 '---------------------------
1760 'ScreenScrollingStop@4Records:
1770 LOCATE 25,1:PRINT "Press the Anykey to continue.                       ";
1780 GOSUB 1920 'ScreenPauseTilKeyPress
1790 LINECOUNT=0:CLS
1800 RETURN ' to either 1)Bno   2)Titl|Auth|Cat|Publ|Note   3)MultiField
1810 '---------------------------
1820 'SearchCompleted:
1830 LOCATE 25,1:PRINT "Search completed...                 press the Anykey";
1840 GOSUB 1920 'ScreenPauseTilKeyPress
1850 GOTO 630 'MainMenu
1860 '---------------------------
1870 'NoMatchFound:
1880 LOCATE 25,1:PRINT "Sorry, no match found.  Please try again.           ";
1890 GOSUB 1920 'ScreenPauseTilKeyPress
1900 GOTO 630 'MainMenu
1910 '---------------------------
1920 'ScreenScrollingPauser:
1930 KP$=INKEY$:IF KP$="" THEN 1930 'pause   decision
1940 RETURN 'to any of many calling subroutines...
1950 '---------------------------
1960 'ReadDataCard:
1970 READ V$(1,1),V$(2,1),V$(3,1),V$(4,1),V$(5,1),V$(6,1)
1980 RETURN 'to calling subroutine ie CountData,...
1990 '---------------------------
2000 'PrintDataCard2Screen:
2010 PRINT V$(1,1);"   ";V$(2,1)
2020 PRINT V$(3,1)
2030 PRINT V$(4,1);" - ";V$(5,1)
2040 PRINT V$(6,1)
2050 PRINT
2060 FOR DL=1 TO 4000:NEXT
2070 RETURN
2080 '---------------------------
2090 'PrintAllData2Printer:    This is a small program within a program *
2100 CLS
2110 RESTORE
2120 READ BOOKNO$,TITLE$,AUTHOR$,CATEGORY$,PUBLISHER$,NOTE$
2130   IF LINECOUNT=4 THEN GOSUB 1760    'ScrollStop@4Records
2140   IF BOOKNO$="end of data" THEN END  'or change code to goto 630 main menu
2150   PRINT BOOKNO$;TAB(6)TITLE$
2160   PRINT TAB(6) AUTHOR$
2170   PRINT TAB(6) CATEGORY$;" - ";PUBLISHER$
2180   PRINT TAB(6) NOTE$
2190   PRINT
2200   LINECOUNT=LINECOUNT+1
2210   GOTO 2120 '^^^^^^^^^^^^^^^^^^^loop thru data printing everything...
2220 END
2230 '---------------------------
2240 'Exit2DOS:
2250 CLS
2260 LOCATE 10,20
2270 PRINT V$(0,0);V$(0,1);V$(0,2);
2280 FOR DL=1 TO 40000!:NEXT:RUN"MNU-DBAS.BAS
2290 '---------------------------
2300 'DataCards:
2310 '-BOOKNO$-    --TITLE$--     --AUTHOR$--    --CATEGORY$--     --PUBLISHER$--NOTE$ (ISBN, LOC & NOTES)
2320 DATA"100" , "A  Title   ", "  Author  ", "  Category  ", "   Publisher", "  ISBN, Loc & notes"
2330 DATA"200" , "B  Title   ", "  Author  ", "  Category  ", "   Publisher", "  ISBN, Loc & notes"
2340 DATA"300" , "C  Title   ", "  Author  ", "  Category  ", "   Publisher", "  ISBN, Loc & notes"
2350 DATA"400" , "D  Title   ", "  Author  ", "  Category  ", "   Publisher", "  ISBN, Loc & notes"
2360 DATA"500" , "E  Title   ", "  Author  ", "  Category  ", "   Publisher", "  ISBN, Loc & notes"
2370 DATA"600" , "F  Title   ", "  Author  ", "  Category  ", "   Publisher", "  ISBN, Loc & notes"
2380 DATA"700" , "G  Title   ", "  Author  ", "  Category  ", "   Publisher", "  ISBN, Loc & notes"
2390 DATA"800" , "H  Title   ", "  Author  ", "  Category  ", "   Publisher", "  ISBN, Loc & notes"
2400 DATA"900" , "I  Title   ", "  Author  ", "  Category  ", "   Publisher", "  ISBN, Loc & notes"
2410 DATA"1000", "J  Title   ", "  Author  ", "  Category  ", "   Publisher", "  ISBN, Loc & notes"
2411 DATA"1001", "Joy of Cooking", "  Author  ", "  Category  ", "   Publisher", "  ISBN, Loc & notes"
2420 DATA"1100", "K  Title   ", "  Author  ", "  Category  ", "   Publisher", "  ISBN, Loc & notes"
2430 DATA"1200", "L  Title   ", "  Author  ", "  Category  ", "   Publisher", "  ISBN, Loc & notes"
2440 DATA"1300", "M  Title   ", "  Author  ", "  Category  ", "   Publisher", "  ISBN, Loc & notes"
2450 DATA"1400", "N  Title   ", "  Author  ", "  Category  ", "   Publisher", "  ISBN, Loc & notes"
2460 DATA"1500", "O  Title   ", "  Author  ", "  Category  ", "   Publisher", "  ISBN, Loc & notes"
2470 DATA"1600", "P  Title   ", "  Author  ", "  Category  ", "   Publisher", "  ISBN, Loc & notes"
2480 DATA"1700", "Q  Title   ", "  Author  ", "  Category  ", "   Publisher", "  ISBN, Loc & notes"
2490 DATA"1800", "R  Title   ", "  Author  ", "  Category  ", "   Publisher", "  ISBN, Loc & notes"
2500 DATA"1900", "S  Title   ", "  Author  ", "  Category  ", "   Publisher", "  ISBN, Loc & notes"
2510 DATA"2000", "T  Title   ", "  Author  ", "  Category  ", "   Publisher", "  ISBN, Loc & notes"
2520 DATA"2100", "U  Title   ", "  Author  ", "  Category  ", "   Publisher", "  ISBN, Loc & notes"
2530 DATA"2200", "V  Title   ", "  Author  ", "  Category  ", "   Publisher", "  ISBN, Loc & notes"
2540 DATA"2300", "W  Title   ", "  Author  ", "  Category  ", "   Publisher", "  ISBN, Loc & notes"
2550 DATA"2400", "X  Title   ", "  Author  ", "  Category  ", "   Publisher", "  ISBN, Loc & notes"
2560 DATA"2500", "Y  Title   ", "  Author  ", "  Category  ", "   Publisher", "  ISBN, Loc & notes"
2570 DATA"2600", "Z  Title   ", "  Author  ", "  Category  ", "   Publisher", "  ISBN, Loc & notes"
2580 DATA"end of data",,,,,
2590 END
2600 '-----------------------------
2610 'Embedded Commands
2620 '              SAVE"BOOKS.DB",A
2630  CLS:LIST 190-390  'roadmap of subroutines
2640  CLS:LIST 390-520  'display variable names


TOP Index TOC
Hosted by www.Geocities.ws

1