Вы находитесь на странице: 1из 49

RAILWAY RESERVATION

Friday, 4 November 2016

RAILWAY RESERVATION SYSTEM

Guru Nanak Dev Engineering College,


Ludhiana
Object Oriented Programming Project

Submitted To:
Mohanjit Kaur Kang
Assistant Professor
Information Technology

RAILWAY RESERVATION SYSTEM

Submitted By :
Group-D2 IT A1
Semester:-3
Aakash Raj (1507884)

ACKNOWLEDGEMENT
A study or a project of this volume can never be the outcome of a single person or
just a me regroup of dedicated students, so we express our profound sense of gratitude to
those who extended their whole hearted help and support to us in completing our project
because successful completion of any work requires guidance and help from a number of
people.
Firstly, it gives us immense pleasure to acknowledge our institute Guru Nanak Dev
Engineering College, Ludhiana for providing us an opportunity in developing a project
on Railway Reservation System.
In addition, we wish to express our deep sense of gratitude to Mrs. Mohanjit Kaur
Kang, Assistant Professor Information Technology, for permitting us to carry out this
project work and for his guidance and support.We give sincere thanks to Mr. Harman
Bhutani, Senior , for his special concern and providing sufficient information related to
the topic, which helped us in completing the project work in time and his timely guidance
had been a source of inspiration in the conduct of our project work.Last but not the least,
we extend our whole-hearted gratitude for the invaluable contribution of our parents for
their blessings and earnest affection and all those persons behind the veil for their
necessary support, which enabled us to complete this project.

Aakash Raj

RAILWAY RESERVATION SYSTEM

CONTENTS
1. INTRODUCTION5
2. PROPOSED SYSTEM..5
3. SYSTEM DEVELOPMENT LIFE CYCLE.6
4. PHASES OF SYSTEM DEVELOPMENT LIFE CYCLE..7
5. SOURCE CODE..13
6. OUTPUT .31
7. Testing ..
8. Black box testing
9. Specification-based testing
10. Advantages and disadvantages
11. White box testing.
12. Code completeness evaluation..
13. DATA FLOW DIAGRAM
14. DFD FOR PAYMENT.
15. ADVANTAGES OF RAILWAY RESERVATION SYSTEM
16. HARDWARE REQUIREMENTS.
17. System Requirements
18. BIBLIOGRAPHY ..

RAILWAY RESERVATION SYSTEM

Introduction
This project introduces railway reservation system . It explains how reservation is
being done in Indian Railways . The step by step procedure is explained . This project is
developed in c ++ language . Almost all threader files have been used in this project.
Proper comments have been given at desired locations to make the project user
friendly.Various functions and structures are used tome a complete use of this language

Thos project is well versed with the programming . Railway reservation can easily
accompanied with the help of this.

PROPOSED SYSTEM
Today one cannot afford to rely on the fallible human beings of be really wants to stand
against todays merciless competition whereunto to wise saying to err is human no
longer valid, its outdated to rationalise pyourmistake. So, to keep pace with time, to bring
about the best result without malfunctioning and greater efficiency so to replace the
unending heaps of flies with a much sophisticated hard disk of the computer. Ones to use
the data management software.Software has been an ascent in atomisation various
organisations. Many software products working are now in markets, which have helped
in making the organisations work easier and efficiently. Data management initially had to
maintain a lot of ledgers and a lot of paperwork has to be done but now software
production this organisation has made their work faster and easier. Now only this
software has to belated on the computer and work can be done.This prevents a lot of time
and money. The work becomes fully automated and any information regarding the
organisation can bobtailed by clicking the button. Moreover, no wits an age of computers
of and automating such an organisation gives the better look.

RAILWAY RESERVATION SYSTEM

SYSTEM DEVELOPMENT LIFE CYCLE


The systems development life cycle is a project management technique that divides
complex projects into smaller, more easily managed segments or phases. Segmenting
projects allows managers to verify the successful completion of project phases before
allocating resources to subsequent phases.
Software development projects typically include initiation, planning, design,
development, testing, implementation, and maintenance phases. However, the phases
may be divided differently depending on the organisation involved. For example, initial
project activities might be designated as request, requirements-definition, and planning
phases, or initiation, concept-development, and planning phases. End users of the system
under development should be involved interviewing the output of each phase to
enswurethe system is being built to deliver the needed functionality.

RAILWAY RESERVATION SYSTEM

PHASES OF SYSTEM DEVELOPMENT LIFE CYCLE


Initiation Phase
The Initiation Phase begins when a business sponsor identifies a need or an
opportunity. The purpose of the Initiation Phase is to:
Identify and validate an opportunity to improve business accomplishments of the
organisation or a deficiency related to business need.
Identify significant assumptions and constraints on solutions to that need.
Recommend the exploration of alternative concepts and methods to satisfy the need
including questioning the need for technology, i.e., will a change in the business process
offer a solution?
Assure executive business and executive technical sponsorship.
The Sponsor designates a Project Manager and the business need is documented in
a ConceptProposal. The Concept Proposal includes information about the business
process and the relationship to the Agency/Organisation Infrastructure and the Strategic
Plan. A successful Concept Proposal results in aProject Management Charter which
outlines the authority of the project manager to begin the project.
Careful oversight is required to ensure projects support strategic business objectives
and resources are effectively implemented into an organisation enterprise architecture.
The initiation phase begins when an opportunity to add, improve, or correct a system is
identified and formalliyrequested through the presentation of a business case. The
business case should, at a minimum, describe a proposals purpose, identify expected
benefits, and explain how the proposed system supports one of the organisations
business strategies. The business case should also identify alternative solutions and detail
as many informational, functional, and network requirements as possible.

System Concept Development Phase


The System Concept Development Phase begins after a business need or opportunity
invalidated by the Agency/Organisation ProgramLeadership and the Agency/
Organisation CIO.
The purpose of the System ConceptDevelopment Phase is to:

Determine the feasibility and appropriateness of the alternatives.

Identify system interfaces.

Identify basic functional and data requirements to satisfy the business need.

RAILWAY RESERVATION SYSTEM

Establish system boundaries, identify goals, objectives, critical success factors, and

performance measures.

Evaluate costs and benefits of alternative approaches to satisfy the basic functional

requirements

Assess project risks

Identify and initiate risk mitigation actions, and

