home *** CD-ROM | disk | FTP | other *** search
/ Software Du Jour / SoftwareDuJour.iso / SCHOOL / TEACHER / GRADEBK.BAS (.txt) next >
Encoding:
GW-BASIC  |  1988-03-01  |  31.4 KB  |  981 lines

  1. 100  REM*************************************************************************
  2. 150  REM*                                                                       *
  3. 200  REM*                  GRADEBOOK HANDLER  1.0                               *
  4. 250  REM*                                                                       *
  5. 300  REM*************************************************************************
  6. 350  KEY OFF
  7. 400  REM ************* DIMENSION ARRAYS *****************
  8. 450  REM *
  9. 500  REM ************* DIMENSION STUDENT RECORD NODE -(SRN) ***********
  10. 550  DIM SRNLASTNAME$(31), SRNFIRSTNAME$(31), SRNDOWNLINK(31), SRNDATALINK(31)
  11. 600  REM ************* DIMENSION ASSIGNMENT RECORD NODE  -(ARN) *******
  12. 650  DIM ARNNAME$(25), ARNTYPE(25), ARNPOSSPTS(25), ARNLINK(25)
  13. 700  REM ************* DIMENSION RESULTS RECORD NODE -(RRN) ***********
  14. 750  REM * RRN(X,1) = STUDENT SCORE , RRN(X,2) = LINK TO ASSIGNMENT
  15. 800  REM * RRN(X,3) = LINK TO NEXT RRN
  16. 850  DIM RRN(781,3)
  17. 900  DIM LOCPOS(25), BOUND(7), BROWN(7), WEIGHTS(5), ASSIGNMENT$(100),POINTER(4)
  18. 950  DIM EARNED(4,25), POSSIBLE(4,25)
  19. 1000  REM **************************  INTIALIZATION  ***************************
  20. 1050  REM
  21. 1100  FILENAME$ = ""
  22. 1150  BLANKLINE$ = "                                                                               "
  23. 1200  BROWN(0) = 1: BROWN(1) =0.9: BROWN(2) =0.8: BROWN(3) =0.7: BROWN(4) =0.6: BROWN(5) = 0
  24. 1250  BOUND(0) = 1: BOUND(1) =0.9: BOUND(2) = 0.8: BOUND(3) =0.7: BOUND(4) =0.6: BOUND(5) = 0
  25. 1300   WEIGHT(1) = 50: WEIGHT(2) = 10: WEIGHT(3) = 20: WEIGHT(4) = 20
  26. 1350  DESCRIP$(1) = "ASSIGNMENTS": FF$ = CHR$(12)
  27. 1400  DESCRIP$(2) = "QUIZZES": DESCRIP$(3) = "MIDTERM": DESCRIP$(4) = "FINAL"
  28. 1450  REM
  29. 1500  REM  ********************** PRINT USING FORMATS **************************
  30. 1550  REM
  31. 1600  SUMMARY$ = "##) \               \    \               \   ###.###        \\"
  32. 1650  TITLE$ = " \            \"
  33. 1700  FORMAT$ = "\                  \    ###/###       "
  34. 1750  SUBTOTAL$ = " \          \  Total   ####/#### = ###.##%      Weighted( ##% )= ###.###%"
  35. 1850  NME1$ = "##)  \              \  \        \"
  36. 1900  NME$ ="\          \   \          \  Brown Grade = \\    Brown Total% ###.###"
  37. 1950  RST$ = "       \\               ### - ##             ### - ##"
  38. 2000  INST$ = "                                     Instructor's Grading Total  ###.##%"
  39. 2050  REM
  40. 2100  REM
  41. 2150   REM  ********  MAIN MENU DRIVER **********
  42. 2200   REM  *
  43. 2250  CLS:ON ERROR GOTO 0
  44. 2300  PRINT : PRINT "                           MAIN MENU "
  45. 2350  PRINT
  46. 2400  PRINT "                          1) Create A New Class File"
  47. 2450  PRINT
  48. 2500  PRINT "                          2) Load A Class File"
  49. 2550  PRINT
  50. 2600  PRINT "                          3) Save A Class File"
  51. 2650  PRINT
  52. 2700  PRINT "                          4) Student Record Handler"
  53. 2750  PRINT
  54. 2800  PRINT "                          5) Assignment Record Handler"
  55. 2850  PRINT
  56. 2900  PRINT "                          6) Report Handler"
  57. 2950  PRINT
  58. 3000  PRINT "                          7) Reset Result Parameters"
  59. 3050  PRINT
  60. 3100  PRINT "                          8) Quit"
  61. 3150  PRINT
  62. 3200  PRINT "     PLease enter your selection  (1 - 8)";
  63. 3250  LVALUE = 1 : HVALUE = 8 : ROW = 20 : COL = 42
  64. 3300   GOSUB 41800
  65. 3350  IF VAL(ZZ$) = 8 THEN GOSUB 39200: GOTO 3500
  66. 3400   ON VAL(ZZ$) GOSUB 4100,6050,7450,8750,15850,26050,37150
  67. 3450  GOTO 2150
  68. 3500  IF A$ = "N" THEN GOTO 2150
  69. 3550  '
  70. 3600  '
  71. 3650  '
  72. 3700  '
  73. 3750  '
  74. 3800  END
  75. 3850  '
  76. 3900  '
  77. 3950  '
  78. 4000  '
  79. 4050  '
  80. 4100  REM **************  CREATE NEW FILE *************
  81. 4150  REM *
  82. 4200  CLS
  83. 4250  IF FILENAME$ ="" THEN GOTO 4400
  84. 4300  GOSUB 47800
  85. 4350  GOTO  5750
  86. 4400  GOSUB 44800 : FILENAME$ = ZN$
  87. 4450  CLS :LOCATE 10,10 :PRINT "Creating the new file : ";FILENAME$
  88. 4500  REM ***************** BUILD LINKS FOR SRN, ARN, RRN **************
  89. 4550  '
  90. 4600  FOR X = 2 TO 30 : SRNDOWNLINK(X) = X + 1 : NEXT X
  91. 4650  FOR X = 1 TO 24 : ARNLINK(X) = X +  1 : NEXT X
  92. 4700  FOR X = 2 TO 780 : RRN(X,3) = X + 1 : NEXT X
  93. 4750  REM************ SPECIAL CASES ************************
  94. 4800  RRN(781,3) = -1 : SRNDOWNLINK(31) = -1 : ARNLINK(25) = -1 : RRN(1,3) = 1
  95. 4850  SRNDOWNLINK(1) = 1 : HEADER = 1 : SAV = 2 : AAV = 1 : RAV = 2
  96. 4900  SRNDATALINK(1) = 1 : SRNLASTNAME$(1) = "Zzzzzzzzzzzz"
  97. 4950  REM *********** WRITE TO FILE ************************
  98. 5000  OPEN "O", #1,FILENAME$ : PRINT #1, HEADER;SAV;RAV;AAV
  99. 5050   PRINT #1, BOUND(0),BOUND(1),BOUND(2),BOUND(3),BOUND(4),BOUND(5)
  100. 5100   PRINT #1, BROWN(0),BROWN(1),BROWN(2),BROWN(3),BROWN(4),BROWN(5)
  101. 5150   PRINT #1, WEIGHT(1),WEIGHT(2),WEIGHT(3),WEIGHT(4)
  102. 5200  FOR X = 1 TO 31
  103. 5250   PRINT #1,CHR$(34);SRNLASTNAME$(X);CHR$(34);CHR$(34);SRNFIRSTNAME$(X);           CHR$(34);SRNDOWNLINK(X);SRNDATALINK(X)
  104. 5300  NEXT X
  105. 5350  FOR X = 1 TO 781
  106. 5400   PRINT #1, RRN(X,1);RRN(X,2);RRN(X,3)
  107. 5450  NEXT X
  108. 5500  FOR X = 1 TO 25
  109. 5550   PRINT #1,CHR$(34);ARNNAME$(X);CHR$(34);ARNTYPE(X);ARNPOSSPTS(X);ARNLINK(X)
  110. 5600  NEXT X
  111. 5650  BEEP : CLS : LOCATE 10,10 : PRINT " File: ";FILENAME$;" is built"
  112. 5700  FOR DELAY = 1 TO 1000 : NEXT DELAY
  113. 5750  CLOSE    : RETURN
  114. 5800  '
  115. 5850  '
  116. 5900  '
  117. 5950  '
  118. 6000  '
  119. 6050  REM ***********  LOAD A FILE ****************
  120. 6100  REM *
  121. 6150  CLS : LOADING$ ="TRUE"
  122. 6200  IF FILENAME$ <> "" THEN GOSUB 47800 : GOTO 7150
  123. 6250  GOSUB 44800 : IF ZN$ = "EMPTY" THEN FILENAME$ = "": GOTO 7150
  124. 6300  FILENAME$ = ZN$
  125. 6350  OPEN "I",#1,FILENAME$
  126. 6400  CLS : LOCATE 10,10 :PRINT " Loading file : ";FILENAME$
  127. 6450   INPUT #1, HEADER,SAV,RAV,AAV
  128. 6500   INPUT #1, BOUND(0),BOUND(1),BOUND(2),BOUND(3),BOUND(4),BOUND(5)
  129. 6550   INPUT #1, BROWN(0),BROWN(1),BROWN(2),BROWN(3),BROWN(4),BROWN(5)
  130. 6600   INPUT #1, WEIGHT(1),WEIGHT(2),WEIGHT(3),WEIGHT(4)
  131. 6650   FOR X = 1 TO 31
  132. 6700    INPUT #1, SRNLASTNAME$(X),SRNFIRSTNAME$(X),SRNDOWNLINK(X),SRNDATALINK(X)
  133. 6750   NEXT X
  134. 6800   FOR X = 1 TO 781
  135. 6850    INPUT #1, RRN(X,1), RRN(X,2), RRN(X,3)
  136. 6900   NEXT X
  137. 6950   FOR X = 1 TO 25
  138. 7000    INPUT #1, ARNNAME$(X), ARNTYPE(X), ARNPOSSPTS(X), ARNLINK(X)
  139. 7050   NEXT X
  140. 7100  CLS : LOCATE 10,10 :PRINT "Done loading the file" : FOR Z= 1 TO 1000 : NEXT Z
  141. 7150  LOADING$ ="":CLOSE #1: RETURN
  142. 7200  '
  143. 7250  '
  144. 7300  '
  145. 7350  '
  146. 7400  '
  147. 7450  REM *********** SAVE A FILE ********************
  148. 7500  REM *
  149. 7550  CLS
  150. 7600  IF FILENAME$ = "" THEN GOSUB 48000 : GOTO 8450
  151. 7650  LOCATE 10,10 : PRINT " SAVING FILE : ";FILENAME$
  152. 7700  REM *********** WRITE TO FILE ************************
  153. 7750  OPEN "O", #1,FILENAME$ : PRINT #1, HEADER,SAV,RAV,AAV
  154. 7800   PRINT #1, BOUND(0),BOUND(1),BOUND(2),BOUND(3),BOUND(4),BOUND(5)
  155. 7850   PRINT #1, BROWN(0),BROWN(1),BROWN(2),BROWN(3),BROWN(4),BROWN(5)
  156. 7900   PRINT #1, WEIGHT(1),WEIGHT(2),WEIGHT(3),WEIGHT(4)
  157. 7950  FOR X = 1 TO 31
  158. 8000   PRINT #1,CHR$(34);SRNLASTNAME$(X);CHR$(34);CHR$(34);SRNFIRSTNAME$(X);           CHR$(34);SRNDOWNLINK(X);SRNDATALINK(X)
  159. 8050  NEXT X
  160. 8100  FOR X = 1 TO 781
  161. 8150   PRINT #1, RRN(X,1);RRN(X,2);RRN(X,3)
  162. 8200  NEXT X
  163. 8250  FOR X = 1 TO 25
  164. 8300   PRINT #1,CHR$(34);ARNNAME$(X);CHR$(34);ARNTYPE(X);ARNPOSSPTS(X);ARNLINK(X)
  165. 8350  NEXT X
  166. 8400  BEEP : CLS : LOCATE 10,10 : PRINT " FILE: ";FILENAME$;" IS SAVED"
  167. 8450  CLOSE #1 : RETURN
  168. 8500  '
  169. 8550  '
  170. 8600  '
  171. 8650  '
  172. 8700  '
  173. 8750   REM ********************** STUDENT RECORD HANDLER  *****************
  174. 8800   REM *
  175. 8850  IF FILENAME$ ="" THEN GOSUB 48000 : GOTO 9800
  176. 8900        CLS : PRINT
  177. 8950   PRINT "          STUDENT RECORD HANDLER"
  178. 9000   PRINT
  179. 9050  PRINT
  180. 9100   PRINT "           1) Create New Student Record
  181. 9150  PRINT
  182. 9200   PRINT "           2) Delete Student Record"
  183. 9250  PRINT
  184. 9300   PRINT "           3) Update Student Record "
  185. 9350  PRINT
  186. 9400  PRINT "           4) Return to Main Menu"
  187. 9450  PRINT
  188. 9500   PRINT "      Please enter your selection(1-4)";
  189. 9550   LVALUE = 1 : HVALUE = 4 : ROW = 13 : COL = 39
  190. 9600  GOSUB 41800
  191. 9650  IF VAL(ZZ$) = 4 THEN 9800
  192. 9700  ON VAL(ZZ$) GOSUB 10000,12200,13800
  193. 9750  GOTO 8750
  194. 9800  RETURN
  195. 9850  '
  196. 9900  '
  197. 9950  REM
  198. 10000  REM *****************  CREATE NEW STUDENT RECORD ****************
  199. 10050  REM *
  200. 10100  CLS
  201. 10150  LOCATE 2,10 : PRINT " Create A New Student Record "
  202. 10200  LOCATE 10,10 : PRINT " Please input new student's - First Name";
  203. 10250  ROW = 10 : COL = 51 : GOSUB 43100 : FIRSTNAME$ = SNAME$
  204. 10300  LOCATE 12,10 : PRINT " Please input  new student's - Last Name";
  205. 10350  ROW = 12 : COL = 51 : GOSUB 43100 : LNAME$ = SNAME$
  206. 10400  GOSUB 39750 : IF NSRN = -1 THEN GOSUB 48200 : GOTO 12000
  207. 10450  GOSUB 40000 : IF NRRN = -1 THEN GOSUB 48100 : GOTO 12000
  208. 10500  TAIL = HEADER : FIRST = SRNDOWNLINK(HEADER)
  209. 10550  WHILE (SRNLASTNAME$(FIRST) + SRNFIRSTNAME$(FIRST) < LNAME$+FIRSTNAME$)
  210. 10600    TAIL = FIRST
  211. 10650    FIRST = SRNDOWNLINK(FIRST)
  212. 10700  WEND
  213. 10750  SRNDOWNLINK(TAIL) = NSRN
  214. 10800  SRNDOWNLINK(NSRN) = FIRST
  215. 10850  SRNLASTNAME$(NSRN) = LNAME$
  216. 10900  SRNFIRSTNAME$(NSRN) = FIRSTNAME$
  217. 10950  '
  218. 11000  SRNDATALINK(NSRN) = NRRN
  219. 11050  RRN(NRRN,3) = NRRN
  220. 11100  SRNFRONT = SRNDOWNLINK(HEADER): NODE = HEADER
  221. 11150  WHILE(SRNFRONT <> HEADER)
  222. 11200   IF (SRNFRONT <> NSRN) THEN NODE = SRNFRONT:SRNFRONT = HEADER: GOTO 11300
  223. 11250   SRNFRONT = SRNDOWNLINK(SRNFRONT)
  224. 11300  WEND
  225. 11350  IF NODE = HEADER THEN GOTO 12000
  226. 11400  NULL = SRNDATALINK(NODE) : NEWNULL = SRNDATALINK(NSRN): NEWTAIL = NEWNULL
  227. 11450  RRNTAIL = NULL : RRNFRONT = RRN(RRNTAIL,3)
  228. 11500  WHILE(RRNFRONT <> NULL)
  229. 11550   GOSUB 40000
  230. 11600   RRN(NRRN,3) = NEWNULL
  231. 11650   RRN(NRRN,1) = 0
  232. 11700   RRN(NRRN,2) = RRN(RRNFRONT,2)
  233. 11750   RRN(NEWTAIL,3) = NRRN
  234. 11800   NEWTAIL = NRRN
  235. 11850   RRNTAIL = RRNFRONT
  236. 11900   RRNFRONT = RRN(RRNFRONT,3)
  237. 11950  WEND
  238. 12000  RETURN
  239. 12050  '
  240. 12100  '
  241. 12150  '
  242. 12200  REM ****************** DELETE STUDENT RECORD *********************
  243. 12250  REM *
  244. 12300  CLS : LOCATE 10,10 :BEEP : PRINT " You have entered 'Delete Student Record'."
  245. 12350  LOCATE 11,10 : PRINT " would you like to continue (Y/N)";
  246. 12400  INPUT A$ : IF(( LEFT$(A$,1) = "Y") OR (LEFT$(A$,1) = "y")) THEN GOTO  12550
  247. 12450  IF((LEFT$(A$,1) = "N") OR (LEFT$(A$,1) = "n")) THEN GOTO 13600
  248. 12500  GOTO 12300
  249. 12550  CLS : LOCATE 10,10 : PRINT "Please input Last Name of student to delete";
  250. 12600  ROW = 10 : COL = 56 : GOSUB 43100 : LNAME$ = SNAME$
  251. 12650  LOCATE 12,10 : PRINT "Please input First Name of the student to delete";
  252. 12700  ROW = 12 : COL = 60 : GOSUB 43100 : FIRSTNAME$ = SNAME$
  253. 12750  TAIL = HEADER : FRONT = SRNDOWNLINK(TAIL) : FOUND$ = "FALSE"
  254. 12800  WHILE ((FRONT <> HEADER) AND (FOUND$ = "FALSE"))
  255. 12850    IF SRNLASTNAME$(FRONT) <> LNAME$ THEN GOTO 13150
  256. 12900     IF SRNFIRSTNAME$(FRONT)<> FIRSTNAME$ THEN GOTO  13150
  257. 12950      SRNDOWNLINK(TAIL) = SRNDOWNLINK(FRONT)
  258. 13000      DSRN = FRONT
  259. 13050      FOUND$= "TRUE"
  260. 13100      GOTO 13250
  261. 13150     TAIL = FRONT
  262. 13200     FRONT = SRNDOWNLINK(TAIL)
  263. 13250  WEND
  264. 13300  IF FOUND$= "FALSE" THEN GOSUB 48300 : GOTO 13600
  265. 13350  TAIL = SRNDATALINK(DSRN)
  266. 13400  FRONT = RRN(TAIL,3)
  267. 13450  RRN(TAIL,3) = RAV
  268. 13500  RAV = FRONT
  269. 13550  GOSUB 40500 ' RETURN SRN TO POOL.
  270. 13600  RETURN
  271. 13650  '
  272. 13700  '
  273. 13750  '
  274. 13800  REM ***************** UPDATE STUDENT RECORD **********************
  275. 13850  '
  276. 13900  CLS : BEEP : LOCATE 10,10 : PRINT " You have entered Update Student Record "
  277. 13950  LOCATE 11,10 : PRINT " would you like to continue (Y/N)";
  278. 14000  INPUT A$ : IF LEFT$(A$,1) = "Y" OR LEFT$(A$,1) = "y" THEN GOTO 14150
  279. 14050  IF ((LEFT$(A$,1) = "N") OR (LEFT$(A$,1) = "n") THEN GOTO 15500
  280. 14100  GOTO 13900
  281. 14150  CLS : LOCATE 10,10 : PRINT "Please input Last Name of student to update";
  282. 14200  ROW = 10 : COL = 65 : GOSUB 43100 : LNAME$ = SNAME$
  283. 14250  LOCATE 12,10 : PRINT " Please input the First Name of the student to update";
  284. 14300  ROW = 12 : COL = 65 : GOSUB 43100 : FIRSTNAME$ = SNAME$
  285. 14350  TAIL = HEADER : FRONT = SRNDOWNLINK(TAIL) : FOUND$ = "FALSE"
  286. 14400  WHILE ((FRONT <> HEADER) AND (FOUND$ = "FALSE"))
  287. 14450   IF SRNLASTNAME$(FRONT) <> LNAME$ THEN GOTO 14750
  288. 14500    IF SRNFIRSTNAME$(FRONT) <> FIRSTNAME$ THEN GOTO 14750
  289. 14550     SRNDOWNLINK(TAIL) = SRNDOWNLINK(FRONT)
  290. 14600     NODE = FRONT
  291. 14650     FOUND$ = "TRUE"
  292. 14700     GOTO  14850
  293. 14750   TAIL = FRONT
  294. 14800   FRONT = SRNDOWNLINK(FRONT)
  295. 14850  WEND
  296. 14900  IF FOUND$ = "FALSE" THEN GOSUB 48300 : GOTO  15500
  297. 14950  BEEP : LOCATE 18,10 : PRINT " Please input student's New Last Name";
  298. 15000  ROW = 18 : COL = 49 : GOSUB 43100 : SRNLASTNAME$(NODE) = SNAME$
  299. 15050  LOCATE 20,10 : PRINT " Please input student's New First Name";
  300. 15100  ROW = 20 : COL = 49 : GOSUB 43100 : SRNFIRSTNAME$(NODE) = SNAME$
  301. 15150  TAIL = HEADER : FRONT = SRNDOWNLINK(TAIL)
  302. 15200  WHILE (SRNLASTNAME$(FRONT) < SRNLASTNAME$(NODE))
  303. 15250   TAIL = FRONT
  304. 15300   FRONT = SRNDOWNLINK(TAIL)
  305. 15350  WEND
  306. 15400  SRNDOWNLINK(TAIL) = NODE
  307. 15450  SRNDOWNLINK(NODE) = FRONT
  308. 15500  RETURN
  309. 15550  '
  310. 15600  '
  311. 15650  '
  312. 15700  '
  313. 15750  '
  314. 15800  '
  315. 15850  REM *************  ASSIGNMENT RECORD HANDLER ******************
  316. 15900  REM *
  317. 15950  CLS
  318. 16000  IF FILENAME$ = "" THEN GOSUB 48000: GOTO 17050
  319. 16050  PRINT
  320. 16100  PRINT "         ASSIGNMENT RECORD HANDLER"
  321. 16150  PRINT
  322. 16200  PRINT "         1) Create New Assignment Record"
  323. 16250  PRINT
  324. 16300  PRINT "         2) Delete Assignment Record"
  325. 16350  PRINT
  326. 16400  PRINT "         3) Update Assignment Record"
  327. 16450  PRINT
  328. 16500  PRINT "         4) Update Student Result Record"
  329. 16550  PRINT
  330. 16600  PRINT "         5) Return to Main Menu"
  331. 16650  PRINT
  332. 16700  PRINT "     Please enter your selection";
  333. 16750   LVALUE = 1 : HVALUE = 5 : ROW = 14 : COL = 33
  334. 16800  GOSUB 41800
  335. 16850  IF VAL(ZZ$) = 5 THEN RETURN
  336. 16900  '
  337. 16950  ON VAL(ZZ$) GOSUB 17200,19600,21200,22850
  338. 17000  GOTO 15850
  339. 17050  RETURN
  340. 17100  '
  341. 17150  '
  342. 17200  REM ******  CREATE NEW ASSIGNEMNT RECORD *******
  343. 17250  CLS : BEEP : LOCATE 2,10 : PRINT "You have entered Create Assignment Record"
  344. 17300  LOCATE 3,10 : PRINT "Would you like to continue (Y/N)";
  345. 17350  INPUT A$ : IF(( LEFT$(A$,1) = "Y")OR (LEFT$(A$,1) ="y")) THEN GOTO 17500
  346. 17400  IF LEFT$(A$,1) = "N" OR (LEFT$(A$,1) = "n") THEN GOTO 19400
  347. 17450  GOTO 17250
  348. 17500  CLS : LOCATE 10,3  : PRINT " Please input the assignment name :";
  349. 17550  INPUT ASSIGN$
  350. 17600  LOCATE 12,3 : PRINT " Please enter the possible points for the assignment ";
  351. 17650  LVALUE = 0 : HVALUE = 1000 : ROW = 12 : COL = 56 : GOSUB 41800
  352. 17700  PTSVALUE = VAL(ZZ$)
  353. 17710  LOCATE 16,20:PRINT "( 1 = regular assignment )"
  354. 17711  LOCATE 17,20:PRINT "( 2 = quiz               )"
  355. 17712  LOCATE 18,20:PRINT "( 3 = mid quarter        )"
  356. 17713  LOCATE 19,20:PRINT "( 4 = final exam         )"
  357. 17750  LOCATE 14,10 : PRINT " Please input assignment type (1-4) ";
  358. 17800   LVALUE = 1 : HVALUE = 4 : ROW = 14 : COL = 46
  359. 17850  GOSUB 41800
  360. 17900  ATYPE = VAL(ZZ$)
  361. 17950    CLS : LOCATE 15,10 : PRINT " WORKING......."
  362. 18000  GOSUB 40250 ' GET NEXT ARN
  363. 18050  IF NARN = -1 THEN GOSUB 48400 : GOTO 19400
  364. 18100  ARNNAME$(NARN) = ASSIGN$
  365. 18150  ARNTYPE(NARN) = ATYPE
  366. 18200  ARNPOSSPTS(NARN) = PTSVALUE
  367. 18250  GOSUB 41100 : STUDENTS = 30 - AVAIL
  368. 18300  GOSUB 41450 : IF STUDENTS > AVAIL THEN GOSUB 48200 : GOTO 19400
  369. 18350  SRNTAIL = HEADER : SRNFRONT = SRNDOWNLINK(SRNTAIL)
  370. 18400  IF SRNTAIL = SRNFRONT THEN GOSUB 48500 : GOTO 19400
  371. 18450  WHILE (SRNFRONT <> HEADER)
  372. 18500   NULL = SRNDATALINK(SRNFRONT)
  373. 18550   RRNTAIL = NULL : RRNFRONT = RRN(RRNTAIL,3)
  374. 18600   WHILE (RRNFRONT <> NULL)
  375. 18650    RRNTAIL = RRNFRONT
  376. 18700    RRNFRONT = RRN(RRNTAIL,3)
  377. 18750   WEND
  378. 18800   GOSUB 40000 ' GET NEXT RRN
  379. 18850   RRN(RRNTAIL,3) = NRRN
  380. 18900   RRN(NRRN,3) = RRNFRONT
  381. 18950   CLS : LOCATE 10,10
  382. 19000   PRINT "Please input the score for ";SRNFIRSTNAME$(SRNFRONT);" ";
  383. 19050   PRINT SRNLASTNAME$(SRNFRONT) : LOCATE 11,10 :
  384. 19100   PRINT " Score = "; : ROW = 11 : COL = 19 : LVALUE = 0 : HVALUE = PTSVALUE
  385. 19150   GOSUB 41800
  386. 19200   RRN(NRRN,1) = VAL(ZZ$) : RRN(NRRN,2) = NARN
  387. 19250   SRNTAIL = SRNFRONT
  388. 19300   SRNFRONT = SRNDOWNLINK(SRNTAIL)
  389. 19350  WEND
  390. 19400  RETURN
  391. 19450  '
  392. 19500  '
  393. 19550  '
  394. 19600  REM *********** DELETE ASSIGNMENT RECORD  **************
  395. 19650  REM *
  396. 19700  CLS : BEEP : LOCATE 2,10 : PRINT " You have entered Delete Assignment Record"
  397. 19750  LOCATE 3,10 : PRINT " Would you like to continue  (Y/N)";
  398. 19800  INPUT A$ : IF ((LEFT$(A$,1) = "Y") OR (LEFT$(A$,1) = "y")) THEN GOTO 19950
  399. 19850  IF ((LEFT$(A$,1) = "N") OR (LEFT$(A$,1) = "n")) THEN GOTO 21000
  400. 19900  GOTO 19700
  401. 19950  IF (SRNDOWNLINK(HEADER) = HEADER) THEN GOSUB 48500 : GOTO 21000
  402. 20000  NULL = SRNDATALINK(SRNDOWNLINK(HEADER))
  403. 20050  RRNTAIL = NULL : RRNFRONT = RRN(RRNTAIL,3)
  404. 20100  IF RRNTAIL = RRNFRONT THEN GOSUB 48600 : GOTO 21000
  405. 20150  GOSUB 24950
  406. 20200  CLS : LOCATE 15,10 : PRINT " WORKING......"
  407. 20250  SRNTAIL = HEADER : SRNFRONT = SRNDOWNLINK(SRNTAIL)
  408. 20300  IF SRNTAIL = SRNFRONT THEN GOSUB 48500 : GOTO 21000
  409. 20350  WHILE (SRNFRONT <> HEADER)
  410. 20400   NULL = SRNDATALINK(SRNFRONT): LOCATION = 1
  411. 20450   RRNTAIL = NULL : RRNFRONT = RRN(RRNTAIL,3) : LOCATION = RRN(RRNFRONT,2)
  412. 20500   WHILE (LOCATION <> X)
  413. 20550    RRNTAIL = RRNFRONT
  414. 20600    RRNFRONT = RRN(RRNTAIL,3)
  415. 20650    LOCATION = RRN(RRNFRONT,2)
  416. 20700   WEND
  417. 20750  RRN(RRNTAIL,3) = RRN(RRNFRONT,3) : DRRN = RRNFRONT : DARN = RRN(RRNFRONT,2)
  418. 20800   GOSUB 40700
  419. 20850   SRNTAIL = SRNFRONT
  420. 20900   SRNFRONT = SRNDOWNLINK(SRNTAIL)
  421. 20950  WEND
  422. 20960  GOSUB 40900
  423. 21000  RETURN
  424. 21050  REM
  425. 21100  REM ********************** UPDATE ASSIGNMENT  RECORD  ****************
  426. 21150  REM
  427. 21200  CLS : BEEP : LOCATE 2,10 : PRINT " You have entered Update Assignment Record"
  428. 21250  LOCATE 3,10 : PRINT " would you like to continue  (Y/N)";
  429. 21300  INPUT A$ : IF ((LEFT$(A$,1) = "Y") OR (LEFT$(A$,1) = "y")) THEN GOTO 21450
  430. 21350  IF ((LEFT$(A$,1) = "N") OR (LEFT$(A$,1) = "n")) THEN GOTO 22650
  431. 21400  GOTO 21200
  432. 21450  NULL = SRNDATALINK(SRNDOWNLINK(HEADER)): RRNTAIL = NULL
  433. 21500  RRNFRONT = RRN(RRNTAIL,3)
  434. 21550  IF RRNTAIL = RRNFRONT THEN GOSUB 48600 : GOTO 22650
  435. 21600  GOSUB 24950
  436. 21650  CLS :PRINT: PRINT "     Assignment Name   ";ARNNAME$(X)
  437. 21700        PRINT "     Assignment Type   ";ARNTYPE(X)
  438. 21750        PRINT "     Assignment Points ";ARNPOSSPTS(X)
  439. 21800  LOCATE 15,10:PRINT "  1) Assignment Name"
  440. 21850  PRINT "           2) Assignment Type"
  441. 21900  PRINT "           3) Assignment Points"
  442. 21950  PRINT "           4) Return to Main Menu"
  443. 22000  PRINT : PRINT "   Please input your selection(1-4)"; : LVALUE = 1 : HVALUE = 4
  444. 22050  ROW = 20 : COL = 37 : GOSUB 41800
  445. 22100  IF VAL(ZZ$) = 4 THEN RETURN
  446. 22150  ON VAL(ZZ$) GOSUB 22250,22350,22500
  447. 22200  GOTO 21650
  448. 22250  CLS: LOCATE 10,10: PRINT"Input New Assignment Name ";:INPUT ARNNAME$(X)
  449. 22300  RETURN
  450. 22350  CLS: LOCATE 10,10: PRINT "Input New Assignment Type(1-4) ";
  451. 22400  LVALUE = 1: HVALUE = 4: ROW = 10: COL = 41: GOSUB 41800
  452. 22450  ARNTYPE(X) = VAL(ZZ$) : RETURN
  453. 22500  CLS: LOCATE 10,10: PRINT" Input New Assignment Points ";
  454. 22550  LVALUE = 0 : HVALUE = 1000: ROW = 10: COL = 39: GOSUB 41800
  455. 22600  ARNPOSSPTS(X) = VAL(ZZ$) : RETURN
  456. 22650  RETURN
  457. 22700  '
  458. 22750  '
  459. 22800  '
  460. 22850  REM ************** UPDATE STUDENT RESULT RECORD ***************
  461. 22900  REM *
  462. 23050  CLS : BEEP : LOCATE 2,10 : PRINT " You have entered Update Student Result Record"
  463. 23100  LOCATE 3,10 : PRINT " would you like to continue  (Y/N)";
  464. 23150  INPUT A$ : IF ((LEFT$(A$,1) = "Y") OR (LEFT$(A$,1) = "y")) THEN GOTO  23300
  465. 23200  IF ((LEFT$(A$,1) = "N") OR (LEFT$(A$,1) = "n")) THEN GOTO 24700
  466. 23250  GOTO 23050
  467. 23300  IF (SRNDOWNLINK(HEADER) = HEADER) THEN GOSUB 48500 : GOTO 24700
  468. 23350  CLS : LOCATE 10,10 : PRINT "Please input Last Name of student to update";
  469. 23400  ROW = 10 : COL = 65 : GOSUB 43100 : LNAME$ = SNAME$
  470. 23450  LOCATE 12,10 : PRINT " Please input the First Name of the student to update";
  471. 23500  ROW = 12 : COL = 65 : GOSUB 43100 : FIRSTNAME$ = SNAME$
  472. 23550  TAIL = HEADER : FRONT = SRNDOWNLINK(TAIL) : FOUND$ = "FALSE"
  473. 23600  WHILE ((FRONT <> HEADER) AND (FOUND$ = "FALSE"))
  474. 23650   IF SRNLASTNAME$(FRONT) <> LNAME$ THEN GOTO 23900
  475. 23700    IF SRNFIRSTNAME$(FRONT) <> FIRSTNAME$ THEN GOTO 23900
  476. 23750     NODE = FRONT
  477. 23800     FOUND$ = "TRUE"
  478. 23850     GOTO  24000
  479. 23900   TAIL = FRONT
  480. 23950   FRONT = SRNDOWNLINK(TAIL)
  481. 24000  WEND
  482. 24050  IF FOUND$ = "FALSE" THEN GOSUB 48300 : GOTO  24700
  483. 24100  NULL = SRNDATALINK(NODE): RRNTAIL = NULL
  484. 24150  RRNFRONT = RRN(RRNTAIL,3)
  485. 24200  IF RRNTAIL = RRNFRONT THEN GOSUB 48600 : GOTO 24700
  486. 24250  GOSUB 24950
  487. 24300  WHILE (RRN(RRNFRONT,2) <> X)
  488. 24350   RRNTAIL = RRNFRONT
  489. 24400   RRNFRONT = RRN(RRNTAIL,3)
  490. 24450  WEND
  491. 24500  CLS : LOCATE 10,1 : PRINT "      STUDENT : ";SRNFIRSTNAME$(NODE);"  ";SRNLASTNAME$(NODE)
  492. 24550  PRINT " Current Score =  ";RRN(RRNFRONT,1)
  493. 24600  PRINT "     New Score =  ";:LVALUE = 0 : HVALUE = ARNPOSSPTS(RRN(RRNFRONT,2))
  494. 24650  ROW = 12 : COL = 19 : GOSUB 41800 : RRN(RRNFRONT,1) = VAL(ZZ$)
  495. 24700  RETURN
  496. 24750  '
  497. 24800  '
  498. 24850  '
  499. 24900  '
  500. 24910  REM ********************* PRINT ASSIGNEMNTS TO SCREEN *******************
  501. 24920  REM
  502. 24950  CLS :  PRINT ""
  503. 25000  PRINT "            Assignments are truncated tp 1st 30 characters."
  504. 25050  PRINT "*******************************************************************************"
  505. 25100  PRINT "    No.        Name                    No.         Name"
  506. 25150  PRINT : X =0
  507. 25200  WHILE (RRNFRONT <> NULL)
  508. 25250   X = X + 1 : LOCPOS(X) = RRN(RRNFRONT,2)
  509. 25300   PRINT USING "    ##)  \                        \";X;ARNNAME$(RRN(RRNFRONT,2));
  510. 25350   RRNTAIL = RRNFRONT : RRNFRONT = RRN(RRNTAIL,3)
  511. 25400   IF (X/2) = INT(X/2) THEN PRINT ""
  512. 25450  WEND
  513. 25500  LOCATE 19,1 :
  514. 25550  PRINT "*******************************************************************************"
  515. 25600  PRINT " Please enter the number associated with the assignment that you"
  516. 25650  PRINT " wish to select.";:LVALUE = 1 : HVALUE = X : ROW = 21 : COL = 17
  517. 25700  GOSUB 41800 : X =LOCPOS(VAL(ZZ$))
  518. 25750  RETURN
  519. 25800  '
  520. 25850  '
  521. 25900  '
  522. 25950  '
  523. 26000  '
  524. 26050  REM *********** REPORT HANDLER ****************************
  525. 26100  REM *
  526. 26150  IF FILENAME$ = "" THEN GOSUB 48000 : GOTO 26900
  527. 26200  CLS: POKE 1883,0
  528. 26250  PRINT : PRINT "           REPORT HANDLER"
  529. 26300  PRINT : PRINT "              1) Class Summary List"
  530. 26350  PRINT : PRINT "              2) Class Detail List"
  531. 26400  PRINT : PRINT "              3) Individual Report
  532. 26450  PRINT : PRINT "              4) Result Parameters Report"
  533. 26500  PRINT : PRINT "              5) Class List"
  534. 26550  PRINT : PRINT "              6) Return to Main Menu"
  535. 26600  PRINT : PRINT "    Please enter your selection";
  536. 26650  LVALUE = 1 : HVALUE = 6 : ROW = 16 : COL = 32
  537. 26700  GOSUB 41800
  538. 26750  ON VAL(ZZ$) GOSUB 27100,29450,30400,34200,35600
  539. 26800  IF VAL(ZZ$) = 6 THEN 26900
  540. 26850  GOTO 26050
  541. 26900  RETURN
  542. 26950  '
  543. 27000  '
  544. 27050  '
  545. 27100  REM ******************** CLASS SUMMARY LIST ********************
  546. 27150  REM *
  547. 27200  GOSUB 47300: STUDENTS = 0
  548. 27250  IF PEEK(1883) = 0 THEN CLS
  549. 27300  PRINT "       ****************** CLASS SUMMARY LIST ************* ": PRINT ""
  550. 27350  PRINT ""
  551. 27400  PRINT "                                              BROWN%      GRADE"
  552. 27450  SRNTAIL = HEADER: SRNFRONT = SRNDOWNLINK(HEADER)
  553. 27500  NUMSTDS = 0
  554. 27550  IF SRNTAIL = SRNFRONT THEN GOSUB 48500: GOTO 29300
  555. 27600  WHILE( SRNFRONT <> HEADER)
  556. 27650  NUMSTDS = NUMSTDS + 1
  557. 27700   FOR X = 1 TO 4 : TOTEARNED(X)=0: TOTPTS(X)=0: NEXT X
  558. 27750   NULL = SRNDATALINK(SRNFRONT): RRNTAIL = NULL : RRNFRONT =RRN(RRNTAIL,3)
  559. 27800   IF RRNTAIL = RRNFRONT THEN GOSUB 48600: GOTO 29300
  560. 27850   WHILE(RRNFRONT <> NULL)
  561. 27900    TYPE = ARNTYPE(RRN(RRNFRONT,2))
  562. 27950    TOTEARNED(TYPE) = TOTEARNED(TYPE) + RRN(RRNFRONT,1)
  563. 28000    TOTPTS(TYPE) = TOTPTS(TYPE) + ARNPOSSPTS(RRN(RRNFRONT,2))
  564. 28050    RRNTAIL = RRNFRONT
  565. 28100    RRNFRONT = RRN(RRNFRONT,3)
  566. 28150   WEND
  567. 28200   TOTAL =0
  568. 28250   FOR X = 1 TO 4
  569. 28300  WTPERCENT(X) = 0 : IF TOTPTS(X) = 0 THEN GOTO 28400
  570. 28350    WTPERCENT(X) = TOTEARNED(X)/TOTPTS(X) *(WEIGHT(X)/100)
  571. 28400    TOTAL = TOTAL + WTPERCENT(X)
  572. 28450   NEXT X
  573. 28500  X = 0: RANGE = 0: SUB =0
  574. 28550  WHILE (SUB = 0) AND ( X <= 5)
  575. 28600   X = X + 1
  576. 28650   IF BOUND(X) <= TOTAL  THEN RANGE = BOUND(X-1) - BOUND(X): SUB = X
  577. 28700  WEND
  578. 28750  BRANGE = BROWN(SUB - 1) - BROWN(SUB)
  579. 28800  SCORE = BROWN(SUB) + (BRANGE *((TOTAL - BOUND(SUB))/RANGE))
  580. 28850  STUDENTS = STUDENTS + 1
  581. 28900  IF PEEK(1883) = 0 THEN IF STUDENTS > 15 THEN GOSUB 36500
  582. 28950  IF SUB = 5 THEN GRADE$ = "NC": GOTO 29100
  583. 29000  GRADE$ = CHR$(64 + SUB)
  584. 29050  '
  585. 29100  PRINT USING SUMMARY$;NUMSTDS;SRNLASTNAME$(SRNFRONT),SRNFIRSTNAME$(SRNFRONT),SCORE*100;GRADE$
  586. 29150   SRNTAIL = SRNFRONT: SRNFRONT = SRNDOWNLINK(SRNFRONT)
  587. 29200  WEND
  588. 29250  IF PEEK(1883) = 0 THEN GOSUB 36500: GOTO 29350
  589. 29300  PRINT FF$
  590. 29350  RETURN
  591. 29400  REM *
  592. 29450  CLS
  593. 29500  '
  594. 29550  '
  595. 29600  '
  596. 29650  REM ******************** CLASS DETAIL REPORT ****************************
  597. 29700  '
  598. 29750  PRINT " CLASS DETAIL REPORT"
  599. 29800  GOSUB 47300 'ECHO TO PRINTER?
  600. 29850  SRNTAIL = HEADER: SRNFRONT = SRNDOWNLINK(SRNTAIL)
  601. 29900  IF SRNTAIL = SRNFRONT THEN GOSUB 48500: GOTO 30200
  602. 29950  WHILE (SRNFRONT <> HEADER)
  603. 30000   GOSUB 31600 ' INDIVIDUAL REPORT ROUTINE
  604. 30050   SRNTAIL = SRNFRONT
  605. 30100   SRNFRONT = SRNDOWNLINK(SRNFRONT)
  606. 30150  WEND
  607. 30200  RETURN
  608. 30250  '
  609. 30300  '
  610. 30350  '
  611. 30400  REM ********************* INDIVIDUAL REPORT *********************
  612. 30450  REM *
  613. 30500  REM *
  614. 30550  CLS
  615. 30600  LOCATE 10,10 : PRINT "Please input Last Name of Student ";
  616. 30650  ROW = 10 : COL = 56 : GOSUB 43100 : LNAME$ = SNAME$
  617. 30700  LOCATE 12,10 : PRINT "Please input First Name of the student ";
  618. 30750  ROW = 12 : COL = 60 : GOSUB 43100 : FIRSTNAME$ = SNAME$
  619. 30800  SRNTAIL = HEADER : SRNFRONT = SRNDOWNLINK(SRNTAIL) : FOUND$ = "FALSE"
  620. 30850  WHILE ((SRNFRONT <> HEADER) AND (FOUND$ = "FALSE"))
  621. 30900   IF SRNLASTNAME$(SRNFRONT) <> LNAME$ THEN GOTO 31100
  622. 30950    IF SRNFIRSTNAME$(SRNFRONT)<> FIRSTNAME$ THEN GOTO  31100
  623. 31000     FOUND$= "TRUE"
  624. 31050     GOTO 31200
  625. 31100     SRNTAIL = SRNFRONT
  626. 31150     SRNFRONT = SRNDOWNLINK(SRNTAIL)
  627. 31200  WEND
  628. 31250  IF FOUND$= "FALSE" THEN GOSUB 48300 : GOTO 34000
  629. 31300  GOSUB 47300: IF PEEK(1883) = 0 THEN CLS: GOTO 31600
  630. 31350  '
  631. 31400  '
  632. 31450  '
  633. 31500  '
  634. 31550  PRINT "         ***************** INDIVIDUAL REPORT ****************": PRINT ""
  635. 31600   FOR X = 1 TO 4 : TOTEARNED(X)=0: TOTPTS(X)=0: POINTER(X)=0: NEXT X
  636. 31650   NULL = SRNDATALINK(SRNFRONT): RRNTAIL = NULL : RRNFRONT =RRN(RRNTAIL,3)
  637. 31700   IF RRNTAIL = RRNFRONT THEN GOSUB 48600: GOTO  34000
  638. 31750   WHILE(RRNFRONT <> NULL)
  639. 31800    TYPE = ARNTYPE(RRN(RRNFRONT,2))
  640. 31850    POINTER(TYPE) = POINTER(TYPE) + 1
  641. 31900    ASSIGNMENT$((TYPE-1)*25+POINTER(TYPE)) = ARNNAME$(RRN(RRNFRONT,2))
  642. 31950    TOTEARNED(TYPE) = TOTEARNED(TYPE) + RRN(RRNFRONT,1)
  643. 32000    EARNED(TYPE,POINTER(TYPE))= RRN(RRNFRONT,1)
  644. 32050    POSSIBLE(TYPE,POINTER(TYPE)) = ARNPOSSPTS(RRN(RRNFRONT,2))
  645. 32100    TOTPTS(TYPE) = TOTPTS(TYPE) + ARNPOSSPTS(RRN(RRNFRONT,2))
  646. 32150    RRNTAIL = RRNFRONT
  647. 32200    RRNFRONT = RRN(RRNFRONT,3)
  648. 32250   WEND
  649. 32300   TOTAL =0
  650. 32350   FOR X = 1 TO 4
  651. 32400  WTPERCENT(X) = 0 : IF TOTPTS(X) = 0 THEN GOTO 32500
  652. 32450    WTPERCENT(X) = TOTEARNED(X)/TOTPTS(X) *(WEIGHT(X)/100)
  653. 32500    TOTAL = TOTAL + WTPERCENT(X)
  654. 32550   NEXT X
  655. 32600  X = 0: RANGE = 0: SUB = 0
  656. 32650  WHILE (SUB = 0) AND (X <= 5)
  657. 32700   X = X + 1
  658. 32750   IF BOUND(X) <= TOTAL THEN RANGE = BOUND(X-1) - BOUND(X): : SUB = X
  659. 32800  WEND
  660. 32850  BRANGE = BROWN(SUB - 1) - BROWN(SUB)
  661. 32900  SCORE = BROWN(SUB) + (BRANGE *((TOTAL - BOUND(SUB))/RANGE))
  662. 32950  IF SUB = 5 THEN GRADE$ ="NC" : GOTO 33050
  663. 33000  GRADE$ = CHR$(64 + SUB)
  664. 33050  PRINT USING NME$;SRNLASTNAME$(SRNFRONT);SRNFIRSTNAME$(SRNFRONT),GRADE$,SCORE*100
  665. 33100  FOR X = 1 TO 4
  666. 33150   IF POINTER(X)=0 THEN GOTO 33500
  667. 33200  IF PEEK(1883) = 255 THEN PRINT ""
  668. 33250   FOR Y = 1 TO POINTER(X) STEP 2
  669. 33300  PRINT USING FORMAT$;ASSIGNMENT$((X-1)*25+Y),EARNED(X,Y),POSSIBLE(X,Y);
  670. 33350  IF POINTER(X) < (Y+1) THEN PRINT "": GOTO 33450
  671. 33400  PRINT USING FORMAT$;ASSIGNMENT$((X-1)*25+Y+1),EARNED(X,Y+1),POSSIBLE(X,Y+1)
  672. 33450   NEXT Y
  673. 33500  NEXT X
  674. 33550  IF PEEK(1883) = 255 THEN PRINT ""
  675. 33600  FOR X = 1 TO 4
  676. 33650  IF TOTPTS(X) = 0 THEN GOTO 33750
  677. 33700   PRINT USING SUBTOTAL$;DESCRIP$(X);TOTEARNED(X);TOTPTS(X);(TOTEARNED(X)/TOTPTS(X))*100;WEIGHT(X);WTPERCENT(X)*100
  678. 33750  NEXT X
  679. 33800  PRINT "                                                                 --------"
  680. 33850  PRINT USING INST$;TOTAL*100
  681. 33900  IF PEEK(1883) = 0 THEN GOSUB 36500
  682. 33950  PRINT FF$
  683. 34000   RETURN
  684. 34050  '
  685. 34100  '
  686. 34150  '
  687. 34200  REM ******************** RESULTS PARAMETERS REPORT ***************
  688. 34250  REM *
  689. 34300  GOSUB 47300
  690. 34350  PRINT"  ****************** RESULTS PARAMETERS REPORT ************" : PRINT""
  691. 34400  PRINT "                       Instructor's          Brown's"
  692. 34450  PRINT "     Grade               Range                Range"
  693. 34500  UP = 1: UPBROWN = 1: OFFSET = 64
  694. 34550  FOR X = 1 TO 4
  695. 34600  IF UP < 0 THEN UP = 0
  696. 34650  IF UPBROWN < 0 THEN UPBROWN = 0
  697. 34700   PRINT USING RST$;CHR$(OFFSET+X),UP*100,BOUND(X)*100,UPBROWN*100,BROWN(X)*100
  698. 34750   UP = BOUND(X) - 0.01 : UPBROWN = BROWN(X) - 0.01
  699. 34800  NEXT X
  700. 34850  IF UP < 0 THEN UP = 0
  701. 34900  IF UPBROWN < 0 THEN UPBROWN = 0
  702. 34950  PRINT USING RST$;"NC",UP*100,BOUND(5)*100,UPBROWN*100,BROWN(5)*100
  703. 35000  FOR X = 1 TO 3: PRINT : NEXT X
  704. 35050  PRINT "                        Instructor's Weights"
  705. 35100  PRINT "          ";
  706. 35150  FOR X = 1 TO 4: PRINT USING TITLE$;DESCRIP$(X);: NEXT X
  707. 35200  PRINT "": PRINT "          ";
  708. 35250  FOR X = 1 TO 4: PRINT USING  "   ###%       ";WEIGHT(X);:NEXT X
  709. 35300  IF PEEK(1883) = 0 THEN GOSUB 36500
  710. 35350  PRINT FF$
  711. 35400  RETURN
  712. 35450  '
  713. 35500  '
  714. 35550  '
  715. 35600  REM *************************  CLASS LIST  **************************
  716. 35650  SRNTAIL = HEADER : SRNFRONT = SRNDOWNLINK(SRNTAIL):X =0: ROW = 2
  717. 35700  IF SRNTAIL = SRNFRONT THEN GOSUB 48600: GOTO 36300
  718. 35750  GOSUB 47300
  719. 35800  PRINT "       ***************   CLASS LIST   ********************"
  720. 35850  PRINT ""
  721. 35900  WHILE(SRNFRONT <> HEADER)
  722. 35950   X = X + 1
  723. 36000  IF PEEK(1883) = 0 THEN  IF X > 15 THEN ROW =ROW + 1: LOCATE ROW,43
  724. 36050   PRINT USING NME1$;X;SRNLASTNAME$(SRNFRONT);SRNFIRSTNAME$(SRNFRONT)
  725. 36100  SRNTAIL = SRNFRONT: SRNFRONT = SRNDOWNLINK(SRNTAIL)
  726. 36150  WEND
  727. 36200  IF PEEK(1883) = 0 THEN GOSUB 36500
  728. 36250  PRINT FF$
  729. 36300  RETURN
  730. 36350  '
  731. 36400  '
  732. 36450  '
  733. 36500  REM *************** SCREEN DELAY ***************
  734. 36550  REM *
  735. 36600  LOCATE 23,10 : PRINT " PRESS ANY KEY TO CONTINUE"
  736. 36650  A$ = INKEY$
  737. 36700  IF A$ = "" THEN GOTO 36600
  738. 36750  PRINT FF$
  739. 36800  STUDENTS = 1
  740. 36850  RETURN
  741. 36900  '
  742. 36950  '
  743. 37000  '
  744. 37050  '
  745. 37100  '
  746. 37150  REM **************** RESET RESULT PARAMETERS ****************
  747. 37200  REM *
  748. 37250  CLS : BEEP : LOCATE 2,10 : PRINT "You have entered Reset Result Parameters"
  749. 37300  LOCATE 3,10 : PRINT "would you like to continue  (Y/N)";
  750. 37350  INPUT A$ : IF(( LEFT$(A$,1) = "Y")OR (LEFT$(A$,1) ="y")) THEN GOTO 37500
  751. 37400  IF LEFT$(A$,1) = "N" OR (LEFT$(A$,1) = "n") THEN GOTO 38950
  752. 37450  GOTO 37250
  753. 37500  CLS: LOCATE 10,1 :
  754. 37550  PRINT"               1) Change Letter Grade Bounds"
  755. 37600  PRINT"               2) Change Student Work Weights"
  756. 37650  PRINT"               3) Return to Main Menu"
  757. 37700  PRINT " Please enter your selection (1-3) ";:ROW = 13: COL = 36:LVALUE = 1 : HVALUE = 3: GOSUB 41800
  758. 37750  IF VAL(ZZ$) = 3 THEN RETURN
  759. 37800  ON VAL(ZZ$) GOSUB 37900,38500
  760. 37850  GOTO 37500
  761. 37900  UP = 1
  762. 37950  FOR X = 1 TO 5
  763. 38000  IF X = 5 THEN GRADE$ = "NC": GOTO 38100
  764. 38050  GRADE$ = CHR$(64 + X)
  765. 38100   CLS : LOCATE 10,10 : PRINT " Grade : ";GRADE$
  766. 38150   LOCATE 11,10 : PRINT "Upper Bound = ";UP*100
  767. 38200   LOCATE 12,10 : PRINT "Lower Bound = ";: LVALUE = 0:HVALUE = UP*100: ROW = 12 : COL = 24: GOSUB 41800
  768. 38250   BOUND(X) = VAL(ZZ$)/100
  769. 38300   IF BOUND(X) = 0 THEN UP = 0: GOTO 38400
  770. 38350   UP = BOUND(X) - 0.01
  771. 38400  NEXT X
  772. 38450  RETURN
  773. 38500  CLS: LOCATE 10,1
  774. 38550  PRINT "        Homework weight in % ";:LVALUE =0: HVALUE = 100: ROW = 10
  775. 38600  COL = 30 : GOSUB 41800: WEIGHT(1) = VAL(ZZ$)
  776. 38650  PRINT "        Quizzes weight in  % ";: ROW =11: GOSUB 41800: WEIGHT(2) = VAL(ZZ$)
  777. 38700  PRINT "        Midterm weight in  % ";: ROW =12: GOSUB 41800: WEIGHT(3) = VAL(ZZ$)
  778. 38750  PRINT "        Final weight in %    ";:ROW = 13: GOSUB 41800: WEIGHT(4) =VAL(ZZ$)
  779. 38800  TOTAL = 0 : FOR X = 1 TO 4 : TOTAL = TOTAL + WEIGHT(X): NEXT X
  780. 38850  '
  781. 38900  IF TOTAL > 100 THEN GOSUB 48700 : GOTO 38500
  782. 38950  RETURN
  783. 39000  '
  784. 39050  '
  785. 39100  '
  786. 39150  '
  787. 39200  REM **************** QUIT ROUTINE *************************
  788. 39250  REM *
  789. 39300  CLS
  790. 39350  LOCATE 10,1 : PRINT "Remember that you must save the class file to"
  791. 39400  PRINT "save all the changes that you have made."
  792. 39450  LOCATE 20,10: BEEP:PRINT " DO YOU WISH TO QUIT (Y/N)";
  793. 39500  INPUT A$: A$ = LEFT$(A$,1)
  794. 39550  IF A$ = "Y" OR A$ = "y" THEN GOTO 39700
  795. 39600  IF A$ = "N" OR A$ = "n" THEN A$ = "N": GOTO 39700
  796. 39650  GOTO 39450
  797. 39700  RETURN
  798. 39750  REM ********* GET NEXT SRN ***************
  799. 39800    IF SAV  = -1 THEN NSRN = -1 : GOTO 39950
  800. 39850     NSRN = SAV
  801. 39900     SAV = SRNDOWNLINK(NSRN)
  802. 39950    RETURN
  803. 40000  REM ********** GET NEXT RRN ***************
  804. 40050    IF RAV = -1 THEN NRRN = -1 : GOTO 40200
  805. 40100      NRRN = RAV
  806. 40150      RAV = RRN(NRRN,3)
  807. 40200    RETURN
  808. 40250  REM ********** GET NEXT ARN ***************
  809. 40300   IF AAV = -1 THEN NARN = -1 : GOTO 40450
  810. 40350    NARN = AAV
  811. 40400    AAV = ARNLINK(NARN)
  812. 40450   RETURN
  813. 40500  REM ********* DISPOSE - SRN **************
  814. 40550    SRNDOWNLINK(DSRN) = SAV
  815. 40600    SAV = DSRN
  816. 40650    RETURN
  817. 40700  REM *********** DISPOSE RRN ***************
  818. 40750   RRN(DRRN,3) = RAV
  819. 40800   RAV = DRRN
  820. 40850   RETURN
  821. 40900  REM **********  DISPOSE SRN ***************
  822. 40950   ARNLINK(DARN) = AAV
  823. 41000   AAV = DARN
  824. 41050   RETURN
  825. 41100  REM *********** GET NUMBER OF SRN'S LEFT ****
  826. 41150   TAV = SAV : AVAIL = 0
  827. 41200   WHILE TAV <> -1
  828. 41250    AVAIL = AVAIL + 1
  829. 41300    TAV = SRNDOWNLINK(TAV)
  830. 41350   WEND
  831. 41400   RETURN
  832. 41450  REM ************ GET NUMBER OF RRN'S LEFT ****
  833. 41500   TAV = RAV : AVAIL = 0
  834. 41550   WHILE TAV <> -1
  835. 41600    AVAIL = AVAIL + 1
  836. 41650    TAV = RRN(TAV,3)
  837. 41700   WEND
  838. 41750   RETURN
  839. 41800  REM  ********** NUMBERIC VALIDATOR **********
  840. 41850  INPUT ZZ$
  841. 41900  IF ((LEFT$(ZZ$,1) = "0") AND ( VAL(ZZ$) = 0 )) THEN GOTO 42000
  842. 41950  IF VAL(ZZ$) = 0 THEN 42200
  843. 42000  ZVAL = VAL(ZZ$)
  844. 42050  IF ZVAL < LVALUE OR ZVAL > HVALUE THEN  42200
  845. 42100   GOTO 42550
  846. 42150  GOTO 42250
  847. 42200  LOCATE 22,5: PRINT " PLEASE ENTER A NUMBER BETWEEN ";LVALUE;" AND ";HVALUE
  848. 42250   BEEP
  849. 42300   FOR DELAY = 1 TO 500  : NEXT DELAY
  850. 42350   BEEP
  851. 42400   FOR DELAY = 1 TO 500  : NEXT DELAY
  852. 42450   GOSUB 42600
  853. 42500  LOCATE ROW,COL : GOTO 41850
  854. 42550   RETURN
  855. 42600   REM ********* SCREEN BLANKER *****************
  856. 42650   LOCATE ROW,COL
  857. 42700   FOR XXX = 1 TO 80-COL
  858. 42750    PRINT " ";
  859. 42800   NEXT XXX
  860. 42850   '
  861. 42900   FOR XXX = ROW + 1 TO 23
  862. 42950    PRINT BLANKLINE$
  863. 43000   NEXT XXX
  864. 43050   RETURN
  865. 43100  REM ********** SRN DATA NAME'S VALIDATOR ****************
  866. 43150  LOCATE ROW,COL : INPUT T$
  867. 43200  WHILE((LEFT$(T$,1) = " ") AND (LEN(T$) > 1))
  868. 43250    T$ = RIGHT$(T$,LEN(T$)-1)
  869. 43300  WEND
  870. 43350  IF T$ = " " THEN GOTO   44400
  871. 43400  WHILE((RIGHT$(T$,1) = " ") AND ( LEN(T$) > 1))
  872. 43450    T$ = LEFT$(T$,LEN(T$) -1)
  873. 43500  WEND
  874. 43550  D$ = "": EFLAG = 0
  875. 43600  FOR I = 1 TO LEN(T$)
  876. 43650    IF (EFLAG =1) THEN GOTO 43950
  877. 43700    TT = ASC(MID$(T$,I,1))
  878. 43750    IF (TT > 64) AND (TT < 91) THEN D$ = D$ + CHR$(TT+32): GOTO 43950
  879. 43800    IF (TT > 96) AND (TT < 123) THEN D$ = D$ + CHR$(TT): GOTO 43950
  880. 43850    IF (TT = 32) THEN D$ = D$ + CHR$(TT): GOTO 43950
  881. 43900    EFLAG = 1
  882. 43950  NEXT I
  883. 44000  IF (EFLAG = 1) THEN GOTO 44600
  884. 44050  CFLAG = 1: T$ = ""
  885. 44100  FOR I = 1 TO LEN(D$)
  886. 44150    IF (CFLAG = 1) THEN T$ = T$ + CHR$(ASC(MID$(D$,I,1))-32): CFLAG =0: GOTO 44300
  887. 44200    IF (MID$(D$,I,1) = " ") THEN T$ = T$ + " ": CFLAG = 1: GOTO 44300
  888. 44250    T$ = T$ + MID$(D$,I,1)
  889. 44300  NEXT I
  890. 44350  SNAME$ = T$: RETURN
  891. 44400  LOCATE 22,10: BEEP
  892. 44450  PRINT "THE NAME IS ALL BLANKS": BEEP
  893. 44500  FOR X = 1 TO 1000: NEXT X: GOTO 44750
  894. 44550  GOSUB 42600 : GOTO 43100
  895. 44600  LOCATE 22,10: BEEP
  896. 44650  PRINT " SORRY YOUR NAME CONTAINS AN ILLEGAL CAHRACTER": BEEP
  897. 44700  FOR X = 1 TO 1000: NEXT X : GOTO 44750
  898. 44750  GOSUB 42600 : GOTO 43100
  899. 44800  REM ************ FILENAME VALIDATOR ***************
  900. 44850  REM *
  901. 44900  CLS
  902. 44950  PPOS = 0
  903. 45000  LOCATE 10,10
  904. 45050  PRINT "  Please input your filename (A-Z, MAX CH.'S = 8)"; : INPUT ZN$
  905. 45100  IF LEN(ZN$) >  8 THEN GOTO 46000
  906. 45150  FOR X = 1 TO LEN(ZN$)
  907. 45200   TT  =ASC( MID$(ZN$,X,1))
  908. 45248  IF ((TT  > 44) AND (TT <46)) THEN GOTO 45400
  909. 45249  IF ((TT  > 47) AND (TT <58)) THEN GOTO 45400
  910. 45250  IF ((TT  > 63) AND (TT  < 91)) THEN GOTO 45400
  911. 45300   IF ((TT > 96) AND ( TT < 123)) THEN GOTO 45400
  912. 45350  GOTO 46400
  913. 45400  NEXT X
  914. 45450  '
  915. 45500  ON ERROR GOTO 46750
  916. 45550  OPEN "I", #1, ZN$
  917. 45600  IF LOADING$ = "TRUE" THEN GOTO 47150
  918. 45650  BEEP
  919. 45700  LOCATE 20,10 : PRINT "FILENAME: ";ZN$;" ALREADY EXISTS"
  920. 45750  BEEP
  921. 45800  FOR DELAY = 1 TO 1000 : NEXT DELAY
  922. 45850  GOTO 44850
  923. 45900  '
  924. 45950   RETURN
  925. 46000  BEEP
  926. 46050  LOCATE 20,10
  927. 46100  PRINT " FILENAME CONTAINS TOO MANY CHARACTERS"
  928. 46150  LOCATE 21,10 : PRINT "REMEMBER MAXIMUM OF 8 CHARACTERS."
  929. 46200  BEEP
  930. 46250  FOR DELAY = 1 TO 1000 : NEXT DELAY
  931. 46300  GOTO 44850
  932. 46350  '
  933. 46400  BEEP
  934. 46450  LOCATE 20,10
  935. 46500  PRINT " ILLEGAL CHARACTER IN FILENAME"
  936. 46550  LOCATE 21,10 : PRINT " REMEMBER ONLY 'aA' to 'zZ' MAY BE USED.'
  937. 46600  BEEP
  938. 46650  FOR DELAY = 1 TO 1000 : NEXT DELAY
  939. 46700  GOTO 44850
  940. 46750  IF LOADING$ = "TRUE" THEN GOTO 46900
  941. 46800  CLOSE #1
  942. 46850  GOTO 47100
  943. 46900  CLS : BEEP
  944. 46950  LOCATE 10,10 : PRINT "FILE: ";ZN$;" DOES NOT EXIST"
  945. 47000  BEEP : FOR DELAY = 1 TO 1000 : NEXT DELAY
  946. 47050  ZN$ = "EMPTY"
  947. 47100  RESUME 47150
  948. 47150  CLOSE: RETURN
  949. 47200  REM ************************* PRINTER ROUTINE ***************************
  950. 47250  REM
  951. 47300  CLS : LOCATE 10,10
  952. 47350  PRINT " WOULD YOU LIKE THE REPORT ECHOED TO THE PRINTER(Y/N)";:
  953. 47400  INPUT A$: A$ = LEFT$(A$,1)
  954. 47450  IF (A$ = "Y") OR (A$ = "y") THEN POKE 1883,255: GOTO 47550
  955. 47500  IF ((A$ <> "N") AND (A$<>  "n")) THEN 47300
  956. 47550  CLS : RETURN
  957. 47600  REM
  958. 47650  REM ************************* ERROR MESSAGES ****************************
  959. 47700  CLS:BEEP : LOCATE 10,10 : PRINT "THERE IS NOT A VALID NUMBER": BEEP
  960. 47750  FOR DELAY = 1 TO 1000 : NEXT DELAY : RETURN
  961. 47800  CLS : BEEP : LOCATE 10,10 : PRINT "USER FILE ALREADY EXISTS IN MEMORY": BEEP
  962. 47850  FOR DELAY = 1 TO 1000 : NEXT DELAY : RETURN
  963. 47900  CLS : BEEP : LOCATE 10,10 : PRINT "FILE DOES NOT EXIST ON DISK" : BEEP
  964. 47950  FOR DELAY = 1 TO 1000 : NEXT DELAY : RETURN
  965. 48000  CLS:BEEP : LOCATE 10,10 : PRINT "THERE IS NOT A CURRENT FILE IN MEMORY"
  966. 48050  FOR DELAY = 1 TO 1000 : NEXT DELAY : RETURN
  967. 48100  CLS : BEEP : LOCATE 10,10 : PRINT "OUT OF MEMORY IN RRN" : BEEP
  968. 48150  FOR DELAY = 1 TO 1000 : NEXT DELAY : RETURN
  969. 48200  CLS : BEEP : LOCATE 10,10 : PRINT "OUT OF MEMORY IN SRN" : BEEP
  970. 48250  FOR DELAY = 1 TO 1000 : NEXT DELAY : RETURN
  971. 48300  CLS:BEEP : LOCATE 10,10 : PRINT "STUDENT NAME IS NOT FOUND" : BEEP
  972. 48350  FOR DELAY = 1 TO 1000 : NEXT DELAY : RETURN
  973. 48400  CLS : BEEP : LOCATE 10,10 : PRINT "OUT OF MEMORY IN ARN" : BEEP
  974. 48450  FOR DELAY = 1 TO 1000 : NEXT DELAY : RETURN
  975. 48500  CLS : BEEP : LOCATE 10,10 : PRINT "FILE IS AN EMPTY LIST" : BEEP
  976. 48550  FOR DELAY = 1 TO 1000 : NEXT DELAY : RETURN
  977. 48600  CLS : BEEP : LOCATE 10,10 : PRINT "THERE ARE NO ASSIGNMENTS!": BEEP
  978. 48650  FOR DELAY = 1 TO 1000 : NEXT DELAY : RETURN
  979. 48700  CLS : BEEP : LOCATE 10,10 : PRINT "TOTAL % IS GREATER THAN 100": BEEP
  980. 48750  FOR DELAY = 1 TO 1000 : NEXT DELAY : RETURN
  981.