#include #include #include #include "sorted.cpp" #include "person.cpp" #include "Airplane.cpp" using namespace std; const char delim[] = " \t\n\r"; // ÅäÅ«¿¡¼­ ±¸ºÐÀÚ void PrintBooker(AirPlane T) { SortedType Book = T.Booker; int l = Book.LengthIs(); Book.ResetList(); Person t; cout << "========= ¿¹¾àÀÚ ¸®½ºÆ® =======" << endl; cout << T.STime << "¿¡ " << T.Start << "¿¡¼­ " << T.Dest << "·Î °¡´Â ºñÇà±âÀÇ ¿¹¾àÀÚ ¸í´ÜÀº ´ÙÀ½°ú °°½À´Ï´Ù." << endl; for(int i = 0 ; i < l ; i++) { Book.GetNextItem(t); cout << t.name << "\t" << t.id << endl; } cout << "ÃÑ " << l << "¸íÀÇ ¿¹¾àÀÚ°¡ ÀÖ½À´Ï´Ù." << endl; } //--------------------------------------------------------------------------- int main() { char* Commands[8]; char* tok = " "; // ÅäÅ«À» ÃʱâÈ­ ¾ÈÇØÁÖ¸é ¾ÈµÅ¿ä -_-;; ¿¿³¯¿£ ¾ÈÇØÁ൵ µÆ´Âµ¥ ¿Ö ÀÌ·¯Áö -_- char strGets[80]; int i; SortedType MainAir; while(1) { cin.getline(strGets, 79); // ¸í·É¾î¸¦ ÀÔ·ÂÀ» ¹Þ°í //ÅäÅ« ºÐ¸® Commands[0] = strtok(strGets, delim); i = 1; while(tok) { tok = strtok(NULL, delim); Commands[i] = tok; i++; } //ÅäÅ« ºÐ¸® ³¡ tok = " "; //´ÙÀ½ ÅäÅ« ºÐ¼®À» À§Çؼ­ NULL°ªÀ» ÀÏ´Ü Áö¿öÁØ´Ù if(strcmp("ºñÇà±âÀÔ·Â",Commands[0])==0) { AirPlane TempAir; TempAir.Flight = Commands[1]; TempAir.Seats = atoi(Commands[2]); TempAir.Start = Commands[3]; TempAir.Dest = Commands[4]; TempAir.STime = Commands[5]; TempAir.ETime = Commands[6]; TempAir.key = string(Commands[3]) + string(Commands[4]) + string(Commands[5]); bool bTmp; MainAir.RetrieveItem(TempAir, bTmp); if(!bTmp) { MainAir.InsertItem(TempAir); cout << "ºñÇà±â°¡ ÀԷµǾú½À´Ï´Ù" << endl; } else { cout << "Ãâ¹ßÁö, µµÂøÁö, Ãâ¹ß½Ã°£ÀÌ µ¿ÀÏÇÑ ºñÇà±â°¡ ÀÌ¹Ì Á¸ÀçÇÕ´Ï´Ù" << endl; } } else if(strcmp("ºñÇà±âÈ®ÀÎ",Commands[0])==0) { AirPlane TempAir; bool bStart = false, bDest = false; // Ãâ¹ßÁö¿Í µµÂøÁö°¡ ÀÖ´ÂÁö ÀúÀåÇÏ´Â Àӽú¯¼ö cout << "Ãâ¹ßÁö¿¡¼­ ¸ñÀûÁö±îÁö ÇöÀç ÀÌ¿ë °¡´ÉÇÑ ºñÇà±âµéÀº ´ÙÀ½°ú °°½À´Ï´Ù." << endl; int l = MainAir.LengthIs(); MainAir.ResetList(); for(int i = 0 ; i < l ; i++) { MainAir.GetNextItem(TempAir); if(!TempAir.LandOff) { if(TempAir.Start == Commands[1]) { bStart = true; if(TempAir.Dest == Commands[2]) { bDest = true; cout << TempAir.Flight << " " << TempAir.STime << " " << TempAir.ETime << endl; } } } } if(!bStart) cout << "Ãâ¹ßÁöÀÇ ºñÇà±â°¡ ¾ø½À´Ï´Ù." << endl; else if(!bDest) cout << "µµÂøÁöÀÇ ºñÇà±â°¡ ¾ø½À´Ï´Ù." << endl; cout << "--------------------------------------------------------------------" << endl; } else if(strcmp("¿¹¾à", Commands[0]) == 0){ Person Book; Book.name = Commands[1]; Book.id = Commands[2]; Book.key = Book.name + Book.id; AirPlane TempAir; TempAir.Start = Commands[3]; TempAir.Dest = Commands[4]; TempAir.STime = Commands[5]; TempAir.key = string(Commands[3]) + string(Commands[4]) + string(Commands[5]); bool bTmp; MainAir.RetrieveItem(TempAir, bTmp); if(bTmp) { // ºñÇà±â°¡ ÀÖÀ¸¸é MainAir.ResetList(); // while(TempAir.key != (MainAir.GetNextItem()).key) while(1) { AirPlane TempAir2; MainAir.GetNextItem(TempAir2); if(TempAir.key == TempAir2.key) break; } // ºñÇà±â¸¦ ã¾Æ°£´Ù NodeType* TAir = new NodeType; TAir = MainAir.GetCurPointer(); bool found; TAir->info.Booker.RetrieveItem(Book, found); if(TAir->info.LandOff) { cout << "ºñÇà±â°¡ ÀÌ¹Ì ÀÌ·úÇÏ¿´½À´Ï´Ù. " << endl; } else if(TAir->info.curSeats >= TAir->info.Seats) { cout << "Á¼®ÀÌ ¾ø½À´Ï´Ù" << endl; } else if(found) { cout << "ÀÌ¹Ì ¿¹¾àµÇ¾î ÀÖ½À´Ï´Ù." << endl; } else { TAir->info.Booker.InsertItem(Book); TAir->info.curSeats++; } } else { // ºñÇà±â°¡ ¾øÀ¸¸é bool bStart = false, bDest = false; //, bSTime = false; // Ãâ¹ßÁö¿Í µµÂøÁö°¡ ÀÖ´ÂÁö ÀúÀåÇÏ´Â Àӽú¯¼ö int l = MainAir.LengthIs(); MainAir.ResetList(); for(int i = 0 ; i < l ; i++) { MainAir.GetNextItem(TempAir); if(TempAir.Start == Commands[3]) { bStart = true; if(TempAir.Dest == Commands[4]) { bDest = true; //if(TempAir.STime == commands[5]) { bSTime = false; } //Ãâ¹ßÁö¿Í µµÂøÁö°¡ Àִµ¥ ºñÇà±â°¡ ¾øÀ¸¸é ½Ã°£ÀÌ Æ²¸°°æ¿ì Çϳª»Ó! } } } if(!bStart) cout << "Ãâ¹ßÁöÀÇ ºñÇà±â°¡ ¾ø½À´Ï´Ù." << endl; else if(!bDest) cout << "µµÂøÁöÀÇ ºñÇà±â°¡ ¾ø½À´Ï´Ù." << endl; else cout << "Ãâ¹ß½Ã°£¿¡ Ãâ¹ßÇÏ´Â ºñÇà±â°¡ ¾ø½À´Ï´Ù" << endl; cout << "--------------------------------------------------------------------" << endl; } } else if(strcmp("Ãë¼Ò", Commands[0]) == 0){ Person Book; Book.name = Commands[1]; Book.id = Commands[2]; Book.key = Book.name + Book.id; AirPlane TempAir; TempAir.Start = Commands[3]; TempAir.Dest = Commands[4]; TempAir.STime = Commands[5]; TempAir.key = string(Commands[3]) + string(Commands[4]) + string(Commands[5]); bool bTmp; MainAir.RetrieveItem(TempAir, bTmp); if(bTmp) { // ºñÇà±â°¡ ÀÖÀ¸¸é MainAir.ResetList(); // while(TempAir.key != (MainAir.GetNextItem()).key); while(1) { AirPlane TempAir2; MainAir.GetNextItem(TempAir2); if(TempAir.key == TempAir2.key) break; } NodeType* TAir; TAir = MainAir.GetCurPointer(); bool bTmp2; TAir->info.Booker.RetrieveItem(Book, bTmp2); if(TAir->info.LandOff) { cout << "ºñÇà±â°¡ ÀÌ¹Ì ÀÌ·úÇÏ¿´½À´Ï´Ù. " << endl; } else if(!bTmp2) { cout << "¿¹¾àÀÚ À̸§°ú id_No ÀÔ·Â ¿À·ù" << endl; } else { TAir->info.Booker.DeleteItem(Book); TAir->info.curSeats--; } } else { // ºñÇà±â°¡ ¾øÀ¸¸é bool bStart = false, bDest = false; //, bSTime = false; // Ãâ¹ßÁö¿Í µµÂøÁö°¡ ÀÖ´ÂÁö ÀúÀåÇÏ´Â Àӽú¯¼ö int l = MainAir.LengthIs(); MainAir.ResetList(); for(int i = 0 ; i < l ; i++) { MainAir.GetNextItem(TempAir); if(TempAir.Start == Commands[3]) { bStart = true; if(TempAir.Dest == Commands[4]) { bDest = true; //if(TempAir.STime == commands[5]) { bSTime = false; } //Ãâ¹ßÁö¿Í µµÂøÁö°¡ Àִµ¥ ºñÇà±â°¡ ¾øÀ¸¸é ½Ã°£ÀÌ Æ²¸°°æ¿ì Çϳª»Ó! } } } if(!bStart) cout << "Ãâ¹ßÁö ÀÔ·Â ¿À·ù" << endl; else if(!bDest) cout << "µµÂøÁö ÀÔ·Â ¿À·ù" << endl; else cout << "Ãâ¹ß½Ã°£ ÀÔ·Â ¿À·ù" << endl; } } else if(strcmp("¿¹¾àÈ®ÀÎ", Commands[0]) == 0){ bool found = false; Person Book; Book.name = Commands[1]; Book.id = Commands[2]; Book.key = Book.name + Book.id; AirPlane TempAir; int l = MainAir.LengthIs(); MainAir.ResetList(); for(int i = 0 ; i < l ; i++) { MainAir.GetNextItem(TempAir); bool bTmp; TempAir.Booker.RetrieveItem(Book, bTmp); if(bTmp) { cout << Book.name << "," << Book.id << "ÀÇ ¿¹¾à »óȲÀº ´ÙÀ½°ú °°½À´Ï´Ù" << endl; cout << TempAir.Flight << ", " << TempAir.Start << " " << TempAir.Dest << " " << TempAir.STime << endl; found = true; } } if(!found) { cout << Book.name << "," << Book.id << "Àº ¿¹¾àÀÚ ¸í´Ü¿¡ ¾ø½À´Ï´Ù." << endl; } } else if(strcmp("¿¹¾àÀÚ¸®½ºÆ®", Commands[0]) == 0){ AirPlane TempAir; TempAir.Flight = Commands[1]; // Todo: Æí¸í ÀÔ·Â. ¼öÁ¤¿ä¸Á TempAir.Start = Commands[2]; TempAir.Dest = Commands[3]; TempAir.STime = Commands[4]; TempAir.key = string(Commands[2]) + string(Commands[3]) + string(Commands[4]); bool bTmp; MainAir.RetrieveItem(TempAir, bTmp); if(bTmp) { MainAir.ResetList(); // while(TempAir.key != (MainAir.GetNextItem()).key); while(1) { AirPlane TempAir2; MainAir.GetNextItem(TempAir2); if(TempAir.key == TempAir2.key) break; } NodeType* TAir; TAir = MainAir.GetCurPointer(); if(TAir->info.Flight == Commands[1]) { if(TAir->info.LandOff){ cout << "ºñÇà±â°¡ ÀÌ¹Ì ÀÌ·úÇÏ¿´½À´Ï´Ù." << endl; } else { PrintBooker(TAir->info); } } else{ cout << "Æí¸íÀÇ ºñÇà±â°¡ ¾ø½À´Ï´Ù." << endl; } } else { // ºñÇà±â°¡ ¾øÀ¸¸é bool bStart = false, bDest = false; // Ãâ¹ßÁö¿Í µµÂøÁö°¡ ÀÖ´ÂÁö ÀúÀåÇÏ´Â Àӽú¯¼ö int l = MainAir.LengthIs(); MainAir.ResetList(); for(int i = 0 ; i < l ; i++) { MainAir.GetNextItem(TempAir); if(TempAir.Start == Commands[2]) { bStart = true; if(TempAir.Dest == Commands[3]) { bDest = true; } } } if(!bStart) cout << "Ãâ¹ßÁö ÀÔ·Â ¿À·ù" << endl; else if(!bDest) cout << "µµÂøÁö ÀÔ·Â ¿À·ù" << endl; else cout << "Ãâ¹ß½Ã°£ ÀÔ·Â ¿À·ù" << endl; } } else if(strcmp("ºñÇà±âÀÌ·ú", Commands[0]) == 0){ AirPlane TempAir; TempAir.Flight = Commands[1]; // Todo: Æí¸í ÀÔ·Â. ¼öÁ¤ÇÒ °Í ¸¹À½. TempAir.Start = Commands[2]; TempAir.Dest = Commands[3]; TempAir.STime = Commands[4]; TempAir.key = string(Commands[2]) + string(Commands[3]) + string(Commands[4]); bool bTmp; MainAir.RetrieveItem(TempAir, bTmp); if(bTmp) { // ºñÇà±â°¡ ÀÖÀ¸¸é MainAir.ResetList(); // while(TempAir.key != (MainAir.GetNextItem()).key); while(1) { AirPlane TempAir2; MainAir.GetNextItem(TempAir2); if(TempAir.key == TempAir2.key) break; } NodeType* TAir; TAir = MainAir.GetCurPointer(); if(TAir->info.Flight == Commands[1]) { if(TAir->info.LandOff) { cout << "ºñÇà±â°¡ ÀÌ¹Ì ÀÌ·úÇÏ¿´½À´Ï´Ù. " << endl; } else { TAir->info.LandOff = true; cout << "ºñÇà±â°¡ ÀÌ·úÇÏ¿´½À´Ï´Ù." << endl; } } else{ cout << "Æí¸íÀÇ ºñÇà±â°¡ ¾ø½À´Ï´Ù." << endl; } } else { // ºñÇà±â°¡ ¾øÀ¸¸é bool bStart = false, bDest = false; // Ãâ¹ßÁö¿Í µµÂøÁö°¡ ÀÖ´ÂÁö ÀúÀåÇÏ´Â Àӽú¯¼ö int l = MainAir.LengthIs(); MainAir.ResetList(); for(int i = 0 ; i < l ; i++) { MainAir.GetNextItem(TempAir); if(TempAir.Start == Commands[2]) { bStart = true; if(TempAir.Dest == Commands[3]) { bDest = true; } } } if(!bStart) cout << "Ãâ¹ßÁö ÀÔ·Â ¿À·ù" << endl; else if(!bDest) cout << "µµÂøÁö ÀÔ·Â ¿À·ù" << endl; else cout << "Ãâ¹ß½Ã°£ ÀÔ·Â ¿À·ù" << endl; } } else if(strcmp("Á¾·á", Commands[0]) == 0){ break; } } return 0; }