Homework Assignment 2
Assume that you have been hired by the newly-founded Tonopah State University in
Nevada to create software that will track and report financial information about its
several types of students.
The information for every student will include:
– student identification number (six digits)
– first name
– last name
– age in years
– number of credit hours enrolled in this term
The entire population of students can be divided into two subgroups: degree-seeking
students and non-degree seeking students. In addition to the information listed above,
the University would like to keep track of the following information for degree-seeking
– major (gaming science; hotel management; lounge arts; beverage engineering)
– academic standing (good; warning; probation)
The University has no need to track this information for non-degree seeking students.
Within the category of degree-seeking students, the University further distinguishes
between degree-seeking students who have financial assistance and those who do not.
Students with financial assistance have all the attributes of students without financial
assistance, with the addition of:
– dollar value of financial assistance available per term
Similarly, Tonopah State recognizes two different types of non-degree-seeking students:
senior citizens and certificate students. Senior citizens are students who are 65 years of
age or older and who are taking courses for personal enrichment but who are not pursuing
a degree or certificate. (Note that a degree-seeking student or a certificate student might
also be 65 or older; these students would not fall into the senior citizen category.)
Certificate students are taking a short sequence of courses in pursuit of a vocational
credential in one of the four major disciplines described above. Thus, your program
should keep track of the kind of certificate each student is pursuing. Also, keep in mind
that Tonopah State may want to add additional non-degree-seeking student subcategories
in the future.
Tonopah State University wants to be able to print all the recorded data for any given
student onto the monitor. This should be achieved by a single call to a method named
printData on the corresponding object. Here’s an example of what the results of the
printData method should look like when applied to a degree-seeking student with
ID number: 046352
Name: Moe Howard
Moe is a degree-seeking student enrolled in 11 credits
Moe receives $500 in financial assistance per term
Moe’s major is beverage engineering
Moe’s academic standing is good
Tonopah State also wants to be able to print the fees assessed to a given student for the
term. This should be done by calling a method named computeFees on the
corresponding object. The fee assessment is computed in different ways, depending on
the type of student, as follows:
Certificate student: fees are a fixed assessment of $700 per term plus $300 for every
credit hour the student has enrolled in this term.
Senior citizen: fees are a fixed assessment of $100 per term for six or fewer enrolled
credit hours. Add an additional $50 for every credit hour greater than six.
Degree-seeking student without financial assistance: Fees are a recreation and athletics
fee of $100, a student union fee of $50, and $275 per credit hour, up to a maximum of
twelve credit hours. Thus, the maximum fee assessment would be $100 + $50 + $275*12
= $3450. If the student enrolls in more than twelve credit hours, the student is assessed
only for twelve hours; the additional hours are essentially free of charge.
Degree-seeking student with financial assistance: Fees are the same as those for the
degree-seeking student without financial assistance, except that the dollar value of
financial assistance per term is subtracted from the fee assessment. If the fee assessment
drops below zero, then no fees are assessed.
In this part of the assignment, you have to design classes to represent the various
categories of students described above. Interfaces, abstract classes, and fully
implemented classes (also known as concrete classes) may all be useful. Or maybe
not…that’s up to you. This part of the exercise is more for your benefit than for ours.
Nevertheless, we expect you to submit a graphical representation of your design in the
form of a class hierarchy. It doesn’t have to be perfect, it just needs to be readable. You
may draw the diagram by hand if you like. For this part of the assignment, you will
submit a PDF file with your design via Canvas.
Note that you will also have to implement the class hierarchy you have designed to
complete Part Two.
In the second part of the assignment, you are asked to use Java to write the software
necessary to generate two types of reports for Tonopah State. First, you’ll need to read
the student data from a file. The input data is stored in a file in the following format:
Each line describes one student. The first string in the line is the student ID number,
followed by the first and last names, the age, and the number of credit hours. These are
followed by a single character code: Y denotes “Yes, this student is a degree-seeking
student” and N denotes “No, this is not a degree-seeking student”.
For degree-seeking-students, the “Y” is followed by a single-character code for the major
(S = gaming Science, M = hotel Management, A = lounge Arts, and E = beverage
Engineering), another single-character code for the academic standing (G = Good, W =
Warning, and P = Probation), and one more single-character code (Y denotes “Yes, this
student has financial assistance” and N denotes “No, this student does not have financial
assistance”). If the student is receiving financial assistance, this last “Y” will be followed
by the amount of financial assistance per term. If the student does not receive financial
assistance, there will be no additional information.
For non-degree-seeking students, the “N” is followed by a single-character code for the
type of non-degree-seeking student (C = Certificate student; S = Senior citizen). If
the student is a certificate student, the “C” will be followed by a single-character code
indicating the type of certificate being pursued (S = gaming Science, M = hotel
Management, A = lounge Arts, and E = beverage Engineering). If the student is a senior
citizen, there will be no additional information following the “S”.
Your program must read data in this format from a file. Depending on the different
codes, one line from the file should initiate the creation of an object of the appropriate
type, using the class hierarchy from Part One. A reference to the object should then be
stored in an array. The maximum size of this array is 100 (it’s a very small university at
this time), but your program should work with an arbitrary number of lines in the file, so
long as the number of lines does not exceed 100. A file of test data will be provided next
week. In the meantime, feel free to use the sample data shown above: build a file, add
some additional lines if you like, and see if your program works.
Once the data has been read from the file, your program should then be able to generate
two different reports. The first report is a listing of all the students, one line per student,
showing the fees each student has been assessed.
The second report is a summary of the amount of money the University has assessed each
of the four types of student. Such a report might look like this:
Summary of student fees assessed:
Degree-seeking students without financial assistance:
Degree-seeking students with financial assistance: $17,390
Certificate students: $8,050
Senior citizens: $2,100
Total fees assessed: $59,970