[go: up one dir, main page]

0% found this document useful (0 votes)
521 views57 pages

Event Management System

Download as pdf or txt
Download as pdf or txt
Download as pdf or txt
You are on page 1/ 57

1.

INTRODUCTION

Event Management System automates the booking function for an event. The objective of this system is to
manage all the data of the event activities & provide services according to them. This system is user friendly
& the whole procedure is understandable for everyone. In the Users profile, login with details & book an
event according to their budget. This profile contains their name, booking id, event date, address & contact
details. It tracks all users' information so it is required to sign-up to book an event. It also needs a 30%
advance payment & also user can pay in this system by providing bank details. The purpose is to manage
various functions and processes necessary to operate the data efficiently. Users can easily search the guest
& user details from the menu. One can contact the admin through “About Us”. It carries out an operation
in a smooth & effortless manner so that users can get services without any difficulty.

1
2. OBJECTIVE

Event Management system provides admin all users information like names, addresses, and contact details.
Provides the search facilities based on several factors of the user. This software helps to book an event
online, which is user-friendly. It reduces the hardships & increases the efficiency of managing an event
activity. It deals with the task of the total cost according to the booked event. It also manages the payment
details & transactions online with account details. It provides a quality service with the event surveys.
Admins job lessens because it records all the status of the user & events. A summarized user list can be
viewed by monitoring the event booking details. It also provides admin details & shows the information
and description of the event organizers.

2
3. TOOLS AND ENVIRONMENT

My project is only done with C++. The programming language, C++ has popular uses in: game
programming, software engineering, data structures, developing browsers, operating systems, web
development, compiler writing, graphics designing, and desktop applications and so on.

Tools Used Hardware Tools


• Processor intel(i3+)/AMD
• SSD/HDD
• RAM (4GB+)
• GPU not needed
Software Tools
• Visual Studio
• Dev C++
Files & Tools
• Microsoft Word
• Microsoft Office
• Notepad 0

3
4. ANALYSIS DOCUMENT

4.1 ER Diagram
An Entity Relationship Diagram (ERD) is a type of flowchart that illustrates how “entities” such as people,
objects or concepts relate to each other within a system. ER Diagrams are most often used to design or
debug relational databases in the fields of software engineering, business information systems, education
and research. ER diagrams use a defined set of symbols such as rectangles, diamonds, ovals and connecting
lines to depict the interconnectedness of entities, relationships and their attributes. They mirror grammatical
structure, with entities as nouns and relationships as verbs. ER diagrams are related to data structure
diagrams (DSDs), which focus on the relationships of elements within entities instead of relationships
between entities themselves. ER diagrams also are often used in conjunction with data flow diagrams
(DFDs), which map out the flow of information for processes or systems.

• Entities: An Entity may be an object with a physical existence – a particular person, car, house, or
employee – or it may be an object with a conceptual existence – a company, a job, or a university
course.
• Relationship: A relationship defines how two or more entities are connected or associated with
each other. It describes the interaction or association between entities. Relationships are established
based on business rules or real-world connections between entities.
• Attributes: An attribute is a characteristic or property that describes an aspect of an entity.
Attributes provide details about the entities they belong to, helping to define and differentiate those
entities. Attributes can be associated with various types of entities, such as objects, people, events,
or concepts.

The ER Diagram require the use of the following symbols:

4
Modify
Event
Event Date Delete
Contact no Event
Add
Total Guest View Event
Address Event
User Advance pay Admin

Name

Costing
Booking ID

Many to
many

Many to one

Venue
Event Total
numbe Guest
r
Booked Event Manage
by

Total
Cost
Time
Type

ER Diagram of Event Management System

5
4.2 Data Flow Diagram (DFD)
Graphical description of a system’s data and how the processes transform the data is known as Data Flow
Diagram (or DFD).

Unlike detail flow charts, DFDs do not supply detailed descriptions of modules but graphically describe a
system’s data and how the data interact with the system.

To construct Data Flow Diagram, we use:

• Arrows

• Circles

• Open-ended boxes, and

• Squares

6
An arrow identifies data flow-data in motion. It is a pipeline through which information flows. Like the
rectangles in flow charts, circles stand for a process that converts data into information. An open-ended box
represents a data store-data at rest, or a temporary repository of data. A square defines a source or
destination of a system.

The following seven rules govern construction of Data Flow Diagrams (DFDs):
• Arrows should cross each other.
• Squares, circles, and files must bear names.
• Decomposed data flows must be balanced (all data flows on the decomposed diagram must reflect
flows in the original diagram).
• No two data flows, squares, or circles can have the same name.
• Draw the data flow around the outside the diagram.
• Choose meaningful names for data flows, processes and the data stores. Use strong verbs followed
by nouns.
• Control information such as record counts, passwords, and validation requirements are not pertinent
to a data flow diagram.

