### Assignment 3 Code Back Evaluations: Sunday, 2/10/19, 11:59pm

Go to Peerceptiv and complete your 3 peer reviews by Thursday at midnight. After Thursday at midnight, you will evaluate how helpful your peer reviews are by Sunday at midnight.

#### (10 pts) Assignment 3 Reflective Post-Peer Review Survey:

http://oregonstate.qualtrics.com/jfe/form/SV_6tKS9w33C0x0eHj

#### Problem statement

Creating business trip expense reports is common practice. Suppose a businessperson just completed a business trip for your company. Now, you are tasked to write a program that calculates the total travel reimbursement to the businessperson and the actual amount they spent. The program should prompt the user for the following:

• The number of days spent on the trip

• The departure time on the first day of the trip, and arrival time on the last day of the trip

• The amount of airfare

• Conference or seminar registration fees

• Rent a car or use taxis during the trip

• If car rented, then you must prompt for the rental car type, total rental fee, total gas fee, total miles driven, and parking fees for each day

• If a taxi was taken, then calculate taxi fees for each day

• Hotel expenses for each day, if number of days spent on the trip is greater than 1

The total travel expenses and reimbursement are calculated as follows:

• Both airfare and registration fees can be reimbursed

• If a car was rented, the maximum reimbursement expense for each car type and gas fee per mile are listed in the following table:

 Car type Maximum allowed Rental fee per day (\$) Maximum allowed Gas fee per mile driven (\$) Sedan 20 0.24 SUV 25 0.27 Van 30 0.32 Convertible 50 0.45

The total expense for the car is: total rental fee + total gas fee

The maximum reimbursement for the car is: max allowed rental fee per day for a car type

* number of days of the trip + max allowed gas fee per mile * total miles driven

• If a car was rented, the company allows up to \$6 for parking per day. Anything beyond this must be paid by the businessperson.

• If a taxi was used anytime during the trip, the company allows up to \$10 per day.

Anything beyond this must be paid by the businessperson.

• The company allows up to \$90 per night for hotel expense. Anything beyond this must be paid by the businessperson.

• The amount of each meal eaten. On the first day of the trip, a meal is allowed as an expense if the time of departure is BEFORE (and including) …

 Meal type Departure time Breakfast 7 am Lunch 12 noon Dinner 6 pm

For example, if departure time is 6:30 am, all 3 meals on the first day are reimbursed, if departure time is 9 am, only lunch and dinner on the first day are reimbursed.

On the last day of the trip, a meal is allowed as an expense if the time of arrival is AFTER (and including) …

 Meal type Arrival time Breakfast 8 am Lunch 1 pm Dinner 7 pm

For example, if arrival time is 7:30 am, all 3 meals on the last day are NOT reimbursed, if arrival time is 5 pm, only breakfast and lunch on the last day are reimbursed.

The company allows up to \$9 for breakfast, \$12 for lunch, and \$16 for dinner. Anything beyond this must be paid by the employee.

• Reimbursement rule for the company:

If a payment goes beyond the maximal allowable amount for a certain item, the businessperson gets the maximal allowable amount reimbursed, otherwise, the

businessperson gets how much he or she paid reimbursed.

For example, if the businessperson spent \$120 for the hotel first night and \$70 for the second night, and spent \$10 for the dinner first night and \$20 for the second (both meals are allowed to reimburse), then the allowable expenses for these two items are 90 + 70 + 10 + 16 = 186.

#### Example run:

Enter the number of days on your trip: abb Invalid input! Enter again: 3

Enter your departure time on the first day: 8.00 Enter your arrival time on the last day: 17.30

Enter total amount of airfare, in \$: 586.53

Enter total conference or seminar registration fees, in \$: 26.50

Did you 1: rent a car or 2: use taxi for your trip? Enter 1 or 2: 1 Enter total spent on the rental car in \$: 150.00

Enter your total gas fee spent in \$: 25.64

1. Sedan

2. SUV

3. Van

4. Convertible

Enter your rental car type: 2

Enter the total miles driven, in miles: 130

Enter parking fee for day 1, in \$: 3.6 Enter parking fee for day 2, in \$: 12 Enter parking fee for day 3, in \$: 5.8

Enter hotel fee for night 1, in \$: 100.34 Enter hotel fee for night 2, in \$: 88.63

Day 1,

Your breakfast for day 1 is not allowed as an expense Enter lunch fee, in \$: 12.10

Enter dinner fee, in \$: 18.69

Day 2,

Enter breakfast fee, in \$: 10.77 Enter lunch fee, in \$: 8.50

Enter dinner fee, in \$: 12.18

Day 3,

Enter breakfast fee, in \$: 4.36 Enter lunch fee, in \$: 16.81

Your dinner for day 3 is not allowed as an expense

Your total expense for this trip is: \$1082.45 Your total reimbursement for this trip is: \$981.74

Do you want to calculate another business expense report (0-no or 1-yes)? 0

#### Step 1: Understanding the Problem/Problem Analysis. (15 pts)

Do you understand everything in the problem? List anything you do not fully understand, and make sure to ask a TA or instructor about anything you do not understand.

• What are the user inputs/requirements, program outputs, etc.? (5 pts)

• What assumptions are you are making? (5 pts)

• What are all the tasks and subtasks in this problem? (5 pts)

#### Step 2: Program Design. (25 pts)

• What does the overall big picture of this program look like? (flowchart or pseudocode) (20 pts)

• What data do you need to create, when do you read input from the user?

• What are the decisions that need to be made in this program?

• How would you modularize the program, how many functions are you going to create, and what are they?

• What kind of bad input are you going to handle? (5 pts)

Based on your answers above, list the specific steps or provide a flowchart of what is needed to create. Be very explicit!!!

#### Step 4: Program Testing. (10 pts)

Create a test plan with the test cases (bad, good, and edge cases). What do you hope to be the expected results?

• What are the good, bad, and edge cases for ALL input in the program? Make sure to provide enough of each and for all different inputs you get from the user.

#### (80 pts) Implementation Requirements:

• Must produce a working program that follows each rule stated above

• Your user interface must provide clear instructions for the user and information about the data being presented

• The program should never end until the user tells you to

• Use of references OR pointers is required, a couple of suggested functions are listed below:

//update total_expense and total_reimbursement

//calculate the total vehicle expense and reimbursement fee void car_rental (int days_of_trip, float &car_expense);

//calculate the total meal expense and reimbursement fee

void meal_fee (int days_of_trip, double departure_time, double arrival_time, double &meal_expense, double &meal_reimbursement);

• Make each function do one thing and one thing only

• No more than 15-20 lines inside the curly braces of any function, including main(). Whitespace, variable declarations, single curly braces, vertical spacing,

• Functions over 20 lines need justification in comments

• Do not put multiple statements into one line

• Error checking:

• Re-prompt user for any bad inputs (includes other data types)

• Do not accept negative numbers for any dollar amount or for miles driven

• Do not accept number less than 1 for the number of days

• Only accept valid times for the time of departure and the time of arrival

• No global variables allowed (those declared outside of many or any other function), global constants are allowed

• goto is NOT allowed

• Allowed built-in functions: atoi(), atof(), is_digit()

• Make sure you follow the style guidelines, have a program and function headers with appropriate comments, and be consistent

#### (10 pts) Assignment 4 Predictive Pre-Peer Review Survey:

http://oregonstate.qualtrics.com/jfe/form/SV_5BCu3SCewiwbs7X