#include #include #include #include #include using namespace std; struct DATE { int mday, mon, year, hour, min; }; inline void eatline() { while (cin.get() != '\n') continue; } class airlineReservation { public: airlineReservation(); airlineReservation(int rn, char *dept, char *dest, int fca, int fcs, int csa, int css, DATE deptT, DATE arvT); DATE AssingArrvDT(int mday, int mon, int year, int hour, int min ); DATE AssingDeptDT(int mday, int mon, int year, int hour, int min ); void DisplayDeptDT(); void DisplayArrvDT(); void CreateReservation(); void DisplayReservation(); void ReadFromFile(); void WriteToFile(airlineReservation& a); void UpdateReservation(); void DeleteReservation(); airlineReservation& Reserve(); airlineReservation& operator=(airlineReservation& a); private: DATE AssignTarih(int mday, int mon, int year, int hour, int min ); int m_flightNumber; char m_departureCity[20]; char m_destinationCity[20]; int m_firstClassSeatsAv; int m_firstClassSeatsSold; int m_coachSeatsAv; int m_coachSeatsSold; DATE m_departureTime; DATE m_arrivalTime; }; airlineReservation& airlineReservation::Reserve() { int day, month, year, hour, min; cout << "Enter Flight Number\n"; cin >> m_flightNumber; cin.ignore(); cout << "Enter Departure City\n"; cin.getline( m_departureCity, 20); cout << "Enter Arrival City\n"; cin.getline( m_destinationCity, 20); cout << "Enter Departure Date ( dd mm yyyy)\n"; cin >> day >> month >> year; cout << "Enter Departure Time (hh min)\n"; cin >> hour >> min; m_departureTime = AssingDeptDT(day, month, year, hour, min); cout << "Enter Arrival Date ( dd mm yyyy)\n"; cin >> day >> month >> year; cout << "Enter Arrival Time (hh min)\n"; cin >> hour >> min; m_arrivalTime = AssingArrvDT(day, month, year, hour, min); cout << "Enter First Class seats available\n"; cin >> m_firstClassSeatsAv; cout << "Enter First Class seats sold\n"; cin >> m_firstClassSeatsSold; cout << "Enter Coach Seats available\n"; cin >> m_coachSeatsAv; cout << "Enter Coach Seats sold\n"; cin >> m_coachSeatsSold; return *this; } airlineReservation::airlineReservation() { cout << "Constructor\n"; } airlineReservation::airlineReservation(int rn, char *dept, char *dest, int fca, int fcs, int csa, int css, DATE deptT, DATE arvT) { m_flightNumber = rn; strcpy(m_departureCity, dept); strcpy(m_destinationCity, dest); m_firstClassSeatsAv = fca; m_firstClassSeatsSold = fcs; m_coachSeatsAv = csa ; m_coachSeatsSold = css; m_departureTime = deptT; m_arrivalTime = arvT ; } airlineReservation& airlineReservation::operator=(airlineReservation& a) { cout << "my copy const\n"; m_flightNumber = a.m_flightNumber ; strcpy(m_departureCity, a.m_departureCity); strcpy(m_destinationCity, a.m_destinationCity); m_firstClassSeatsAv = a.m_firstClassSeatsAv; m_firstClassSeatsSold = a. m_firstClassSeatsSold; m_coachSeatsAv = a.m_coachSeatsAv; m_coachSeatsSold = a.m_coachSeatsSold; m_departureTime.mday = a.m_departureTime.mday; m_departureTime.mon = a.m_departureTime.mon; m_departureTime.year = a.m_departureTime.year; m_departureTime.hour = a.m_departureTime.hour; m_departureTime.min = a.m_departureTime.min; m_arrivalTime.mday = a.m_arrivalTime.mday; m_arrivalTime.mon = a.m_arrivalTime.mon; m_arrivalTime.year = a.m_arrivalTime.year; m_arrivalTime.hour = a.m_arrivalTime.hour; m_arrivalTime.min = a.m_arrivalTime.min; return *this; } DATE airlineReservation::AssignTarih(int mday, int mon, int year, int hour, int min ) { DATE t; t.mday = mday; t.mon = mon; t.year = year; t.hour = hour; t.min = min; return t; } DATE airlineReservation::AssingArrvDT(int mday, int mon, int year, int hour, int min ) { m_arrivalTime = AssignTarih(mday, mon, year, hour, min); return m_arrivalTime; } void airlineReservation::DisplayArrvDT() { cout << m_arrivalTime.mday << "." << m_arrivalTime.mon << "." << m_arrivalTime.year << "\n"; cout << m_arrivalTime.hour << ":" << m_arrivalTime.min << "\n"; } DATE airlineReservation::AssingDeptDT(int mday, int mon, int year, int hour, int min ) { m_departureTime = AssignTarih(mday, mon, year, hour, min); return m_departureTime; } void airlineReservation::DisplayDeptDT() { cout << m_departureTime.mday << "." << m_departureTime.mon << "." << m_departureTime.year << "\n"; cout << m_departureTime.hour << ":" << m_departureTime.min << "\n"; } void airlineReservation::CreateReservation() { airlineReservation temp; temp = Reserve(); WriteToFile(temp); } void airlineReservation::WriteToFile(airlineReservation &a) { fstream f("hadebakalim.txt", ios::binary | ios::out | ios::app ); if (!f) { cerr << "cannot write\n"; system("PAUSE"); exit(1); } f.write(reinterpret_cast (&a), sizeof(airlineReservation)); } void airlineReservation::ReadFromFile() { airlineReservation a; int i = 1; fstream f("hadebakalim.txt", ios::in | ios::binary ); while(f.read(reinterpret_cast (&a), sizeof(a))) { cout << "\n\n\nrecord" << i <<" :....\n\n"; a.DisplayReservation(); i++; } } void airlineReservation::UpdateReservation() { airlineReservation a, temp; int resNo; char press; ReadFromFile(); cout << "enter the record number of the reservation to update...\n"; cin >> resNo; eatline(); streampos place = (resNo - 1) * sizeof(airlineReservation); fstream f("hadebakalim.txt", ios::out | ios::binary | ios::in); f.seekg(place); f.read(reinterpret_cast (&a), sizeof(a)); cout << "Your record to update is...\n"; a.DisplayReservation(); cout << "\nUpdate is Starting...\nPress Y to continue, or N to exit...\n"; cin >> press; if (press == tolower('y')) { temp = Reserve(); f.seekp(place); f.write(reinterpret_cast (&temp), sizeof(temp)) << flush; cout << "\nthe updated record is...\n"; temp.DisplayReservation(); } else if (press == tolower('n')) { cout << "\nexiting...\n"; exit(0); } else { cerr << "\nnon defined key.. exiting.\n"; exit(1); } } void airlineReservation::DeleteReservation() { //is not working... try again... airlineReservation a ; int resNo; char press; ReadFromFile(); cout << "enter the record number of the reservation to delete...\n"; cin >> resNo; eatline(); streampos place = ((resNo - 1) * sizeof(airlineReservation)); fstream f("hadebakalim.txt", ios::out | ios::binary | ios::in); f.seekg(place); f.read(reinterpret_cast (&a), sizeof(a)); cout << "Your record to delete is...\n"; a.DisplayReservation(); cout << "\ndelete is Starting...\nPress Y to continue, or N to exit...\n"; cin >> press; if (press == tolower('y')) { f.seekp(place); f.write(reinterpret_cast (&a), sizeof(a)) << flush; cout << "\nthe record is deleted...\n"; } else if (press == tolower('n')) { cout << "\nexiting...\n"; exit(0); } else { cerr << "\nnon defined key.. exiting.\n"; exit(1); } } void airlineReservation::DisplayReservation() { cout << "Flight Number:" << m_flightNumber <<"\n"; cout << "Departure City:" << m_departureCity << "\n"; cout << "Destination City:" << m_destinationCity << "\n"; cout << "Date and time of Departure\n"; cout << m_departureTime.mday << "." << m_departureTime.mon << "." << m_departureTime.year << " Time - "; cout << m_departureTime.hour << ":" << m_departureTime.min << "\n"; cout << "Date and time of Arrival\n"; cout << m_arrivalTime.mday << "." << m_arrivalTime.mon << "." << m_arrivalTime.year << " Time - "; cout << m_arrivalTime.hour << ":" << m_arrivalTime.min << "\n"; cout << "Number of first class seats available: "; cout << m_firstClassSeatsAv; cout << "\nNumber of first class seats sold: "; cout << m_firstClassSeatsSold; cout << "\nNumber of coach seats available: "; cout << m_coachSeatsAv; cout << "\nNumber of first class seats available: "; cout << m_coachSeatsSold << endl; } int main() { airlineReservation res; //res.CreateReservation(); //cout << "reading........"; //res.DisplayReservation(); //res.ReadFromFile(); //res.UpdateReservation(); //res.DeleteReservation(); system("PAUSE"); return 0; }