Develop high-level technical architecture, process models, data models, and

concept of operations.
This phase explores potential technical solutions within the context of the business
need. It may include several trade-off decisions such as the decision to use COTS software
products as opposed to developing custom software or reusing software components, or
the decision to use an incremental delivery versus a complete, one-time deployment.
Construction of executable prototypes is encouraged to evaluate technology to support
the business process.
The System Boundary Document serves an important reference document to
support the Information Technology Project Request(ITPR) process. The ITPR must be
approved by the State CIO before the project can move forward.

PICTORIAL REPRESENTATION OF SDLC

RAILWAY RESERVATION SYSTEM

Planning phase
The planning phase is the most critical step incompletion development, acquisition,
and maintenance projects. Careful planning, particularly in the early stages of a project, is
necessary to coordinate activities and manage project risks effectively. The depth and
formality of project plans should be commensurate with the characteristics and risks of a
given project.
Project plans refine the information gathered during the initiation phase by further
identifying the specific activities and resources required to complete project. A critical part
of a project managers job is to coordinate discussions between user, audit, security,
design, development, and network personnel to identify and document as many
functional, security, and network requirements as possible.
During this phase, a plan is developed that documents the approach to be used and
includes a discussion of methods, tools, tasks, resources, project schedules, and user input.
Personnel assignments, costs, project schedule, and target dates a reestablished. A Project
Management Plan is created with components related to acquisition planning,
configuration management planning, quality assurance planning, concept of operations,
system security, verification and validation, and systems engineering management
planning.

Requirements Analysis Phase


This phase formally defines the detailed functional user requirements using high level requirements identified in the Initiation,System Concept, and Planning phases. It
also delineates the requirements in terms of data, system performance, security, and
maintainability requirements for the system.The requirements are defined in this phase to
a level of detail sufficient for systems design to proceed. They need to be measurable,
testable, and relate to the business need or opportunity identified in the Initiation
Phase.The requirements that will be used to determine acceptance of the system a
recaptured in the Test and Evaluation MasterPlan.
The purposes of this phase are to:

Further define and refine the functional and data requirements and document

them the Requirements Document,

Complete business process reengineering the functions to be supported (i.e.,verify

what information drives the business process, what information is generated, who
generates it, where does the information go, and who processes it),

RAILWAY RESERVATION SYSTEM

Develop detailed data and process models(system inputs, outputs, and the

process).

Develop the test and evaluation requirements that will be used to determine

acceptable system performance.

Design phase
The design phase involves converting the informational, functional, and network
requirements identified during the initiation and planning phases into unified design
specifications that developers use to script programs during the development
phase.Program designs are c constructed in various ways. Using a top-down approach,
designers first identify and link major program components and interfaces, then
expanding layouts as they identify and link smaller subsystems and connections. Using a
bottom-up approach, designers first identifying link minor program components and
interfaces, then expand design layouts astray identify and link larger systems and
connections.
Contemporary design technique soften use prototyping tools that build mock -up
designs of items such as application screens, database layouts, and system
architectures.End users, designers, developers, database managers, and network
administrators should review and refine the prototyped designs in an iterative process
until they agree on unacceptable design. Audit, security, and quality assurance personnel
should be involved in the review and approval process.
During this phase, the system is designed to satisfy the functional requirements
identified in the previous phase.Since problems in the design phase could be very
expensive to solve in the later stage of the software development, a variety of elements are
considered in the design to mitigate risk. These include:

Identifying potential risks and defining mitigating design features.

Performing a security risk assessment.

Developing a conversion plan to migrate current data to the new system.

Determining the operating environment.

Defining major subsystems and their inputs and outputs.

Allocating processes to resources.

Preparing detailed logic specifications foreach software module.

The result is a draft System DesignDocument which captures the preliminary design
for the system. Everything requiring user input or approval is documented and reviewed
by the user.

RAILWAY RESERVATION SYSTEM

10

Once these documents have been approved by the Agency CIO and Business
Sponsor, the finalSystem Design Document is created to serve as the Critical/Detailed
Design for the system.This document receives a rigorous review byAgency technical and
functional representatives to ensure that it satisfies the business requirements.
Concurrent with the development of the system design, the Agency Project Manager
begins development of the ImplementationPlan, Operations and Maintenance Manual,
and the Training Plan.

Development phase
The development phase involves converting design specifications into executable
programs. Effective development standards include requirements that programmers and
other project participants discuss design specifications before programming begins. The
procedures help ensure programmers clearly understand program designs and functional
requirements.
Programmers use various techniques to develop computer programs. The large
transaction-oriented programs associated with financial institutions have traditionally
been developed using procedural programming techniques. Procedural programming
involves the line-by-line scripting logical instructions that are combined to form a
program.
Effective completion of the previous stages is a key factor in the success of the
Development phase. The Development phase consists of:

Translating the detailed requirements and design into system components.

Testing individual elements (units) focusability.

Preparing for integration and testing of the IT system.

Integration and Test Phase


Subsystem integration, system, security, and user acceptance testing is conducted
during the integration and test phase. The user, with those responsible for quality
assurance, validates that the functional requirements, as defined in the functional
requirements document, are satisfied by the developed or modified system. OIT Security
staff assess the system security and issue a security certification and accreditation prior to
installation/implementation. Multiple levels of testing are performed, including:

Testing at the development facility by the contractor and possibly supported by

endusers

RAILWAY RESERVATION SYSTEM

11

Testing as a deployed system with endusers working together with contract

personnel

Operational testing by the end user alone performing all functions.

Requirements are traced throughout testing, a final IndependentVerification &


Validation evaluation is performed and all documentation is reviewed and accepted prior
to acceptance of the system.

ImplementationPhase
This phase is initiated after the system has been tested and accepted by the user. In
this phase, the system is installed to support the intended business functions. System
performance is compared to performance objectives established during the planning
phase. Implementation includes user notification, user training, installation of hardware,
installation of software onto production computers, and integration of the system into
daily work processes.
This phase continues until the system is operating in production in accordance with
the defined user requirements.

Operations andMaintenance Phase


The system operation is ongoing. The system is monitored for continued
performance in accordance with user requirements and needed system modifications are
incorporated.Operations continue as long as the system can be effectively adapted to
respond to the organisations needs. When modifications or changes are identified, the
system may reenter the planning phase. The purpose of this phase is to:

