Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

need help with my Project You are given a file with the list of students. For each student, you are given their name, gender and

need help with my Project

You are given a file with the list of students. For each student, you are given their name, gender and birthday. You will also have their preference for quiet time, music, reading and chatting. Using this information, you can then determine the compatibility between two people for rooming together, according to a formula developed by the Dorm Life Council. You will need to create four classes in order to do this project: Match.java, Student.java, Date.java and Preference.java. Below is how each class should function:

Student Write a Student class that stores the following information about a person as instance variables: name: of type String for the name gender: of type char for the sex 'M' or 'F' birthDay: of type Date (see below) for the date of birth pref : of type Preference for their answers to four activities matched : of type Boolean to convey whether its been matched

The Student class should have at least the following (you may add more as you deem fit): a constructor, which sets the instance variables to their appropriate input parameters (4 inputs)

Accessor methods for each of the 5 instance variables

Mutator method for matched to set it to true after a successful match with another student (note: should set on BOTH students) compare(Student st) method that returns the compatibility score between oneself and the Student input parameter, st.

Compatibility Score Calculation (returned by compare) o Highest score is 100 and lowest is 0 o Different genders make score 0 (only matching same gender students as roommates) o Formula : (40 Preferences) + (60 AgeDifference) o Preferences : Absolute differences in each of the 4 activities added together o AgeDifference : # of months between two birthdays with the maximum being 5 years (60 months) o Use Math.abs() method call to calculate absolute value e.g. Math.abs(age2 age1)

Date The class named Date should have the following instance variables:

year: of type int in the range 1900-3000

month: in the range 1 to 12 (January is 1)

day: in the range 1 to 31 AND appropriate to the month. (can assume February is always 28 days) The class Date should have at least the following methods:

a constructor, which sets the instance variables to their appropriate input parameters (3 inputs) Accessor methods for each of the 3 instance variables

compare(Date dt) method that returns the difference between oneself and the Date input parameter, dt. o Use dayOfYear() to calculate the difference between month/day then add 365*years to it. Finally divide the total number of days differential by 30 to approximate the # of months as a difference. If the difference is higher than 60 then should only return 60 as a max value.

public int dayOfYear() { int totalDays = 0; switch (month) { case 12: totalDays += 30; case 11: totalDays += 31; case 10: totalDays += 30; case 9 : totalDays += 31; case 8 : totalDays += 31; case 7 : totalDays += 30; case 6 : totalDays += 31; case 5 : totalDays += 30; case 4 : totalDays += 31; case 3 : totalDays += 28; case 2 : totalDays += 31; } totalDays += day; return totalDays;

Preference Write a Preference class that records preferences for different types of activities:

quiet Time music reading chatting Each of these is of type int and must contain values in the range 0 to 10 (inclusive). 0 means the person hates the activity. 10 means the person loves the activity. The class Preference should have at least the following methods

: a constructor, which sets the instance variables to their appropriate input parameters (4 inputs) Accessor methods for each of the 4 instance variables compare(Preference pref) method that returns the difference between oneself and the Preference input parameter, pref. o Sum of absolute value of the differences in the 4 activities. Match Write a Match class (with main()) that performs the following functions:

Create an array of Students (max = 100) Read from a text file all the students information (tab delimited) o Name (String) o Gender (char) o Date (String: Month-Day-Year, - delimited) o Quiet Time (int 0-10) o Music (int 0-10) o Reading (int 0-10) o Chatting (int 0-10)

For each line (in the text file) o Extract the information for each student o Create a Student pointed to be an entry in the array o Keep a count of actual number of students (less than 100)

For each Student (after completely done reading) o Check against every other student (assuming they are not matched already) their compatibility scores o Find the Best Score and Best Match person o Match the two roommates up and prints out the result Note: Your algorithm for matching should work something like this: Foreach student NOT currently matched Foreach rest of students NOT currently matched currentScore = studentA.compare(studentB) if the currentScore is better than MaxScore bestMatchStudent is student bestMatchScore is currentScore studentA is now Matched bestMatchStudent is now Matched Also note that you have an array of students presumably. So studentA.compare(studentB) will actually look like this: if(!students[j].getMatched) // student not matched already currentScore = students[i].compare(students[j]);

Testing We have included two test files Students.txt and FullRoster.txt.

Expected Output: Students.txt Abey matches with Melissa with the score 60 John matches with Jeff with the score 100 Craig has no matches.

Expected Output: FullRoster.txt Abhay matches with Alexandra with the score 96 Adam matches with Alan with the score 100 Alexander matches with Alfred with the score 98 Analisa matches with Andrea with the score 99 Andrew matches with Colin with the score 90 Angelina matches with Dana Colleen with the score 93 Antonietta Vicky matches with Cynthia with the score 93 Arun Premnath matches with Kurt with the score 81 Chih matches with Dalila with the score 78 Daniel has no matches. Kristal matches with Kristin Lunney with the score 91 Kristina matches with Lifen with the score 90 Lauren matches with Lien T. with the score 96

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Intelligent Information And Database Systems Asian Conference Aciids 2012 Kaohsiung Taiwan March 19 21 2012 Proceedings Part 3 Lnai 7198

Authors: Jeng-Shyang Pan ,Shyi-Ming Chen ,Ngoc-Thanh Nguyen

2012th Edition

3642284922, 978-3642284922

More Books

Students also viewed these Databases questions