24/09/2024, 22:02 Python Capstone Project.
ipynb - Colab
import re
class User:
def __init__(self, user_id, name, email, aadhaar_number):
self.user_id = user_id
self.name = name
self.email = email
self.aadhaar_number = aadhaar_number
class Ticket:
def __init__(self, ticket_id, seat_number, price):
self.ticket_id = ticket_id
self.seat_number = seat_number
self.price = price
class Event:
def __init__(self, event_id, date, time, venue):
self.event_id = event_id
self.date = date
self.time = time
self.venue = venue
self.tickets = []
def add_ticket(self, ticket):
self.tickets.append(ticket)
class Booking:
def __init__(self, booking_id, user_id, ticket_id, booking_status):
self.booking_id = booking_id
self.user_id = user_id
self.ticket_id = ticket_id
self.booking_status = booking_status
class BookingSystem:
def __init__(self):
self.users = []
self.events = []
self.bookings = []
def add_user(self, user):
self.users.append(user)
def add_event(self, event):
self.events.append(event)
def add_ticket(self, event_id, ticket):
event = next((e for e in self.events if e.event_id == event_id), None)
if event:
event.add_ticket(ticket)
def verify_aadhaar(self, aadhaar_number):
# Simple Aadhaar validation: 12-digit number
return bool(re.fullmatch(r'\d{12}', aadhaar_number))
def get_user_bookings(self, user_id):
return [b for b in self.bookings if b.user_id == user_id and b.booking_status == "confirmed"]
def book_ticket(self, user_id, event_id, seat_number):
user = next((u for u in self.users if u.user_id == user_id), None)
if user:
# Check if user has already booked 2 tickets
user_bookings = self.get_user_bookings(user_id)
if len(user_bookings) >= 2:
print(f"User {user.name} has already booked the maximum allowed tickets (2).")
return None
event = next((e for e in self.events if e.event_id == event_id), None)
if event:
ticket = next((t for t in event.tickets if t.seat_number == seat_number), None)
if ticket:
# Check if the ticket is already booked
if any(b.ticket_id == ticket.ticket_id for b in self.bookings):
print(f"Seat {seat_number} is already booked.")
return None
if self.verify_aadhaar(user.aadhaar_number):
booking = Booking(len(self.bookings) + 1, user_id, ticket.ticket_id, "confirmed")
self.bookings.append(booking)
print(f"Booking successful for seat {seat_number}! Booking ID: {booking.booking_id}")
return booking
else:
i t("A dh ifi ti f il d ")
https://colab.research.google.com/drive/1OxItiGLMs8unw5JSsiKuP2FVvyTDDOEx?authuser=0#printMode=true 1/5
24/09/2024, 22:02 Python Capstone Project.ipynb - Colab
print("Aadhaar verification failed.")
return None
else:
print("Invalid seat number.")
return None
else:
print("Event not found.")
return None
else:
print("User not found.")
return None
def cancel_ticket(self, user_id, booking_id):
booking = next((b for b in self.bookings if b.booking_id == booking_id and b.user_id == user_id), None)
if booking:
booking.booking_status = "cancelled"
print(f"Booking {booking_id} has been cancelled.")
return True
else:
print("Booking ID not found or does not belong to the user.")
return False
def get_available_tickets(self, event_id):
event = next((e for e in self.events if e.event_id == event_id), None)
if event:
booked_tickets = [b.ticket_id for b in self.bookings if b.booking_status == "confirmed"]
available_tickets = [t for t in event.tickets if t.ticket_id not in booked_tickets]
return available_tickets
return []
def find_user_by_aadhaar(self, aadhaar_number):
return next((u for u in self.users if u.aadhaar_number == aadhaar_number), None)
def list_user_bookings(self, user_id):
return [b for b in self.bookings if b.user_id == user_id and b.booking_status == "confirmed"]
def main():
# Initialize the booking system
system = BookingSystem()
# Create an event
event1 = Event("E001", "2024-12-25", "20:00", "Wembley Stadium")
# Add tickets to the event
tickets = [
Ticket("T001", "12A", 500),
Ticket("T002", "12B", 500),
Ticket("T003", "13A", 300),
Ticket("T004", "13B", 300),
Ticket("T005", "14A", 200),
Ticket("T006", "14B", 200),
]
for ticket in tickets:
event1.add_ticket(ticket)
# Add the event to the system
system.add_event(event1)
while True:
print("\nWelcome to the Coldplay Concert Ticket Booking System!")
print("1. Register")
print("2. Login")
print("3. Exit")
choice = input("Enter your choice (1-3): ")
if choice == "1":
# Registration
print("\n--- User Registration ---")
user_name = input("Enter your name: ").strip()
email = input("Enter your email: ").strip()
aadhaar_number = input("Enter your 12-digit Aadhaar number: ").strip()
# Validate Aadhaar
if not system.verify_aadhaar(aadhaar_number):
print("Invalid Aadhaar number. Registration failed.")
continue
# Check if user already exists
existing_user = system.find_user_by_aadhaar(aadhaar_number)
if existing_user:
print("User already exists! Please login to book a ticket.")
continue
https://colab.research.google.com/drive/1OxItiGLMs8unw5JSsiKuP2FVvyTDDOEx?authuser=0#printMode=true 2/5
24/09/2024, 22:02 Python Capstone Project.ipynb - Colab
# Create a new user
user_id = f"U{len(system.users) + 1:03}"
user = User(user_id, user_name, email, aadhaar_number)
system.add_user(user)
print(f"User registered successfully! Your User ID is {user_id}.")
elif choice == "2":
# Login
print("\n--- User Login ---")
aadhaar_number = input("Enter your Aadhaar number: ").strip()
user = system.find_user_by_aadhaar(aadhaar_number)
if not user:
print("User not found. Please register first.")
continue
print(f"Welcome back, {user.name}!")
while True:
print("\n--- Menu ---")
print("1. View Available Tickets")
print("2. Book a Ticket")
print("3. View My Bookings")
print("4. Cancel a Booking")
print("5. Logout")
user_choice = input("Enter your choice (1-5): ")
if user_choice == "1":
# View available tickets
available_tickets = system.get_available_tickets("E001")
if available_tickets:
print("\nAvailable Tickets:")
for ticket in available_tickets:
print(f"Seat Number: {ticket.seat_number}, Price: {ticket.price}")
else:
print("No tickets available.")
elif user_choice == "2":
# Book a ticket
available_tickets = system.get_available_tickets("E001")
if not available_tickets:
print("No tickets available to book.")
continue
print("\nAvailable Tickets:")
for ticket in available_tickets:
print(f"Seat Number: {ticket.seat_number}, Price: {ticket.price}")
seat_number = input("Enter the seat number you'd like to book: ").strip()
booking = system.book_ticket(user.user_id, "E001", seat_number)
if booking:
print(f"Booking ID: {booking.booking_id} for seat {seat_number} confirmed.")
else:
print("Booking failed. Please try again.")
elif user_choice == "3":
# View user's bookings
user_bookings = system.list_user_bookings(user.user_id)
if user_bookings:
print("\nYour Bookings:")
for booking in user_bookings:
ticket = next((t for t in event1.tickets if t.ticket_id == booking.ticket_id), None)
if ticket:
print(f"Booking ID: {booking.booking_id}, Seat: {ticket.seat_number}, Price: {ticket.price}")
else:
print("You have no bookings.")
elif user_choice == "4":
# Cancel a booking
user_bookings = system.list_user_bookings(user.user_id)
if not user_bookings:
print("You have no bookings to cancel.")
continue
print("\nYour Bookings:")
for booking in user_bookings:
ticket = next((t for t in event1.tickets if t.ticket_id == booking.ticket_id), None)
if ticket:
print(f"Booking ID: {booking.booking_id}, Seat: {ticket.seat_number}, Price: {ticket.price}")
try:
booking id = int(input("Enter the Booking ID you want to cancel: ").strip())
https://colab.research.google.com/drive/1OxItiGLMs8unw5JSsiKuP2FVvyTDDOEx?authuser=0#printMode=true 3/5
24/09/2024, 22:02 Python Capstone Project.ipynb - Colab
g_ ( p ( g y ) p())
success = system.cancel_ticket(user.user_id, booking_id)
if success:
print("Booking cancelled successfully.")
except ValueError:
print("Invalid Booking ID.")
elif user_choice == "5":
# Logout
print(f"Goodbye, {user.name}!")
break
else:
print("Invalid choice. Please try again.")
elif choice == "3":
# Exit
print("Thank you for using the Coldplay Concert Ticket Booking System. Goodbye!")
break
else:
print("Invalid choice. Please try again.")
if __name__ == "__main__":
main()
Welcome to the Coldplay Concert Ticket Booking System!
1. Register
2. Login
3. Exit
Enter your choice (1-3): 1
--- User Registration ---
Enter your name: vanshika
Enter your email:
[email protected] Enter your 12-digit Aadhaar number: 123456789123
User registered successfully! Your User ID is U001.
Welcome to the Coldplay Concert Ticket Booking System!
1. Register
2. Login
3. Exit
Enter your choice (1-3): 2
--- User Login ---
Enter your Aadhaar number: 123456789123
Welcome back, vanshika!
--- Menu ---
1. View Available Tickets
2. Book a Ticket
3. View My Bookings
4. Cancel a Booking
5. Logout
Enter your choice (1-5): 1
Available Tickets:
Seat Number: 12A, Price: 500
Seat Number: 12B, Price: 500
Seat Number: 13A, Price: 300
Seat Number: 13B, Price: 300
Seat Number: 14A, Price: 200
Seat Number: 14B, Price: 200
--- Menu ---
1. View Available Tickets
2. Book a Ticket
3. View My Bookings
4. Cancel a Booking
5. Logout
Enter your choice (1-5): 2
Available Tickets:
Seat Number: 12A, Price: 500
Seat Number: 12B, Price: 500
Seat Number: 13A, Price: 300
Seat Number: 13B, Price: 300
Seat Number: 14A, Price: 200
Seat Number: 14B, Price: 200
Enter the seat number you'd like to book: 12A
Booking successful for seat 12A! Booking ID: 1
Booking ID: 1 for seat 12A confirmed.
https://colab.research.google.com/drive/1OxItiGLMs8unw5JSsiKuP2FVvyTDDOEx?authuser=0#printMode=true 4/5
24/09/2024, 22:02 Python Capstone Project.ipynb - Colab
https://colab.research.google.com/drive/1OxItiGLMs8unw5JSsiKuP2FVvyTDDOEx?authuser=0#printMode=true 5/5