Operate, maintain, and enhance the system.

Certify that the system can process sensitive information.

Conduct periodic assessments of the system to ensure the functional requirements

continue to be satisfied.

Determine when the system needs to be modernised, replaced, or retired.

RAILWAY RESERVATION SYSTEM

12

SOURCE CODE
#include<iostream>
#include<time.h>
#include<iomanip>
#include<fstream>
#include<stdio.h>
//#include<conio>
#include<stdlib.h>
#include<string.h>
using namespace std;
char f[10]="f";
char s[10]="s";
int addr,ad,flag,f1,d,m,i,amt;
float tamt;
class login
{
public:
char id[100];
char pass[100];
char *password;
void getid()
{
cout<<"Enter your id:";
cin>>id;
cout<<"Enter the password:";
cin>>pass;
strcpy(pass,password);
}
void displayid()
{
std::cout<<"Id:";
cout<<"Password:";

RAILWAY RESERVATION SYSTEM

13

}
};
class detail
{
public:
int tno;
char tname[100];
char bp[100];
char dest[100];
int c1,c1fare;
int c2,c2fare;
int d,m,y;
void getdetail()
{
cout<<"Enter the details as follows\n";
cout<<"Train no:";cin>>tno;
cout<<"Train name:";gets(tname);
cout<<"Boarding point:";gets(bp);
cout<<"Destination pt:";gets(dest);
cout<<"No of seats in first class & fare per ticket:";
cin>>c1>>c1fare;
cout<<"No of seats in second class & fare per ticket:";
cin>>c2>>c2fare;
cout<<"Date of travel:";cin>>d>>m>>y;
}
void displaydetail()
{
cout<<tno<<"\t"<<tname<<"\t"<<bp<<"\t"<<dest<<"\t";
cout<<c1<<"\t"<<c1fare<<"\t"<<c2<<"\t"<<c2fare<<"\t";
cout<<d<<"-"<<m<<"-"<<y<<"\t"<<endl;
}
};
class reser
{
public:
int pnr;

RAILWAY RESERVATION SYSTEM

14

int tno;
char tname[100];
char bp[10];
char dest[100];
char pname[10][100];
int age[20];
char clas[10];
int nosr;
int i;
int d,m,y;
int con;
float amc;
void getresdet()
{
cout<<"Enter the details as follows\n";
cout<<"Train no:";cin>>tno;
cout<<"Train name:";gets(tname);
cout<<"Boarding point:";gets(bp);
cout<<"Destination pt:";gets(dest);
cout<<"No of seats required:";cin>>nosr;
for(i=0;i<nosr ;i++)
{
cout<<"Passenger name:";gets(pname[i]);
cout<<"Passenger age:";cin>>age[i];
}
cout<<"Enter the class f-first class s-second class:";
gets(clas);
cout<<"Date of travel:";cin>>d>>m>>y;
cout<<"Enter the concession category\n";
cout<<"1.Military\n2.Senior citizen\n";
cout<<"3.Children below 5 yrs\n4.None\n";
cin>>con;
cout<<"............END OF GETTING DETAILS............\n";
}
void displayresdet()
{

RAILWAY RESERVATION SYSTEM

15

cout<<"...............................................\n";
cout<<"...............................................\n";
cout<<"Pnr no:"<<pnr;
cout<<"\nTrain no:"<<tno;
cout<<"\nTrain name:";puts(tname);
cout<<"Boarding point:";puts(bp);
cout<<"Destination pt:";puts(dest);
cout<<"No of seats reserved:"<<nosr;
for(i=0;i<nosr;i++)
{
cout<<"Passenger name:";puts(pname[i]);
cout<<"Passenger age:"<<age[i];
}
cout<<"\nYour class:";puts(clas);
cout<<"\nDate of reservation:"<<d<<"-"<<m<<"-"<<y;
cout<<"\nYour concession category:"<<con;
cout<<"\nYou must pay:"<<amc<<endl;
cout<<"***********************************************\n";
cout<<".........END OF RESERVATION.................\n";
cout<<"***********************************************\n";
}
};
class canc
{
public:
int pnr;
int tno;
char tname[100];
char bp[10];
char dest[100];
char pname[10][100];
int age[20];
int i;
char clas[10];
int nosc;
int d,m,y;

RAILWAY RESERVATION SYSTEM

16

float amr;
void getcancdet()
{
cout<<"Enter the details as follows\n";
cout<<"Pnr no:";cin>>pnr;
cout<<"Date of cancellation:";cin>>d>>m>>y;
cout<<"...........END OF GETTING DETAILS...........\n";
}
void displaycancdet()
{
cout<<"...........................................\n";
cout<<"...........................................\n";
cout<<"Pnr no:"<<pnr;
cout<<"\nTrain no:"<<tno;
cout<<"\nTrain name:";puts(tname);
cout<<"Boarding point:";puts(bp);
cout<<"Destination pt:";puts(dest);
cout<<"\nYour class:";puts(clas);
cout<<"no of seats to be cancelled:"<<nosc;
for(i=0;i<nosc;i++)
{
cout<<"Passenger name:";puts(pname[i]);
cout<<"passenger age:"<<age[i];
}
cout<<"\nDate of cancellation:"<<d<<"-"<<m<<"-"<<y;
cout<<"\nYou can collect:"<<amr<<"rs"<<endl;
cout<<"*****************************************\n";
cout<<".........END OF CANCELLATION.............\n";
cout<<"*****************************************\n";
}
};
void manage();
void can();
void user();
void database();
void res();

RAILWAY RESERVATION SYSTEM

17

