Objectives: Directly manipulate files using advanced file functions

Problem: In preparation for the release of Guardians of the Galaxy 2, you have been hired by the owner of a small movie theater to develop the backend for an online ticket reservation system. Patrons will be able to reserve seats in one of three auditoriums. Once the patron has selected an auditorium, 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.

Details

  • The seating arrangement for each auditorium will be stored in separate files. These files will be named A1.txt, A2.txt and A3.txt for auditorium 1, 2 and 3 respectively.
  • Each line in the file will represent a row in the auditorium. The number of rows in each auditorium is unknown to you.
  • The number of seats in each row of a single auditorium will be the same. For example, if the first line of the file has 15 seats, then every subsequent row in the theater will also have 15 seats. This does not mean that each auditorium has the same number of seats in each row. One auditorium may have 15 seats per row and another may have 20 seats.
  • Empty seats are represented by a pound sign (#).
  • Reserved seats are represented by a period (.).
  • The seating arrangements are file-bound. Do not read the file into memory. Use file manipulation functions to traverse and manipulate the file.
  • Tickets can only be reserved the day of the screening and all screenings are at 7 PM that night. There is no need to worry about multiple screenings or reserving seats on a specific day.
  • All tickets are $7 regardless of patron age or auditorium.
  • Once seats are chosen by the user, update the file.

User Interface and Input: Present a user-friendly menu system for the user to reserve seats. First ask for the auditorium:

1. Reserve Seats
2. View Auditorium
3. Exit

Although in reality the user would likely only make one purchase, for testing purposes, assume the user will repeat the ticket buying process until they decide to quit.

After the user has selected a non-exit option, present the user with a menu to select the auditorium.

1. Auditorium 1
2. Auditorium 2
3. Auditorium 3

Once the auditorium has been selected, 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.

12345678901234567890
1 ...##..#####........
2 ########....####..##
3 .........##.........
4 #.#.#.#.#.#.#.#.#.#.
5 ########.#####.#####

The seats are numbered sequentially from left to right and only the ones digit is displayed above each column to make it easier to display the chart. It is understood that the second set of digits from 1-0 are for the numbers 11- 20 in the above example.

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

  • Row number
  • Starting seat number
  • Number of tickets

Assume that the user wants to reserve sequential seats to the right of the first seat entered.

Output: At the end of the program, display a formatted report to the console. The report should consist of 4 columns:

  • Column 1 labels
    • Auditorium 1
    • Auditorium 2
    • Auditorium 3
    • Total
  • Column 2 - number of seats reserved for each label
  • Column 3 - the number of open seats for each label
  • Column 4 - the total of the ticket sales for each label
Academic Honesty!
It is not our intention to break the school's academic policy. Projects posted are only used as a reference and should not be submitted as is. We are not held liable for any misuse of the solutions. Please see the frequently asked questions page for further questions and inquiries.
Kindly fill out the form. Please provide a valid email address and we'll get back to you in less than 24 hours. We will be sending an invoice through PayPal upon confirmation. We are a non profit organization however we need an amount to keep this organization running, and to be able to complete our research and development.