CSC-250 Fall 2007
Project 1
For the first project this semester you will be writing a program to generate semester grade reports similar to the ones given to LR students. The general form of such a report is: Name Course ****** ****** ****** ******
Credit Hrs * * * * --Semester: ** Cumulative: ***
Grade * * * *
GPA
*.** *.**
The output for each student should be very similar to the above, but there will be several students to report on. Input The data file will contain the following information: <student’s last name> <student’s first name> <student’s middle name> <0 or 1 : 0 if the student goes by his/her first name, 1 if by his/her middle name> <cum gpa before this semester> . . <student’s last name> <student’s first name> <student’s middle name> <0 or 1 : 0 if the student goes by his/her first name, 1 if by his/her middle name> <cum gpa before this semester> . . . . etc.
The number of students will be between 1 and 5, and the number of courses taken by each student will be between 1 and 7, and will of course vary from student to student. Credit hours for courses will be integers, the GPA (grade point average) will be a float carried to two decimal places. Courses will be designated by a three-character department and a threedigit number, just as they are at LR. (e.g. CSC250) Grades will be simply single upper case letters, A, B, C, D, or F. There will be no + or – grades. The data file will be called proj1.in and will be made available in the assignments folder of blackboard. Output Details The output should be sent to a file, one student per page. The reports should be formatted in columns as shown above. The GPA should be displayed to two decimal places. The name should be displayed in one of the following forms, depending on the value of the 0|1 flag on the line immediately following the middle name in the input file: William H. Macy J. Paul Getty
if the flag is 0 if the flag is 1
GPA Calculation The GPA is calculated by dividing total quality points by total credit hours. The quality points are determined by multiplying the number in the following table by the number of credit hours: grade A B C D F
points 4 3 2 1 0
For example, a B in a 4-hour course would earn 3 × 4 = 12 quality points. Additional Required Features You should use at least two distinct Abstract Data Types in your program design, such as one for the name of a student, one for information about a single course taken (course, hrs, and grade) or one for a list of courses taken by a student. Each ADT should be a separate package, with specification and body for each. Documentation: you should include documentation for each of your ADTs as well as for the main program. Include all algorithms in pseudocode and a description of why you chose the algorithms and data structures you did. Due Date The (plain text) source code for your program and full documentation (in one of the following formats: MSWord, plain text, RTF) must be uploaded to blackboard by midnight, Friday, September 21.