void reserve();
void displaypassdetail();
void cancell();
void enquiry();
int main()
{
//clrscr();
int ch;
cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n";
cout<<".......WELCOME TO RAILWAY RESERVATION SYSTEM..........\n";
cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n";
do
{
cout<<"^^^^^^^^^^^^^^^^^^^^^^MAIN
MENU^^^^^^^^^^^^^^^^^^^^\n";
cout<<"1.Admin mode\n2.User mode\n3.Exit\n";
cout<<"Enter your choice:";
cin>>ch;
cout<<endl;
switch(ch)
{
case 1:
database();
break;
case 2:
user();
break;
case 3:
exit(0);
}
}while(ch<=3);
return 0;
}
void database()
{
string password;

RAILWAY RESERVATION SYSTEM

18

string pass="12345678";
cout<<"Enter the admininistrator password:";
cin>>password;
detail a;
fstream f;
int ch;
//

char c;

if(!(password==pass))
{
cout<<"Enter the password correctly \n";
cout<<"You are not permitted to logon this mode\n";
// goto h;
cout<<"try again";
}
if(password==pass)
{
char c;
do
{
cout<<"...........ADMINISTRATOR MENU...........\n";
cout<<"1.Create detail data base\n2.Add details\n";
cout<<"3.Display details\n4.User management\n";
cout<<"5.Display passenger details\n6.Return to main menu\n";
cout<<"Enter your choice:";
cin>>ch;
cout<<endl;
switch(ch)
{
case 1:
f.open("t.txt",ios::out|ios::binary);
do
{
a.getdetail();
f.write((char *) & a,sizeof(a));
cout<<"Do you want to add one more record?\n";
cout<<"y-for Yes\nn-for No\n";

RAILWAY RESERVATION SYSTEM

19

cin>>c;
}while(c=='y');
f.close();
break;
case 2:
f.open("t.txt",ios::in|ios::out|ios::binary|ios::app);
a.getdetail();
f.write((char *) & a,sizeof(a));
f.close();
break;
case 3:
f.open("t.txt",ios::in|ios::out|ios::binary|ios::app);
f.seekg(0);
while(f.read((char *) & a,sizeof(a)))
{
a.displaydetail();
}
f.close();
break;
case 4:
manage();
break;
case 5:
displaypassdetail();
break;
}
}while(ch<=5);
f.close();
}
//h:
}
void reserve()
{
int ch;
do
{

RAILWAY RESERVATION SYSTEM

20

cout<<"1.Reserve\n2.Return to the main menu\n";


cout<<"Enter your choice:";
cin>>ch;
cout<<endl;
switch(ch)
{
case 1:
res();
break;
}
}while(ch==1);
// getch();
}
void res()
{
detail a;
reser b;
fstream f1,f2;
time_t t;
f1.open("t.txt",ios::in|ios::out|ios::binary);
f2.open("p.txt",ios::in|ios::out|ios::binary|ios::app);
//int ch;
b.getresdet();
while(f1.read((char *) &a,sizeof(a)))
{
if(a.tno==b.tno)
{
if(strcmp(b.clas,f)==0)
{
if(a.c1>=b.nosr)
{
amt=a.c1fare;
//

addr=f1.;

ad=sizeof(a.c1);
f1.seekp(addr-(7*ad));
a.c1=a.c1-b.nosr;

RAILWAY RESERVATION SYSTEM

21

f1.write((char *) & a.c1,sizeof(a.c1));


if(b.con==1)
{
cout<<"Concession category:MILITARY PERSONNEL\n";
b.amc=b.nosr*((amt*50)/100);
}
else if(b.con==2)
{
cout<<"Concession category:SENIOR CITIZEN\n";
b.amc=b.nosr*((amt*60)/100);
}
else if(b.con==3)
{
cout<<"Concession category:CHILDERN BELOW FIVE\n";
b.amc=0.0;
}
else if(b.con==4)
{
cout<<"You cannot get any concession\n";
b.amc=b.nosr*amt;
}
srand((unsigned) time(&t));
b.pnr=rand();
f2.write((char *) & b,sizeof(b));
b.displayresdet();
cout<<"------------------------------------------------------\n";
cout<<"--------------Your ticket is reserved-----------\n";
cout<<"-----------------End of reservation menu-------\n";
}
else
{
cout<<"**********Sorry req seats not available********\n";
}
}
else if(strcmp(b.clas,s)==0)
{

RAILWAY RESERVATION SYSTEM

22

if(a.c2>=b.nosr)
{
amt=a.c2fare;
addr=12345;
ad=sizeof(a.c2);
f1.seekp(addr-(5*ad));
a.c2=a.c2-b.nosr;
f1.write((char *) & a.c2,sizeof(a.c2));
if(b.con==1)
{
cout<<"Concession category:MILITARY PRESONNEL\n";
b.amc=b.nosr*((amt*50)/100);
}
else if(b.con==2)
{
cout<<"Concession category:SENIOR CITIZEN\n";
b.amc=b.nosr*((amt*60)/100);
}
else if(b.con==3)
{
cout<<"Concession category:CHILDERN BELOW FIVE\n";
b.amc=0.0;
}
else if(b.con==4)
{
cout<<"You cannot get any concession\n";
b.amc=b.nosr*amt;
}
f2.write((char *) & b,sizeof(b));
b.displayresdet();
cout<<"---------------------------------------\n";
cout<<"--------Your ticket is reserved--------\n";
cout<<"------------End of reservation---------\n";
}
else
{

RAILWAY RESERVATION SYSTEM

23

cout<<"********Sorry req no of seats not available*******\n";


}
}
// getch();
//

goto h;

}
else
{
flag=0;
}
}
if(flag==0)
{
cout<<"............Wrong train no......................\n";
cout<<"......Enter the train no from the data base.....\n";
}
f1.close();
f2.close();
// getch();
//h:
}
void displaypassdetail()
{
fstream f;
reser b;
f.open("p.txt",ios::in|ios::out|ios::binary);
f.seekg(0);
while(f.read((char *) & b,sizeof(b)))
{
b.displayresdet();
}
f.close();
// getch();
}
void enquiry()
{

RAILWAY RESERVATION SYSTEM

24

fstream f;
f.open("t.txt",ios::in|ios::out|ios::binary);
detail a;
while(f.read((char *) & a,sizeof(a)))
{
a.displaydetail();
}
// getch();
}
void cancell()
{
detail a;
reser b;
canc c;
fstream f1,f2,f3;
f1.open("t.txt",ios::in|ios::out|ios::binary);
f2.open("p.txt",ios::in|ios::out|ios::binary);
f3.open("cn.txt",ios::in|ios::out|ios::binary);
cout<<"**********CANCELLATION MENU*********\n";
c.getcancdet();
while(f2.read((char *) & b,sizeof(b)))
{
if(b.pnr==c.pnr)
{
c.tno=b.tno;
strcpy(c.tname,b.tname);
strcpy(c.bp,b.bp);
strcpy(c.dest,b.dest);
c.nosc=b.nosr;
for(int j=0;j<c.nosc;j++)
{
strcpy(c.pname[j],b.pname[j]);
c.age[j]=b.age[j];
}
strcpy(c.clas,b.clas);
if(strcmp(c.clas,f)==0)

RAILWAY RESERVATION SYSTEM

25

{
while(f1.read((char *) & a,sizeof(a)))
{
if(a.tno==c.tno)
{
a.c1=a.c1+c.nosc;
d=a.d;
m=a.m;
//

addr=f1.tellg();

ad=sizeof(a.c1);
f1.seekp(addr-(7*ad));
f1.write((char *) & a.c1,sizeof(a.c1));
tamt=b.amc;
if((c.d==d)&&(c.m==m))
{
cout<<"You are cancelling at the date of departure\n";
c.amr=tamt-((tamt*60)/100);
}
else if(c.m==m)
{
cout<<"You are cancelling at the month of departure\n";
c.amr=tamt-((tamt*50)/100);
}
else if(m>c.m)
{
cout<<"You are cancelling one month before the date of
departure\n";
c.amr=tamt-((tamt*20)/100);
}
else
{
cout<<"Cancelling after the departure\n";
cout<<"Your request cannot be completed\n";
}
//

goto h;

c.displaycancdet();

RAILWAY RESERVATION SYSTEM

26

}
}
}
else if(strcmp(c.clas,s)==0)
{
while(f1.read((char *) & a,sizeof(a)))
{
if(a.tno==c.tno)
{
a.c2=a.c2+c.nosc;
d=a.d;
m=a.m;
//

addr=f1.tellg();

ad=sizeof(a.c2);
f1.seekp(addr-(5*ad));
f1.write((char *) & a.c2,sizeof(a.c2));
tamt=b.amc;
if((c.d==d)&&(c.m==m))
{
cout<<"You are cancelling at the date of departure\n";
c.amr=tamt-((tamt*60)/100);
}
else if(c.m==m)
{
cout<<"You are cancelling at the month of departure\n";
c.amr=tamt-((tamt*50)/100);
}
else if(m>c.m)
{
cout<<"You are cancelling one month before the date of
departure\n";
c.amr=tamt-((tamt*20)/100);
}
else
{
cout<<"Cancelling after the departure\n";

RAILWAY RESERVATION SYSTEM

27

cout<<"Your request cannot be completed\n";


}
//

goto h;

c.displaycancdet();
}
}
}
}
else
{
flag=0;
}
}
h:
if(flag==0)
{
cout<<"Enter the correct pnr no\n";
}
f1.close();
f2.close();
f3.close();
// getch();
}
void can()
{
int ch;
do
{
cout<<".................CANCELLATION MENU.........\n";
cout<<"1.Cancell\n2.Return to the main menu\n";
cout<<"Enter your choice:";
cin>>ch;
cout<<endl;
switch(ch)
{
case 1:

RAILWAY RESERVATION SYSTEM

28

cancell();
break;
}
}while(ch==1);
//

getch();

}
void user()
{
login a;
int ch;
cout<<"*****************************************************\n";
cout<<"***********WELCOME TO THE USER MENU**\n";
cout<<"****************************************************\n";
char *password;
fstream f;
f.open("id.txt",ios::in|ios::out|ios::binary);
char id[100];
puts("Enter your id:");gets(id);
cout<<"Enter your password:";
cin>>password;
while(f.read((char *) & a,sizeof(a)))
{
if((strcmp(a.id,id)==0)&&(strcmp(a.pass,password)==0))
{
do
{
cout<<"1.Reserve\n2.Cancell\n3.Enquiry\n4.Return to the main menu\n";
cout<<"Enter your choice:";
cin>>ch;
cout<<endl;
switch(ch)
{
case 1:
reserve();
break;
case 2:

RAILWAY RESERVATION SYSTEM

29

cancell();
break;
case 3:
enquiry();
break;
}
}while(ch<=3);
//

goto j;

}
else
{
d=1;
}
}
if(d==1)
{
cout<<"Enter your user id and password correctly\n";
}
// getch();
//j:
}
void manage()
{
int ch;
fstream f;
char c;
login a;
cout<<".........WELCOME TO THE USER MANAGEMENT MENU........\n";
do
{
cout<<"1.Create id data base\n2.Add details\n";
cout<<"3.Display details\n4.Return to the main menu\n";
cout<<"Enter your choice:";
cin>>ch;
cout<<endl;
switch(ch)

RAILWAY RESERVATION SYSTEM

30

{
case 1:
f.open("id.txt",ios::out|ios::binary);
do
{
a.getid();
f.write((char *) & a,sizeof(a));
cout<<"Do you want to add one more record\n";
cout<<"y-Yes\nn-No\n";
cin>>c;
}while(c=='y');
f.close();
break;
case 2:
f.open("id.txt",ios::in|ios::out|ios::binary|ios::app);
a.getid();
f.write((char *) & a,sizeof(a));
f.close();
break;
case 3:
f.open("id.txt",ios::in|ios::out|ios::binary);
f.seekg(0);
while(f.read((char *) & a,sizeof(a)))
{
a.displayid();
}
f.close();
break;
}
}while(ch<=3);
// getch();
}

