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==
| |