CPSC-115 Fall 2008
Project 4 - 100 points
Professor Heidi Ellis
Applicant and Resume classes due 1:00 p.m. Wednesday October 29, 2008 (25 points)
Full program due 11:20 a.m. Tuesday November 4, 2008 (75 points)
This project will allow you to become familiar with creating an application that involves multiple interacting objects, creating objects, and calling methods on objects.
Pairs:
| Partner 1 | Partner 2 |
|
Partner 1 | Partner 2 |
| Kristen Anderson | Ryan Ersland |
|
Jake Elder | John Wilsterman |
| Jin Feng Liu | Jeffrey Young |
|
Catherine Doyle | Greg Vaughan |
| Nick Dragu | Corazon Irizarry |
|
Chelsea Bainbridge-Donner | Jesse Vazquez |
Deliverables:
You must provide the following:
- 1:00 p.m. Wednesday 10/29 (25 points) email a copy of your completed Applicant and Resume classes to me. You should write an ApplicantDriver class that has a main method. The main method should:
- Create several Resume objects.
- Create several Applicant objects with resumes.
- Display the applicants including their resumes.
- Display at least one applicant who does not have a resume.
- 11:20 a.m. Tuesday 11/4 (75 points) email a copy of all of your source code classes (i.e., your .java files) to Dr. Ellis (heidi.ellis@trincoll.edu).
Overview
This project is located in the domain of job searching. You must build an application that allows companyies to advertise positions and applicant to interview for positions. The UML class diagram for the application is shown below:
Each class is explained below:
- Applicant: The Applicant class represents a typical job applicant. Job applicants have names, dates of birth, race, and resumes.
- The methods on the Applicant class are getters or setters with the exception of the toString method.
- The toString method should check to see if the applicant instance has a resume and if it does, it should include the resume when returning the string representing the applicant.
- Resume: The Resume class represents a typical resume for an entry-level employee. Information includes the type of job desired, the qualifications of the employee, the college, degree, major and minor of the employee as well as the graduation year.
- A minimal number of getter methods have been provided.
- The toString method should return a string representation of the resume.
- The yearsSinceGraduation method should return the number of years since the person graduated from college.
- Position: The Position class represents a potential job position used by the InterviewScheduler when scheduling applicants to interview for possible openings. The position includes the name of the company, job title, ideal applicant characteristics, degree required, major, and applicant for the position, if any.
- A minimal number of getter and setter methods have been specified.
- The removeApplicant method should set the reference to the applicant to be null.
- The isAvailable method should return true if the position has no applicant and false if the position has an applicant.
- InterviewScheduler: The InterviewScheduler class is responsible for managing open positions and scheduling interviews with applicants. Applicants may request an interview. The InterviewScheduler only schedules interviews if the applicant matches the position and the position is available.
- The addPosition method adds a position to the scheduler. If the interview scheduler already contains four positions, an error message is produced.
- The openPositions method returns a string representation of all of the positions for which there are no applicants.
- The scheduleInterview method attempts to schedule an applicant for an interview with a position. The method checks to see if each position is open. If a position is open, the scheduler calls the isCompatible method to determine whether the applicant is a good fit for that position. If the applicant is compatible, then the scheduleInterview method adds the applicant to the position.
- The isCompatible method checks the compatibility between an applicant and a position. Note that this method is only used by the InterviewScheduler and there for has the private access specifier. Compatibility is based on three things:
- the position job type matching the position desired by the applicant;
- the applicant's qualifications matching some of the job characteristics; (not all of the job's characteristics must be met by the applicant's qualifications, only part)
- the position's required major matching the applicant's major.
Two out of these three features must match in order for the applicant and position to be compatible.
- The toString method should print out the interview scheduler information including all positions.
In addition to the classes defined above, you must also create a JobSearchDriver class. The JobSearchDriver class contains only a main method and should do the following:
- Create four resumes.
- Create four applicants.
- Print out the applicants, including resumes.
- Create five positions.
- Create an interview scheduler.
- Add the five positions to the interview scheduler.
- Print the interview scheduler.
- Schedule interviews for the four applicants. Create data such that some applicants will have interviews scheduled and some will not.
- Print the remaining open positions.
Output from a sample test run might look like:
THE APPLICANTS:
APPLICANT:
Name: Jane
Date of birth: 01-01-88
Race: Asian
RESUME:
Job type: Requirements Analyst
Qualifications: communication skills, analytical skills
College: Trinity Degree: BS Major: CS Minor: Communication
Graduation year: 2008 Years since graduation: 0
APPLICANT:
Name: Bob
Date of birth: 12-12-88
Race: Hispanic
RESUME:
Job type: Artist
Qualifications: oils, watercolor
College: RISD Degree: BA Major: FA Minor: Painting
Graduation year: 2008 Years since graduation: 0
APPLICANT:
Name: Mario
Date of birth: 02-03-84
Race: White
RESUME:
Job type: Violinist
Qualifications: baroque, fiddle,
College: Hartt Degree: BA Major: FA Minor: Music
Graduation year: 2006 Years since graduation: 2
APPLICANT:
Name: Maria
Date of birth: 05-14-86
Race: African American
RESUME:
Job type: Database Designer
Qualifications: SQL
College: Trinity Degree: BS Major: CS Minor:
Graduation year: 2006 Years since graduation: 2
THE INTERVIEWSCHEDULER AND POSITIONS:
Company: IBM
Job type: Requirements Analyst
Characteristics: communication skills
Degree: BS Major: CS, SE
Company: Google
Job type: Innovation Expert
Characteristics: novel thought processes, communication skills
Degree: BS Major: CS, IT, SE
Company: Oracle
Job type: Database Administrator
Characteristics: SQL, memory management
Degree: BS Major: CS
Company: Aetna
Job type: Web Designer
Characteristics: graphic arts, communication skills
Degree: BS Major: CS, IS
SCHEDULING INTERVIEWS:
Interview for : Jane is scheduled with:
Company: IBM
Job type: Requirements Analyst
Characteristics: communication skills
Degree: BS Major: CS, SE
No positions available at this time for: Bob.
No positions available at this time for: Mario.
Interview for : Maria is scheduled with:
Company: Oracle
Job type: Database Administrator
Characteristics: SQL, memory management
Degree: BS Major: CS
REMAINING OPEN POSITIONS:
Company: Google
Job type: Innovation Expert
Characteristics: novel thought processes, communication skills
Degree: BS Major: CS, IT, SE
Company: Aetna
Job type: Web Designer
Characteristics: graphic arts, communication skills
Degree: BS Major: CS, IS
You must abide by the following:
- Your classes must conform to the UML provided above. You must use the provided class names (i.e., do not preface your class name with your name as we have done in the past).
- Your application must perform according to the description above.
- You must use good programming style and follow Java convention as discussed in class.
Grading:
Project 4 will be graded on:
- Correctness of class definition and object use. Your classes must conform to the provided UML diagram and your application must adhere to the description above.
- Completeness of code.
- Correctness of code.
- Correct programming style and use of convention.
- Understandability and readability including comments and internal documentation.