PROGRAM 21
' FILENAME: PROG21.BAS ' THIS PROGRAM INPUTS EMPLOYEE'S NAMES, PAYRATES, AND HOURS WORKED ' AND CALCULATES THE TOTAL PAY OF EACH EMPLOYEE AND THE TOTALS FOR ' THE ENTIRE GROUP. AFTER EACH EMPLOYEE'S DATA HAS BEEN INPUT, IT ' DISPLAYS THE LIST OF EMPLOYEE'S AS THEY WERE ORIGINALLY INPUT, ' BACKWARDS, AND IN ALPHABETICAL ORDER. TOTALS ARE SHOWN FOR ' EACH LIST. CLS DIM NAME$(1 TO 100), HOURS(1 TO 100), RATE(1 TO 100), PAY(1 TO 100) GOSUB INPUT.DATA GOSUB PRINT.DATA GOSUB SORTANDPRINT.THEM GOSUB SORT.THEM GOSUB PRINT.SORT END INPUT.DATA: COUNT = 1 COUNT2 = 1 INPUT "ENTER EMPLOYEE'S NAME. TYPE 'END' TO QUIT. ", NAME$(COUNT) IF NAME$(COUNT) = "END" THEN GOSUB SORT.THEM GOSUB PRINT.SORT END END IF DO INPUT "ENTER THE NUMBER OF HOURS WORKED. ", HOURS(COUNT) INPUT "ENTER THE RATE OF PAY. ", RATE(COUNT) LET PAY(COUNT) = RATE(COUNT) * HOURS(COUNT) LET PAY(COUNT) = INT(PAY(COUNT) * 100 + .5) / 100 LET TOTAL1 = TOTAL1 + HOURS(COUNT) LET TOTAL2 = TOTAL2 + PAY(COUNT) COUNT = COUNT + 1 COUNT2 = COUNT2 + 1 CLS INPUT "ENTER EMPLOYEE'S NAME. TYPE 'END' TO QUIT. ", NAME$(COUNT) LOOP UNTIL UCASE$(NAME$(COUNT)) = "END" RETURN PRINT.DATA: CLS PRINT "NAME "; "HOURS "; "PAYRATE "; "PAY" COUNT2 = COUNT2 - 1 FOR COUNT = 1 TO COUNT2 PRINT USING "\ \ ## ###.## ####.##"; NAME$(COUNT); HOURS(COUNT); RATE(COUNT); PAY(COUNT) NEXT COUNT LET TOTAL3$ = "TOTALS" PRINT USING "\ \ #### #####.##"; TOTAL3$; TOTAL1; TOTAL2 RETURN SORTANDPRINT.THEM: INPUT "PRESS 'ENTER' TO CONTINUE. (ARRAY BACKWARDS.) ", ENTER$ CLS PRINT "NAME "; "HOURS "; "PAYRATE "; "PAY" FOR COUNT = COUNT2 TO 1 STEP -1 PRINT USING "\ \ ## ###.## ####.##"; NAME$(COUNT); HOURS(COUNT); RATE(COUNT); PAY(COUNT) NEXT COUNT PRINT USING "\ \ #### #####.##"; TOTAL3$; TOTAL1; TOTAL2 RETURN SORT.THEM: INPUT "PRESS 'ENTER' KEY TO CONTINUE. (ARRAY IN ALPHABETICAL ORDER.) ", ENTER$ CLS DO SORTED$ = "Y" FOR COUNT = 1 TO COUNT2 - 1 IF NAME$(COUNT + 1) < NAME$(COUNT) THEN SWAP NAME$(COUNT + 1), NAME$(COUNT) SWAP HOURS(COUNT + 1), HOURS(COUNT) SWAP RATE(COUNT + 1), RATE(COUNT) SWAP PAY(COUNT + 1), PAY(COUNT) SORTED$ = "N" END IF NEXT LOOP WHILE SORTED$ = "N" RETURN PRINT.SORT: PRINT "NAME "; "HOURS "; "PAYRATE "; "PAY" FOR COUNT = 1 TO COUNT2 PRINT USING "\ \ ## ###.## ####.##"; NAME$(COUNT); HOURS(COUNT); RATE(COUNT); PAY(COUNT) NEXT COUNT PRINT USING "\ \ #### #####.##"; TOTAL3$; TOTAL1; TOTAL2 RETURN ' OUTFILE: PROG21.OUT ENTER EMPLOYEE'S NAME. TYPE 'END' TO QUIT. anthony f. ortiz ENTER THE NUMBER OF HOURS WORKED. 40 ENTER THE RATE OF PAY. 50 ENTER EMPLOYEE'S NAME. TYPE 'END' TO QUIT. david white ENTER THE NUMBER OF HOURS WORKED. 10 ENTER THE RATE OF PAY. 5 ENTER EMPLOYEE'S NAME. TYPE 'END' TO QUIT. adam storm ENTER THE NUMBER OF HOURS WORKED. 20 ENTER THE RATE OF PAY. 15 ENTER EMPLOYEE'S NAME. TYPE 'END' TO QUIT. ed cornejo ENTER THE NUMBER OF HOURS WORKED. 20 ENTER THE RATE OF PAY. 15 ENTER EMPLOYEE'S NAME. TYPE 'END' TO QUIT. end NAME HOURS PAYRATE PAY anthony f. ortiz 40 50.00 2000.00 david white 10 5.00 50.00 adam storm 20 15.00 300.00 ed cornejo 20 15.00 300.00 TOTALS 90 2650.00 PRESS 'ENTER' TO CONTINUE. (ARRAY BACKWARDS.) NAME HOURS PAYRATE PAY ed cornejo 20 15.00 300.00 adam storm 20 15.00 300.00 david white 10 5.00 50.00 anthony f. ortiz 40 50.00 2000.00 TOTALS 90 2650.00 PRESS 'ENTER' KEY TO CONTINUE. (ARRAY IN ALPHABETICAL ORDER.) NAME HOURS PAYRATE PAY adam storm 20 15.00 300.00 anthony f. ortiz 40 50.00 2000.00 david white 10 5.00 50.00 ed cornejo 20 15.00 300.00 TOTALS 90 2650.00
BACK TO CIS133 PAGE.