Scenario
Your friend Mike has just graduated with his B.S. AIT and has been applying to jobs. He is getting so many responses back, he wants to keep track of the 50 jobs he has applied to. You offer to help him by creating an efficient, object-oriented application with a polished user interface so Mike can track his status at each of the 50 jobs. Mike draws a process diagram for you that shows you the different statuses he created in his job hunting process. Each job must conform to one of these states. See image.
For each job applied to, Mike also wants to track the company name, recruiter name, and number of miles away from his home. For jobs where Mike receives an offer, he wants to be able to track the offer amount. He mentions to you the application must have an offer amount for the job set if an offer has been received, so he doesnt forget to record how much money is being offered for a job.
When the application is launched Mike expects to see a menu that contains the following options:
Add a job
This option should allow Mike to enter all information about one job he applied to. If Mike has reached his limit of jobs, he should see an error message.
Display all jobs
This option should display all information, well-formatted, about every job Mike has applied to. Only when the status of the job is: offer received, should the amount of the offer received also be displayed.
Find highest paying job
This option will find the highest offer amount for a job where an offer has been received. It will display, well-formatted, only the company name, recruiter name, and offer amount. If two or more jobs are tied for the highest offer amount, all jobs with that offer amount will be displayed.
Exit application
After Mike completes an option from the menu other than Exit application, he should be reprompted to enter another option. The only way to exit the application is for Mike to select this option. It should not exit for any other reason.
Other Requirements
- Your solution must use object-oriented techniques (No points earned for a procedural solution).
- Your solution must demonstrate use of arrays. You may not use ArrayLists.
- You may not use Scanner or System classes for input/output. You must use JOptionPane.
- You may not use System.exit, or any variant that exits the program in the middle of the program. The program should only exit once the algorithm has finished completing.
- Your solution may not use any functions or language constructs not covered during IT 106 or this semesters IT 206 without prior authorization from your instructor, even if you know other functions or language constructs. We want everyone to be on the same "playing field", regardless of previous programming exposure, and get practice with algorithmic design to solve problems (the intent of the course). Using something existing not discussed in class does not give you as much practice as solving the problem yourself. Doing this may lead to a substantial grade penalty, a grade of zero, or an Honor Code inquiry. When in doubt, ask!
Hints:
- Think about what type of validations might be appropriate for this application. Make sure these are all handled. Dont forget about what you learned about data validation in IT 106 (e.g. if statements, try/catch, etc.). Whenever an invalid value is entered, the user must be informed that an error has occurred and then be re-prompted to enter in a new value.
- Remember the methods summarizing data on multiple objects should be created in the implementation class
Programming Assignment 3: Solution Design
- List and describe the purpose of each class that will be needed to solve this problem
- You must separately identify (list) and describe the purpose of each class. One or two sentences per class should be sufficient.
- Create a detailed UML class diagram, listing and explaining all class variables, accessors, mutators, special purpose methods, and constructors associated to each data definition class
- Create a defining diagram/IPO hierarchy chart detailing the implementation design (Note: You must do this, but it is not required to be submitted)
- Create pseudocode detailing your solution design
- Data Definition Class(es) You must provide pseudocode ONLY for validating mutators and special purpose methods. No pseudocode is necessary for constructors or accessors
- Implementation Class You must provide pseudocode for all methods
Programming Assignment 4: Solution Implementation
Write a well-documented, efficient Java program that implements the solution design you identified. Include appropriate documentation as identified in the documentation expectations document.