#include <iostream> #include <fstream> #include <string.h> #include <time.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[10]; void getid() { cout << "\nEnter your id:"; std::cin >> id; std::cout << "Enter the Password: "; std::cin >> password; std::cout << "\n"; strcpy(pass,password); } void displayid() { std::cout << "\n|" << "User ID:" << "\t" << "|" << "Password\n"; std::cout << "|" << id << "\t\t" << "|" << pass << "\n\n"; } }; 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() { std::cout << "\n--Add New details--\n"; std::cout << "Train no: "; std::cin >> tno; std::cout << "Train Name: "; std::cin >> tname; std::cout << "Boarding point: "; std::cin >> bp; std::cout << "Destination pt: "; std::cin >> dest; std::cout << "No of seats in first class & fare per ticket: "; std::cin >> c1 >> c1fare; std::cout << "No of seats in second class & fare per ticket: "; std::cin >> c2 >> c2fare; std::cout << "Date of travel\n"; std::cout << "Day: "; std::cin >> d; std::cout << "Month: "; std::cin >> m; std::cout << "Year: "; std::cin >> y; } void displaydetail() { std::cout << "\n|Train No." << "\t" << "|Train Name" << "\t" << "|Boarding pt." << "\t" << "|Destination pt." <<"\t"; std::cout << "|F-Class" << "\t"<< "|F-Class Fare" << "\t" << "|S-Class" << "\t" << "|S-Class Fare" <<"\t"; std::cout << "|Day" << "-" << "Month" << "-" << "Year" << "\n"; std::cout << "|" << tno << "\t\t" << "|" << tname << "\t\t" << "|" << bp << "\t\t" << "|" << dest <<"\t\t\t"; std::cout << "|" << c1 << "\t\t" << "|"<< c1fare << "\t\t" << "|" << c2<< "\t\t" << "|" << c2fare <<"\t\t"; std::cout << "|" << d << "-" << m << "-" << y << "\n"; } }; class reser { public: int pnr; 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:"; cin>>tname; cout<<"Boarding point:"; cin>>bp; cout<<"Destination pt:"; cin>>dest; cout<<"No of seats required:"; cin>>nosr; for(i=0;i<nosr;i++) { cout<<"Passenger name:"; std::cin >> pname[i]; cout<<"Passenger age:"; std::cin>>age[i]; } cout<<"Enter the class f-first class s-second class:"; std::cin >> clas; cout<<"Date of travel:"; std::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"; std::cin>>con; cout<<"…………END OF GETTING DETAILS…………\n"; } void displayresdet() { cout<<"Pnr no: "<<pnr; cout<<"\nTrain no: "<<tno; cout<<"\nTrain name: "<<tname; cout<<"\nBoarding point: "<<bp; cout<<"\nDestination pt: "<<dest; cout<<"\nNo of seats reserved: "<<nosr; for(i=0;i<nosr;i++) { cout<<"\nPassenger 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"; } }; 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; float amr; void getcancdet() { std::cout << "Enter the details as follows\n"; std::cout << "Pnr no:"; std::cin >> pnr; std::cout << "Date of cancellation:"; std::cin >> d >> m >> y; std::cout << "………..END OF GETTING DETAILS………..\n"; } void displaycancdet() { std::cout << "…………………………………….\n"; std::cout << "…………………………………….\n"; std::cout << "Pnr no:" << pnr; std::cout << "\nTrain no:" << tno; std::cout << "\nTrain name:"; std::cout << tname; std::cout << "Boarding point:"; std::cout << bp; std::cout << "Destination pt:"; std::cout << dest; cout << "\nYour class:"; std::cout << clas; cout << "no of seats to be cancelled:" << nosc; for (i = 0; i < nosc; i++) { std::cout << "Passenger name:"; std::cout << pname[i]; std::cout << "passenger age:" << age[i]; } std::cout << "\nDate of cancellation:" << d << "-" << m << "-" << y; std::cout << "\nYou can collect:" << amr << "rs" << endl; std::cout << "*****************************************\n"; std::cout << "………END OF CANCELLATION………….\n"; std::cout << "*****************************************\n"; } }; void manage(); void can(); void user(); void database(); void res(); void reserve(); void displaypassdetail(); void cancell(); void enquiry(); int main(void) { int ch; std::cout << "----- RAILWAY RESERVATION SYSTEM ----- \n"; do { std::cout << "\n MAIN MENU \n"; std::cout << "1.Admin mode\n2.User mode\n3.Exit \n"; std::cout << "Enter your choice : "; std::cin >> ch; switch(ch) { case 1: database(); break; case 2: user(); break; default: exit(0); } }while(ch<3); return 0; } void database() { char password[10]; char pass[10] = "admin"; std::cout << "\nEnter the Admin Password: "; std::cin >> password; Detail a; fstream f; int ch; char c; if(strcmp(pass,password)!=0) { std::cout << "Enter the password correctly \n"; std::cout << "You are not permitted to login this mode\n"; } if(strcmp(pass,password)==0) { char c; do { std::cout << "\n --- ADMINISTRATOR MENU --- \n"; std::cout << "1. Create detail Database \n"; std::cout << "2. Add details \n"; std::cout << "3. Display details \n"; std::cout << "4. User Management \n"; std::cout << "5. Diplay Passenger details \n"; std::cout << "6. Return to Main Menu \n"; std::cout << "Enter your choice : "; std::cin >> ch; switch(ch) { case 1: f.open("t.txt",ios::out|ios::binary); do { a.getDetail(); f.write((char *) & a,sizeof(a)); cout << "\nDo you want to add one more record?\n"; cout << "y-for Yes\nn-for No\n"; 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); } } void reserve() { int ch; do { std::cout << "1.Reserve\n2.Return to the main menu\n"; std::cout << "Enter your choice:"; std::cin >> ch; std::cout << endl; switch (ch) { case 1: res(); break; } } while (ch == 1); } 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.tellg(); ad = sizeof(a.c1); f1.seekp(addr - (7 * ad)); a.c1 = a.c1 - b.nosr; 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-----Your ticket is reserved-----\n"; } else { cout << "**********Sorry req seats not available********\n"; } } else if (strcmp(b.clas, s) == 0) { if (a.c2 >= b.nosr) { amt = a.c2fare; addr = f1.tellg(); 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-----Your ticket is reserved-----\n"; } else { cout << "********Sorry req no of seats not available*******\n"; } } } else { flag = 0; } } if (flag == 0) { cout << "!\n"; } f1.close(); f2.close(); } void displaypassdetail() { std::cout << "\n--------Passenger Details--------\n"; 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(); } void enquiry() { fstream f; f.open("t.txt",ios::in|ios::out|ios::binary); Detail a; while(f.read((char *) & a,sizeof(a))) { a.displaydetail(); } } 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) { 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(); } } } 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"; 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(); } void can() { int ch; do { cout << "……………..CANCELLATION MENU………\n"; cout << "1.Cancel\n2.Return to the main menu\n"; cout << "Enter your choice:"; cin >> ch; cout << endl; switch (ch) { case 1: cancell(); break; } } while (ch == 1); } void user() { login a; int ch; cout<<"\n-----Login User-----\n"; char password[10]; fstream f; f.open("id.txt",ios::in|ios::out|ios::binary); char id[100]; std::cout << "Enter your ID : "; std::cin >> id; std::cout << "Enter your Password : "; std::cin >> password; while(f.read((char *) & a,sizeof(a))) { if((strcmp(a.id,id)==0)&&(strcmp(a.pass,password)==0)) { do { std::cout<<"\n1.Reserve\n2.Cancel\n3.Enquiry\n4.Return to the main menu\n"; cout<<"Enter your choice:"; cin>>ch; switch(ch) { case 1: reserve(); break; case 2: cancell(); break; case 3: enquiry(); break; } }while(ch<=3); } else { d=1; } } if(d==1) { cout<<"Enter your user id and password correctly\n"; } } void manage() { int ch; fstream f; char c; login a; std::cout<<"\n---WELCOME TO THE USER MANAGEMENT MENU---\n"; do { std::cout << "1. Create id database\n"; std::cout << "2. Add details\n"; std::cout << "3. Display details\n"; std::cout << "4. Return to the main menu\n"; std::cout << "Enter your choice: "; std::cin>>ch; switch(ch) { case 1: f.open("id.txt",ios::out|ios::binary); do { a.getid(); f.write((char *) & a,sizeof(a)); std::cout << "Do you want to add one more record\n"; std::cout << "y-Yes\nn-No\n"; std::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); }
Write, Run & Share C++ code online using OneCompiler's C++ online compiler for free. It's one of the robust, feature-rich online compilers for C++ language, running on the latest version 17. Getting started with the OneCompiler's C++ compiler is simple and pretty fast. The editor shows sample boilerplate code when you choose language as C++
and start coding!
OneCompiler's C++ online compiler supports stdin and users can give inputs to programs using the STDIN textbox under the I/O tab. Following is a sample program which takes name as input and print your name with hello.
#include <iostream>
#include <string>
using namespace std;
int main()
{
string name;
cout << "Enter name:";
getline (cin, name);
cout << "Hello " << name;
return 0;
}
C++ is a widely used middle-level programming language.
When ever you want to perform a set of operations based on a condition If-Else is used.
if(conditional-expression) {
//code
}
else {
//code
}
You can also use if-else for nested Ifs and If-Else-If ladder when multiple conditions are to be performed on a single variable.
Switch is an alternative to If-Else-If ladder.
switch(conditional-expression){
case value1:
// code
break; // optional
case value2:
// code
break; // optional
......
default:
code to be executed when all the above cases are not matched;
}
For loop is used to iterate a set of statements based on a condition.
for(Initialization; Condition; Increment/decrement){
//code
}
While is also used to iterate a set of statements based on a condition. Usually while is preferred when number of iterations are not known in advance.
while (condition) {
// code
}
Do-while is also used to iterate a set of statements based on a condition. It is mostly used when you need to execute the statements atleast once.
do {
// code
} while (condition);
Function is a sub-routine which contains set of statements. Usually functions are written when multiple calls are required to same set of statements which increases re-usuability and modularity. Function gets run only when it is called.
return_type function_name(parameters);
function_name (parameters)
return_type function_name(parameters) {
// code
}