OUTPUT
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.WELCOME TO RAILWAY RESERVATION SYSTEM

RAILWAY RESERVATION SYSTEM

31

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
^^^^^^^^^^^^^^^^^^^^^^MAIN MENU^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1.Admin mode
2.User mode
3.Exit
Enter your choice:1
Enter the administrator password:*********
Enter the password correctly
You are not permitted to logon this mode
^^^^^^^^^^^^^^^^^^^^^MAIN MENU^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1.Admin mode
2.User mode
3.Exit
Enter your choice:1
Enter the administrator password:*********
..ADMINISTRATOR MENU..
1.Create detail data base
2.Add details
3.Display details
4.User management
5.Display passenger details
6.Return to main menu
Enter your choice:1
Enter the details as follows
Train no:123
Train name:yercaud exp
Boarding point:erode
Destination pt:chennai
No of seats in first class & fare per ticket:100 200
No of seats in second class & fare per ticket:200 100
Date of travel:2 3 2009
Do you want to add one more record?
y-for Yes
n-for No
y
Enter the details as follows

RAILWAY RESERVATION SYSTEM

32

Train no:124
Train name:shatapti exp
Boarding point:chennai
Destination pt:bombay
No of seats in first class & fare per ticket:300 200
No of seats in second class & fare per ticket:200 300
Date of travel:4 5 2009
Do you want to add one more record?
y-for Yes
n-for No
n
..ADMINISTRATOR MENU
1.Create detail data base
2.Add details
3.Display details
4.User management
5.Display passenger details
6.Return to main menu
Enter your choice:2
Enter the details as follows
Train no:126
Train name:kurula exp
Boarding point:bombay
Destination pt:chennai
No of seats in first class & fare per ticket:200 300
No of seats in second class & fare per ticket:300 200
Date of travel:4 3 2009
..ADMINISTRATOR MENU
1.Create detail data base
2.Add details
3.Display details
4.User management
5.Display passenger details
6.Return to main menu
Enter your choice:3
Trno Trname Bpt Dest Fs Ffare Ss Sfare Date of dep

