Java Lab due tonight 14 hours

profilebpinomoore
Lab4.pdf

ISM3230 In-class Lab Week 5, Module 4 – Conditional Logic Spring 2021

FOCUS TOPICS

• Conditional logic

• Boolean expressions

TASK

Your employer, a major airline, offers a frequent flier program. In this program, customers earn status

based on the total number of miles flown and the total number of flight segments flown. A client

qualifies for a status only if both minimum conditions are met (see Table 1).

In addition, the airline is running a promotion where customers receive bonus miles and flight segments

when they sign up for it (see Table 2). This bonus needs to be accounted for when determining the

customer status.

Your task is to determine the appropriate status for a customer based on the following data:

Table 1 - Customer status based on Mileage and Segments

Status Minimum Mileage Minimum Segment Count

Platinum 100,000 75

Gold 75,000 50

Silver 50,000 25

Bronze Less than 50,000 Less than 25

Table 2 - Promotional bonus mileage and segments

Promotion Bonus Mileage Bonus Segment Count

Per participating customer 25,000 10

• To qualify for a given status, the customer must meet the minimum levels for both mileage and

segment count.

• If a customer meets one of the requirements for level X, but not the other, that customer does not

qualify for level X.

• If a customer does not qualify for any mileage/segment-based status, that customer is considered to

have “Bronze” status, i.e., that is the default status for the frequent flier program.

• The promotion input should be a String with the first character being 'Y' or 'y' to indicate Yes. All

other input strings are taken to mean No.

INSTRUCTIONS

From this lab on, your code must be correctly indented. Use Source>Format menu command in

Netbeans to align your code indentation with the use of code blocks identified with { }. Incorrectly

indented code will incur a grade penalty.

1. Declare class-level named constants for the bonus miles and bonus segments that customers

receive if signed up for a promotion (Table 2). You do not need to use constants for the mileage

and segment numbers from Table 1.

2. Prompt the user to enter whether the customer is participating in the promotion, and store the

value as a String (use Scanner's nextLine() method).

3. Prompt the user to enter mileage flown, and store the value as an integer.

4. Prompt the user to enter segment count, and store the value as an integer.

Checkpoint 1:

Print all three user inputs to screen to ensure that you read them correctly:

5. Determine if the customer mileage and segment count should be increased by the bonus

amounts. If yes, add the bonus to the customer data.

o To make this decision, take the first character from the participation String and evaluate

it for being equal to 'Y' or 'y', which means yes. All other characters signify No

participation. Use a "simple" if statement for this step (without else).

▪ Hint: you can do this by using various String methods for equality and case

conversions. See String methods for details on the appropriate methods.

▪ Hint: you can also do this by using a String method charAt(index) and

using a compound boolean expression to check for both cases. See String

methods for details on charAt.

▪ Hint: do not use == for Strings.

Checkpoint 2:

Print the result of the decision based on the user’s input for promotion. If the user

entered anything starting with Y or y, print “promo yes”, otherwise don’t print anything:

If this is working, comment out the print statement and continue to add the logic for the

bonused data.

o You need to preserve the user-entered data for output, so you need new variables for

the bonused data.

▪ Hint: Be mindful of variable scope rules. Make sure variables are visible where

you need them to be, and that they contain valid values regardless of the

outcome of the “if” statement.

Checkpoint 3:

Print out the original user-entered mileage and segments and the bonused mileage and

segments, noting that when the customer does not participate in the promotion, the

values should be the same:

6. Determine the status level for which the customer is eligible, based on the Table 1. Use an "else-

if" pattern for this step.

7. Following the sample output below, report the following information, in this order:

o The total mileage flown without bonus

o The total mileage flown with bonus (if no bonus, then same as above)

o The count of segments flown without bonus

o The count of segments flown with bonus (if no bonus, then same as above)

o The customer status level

8. When printing output, make sure that you separate the logic from the output, i.e., you should

have only one System.out.println statement that prints the customer's status. This print

statement, along with the print statements that display the mileage and segment counts should

be outside and below all if/else logic.

9. Make sure your output matches the sample output in wording, spacing, capitalization, and

punctuation.

The logic of the task can also be summarized by a decision tree or similar diagram:

SAMPLE OUTPUT