0% found this document useful (0 votes)
24 views23 pages

C Bus Booking System

Uploaded by

V L Nikitha
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
24 views23 pages

C Bus Booking System

Uploaded by

V L Nikitha
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 23

C++ Bus Booking System

OOPS with C++ Lab Project

PROJECT BY:

PRANEETH POTTA – AP23110011170


RISHITHA DANDA – AP23110011181
HARSHITH REDDY SADAVALA – AP23110011193
JATHIN BINABOYINA - AP23110011215
TABLE OF CONTENTS:
• Problem Description
• Objective(s)
• Outcomes(s)
• Code(with comments)
• Output test cases(screenshots)
• Conclusions
• References
PPROBLEM DESCRIPTION

Develop a Bus Ticket Reservation System to streamline the


process of booking and managing bus seats. The system should
manage multiple buses, allow customers to reserve and cancel
tickets, and ensure specific seating rules. Each bus should
maintain details about its schedule, seating capacity, and fare.
The primary functionality includes reserving seats with
conditions based on passenger age, validating user information,
viewing available buses, and displaying seat reservations in a
structured layout.
OBJECTIVE(S):

• The main objective of this project is to create a C++ console application for efficient bus
booking, enabling users to view routes, check seat availability, book, and cancel tickets with
real-time updates. This reduces manual errors and simplifies the booking process.​

• A secondary objective is to apply object-oriented principles for a modular, scalable code


structure, making future additions like user accounts or payment integration manageable.
OUTCOME(S):

This bus reservation system provides an easy way to book bus


tickets. Users can enter details like name, age, gender, and phone
number to reserve or cancel seats. The system shows real-time
seat availability, with priority seating for passengers over 60 in the
first 16 seats. Users can also view bus details such as driver
information, departure and arrival locations, and ticket fare. With
a simple menu, the system makes ticket booking
quick and convenient.
CODE (WITH COMMENTS):
#include <iostream>
#include <vector>
#include <string>
#include <iomanip>
#include <regex> // For phone number validation
#include <ctime> // For date and time
#include <sstream> // For string formatting
using namespace std;

// Class to represent a Passenger


