Please help me with this! Develop a high-quality, menu-driven object-oriented C++ program that creates a small database, using a binary search tree structure to store and process the data.  The database will contain the top 100 highest grossing films of 2017.   The C++ object-oriented program must use the BinarySearchTree class . When designing and implementing the program, apply good software engineering principles. Start the analysis and design process by drawing a complete UML class diagram for the program that includes all the classes that are contained in the program, including the classes provided by the textbook and the classes that you create.  The UML class diagram will assist you in understanding the components of the project. Your program must include: a Film class that stores all the data for a Film and provides appropriate methods to support good software engineering principles, a FilmDatabase class that stores the binary search tree and provides appropriate methods in support of database queries and reporting using good software engineering principles, an application that interacts with the end-user.  The design is up to you and may include any number of classes in support of the given application.  A Menu class is strongly recommended.     Note that the binary search tree must store Film objects, and the >, <, and == operators must be defined for that class because the BinarySearchTree class uses those overloaded operators. Data Details: The database contains data pertaining to the 100 highest grossing films of 2017.  A comma delimited file named Films2017.csv contains the initial data. Each record is stored on one line of the file in the following format: Data                         Data type Rank                         int Film Title (key) string       Studio                       string  Total Gross double Total Theaters int   Opening Gross double Opening Theaters int Opening Date string Each of the data fields is separated in the file using the comma (,) character as a delimiter. There is no comma (,) character after the last field on the line. The data is considered clean; There are no errors in the input file. When storing the data in the binary search tree, use the data types shown above. The Film Title will serve as the key field.  Therefore, an inorder traversal of the BST will produce the Films in order of title. Menu Details: Your application must be menu driven.  The menu system consists of a main menu and sub-menus.  All menu choices are selected by entering the letter of the desired choice.  After a selection is processed, the current me

Computer Networking: A Top-Down Approach (7th Edition)
7th Edition
ISBN:9780133594140
Author:James Kurose, Keith Ross
Publisher:James Kurose, Keith Ross
Chapter1: Computer Networks And The Internet
Section: Chapter Questions
Problem R1RQ: What is the difference between a host and an end system? List several different types of end...
icon
Related questions
Question

Please help me with this!

Develop a high-quality, menu-driven object-oriented C++ program that creates a small database, using a binary search tree structure to store and process the data.  The database will contain the top 100 highest grossing films of 2017.  

The C++ object-oriented program must use the BinarySearchTree class . When designing and implementing the program, apply good software engineering principles. Start the analysis and design process by drawing a complete UML class diagram for the program that includes all the classes that are contained in the program, including the classes provided by the textbook and the classes that you create.  The UML class diagram will assist you in understanding the components of the project.

Your program must include:

  • a Film class that stores all the data for a Film and provides appropriate methods to support good software engineering principles,
  • a FilmDatabase class that stores the binary search tree and provides appropriate methods in support of database queries and reporting using good software engineering principles,
  • an application that interacts with the end-user.  The design is up to you and may include any number of classes in support of the given application.  A Menu class is strongly recommended.    

Note that the binary search tree must store Film objects, and the >, <, and == operators must be defined for that class because the BinarySearchTree class uses those overloaded operators.

Data Details:

The database contains data pertaining to the 100 highest grossing films of 2017.  A comma delimited file named Films2017.csv contains the initial data. Each record is stored on one line of the file in the following format:

Data                         Data type
Rank                         int
Film Title (key) string      
Studio                       string 
Total Gross double
Total Theaters int  
Opening Gross double
Opening Theaters int
Opening Date string

Each of the data fields is separated in the file using the comma (,) character as a delimiter. There is no comma (,) character after the last field on the line. The data is considered clean; There are no errors in the input file.

When storing the data in the binary search tree, use the data types shown above. The Film Title will serve as the key field.  Therefore, an inorder traversal of the BST will produce the Films in order of title.

Menu Details:

Your application must be menu driven.  The menu system consists of a main menu and sub-menus.  All menu choices are selected by entering the letter of the desired choice.  After a selection is processed, the current menu should be re-displayed.  Do NOT use recursion to do this; use a loop.  The current menu continues until the X option (return to main menu or exit) is selected.

When the application begins, the following main menu should be displayed:

                                                                                  MAIN MENU
                                                                            A - About the Application
                                                                            R - Reports
                                                                            S - Search the Database
                                                                            X - Exit the Program

                                                                            Enter Selection ->

 

A - About the Application

If the end-user chooses About the Application, the program provides a detailed description for the user, explaining what the application is doing and how it works. Note that this method does NOT substitute for javadoc-style comments. The audience for this method consists of non-technical users that have no information at all about the assignment.

R - Reports

If the end-user chooses Reports from the  MAIN MENU, the program displays the following sub-menu:

                                                                               REPORTS MENU
                                                                           T - Order by Film Title report
                                                                           R - Order by Rank report
                                                                           X - Return to main menu

                                                                           Enter Selection ->