RAILWAY RESERVATION SYSTEM

33

123 yercaud exp erode chennai 100 200 200 100 2-3-2009
124 shatapti exp chennai bombay 300 200 200 300 4-5-2009
126 kurula exp bombay chennai 200 300 300 200 4-3-2009
..ADMINISTRATOR MENU.
1.Create detail data base
2.Add details
3.Display details
4.User management
5.Display passenger details
6.Return to main menu
Enter your choice:4
.WELCOME TO THE USER MANAGEMENT MENU..
1.Create id data base
2.Add details
3.Display details
4.Return to the main menu
Enter your choice:1
Enter your id:ashwin
Enter the password:**********
Do you want to add one more record
y-Yes
n-No
y
Enter your id:ajinth
Enter the password:**********
Do you want to add one more record
y-Yes
n-No
y
Enter your id:bala
Enter the password:********
Do you want to add one more record
y-Yes
n-No
y

RAILWAY RESERVATION SYSTEM

34

Enter your id:hemanth


Enter the password:*********
Do you want to add one more record
y-Yes
n-No
n
1.Create id data base
2.Add details
3.Display details
4.Return to the main menu
Enter your choice:2
Enter your id:berlin
Enter the password:*********
1.Create id data base
2.Add details
3.Display details
4.Return to the main menu
Enter your choice:3
Id:ashwin
Password:11111111
Id:ajinth
Password:22222222
Id:bala
Password:33333333
Id:prem
Password:44444444
Id:hemanth
Password:55555555
Id:berlin
Password:66666666
1.Create id data base
2.Add details
3.Display details
4.Return to the main menu
Enter your choice:4
. ..ADMINISTRATOR MENU

RAILWAY RESERVATION SYSTEM

35

1.Create detail data base


2.Add details
3.Display details
4.User management
5.Display passenger details
6.Return to main menu
Enter your choice:5
..ADMINISTRATOR MENU..
1.Create detail data base
2.Add details
3.Display details
4.User management
5.Display passenger details
6.Return to main menu
Enter your choice:6
^^^^^^^^^^^^^^^^^^^^^^MAIN MENU^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1.Admin mode
2.User mode
3.Exit
Enter your choice:2
************************************************************************************************
*********************WELCOME TO THE USER MENU***********************************
************************************************************************************************
Enter your id:
ashwin
Enter your password:*********
Enter your user id and password correctly
^^^^^^^^^^^^^^^^^^^^^^MAIN MENU^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1.Admin mode
2.User mode
3.Exit
Enter your choice:2
************************************************************************************************
**********************WELCOME TO THE USER MENU**********************************
************************************************************************************************
Enter your id:

RAILWAY RESERVATION SYSTEM

36

ashwin
Enter your password:*********
1.Reserve
2.Cancell
3.Enquiry
4.Return to the main menu
Enter your choice:1
1.Reserve
2.Return to the main menu
Enter your choice:1
Enter the details as follows
Train no:123
Train name:yercaud
Boarding point:erode
Destination pt:chennai
No of seats required:10
Passenger name:raja
Passenger age:45
Passenger name:ragu
Passenger age:32
Passenger name:ravi
Passenger age:34
Passenger name:vinoth
Passenger age:23
Passenger name:raju
Passenger age:24
Passenger name:latha
Passenger age:45
Passenger name:mala
Passenger age:23
Passenger name:vimala
Passenger age:32
Passenger name:kathir
Passenger age:12
Passenger name:kosi
Passenger age:43

RAILWAY RESERVATION SYSTEM

37

Enter the class f-first class s-second class:f


Date of travel:2 2 2009
Enter the concession category
1.Military
2.Senior citizen
3.Children below 5 yrs
4.None
4
.END OF GETTING DETAILS
You cannot get any concession
.
.
Pnr no:10770
Train no:123
Train name:yercaud
Boarding point:erode
Destination pt:chennai
No of seats reserved:10Passenger name:raja
Passenger age:45Passenger name:ragu
Passenger age:32Passenger name:ravi
Passenger age:34Passenger name:vinoth
Passenger age:23Passenger name:raju
Passenger age:24Passenger name:latha
Passenger age:45Passenger name:mala
Passenger age:23Passenger name:vimala
Passenger age:32Passenger name:kathir
Passenger age:12Passenger name:kosi
Passenger age:43
Your class:f
Date of reservation:2-2-2009
Your concession category:4
You must pay:2000
************************************************************************************************
..END OF RESERVATION
************************************************************************************************
-

RAILWAY RESERVATION SYSTEM

38

-Your ticket is reserved-


End of reservation menu1.Reserve
2.Return to the main menu
Enter your choice:2
1.Reserve
2.Cancell
3.Enquiry
4.Return to the main menu
Enter your choice:3
Trno Trname Bpt Dest Fs Ffare Ss Sfare Date of dep
123 yercaud exp erode chennai 90 200 200 100 2-3-2009
124 shatapti exp chennai bombay 300 200 200 300 4-5-2009
126 kurula exp bombay chennai 200 300 300 200 4-3-2009
1.Reserve
2.Cancell
3.Enquiry
4.Return to the main menu
Enter your choice:2
*********************************CANCELLATION MENU*********************************
Enter the details as follows
Pnr no:10770
Date of cancellation:2 3 2009
.END OF GETTING DETAILS.
You are cancelling at the date of departure
.
.
Pnr no:10770
Train no:123
Train name:yercaud
Boarding point:erode
Destination pt:chennai
Your class:f
no of seats to be cancelled:10
Passenger name: raja passenger age: 45

