Perl Homework 1
Create a Gradebook

Create a program that will read student data from a file (supplied from the command line), organize and store it, and allow the user to manipulate the data in certain ways (via a simple menu interface).

The data file contains each student's NAME, RIN, and a list of
GRADES, all separated by spaces. A sample file is available here.

i.e.

Abe 1234 90 75 80
Carl 2345 50 90
Jay 34 80 90 60

Not every student will have every possible assignment listed. RIN numbers will be some arbitrary length.

The user commands you should implement are:

Print out detailed student report, including Name, RIN, Grades, and GPA (just an average of the grades, not including any that are missing).

Print out a list of all students sorted by Name or GPA (user's choice).

List of all students who are failing/passing.

Change/add a grade for any student.

The grading scheme will be as follows:

Compilation* (no errors, no warnings): 50 points

Reads from file correctly and store data: 15 points

Print sorted student information: 15 points

List failing/passing students: 5 points

Change/Add a grade: 10 points

*This must be a valid attempt at creating the entire program. A blank file with the shebang will not receive 50 points simply because it "compiles".

5 points are reserved for style points. This is for general proper coding style, including good use of indentation/white space, variable names that make sense, plentiful/witty comments, etc. Any reasonable and consistent style will be rewarded. Any style that hurts to look at will be penalized.

Perl itself can be a very hard to read and confusing language, some code is inherently compact and complex. If your code is very obtuse, but still properly formatted and commented, you won't lose any style points.

A maximum of 5 bonus points may be awarded for going "above and beyond" what the assignment calls for. In other words, if you add aditional functionality to your program that increases its usefulness, you may be rewarded with extra points. The bonus will only be awarded for a relevant additional contribution. In other words, printing the data out in a pretty format will not get you any bonus points.

The homework will be submitted by email. Email your final solution
to both lallip@cs.rpi.edu and mcguij2@rpi.edu. Let the subject
of your email be: "Perl Homework 1". Attach the plain text file, do
not zip or tar it. The homework
must work on an RCS machine. When you submit the assignment, be sure
to include your name, RCS user ID, the machine you tested it on (use
the 'hostname' command if you're logged into a remote RCS machine), a
description of your "above and beyond" attempt (if any), and
any additional comments you wish to make. If you need to resubmit
your assignment, send another email to both addresses, with the
subject "Perl Homework 1 RESUBMIT".

Reminder: Late homework passed in within 24 hours after due date lose 20% (Wednesday before midnight), after that it's a zero.