×
Samples Blogs Make Payment About Us Reviews 4.9/5 Order Now

Create A Program to Create Cinema Ticket Buying System in Python Assignment Solution

July 01, 2024
Sophie Bennett
Sophie Bennett
🇬🇧 United Kingdom
Python
Sophie Bennett is a seasoned Python Assignment Expert with a wealth of 14 years of experience. She holds a Master's degree from a leading institution, bringing a comprehensive skill set to every Python challenge.
Key Topics
  • Instructions
  • Requirements and Specifications
Tip of the day
Focus on understanding TensorFlow's computational graph and its eager execution mode. Use pre-built functions like tf.data for efficient data pipelines.
News
The latest version of Google's machine learning library, offering improved performance, streamlined APIs, and expanded support for reinforcement learning, making it a powerful tool for AI development.

Instructions

Objective
Write a python assignment program to create cinema ticket buying system.

Requirements and Specifications

program to create cinema ticket buying system in python

Source Code

MAIN

from MyModule import *

# Creathe the cinema

cinema = Cinema(15, 5)

cinema.add_movie("Spiderman: No Way Home", "16:00", 16, "New York")

cinema.add_movie("Spiderman: No Way Home", "13:00", 16, "Miami")

cinema.add_movie("Spiderman: No Way Home", "18:00", 16, "Texas")

cinema.add_movie("Avengers: Endgame", "21:00", 13, "Florida")

cinema.add_movie("Avatar", "22:00", 15, "New York")

cinema.add_movie("Avatar", "21:00", 15, "Texas")

cinema.add_movie("Avengers: Endgame", "22:00", 15, "New York")

cinema.add_movie("Avengers: Endgame", "21:00", 15, "Miami")

cinema.add_movie("Avengers: Endgame", "20:00", 15, "Florida")

if __name__ == '__main__':

# Start program

option = -1

while option != 6:

option = menu()

if option == 1:

print(str(cinema))

elif option == 2: # buy ticket

# Ask for movie name

name = input("Enter movie name: ")

if cinema.movie_exist(name):

# Ask for age

age = getInt("Enter age: ")

# Ask for time

time = input("Enter time: ")

# Ask for location

location = input("Enter location: ")

# Get movie

movie = cinema.get_movie_loc_time(name, location, time)

# Check if the movie can be seen

if movie:

if age >= movie.age and time == movie.time:

# Ask for seat

movie.print_seats()

row = getInt("Please enter row: ")

col = getInt("Please enter column: ")

if movie.is_free(row-1, col-1):

movie.sell_seat(row-1, col-1)

print(f"You bought the ticket at position ({row},{col})")

else:

print("Sorry, this seat is not available.")

else:

print("Sorry, you don't have the enough age or the movie is not playing at that time.")

else:

print("Sorry, that movie is not playing in the chosen location.")

else:

print("Sorry, there is no movie with that name.")

elif option == 3:

# get name

name = input("Enter movie name: ")

location = input("Enter location: ")

time = input("Enter time: ")

if cinema.movie_exist(name):

movie = cinema.get_movie_loc_time(name, location, time)

movie.print_seats()

else:

print("Sorry, there is no movie with that name.")

elif option == 4:

location = input("Enter location: ")

# Check movies with that location

found = False

ret = ""

for movie in cinema.movies:

if movie.location.lower() == location.lower():

ret += str(movie)+"\n"

found = True

if found:

print("The movies playing on " + location + " are:")

print(ret)

else:

print("Sorry, there are no movies playing at that location")

elif option == 5: # Movies by age

age = getInt("Enter age: ")

found = False

ret = ""

for movie in cinema.movies:

if age >= movie.age:

ret += str(movie) + "\n"

found = True

if found:

print(f"The movies for age {age}+ are:")

print(ret)

else:

print("Sorry, there are no movies for that age.")

elif option == 6:

print("Good bye!")

break

print()

MODULE

class Movie:

"""

This class represents a movie object with name, time and seats

"""

def __init__(self, name: str, time: str, age: int, location: str, nrows: int, ncols: int):

