Project 1 - Menu Driver

Objectives

Description

For this project, you get to write a command-line interface for Project 2. The interface has a menu with several options to choose from. For this project, you get to parse the user's input and display an informative line in regards to that option. An example of the menu can look like is:
Command options:
I string_to_insert  (insert a string at the current position)
A string_to_append  (append a string at the end)
R  (remove the string at the current position)
S  (move the current position to the start)
E  (move the current position to the end)
P  (move the current position backward)
F  (move the current position forward)
L  (display the length of the list)
C  (display the current position number)
M number  (move the current position to specific position)
D  (display the string at the current position)
V  (display all strings)
O  (display these options)
Q  (quit)

Requirements

Write a MenuDriver class in Java that accepts user input and parses it. Have your program display informative messages for each option. See the example for required text. Furthermore, create a file named rubric-menuDriver.txt that is a completed rubric (including the number of hours spent on the assignment).

Do not need to include a list with this project. Just provide a parser, a menu and acknowledging the command. Add in the implementation for the list will be done in Project 2.

Example

Note, user input is in bold face blue and underlined text is required for test cases.
Welcome to the Menu Driver for a bare bones list!

Command options:
I string_to_insert  (insert a string at the current position)
A string_to_append  (append a string at the end)
R  (remove the string at the current position)
S  (move the current position to the start)
E  (move the current position to the end)
P  (move the current position backward)
F  (move the current position forward)
L  (display the length of the list)
C  (display the current position number)
M number  (move the current position to specific position)
D  (display the string at the current position)
V  (display all strings)
O  (display these options)
Q  (quit)

Please enter a command (or 'O' for all of the options): A
A is not a valid command!


Please enter a command (or 'O' for all of the options): A Appending this text :)
Appending 'Appending this text :)' ...

Please enter a command (or 'O' for all of the options): B
B is not a valid command!


Please enter a command (or 'O' for all of the options): C
Displaying the current position number ...

Please enter a command (or 'O' for all of the options): D
Displaying the string at the current position  ...

Please enter a command (or 'O' for all of the options): E
Moving the current position to the end ...

Please enter a command (or 'O' for all of the options): F
Moving the current position forward ...

Please enter a command (or 'O' for all of the options): G
G is not a valid command!


Please enter a command (or 'O' for all of the options): I
I is not a valid command!


Please enter a command (or 'O' for all of the options): I Inserting this text ;)
Inserting 'Inserting this text ;)' ...

Please enter a command (or 'O' for all of the options): J
J is not a valid command!


Please enter a command (or 'O' for all of the options): L
Displaying the length of the list ...

Please enter a command (or 'O' for all of the options): M
M is not a valid command!


Please enter a command (or 'O' for all of the options): M 9
Moving current position to 9 ...

Please enter a command (or 'O' for all of the options): N
N is not a valid command!


Please enter a command (or 'O' for all of the options): O
Command options:
I string_to_insert  (insert a string at the current position)
A string_to_append  (append a string at the end)
R  (remove the string at the current position)
S  (move the current position to the start)
E  (move the current position to the end)
P  (move the current position backward)
F  (move the current position forward)
L  (display the length of the list)
C  (display the current position number)
M number  (move the current position to specific position)
D  (display the string at the current position)
V  (display all strings)
O  (display these options)
Q  (quit)

Please enter a command (or 'O' for all of the options): P
Moving the current position backward ...

Please enter a command (or 'O' for all of the options): R
Removing the string at the current position ...

Please enter a command (or 'O' for all of the options): S
Moving the current position to the start ...

Please enter a command (or 'O' for all of the options): T
T is not a valid command!


Please enter a command (or 'O' for all of the options): U
U is not a valid command!


Please enter a command (or 'O' for all of the options): V
⟨ | ⟩

Please enter a command (or 'O' for all of the options): Q


Good-bye

Rubric:

Points      Item
----------  --------------------------------------------------------------
_____ /  3  Style
            + Code is indented correctly
            + Documentation: (written for another software developer)
              * All source code files include Javadoc header block with description, @author, @version, etc.
              * Javadoc (with block tags, for example @param, @return) before each method
              * All non-trivial variables are commented
              * Comments included before major portions of code
_____ /     Compiles (max of 50% if it does not compile)
_____ / 25  Successfully passes codePost tests
_____ /  2  Completed rubric (estimates for each line including hours spent)

_____ / 30  Total


_____  Approximate number of hours spent

I, (REPLACE WITH YOUR FULL NAME), affirm that the code that I submitted is my own work and that I did not receive help that was not authorized by the instructor.

Copy and paste this rubric into a rubric-menuDriver.txt file (not a .docx, .doc nor .rtf file). Think of this as a checklist to ensure that you receive the maximum points possible. For each grade item, fill in your estimate for the grade you deserve. Additionally, include your estimate of how many hours your spent. Lastly, replace, "(REPLACE WITH YOUR FULL NAME)" with your full name to indicate that what you are submitting is entirely your own work.

Submission

Submit your MenuDriver.java (and any other .java files) to codePost.io. To register for a free codePost account, please follow these instructions.
Submit your rubric-menuDriver.txt file to the appropriate Assignment folder in CougarVIEW. If you resubmit it, the new file will replace the older one.