class Passenger {
public:
string name;
int age;
string gender;
string phoneNumber;

Passenger(string name, int age, string gender, string phoneNumber)


: name(name), age(age), gender(gender), phoneNumber(phoneNumber) {}
};
// Class to represent a Bus
class Bus {
public:
string busNumber;
string driverName;
string departure;
string arrival;
int totalSeats;
float fare;
string date; // Date of journey
string time; // Time of journey
vector<Passenger*> passengers;
Bus(string busNum, string driver, string dep, string arr, int seats, float fare, string date, string time)
: busNumber(busNum), driverName(driver), departure(dep), arrival(arr), totalSeats(seats), fare(fare), date(date), time(time) {
passengers.resize(seats, nullptr);
}

// Display bus details including date and time


void displayBusInfo() const {
cout << "Bus Number: " << busNumber << "\nDriver: " << driverName
<< "\nDeparture: " << departure << "\nArrival: " << arrival
<< "\nDate: " << date << "\nTime: " << time
<< "\nTotal Seats: " << totalSeats << "\nFare per Ticket: " << fare << " Rs" << endl;
}

void displaySeats() const {


cout << "\nReservation Status for Bus " << busNumber << ":\n";
int seatsPerRow = 4;
int rows = (totalSeats + seatsPerRow - 1) / seatsPerRow;

for (int i = 0; i < rows; ++i) {


for (int j = 0; j < 2; ++j) {
int seatIndex = i * seatsPerRow + j;
if (seatIndex < totalSeats) {
cout << "[" << (passengers[seatIndex] == nullptr ? " " : "X") << "] ";
} else {
cout << " ";
}
}
cout << " | ";

for (int j = 2; j < 4; ++j) {


int seatIndex = i * seatsPerRow + j;
if (seatIndex < totalSeats) {
cout << "[" << (passengers[seatIndex] == nullptr ? " " : "X") << "] ";
}
}

cout << "\n";


}
cout << "\n[X] = Reserved | [ ] = Available\n";
}
bool reserveSeat(int seatNumber, const string& passengerName, int age, const string& gender, const string& phoneNumber) {
if (seatNumber < 1 || seatNumber > totalSeats) {
cout << "Invalid seat number.\n";
return false;
}
if (passengers[seatNumber - 1] != nullptr) {
cout << "Seat already reserved.\n";
return false;
}

regex phoneRegex("\\d{10}");
if (!regex_match(phoneNumber, phoneRegex)) {
cout << "Invalid phone number. Please enter a valid 10-digit phone number.\n";
return false;
}

passengers[seatNumber - 1] = new Passenger(passengerName, age, gender, phoneNumber);


cout << "Seat " << seatNumber << " reserved for " << passengerName << ".\n";
displayTicketDetails(seatNumber);
return true;
}
bool cancelReservation(int seatNumber) {
if (seatNumber < 1 || seatNumber > totalSeats) {
cout << "Invalid seat number.\n";
return false;
}
if (passengers[seatNumber - 1] == nullptr) {
cout << "No reservation found for seat " << seatNumber << ".\n";
return false;
}
cout << "Reservation for seat " << seatNumber << " cancelled.\n";
delete passengers[seatNumber - 1];
passengers[seatNumber - 1] = nullptr;
return true;
}
void displayTicketDetails(int seatNumber) const {
if (seatNumber < 1 || seatNumber > totalSeats || passengers[seatNumber - 1] == nullptr) {
cout << "No passenger details found for seat " << seatNumber << ".\n";
return;
}

Passenger* p = passengers[seatNumber - 1];


cout << "\n--- Ticket Details ---\n";
cout << "Bus Number: " << busNumber << "\n";
cout << "Passenger Name: " << p->name << "\n";
cout << "Age: " << p->age << "\n";
cout << "Gender: " << p->gender << "\n";
cout << "Phone Number: " << p->phoneNumber << "\n";
cout << "Seat Number: " << seatNumber << "\n";
cout << "Departure: " << departure << " | Arrival: " << arrival << "\n";
cout << "Date: " << date << "\nTime: " << time << "\n";
cout << "Fare: " << fare << " Rs\n";
cout << "-----------------------\n";
}
};
// BusManager class to handle multiple buses
class BusManager {
private:
vector<Bus> buses;

public:
BusManager() {
// Adding default buses
buses.emplace_back("1", "Jathin", "vijayawada", "hyderabad", 60, 500.0, "2024-10-25", "10:00 AM");
buses.emplace_back("2", "Olive", "mangalagiri", "hyderabad", 60, 400.0, "2024-10-25", "02:00 PM");
buses.emplace_back("3", "Harshith", "guntur", "hyderabad", 60, 600.0, "2024-10-25", "06:00 PM");
}
// Reserve tickets based on bus availability for a given date and time
void reserveTicket() {
if (buses.empty()) {
cout << "No buses available.\n";
return;
}

string busNumber, passengerName, gender, phoneNumber, inputDate, inputTime;


int numTickets, age, seatNumber;

cout << "Enter travel date (YYYY-MM-DD): ";


cin >> inputDate;
cout << "Enter travel time (HH:MM AM/PM): ";
cin.ignore();
getline(cin, inputTime);

for (Bus& bus : buses) {


if (bus.date == inputDate && bus.time == inputTime) {
cout << "Enter bus number: ";
cin >> busNumber;

if (bus.busNumber == busNumber) {
cout << "Enter number of tickets to book: ";
cin >> numTickets;
for (int i = 0; i < numTickets; ++i) {
cout << "Enter passenger name: ";
cin.ignore();
getline(cin, passengerName);
cout << "Enter age: ";
cin >> age;
cout << "Enter gender (M/F): ";
cin >> gender;
cout << "Enter 10-digit phone number: ";
cin >> phoneNumber;

int seatLimit = (age > 60) ? 16 : bus.totalSeats;


cout << "Enter seat number (1-" << seatLimit << "): ";
cin >> seatNumber;

if (!bus.reserveSeat(seatNumber, passengerName, age, gender, phoneNumber)) {


--i;
}
}
return;
}
}
}

cout << "No buses available for the entered date and time.\n";
}

void cancelTicket() {
if (buses.empty()) {
cout << "No buses available.\n";
return;
}
string busNumber, inputDate, inputTime;
int seatNumber;

cout << "Enter travel date (YYYY-MM-DD): ";


cin >> inputDate;
cout << "Enter travel time (HH:MM AM/PM): ";
cin.ignore();
getline(cin, inputTime);

for (Bus& bus : buses) {


if (bus.date == inputDate && bus.time == inputTime) {
cout << "Enter bus number: ";
cin >> busNumber;

if (bus.busNumber == busNumber) {
cout << "Enter seat number: ";
cin >> seatNumber;
bus.cancelReservation(seatNumber);
return;
}
}
}

cout << "No bus available for the entered date and time.\n";
}

void displayBuses() const {


if (buses.empty()) {
cout << "No buses available.\n";
return;
}
cout << "\nAvailable Buses:\n";
for (const Bus& bus : buses) {
bus.displayBusInfo();
cout << "-------------------------------\n";
}
}

void viewBusSeats() const {


if (buses.empty()) {
cout << "No buses available.\n";
return;
}

string busNumber, inputDate, inputTime;


cout << "Enter travel date (YYYY-MM-DD): ";
cin >> inputDate;
cout << "Enter travel time (HH:MM AM/PM): ";
cin.ignore();
getline(cin, inputTime);

for (const Bus& bus : buses) {


if (bus.date == inputDate && bus.time == inputTime) {
cout << "Enter bus number: ";
cin >> busNumber;

if (bus.busNumber == busNumber) {
bus.displaySeats();
return;
}
}
}
cout << "No bus available for the entered date and time.\n";
}
};
// Main function
int main() {
BusManager busManager;
int choice;

do {
cout << "\n--- Bus Ticket Reservation System ---\n";
cout << "1. Reserve a Ticket\n";
cout << "2. Cancel a Reservation\n";
cout << "3. Display Available Buses\n";
cout << "4. View Bus Seats\n";
cout << "5. Exit\n";
cout << "Enter your choice: ";
cin >> choice;

switch (choice) {
case 1:
busManager.reserveTicket();
break;
case 2:
busManager.cancelTicket();
break;
case 3:
busManager.displayBuses();
break;
case 4:
busManager.viewBusSeats();
break;
case 5:
cout << "Exiting the system.\n";
break;
default:
cout << "Invalid choice! Please try again.\n";
}
} while (choice != 5);

return 0;
}
OUTPUT TEST CASES(SCREENSHOTS):
OUTPUT TEST CASES(SCREENSHOTS):
OUTPUT TEST CASES(SCREENSHOTS):
OUTPUT TEST CASES(SCREENSHOTS):
OUTPUT TEST CASES(SCREENSHOTS):
OUTPUT TEST CASES(SCREENSHOTS):
CONCLUSION:

The system is a structured solution for managing


basic bus reservations, with key features like date
and time-based bus selection, seat reservation, and
cancellation. As technology advances, we are
continuously exploring ways to enhance the system's
capabilities, such as integrating AI-driven
recommendations, dynamic pricing, and real-time
updates to provide an even more seamless
experience for our passengers and operators.
REFERENCES:

This project was developed based on concepts


learned from the YouTube and chat gpt.The
channel provided step-by-step guidance
including class management and reservation
system concepts.

https://youtu.be/KoyJimghxWA?feature=shared

You might also like