RAILWAY RESERVATION SYSTEM

39

Passenger name: ragu passenger age: 32


Passenger name: ravi passenger age: 34
Passenger name: vinoth passenger age: 23
Passenger name: raju passenger age: 24
Passenger name: latha passenger age:45
Passenger name: mala passenger age: 23
Passenger name: vimala passenger age: 32
Passenger name: kathir passenger age: 12
Passenger name: kosi passenger age: 43
Date of cancellation:2-3-2009
You can collect: 800rs
************************************************************************************************
.END OF CANCELLATION..
************************************************************************************************
1.Reserve
2.Cancell
3.Enquiry
4.Return to the main menu
Enter your choice:2
**************************CANCELLATION MENU****************************************
Enter the details as follows
Pnr no:12234
Date of cancellation:2 3 2009
END OF GETTING DETAILS..
Enter the correct pnr no
1.Reserve
2.Cancell
3.Enquiry
4.Return to the main menu
Enter your choice:3
Trno Trname Bpt Dest Fs Ffare Ss Sfare Date of dep
123 yercaud exp erode chennai 100 200 200 100 2-3-2009
124 shatapti exp chennai bombay 300 200 200 300 4-5-2009
126 kurula exp bombay chennai 200 300 300 200 4-3-2009
1.Reserve
2.Cancell

RAILWAY RESERVATION SYSTEM

40

3.Enquiry
4.Return to the main menu
Enter your choice:3
Trno Trname Bpt Dest Fs Ffare Ss Sfare Date of dep
123 yercaud exp erode chennai 100 200 200 100 2-3-2009
124 shatapti exp chennai bombay 300 200 200 300 4-5-2009
126 kurula exp bombay chennai 200 300 300 200 4-3-2009
1.Reserve
2.Cancell
3.Enquiry
4.Return to the main menu
Enter your choice:1
1.Reserve
2.Return to the main menu
Enter your choice:1
Enter the details as follows
Train no:12345
Train name:shatapti
Boarding point:chennai
Destination pt:bombay
No of seats required:1
Passenger name:raja
Passenger age:23
Enter the class f-first class s-second class:f
Date of travel:3 2 2009
Enter the concession category
1.Military
2.Senior citizen
3.Children below 5 yrs
4.None
4
.END OF GETTING DETAILS....
..Wrong train no.
Enter the train no from the data base.
1.Reserve
2.Return to the main menu

RAILWAY RESERVATION SYSTEM

41

Enter your choice:2


1.Reserve
2.Cancell
3.Enquiry
4.Return to the main menu
Enter your choice:4
^^^^^^^^^^^^^^^^^^^^^^^MAIN MENU^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1.Admin mode
2.User mode
3.Exit
^^^^^^^^^^^^^^^^^^^^^^MAIN MENU^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1.Admin mode
2.User mode
3.Exit
Enter your choice:1
Enter the admininistrator password:*********
....ADMINISTRATOR MENU..
1.Create detail data base
2.Add details
3.Display details
4.User management
5.Display passenger details
6.Return to main menu
Enter your choice:5
. ..ADMINISTRATOR MENU..
1.Create detail data base
2.Add details
3.Display details
4.User management
5.Display passenger details
6.Return to main menu
Enter your choice:6
^^^^^^^^^^^^^^^^^^^^^^MAIN MENU^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1.Admin mode
2.User mode

RAILWAY RESERVATION SYSTEM

42

3.Exit
Enter your choice:3

Testing
Software Testing is an empirical investigation conducted to provide stakeholders
with information about the quality of the product or service under test with respect to the
context in which it is intended to operate.Software Testing also provides an objective,
independent view of the software to allow the business to appreciate and understand the
risks at implementation of the software. Test techniques include, but are not limited to, the
process of executing a program or application with the intent of finding software bugs. It
can also be stated as the process of validating and verifying that a software program/
application/product meets the business and technical requirements that guided its design
and development, so that it works as expected and can be implemented with the same
characteristics.
Software Testing, depending on the testing method employed, can be implemented
at anytime in the development process, however the most test effort is employed after the
requirements have been defined and coding process has been completed.

Testing methods
Software testing methods are traditionally divided into black box testing and white
box testing. These two approaches are used to describe the point of view that a test
engineer takes when designing test cases.

Black box testing


Black box testing treats the software as a"black box," without any knowledge of
internal implementation. Black box testing methods include: equivalence partitioning,

RAILWAY RESERVATION SYSTEM

43

boundary value analysis, all-pairs testing, fuzz testing, model-based testing, traceability
matrix, exploratory testing and specification-based testing.

Specification-based testing
Specification-based testing aims to test the functionality of software according to the
applicable requirements. Thus, the tester inputs data into, and only sees the outperform,
the test object. This level of testing usually requires thorough test cases to be provided to
the tester, who then can simply verify that for a given input, the output value(or
behaviour), either "is" or "is not" the same as the expected value specified in the test case.
Specification-based testing is necessary, but it is insufficient togaed against certain risks

Advantages and disadvantages


The black box tester has no "bonds" with the code, and a tester's perception is very
simple: a code must have bugs. Using the principle,"Ask and you shall receive," black box
testers find bugs where programmers dont.But, on the other hand, black box testing has
been said to be "like a walk in a dark labyrinth without a flashlight," because the tester
doesn't know how the software being tested was actually constructed. That's why there
are situations when a black box tester writes many test cases to check something that can
be tested by only one test case, and/or some parts of the back end are not tested a tall.
Therefore, black box testing has the advantage of "an unaffiliated opinion," on the one
hand, and the disadvantage of "blind exploring," on the other.

White box testing


White box testing, by contrast to black box testing, is when the tester has access to
the internal data structures and algorithms (and the code that implement these)
Types of white box testing
The following types of white box testing exist:

api testing - Testing of the application using Public and Private APIs.

code coverage- creating tests to satisfy some criteria of code coverage.For

example, the test designer can create tests to cause all statements in the program to be
executed at least once.

fault injection methods.

