Must be C++
Your assignment is to track the corporate careers of some up-and-coming executives who are busily changing jobs, being promoted and demoted, and, of course, getting paid. In this (admittedly unrealistic) version of the corporate world, people either belong to a company or are unemployed. The list of people the program must deal with is not fixed: initially there are none, and new people may be introduced by the JOIN command (see below). Executives within a company are ordered according to a seniority system and are numbered from 1 to N (the number of people in the company) to indicate their rank: 1 is the lowest rank and N is the highest. A new employee always enters at the bottom of the ladder and hence always starts with a rank of 1. When a new person joins a company, the rank of everyone in the company is increased by one, and when an employee quits, the rank of employees above him or her in that company is decreased by one. Promotions can also occur and affect the ranks in the obvious way. Naturally, salaries are based on rank. An employee's salary is Rank*$1000. Unemployed people draw $50 in unemployment compensation. INPUT 1. From file "company": The company names are listed one per line. There are at most 20 companies. Company names are at most 10 characters and do not contain embedded blanks. 2. From file "commands": commands, as listed below. <Person> and <Company> names are at most 10 characters and do not contain embedded blanks.
JOIN <person> <company> <Person> joins the specified <company>. This may be the first reference to this person, or he or she may be unemployed. The person does not currently belong to another company. Remember that when a person joins a company, he or she always starts at the bottom.
QUIT <person> <Person> quits his or her job and becomes unemployed. You may assume that the person is currently employed. CHANGE <person> <company>
<Person> quits his or her job and joins the specified new <company>. You may assume that the person is currently employed.
<Person> is moved up one step in the current company, ahead of his or her immediate superior. ff the person has highest rank within the company, no change occurs.
continued in next section.....
<Person> is moved one step down in the current company, below his or her immediate subordinate. If the person has lowest rank within the company, no change occurs.
Prints out a chronological employment history of <person> from first job to last, including salaries and final rank.
Each person is paid his or her salary as specified in the Problem Statement. (You must keep track of the amount each person has earned from the start of the program.)
The current list of employees should be printed for the specified <company>. The employees must be printed in order of rank; either top to bottom or bottom to top is appropriate.
The list of unemployed people should be printed.
Print the employees in each company, as specified under the EMPLOYEES command above, then print the unemployed people. Label the output appropriately
Stop accepting commands.
Note that the CHANGE, PROMOTE, and DEMOTE commands do not tell you the person's current employer; you have to search the data structure to find the person.
OUTPUT (to screen and file "employee-out")
1. Echo print all commands, and print out a message that indicates what action has been taken. (For the EMPLOYEES and UNEMPLOYED commands, print out the information specified in the Input section.)
2. After all the commands have been processed, print out one list consisting of all the people who have been mentioned in any command and the total amount of money they have accumulated.
Your solution should be object-oriented. You should create a Corporate World Class that responds to the action commands. You should make use of one of the two list ADTs (array or pointer based) that you already wrote in your solution.