Event Management System
Event Management System
Event Management System
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.
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.
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
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.
• Arrows
• Circles
• 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.
Event
User Management Admin
View Event
System View Event
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.
9
4.3 Use case diagram
Here we have used actor named as Admin & User. A user of a system in a
• System Boundary
• 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.
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
2. ViewEventFunction
Input Data Type Description
Void No specific input.
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
User:-
5. ViewEventt Function
Input Data Type Description
Total guest integer User approximate guests
6. BookEvent Function
Input Data Type Description
Event number integer To identify the particular Event
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
13
8. CancelEvent Function
Input Data Type Description
Booking id varchar Will allow user to cancel the booking
9. PaymentInfo Function
Input Data Type Description
Booking id varchar Will search the bill for the given booking id
14
5. PROGRAM CODE
#include <iostream>
#include <cctype>
#include <string>
#include <limits>
#include <regex>
#include <fstream>
#include <cmath>
#include <iomanip>
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);
};
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');
}
// 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));
17
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
sEvent.info =0;
cout << "\n Update Successfully!";
return sEvent;
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";
}
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();
}
}
20
void CancelBooking(string);
void searchUser(char *);
void checkOut();
void PaymentInfo(string);
};
}
if(found==1){
system("cls");
cout<<"\n\t\t\t\t___________ Book Event ___________\n\n";
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..";
}
}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');
}
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 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) ;
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;
}
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";
}
}
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;
}
if (isdigit(check)){
return true;
}
31
else if (isalnum(check)){
return false;
}
else{
return false;
}
}
bool authenticateAdmin()
{
string username, password;
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;
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;
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;
41
6. INPUT AND OUTPUT SCREENS
42
Figure 6.3 View Event (all available events)
43
Figure 6.4 Delete Events
44
Figure 6.5 Modify Events by admin
45
Figure 6.7 User login options (view event according to the guests)
46
Figure 6.8 View Event according to the total guest
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)
50
Figure 6.5 Booked info after cancelling (cancelling confirmed)
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…..
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.
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.
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.
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.
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