SHARE
TWEET

Untitled

a guest Dec 8th, 2019 97 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4. #include <fstream>
  5. using namespace std;
  6.  
  7. struct Train
  8. {
  9.     int number;
  10.     string point;
  11.     string time;
  12.     string travel_time;
  13.     int place;
  14. };
  15.  
  16. ostream& operator << (ostream& os, Train& i)
  17. {
  18.     os << i.number << ' ';
  19.     os << i.point << ' ';
  20.     os << i.time << ' ';
  21.     os << i.travel_time << ' ';
  22.     os << i.place << ' ';
  23.     return os;
  24. }
  25.  
  26. ostream& operator << (ostream& os, vector<Train> v)
  27. {
  28.     for (auto i : v)
  29.         cout << i;
  30. }
  31.  
  32. istream& operator >> (istream& is, Train& i)
  33. {
  34.     is >> i.number;
  35.     is >> i.point;
  36.     is >> i.time;
  37.     is >> i.travel_time;
  38.     is >> i.place;
  39.     return is;
  40. }
  41.  
  42. int update (vector<Train>& train)
  43. {
  44.     train.clear();
  45.     Train objectStruct;
  46.     ifstream file("out.txt");
  47.     while(!file.eof())
  48.     {
  49.         file >> objectStruct;
  50.         train.push_back(objectStruct);
  51.     }
  52.     train.erase(train.end());
  53.     file.close();
  54.     return train.size();
  55. }
  56.  
  57. void WriteInFile (vector<Train>& train, int size)
  58. {
  59.     ofstream file("out.txt");
  60.     for (int i = 0; i < size; i++)
  61.         file << train[i] << endl;
  62.     file.close();
  63. }
  64.  
  65.  
  66. void NewStruct(int n)
  67. {
  68.     ofstream file("out.txt");
  69.     Train objectStruct;
  70.     for (int i = 0; i < n; ++i)
  71.     {
  72.         cin >> objectStruct;
  73.         file << objectStruct << endl;
  74.     }
  75.     file.close();
  76. }
  77.  
  78. int main(int argc, char const *argv[])
  79. {
  80.  
  81.     vector<Train> train;
  82.     Train objectStruct;
  83.     int answer;
  84.     int size = update(train);
  85.     bool state = true;
  86.     cout << "Курсовая работа\n№ 15. ТЕМА: Разработка ПО для создания и обработки сведений по расписанию на железной дороге";
  87. while (state)
  88. {
  89.     cout << "\n\n\nMenu:";
  90.     cout << "\n#1) Создать файл с заданной структурой записи";
  91.     cout << "\n#2) Выдать на экран содержимое файла.";
  92.     cout << "\n#3) Выдать на экран для заданного пункта назначения список всех поездов в виде:   — № поезда;\n  — время отправления.";
  93.     cout << "\n#4) Сформировать файл, содержащий № поезда и количество свободных мест.";
  94.     cout << "\n#5) Вновь сформированный файл распечатать";
  95.     cout << "\n#6) Добавить запись в исходный файл";
  96.     cout << "\n#7) Удалить все записи с указанными № поездов.";
  97.     cout << "\n#8) По № поезда изменить количество свободных мест.";
  98.     cout << "\n#9) Выход";
  99.                                                    
  100.     int choice;
  101.     cout << "\n\nВаш вариант - ";
  102.     cin >> choice;
  103.     switch(choice)
  104.     {
  105.         case 1:
  106.         {
  107.             cout << "Количество новых записей: ";
  108.             cin >> answer;
  109.             NewStruct(answer);
  110.             break;
  111.         }
  112.         case 2:
  113.         {
  114.             update(train);
  115.             cout << "Содержимое файла >\n";
  116.             for (auto i : train)
  117.                 cout << i << endl;
  118.             break;
  119.         }
  120.  
  121.         case 3:
  122.         {
  123.             string searchPoint;
  124.             cout << "\nПункта назначения = ";
  125.             cin >> searchPoint;
  126.             for(auto i : train)
  127.             {
  128.                 if (i.point == searchPoint)
  129.                 {
  130.                     cout << "Номер поезда - " << i.number;
  131.                     cout << " Время отправления - " << i.time << endl;
  132.                 }
  133.             }
  134.             break;
  135.         }
  136.         case 4:
  137.         {
  138.             ofstream file("out2.txt");
  139.             for (auto i : train)
  140.             {
  141.                 file << i.number << ' ';
  142.                 file << i.place << endl;
  143.             }
  144.             file.close();
  145.             cout << "Готово. Откройте файл out2.txt";
  146.             break;
  147.         }
  148.         case 5:
  149.         {
  150.             cout << "Содержимое файла >\n";
  151.             ifstream file("out2.txt");
  152.             for (int i = 0; i < train.size(); i++)
  153.             {
  154.                 file >> objectStruct.number;
  155.                 file >> objectStruct.place;
  156.                 cout << objectStruct.number << "  " << objectStruct.place << endl;
  157.             }
  158.             file.close();
  159.             break;
  160.         }
  161.         case 6:
  162.         {
  163.             cin >> objectStruct;
  164.             ofstream file("out.txt", ios_base::app);
  165.             file << objectStruct << endl;
  166.             file.close();
  167.             break;
  168.         }
  169.         case 7:
  170.         {
  171.             cout << "Номер вагона = ";
  172.             cin >> answer;
  173.             size = update(train);
  174.             cout << size << endl;
  175.             for (int i = 0; i < size; ++i)
  176.             {
  177.                 if (answer == train[i].number)
  178.                 {
  179.                     train.erase(train.begin() + i);
  180.                     size = train.size();
  181.                 }
  182.             }
  183.             cout << train.size() << endl;
  184.             WriteInFile(train, train.size());
  185.             break;
  186.         }
  187.         case 8:
  188.         {
  189.             cout << "Номер поезда = ";
  190.             cin >> answer;
  191.             int seat;
  192.             cout << "Количество мест = ";
  193.             cin >> seat;
  194.             size = update(train);
  195.             for (int i = 0; i < size; ++i)
  196.             {
  197.                 if (train[i].number == answer)
  198.                     train[i].place = seat;
  199.             }
  200.             WriteInFile(train, size);
  201.             break;
  202.         }
  203.         case 9:
  204.         {
  205.             state = false;
  206.             cout << "Выходим.\n";
  207.             break;
  208.         }
  209.         default:
  210.         {
  211.             cout << "Ошибка" << endl;
  212.             state = false;
  213.         }
  214.     }
  215. }
  216. return 0;
  217. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top