self.name = name

self.time = time

self.age = age

self.rows = nrows

self.location = location

self.columns = ncols

# Initialize a list of elements that represents the seats

self.seats = []

for i in range(self.rows):

row = [0 for j in range(self.columns)]

self.seats.append(row)

self.free_seats = self.rows * self.columns

def is_free(self, row: int, column: int) -> bool:

return self.seats[row][column] == 0

def sell_seat(self, row:int, column: int):

self.seats[row][column] = 1

def print_seats(self):

ret = "\t"

for k in range(1, self.columns + 1):

ret += "{:>5}".format(k)

ret += "\n"

for i in range(1, self.rows + 1):

ret += str(i) + "\t"

for j in range(1, self.columns + 1):

if self.is_free(i - 1, j - 1):

ret += "{:>5}".format('-')

else:

ret += "{:>5}".format('X')

ret += "\n"

print(ret)

def __str__(self):

"""

This function returns a string representation of the cinema

:return: string

"""

ret = f"Movie: {self.name}\n\t\tTime: {self.time}\n\t\tLocation: {self.location}\n\t\tAge: {self.age}+\n"

return ret

class Cinema:

"""

This class represents a Cinema that contains movies

"""

def __init__(self, nrows: int, ncols: int):

"""

This function received the number of rows and columns representing the size of the cinema (number of seats)

:param nrows: number of rows

:param ncols: number of columns

"""

self.rows = nrows

self.columns = ncols

self.movies = []

def add_movie(self, name: str, time: str, age: int, location: str):

self.movies.append(Movie(name, time, age, location, self.rows, self.columns))

def movie_exist(self, name: str):

"""

Check if a movie exists given its name

:param name: str

:return: bool

"""

for movie in self.movies:

if movie.name.lower() == name.lower():

return True

return False

def get_movie(self, name: str) -> Movie:

"""

Get movie by name

:param name: name of the movie

:return: Movie object or None

"""

for movie in self.movies:

if movie.name.lower() == name.lower():

return movie

return None

def get_movie_loc(self, name: str, location: str) -> Movie:

"""

Get movie by name and location

:param name: name of the movie

:param location: location

:return: Movie object or None

"""

for movie in self.movies:

if movie.name.lower() == name.lower() and movie.location.lower() == location.lower():

return movie

return None

def get_movie_loc_time(self, name: str, location: str, time: str) -> Movie:

"""

Get movie by name, location and time

:param name: name of the movie

:param location: location

_param time: str

:return: Movie object or None

"""

for movie in self.movies:

if movie.name.lower() == name.lower() and movie.location.lower() == location.lower() and time == movie.time:

return movie

return None

def __str__(self):

"""

Returns info about the current movies

:return:

"""

ret = ""

if len(self.movies) > 0:

ret = "The movies playing are:\n"

for i, movie in enumerate(self.movies):

ret += f"\t{i+1}) " + str(movie) + "\n"

else:

ret = "There are no movies playing."

return ret

"""

This file contains helper functions

"""

def getInt(message: str) -> int:

"""

This function will request an integer from user

The function will keep prompting the user until s/he enters a valid value

:param message: str

:return: int

"""

while True:

try:

value = int(input(message))

if value > 0:

return value

else:

print("Please enter a positive number.")

except:

print("Please enter a valid number.")

def menu() -> int:

"""

Displays menu and ask for menu option

:return: int

"""

print("1) List all movies")

print("2) Buy ticket")

print("3) See available seats for movie")

print("4) Show movies by location")

print("5) Show movies by age")

print("6) Exit")

while True:

try:

option = int(input("Enter option: "))

if 1 <= option <= 6:

return option

else:

print("Please enter a valid option.")

except:

print("Please enter a valid option.")

Related Samples

Explore our Python Assignment samples, crafted to assist students at every level. Delve into diverse topics such as algorithms, data analysis, automation, and machine learning. Each example includes detailed explanations and runnable code, empowering learners to grasp Python's versatility and excel in their programming endeavors with confidence.