|
|
| Line 37: |
Line 37: |
| ** Attempt to create a simple Moodle module extension which can be further built off of to provide further functionality. | | ** Attempt to create a simple Moodle module extension which can be further built off of to provide further functionality. |
| * Provide a script to move StudentParser.awk's output to ClassParser.awk's input | | * Provide a script to move StudentParser.awk's output to ClassParser.awk's input |
|
| |
| =="Wishlist Accomplishments "==
| |
|
| |
|
| |
|
| ==Documentation & Resources== | | ==Documentation & Resources== |
| '''''StudentParser.awk''''' Input file format:
| | <img>http://achumpatoxford.com/u/files/331/0e82d68cfd2c88d8b6dec8d93d1ffd61.png</img> |
| <pre> | |
| Field Structure:
| |
| "Mathematical Operation" "Correct?"
| |
| | |
| example:
| |
| 45/67 y
| |
| </pre>
| |
| | |
| '''''StudentParser.awk''''' Output file format *Incomplete*
| |
| <pre>
| |
| Field Structure:
| |
| line 1: "Student MAC-Address"
| |
| line 2+: "Operation type" "correct in decimal"
| |
| | |
| example:
| |
| 0:1e:8c:25:a0:c1
| |
| + .86
| |
| - .84
| |
| x .91
| |
| / .86 | |
| </pre>
| |
| | |
| '''''Grader.awk:'''''
| |
| <pre>
| |
| #!/usr/bin/awk
| |
| | |
| # grades -- average student grades and determine
| |
| # letter grade as well as class averages
| |
| # at the command line run: awk -f grader.awk grades.dat
| |
| | |
| BEGIN { OFS = "\t"; "date +%H:%M:%S" | getline current_time
| |
| close("date +%H:%M:%S")
| |
| print "Report printed on " current_time
| |
| }
| |
| | |
| # action applied to all input lines
| |
| {
| |
| # add up the grades
| |
| total = 0
| |
| for (i = 3; i <= NF; ++i) # i=3 skips first 2 fields - last name, first name
| |
| total+=$i
| |
|
| |
| # calculate average
| |
| avg = total / (NF - 2)
| |
|
| |
| # assign student's average to element of array
| |
| class_avg[NR] = avg
| |
|
| |
| # determine letter grade
| |
| if (avg >= 90) grade="A"
| |
| else if (avg >= 80) grade="B"
| |
| else if (avg >= 70) grade="C"
| |
| else if (avg >= 60) grade="D"
| |
| else grade="F"
| |
|
| |
| # increment counter for letter grade array
| |
| ++class_grade[grade]
| |
|
| |
| # print student first name, last name, average interger value, and letter grade
| |
| print $2 " " $1, int(avg), grade#, NF, NF
| |
| }
| |
| | |
| # print out class statistics
| |
| END {
| |
| # calculate class average
| |
| for (x = 1; x <= NR; x++)
| |
| class_avg_total += class_avg[x]
| |
| class_average = class_avg_total / NR
| |
|
| |
| # determine how many above/below average
| |
| for (x = 1; x <= NR; x++)
| |
| if (class_avg[x] >= class_average)
| |
| ++above_average
| |
| else
| |
| ++below_average
| |
|
| |
| # print results
| |
| print ""
| |
| print "Class Average: ", class_average
| |
| print "At or Above Average: ", above_average
| |
| print "Below Average: ", below_average
| |
|
| |
| # print number of students per letter grade
| |
| for (letter_grade in class_grade)
| |
| print letter_grade ":", class_grade[letter_grade]
| |
| | |
| }
| |
| </pre> | |
| | |
| ==Helpful stuff==
| |