程序代写代做代考 C c++ Due Date: 30th August 2020 (Week 4) Weighting: 10% of your final mark for the unit

Due Date: 30th August 2020 (Week 4) Weighting: 10% of your final mark for the unit

Submission Instructions:
Your project must be submitted as a Visual Studio project, including ALL your project files, and any appropriate text files to ensure the program compiles and runs.
You may complete the tasks in your preferred IDE, however you MUST create a Visual Studio project in order to submit. Your project folder must be identified by using your name and assignment number, such as YourNameA1.
The entire project folder must then be zipped up into one zip file for submission. The zipped file MUST be named “A1-YourFirstNameLastName.zip”. This zip file must be submitted via the Moodle assignment submission page.
Explicit assessment criteria are provided, however please note you will also be assessed on the following broad criteria:
• Meeting functional requirements as described in the exercise description.
• Demonstrating a solid understanding of object-oriented design and C++ coding, including good practice.
• Following the unit Programming Style Guide.
• Creating solutions that are as efficient and extensible as possible.

NOTE! Your submitted program MUST compile and run. Any submission that does not compile will automatically be awarded a ZERO. This means it is your responsibility to continually compile and test your code as you build it.

NOTE! Your submitted files must be correctly identified and submitted (as described above). Any submission that does not comply will receive and automatic 10% penalty (applied after marking).

Scenario:
You have just joined a new multimedia company called CyberRoo. As a new employee, you have been tasked with creating a text-based prototype for a new puzzle generator tool the company has been asked to create for a major client called “The Amazing Cryptogram Generator”.
Your job is to demonstrate some of the basic functionality of the program, which will be further developed by the team of programmers after your finish the prototype. To do this you will complete a series of tasks, each building upon the previous task.
Task List:
• Your project must include both a correctly formatted header file and an application file.
• Create and display a menu that accesses each of the following functions of the program.
• Read data from a file and display it as an information screen about the application.
• Read some sample data from a file and store it in appropriate variables.
• Generate a random cryptogram using the stored data and display the result.
• Save a cryptogram to file, at the user’s request, appending each new cryptogram saved.
• Load all saved cryptograms from the saved file (if required) and display the contents.

Task 1: Create and Display a Menu
Your first task is to create and display a menu, just like the one shown here. In the example, option [0] has been selected, terminating the program.
Create a function called runMenu() and call it from the
main() function.
From this function, the user must be able to select any of the displayed options as often as they want before ending the program.
Ensure that you validate the user’s input so that only the options displayed can be chosen.
You may process the options as either numeric or single character input, such as [0] or [X] for exiting or ending the program, [1] or [I] for displaying the “About” information, etc.

Task 2: Display an Information Screen
Your next task is to display some information about the application, just like the one shown here.
Create a function called displayText() and call it from the runMenu() function, when option [1] Display “About” Information is selected.
This function must accept a filename as a parameter (eg: “CryptoAbout .txt”) then read and display the data.
You must also allow the user some time to read the displayed information before returning them to the menu.
You can copy CryptoAbout.txt into the appropriate folder to read and display, instead of creating your own. However, you may need to modify the format of the data, depending on how you intend to import it into your program.
You may create your own information, if you wish. If you do, keep it short!

Task 3: Read and Store Data from a File
Your next task is to read and store the cryptogram quotes, from one (or more) text files, and store this data in appropriate variables. This data will be used to generate the randomised cryptograms in the next task.
Create a function called createLists() and call it from the runMenu() function, when option [2] Read and Store Data from File is selected.
This function must accept a filename as a parameter (“*.txt”) and successfully read and store the data. The data is to be stored in two collection variables named quotes, and cryptograms.
You can choose to read the data from a single file, storing each data set in the different variables, OR read and store each data set with separate calls to the same function but with different arguments OR use another suitable method of your own devising.
In this application, the player has to actually generate a Cryptogram first, then save the data before the data can be loaded. Therefore, data validation and suitable error messages will be important.
You may also be required to manipulate the string data, using appropriate string methods.
The data for the quotes can be found in CryptogramData.txt, which you can modify or change to suit your method of reading and storing the data, instead of writing your own. You are free to write your own data, if you wish. Remember to name and store your text files appropriately.