If the end-user chooses Order by Film Title report from the REPORTS MENU, the program should do the following
1. Display a report containing all 100 Films in order by Film Title. This report should contain all the data for each record stored in the binary search tree.
The data should be formatted; Dollar figures and numeric data should include $ signs and commas for readability.
2. Identify the report and label all the data displayed appropriately.
If the end-user chooses Order by Rank report from the REPORTS MENU, the program should do the following:
1. Display a report containing all 100 Films sorted in increasing order by earnings rank from 1 to 100. This report should contain all the data for each
record stored in the binary search tree. Note that this does not involve a simple tree traversal, You will need to write code that specifically performs this
function. You may assume that the rank is never less than 1 and never greater than 100. Do NOT copy the data into another binary search tree, into an
array, into a linked list, vector or into any other type of data structure. Retrieve the data directly from the binary search tree which is stored in order by
the Film Title. The data should be formatted; Dollar figures and numeric data should include dollar signs and commas for readability.
2. Identify the report and label all the data displayed appropriately.
If the end-user chooses Return, exit the sub-menu and return to the main menu.
S- Search the Database
If the end-user chooses Search the database, the program should display the following sub-menu:
Search MENU
T- Search by Title
K- Search by Keyword(s)
S- Search by Studio
M- Search by month of release
X- Return to main menu
Enter Selection ->
If the end-user chooses Search by Title, the program should do the following:
1. Request a film title from the end-user.
2. Search the database for the title given. This will be an exact match of the film title and at most, only 1 record will match. A case insensitive search
should be performed.
3. If the film title is found, display the record stored in the binary search tree. Otherwise report that the requested film title was not found.
4. Identify the output and label all the data displayed appropriately.
Transcribed Image Text:If the end-user chooses Order by Film Title report from the REPORTS MENU, the program should do the following 1. Display a report containing all 100 Films in order by Film Title. This report should contain all the data for each record stored in the binary search tree. The data should be formatted; Dollar figures and numeric data should include $ signs and commas for readability. 2. Identify the report and label all the data displayed appropriately. If the end-user chooses Order by Rank report from the REPORTS MENU, the program should do the following: 1. Display a report containing all 100 Films sorted in increasing order by earnings rank from 1 to 100. This report should contain all the data for each record stored in the binary search tree. Note that this does not involve a simple tree traversal, You will need to write code that specifically performs this function. You may assume that the rank is never less than 1 and never greater than 100. Do NOT copy the data into another binary search tree, into an array, into a linked list, vector or into any other type of data structure. Retrieve the data directly from the binary search tree which is stored in order by the Film Title. The data should be formatted; Dollar figures and numeric data should include dollar signs and commas for readability. 2. Identify the report and label all the data displayed appropriately. If the end-user chooses Return, exit the sub-menu and return to the main menu. S- Search the Database If the end-user chooses Search the database, the program should display the following sub-menu: Search MENU T- Search by Title K- Search by Keyword(s) S- Search by Studio M- Search by month of release X- Return to main menu Enter Selection -> If the end-user chooses Search by Title, the program should do the following: 1. Request a film title from the end-user. 2. Search the database for the title given. This will be an exact match of the film title and at most, only 1 record will match. A case insensitive search should be performed. 3. If the film title is found, display the record stored in the binary search tree. Otherwise report that the requested film title was not found. 4. Identify the output and label all the data displayed appropriately.
If the end-user chooses Search by Keyword(s), the program should do the following:
1. Request title keywords from the end-user.
2. Search the database for all titles that contain the keyword(s). The keywords given represent all or a portion of the title. When multiple keywords are
given, only titles that contain the keywords in the order given will be selected. For example. if the user enters 'Star Wars, "Rogue One: A Star Wars
Story" will be selected as will "The Making of Star Wars However, "One Star, Many Wars", "Once Upon a Star. Wars" and Wars with Stars" will not be
selected.
3. Multiple search keywords may be entered by separating the keywords with a comma. All titles containing one or more of the keywords will be selected.
For example, if the user enters 'Cinderella, SpongeBob, Dinosaur, "Cinderella", "The Good Dinosaur "In Search of Dinosaurs". The SpongeBob Movie:
Sponge Out of Water" as well as "Cinderella Loves Dinosaurs and SpongeBob!" will be selected.
4. Display all records stored in the binary search tree where the title contains the keyword(s) given by the user. If there are no records containing the
keyword(s), report that the requested keywords) were not found.
5. Identify the output and label all the data displayed appropriately.
If the end-user chooses Search by Studio, the program should do the following:
1. Request the name of a Studio from the end-user.
2. Search the database for an exact match of the studio name.
3. Display all records stored in the binary search tree where the studio name matches the name given by the end-user, If there are no records with
the studio name given, report that the requested studio was not found.
4. Identify the output and label all the data displayed appropriately.
If the user chooses Search by month of release, the program should do the following
1. Request a month number between 1 and 12 from the end-user. Only values between 1 and 12 should be accepted.
2. Search the database for all records where the release date contains the month requested. Note: the date is stored as a string (Month 1 is stored as Jan.)
3. Display all records stored in the binary search tree that match the month given by the user. If there are no records with the requested release month,
report that the requested month was not found.
4. Identify the output and label all the data displayed appropriately.
If the user chooses Return to main menu, exit the sub-menu and retum to the main menu.
X- Exit the program
If the end-user chooses Exit the program from the MAIN MENU, the program ends.
Since the program is controlled and manipulated by a human user, be sure to perform adequate error checking on every aspect of the program.
Be sure to follow the Project Guidelines & Evaluation Criteria, since the project will be evaluated using this criteria. In addition, be sure to use javadoc-style
comments appropriately. When creating javadoc-style comments, keep in mind that the comment will eventually become part of an html file that will be
used by other programmers on your programming team, and by maintenance programmers. Remember also that maintenance programmers have not seen
the assignment (the specification), so the information you are providing here must provide all of the detailed information another programmer will need to
completely understand the program and to maintain the code.
Transcribed Image Text:If the end-user chooses Search by Keyword(s), the program should do the following: 1. Request title keywords from the end-user. 2. Search the database for all titles that contain the keyword(s). The keywords given represent all or a portion of the title. When multiple keywords are given, only titles that contain the keywords in the order given will be selected. For example. if the user enters 'Star Wars, "Rogue One: A Star Wars Story" will be selected as will "The Making of Star Wars However, "One Star, Many Wars", "Once Upon a Star. Wars" and Wars with Stars" will not be selected. 3. Multiple search keywords may be entered by separating the keywords with a comma. All titles containing one or more of the keywords will be selected. For example, if the user enters 'Cinderella, SpongeBob, Dinosaur, "Cinderella", "The Good Dinosaur "In Search of Dinosaurs". The SpongeBob Movie: Sponge Out of Water" as well as "Cinderella Loves Dinosaurs and SpongeBob!" will be selected. 4. Display all records stored in the binary search tree where the title contains the keyword(s) given by the user. If there are no records containing the keyword(s), report that the requested keywords) were not found. 5. Identify the output and label all the data displayed appropriately. If the end-user chooses Search by Studio, the program should do the following: 1. Request the name of a Studio from the end-user. 2. Search the database for an exact match of the studio name. 3. Display all records stored in the binary search tree where the studio name matches the name given by the end-user, If there are no records with the studio name given, report that the requested studio was not found. 4. Identify the output and label all the data displayed appropriately. If the user chooses Search by month of release, the program should do the following 1. Request a month number between 1 and 12 from the end-user. Only values between 1 and 12 should be accepted. 2. Search the database for all records where the release date contains the month requested. Note: the date is stored as a string (Month 1 is stored as Jan.) 3. Display all records stored in the binary search tree that match the month given by the user. If there are no records with the requested release month, report that the requested month was not found. 4. Identify the output and label all the data displayed appropriately. If the user chooses Return to main menu, exit the sub-menu and retum to the main menu. X- Exit the program If the end-user chooses Exit the program from the MAIN MENU, the program ends. Since the program is controlled and manipulated by a human user, be sure to perform adequate error checking on every aspect of the program. Be sure to follow the Project Guidelines & Evaluation Criteria, since the project will be evaluated using this criteria. In addition, be sure to use javadoc-style comments appropriately. When creating javadoc-style comments, keep in mind that the comment will eventually become part of an html file that will be used by other programmers on your programming team, and by maintenance programmers. Remember also that maintenance programmers have not seen the assignment (the specification), so the information you are providing here must provide all of the detailed information another programmer will need to completely understand the program and to maintain the code.
Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 8 steps with 6 images

