Full Project

Download as pdf or txt
Download as pdf or txt
You are on page 1of 31

3

DECLARATION

I ____________________________________________, bearing roll no (your roll no), a student of Class XII


A’la Anglaise School hereby declare that I own the full responsibility for the information,
results etc, provided in this PROJECT titled “Tours & Travels Management System". It has
been developed successfully by using the Data Handling concepts like data management,
data visualization etc, provided in the programming language Python at A’la Anglaise School
in complete fulfilment of project (curriculum Of Central Board of Secondary Education CBSE
of Informatics Practices (065) conducted by CBSE. New Delhi for the academic session
(2024-25).
I also declare that this project won has neither been submitted to any other board nor
published at any time by me in the past.

Name : __________________________________________________
Roll No.: ______________________
Class : _____________
4

ACKNOWLEDGEMENT

I take this opportunity to express mv deep sense of gratitude to all those who have been
instrumental in preparation of this project.
I feel great pleasure to express my obligation to (Bijayant Kumar). Principal of A’la
Anglaise School.
I am also sincerely grateful to Baibhav Kumar PGT (Computer Science), A’la Anglaise
School for his encouragement and valuable guidance during the entire period of work.
I would also thank all my parents and friends for their wholehearted support and
encouragement without with this project would not have been successful.
I could not forget Internet. Textbooks which provided me with sufficient matter for
reference.
5

TABLE OF CONTENT

Sr. No. Topic Page No.


1 Introduction 6
2 Problem Statement 7
3 Objective 8
4 Project Scope 9
5 System Requirement and Specification 10
6 Overview of Python 11
7 Comma Separated Value(CSV) 12
8 Project Module 13
9 Data Flow Diagram 14
10 Database Design and CSV File Structure 15
11 Python Source Code 17
12 Program Outputs 30
13 Data Visualization 32
14 Conclusion 33
15 Bibliography 33
6

INTRODUCTION

Introduction to Tours & Travels Management System


The tourism industry thrives on efficient operations and data-driven insights to enhance
customer experiences. Our project, "Tours & Travels Management System" developed
using Python, CSV files, and the Matplotlib library, aims to streamline core operations such
as bookings, tours management, and customer interactions while providing data
visualization for better decision-making.
This project focuses on the following key aspects:
1. Booking Operation
The system facilitates seamless tour bookings, ensuring the real-time recording of
essential details such as customer names, selected packages, travel dates etc.
2. Tours Operation
This module manages tour details, including destinations, available packages,
pricing, and schedules. The system enables easy addition, modification, and removal
of tour packages to keep the offerings updated.
3. Customer Operation
This feature securely handles customer information, supporting actions like adding
new customers, updating their details, and viewing booking histories.
4. Data Visualization
To make the system more insightful, we have integrated data visualization using the
Matplotlib library.
The system leverages Python for its robust programming capabilities and CSV files for
lightweight data storage and retrieval. Data visualization adds a powerful layer of analysis,
enabling stakeholders to make informed decisions based on clear and meaningful
patterns.
Our "Tours & Travels Management System" not only simplifies travel management
operations but also demonstrates the importance of combining data management with
visualization techniques to create impactful solutions in the tourism sector. This project
reflects our understanding of Python programming, file handling, and data visualization in
solving real-world problems effectively.
7

PROBLEM STATEMENT

Problem Statement
The tourism industry is a complex sector that requires efficient management of various
operations, such as bookings, tour scheduling, and customer interactions. Traditional
methods, relying heavily on manual processes or outdated systems, often lead to
inefficiencies, errors, and limited data-driven insights. These limitations create challenges
such as:
1. Booking Inefficiencies: Manual handling of bookings can result in double bookings,
loss of customer data, and difficulty in tracking payment statuses.
2. Tour Management Challenges: Keeping tour details, schedules, and package
offerings up to date is cumbersome and prone to inaccuracies.
3. Customer Data Handling: Storing, retrieving, and updating customer information
manually is time-consuming and error prone.
4. Lack of Insights: Traditional systems lack the ability to analyse data effectively,
limiting insights into customer preferences, booking trends, and revenue
generation, which are crucial for business growth.
To address these challenges, there is a need for a Tours & Travels Management System
that:
 Automates core operations like bookings, tours management, and customer data
handling.
 Provides a reliable and user-friendly platform for managing travel-related activities.
 Incorporates data visualization to analyse trends and patterns, enabling informed
decision-making.
The proposed solution developed using Python, CSV files, and the Matplotlib library, aims
to bridge these gaps by offering a lightweight, efficient, and insightful system tailored to
the needs of the tourism industry.
8

OBJECTIVE

The objective of project is to build an application program to:


1. Automate booking processes for efficient and accurate management.
2. Simplify tour management, including scheduling and package updates.
3. Securely handle customer data for easy access and updates.
4. Use CSV files for lightweight and portable data storage.
5. Incorporate Matplotlib for visualizing booking trends, and popular destinations.
6. Enhance user experience with a simple and intuitive interface.
7. Demonstrate Python programming skills in solving real-world problems.
This application program can be used easily by non-programming personals.
9

PROJECT SCOPE

The "Tours & Travels Management System" is designed to address the operational needs
of travel agencies and customers by automating and streamlining key activities. The scope
of the project includes:
1. Core Functionalities:
o Managing bookings, including recording and updating customer reservations.
o Handling tour operations, such as adding, updating, or removing tour packages,
destinations, and schedules.
o Maintaining customer information for efficient data retrieval and updates.

2. Data Storage:
o Using CSV files for lightweight and easily accessible data storage without the
need for complex databases.
3. Data Visualization:
o Providing visual insights into booking trends, popular destinations, customer
demographics using the Matplotlib library.
4. Technological Integration:
o Leveraging Python’s capabilities, including file handling, modular
programming, and library support, to deliver a robust and scalable solution.
5. Future Enhancement Possibilities:
o Potential integration with payment gateways, real-time notifications, and
advanced analytics tools.
The project is intended to simplify travel management operations, provide valuable
insights, and showcase the practical application of Python in addressing industry-specific
challenges.
10

SYSTEM REQUIREMENT AND SPECIFICATIONS

Software Requirements:
Operating System Window-10 and later versions (32bit, 64 bit)
Language Python
Platform Python IDLE 3.7 (min)
Database CSV file
Database driver MS Excel
Plotting Matplotlib

Hardware Requirements:
Processor Pentium Dual Core (min) 32bit or 64 bit
Hard-Disk 160GB (min)
RAM 1GB (min)

Input/output Requirements:
Input Output
Mouse (any) Monitor (any)
Keyboard Printer (any)
11

OVERVIEW OF PYTHON

Python is a general purpose. dynamic. high-level, and interpreted programming language.


It supports Object Oriented programming approach to develop applications. It is simple
and easy to learn and provides lots of high-level data Structures. Guido Van Rossum is
known as the founder of Python programming.
Features of Python:
 Python is a high-level language. It is a free and open-source language.
 It is an interpreted language, as Python programs are executed by an interpreter.
 Python programs are easy to understand as they have a clearly defined syntax and
relatively simple structure.
 Python is case-sensitive. For example, NUMBER and number are not same in Python.
 Python is portable and platform independent, means it can run on various operating
systems and hardware platforms.
 Python has a rich library of predefined functions.
 Python is also helpful in web development. Many popular web services and
applications are built using Python.
 Python uses indentation for blocks and nested blocks.
12

COMMA SEPERATED VALUE(CSV)

A CSV (Comma-Separated Values) file is a simple and widely used file format for storing
and exchanging tabular data. It is lightweight and compatible with various programming
languages and tools, making it a popular choice for data handling in software applications.
Key Features of CSV Files:
1. Structure:
o Data is organized in rows and columns, with each row representing a record
and each column representing a field.
o Fields in a row are separated by commas (or other delimiters like tabs or
semicolons).
2. Simplicity:
o CSV files are plain text files, making them easy to read and edit using basic text
editors or spreadsheet programs like Microsoft Excel or Google Sheets.
3. Portability:
o CSV files are platform-independent and can be used across different operating
systems and applications.
4. Lightweight:
o They have a small file size compared to other data storage formats, making
them ideal for simple data storage needs.
5. No Complex Structure:
o Unlike databases or XML/JSON files, CSV files do not support nested data
structures, relationships, or metadata.
13

PROJECT MODULES

The "Tours & Travels Management System" is divided into the following key modules to
ensure an organized and efficient workflow:
1. Booking Module: Handles customer bookings, Records details, Allows modification
and cancellation of bookings
2. Tours Management Module: This module helps you to add, modify, and delete tours
and packages
3. Customer Management Module: This module helps you to add, modify, and delete
customer information, including names, contact details, and booking history.
4. Data Storage Module: Uses CSV files to store and retrieve data
5. Data Visualization Module:
 Generates insights from stored data using the Matplotlib library.
 Provides visual representations such as:
o Booking trends over time.
o Most popular destinations/packages.
o Revenue patterns and customer demographics.

These modules work together to deliver a complete and efficient travel management
system, addressing the operational needs of the tourism industry while enhancing user
experience and decision-making capabilities.
14

DATA FLOW DIAGRAM

MENU

DATA
TOURS CUSTOMER BOOKING GUIDE
VISIULIZATION

ADD MODIFY REMOVE SEARCH

CSV File Data Storage


15

DATABASE DESIGN AND TABLE STRUCTURE


Tours.csv

Customers.csv

Bookings.csv

Guides.csv
16
17

PYTHON SOURCE CODE


import pandas as pd
import matplotlib.pyplot as plt

Tours = pd.read_csv("Tours.csv", index_col='Tour_ID' )


Customers = pd.read_csv("Customers.csv", index_col='Customer_ID')
Bookings = pd.read_csv("Bookings.csv", index_col='Booking_ID')
Guides = pd.read_csv("Guides.csv", index_col='Guide_ID')

print("\t ==========================")
print("\t TOUR AND TRAVELS MANAGEMENT SYSTEM ")
print("\t ==========================")

user = input("Enter your user ID: ")


user_pass= input("Enter your Password: ")

if user == "a" and user_pass == "123":


print("\t\t\t\t Welcome ")
print ("\t\t\t\t +++++++++++++++++++++++++ " )
print("\t\t\t\t MENU LIST ")
while True:
print("""
+----------------------------------------------------+
| Op ons | Opera ons |
+----------------------------------------------------+
| 0 |Introduc on to Project|
| 1 |Tour Opera ons |
| 2 |Customer Opera ons |
| 3 |Booking Opera ons |
| 4 |Guide Opera ons |
| 5 |Data Visualiza on |
| 6 |Helpline |
| 7 |Exit |
+----------------------------------------------------+
""")
choice = int(input("Enter any digit fron the above list: "))
if choice ==0:
print("+" + "-" * 120 + "+")
print("|{:^114}|".format(" Welcome to the Tour and Travel Management System"))
print("+" + "-" * 120 + "+")
print("""\n\t\t\t Welcome to the Tour and Travel Management System -
An applica on to manage all the Tours and Travels opera ons. Our system is designed
to manage a variety of opera ons. Ensuring a smooth and memorable:
From tour planning and customer interac ons to bookings, guides, & data Visualiza on
Explore the key features of our
- Tour Plan, modify, and view details Of exci ng tours around the world
- Opera ons: Add, modify, or view informa on about our valued customers.
- Effortlessly make new bookings, modify details, or check exist.
18

- Guide Manage our team of expert guides for an enriched travel experiences.
- Visualiza on: Dive into data with interac ve plots,
- Explore informa on about the least popular tours for a unique travel
- Reach out for assistance with our dedicated helpline providing a
Our system not only streamlines day-to-day opera ons but also offers a glimpse too.
Whether you are a travel enthusiast or a management.
Let's make your travel dreams a reality!
""")
print("+" + "-" * 60 + "+")
elif choice == 1:
print ("\t Tour Opera ons")
print("""
+-------------------------------------------------------------------------+
| Op ons | Opera ons |
+-------------------------------------------------------------------------+
| 1 |Add a new tour |
| 2 |Modify an exis ng tour |
| 3 |Remove a tour |
| 4 |View tour informa on |
| 5 |Top Tours |
| 6 |Least Tours |
| 7 |Back to Main Menu |
+-------------------------------------------------------------------------+
""")
tour_op on = int(input("Choose Your Desired Op on: "))

if tour_op on == 1:
print("\t Adding a New Tour")
tour_name = input("Enter Tour Name: ")
tour_des na on = input("Enter Tour Des na on: ")
tour_price = input("Enter Tour Price : ")
start_date = input("Enter Tour Start Date (YYYY-MM-DD): ")
end_date = input("Enter Tour End Date (YYYY-MM-DD): ")

# Generate a new tour ID


tour_id=Tours.index
tour_id=tour_id[-1]
tour_id=tour_id[1:]
tour_id= int(tour_id)+1
tour_id= "T" + str(tour_id)

Tours.loc[tour_id] = [tour_name, tour_des na on, tour_price, start_date, end_date]


Tours.to_csv("Tours.csv")
print("New Tour Added")
print(Tours.loc[tour_id])
input("Press any key to con nue: ")

elif tour_op on == 2:
print("\t Modifying an Exis ng Tour")
tour_id = input("Enter Tour ID: ")
19

if tour_id not in Tours.index:


print("No Such Tour Exist")
print("Check Your Tour ID")
input("Press Enter to con nue: ")
else:
print(Tours.loc[tour_id])
new_name = input("Enter New Tour Name: ")
new_des na on = input("Enter New Tour Des na on: ")
new_price = input("Enter New Tour Price : ")
new_start_date = input("Enter New Tour Start Date (YYYY-MM-DD): ")
new_end_date = input("Enter New Tour End Date (YYYY-MM-DD): ")
Tours.loc[tour_id] = [new_name, new_des na on, new_price, new_start_date,
new_end_date]
Tours.to_csv("Tours.csv")
print("Data Changed Successfully")
input("Press Enter to con nue: ")

elif tour_op on == 3:
print("\t Removing an Exis ng Tour")
tour_id = input("Enter Tour ID: ")

if tour_id not in Tours.index:


print("No Such Tour Exist")
print("Check your Tour ID")
input("Press Enter to con nue: ")
else:
print(Tours.loc[tour_id])
remove_confirm = input("Do you want to remove this tour? (Y/N): ")

if remove_confirm.lower() in "y":
Tours.drop(tour_id, axis=0, inplace=True)
Tours.to_csv("Tours.csv")
print("Tour Removed Successfully")
input("Press Enter to con nue: ")
else:
print("Tour Not Removed")
input("Press Enter to con nue: ")

elif tour_op on == 4:
print("\t Viewing Tour Informa on")
tour_id = input("Enter Tour ID: ")

if tour_id not in Tours.index:


print("No Such Tour Exist")
print("Check your Tour ID")
input("Press Enter to con nue: ")
else:
tour_info = Tours.loc[tour_id]
print(f"Tour Informa on for Tour ID: {tour_id}")
print(f"Tour Name: {tour_info['tour_name']}")
20

print(f"Tour Des na on: {tour_info['tour_des na on']}")


print(f"Tour Price: {tour_info['tour_price']}")
print(f"Start Date: {tour_info['start_date']}")
print(f"End Date: {tour_info['end_date']}")
input("Press Enter to con nue: ")
elif tour_op on == 5:
# Sec on for Top Tours
print("\tTop Tours")
top_tours_ids = Bookings['Tour_ID'].value_counts().nlargest(3).index

#Create a DataFrame with top tour's details


top_tours_df = Tours.loc[top_tours_ids]
top_tours_df['Number_of_Bookings'] =
Bookings['Tour_ID'].value_counts().nlargest(3).values

#Display the DataFrame


print(top_tours_df)
input("Press Enter to con nue: ")
elif tour_op on == 6:
print("\tLeast Tours")
#Check if there are any tours In the Dataframe
if Tours.empty:
print("No tours available.")
else:
# Find the tour with the minimum number of bookings
least_popular_tour = Bookings['Tour_ID'].value_counts().idxmin()

#Check if the teast_populor_tour exists in the Tours Dataframe


if least_popular_tour not in Tours.index:
print("No informa on available for the least popular tour . ")
else:
least_popular_tour_info = Tours.loc[least_popular_tour]
print("Informa on for the Least Popular Tour:")
print(f"Tour ID: {least_popular_tour}")
print(f"Tour Name: {least_popular_tour_info['tour_name' ]}")
print(f"Tour Des na on:
{least_popular_tour_info['tour_des na on']}")
print(f"Tour Price: {least_popular_tour_info['tour_price']}")
print(f"Start Date: {least_popular_tour_info['start_date']}")
print(f"End Date: {least_popular_tour_info['end_date']}")
input("Press Enter to con nue: ")
else:
input("Back to Main Menu, Press Enter to con nue: ")

elif choice == 2:

print("\tCustomer Opera on")


print("""
+-------------------------------------------------------+
| Op ons | Opera ons |
+-------------------------------------------------------+
21

| 1 |Add a new customer |


| 2 |Modify customer informa on |
| 3 |Remove a customer |
| 4 |View customer informa on |
| 5 |Back To Main Menu |
+-------------------------------------------------------+
""")

customer_op ons = int(input("Choose Your Desired Op on: "))

if customer_op ons == 1:
print("\tAdding a New Customer")
customer_name = input("Enter Customer Name: ")
customer_address = input("Enter Customer Address: ")
customer_phone = input("Enter Customer Phone Number: ")
customer_email = input("Enter Customer Email: ")
customer_id = Customers.index
customer_id = customer_id[-1]
customer_id = customer_id[1:]
customer_id = int(customer_id) + 1
customer_id = "C" + str(customer_id)
print("Your Customer Id is ", customer_id)
Customers.loc[customer_id] = [customer_name, customer_address, customer_phone,
customer_email]
Customers.to_csv("Customers.csv")
print("New Customer added")
print(Customers.loc[customer_id])
input("Press any key to con nue: ")

elif customer_op ons == 2:


print("\tModifying an Exis ng Customer")
customer_id = input("Enter Customer ID: ")

if customer_id not in Customers.index:


print("No Such customer Exist")
print("Check Your customer ID")
input("Press Enter to con nue: ")
else:
print(Customers.loc[customer_id])
new_name = input("Enter New Customer Name: ")
new_address = input("Enter New Customer Address: ")
new_phone = input("Enter New Customer Phone Number: ")
new_email = input("Enter New Customer Email: ")

Customers.loc[customer_id] = [new_name, new_address, new_phone,


new_email]
Customers.to_csv("Customers.csv")
print("Customer Data Changed Successfully")
input("Press Enter to con nue: ")

elif customer_op ons == 3:


22

print("\t Removing an Exis ng customer")


customer_id = input("Enter customer ID: ")

if customer_id not in Customers.index:


print("No Such customer Exist")
print("Check your customer ID")
input("Press Enter to con nue: ")
else:
print(Customers.loc[customer_id])
remove_confirm = input("Do you want to remove this customer? (Y/N): ")

if remove_confirm.lower() in "y":
Customers.drop(customer_id, axis=0, inplace=True)
Customers.to_csv("Customers.csv")
print("customer Removed Successfully")
input("Press Enter to con nue: ")
else:
print("customer Not Removed")
input("Press Enter to con nue: ")

elif customer_op ons == 4:


print("\t Viewing customer Informa on")
customer_id = input("Enter customer ID: ")

if customer_id not in Customers.index:


print("No Such customer Exist")
print("Check your customer ID")
input("Press Enter to con nue: ")
else:
print(Customers.loc[customer_id])
input("Press Enter to con nue: ")

else:
input("Back to Main Menu, Press Enter to con nue: ")

# Similar modifica ons for booking opera ons


elif choice == 3:
print("\tBooking Opera ons")
print("""
+-------------------------------------------------------+
| Op ons | Opera ons |
+-------------------------------------------------------+
| 1 |Add a new booking |
| 2 |Modify booking informa on |
| 3 |Remove a booking |
| 4 |View booking informa on |
| 5 |Back To Main Menu |
+-------------------------------------------------------+
""")

booking_op ons = int(input("Choose Your Desired Op on: "))


23

if booking_op ons == 1:
print("\tAdding a New Booking")
tour_id = input("Enter Tour ID: ")
customer_id = input("Enter customer ID: ")
tour_info = Tours.loc[tour_id]
# Display the available dates for the selected tour
print(f"Available Tour Dates for {tour_info['tour_name']}:")
print(f"Start Date: {tour_info['start_date']}")
print(f"End Date: {tour_info['end_date']}")
# Capture the booking date as the tour's star ng date
tour_info = Tours.loc[tour_id]
booking_date = tour_info['start_date']
want_guid = input("Do you want a guide for this booking? (Y/N): ").lower()

if want_guid == 'y':
print("\nAvailable Guides:")
print (Guides)
guide_id = input(" Enter Guide ID from the list above: ")

# check if the entered guide ID is valid


if guide_id not in Guides.index:
print(" Invalid Guide ID. Please Check and try again.")
input("Press Enter to con nue: ")
else:
#Add the booking with the selected guide
booking_id = Bookings.index
booking_id = booking_id[-1]
booking_id = booking_id[1:]
booking_id = int(booking_id) + 1
booking_id = "B" + str(booking_id)
Bookings.loc[booking_id] = [tour_id, customer_id, guide_id,
booking_date]
Bookings.to_csv("Bookings.csv")
print("Booking Added successfully.")
print("\nBooking Confirma on:")
print(f" Thank you for booking with us! Your booking details are as
follows: ")
print(f"Booking ID: {booking_id}")
print(f"Tour Name: {tour_info['tour_name']}")
print(f"Tour Des na on: {tour_info['tour_des na on']}")
print(f"Start Date: {tour_info['start_date']}")
print(f"End Date: {tour_info['end_date']}")
print(f"Booking Date: {booking_date}")
print(f"Guide ID: {guide_id}")
print("Your journey will start from Bhurkunda at 7:00 PM. Have a great
trip!")
input("Press Enter to con nue: ")
elif want_guid == 'n':
#Add the booking without a guide
booking_id = Bookings.index
24

booking_id = booking_id[-1]
booking_id = booking_id[1:]
booking_id = int(booking_id) + 1
booking_id = "B" + str(booking_id)
Bookings.loc[booking_id] = [tour_id, customer_id, "No Guid", booking_date]
Bookings.to_csv("Bookings.csv")
print("Booking Added successfully without a guide.")
print("\nBooking Confirma on:")
print(f" Thank you for booking with us! Your booking details are as follows: ")
print(f"Booking ID: {booking_id}")
print(f"Tour Name: {tour_info['tour_name']}")
print(f"Tour Des na on: {tour_info['tour_des na on']}")
print(f"Start Date: {tour_info['start_date']}")
print(f"End Date: {tour_info['end_date']}")
print(f"Booking Date: {booking_date}")
print("Your journey will start from Bhurkunda at 7:00 PM. Have a great trip!")
input("Press Enter to con nue: ")
else:
print("Invalid input. Please enter 'Y' or 'N'.")
input("Press Enter to con nue: ")

elif booking_op ons == 2:


print("\tModifying an Exis ng Booking")
booking_id = input("Enter Booking ID: ")

if booking_id not in Bookings.index:


print("No Such Booking Exist")
print("Check Your Booking ID")
input("Press Enter to con nue: ")
else:
print(Bookings.loc[booking_id])
# Get the new informa on for the bookings
new_tour_id = input("Enter New Tour ID: ")
new_customer_id = input("Enter New customer ID: ")
new_guide_id = input(" Enter New Guide ID: ")

# Placeholder: Add logic for valida ng new tour and customer IDs
if new_tour_id not in Tours.index or new_customer_id not in Customers.index:
print("Invalid Tour or Customer ID. Please Check and try again.")
input("Press Enter to con nue: ")
else:
#Update the booking informa on
tour_info = Tours.loc[tour_id]
booking_date = tour_info['start_date']
Bookings.loc[booking_id] = [new_tour_id, new_customer_id,
new_guide_id, booking_date]
Bookings.to_csv("Bookings.csv")
print("Booking Informa on Modified Successfully")
input("Press Enter to con nue: ")
25

elif booking_op ons == 3:


print("\t Removing an Exis ng Booking")
booking_id = input("Enter Booking ID: ")
if booking_id not in Bookings.index:
print("No Such booking Exist")
print("Check your booking ID")
input("Press Enter to con nue: ")
else:
print(Bookings.loc[booking_id])
remove_confirm = input("Do you want to remove this booking? (Y/N): ")

if remove_confirm.lower() in "y":
Bookings.drop(booking_id, axis=0, inplace=True)
Bookings.to_csv("Bookings.csv")
print("Booking Removed Successfully")
input("Press Enter to con nue: ")
else:
print("Booking Not Removed")
input("Press Enter to con nue: ")

elif booking_op ons == 4:


print("\t Viewing booking Informa on")
customer_id = input("Enter customer ID: ")

# check if the customer ID exists in customers DataFrame.


if customer_id not in Customers.index:
print("No Such customer Exist")
print("Check your customer ID")
input("Press Enter to con nue: ")
else:
# Display the booking informa on for the customer
print("Booking Informa on for customer ID. ",customer_id)
customer_bookings = Bookings[Bookings['customer_id'] == customer_id]

# check if the customer has any bookings


if customer_bookings.empty:
print("No bookings found for the customer ID: ", customer_id)
else:
print(customer_bookings)

input("Press Enter to con nue: ")


else:
input("Back to Main Menu, Press Enter to con nue: ")

elif choice == 4:
print("\tGuide Opera ons")
print("""
+-------------------------------+----------------------------------------+
| Op ons | Opera ons |
+------------------------------+-----------------------------------------+
| 1 |Add a new guide |
26

| 2 |Modify guide informa on |


| 3 |Remove a guide |
| 4 |View guide informa on |
| 5 |Back To Main Menu |
+------------------------------+------------------------------------------+
""")

guide_op on = int(input("Choose Your Desired Op on: "))


if guide_op on == 1:
print("\tAdding a New Guide")
guide_name = input("Enter Guide Name: ")
guide_Language = input("Enter Guide Language ")

# Generate a new guide ID


guide_id = Guides.index
guide_id = guide_id[-1]
guide_id = guide_id[1:]
guide_id = int(guide_id)+1
guide_id = "G"+str(guide_id)

# Add the new guide to the Guides DataFrame


Guides.loc[guide_id] = [guide_name, guide_Language]
Guides.to_csv("Guides.csv")

print("New Guide Added Successfully")


print (Guides.loc[guide_id])
input("Press Enter to con nue: ")

elif guide_op on == 2:
print("\tModifying an Exis ng Guide")
guide_id = input("Enter Guide ID: ")

if guide_id not in Guides.index:


print("No Such Guide Exist")
print("Check Your Guide ID")
input("Press Enter to con nue: ")
else:
print(Guides.loc[guide_id])

# Get the new informa on for the guide


new_name = input("Enter New Guide Name: ")
new_guide_Language = input("Enter New Guide Language: ")

# Update the guide informa on


Guides.loc[guide_id] = [new_name, new_guide_Language]
Guides.to_csv("Guides.csv")

print("Guide Informa on Modified Successfully")


input("Press Enter to con nue: ")
27

elif guide_op on == 3:
print("\t Removing an Exis ng Guide")
guide_id = input("Enter Guide ID: ")

if guide_id not in Guides.index:


print("No Such Guide Exist")
print("Check your Guide ID")
input("Press Enter to con nue: ")
else:
print(Guides.loc[guide_id])
remove_confirm = input("Do you want to remove this guide? (Y/N): ")
print(remove_confirm)
if remove_confirm.lower() in "y":
Guides.drop(guide_id, axis=0, inplace=True)
Guides.to_csv("Guides.csv")
print("Guide Removed Successfully")
input("Press Enter to con nue: ")
else:
print("Guide Not Removed")
input("Press Enter to con nue: ")
elif guide_op on == 4:
print("\t Viewing Guide Informa on")
guide_id = input("Enter Guide ID: ")

if guide_id not in Guides.index:


print("No Such Guide Exist")
print("Check your Guide ID")
input("Press Enter to con nue: ")
else:
print(Guides.loc[guide_id])
input("Press Enter to con nue: ")
else:
input("Back to Main Menu, Press Enter to con nue: ")

elif choice == 5:

# Data Visualiza on Op ons


print("\tData Visualiza on Op ons")
print("""
1) Line Piot - Number of Bookings for Each Tour Des na on
2) Bar Plot - Number of Customers in Each Address
3) Histogram - Distribu on of Booked Tours
4) Bar Plot - Bar Plot for Popular Tour Des na ons
""")
viz_op on = int(input("Choose Your Desired Data Visualiza on Op on: "))

if viz_op on == 1:
merged_data = pd.merge(Tours, Bookings, le _index=True, right_on='Tour_ID')
des na on_counts = merged_data['tour_des na on'].value_counts()
28

des na on_counts.sort_values(ascending=False).plot(kind='line',marker='*',line
style='-',color='r')
plt. tle('Number of Bookings for Each Tour Des na on')
plt.xlabel('Tour Des na on')
plt.ylabel('Nunber of Bookings')
plt.grid(True)
plt.show()

elif viz_op on == 2:
# Bar Plot
plt.figure(figsize=(8,4))

Customers.groupby('customer_address').size().sort_values(ascending=False).plot(kind='bar')
plt. tle('Number of Customers in Each Address')
plt.xlabel('Customer Address')
plt.ylabel('Nunber of Customers')
plt.show()

elif viz_op on == 3:
# histogram
plt.figure(figsize=(8,4))
Bookings['Tour_ID'].hist(bins=10,color='skyblue',edgecolor='black')
plt. tle('Distribu on of Booked Tours')
plt.xlabel('Tour ID')
plt.ylabel('Nunber of Bookings')
plt.show()
elif viz_op on == 4:
# Bar Ptot for Popular Tour Des na ons
plt.figure(figsize=(10, 6))

# Merge Tours and Bookings Dataframes


merged_data = pd.merge(Tours, Bookings, le _index=True, right_on='Tour_ID')

# Get the count of bookings for each tour des na on


des na on_counts = merged_data['tour_des na on'].value_counts()

# Plot the bar chart


des na on_counts.sort_values(ascending=False).plot(kind='bar',
color='skyblue')

# Customize the plot


plt. tle('Most Popular Tour Des na ons Based on Number of Bookings')
plt.xlabel('Tour Des na on')
plt.ylabel('Nunber of Bookings')
plt.x cks(rota on=45, ha='right') #Rotate x-axis labels for be er visibility
plt. ght_layout()
# Show the plot
plt.show()
elif choice == 6:
helpline_info = {
'Phone': '974325486',
29

'Email': '[email protected]',
'Address': 'Nagar Mahalla, GB Mall, 2nd floor, Bhurkunda'
}
print("\tHe1p1ine Informa on")
print(f"Phone: {helpline_info['Phone']}")
print(f"Email: {helpline_info['Email']}")
print(f"Address: {helpline_info['Address']}")
input("Press Enter to con nue: ")
elif choice ==7:
print("****** THANK YOU ******")
print("****** SEE YOU SOON ******")
break

else:
print("Invalid choice. Please select a valid op on.")

else:
print("Invalid Password!!!")
30

PROGRAM OUTPUT
Main Menu

Tour Menu

Tour Add
31

Add New Customer

Add New Booking


32

DATA VISUALIZATION
33

CONCLUSION
This Tours and Travels Management System is a simple desktop-based application
basically suitable for small organization. It has all basic elements which are used for
managing tour of small organization. We are successful in making the application where
we can insert, delete, update, search and analyse records as per need. This application also
provides a report including chart of tours records to analyse the performance.
We strongly believe that the implementation of this system will surely benefit the
organization.

BIBLIOGRAPHY
References and Bibliography:
 Informatics Practices Class-XII NCERT Publication
 Informatics Practices Class-XII by Preeti Arora
 Think Python by Allen B Downey
 Python for everybody by Charles Severance
 Learning MYSQL by Seyed M. M. Tahaghoghi
 MySQL in a nutshell by Russell J. T. Dyer
 www.geeksforgeeks.org
 www.ncert.co.in

You might also like