Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

c++ Objective: Directly manipulate files using advanced file functions Utilize string and character functions to perform basic input validation Problem: In preparation for the release

c++

Objective:

Directly manipulate files using advanced file functions

Utilize string and character functions to perform basic input validation

Problem: In preparation for the release of Avengers this summer, you have been hired by the owner of a very small movie theater to develop the backend for an online ticket reservation system. The program should display the current seating arrangement and allow the patron to select seats. A report should be generated at the end of the program to specify for each individual auditorium and overall for all auditoriums how many seats were sold/unsold and how much money was earned.

Pseudocode: Your pseudocode should describe the following items

Main.cpp

o List functions you plan to create

Determine the parameters

Determine the return type

Detail the step-by-step logic that the function will perform

o Detail the step-by-step logic of the main function

Details Use the template posted in ZyLabs.

o The code in the template prompts the user for a filename

o The file is then copied to a file named A1.txt This copy is necessary because ZyLabs will not allow the original file to be modified

o A1.txt is the file that will be modified for the entirety of the program

Each line in the file will represent a row in the auditorium. The number of rows in the auditorium is unknown to you.

o There will be a newline character after each line in the file except for the last line which may or may not have a newline character.

The number of seats in each row of the auditorium will be the same.

No row will have more than 26 seats.

Do not hold the auditorium in memory (-15 points if auditorium is held in memory)

o Utilize random file access to view and modify the auditorium

Empty seats are represented by a period (.).

Reserved seats are represented by a letter (A, C or S) in the file

o This will be used to create reports o A =adult o C = child o S = senior

Reserved seats will be represented by a hashtag (#) on the screen o The user does not need to know what type of ticket was sold, just that a seat is reserved.

There is no need to worry about reserving seats on a specific day or at a specific time.

Ticket prices are as follows: o Adult - $10 o Child - $5 o Senior - $7.50

User Interface and Input: Present a user-friendly menu system for the user.

1. Reserve Seats

2. Exit Loop the menu until the user decides to exit. Imagine this is for a ticket kiosk in the lobby of the theater. If the user wants to reserve seats, display the current seating availability for that auditorium. An example seating chart is provided below for an auditorium with 5 rows and 20 seats per row.

ABCDEFGHIJKLMNOPQRST

1 ...##..#####........

2 ########....####..##

3 .........##.........

4 #.#.#.#.#.#.#.#.#.#.

5 ########.#####.#####

The rows are numbered and the seats are identified in each row by a letter of the alphabet

After the seating chart has been displayed, prompt the user for the following information in the order below:

Row number

Starting seat letter

Number of adult tickets

Number of child tickets

Number of senior tickets

Assume that the user wants to reserve sequential seats to the right of the first seat entered. All seats must be open for a reservation to be processed. Remember to mark the seat with the appropriate letter to show it has been reserved. Adult tickets will be reserved first, followed by child and then senior. If the selection is available, mark the seats as reserved and return to the main menu.

If the desired seats are not available, check for the best available seats that meet their criteria on that row only. The best available seats are the seats closest to the middle of the row measured by the distance from the center of the available selection to the middle of the row. If alternate seats are available, prompt the user to enter a Y to reserve the best available or N to refuse the best available. Once the selection has been processed, return to the main menu. If there are no alternate seats available, display an appropriate message to the user instead of a prompt and return to the main menu.

When prompting the user for input, expect anything. Do not assume any input will be valid. If you ask for a number, the user could put in a floating point number, symbols or maybe even lyrics to the newest Taylor Swift song. If invalid input is entered, loop until valid input is received. If the user enters a starting seat that is not in the auditorium, the input will be treated as invalid.

User Interface Workflow: Please do not add extra prompts since this will cause a mismatch in the input which will either force the program to throw an exception or cause the program to perform an unintended operation.

Display main menu Prompt for input

If user is reserving tickets o Prompt for row o Validate loop until valid

Valid row = row number listed in auditorium display

o Prompt for starting seat o Validate loop until valid

Valid seat = seat number listed in auditorium display

o Prompt for number of adult tickets o Validate loop until valid

Valid ticket number = number >= 0

o Prompt for number of child tickets o Validate loop until valid

Valid ticket number = number >= 0

o Prompt for number of senior tickets

o Validate loop until valid

Valid ticket number = number >= 0

o If seats unavailable

Display best available

Prompt user to reserve (Y/N)

o If reserved, confirm reservation

o Return to main menu

Loop to top of workflow until user selects exit

Output: Display the best available seats in the following format:

-

Example: 3D 3F

At the end of the program, display a report to the console. Make sure each column lines up properly (no jagged columns). Include the following information in the order given:

Total Seats:

Total Tickets:

Adult Tickets:

Child Tickets:

Senior Tickets:

Total Sales:

o Total amount of money collected for tickets in the whole auditorium

All values except total ticket sales will be an integer value. Total ticket sales will be a floating-point value rounded to 2 decimal places and formatted with a dollar sign before the first digit of the number.

Template in Zylabs:

#include #include #include using namespace std;

const string filename = "A1.txt"; //file to edit for ticket reservations

int main(){ ///////////////////////////////////////////////////////////////////////////////////////// //////////////////// DO NOT CHANGE CODE BELOW THIS ////////////// ///////////////////////////////////////////////////////////////////////////////////////// string temp, line; cout<<"Enter File Name: "; cin>>temp;

ifstream infile(temp); ofstream outfile(database); if (infile) while (getline(infile,line) outfile << line << " "; infile.close(); outfile.close(); ///////////////////////////////////////////////////////////////////////////////////////// //////////////////// DO NOT CHANGE CODE ABOVE THIS ////////////// ///////////////////////////////////////////////////////////////////////////////////////// //add your code here }

Sample Theater:

...AA..CSSAC........ ACSAACCA....AAAA..SS .........AS......... C.A.S.A.S.C.S.C.A.A. AACACSSA.CCSSS.AAACC

Sample input:

Sample Input Reserve 1A 1 adult 1 child 1 senior seats are available and reserved Reserve 1A 2 adults seats not available best available is 1M - 1N reserve best available reserve 5I 2 adults 2 children seats not available best seats - no seats available file after reservations ACSAA..CSSACAA...... ACSAACCA....AAAA..SS .........AS......... C.A.S.A.S.C.S.C.A.A. AACACSSA.CCSSS.AAACC Report Total Seats 100 Total Tickets 56 Adult 26 Child 15 Senior 15 Total Sales $447.50

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Database Concepts

Authors: David M. Kroenke, David J. Auer

7th edition

133544621, 133544626, 0-13-354462-1, 978-0133544626

More Books

Students also viewed these Databases questions

Question

Determine Leading or Lagging Power Factor in Python.

Answered: 1 week ago