Blurred answer
Recommended textbooks for you
Computer Networking: A Top-Down Approach (7th Edi…
Computer Networking: A Top-Down Approach (7th Edi…
Computer Engineering
ISBN:
9780133594140
Author:
James Kurose, Keith Ross
Publisher:
PEARSON
Computer Organization and Design MIPS Edition, Fi…
Computer Organization and Design MIPS Edition, Fi…
Computer Engineering
ISBN:
9780124077263
Author:
David A. Patterson, John L. Hennessy
Publisher:
Elsevier Science
Network+ Guide to Networks (MindTap Course List)
Network+ Guide to Networks (MindTap Course List)
Computer Engineering
ISBN:
9781337569330
Author:
Jill West, Tamara Dean, Jean Andrews
Publisher:
Cengage Learning
Concepts of Database Management
Concepts of Database Management
Computer Engineering
ISBN:
9781337093422
Author:
Joy L. Starks, Philip J. Pratt, Mary Z. Last
Publisher:
Cengage Learning
Prelude to Programming
Prelude to Programming
Computer Engineering
ISBN:
9780133750423
Author:
VENIT, Stewart
Publisher:
Pearson Education
Sc Business Data Communications and Networking, T…
Sc Business Data Communications and Networking, T…
Computer Engineering
ISBN:
9781119368830
Author:
FITZGERALD
Publisher:
WILEY