Book Event Add Event

Event
User Management Admin
View Event
System View Event

Costing and Modify Event


payment

4.2.a DFD of Event Management System (LEVEL 0)

7
request
Admin Login 1

Resp.

Event Events
Data 2

add

view Add
event
2.1

Select evnt

Delete
Event
check evnt 2.2

Select evnt

Modify
Event
View evnt 2.3

Select evnt
Select evnt
View
Event
2.4
view evnt

Custom
Customer er
Event 3

View
Event
3.1

8
Event no

gateway

Book
Payment
Event
3.2 Resp.

Modify
Cancel Booked
Event event 3.3
3.4

Bill 4

search

Generat
Purchase
e Bill
4.1
Resp.

4.2.b Data Flow Diagram of Event Management System (LEVEL1)

9
4.3 Use case diagram

4.3.a Use Case

Explanation of Using Use Case Diagram in Event Management System


• Actor

Here we have used actor named as Admin & User. A user of a system in a

particular role, it can be human or an external object can be an actor.

• System Boundary

System Boundary separates the event management system from the

external actors. It is rectangular shaped.

• Connector Description
10
Connector Description shows the relationship of an actor to a use case. In

this diagram, it is showing that Manage Events & Admin are connected.

• Use Case shapes

The UML places inside the subsystem boundary. It brings Actor shapes to the outside of the subsystem
boundary.

• Include

Include can be used everywhere in the system, it is basically the reuse of functionality. Include depicts a
dependency on another use case.

• Generalization

Generalization shows one class (subclass) inherits from another class (superclass). It indicates that one use
case is simply a special kind of another.

• Extend

An extend relationship indicates that one use case is a variation of another. Extend is labeled as
‘<<extend>>’ with an arrow toward the base case.

11
4.4 Data Dictionary
A data dictionary provides a detailed description of data elements used in a project, including their names,
definitions, data types, and any constraints.

Here's a simplified data dictionary for the Event Management System project:

• Contact Entity
Field Name Data Type Description
Id Int Unique identifier for each contact.
Name varchar Name of the contact.
phoneNumber varchar Phone number of the contact.

• Methods/Functions

1. addEventFunction
Input Data Type Description
Event number integer Unique event number
Type string Type of the hall
Total guest integer Total capacity
Venue string Venue of the hall
Time string Time of availability
Minimum cost integer Non refundable cost

Output Data Type Description


Void No specific output.

2. ViewEventFunction
Input Data Type Description
Void No specific input.

Output Data Type Description


Void Displays the list of all Evemts in the system.

3. DeleteEvent Function
Input Data Type Description
Event Number integer Number of event to search for.

12
Output Data Type Description
void Delete the event of the given event number

4. modifyEventt Function
Input Data Type Description
Event number varchar Number of the Event to modify

Output Data Type Description


void Modify the given event

User:-
5. ViewEventt Function
Input Data Type Description
Total guest integer User approximate guests

Output Data Type Description


void Show the Events available according to the users guest count

6. BookEvent Function
Input Data Type Description
Event number integer To identify the particular Event

Output Data Description


Type
void Allow user to make a booking of the event by paying minimum
amount
Booking varchar Generate the booking of the user
id

7 FinalBooking Function
Input Data Type Description
Booking id varchar Will check if user had make a booking or not
Account no. integer For the payment purpose

Output Data Type Description


void Show the total bill and allow the user to make payment

13
8. CancelEvent Function
Input Data Type Description
Booking id varchar Will allow user to cancel the booking

Output Data Type Description


void Will cancel the booking and will delete the booking id

9. PaymentInfo Function
Input Data Type Description
Booking id varchar Will search the bill for the given booking id

Output Data Type Description


void Will show the bill and amount of the booking if available

14
5. PROGRAM CODE

#include <iostream>
#include <cctype>
#include <string>
#include <limits>
#include <regex>
#include <fstream>
#include <cmath>
#include <iomanip>

using namespace std;

constexpr int MAX = 100;

class User
{
public:
char name[1000];
char address[1000];
int phone;
int totalPaid;
char date[20];
float payment_advance;
string booking_id;
};

class Event
{
public:

15
string ven,stype;
int times;
int guest;
int EventNumber;
int cost;
int info;
int binfo=0;
class User usr;
class Event addEvent(int);
void modifyEvent(int);
void deleteEvent(int);
void displayEvent(Event);
};