RAILWAY RESERVATION SYSTEM

44

mutation testingmethods.

static testing- White box testing includes all static testing.

Code completeness evaluation


White box testing methods can also be used to evaluate the completeness of a test
suite that was created with black box testing methods. This allows the software team to
examine parts of a system that are rarely tested and ensures that the most important
function point shave been tested
Two common forms of code coverage are:
function coverage, which reports on functions executed
And statement coverage ,which reports on the number of lines executed to complete the
test.
They both return a coverage metric, measured as a percentage

DATA FLOW DIAGRAM

DFD FOR PAYMENT

RAILWAY RESERVATION SYSTEM

45

Customer

Payment

Update
Account

Account

Account

ADVANTAGES OF RAILWAY RESERVATION SYSTEM


Now one can easily plan the journey comfortably as the process is efficient and fast
with being easy to access.Reservations can be made through theIndian railways site or at
the ample reservation centres all over the country.Also now there are authorised agencies
which provide reservation facility on behalf of India railways and without waiting in long
line one can easily book a ticket. The booking is done through an E- Ticket issue which
have a PNR number of which one has to take a print and just have to show at the station.
It not only provide reservation but cancellation can also be done through this system
at ease and one can use a credit card to complete the process.
This being a big step in terms of improvement in the railway system it is widely
accepted across the country.

HARDWARE REQUIREMENTS
1. OPERATING SYSTEM :Any
2. PROCESSOR:
PENTIUM(ANY) OR AMD ATHA LON( 3800+- 4200+ DUALCORE)
3. MOTHERBOARD

RAILWAY RESERVATION SYSTEM

46

845 OR 915,995 FOR PENTIUM0R MSI K9MM-V VIAK8M800+8237R PLUS CHIPSET


FOR AMD ATHA LON
4. RAM:512MB+
5. Hard disk:
Sata 40 gb or above
6. CD/DVD r/w multi drive combo
7. FLOPPY DRIVE 1.44 MB
8. MONITOR 14.1 or 15 -17 inch
9. Key board and mouse
10. Printer

System Requirements
Windows
A. Hardware
1. Recommended
Intel Core 2 Duo processor or Intel Xeon processor or higher
2. Minimum Requirements
One of the following processors
Intel Pentium 4 processor family and higher
Intel(R) Xeon Phi(TM) coprocessor
Non Intel processors compatible with the above processors
B. Software
1. Recommended
Intel(R) Parallel Studio XE 2013 SP1
Intel(R) Parallel Studio XE 2015 Professional Edition
2. Minimum Requirements
One of the following operating systems:
Microsoft* Windows* 8, 8.1
Microsoft* Windows* 7 SP1
Microsoft* Windows* Server 2012
Microsoft* Windows* Server 2008 SP2 (IA-32 only)
Microsoft* Windows* Server 2008 R2 SP1
Microsoft* Windows* HPC Server 2008
One of the following compilers:
Intel(R) C++ Compiler 13.1 (Intel(R) Parallel Studio XE 2013 SP1) and higher
Microsoft* Visual C++ 10.0 (Microsoft* Visual Studio* 2010, Windows* OS only) and
higher
Linux
A. Hardware

RAILWAY RESERVATION SYSTEM

47

1. Recommended
Intel Core 2 Duo processor or Intel Xeon processor or higher
Intel Xeon Phi coprocessor
2. Minimum Requirements
One of the following processors
Intel Pentium 4 processor family and higher
Intel(R) Xeon Phi(TM) coprocessor
Non Intel processors compatible with the above processors
B. Software
1. Recommended
Intel(R) Parallel Studio XE 2013 SP1
Intel(R) Parallel Studio XE 2015 Professional Edition
2. Minimum Requirements
One of the following operating systems:
Red Hat* Enterprise Linux* 5, 6, 7
Fedora* 20
Debian* 6.0, 7
Ubuntu* 12.04 LTS, 14.04 LTS
Ubuntu* 13.10
SuSE* Linux* Enterprise Server 11
Intel(R) Cluster Ready
One of the following compilers:
Intel(R) C++ Compiler 13.1 (Intel(R) Parallel Studio XE 2013 SP1) and higher
For each supported Linux* operating system, the standard gcc version provided with
that operating system is supported, including gcc 4.1 through 4.8.2

OS X
A. Hardware
1. Recommended
Intel(R) Core(TM) 2 Duo processor or higher
B. Software
1. Recommended
Intel(R) Parallel Studio XE 2013 SP1
Intel(R) Parallel Studio XE 2015 Professional Edition
2. Minimum Requirements
One of the following operating systems:
OS X* 10.9 and higher
One of the following compilers:
Xcode* 5.0 and higher and command line tools
Intel(R) C++ Compiler 13.1 (Intel(R) Parallel Studio XE 2013 SP1) and higher

FUTURE SCOPE

RAILWAY RESERVATION SYSTEM

48

If anyone wants to extend this project then he/she can make an additional database
of Train Fare. And database for updated availability of seats which is available after the
cancellation of ticket on that specific train etc. He/she can also add some more command
buttons in the existing software and extend working of the existing software.
Implementations of this project idea are in industrial use. Hence, this can be used for
suggesting improvements in design, performance and greater usability. Apart from the
industrial applications, it is a research-oriented project as well, the task of performance
evaluation of different database designs, for efficiency, is in this spirit.

BIBLIOGRAPHY
These are the following links which assist meat each and every step in completing this
project , without them i was not be able to finish this important project:1. www.google.com
2. www.irctc.com
3. www.etrain.info
4. www.scribd.com
5. www.wikipedia.com
6. www.answers.com
7. www.askme.com
8. www.esnips.com
9. www.threadingbuildingblocks.org

Recommended Books:
1. Lafore R., Object Oriented Programming in C++, Waite Group.
2. E. Balagurusamy, Object Oriented Programming with C++, Tata McGraw Hill.
3. Kanetkar Yashavant P., Let Us C++, BPB Publications.
4. Bjarne Stroustrup, The C++ Programming Language, Addison Wesley.
5. Herbert Schildt, The Complete Reference to C++Language, McGraw Hill-Osborne.
6. Lippman F. B, C++ Primer, Addison Wesley.
7. Farrell, Object Oriented using C++, Cengage Learning.

RAILWAY RESERVATION SYSTEM

49