Task 4: Generate and Display a Random Cryptogram
Your next task is generating cryptogram, using a random element from stored “quotes”, and display the result as a concatenated or formatted string.
Create a function called generateCryptogram() and call it from the runMenu() function, when [3] Generate a Random Cryptogram is selected.
This function must return a concatenated or formatted string using a randomly selected element from the quotes collection variable, created previously.
The selected quote is then converted using a simple “shift” cipher. The user is asked for a number from 1-25. Using this value, each letter in the quote is converted from its current ASCII value to that value + the set value. For example: If A is 65 and the set value is 5, then the letter A would change to an F which is 70, as in:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z F G H I J K L M N O P Q R S T U V W X Y Z A B C D E
You must also ensure that punctuation is not changed (quote marks, apostrophe, comma, full stop, etc.). and the collection variables have content before trying to select an element, to stop the program from crashing.
See screen shot for an example of the required output.

Task 5: Save a Cryptogram to a File
Create a function called saveData() and call it from the runMenu() function, when [4] Save a Cryptogram to a file is selected. You must save the current cryptogram to a file called “savedCryptograms.txt”. In this task you must:
• display the last generated cryptogram

• ask the user if they want to save it
• if YES, add it to any existing data in the file, otherwise do nothing
• return to the menu when the task is complete
Use the screen shot as a guide for your display and input request.
You should also inform the user when the data is saved, before returning to the menu.

Task 6: Display Saved Cryptograms from a File
Your final task is displaying saved cryptograms from the “savedCryptograms.txt” appropriately.
How you achieve this is dependent upon how you saved the data. Ideally, the display should be the same as the way you displayed the cryptogram when you generated it. Use the screen shot as a guide for your display.
You may have to load this data into the cryptograms collection variable first, then display the saved data. Things you may need to consider:
• Do the collection lists need to be initialised before you display the saved data?
• How have you saved the data?
• Did you save the random numbers for each element type?
• Did you save the completed strings?
• Did you use another method?
• How will you display the data after it is read from the saved data file?
• Which method is the most efficient way to display it?
• How will you ensure that the user has time to read the output before returning to the menu?
Assignment Notes:
It is your responsibility to know what is expected of you. If you are unsure about anything, ask your tutor sooner rather than later. Write any questions and/or notes here to help you clarify what you must do.
There is also an ASCII values set out as a table to help with generating your Cryptograms (ASCIItable.png).

Assignment 1: Marking Criteria [50 marks in total]
NOTE: Your submitted project must be correctly identified and submitted, otherwise it will receive an automatic
10% penalty (applied after marking).
Does the program compile and run? Yes or No
NOTE! Your submitted program MUST compile and run. Submissions that do not compile will receive ZERO.
Application Design [10]
• Header File [3]
• Has all the correct #include statements [1]
• Has created all function prototypes correctly [2]
• Application File [7]
• The application file is correctly formatted [1]
• The main() function has appropriate function calls to keep it uncluttered [2]
• Has the required data members and member functions using meaningful names [2]
• Has created any additional functions to streamline their code [2]
Functionality [30]
• Task 1: Menu [5]
• The runMenu() function correctly initialises any required variables [1]
• The menu options are clearly displayed using an appropriate function [1]
• Appropriate use of loop and decision structures to process user input [1]
• Correct use of function calls when responding to user input [1]
• The user controls when to return to the menu [1]
• Task 2: About Information [4]
• The displayText() function uses the correct argument for the file to display [1]
• Appropriate validation checks have been made [1]
• Appropriate use of loop and decision structures to read and display data [2]
• Task 3: Reading and Storing Data [5]
• The createLists() function uses the correct argument for the file to read [1]
• The collection variables (arrays or vectors) are correctly initialised [1]
• Appropriate method(s) used to read the data from the file [1]
• Appropriate use of loop and decision structures to read and store data [2]
• Task 4: Generate and Display a Random Cryptogram [8]
• The generateCryptogram() function returns a string [1]
• Validation checks that collection list(s) have been created [1]
• One random data element is selected from the appropriate collection(s) [1]
• The appropriate technique(s) used to create the cryptogram [2]
• Appropriate use of loop and decision structures to convert data [2]
• The returned string is correctly concatenated and/or formatted [1]
• Task 5: Save Data to a File [5]
• The saveData() function uses the correct arguments [1]
• The current cryptogram is displayed appropriately [1]
• The user is asked whether to save or not with an appropriate process of user input [1]
• Appropriate validation for writing the file is in place [1]
• The data is correctly written to the specified file [1]
• Task 6: Display Data from a File [3]
• An appropriate function with argument(s) is called [1]
• Saved data is displayed in an appropriate manner [2]
Quality of Solution and Code [10]
• Does the program perform the functionality in an efficient and extensible manner? [2]
• Has a well-designed program been implemented? [4]
• Appropriate additional functions created to streamline code [2]
• Demonstrates the use of logical procedures [2]
• Has the Programming Style Guide been followed appropriately? [4]
• All functions and variables have meaningful names and use correct camel notation [2]
• Appropriate use of comments throughout the code [2]