class Event Events[MAX];


int cnt = 0;

bool isAlphaString(const std::string& str) {


// Regular expression pattern for a valid name (alphabets and spaces)
std::regex pattern("^[A-Za-z ]+$");
return std::regex_match(str, pattern);
}

Event Event :: addEvent(int ev){


class Event sEvent;
sEvent.EventNumber = ev;

cout<<"\n Maximum Guests: "; //maximum capacity


while (!(cin >>sEvent.guest ))
{
cin.clear();

16
cout<<"\n Maximum Guests: ";
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}

cout << "\n Hall Available (in minutes) for: "; // hall available
while (!(cin >> sEvent.times))
{
cout << "\n Hall Available (in minutes) for: ";
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}

cout << "\n Enter Hall Name (without spaces): ";


cin>>sEvent.ven;

cout<<"\n Enter Hall type (without spaces): ";


cin>>sEvent.stype;

// do {
// std::cout<<" Hall name: ";
// std::getline(std::cin, sEvent.ven);

// // if (!isAlphaString(sEvent.ven)) {
// // std::cout<<" Hall name: " << std::endl;
// // }
// } while (!isAlphaString(sEvent.ven));

cout << "\n Minimum Cost: "; //minimum cost


while (!(cin >> sEvent.cost))
{
cout << "\n Minimum Cost ";

17
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}

sEvent.info =0;
cout << "\n Update Successfully!";
return sEvent;

void Event::displayEvent(Event tempEvent){


// Display implementation remains unchanged
if (tempEvent.info ==0){
cout<<"\n\n Event Information \n";
cout<<"\n Event Number : "<<tempEvent.EventNumber;
cout<<"\n Total Guest : "<<tempEvent.guest;
cout<<"\n Total Time : "<<tempEvent.times;
cout<<"\n Venue type : "<<tempEvent.stype;
cout<<"\n Venue Name : " <<tempEvent.ven;
cout<<"\n Cost : "<<tempEvent.cost;//Your Preferred Venue For Booking
cout<<"\n----------------------------------\n";}

void Event::deleteEvent(int ev){


int i, found = 0;
for (i = 0; i < cnt; i++)
{
if (Events[i].EventNumber == ev)
{
found = 1;
if (Events[i].info ==2){

18
found=0;}
break;
}

}
if (found == 1)
{
cnt--;
Events[i].info = 2;
Events[i].EventNumber = 0;
Events[i].guest =0;
Events[i].cost =0;
Events[i].stype = "null";
Events[i].times=0;
Events[i].ven = "null";

// Display a message indicating successful deletion

cout << "\n\t\t\t\t\t--------Event Deleted Successfully--------\n";


std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::cin.get();

}
else
{
cout << "\n Event not Found. ";
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::cin.get();
}
}

19
void Event :: modifyEvent(int ev){
int found =0;
int j;
for (int i = 0; i < cnt; i++)
{
if (Events[i].EventNumber == ev)
{
found = 1;
if (Events[i].info ==2){
found=0;}
j=i;
break;
}

}
if (found == 1)
{
Events[j]=addEvent(ev);
Events[j].info=0;
}
else
{
cout << "\n Event not Found. ";
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::cin.get();
}
}

class EventMen : protected Event


{
public:
void checkIn();

20
void CancelBooking(string);
void searchUser(char *);
void checkOut();
void PaymentInfo(string);
};

void EventMen :: checkIn(){


int found=0, ev,j;
string ph,uname;
cout<<"\n Enter Event number you want to book: ";
while (!(cin >> ev))
{
cout<<"\n Enter Event number you want to book: ";
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
for(int i=0;i<cnt;i++){
if((Events[i].EventNumber ==ev) && (Events[i].info==0)){
found =1;
j=i;
break;
}

}
if(found==1){

system("cls");
cout<<"\n\t\t\t\t___________ Book Event ___________\n\n";

cout<<"\n\n Enter User Name(First Name): ";


cin>>Events[j].usr.name;
cout<<"\n\n Enter Address (only city): ";

21
cin>>Events[j].usr.address;
cout<<"\n\n Enter Phone: ";
while (!(cin >> Events[j].usr.phone))
{
cout<<"\n\n renter phone number: ";
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
cout<<"\n\n Enter Date for Event: ";
cin>>Events[j].usr.date;
cout<<"\n\n Pay: "<<Events[j].cost;
cout<<"\n\n Enter Advance Payment (non refundable*): ";
cin>>Events[j].usr.payment_advance;
Events[j].info=1;
Events[j].usr.booking_id = Events[j].usr.name + to_string(Events[j].EventNumber);
//booking id generated
cout<<"\n Your Booking Id : "<< Events[j].usr.booking_id;
cout<<"\n\n Remember the booking Id during the Final Booking ";
cout<<"\n\n User Logged-in Successfully..";

ofstream outFile("E:\\SUDIPTO\\event management system\\booked_info.txt", ios::app); //


Open the file in append mode
if (outFile.is_open())
{
outFile << "Booking ID: " << Events[j].usr.booking_id << "\n";
outFile << "User Name: " << Events[j].usr.name << "\n";
outFile << "Address: " << Events[j].usr.address << "\n";
outFile << "Phone: " << Events[j].usr.phone << "\n";
outFile << "Date: " << Events[j].usr.date << "\n";
outFile << "Advance Payment: " << Events[j].usr.payment_advance << "\n";
outFile << "----------------------------------\n";
outFile.close();
}
22
else
{
cout << "\n Error opening the file for writing.";

}
}else{
cout<<"Sorry Event either booked or not available";
return;
}

} //2

class Account{
int acc_no;
int amount;

public:
Account()
{
cout << "\n\n Enter Account No : ";
while (!(cin >> acc_no))
{
cout << "Invalid input. Please enter a valid integer account no.: \n";
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}

amount = 0;
}

23
void deposit(int num,int amnt)
{
// deposit implementation remains unchanged
if(num == acc_no)
{
string date;
cout<<"\n Enter Amount : ";
while (!(cin >> amount))
{
cout << "Invalid input. Please enter a valid integer amount: \n";
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}

if (amnt > amount){


cout<<"Please Pay The Full Amount";
deposit(num,amnt);
return;
}
cout<<"\n Transferred To Account No 211224. "<< endl;
cout<<"\n Branch Name : XY Bank"<< endl;
cout<<"\n Transaction Date : ";
cin>>date;
cout<<endl;
cout<<" Event Confirmed, Thank You :)! "<< endl;
}
else
cout<<"\n Incorrect account number. Try Again. "<<endl;
}
};

void EventMen::checkOut(){

24
int i,found=0,TotalGuests,TotalTime,j,amnt;
string id;
cout<<"\n\n Enter booking id: ";
while (!(cin >> id))
{
cout << "Invalid input. Please enter a valid integer for Event Number: \n";
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
double billAmount=0;
string p;
for(i=0; i<cnt; i++)
{
if(Events[i].info==1 && Events[i].usr.booking_id==id)
{
found=1;
break;
}
else{
cout<<"\n\n No booking available on the booking id "<<id;
}
}
if(found==1)
{
system("cls");
cout<<"\n\n\t\t\t\t _________ Event Details _________ ";
cout<<"\n\n\n Enter Number Of Guest: ";
while (!(cin >> TotalGuests))
{
cout<<"\n\n\n renter Number Of Guest: ";
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');

25
}

cout<<"\n\n Total Time(In Minutes) : ";


while (!(cin >> TotalTime))
{
cout<<"\n\n Renter Total Time(In Minutes) : ";
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}

cout <<"\n\n Total Table Booked : "; //one table = minimum 6 person
j = ceil(TotalGuests/6);
cout << j <<endl;
double cp;
double TotalStaff, CostH, CostM, OneStaffCost,X, TotalFoodCost, AverageCost,
DepositAmount,TotalCost;
double PerHourCost = 30.00;
double PerMinCost = 0.50;
double CostOfMeal = 100.00;
double CarParking = 1000.00;
double Lighting = 1500.00;
// Total Staff Number
X = TotalGuests / 10;
TotalStaff = ceil(X);
// One Staffs Cost
CostM = (TotalTime % 60) * PerMinCost;
CostH = (TotalTime / 60) * PerHourCost;
OneStaffCost = CostM+CostH;
// Cost of Food
TotalFoodCost = (TotalGuests * CostOfMeal) ;

// Average Cost Per Person

26
// AverageCost = (TotalFoodCost / TotalGuests);
AverageCost = (TotalGuests != 0) ? (TotalFoodCost / TotalGuests) : 0;

// Total Cost
TotalCost = TotalFoodCost + (OneStaffCost * TotalStaff)+ Lighting + CarParking;
// Advance (30%) Amount
DepositAmount = TotalCost * (.30);
cout<<"\n\n\t\t\t\t __________Event Costing Details__________\n\n";
cout<<"\n\n User Name : "<<Events[i].usr.name;
cout<<"\n\n Event Number : "<<Events[i].EventNumber;
cout<<"\n\n Address : "<<Events[i].usr.address;
cout<<"\n\n Phone : "<<Events[i].usr.phone;
cout<<"\n\n Number Of Staffs : " << TotalStaff << fixed << setprecision(3) << endl<< endl;
cout<<" Average Cost (Per Staff) : " << OneStaffCost <<endl<< endl;
cout<<" Total Food Cost : "<< TotalFoodCost << endl <<endl;
cout<<" Average Cost (Per Person) : " << AverageCost<<endl<<endl;
cout<<" Total Amount : " << TotalCost << endl<< endl;
cout<<" To reserve the event , Please Deposit 30% of Total Amount including VAT" << endl<<
endl;
cout<<" Deposit Needed : " << DepositAmount << endl<< endl;
cout<<" Advance Paid: "<<Events[i].usr.payment_advance<<" /-"<<endl;
cout<<"\n Total Payable: "<<TotalCost - Events[i].usr.payment_advance<<"/- only";
amnt = TotalCost - Events[i].usr.payment_advance;
Events[i].usr.totalPaid = amnt;
Events[i].binfo =1;
Account acc;
int num;
cout<<"\n Re-enter Account No : ";
while (!(cin >> num))
{
cout << "Invalid input. Please enter a valid integer for Account no.: \n";
cin.clear();

27
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}

acc.deposit(num,amnt);
cout<< endl<<endl;
}

ofstream outFile("E:\\SUDIPTO\\event management system\\Confirm_booking_info.txt",


ios::app); // Open the file in append mode
if (outFile.is_open())
{
outFile << "Booking ID: " << Events[i].usr.booking_id << "\n";
outFile << "Event number: " << Events[i].EventNumber << "\n";
outFile << "User Name: " << Events[i].usr.name << "\n";
outFile << "Address: " << Events[i].usr.address << "\n";
outFile << "Phone: " << Events[i].usr.phone << "\n";
outFile << "Date: " << Events[i].usr.date << "\n";
outFile << "Venue: " << Events[i].ven<< "\n";
outFile << "type: " << Events[i].stype << "\n";
outFile << "Payment Done: "<< amnt << "\n";
outFile << "----------------------------------\n";
outFile.close();
}
else
{
cout << "\n Error opening the file for writing.";
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::cin.get();
}
} //3

28
void EventMen::PaymentInfo(string id) {
int j,found=0;
for(int i=0; i<cnt; i++)
{
if(Events[i].binfo==1 && Events[i].usr.booking_id==id)
{
found=1;
break;
j=i;
}
else{
cout<<"\n\n No booking available on the booking id "<<id;
}
}
if(found==1)
{
cout<<"\n Name: "<<Events[j].usr.name;
cout<<"\n Booking ID: "<<Events[j].usr.booking_id;
cout<<"\n Event Number: "<<Events[j].EventNumber;
cout<<"\n User Address: "<<Events[j].usr.address;
cout<<"\n User phone number: "<<Events[j].usr.phone;
cout<<"\n Event Date: "<<Events[j].usr.date;
cout<<"\n Event Venue: "<<Events[j].ven;
cout<<"\n Event type: "<<Events[j].stype;
cout<<"\n Total Paid: "<<Events[j].usr.totalPaid;
cout<<"\n ----------------------------------------\n";
}
}

void EventMen::CancelBooking(string id){


int j,found=0;
for(int i=0;i<cnt;i++){

29
if((Events[i].usr.booking_id ==id) && (Events[i].binfo==1)){
found =1;
j=i;
break;
}
else{
cout<<"Sorry Event either booked or not available";
return;
}
}
if(found==1){
ofstream outFile("E:\\SUDIPTO\\event management system\\Cancel_booking_info.txt",
ios::app); // Open the file in append mode
if (outFile.is_open())
{
outFile << "Booking ID: " << Events[j].usr.booking_id << "\n";
outFile << "Event number: " << Events[j].EventNumber << "\n";
outFile << "User Name: " << Events[j].usr.name << "\n";
outFile << "Address: " << Events[j].usr.address << "\n";
outFile << "Phone: " << Events[j].usr.phone << "\n";
outFile << "Date: " << Events[j].usr.date << "\n";
outFile << "Venue: " << Events[j].ven<< "\n";
outFile << "type: " << Events[j].stype << "\n";
outFile << "Payment Done: "<< Events[j].usr.totalPaid << "\n";
outFile << "----------------------------------\n";
outFile.close();
}
else
{
cout << "\n Error opening the file for writing.";
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::cin.get();

30
}

Events[j].binfo=0;
Events[j].info =0;
Events[j].usr.booking_id="null";
Events[j].usr.phone=0;
Events[j].usr.totalPaid=0;
Events[j].usr.payment_advance=0;
cout<<"YOUR BOOKING HAS BEEN CANCELLED";

}
}

void Aboutus(){
cout<<"\n\t\t\t\t About us \n\n";
cout<<"\n Celebrate any occassion with us to make your event more special in reasonale price.\n
You can also customize the decors.\n We work on any venue you prefer "<<endl;
cout<<" Payment Methods : UPI/Net Banking; \n Or Your Nearest XY Bank"<<endl;
cout<<" Contact NOW Email : eventmanagement11@gmail.com"<<endl;
cout<<" Phone: 01234567890" <<endl;
cout<<" Address: New Delhi, India";
cout<<"\n Saturday-Thursday \n Opening & Closing Hour : 9AM To 9PM"<<endl;
cout<<" Appointments: facebook.com"<<endl;
cout<<" Thank You :) ! "<<endl<<endl;
}

bool checkNum(char check){

if (isdigit(check)){
return true;
}

31
else if (isalnum(check)){
return false;
}
else{
return false;
}
}

bool authenticateAdmin()
{
string username, password;

cout << "\n\t\t\t\t _________ Admin Authentication _________\n";


cout << "\n Enter Admin Username: ";
cin >> username;
cout << " Enter Admin Password: ";
cin >> password;

return (username == "admin" && password == "admin123");


// return true;
}

bool isSpecialChar(char ch) {


return !std::isalnum(ch) && !std::isspace(ch);
}

int main()
{
class Event Event;

32
class EventMen hm;
int f=0 ,intVal,ev,i,flag =0,tguest;
string opt,id;
char ch,val;
char nme;
char uname[1000];
do {
system("cls");
cout << "\t\t\t\t -------------------------------" << endl;
cout << "\t\t\t\t | EVENT MANAGEMENT SYSTEM |" << endl;
cout << "\t\t\t\t -------------------------------" << endl;
cout << "\n--------------------------------------------------------------------------------------------------------------
----------\n";
cout << "\n-------------------------------------------- Event Details -----------------------------------------------
--------------" << endl;
cout << "\n--------------------------------------------------------------------------------------------------------------
----------" << endl;

cout << "\n\t\t\t\t 1. Admin";


cout << "\n\t\t\t\t 2. User";
cout << "\n\t\t\t\t 3. Exit";
cout << "\n\n Enter Option: ";
cin >> opt;
val = opt[0];
intVal = val - '0';

if((isalnum(val))){
switch (intVal)
{
case 1:

if (authenticateAdmin()) {
do

33
{
// system("cls");
cout << "\n\t\t\t\t _________ Admin Menu _________";
cout << "\n\n 1. Add Event ";
cout << "\n 2. View All Events ";
cout << "\n 3 Delete Events";
cout << "\n 4. Modify Event ";
cout << "\n 5. Exit";
cout << "\n\n Select Option: ";
cin >> opt;
val = opt[0];
intVal = val - '0';

if((isalnum(val))){
switch (intVal)
{
case 1:
cout<<"Enter unique Event number: ";
while (!(cin >> ev))
{
cout << "Enter unique Event number: ";
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
for(int i=0;i<cnt;i++){
if(Events[i].EventNumber ==ev){
flag =1; // event presetn
}
if(Events[i].info ==2){
flag =2; // event deleted
}
}

34
if (flag ==1){
cout<<"Event with that number is already present. \n\n Enter unique number: ";
flag =0;
}
else{
Events[cnt]=Event.addEvent(ev);
cnt++;
}

break;
case 2:
if (cnt == 0)
{
cout << "\n Events data is not available.\n\n Please add the Events first.";
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::cin.get();
}
else{
for(int i=0;i<cnt;i++){
Event.displayEvent(Events[i]);
}
}
break;

case 3:
if(cnt==0)
{
cout<<"\n Events are not available.\n\n Please add the Events first.";
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::cin.get();
}
else

35
{
cout<<"\n\n Enter Event number you want to delete : ";
while (!(cin >> ev))
{
cout << "Invalid input. Please enter a valid integer for Event Number: \n";
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
Event.deleteEvent(ev);
}
break;
case 4:
if(cnt==0)
{
cout<<"\n Events are not available.\n\n Please add the Events first.";
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::cin.get();
}
else{
cout<<"\n\n Enter Event number you want to modify : ";
while (!(cin >> ev))
{
cout << "\n Invalid input. Please enter a valid integer for Event Number: ";
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
Event.modifyEvent(ev);
}
break;

case 5:
cout << "\n Exiting Admin Menu";

36
break;
default:
cout << "\n\n Please Enter correct option ";
break;
}
} } while (intVal != 5);
}

else
{
cout << "\n Authentication failed. Exiting...";

break;
case 2:

do
{
system("cls");
cout<<"\t\t\t\t -------------------------------"<<endl;
cout<<"\t\t\t\t | EVENT MANAGEMENT SYSTEM |"<<endl;
cout<<"\t\t\t\t -------------------------------"<<endl;
cout<<"\n------------------------------------------------------------------------------------------------------------
------------\n";
cout<<"\n-------------------------------------------- Event Details ---------------------------------------------
----------------"<<endl;
cout<<"\n------------------------------------------------------------------------------------------------------------
------------"<<endl;

cout<<"\n\t\t\t\t 1. View Events";


cout<<"\n\t\t\t\t 2. Book Event";

37
cout<<"\n\t\t\t\t 3. Final Booking ";
cout<<"\n\t\t\t\t 4. Payment Info";
cout<<"\n\t\t\t\t 5. Cancel booking";
cout<<"\n\t\t\t\t 6. About us";
cout<<"\n\t\t\t\t 7. Exit ";
cout<<"\n\n Enter Option: " ;
cin>>opt;
val = opt[0];
intVal = val - '0';

if((isalnum(val))){
switch(intVal)
{
case 1:
if(cnt==0)
{
cout<<"\n Events data is not available.\n\n ";
}
else{
cout<<"Enter your total guest: ";
while (!(cin>> tguest))
{
cout << "Invalid input. Please enter a valid integer for Total Guest: \n";
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
for(int i=0; i<cnt;i++){
if( (0<=tguest && 100>=tguest) && (0<=Events[i].guest && 100>=Events[i].guest) &&
(Events[i].info == 0)){
Event.displayEvent(Events[i]);
f++;
}

38
else if((101<=tguest && 500>=tguest) && (101<=Events[i].guest &&
500>=Events[i].guest) && (Events[i].info == 0)){
Event.displayEvent(Events[i]);
f++;
}
else if((501<=tguest) && (501<=Events[i].guest) && (Events[i].info == 0)){
Event.displayEvent(Events[i]);
f++;
}

}
if(f==0){
cout<<" \n Sorry no Events available for "<<tguest<<" number of guests";
}

break;
case 2:
if(cnt==0)
{
cout<<"\n Events are not available.\n\n ";

}
else
hm.checkIn();
break;

case 3:
if(cnt==0)
{
cout<<"\n Events are not available.\n\n .";

39
}
else
{

hm.checkOut();
}
break;
case 4:
if(cnt==0)
{
cout<<"\n No Events are Booked.\n\n .";
}
else
{
cout<<"\n\n Enter booking id: ";
while (!(cin >> id))
{
cout << "Invalid input. Please enter a valid integer for Event Number: \n";
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
hm.PaymentInfo(id);
}

break;
case 5:
if(cnt==0){
cout<<"\n No Events are Booked.\n\n .";
}
else{
cout<<"\n\n Enter booking id: ";

40
while (!(cin >> id))
{
cout << "Invalid input. Please enter a valid integer for Event Number: \n";
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
hm.CancelBooking(id);
}

break;
case 6:
Aboutus();
break;
case 7:
cout<<"\n EXIT ";
break;
default:
cout<<"\n\n Please Enter correct option ";
break;
}
}}while(intVal!=7);
// break;

}}}while(intVal!=3); //if statement bracket

41
6. INPUT AND OUTPUT SCREENS

Figure 6.1 - Admin Login Authentication

Figure 6.2 Add event by Admin

42
Figure 6.3 View Event (all available events)

43
Figure 6.4 Delete Events

44
Figure 6.5 Modify Events by admin

Figure 1.6 Modified Events

45
Figure 6.7 User login options (view event according to the guests)

46
Figure 6.8 View Event according to the total guest

Figure 6.9 Booking the Events and user login

47
Figure 6.2.a Final Booking of the Event and bill

48
Figure 6.3.b Final Booking of the Event and bill

49
Figure 6.11 Payment Information of the booking (booking id)

Figure 6.4 Cancelling the booked Event

50
Figure 6.5 Booked info after cancelling (cancelling confirmed)

Figure 6.6 About us

51
7. VALIDATION AND TESTING
System testing is a process of executing a programme to locate an error. Testing is the verification and
validation activity for the software product. It involves checking process such as inspection and review at
each stage of the software process from user requirement definition to programme development during
system testing. The system is used experimentally to ensure that the software doesn’t fail. That is, it will
run according to it Specification and in the way user expect to it.
Testing is a four stage process where system component are tested and the integrated system is tested. And
finally, the system is tested with the customer’s data. The four type of testing are below…..

7.1 UNIT TESTING :-

Unit testing is a method of testing that verifies the individual units of source code are working properly. A
unit is the smallest testable part of an application. Using component level design description as a guide.
Important control path are tested to uncover errors within the boundary of the module . Tests of data flow
across a module interface were carried out for each module of the software that is, unit testing ensures that
function or producer are operating correctly. Each component is tested individually.
In my project “Event management system” , I have done unit testing on various modules. For example,
in modification function() Of a student and teacher recall Then firstly, check the student record and search

52
the student name , Similarly, it also cheque the teacher record and search for teacher name or id , Then, if
the name and id is found, then the process is continuing as it will show a message Student or teacher name
is invalid This message is shown whenever the user enter the wrong student name or teacher name or
entering any integer value.

7.2 BLACK BOX TESTING:-

Black box testing takes an external perspective of the test object to drive test case These tests can be
functional or non functional, though usually functional. The test designer select valid and invalid input and
determine the correct output There is no knowledge of the test object’s internal structure.

7.3 WHITE BOX TESTING

White box use an internal prospective of the system to design taste case based on internal structure. It
required programming skills to identify all path through the software. The tester choose test case input to
exercise path through the cold and determine the appropriate output In electrical hardware testing, every
node in a circuit may be probed

and measured while wide box testing is applicable at the unit integration and system level of the software
testing process. It is typically applied to the unit While it normally tests path within a unit, it can also test
path between unit during integration and between subsystem during a system level test. Through this
method of test, design and uncover an overwhelming number of test case It might not detect unimplemented
part of the specification or missing requirement, but one can be sure that all path through the test object are
executed.

7.4 INTEGRATION TESTING :-

Integration testing is a process of combining multiple modules systematically for conducting test in order
to find errors in the interface between modules. The goal here is to see if the modules can be integrated
properly . Hence , the emphasis is on testing the interface between modules. The integration testing follow
the following strategies :-
a. Incremental Strategy
b. Non-Incremental Strategy
c. Mixed Strategy
In my project “Event Management System” I have done integration testing on various modules. For
example , when I combined two modules/functions MODIFY() , SEARCH() , UPDATE() & DELETE()
53
Of class Record, then they were working properly.

7.5 SYSTEM TESTING :-

In this system testing the entire software system is tested. The reference document for this purpose is the
requirements document, and the objectives is to see if the software meets its requirements. A number of
different types of testing are used at this stage.
They are follow:-
1.Functional Testing:-It is concerned with functionality rather than the implementation of the program. In
functional testing the structure of the program is not considered.

2.Performance Testing:- It deals with quality related issues like security test , reliability test , etc , System
testing is done by the developers and before the product is given to customer for use.

3.Acceptance Testing:-After the system testing is completed successfully by the developers. Acceptance
testing is done at the customer’s end. It is the customer and the end user who now designs the test cases.
Acceptance testing is performed with realistic data of the client to demonstrate that is software is working
satisfactory.

54
8. LIMITATION OF THE PROJECT

• Code Organization: The code could benefit from better organization and modularization. Breaking
down functionalities into smaller functions or classes can improve readability and maintainability.
• File Paths: The hardcoded file paths like "E:\SUDIPTO\event management system\" might be
problematic when moving the code to another environment. Consider using relative paths or
allowing users to input file paths.
• Error Handling: There is limited error handling in the code. For example, file operations or input
validation failures should be handled more gracefully with appropriate error messages.
• Security: Storing passwords or sensitive information directly in the code, even for educational
purposes, is not a good practice. Consider more secure methods or remove them entirely if not
necessary.
• Event Booking Logic: The logic for event booking, cancellation, and payment handling can be
further refined for a more robust and user-friendly experience.

55
9. FUTURE APPLICATIONS OF THE PROJECT

Event management system still has a lot of future scope to make, some of them are: More advance features
for the system according to user demand can be done. Online event booking is more advanced, has accuracy
& is also cheap. At present, this system is fast & convenient. It does not have Credit card facility till now.
But build-in banking system is provided in this system for online payment. Thus, it saves time & cost in a
way. If the demand increases, these modules can be added in future. In case of system failure, there is no
option for backup system. We have to implement the backup mechanism. Utmost care and back-up
procedures must be established to ensure 100% successful implementation of the computerized booking
system.

56
10. BIBLIOGRAPHY

1. https://www.javatpoint.com/
2. https://www.geeksforgeeks.org/videos/cpp-program-to-check-if-input-is-an-integer-or-a-string/
3. https://www.youtube.com/
4. https://www.scaler.com/

57

You might also like