home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1988-03-01 | 31.4 KB | 981 lines |
- 100 REM*************************************************************************
- 150 REM* *
- 200 REM* GRADEBOOK HANDLER 1.0 *
- 250 REM* *
- 300 REM*************************************************************************
- 350 KEY OFF
- 400 REM ************* DIMENSION ARRAYS *****************
- 450 REM *
- 500 REM ************* DIMENSION STUDENT RECORD NODE -(SRN) ***********
- 550 DIM SRNLASTNAME$(31), SRNFIRSTNAME$(31), SRNDOWNLINK(31), SRNDATALINK(31)
- 600 REM ************* DIMENSION ASSIGNMENT RECORD NODE -(ARN) *******
- 650 DIM ARNNAME$(25), ARNTYPE(25), ARNPOSSPTS(25), ARNLINK(25)
- 700 REM ************* DIMENSION RESULTS RECORD NODE -(RRN) ***********
- 750 REM * RRN(X,1) = STUDENT SCORE , RRN(X,2) = LINK TO ASSIGNMENT
- 800 REM * RRN(X,3) = LINK TO NEXT RRN
- 850 DIM RRN(781,3)
- 900 DIM LOCPOS(25), BOUND(7), BROWN(7), WEIGHTS(5), ASSIGNMENT$(100),POINTER(4)
- 950 DIM EARNED(4,25), POSSIBLE(4,25)
- 1000 REM ************************** INTIALIZATION ***************************
- 1050 REM
- 1100 FILENAME$ = ""
- 1150 BLANKLINE$ = " "
- 1200 BROWN(0) = 1: BROWN(1) =0.9: BROWN(2) =0.8: BROWN(3) =0.7: BROWN(4) =0.6: BROWN(5) = 0
- 1250 BOUND(0) = 1: BOUND(1) =0.9: BOUND(2) = 0.8: BOUND(3) =0.7: BOUND(4) =0.6: BOUND(5) = 0
- 1300 WEIGHT(1) = 50: WEIGHT(2) = 10: WEIGHT(3) = 20: WEIGHT(4) = 20
- 1350 DESCRIP$(1) = "ASSIGNMENTS": FF$ = CHR$(12)
- 1400 DESCRIP$(2) = "QUIZZES": DESCRIP$(3) = "MIDTERM": DESCRIP$(4) = "FINAL"
- 1450 REM
- 1500 REM ********************** PRINT USING FORMATS **************************
- 1550 REM
- 1600 SUMMARY$ = "##) \ \ \ \ ###.### \\"
- 1650 TITLE$ = " \ \"
- 1700 FORMAT$ = "\ \ ###/### "
- 1750 SUBTOTAL$ = " \ \ Total ####/#### = ###.##% Weighted( ##% )= ###.###%"
- 1850 NME1$ = "##) \ \ \ \"
- 1900 NME$ ="\ \ \ \ Brown Grade = \\ Brown Total% ###.###"
- 1950 RST$ = " \\ ### - ## ### - ##"
- 2000 INST$ = " Instructor's Grading Total ###.##%"
- 2050 REM
- 2100 REM
- 2150 REM ******** MAIN MENU DRIVER **********
- 2200 REM *
- 2250 CLS:ON ERROR GOTO 0
- 2300 PRINT : PRINT " MAIN MENU "
- 2350 PRINT
- 2400 PRINT " 1) Create A New Class File"
- 2450 PRINT
- 2500 PRINT " 2) Load A Class File"
- 2550 PRINT
- 2600 PRINT " 3) Save A Class File"
- 2650 PRINT
- 2700 PRINT " 4) Student Record Handler"
- 2750 PRINT
- 2800 PRINT " 5) Assignment Record Handler"
- 2850 PRINT
- 2900 PRINT " 6) Report Handler"
- 2950 PRINT
- 3000 PRINT " 7) Reset Result Parameters"
- 3050 PRINT
- 3100 PRINT " 8) Quit"
- 3150 PRINT
- 3200 PRINT " PLease enter your selection (1 - 8)";
- 3250 LVALUE = 1 : HVALUE = 8 : ROW = 20 : COL = 42
- 3300 GOSUB 41800
- 3350 IF VAL(ZZ$) = 8 THEN GOSUB 39200: GOTO 3500
- 3400 ON VAL(ZZ$) GOSUB 4100,6050,7450,8750,15850,26050,37150
- 3450 GOTO 2150
- 3500 IF A$ = "N" THEN GOTO 2150
- 3550 '
- 3600 '
- 3650 '
- 3700 '
- 3750 '
- 3800 END
- 3850 '
- 3900 '
- 3950 '
- 4000 '
- 4050 '
- 4100 REM ************** CREATE NEW FILE *************
- 4150 REM *
- 4200 CLS
- 4250 IF FILENAME$ ="" THEN GOTO 4400
- 4300 GOSUB 47800
- 4350 GOTO 5750
- 4400 GOSUB 44800 : FILENAME$ = ZN$
- 4450 CLS :LOCATE 10,10 :PRINT "Creating the new file : ";FILENAME$
- 4500 REM ***************** BUILD LINKS FOR SRN, ARN, RRN **************
- 4550 '
- 4600 FOR X = 2 TO 30 : SRNDOWNLINK(X) = X + 1 : NEXT X
- 4650 FOR X = 1 TO 24 : ARNLINK(X) = X + 1 : NEXT X
- 4700 FOR X = 2 TO 780 : RRN(X,3) = X + 1 : NEXT X
- 4750 REM************ SPECIAL CASES ************************
- 4800 RRN(781,3) = -1 : SRNDOWNLINK(31) = -1 : ARNLINK(25) = -1 : RRN(1,3) = 1
- 4850 SRNDOWNLINK(1) = 1 : HEADER = 1 : SAV = 2 : AAV = 1 : RAV = 2
- 4900 SRNDATALINK(1) = 1 : SRNLASTNAME$(1) = "Zzzzzzzzzzzz"
- 4950 REM *********** WRITE TO FILE ************************
- 5000 OPEN "O", #1,FILENAME$ : PRINT #1, HEADER;SAV;RAV;AAV
- 5050 PRINT #1, BOUND(0),BOUND(1),BOUND(2),BOUND(3),BOUND(4),BOUND(5)
- 5100 PRINT #1, BROWN(0),BROWN(1),BROWN(2),BROWN(3),BROWN(4),BROWN(5)
- 5150 PRINT #1, WEIGHT(1),WEIGHT(2),WEIGHT(3),WEIGHT(4)
- 5200 FOR X = 1 TO 31
- 5250 PRINT #1,CHR$(34);SRNLASTNAME$(X);CHR$(34);CHR$(34);SRNFIRSTNAME$(X); CHR$(34);SRNDOWNLINK(X);SRNDATALINK(X)
- 5300 NEXT X
- 5350 FOR X = 1 TO 781
- 5400 PRINT #1, RRN(X,1);RRN(X,2);RRN(X,3)
- 5450 NEXT X
- 5500 FOR X = 1 TO 25
- 5550 PRINT #1,CHR$(34);ARNNAME$(X);CHR$(34);ARNTYPE(X);ARNPOSSPTS(X);ARNLINK(X)
- 5600 NEXT X
- 5650 BEEP : CLS : LOCATE 10,10 : PRINT " File: ";FILENAME$;" is built"
- 5700 FOR DELAY = 1 TO 1000 : NEXT DELAY
- 5750 CLOSE : RETURN
- 5800 '
- 5850 '
- 5900 '
- 5950 '
- 6000 '
- 6050 REM *********** LOAD A FILE ****************
- 6100 REM *
- 6150 CLS : LOADING$ ="TRUE"
- 6200 IF FILENAME$ <> "" THEN GOSUB 47800 : GOTO 7150
- 6250 GOSUB 44800 : IF ZN$ = "EMPTY" THEN FILENAME$ = "": GOTO 7150
- 6300 FILENAME$ = ZN$
- 6350 OPEN "I",#1,FILENAME$
- 6400 CLS : LOCATE 10,10 :PRINT " Loading file : ";FILENAME$
- 6450 INPUT #1, HEADER,SAV,RAV,AAV
- 6500 INPUT #1, BOUND(0),BOUND(1),BOUND(2),BOUND(3),BOUND(4),BOUND(5)
- 6550 INPUT #1, BROWN(0),BROWN(1),BROWN(2),BROWN(3),BROWN(4),BROWN(5)
- 6600 INPUT #1, WEIGHT(1),WEIGHT(2),WEIGHT(3),WEIGHT(4)
- 6650 FOR X = 1 TO 31
- 6700 INPUT #1, SRNLASTNAME$(X),SRNFIRSTNAME$(X),SRNDOWNLINK(X),SRNDATALINK(X)
- 6750 NEXT X
- 6800 FOR X = 1 TO 781
- 6850 INPUT #1, RRN(X,1), RRN(X,2), RRN(X,3)
- 6900 NEXT X
- 6950 FOR X = 1 TO 25
- 7000 INPUT #1, ARNNAME$(X), ARNTYPE(X), ARNPOSSPTS(X), ARNLINK(X)
- 7050 NEXT X
- 7100 CLS : LOCATE 10,10 :PRINT "Done loading the file" : FOR Z= 1 TO 1000 : NEXT Z
- 7150 LOADING$ ="":CLOSE #1: RETURN
- 7200 '
- 7250 '
- 7300 '
- 7350 '
- 7400 '
- 7450 REM *********** SAVE A FILE ********************
- 7500 REM *
- 7550 CLS
- 7600 IF FILENAME$ = "" THEN GOSUB 48000 : GOTO 8450
- 7650 LOCATE 10,10 : PRINT " SAVING FILE : ";FILENAME$
- 7700 REM *********** WRITE TO FILE ************************
- 7750 OPEN "O", #1,FILENAME$ : PRINT #1, HEADER,SAV,RAV,AAV
- 7800 PRINT #1, BOUND(0),BOUND(1),BOUND(2),BOUND(3),BOUND(4),BOUND(5)
- 7850 PRINT #1, BROWN(0),BROWN(1),BROWN(2),BROWN(3),BROWN(4),BROWN(5)
- 7900 PRINT #1, WEIGHT(1),WEIGHT(2),WEIGHT(3),WEIGHT(4)
- 7950 FOR X = 1 TO 31
- 8000 PRINT #1,CHR$(34);SRNLASTNAME$(X);CHR$(34);CHR$(34);SRNFIRSTNAME$(X); CHR$(34);SRNDOWNLINK(X);SRNDATALINK(X)
- 8050 NEXT X
- 8100 FOR X = 1 TO 781
- 8150 PRINT #1, RRN(X,1);RRN(X,2);RRN(X,3)
- 8200 NEXT X
- 8250 FOR X = 1 TO 25
- 8300 PRINT #1,CHR$(34);ARNNAME$(X);CHR$(34);ARNTYPE(X);ARNPOSSPTS(X);ARNLINK(X)
- 8350 NEXT X
- 8400 BEEP : CLS : LOCATE 10,10 : PRINT " FILE: ";FILENAME$;" IS SAVED"
- 8450 CLOSE #1 : RETURN
- 8500 '
- 8550 '
- 8600 '
- 8650 '
- 8700 '
- 8750 REM ********************** STUDENT RECORD HANDLER *****************
- 8800 REM *
- 8850 IF FILENAME$ ="" THEN GOSUB 48000 : GOTO 9800
- 8900 CLS : PRINT
- 8950 PRINT " STUDENT RECORD HANDLER"
- 9000 PRINT
- 9050 PRINT
- 9100 PRINT " 1) Create New Student Record
- 9150 PRINT
- 9200 PRINT " 2) Delete Student Record"
- 9250 PRINT
- 9300 PRINT " 3) Update Student Record "
- 9350 PRINT
- 9400 PRINT " 4) Return to Main Menu"
- 9450 PRINT
- 9500 PRINT " Please enter your selection(1-4)";
- 9550 LVALUE = 1 : HVALUE = 4 : ROW = 13 : COL = 39
- 9600 GOSUB 41800
- 9650 IF VAL(ZZ$) = 4 THEN 9800
- 9700 ON VAL(ZZ$) GOSUB 10000,12200,13800
- 9750 GOTO 8750
- 9800 RETURN
- 9850 '
- 9900 '
- 9950 REM
- 10000 REM ***************** CREATE NEW STUDENT RECORD ****************
- 10050 REM *
- 10100 CLS
- 10150 LOCATE 2,10 : PRINT " Create A New Student Record "
- 10200 LOCATE 10,10 : PRINT " Please input new student's - First Name";
- 10250 ROW = 10 : COL = 51 : GOSUB 43100 : FIRSTNAME$ = SNAME$
- 10300 LOCATE 12,10 : PRINT " Please input new student's - Last Name";
- 10350 ROW = 12 : COL = 51 : GOSUB 43100 : LNAME$ = SNAME$
- 10400 GOSUB 39750 : IF NSRN = -1 THEN GOSUB 48200 : GOTO 12000
- 10450 GOSUB 40000 : IF NRRN = -1 THEN GOSUB 48100 : GOTO 12000
- 10500 TAIL = HEADER : FIRST = SRNDOWNLINK(HEADER)
- 10550 WHILE (SRNLASTNAME$(FIRST) + SRNFIRSTNAME$(FIRST) < LNAME$+FIRSTNAME$)
- 10600 TAIL = FIRST
- 10650 FIRST = SRNDOWNLINK(FIRST)
- 10700 WEND
- 10750 SRNDOWNLINK(TAIL) = NSRN
- 10800 SRNDOWNLINK(NSRN) = FIRST
- 10850 SRNLASTNAME$(NSRN) = LNAME$
- 10900 SRNFIRSTNAME$(NSRN) = FIRSTNAME$
- 10950 '
- 11000 SRNDATALINK(NSRN) = NRRN
- 11050 RRN(NRRN,3) = NRRN
- 11100 SRNFRONT = SRNDOWNLINK(HEADER): NODE = HEADER
- 11150 WHILE(SRNFRONT <> HEADER)
- 11200 IF (SRNFRONT <> NSRN) THEN NODE = SRNFRONT:SRNFRONT = HEADER: GOTO 11300
- 11250 SRNFRONT = SRNDOWNLINK(SRNFRONT)
- 11300 WEND
- 11350 IF NODE = HEADER THEN GOTO 12000
- 11400 NULL = SRNDATALINK(NODE) : NEWNULL = SRNDATALINK(NSRN): NEWTAIL = NEWNULL
- 11450 RRNTAIL = NULL : RRNFRONT = RRN(RRNTAIL,3)
- 11500 WHILE(RRNFRONT <> NULL)
- 11550 GOSUB 40000
- 11600 RRN(NRRN,3) = NEWNULL
- 11650 RRN(NRRN,1) = 0
- 11700 RRN(NRRN,2) = RRN(RRNFRONT,2)
- 11750 RRN(NEWTAIL,3) = NRRN
- 11800 NEWTAIL = NRRN
- 11850 RRNTAIL = RRNFRONT
- 11900 RRNFRONT = RRN(RRNFRONT,3)
- 11950 WEND
- 12000 RETURN
- 12050 '
- 12100 '
- 12150 '
- 12200 REM ****************** DELETE STUDENT RECORD *********************
- 12250 REM *
- 12300 CLS : LOCATE 10,10 :BEEP : PRINT " You have entered 'Delete Student Record'."
- 12350 LOCATE 11,10 : PRINT " would you like to continue (Y/N)";
- 12400 INPUT A$ : IF(( LEFT$(A$,1) = "Y") OR (LEFT$(A$,1) = "y")) THEN GOTO 12550
- 12450 IF((LEFT$(A$,1) = "N") OR (LEFT$(A$,1) = "n")) THEN GOTO 13600
- 12500 GOTO 12300
- 12550 CLS : LOCATE 10,10 : PRINT "Please input Last Name of student to delete";
- 12600 ROW = 10 : COL = 56 : GOSUB 43100 : LNAME$ = SNAME$
- 12650 LOCATE 12,10 : PRINT "Please input First Name of the student to delete";
- 12700 ROW = 12 : COL = 60 : GOSUB 43100 : FIRSTNAME$ = SNAME$
- 12750 TAIL = HEADER : FRONT = SRNDOWNLINK(TAIL) : FOUND$ = "FALSE"
- 12800 WHILE ((FRONT <> HEADER) AND (FOUND$ = "FALSE"))
- 12850 IF SRNLASTNAME$(FRONT) <> LNAME$ THEN GOTO 13150
- 12900 IF SRNFIRSTNAME$(FRONT)<> FIRSTNAME$ THEN GOTO 13150
- 12950 SRNDOWNLINK(TAIL) = SRNDOWNLINK(FRONT)
- 13000 DSRN = FRONT
- 13050 FOUND$= "TRUE"
- 13100 GOTO 13250
- 13150 TAIL = FRONT
- 13200 FRONT = SRNDOWNLINK(TAIL)
- 13250 WEND
- 13300 IF FOUND$= "FALSE" THEN GOSUB 48300 : GOTO 13600
- 13350 TAIL = SRNDATALINK(DSRN)
- 13400 FRONT = RRN(TAIL,3)
- 13450 RRN(TAIL,3) = RAV
- 13500 RAV = FRONT
- 13550 GOSUB 40500 ' RETURN SRN TO POOL.
- 13600 RETURN
- 13650 '
- 13700 '
- 13750 '
- 13800 REM ***************** UPDATE STUDENT RECORD **********************
- 13850 '
- 13900 CLS : BEEP : LOCATE 10,10 : PRINT " You have entered Update Student Record "
- 13950 LOCATE 11,10 : PRINT " would you like to continue (Y/N)";
- 14000 INPUT A$ : IF LEFT$(A$,1) = "Y" OR LEFT$(A$,1) = "y" THEN GOTO 14150
- 14050 IF ((LEFT$(A$,1) = "N") OR (LEFT$(A$,1) = "n") THEN GOTO 15500
- 14100 GOTO 13900
- 14150 CLS : LOCATE 10,10 : PRINT "Please input Last Name of student to update";
- 14200 ROW = 10 : COL = 65 : GOSUB 43100 : LNAME$ = SNAME$
- 14250 LOCATE 12,10 : PRINT " Please input the First Name of the student to update";
- 14300 ROW = 12 : COL = 65 : GOSUB 43100 : FIRSTNAME$ = SNAME$
- 14350 TAIL = HEADER : FRONT = SRNDOWNLINK(TAIL) : FOUND$ = "FALSE"
- 14400 WHILE ((FRONT <> HEADER) AND (FOUND$ = "FALSE"))
- 14450 IF SRNLASTNAME$(FRONT) <> LNAME$ THEN GOTO 14750
- 14500 IF SRNFIRSTNAME$(FRONT) <> FIRSTNAME$ THEN GOTO 14750
- 14550 SRNDOWNLINK(TAIL) = SRNDOWNLINK(FRONT)
- 14600 NODE = FRONT
- 14650 FOUND$ = "TRUE"
- 14700 GOTO 14850
- 14750 TAIL = FRONT
- 14800 FRONT = SRNDOWNLINK(FRONT)
- 14850 WEND
- 14900 IF FOUND$ = "FALSE" THEN GOSUB 48300 : GOTO 15500
- 14950 BEEP : LOCATE 18,10 : PRINT " Please input student's New Last Name";
- 15000 ROW = 18 : COL = 49 : GOSUB 43100 : SRNLASTNAME$(NODE) = SNAME$
- 15050 LOCATE 20,10 : PRINT " Please input student's New First Name";
- 15100 ROW = 20 : COL = 49 : GOSUB 43100 : SRNFIRSTNAME$(NODE) = SNAME$
- 15150 TAIL = HEADER : FRONT = SRNDOWNLINK(TAIL)
- 15200 WHILE (SRNLASTNAME$(FRONT) < SRNLASTNAME$(NODE))
- 15250 TAIL = FRONT
- 15300 FRONT = SRNDOWNLINK(TAIL)
- 15350 WEND
- 15400 SRNDOWNLINK(TAIL) = NODE
- 15450 SRNDOWNLINK(NODE) = FRONT
- 15500 RETURN
- 15550 '
- 15600 '
- 15650 '
- 15700 '
- 15750 '
- 15800 '
- 15850 REM ************* ASSIGNMENT RECORD HANDLER ******************
- 15900 REM *
- 15950 CLS
- 16000 IF FILENAME$ = "" THEN GOSUB 48000: GOTO 17050
- 16050 PRINT
- 16100 PRINT " ASSIGNMENT RECORD HANDLER"
- 16150 PRINT
- 16200 PRINT " 1) Create New Assignment Record"
- 16250 PRINT
- 16300 PRINT " 2) Delete Assignment Record"
- 16350 PRINT
- 16400 PRINT " 3) Update Assignment Record"
- 16450 PRINT
- 16500 PRINT " 4) Update Student Result Record"
- 16550 PRINT
- 16600 PRINT " 5) Return to Main Menu"
- 16650 PRINT
- 16700 PRINT " Please enter your selection";
- 16750 LVALUE = 1 : HVALUE = 5 : ROW = 14 : COL = 33
- 16800 GOSUB 41800
- 16850 IF VAL(ZZ$) = 5 THEN RETURN
- 16900 '
- 16950 ON VAL(ZZ$) GOSUB 17200,19600,21200,22850
- 17000 GOTO 15850
- 17050 RETURN
- 17100 '
- 17150 '
- 17200 REM ****** CREATE NEW ASSIGNEMNT RECORD *******
- 17250 CLS : BEEP : LOCATE 2,10 : PRINT "You have entered Create Assignment Record"
- 17300 LOCATE 3,10 : PRINT "Would you like to continue (Y/N)";
- 17350 INPUT A$ : IF(( LEFT$(A$,1) = "Y")OR (LEFT$(A$,1) ="y")) THEN GOTO 17500
- 17400 IF LEFT$(A$,1) = "N" OR (LEFT$(A$,1) = "n") THEN GOTO 19400
- 17450 GOTO 17250
- 17500 CLS : LOCATE 10,3 : PRINT " Please input the assignment name :";
- 17550 INPUT ASSIGN$
- 17600 LOCATE 12,3 : PRINT " Please enter the possible points for the assignment ";
- 17650 LVALUE = 0 : HVALUE = 1000 : ROW = 12 : COL = 56 : GOSUB 41800
- 17700 PTSVALUE = VAL(ZZ$)
- 17710 LOCATE 16,20:PRINT "( 1 = regular assignment )"
- 17711 LOCATE 17,20:PRINT "( 2 = quiz )"
- 17712 LOCATE 18,20:PRINT "( 3 = mid quarter )"
- 17713 LOCATE 19,20:PRINT "( 4 = final exam )"
- 17750 LOCATE 14,10 : PRINT " Please input assignment type (1-4) ";
- 17800 LVALUE = 1 : HVALUE = 4 : ROW = 14 : COL = 46
- 17850 GOSUB 41800
- 17900 ATYPE = VAL(ZZ$)
- 17950 CLS : LOCATE 15,10 : PRINT " WORKING......."
- 18000 GOSUB 40250 ' GET NEXT ARN
- 18050 IF NARN = -1 THEN GOSUB 48400 : GOTO 19400
- 18100 ARNNAME$(NARN) = ASSIGN$
- 18150 ARNTYPE(NARN) = ATYPE
- 18200 ARNPOSSPTS(NARN) = PTSVALUE
- 18250 GOSUB 41100 : STUDENTS = 30 - AVAIL
- 18300 GOSUB 41450 : IF STUDENTS > AVAIL THEN GOSUB 48200 : GOTO 19400
- 18350 SRNTAIL = HEADER : SRNFRONT = SRNDOWNLINK(SRNTAIL)
- 18400 IF SRNTAIL = SRNFRONT THEN GOSUB 48500 : GOTO 19400
- 18450 WHILE (SRNFRONT <> HEADER)
- 18500 NULL = SRNDATALINK(SRNFRONT)
- 18550 RRNTAIL = NULL : RRNFRONT = RRN(RRNTAIL,3)
- 18600 WHILE (RRNFRONT <> NULL)
- 18650 RRNTAIL = RRNFRONT
- 18700 RRNFRONT = RRN(RRNTAIL,3)
- 18750 WEND
- 18800 GOSUB 40000 ' GET NEXT RRN
- 18850 RRN(RRNTAIL,3) = NRRN
- 18900 RRN(NRRN,3) = RRNFRONT
- 18950 CLS : LOCATE 10,10
- 19000 PRINT "Please input the score for ";SRNFIRSTNAME$(SRNFRONT);" ";
- 19050 PRINT SRNLASTNAME$(SRNFRONT) : LOCATE 11,10 :
- 19100 PRINT " Score = "; : ROW = 11 : COL = 19 : LVALUE = 0 : HVALUE = PTSVALUE
- 19150 GOSUB 41800
- 19200 RRN(NRRN,1) = VAL(ZZ$) : RRN(NRRN,2) = NARN
- 19250 SRNTAIL = SRNFRONT
- 19300 SRNFRONT = SRNDOWNLINK(SRNTAIL)
- 19350 WEND
- 19400 RETURN
- 19450 '
- 19500 '
- 19550 '
- 19600 REM *********** DELETE ASSIGNMENT RECORD **************
- 19650 REM *
- 19700 CLS : BEEP : LOCATE 2,10 : PRINT " You have entered Delete Assignment Record"
- 19750 LOCATE 3,10 : PRINT " Would you like to continue (Y/N)";
- 19800 INPUT A$ : IF ((LEFT$(A$,1) = "Y") OR (LEFT$(A$,1) = "y")) THEN GOTO 19950
- 19850 IF ((LEFT$(A$,1) = "N") OR (LEFT$(A$,1) = "n")) THEN GOTO 21000
- 19900 GOTO 19700
- 19950 IF (SRNDOWNLINK(HEADER) = HEADER) THEN GOSUB 48500 : GOTO 21000
- 20000 NULL = SRNDATALINK(SRNDOWNLINK(HEADER))
- 20050 RRNTAIL = NULL : RRNFRONT = RRN(RRNTAIL,3)
- 20100 IF RRNTAIL = RRNFRONT THEN GOSUB 48600 : GOTO 21000
- 20150 GOSUB 24950
- 20200 CLS : LOCATE 15,10 : PRINT " WORKING......"
- 20250 SRNTAIL = HEADER : SRNFRONT = SRNDOWNLINK(SRNTAIL)
- 20300 IF SRNTAIL = SRNFRONT THEN GOSUB 48500 : GOTO 21000
- 20350 WHILE (SRNFRONT <> HEADER)
- 20400 NULL = SRNDATALINK(SRNFRONT): LOCATION = 1
- 20450 RRNTAIL = NULL : RRNFRONT = RRN(RRNTAIL,3) : LOCATION = RRN(RRNFRONT,2)
- 20500 WHILE (LOCATION <> X)
- 20550 RRNTAIL = RRNFRONT
- 20600 RRNFRONT = RRN(RRNTAIL,3)
- 20650 LOCATION = RRN(RRNFRONT,2)
- 20700 WEND
- 20750 RRN(RRNTAIL,3) = RRN(RRNFRONT,3) : DRRN = RRNFRONT : DARN = RRN(RRNFRONT,2)
- 20800 GOSUB 40700
- 20850 SRNTAIL = SRNFRONT
- 20900 SRNFRONT = SRNDOWNLINK(SRNTAIL)
- 20950 WEND
- 20960 GOSUB 40900
- 21000 RETURN
- 21050 REM
- 21100 REM ********************** UPDATE ASSIGNMENT RECORD ****************
- 21150 REM
- 21200 CLS : BEEP : LOCATE 2,10 : PRINT " You have entered Update Assignment Record"
- 21250 LOCATE 3,10 : PRINT " would you like to continue (Y/N)";
- 21300 INPUT A$ : IF ((LEFT$(A$,1) = "Y") OR (LEFT$(A$,1) = "y")) THEN GOTO 21450
- 21350 IF ((LEFT$(A$,1) = "N") OR (LEFT$(A$,1) = "n")) THEN GOTO 22650
- 21400 GOTO 21200
- 21450 NULL = SRNDATALINK(SRNDOWNLINK(HEADER)): RRNTAIL = NULL
- 21500 RRNFRONT = RRN(RRNTAIL,3)
- 21550 IF RRNTAIL = RRNFRONT THEN GOSUB 48600 : GOTO 22650
- 21600 GOSUB 24950
- 21650 CLS :PRINT: PRINT " Assignment Name ";ARNNAME$(X)
- 21700 PRINT " Assignment Type ";ARNTYPE(X)
- 21750 PRINT " Assignment Points ";ARNPOSSPTS(X)
- 21800 LOCATE 15,10:PRINT " 1) Assignment Name"
- 21850 PRINT " 2) Assignment Type"
- 21900 PRINT " 3) Assignment Points"
- 21950 PRINT " 4) Return to Main Menu"
- 22000 PRINT : PRINT " Please input your selection(1-4)"; : LVALUE = 1 : HVALUE = 4
- 22050 ROW = 20 : COL = 37 : GOSUB 41800
- 22100 IF VAL(ZZ$) = 4 THEN RETURN
- 22150 ON VAL(ZZ$) GOSUB 22250,22350,22500
- 22200 GOTO 21650
- 22250 CLS: LOCATE 10,10: PRINT"Input New Assignment Name ";:INPUT ARNNAME$(X)
- 22300 RETURN
- 22350 CLS: LOCATE 10,10: PRINT "Input New Assignment Type(1-4) ";
- 22400 LVALUE = 1: HVALUE = 4: ROW = 10: COL = 41: GOSUB 41800
- 22450 ARNTYPE(X) = VAL(ZZ$) : RETURN
- 22500 CLS: LOCATE 10,10: PRINT" Input New Assignment Points ";
- 22550 LVALUE = 0 : HVALUE = 1000: ROW = 10: COL = 39: GOSUB 41800
- 22600 ARNPOSSPTS(X) = VAL(ZZ$) : RETURN
- 22650 RETURN
- 22700 '
- 22750 '
- 22800 '
- 22850 REM ************** UPDATE STUDENT RESULT RECORD ***************
- 22900 REM *
- 23050 CLS : BEEP : LOCATE 2,10 : PRINT " You have entered Update Student Result Record"
- 23100 LOCATE 3,10 : PRINT " would you like to continue (Y/N)";
- 23150 INPUT A$ : IF ((LEFT$(A$,1) = "Y") OR (LEFT$(A$,1) = "y")) THEN GOTO 23300
- 23200 IF ((LEFT$(A$,1) = "N") OR (LEFT$(A$,1) = "n")) THEN GOTO 24700
- 23250 GOTO 23050
- 23300 IF (SRNDOWNLINK(HEADER) = HEADER) THEN GOSUB 48500 : GOTO 24700
- 23350 CLS : LOCATE 10,10 : PRINT "Please input Last Name of student to update";
- 23400 ROW = 10 : COL = 65 : GOSUB 43100 : LNAME$ = SNAME$
- 23450 LOCATE 12,10 : PRINT " Please input the First Name of the student to update";
- 23500 ROW = 12 : COL = 65 : GOSUB 43100 : FIRSTNAME$ = SNAME$
- 23550 TAIL = HEADER : FRONT = SRNDOWNLINK(TAIL) : FOUND$ = "FALSE"
- 23600 WHILE ((FRONT <> HEADER) AND (FOUND$ = "FALSE"))
- 23650 IF SRNLASTNAME$(FRONT) <> LNAME$ THEN GOTO 23900
- 23700 IF SRNFIRSTNAME$(FRONT) <> FIRSTNAME$ THEN GOTO 23900
- 23750 NODE = FRONT
- 23800 FOUND$ = "TRUE"
- 23850 GOTO 24000
- 23900 TAIL = FRONT
- 23950 FRONT = SRNDOWNLINK(TAIL)
- 24000 WEND
- 24050 IF FOUND$ = "FALSE" THEN GOSUB 48300 : GOTO 24700
- 24100 NULL = SRNDATALINK(NODE): RRNTAIL = NULL
- 24150 RRNFRONT = RRN(RRNTAIL,3)
- 24200 IF RRNTAIL = RRNFRONT THEN GOSUB 48600 : GOTO 24700
- 24250 GOSUB 24950
- 24300 WHILE (RRN(RRNFRONT,2) <> X)
- 24350 RRNTAIL = RRNFRONT
- 24400 RRNFRONT = RRN(RRNTAIL,3)
- 24450 WEND
- 24500 CLS : LOCATE 10,1 : PRINT " STUDENT : ";SRNFIRSTNAME$(NODE);" ";SRNLASTNAME$(NODE)
- 24550 PRINT " Current Score = ";RRN(RRNFRONT,1)
- 24600 PRINT " New Score = ";:LVALUE = 0 : HVALUE = ARNPOSSPTS(RRN(RRNFRONT,2))
- 24650 ROW = 12 : COL = 19 : GOSUB 41800 : RRN(RRNFRONT,1) = VAL(ZZ$)
- 24700 RETURN
- 24750 '
- 24800 '
- 24850 '
- 24900 '
- 24910 REM ********************* PRINT ASSIGNEMNTS TO SCREEN *******************
- 24920 REM
- 24950 CLS : PRINT ""
- 25000 PRINT " Assignments are truncated tp 1st 30 characters."
- 25050 PRINT "*******************************************************************************"
- 25100 PRINT " No. Name No. Name"
- 25150 PRINT : X =0
- 25200 WHILE (RRNFRONT <> NULL)
- 25250 X = X + 1 : LOCPOS(X) = RRN(RRNFRONT,2)
- 25300 PRINT USING " ##) \ \";X;ARNNAME$(RRN(RRNFRONT,2));
- 25350 RRNTAIL = RRNFRONT : RRNFRONT = RRN(RRNTAIL,3)
- 25400 IF (X/2) = INT(X/2) THEN PRINT ""
- 25450 WEND
- 25500 LOCATE 19,1 :
- 25550 PRINT "*******************************************************************************"
- 25600 PRINT " Please enter the number associated with the assignment that you"
- 25650 PRINT " wish to select.";:LVALUE = 1 : HVALUE = X : ROW = 21 : COL = 17
- 25700 GOSUB 41800 : X =LOCPOS(VAL(ZZ$))
- 25750 RETURN
- 25800 '
- 25850 '
- 25900 '
- 25950 '
- 26000 '
- 26050 REM *********** REPORT HANDLER ****************************
- 26100 REM *
- 26150 IF FILENAME$ = "" THEN GOSUB 48000 : GOTO 26900
- 26200 CLS: POKE 1883,0
- 26250 PRINT : PRINT " REPORT HANDLER"
- 26300 PRINT : PRINT " 1) Class Summary List"
- 26350 PRINT : PRINT " 2) Class Detail List"
- 26400 PRINT : PRINT " 3) Individual Report
- 26450 PRINT : PRINT " 4) Result Parameters Report"
- 26500 PRINT : PRINT " 5) Class List"
- 26550 PRINT : PRINT " 6) Return to Main Menu"
- 26600 PRINT : PRINT " Please enter your selection";
- 26650 LVALUE = 1 : HVALUE = 6 : ROW = 16 : COL = 32
- 26700 GOSUB 41800
- 26750 ON VAL(ZZ$) GOSUB 27100,29450,30400,34200,35600
- 26800 IF VAL(ZZ$) = 6 THEN 26900
- 26850 GOTO 26050
- 26900 RETURN
- 26950 '
- 27000 '
- 27050 '
- 27100 REM ******************** CLASS SUMMARY LIST ********************
- 27150 REM *
- 27200 GOSUB 47300: STUDENTS = 0
- 27250 IF PEEK(1883) = 0 THEN CLS
- 27300 PRINT " ****************** CLASS SUMMARY LIST ************* ": PRINT ""
- 27350 PRINT ""
- 27400 PRINT " BROWN% GRADE"
- 27450 SRNTAIL = HEADER: SRNFRONT = SRNDOWNLINK(HEADER)
- 27500 NUMSTDS = 0
- 27550 IF SRNTAIL = SRNFRONT THEN GOSUB 48500: GOTO 29300
- 27600 WHILE( SRNFRONT <> HEADER)
- 27650 NUMSTDS = NUMSTDS + 1
- 27700 FOR X = 1 TO 4 : TOTEARNED(X)=0: TOTPTS(X)=0: NEXT X
- 27750 NULL = SRNDATALINK(SRNFRONT): RRNTAIL = NULL : RRNFRONT =RRN(RRNTAIL,3)
- 27800 IF RRNTAIL = RRNFRONT THEN GOSUB 48600: GOTO 29300
- 27850 WHILE(RRNFRONT <> NULL)
- 27900 TYPE = ARNTYPE(RRN(RRNFRONT,2))
- 27950 TOTEARNED(TYPE) = TOTEARNED(TYPE) + RRN(RRNFRONT,1)
- 28000 TOTPTS(TYPE) = TOTPTS(TYPE) + ARNPOSSPTS(RRN(RRNFRONT,2))
- 28050 RRNTAIL = RRNFRONT
- 28100 RRNFRONT = RRN(RRNFRONT,3)
- 28150 WEND
- 28200 TOTAL =0
- 28250 FOR X = 1 TO 4
- 28300 WTPERCENT(X) = 0 : IF TOTPTS(X) = 0 THEN GOTO 28400
- 28350 WTPERCENT(X) = TOTEARNED(X)/TOTPTS(X) *(WEIGHT(X)/100)
- 28400 TOTAL = TOTAL + WTPERCENT(X)
- 28450 NEXT X
- 28500 X = 0: RANGE = 0: SUB =0
- 28550 WHILE (SUB = 0) AND ( X <= 5)
- 28600 X = X + 1
- 28650 IF BOUND(X) <= TOTAL THEN RANGE = BOUND(X-1) - BOUND(X): SUB = X
- 28700 WEND
- 28750 BRANGE = BROWN(SUB - 1) - BROWN(SUB)
- 28800 SCORE = BROWN(SUB) + (BRANGE *((TOTAL - BOUND(SUB))/RANGE))
- 28850 STUDENTS = STUDENTS + 1
- 28900 IF PEEK(1883) = 0 THEN IF STUDENTS > 15 THEN GOSUB 36500
- 28950 IF SUB = 5 THEN GRADE$ = "NC": GOTO 29100
- 29000 GRADE$ = CHR$(64 + SUB)
- 29050 '
- 29100 PRINT USING SUMMARY$;NUMSTDS;SRNLASTNAME$(SRNFRONT),SRNFIRSTNAME$(SRNFRONT),SCORE*100;GRADE$
- 29150 SRNTAIL = SRNFRONT: SRNFRONT = SRNDOWNLINK(SRNFRONT)
- 29200 WEND
- 29250 IF PEEK(1883) = 0 THEN GOSUB 36500: GOTO 29350
- 29300 PRINT FF$
- 29350 RETURN
- 29400 REM *
- 29450 CLS
- 29500 '
- 29550 '
- 29600 '
- 29650 REM ******************** CLASS DETAIL REPORT ****************************
- 29700 '
- 29750 PRINT " CLASS DETAIL REPORT"
- 29800 GOSUB 47300 'ECHO TO PRINTER?
- 29850 SRNTAIL = HEADER: SRNFRONT = SRNDOWNLINK(SRNTAIL)
- 29900 IF SRNTAIL = SRNFRONT THEN GOSUB 48500: GOTO 30200
- 29950 WHILE (SRNFRONT <> HEADER)
- 30000 GOSUB 31600 ' INDIVIDUAL REPORT ROUTINE
- 30050 SRNTAIL = SRNFRONT
- 30100 SRNFRONT = SRNDOWNLINK(SRNFRONT)
- 30150 WEND
- 30200 RETURN
- 30250 '
- 30300 '
- 30350 '
- 30400 REM ********************* INDIVIDUAL REPORT *********************
- 30450 REM *
- 30500 REM *
- 30550 CLS
- 30600 LOCATE 10,10 : PRINT "Please input Last Name of Student ";
- 30650 ROW = 10 : COL = 56 : GOSUB 43100 : LNAME$ = SNAME$
- 30700 LOCATE 12,10 : PRINT "Please input First Name of the student ";
- 30750 ROW = 12 : COL = 60 : GOSUB 43100 : FIRSTNAME$ = SNAME$
- 30800 SRNTAIL = HEADER : SRNFRONT = SRNDOWNLINK(SRNTAIL) : FOUND$ = "FALSE"
- 30850 WHILE ((SRNFRONT <> HEADER) AND (FOUND$ = "FALSE"))
- 30900 IF SRNLASTNAME$(SRNFRONT) <> LNAME$ THEN GOTO 31100
- 30950 IF SRNFIRSTNAME$(SRNFRONT)<> FIRSTNAME$ THEN GOTO 31100
- 31000 FOUND$= "TRUE"
- 31050 GOTO 31200
- 31100 SRNTAIL = SRNFRONT
- 31150 SRNFRONT = SRNDOWNLINK(SRNTAIL)
- 31200 WEND
- 31250 IF FOUND$= "FALSE" THEN GOSUB 48300 : GOTO 34000
- 31300 GOSUB 47300: IF PEEK(1883) = 0 THEN CLS: GOTO 31600
- 31350 '
- 31400 '
- 31450 '
- 31500 '
- 31550 PRINT " ***************** INDIVIDUAL REPORT ****************": PRINT ""
- 31600 FOR X = 1 TO 4 : TOTEARNED(X)=0: TOTPTS(X)=0: POINTER(X)=0: NEXT X
- 31650 NULL = SRNDATALINK(SRNFRONT): RRNTAIL = NULL : RRNFRONT =RRN(RRNTAIL,3)
- 31700 IF RRNTAIL = RRNFRONT THEN GOSUB 48600: GOTO 34000
- 31750 WHILE(RRNFRONT <> NULL)
- 31800 TYPE = ARNTYPE(RRN(RRNFRONT,2))
- 31850 POINTER(TYPE) = POINTER(TYPE) + 1
- 31900 ASSIGNMENT$((TYPE-1)*25+POINTER(TYPE)) = ARNNAME$(RRN(RRNFRONT,2))
- 31950 TOTEARNED(TYPE) = TOTEARNED(TYPE) + RRN(RRNFRONT,1)
- 32000 EARNED(TYPE,POINTER(TYPE))= RRN(RRNFRONT,1)
- 32050 POSSIBLE(TYPE,POINTER(TYPE)) = ARNPOSSPTS(RRN(RRNFRONT,2))
- 32100 TOTPTS(TYPE) = TOTPTS(TYPE) + ARNPOSSPTS(RRN(RRNFRONT,2))
- 32150 RRNTAIL = RRNFRONT
- 32200 RRNFRONT = RRN(RRNFRONT,3)
- 32250 WEND
- 32300 TOTAL =0
- 32350 FOR X = 1 TO 4
- 32400 WTPERCENT(X) = 0 : IF TOTPTS(X) = 0 THEN GOTO 32500
- 32450 WTPERCENT(X) = TOTEARNED(X)/TOTPTS(X) *(WEIGHT(X)/100)
- 32500 TOTAL = TOTAL + WTPERCENT(X)
- 32550 NEXT X
- 32600 X = 0: RANGE = 0: SUB = 0
- 32650 WHILE (SUB = 0) AND (X <= 5)
- 32700 X = X + 1
- 32750 IF BOUND(X) <= TOTAL THEN RANGE = BOUND(X-1) - BOUND(X): : SUB = X
- 32800 WEND
- 32850 BRANGE = BROWN(SUB - 1) - BROWN(SUB)
- 32900 SCORE = BROWN(SUB) + (BRANGE *((TOTAL - BOUND(SUB))/RANGE))
- 32950 IF SUB = 5 THEN GRADE$ ="NC" : GOTO 33050
- 33000 GRADE$ = CHR$(64 + SUB)
- 33050 PRINT USING NME$;SRNLASTNAME$(SRNFRONT);SRNFIRSTNAME$(SRNFRONT),GRADE$,SCORE*100
- 33100 FOR X = 1 TO 4
- 33150 IF POINTER(X)=0 THEN GOTO 33500
- 33200 IF PEEK(1883) = 255 THEN PRINT ""
- 33250 FOR Y = 1 TO POINTER(X) STEP 2
- 33300 PRINT USING FORMAT$;ASSIGNMENT$((X-1)*25+Y),EARNED(X,Y),POSSIBLE(X,Y);
- 33350 IF POINTER(X) < (Y+1) THEN PRINT "": GOTO 33450
- 33400 PRINT USING FORMAT$;ASSIGNMENT$((X-1)*25+Y+1),EARNED(X,Y+1),POSSIBLE(X,Y+1)
- 33450 NEXT Y
- 33500 NEXT X
- 33550 IF PEEK(1883) = 255 THEN PRINT ""
- 33600 FOR X = 1 TO 4
- 33650 IF TOTPTS(X) = 0 THEN GOTO 33750
- 33700 PRINT USING SUBTOTAL$;DESCRIP$(X);TOTEARNED(X);TOTPTS(X);(TOTEARNED(X)/TOTPTS(X))*100;WEIGHT(X);WTPERCENT(X)*100
- 33750 NEXT X
- 33800 PRINT " --------"
- 33850 PRINT USING INST$;TOTAL*100
- 33900 IF PEEK(1883) = 0 THEN GOSUB 36500
- 33950 PRINT FF$
- 34000 RETURN
- 34050 '
- 34100 '
- 34150 '
- 34200 REM ******************** RESULTS PARAMETERS REPORT ***************
- 34250 REM *
- 34300 GOSUB 47300
- 34350 PRINT" ****************** RESULTS PARAMETERS REPORT ************" : PRINT""
- 34400 PRINT " Instructor's Brown's"
- 34450 PRINT " Grade Range Range"
- 34500 UP = 1: UPBROWN = 1: OFFSET = 64
- 34550 FOR X = 1 TO 4
- 34600 IF UP < 0 THEN UP = 0
- 34650 IF UPBROWN < 0 THEN UPBROWN = 0
- 34700 PRINT USING RST$;CHR$(OFFSET+X),UP*100,BOUND(X)*100,UPBROWN*100,BROWN(X)*100
- 34750 UP = BOUND(X) - 0.01 : UPBROWN = BROWN(X) - 0.01
- 34800 NEXT X
- 34850 IF UP < 0 THEN UP = 0
- 34900 IF UPBROWN < 0 THEN UPBROWN = 0
- 34950 PRINT USING RST$;"NC",UP*100,BOUND(5)*100,UPBROWN*100,BROWN(5)*100
- 35000 FOR X = 1 TO 3: PRINT : NEXT X
- 35050 PRINT " Instructor's Weights"
- 35100 PRINT " ";
- 35150 FOR X = 1 TO 4: PRINT USING TITLE$;DESCRIP$(X);: NEXT X
- 35200 PRINT "": PRINT " ";
- 35250 FOR X = 1 TO 4: PRINT USING " ###% ";WEIGHT(X);:NEXT X
- 35300 IF PEEK(1883) = 0 THEN GOSUB 36500
- 35350 PRINT FF$
- 35400 RETURN
- 35450 '
- 35500 '
- 35550 '
- 35600 REM ************************* CLASS LIST **************************
- 35650 SRNTAIL = HEADER : SRNFRONT = SRNDOWNLINK(SRNTAIL):X =0: ROW = 2
- 35700 IF SRNTAIL = SRNFRONT THEN GOSUB 48600: GOTO 36300
- 35750 GOSUB 47300
- 35800 PRINT " *************** CLASS LIST ********************"
- 35850 PRINT ""
- 35900 WHILE(SRNFRONT <> HEADER)
- 35950 X = X + 1
- 36000 IF PEEK(1883) = 0 THEN IF X > 15 THEN ROW =ROW + 1: LOCATE ROW,43
- 36050 PRINT USING NME1$;X;SRNLASTNAME$(SRNFRONT);SRNFIRSTNAME$(SRNFRONT)
- 36100 SRNTAIL = SRNFRONT: SRNFRONT = SRNDOWNLINK(SRNTAIL)
- 36150 WEND
- 36200 IF PEEK(1883) = 0 THEN GOSUB 36500
- 36250 PRINT FF$
- 36300 RETURN
- 36350 '
- 36400 '
- 36450 '
- 36500 REM *************** SCREEN DELAY ***************
- 36550 REM *
- 36600 LOCATE 23,10 : PRINT " PRESS ANY KEY TO CONTINUE"
- 36650 A$ = INKEY$
- 36700 IF A$ = "" THEN GOTO 36600
- 36750 PRINT FF$
- 36800 STUDENTS = 1
- 36850 RETURN
- 36900 '
- 36950 '
- 37000 '
- 37050 '
- 37100 '
- 37150 REM **************** RESET RESULT PARAMETERS ****************
- 37200 REM *
- 37250 CLS : BEEP : LOCATE 2,10 : PRINT "You have entered Reset Result Parameters"
- 37300 LOCATE 3,10 : PRINT "would you like to continue (Y/N)";
- 37350 INPUT A$ : IF(( LEFT$(A$,1) = "Y")OR (LEFT$(A$,1) ="y")) THEN GOTO 37500
- 37400 IF LEFT$(A$,1) = "N" OR (LEFT$(A$,1) = "n") THEN GOTO 38950
- 37450 GOTO 37250
- 37500 CLS: LOCATE 10,1 :
- 37550 PRINT" 1) Change Letter Grade Bounds"
- 37600 PRINT" 2) Change Student Work Weights"
- 37650 PRINT" 3) Return to Main Menu"
- 37700 PRINT " Please enter your selection (1-3) ";:ROW = 13: COL = 36:LVALUE = 1 : HVALUE = 3: GOSUB 41800
- 37750 IF VAL(ZZ$) = 3 THEN RETURN
- 37800 ON VAL(ZZ$) GOSUB 37900,38500
- 37850 GOTO 37500
- 37900 UP = 1
- 37950 FOR X = 1 TO 5
- 38000 IF X = 5 THEN GRADE$ = "NC": GOTO 38100
- 38050 GRADE$ = CHR$(64 + X)
- 38100 CLS : LOCATE 10,10 : PRINT " Grade : ";GRADE$
- 38150 LOCATE 11,10 : PRINT "Upper Bound = ";UP*100
- 38200 LOCATE 12,10 : PRINT "Lower Bound = ";: LVALUE = 0:HVALUE = UP*100: ROW = 12 : COL = 24: GOSUB 41800
- 38250 BOUND(X) = VAL(ZZ$)/100
- 38300 IF BOUND(X) = 0 THEN UP = 0: GOTO 38400
- 38350 UP = BOUND(X) - 0.01
- 38400 NEXT X
- 38450 RETURN
- 38500 CLS: LOCATE 10,1
- 38550 PRINT " Homework weight in % ";:LVALUE =0: HVALUE = 100: ROW = 10
- 38600 COL = 30 : GOSUB 41800: WEIGHT(1) = VAL(ZZ$)
- 38650 PRINT " Quizzes weight in % ";: ROW =11: GOSUB 41800: WEIGHT(2) = VAL(ZZ$)
- 38700 PRINT " Midterm weight in % ";: ROW =12: GOSUB 41800: WEIGHT(3) = VAL(ZZ$)
- 38750 PRINT " Final weight in % ";:ROW = 13: GOSUB 41800: WEIGHT(4) =VAL(ZZ$)
- 38800 TOTAL = 0 : FOR X = 1 TO 4 : TOTAL = TOTAL + WEIGHT(X): NEXT X
- 38850 '
- 38900 IF TOTAL > 100 THEN GOSUB 48700 : GOTO 38500
- 38950 RETURN
- 39000 '
- 39050 '
- 39100 '
- 39150 '
- 39200 REM **************** QUIT ROUTINE *************************
- 39250 REM *
- 39300 CLS
- 39350 LOCATE 10,1 : PRINT "Remember that you must save the class file to"
- 39400 PRINT "save all the changes that you have made."
- 39450 LOCATE 20,10: BEEP:PRINT " DO YOU WISH TO QUIT (Y/N)";
- 39500 INPUT A$: A$ = LEFT$(A$,1)
- 39550 IF A$ = "Y" OR A$ = "y" THEN GOTO 39700
- 39600 IF A$ = "N" OR A$ = "n" THEN A$ = "N": GOTO 39700
- 39650 GOTO 39450
- 39700 RETURN
- 39750 REM ********* GET NEXT SRN ***************
- 39800 IF SAV = -1 THEN NSRN = -1 : GOTO 39950
- 39850 NSRN = SAV
- 39900 SAV = SRNDOWNLINK(NSRN)
- 39950 RETURN
- 40000 REM ********** GET NEXT RRN ***************
- 40050 IF RAV = -1 THEN NRRN = -1 : GOTO 40200
- 40100 NRRN = RAV
- 40150 RAV = RRN(NRRN,3)
- 40200 RETURN
- 40250 REM ********** GET NEXT ARN ***************
- 40300 IF AAV = -1 THEN NARN = -1 : GOTO 40450
- 40350 NARN = AAV
- 40400 AAV = ARNLINK(NARN)
- 40450 RETURN
- 40500 REM ********* DISPOSE - SRN **************
- 40550 SRNDOWNLINK(DSRN) = SAV
- 40600 SAV = DSRN
- 40650 RETURN
- 40700 REM *********** DISPOSE RRN ***************
- 40750 RRN(DRRN,3) = RAV
- 40800 RAV = DRRN
- 40850 RETURN
- 40900 REM ********** DISPOSE SRN ***************
- 40950 ARNLINK(DARN) = AAV
- 41000 AAV = DARN
- 41050 RETURN
- 41100 REM *********** GET NUMBER OF SRN'S LEFT ****
- 41150 TAV = SAV : AVAIL = 0
- 41200 WHILE TAV <> -1
- 41250 AVAIL = AVAIL + 1
- 41300 TAV = SRNDOWNLINK(TAV)
- 41350 WEND
- 41400 RETURN
- 41450 REM ************ GET NUMBER OF RRN'S LEFT ****
- 41500 TAV = RAV : AVAIL = 0
- 41550 WHILE TAV <> -1
- 41600 AVAIL = AVAIL + 1
- 41650 TAV = RRN(TAV,3)
- 41700 WEND
- 41750 RETURN
- 41800 REM ********** NUMBERIC VALIDATOR **********
- 41850 INPUT ZZ$
- 41900 IF ((LEFT$(ZZ$,1) = "0") AND ( VAL(ZZ$) = 0 )) THEN GOTO 42000
- 41950 IF VAL(ZZ$) = 0 THEN 42200
- 42000 ZVAL = VAL(ZZ$)
- 42050 IF ZVAL < LVALUE OR ZVAL > HVALUE THEN 42200
- 42100 GOTO 42550
- 42150 GOTO 42250
- 42200 LOCATE 22,5: PRINT " PLEASE ENTER A NUMBER BETWEEN ";LVALUE;" AND ";HVALUE
- 42250 BEEP
- 42300 FOR DELAY = 1 TO 500 : NEXT DELAY
- 42350 BEEP
- 42400 FOR DELAY = 1 TO 500 : NEXT DELAY
- 42450 GOSUB 42600
- 42500 LOCATE ROW,COL : GOTO 41850
- 42550 RETURN
- 42600 REM ********* SCREEN BLANKER *****************
- 42650 LOCATE ROW,COL
- 42700 FOR XXX = 1 TO 80-COL
- 42750 PRINT " ";
- 42800 NEXT XXX
- 42850 '
- 42900 FOR XXX = ROW + 1 TO 23
- 42950 PRINT BLANKLINE$
- 43000 NEXT XXX
- 43050 RETURN
- 43100 REM ********** SRN DATA NAME'S VALIDATOR ****************
- 43150 LOCATE ROW,COL : INPUT T$
- 43200 WHILE((LEFT$(T$,1) = " ") AND (LEN(T$) > 1))
- 43250 T$ = RIGHT$(T$,LEN(T$)-1)
- 43300 WEND
- 43350 IF T$ = " " THEN GOTO 44400
- 43400 WHILE((RIGHT$(T$,1) = " ") AND ( LEN(T$) > 1))
- 43450 T$ = LEFT$(T$,LEN(T$) -1)
- 43500 WEND
- 43550 D$ = "": EFLAG = 0
- 43600 FOR I = 1 TO LEN(T$)
- 43650 IF (EFLAG =1) THEN GOTO 43950
- 43700 TT = ASC(MID$(T$,I,1))
- 43750 IF (TT > 64) AND (TT < 91) THEN D$ = D$ + CHR$(TT+32): GOTO 43950
- 43800 IF (TT > 96) AND (TT < 123) THEN D$ = D$ + CHR$(TT): GOTO 43950
- 43850 IF (TT = 32) THEN D$ = D$ + CHR$(TT): GOTO 43950
- 43900 EFLAG = 1
- 43950 NEXT I
- 44000 IF (EFLAG = 1) THEN GOTO 44600
- 44050 CFLAG = 1: T$ = ""
- 44100 FOR I = 1 TO LEN(D$)
- 44150 IF (CFLAG = 1) THEN T$ = T$ + CHR$(ASC(MID$(D$,I,1))-32): CFLAG =0: GOTO 44300
- 44200 IF (MID$(D$,I,1) = " ") THEN T$ = T$ + " ": CFLAG = 1: GOTO 44300
- 44250 T$ = T$ + MID$(D$,I,1)
- 44300 NEXT I
- 44350 SNAME$ = T$: RETURN
- 44400 LOCATE 22,10: BEEP
- 44450 PRINT "THE NAME IS ALL BLANKS": BEEP
- 44500 FOR X = 1 TO 1000: NEXT X: GOTO 44750
- 44550 GOSUB 42600 : GOTO 43100
- 44600 LOCATE 22,10: BEEP
- 44650 PRINT " SORRY YOUR NAME CONTAINS AN ILLEGAL CAHRACTER": BEEP
- 44700 FOR X = 1 TO 1000: NEXT X : GOTO 44750
- 44750 GOSUB 42600 : GOTO 43100
- 44800 REM ************ FILENAME VALIDATOR ***************
- 44850 REM *
- 44900 CLS
- 44950 PPOS = 0
- 45000 LOCATE 10,10
- 45050 PRINT " Please input your filename (A-Z, MAX CH.'S = 8)"; : INPUT ZN$
- 45100 IF LEN(ZN$) > 8 THEN GOTO 46000
- 45150 FOR X = 1 TO LEN(ZN$)
- 45200 TT =ASC( MID$(ZN$,X,1))
- 45248 IF ((TT > 44) AND (TT <46)) THEN GOTO 45400
- 45249 IF ((TT > 47) AND (TT <58)) THEN GOTO 45400
- 45250 IF ((TT > 63) AND (TT < 91)) THEN GOTO 45400
- 45300 IF ((TT > 96) AND ( TT < 123)) THEN GOTO 45400
- 45350 GOTO 46400
- 45400 NEXT X
- 45450 '
- 45500 ON ERROR GOTO 46750
- 45550 OPEN "I", #1, ZN$
- 45600 IF LOADING$ = "TRUE" THEN GOTO 47150
- 45650 BEEP
- 45700 LOCATE 20,10 : PRINT "FILENAME: ";ZN$;" ALREADY EXISTS"
- 45750 BEEP
- 45800 FOR DELAY = 1 TO 1000 : NEXT DELAY
- 45850 GOTO 44850
- 45900 '
- 45950 RETURN
- 46000 BEEP
- 46050 LOCATE 20,10
- 46100 PRINT " FILENAME CONTAINS TOO MANY CHARACTERS"
- 46150 LOCATE 21,10 : PRINT "REMEMBER MAXIMUM OF 8 CHARACTERS."
- 46200 BEEP
- 46250 FOR DELAY = 1 TO 1000 : NEXT DELAY
- 46300 GOTO 44850
- 46350 '
- 46400 BEEP
- 46450 LOCATE 20,10
- 46500 PRINT " ILLEGAL CHARACTER IN FILENAME"
- 46550 LOCATE 21,10 : PRINT " REMEMBER ONLY 'aA' to 'zZ' MAY BE USED.'
- 46600 BEEP
- 46650 FOR DELAY = 1 TO 1000 : NEXT DELAY
- 46700 GOTO 44850
- 46750 IF LOADING$ = "TRUE" THEN GOTO 46900
- 46800 CLOSE #1
- 46850 GOTO 47100
- 46900 CLS : BEEP
- 46950 LOCATE 10,10 : PRINT "FILE: ";ZN$;" DOES NOT EXIST"
- 47000 BEEP : FOR DELAY = 1 TO 1000 : NEXT DELAY
- 47050 ZN$ = "EMPTY"
- 47100 RESUME 47150
- 47150 CLOSE: RETURN
- 47200 REM ************************* PRINTER ROUTINE ***************************
- 47250 REM
- 47300 CLS : LOCATE 10,10
- 47350 PRINT " WOULD YOU LIKE THE REPORT ECHOED TO THE PRINTER(Y/N)";:
- 47400 INPUT A$: A$ = LEFT$(A$,1)
- 47450 IF (A$ = "Y") OR (A$ = "y") THEN POKE 1883,255: GOTO 47550
- 47500 IF ((A$ <> "N") AND (A$<> "n")) THEN 47300
- 47550 CLS : RETURN
- 47600 REM
- 47650 REM ************************* ERROR MESSAGES ****************************
- 47700 CLS:BEEP : LOCATE 10,10 : PRINT "THERE IS NOT A VALID NUMBER": BEEP
- 47750 FOR DELAY = 1 TO 1000 : NEXT DELAY : RETURN
- 47800 CLS : BEEP : LOCATE 10,10 : PRINT "USER FILE ALREADY EXISTS IN MEMORY": BEEP
- 47850 FOR DELAY = 1 TO 1000 : NEXT DELAY : RETURN
- 47900 CLS : BEEP : LOCATE 10,10 : PRINT "FILE DOES NOT EXIST ON DISK" : BEEP
- 47950 FOR DELAY = 1 TO 1000 : NEXT DELAY : RETURN
- 48000 CLS:BEEP : LOCATE 10,10 : PRINT "THERE IS NOT A CURRENT FILE IN MEMORY"
- 48050 FOR DELAY = 1 TO 1000 : NEXT DELAY : RETURN
- 48100 CLS : BEEP : LOCATE 10,10 : PRINT "OUT OF MEMORY IN RRN" : BEEP
- 48150 FOR DELAY = 1 TO 1000 : NEXT DELAY : RETURN
- 48200 CLS : BEEP : LOCATE 10,10 : PRINT "OUT OF MEMORY IN SRN" : BEEP
- 48250 FOR DELAY = 1 TO 1000 : NEXT DELAY : RETURN
- 48300 CLS:BEEP : LOCATE 10,10 : PRINT "STUDENT NAME IS NOT FOUND" : BEEP
- 48350 FOR DELAY = 1 TO 1000 : NEXT DELAY : RETURN
- 48400 CLS : BEEP : LOCATE 10,10 : PRINT "OUT OF MEMORY IN ARN" : BEEP
- 48450 FOR DELAY = 1 TO 1000 : NEXT DELAY : RETURN
- 48500 CLS : BEEP : LOCATE 10,10 : PRINT "FILE IS AN EMPTY LIST" : BEEP
- 48550 FOR DELAY = 1 TO 1000 : NEXT DELAY : RETURN
- 48600 CLS : BEEP : LOCATE 10,10 : PRINT "THERE ARE NO ASSIGNMENTS!": BEEP
- 48650 FOR DELAY = 1 TO 1000 : NEXT DELAY : RETURN
- 48700 CLS : BEEP : LOCATE 10,10 : PRINT "TOTAL % IS GREATER THAN 100": BEEP
- 48750 FOR DELAY = 1 TO 1000 : NEXT DELAY : RETURN
-