Advertisement
evcamels

Train

Apr 27th, 2022
1,109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 8.09 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <fstream>
  4. #include <string>
  5. #include <vector>
  6. using namespace std;
  7. string musor;
  8. void CinC() { //функция очистки потока cin
  9.     if (cin.peek() == '\n') {
  10.         getline(cin, musor);
  11.     }
  12. }
  13.  
  14. struct TR {
  15.     string dest; //пункт назначения
  16.     int num; //номер поезда
  17.     int hour; //время отправления
  18.     int minute;
  19.     void Edit() {
  20.         string dest2;
  21.         int num2;
  22.         int hour2;
  23.         int minute2;
  24.         cout << "Введите пункт назначения: ";
  25.         CinC();
  26.         getline(cin, dest2);
  27.         dest = dest2;
  28.         cout << endl;
  29.         cout << "Введите номер поезда: ";
  30.         cin >> num2;
  31.         num = num2;
  32.         cout << endl;
  33.         cout << "Введите время отправления" << endl;
  34.         cout << "Часы: ";
  35.         cin >> hour2;
  36.         cout << "Минуты: ";
  37.         cin >> minute2;
  38.         if (hour2 > 23 && hour2 < 0) {
  39.             cout << "Данные введены некорректно!" << endl;
  40.            
  41.         }
  42.         else if (minute2 > 59 && minute2 < 0) {
  43.             cout << "Данные введены некорректно!" << endl;
  44.         }
  45.         else {
  46.             hour = hour2;
  47.             minute = minute2;
  48.         }
  49.  
  50.  
  51.     }
  52.     void Show() {
  53.         cout << "Пункт назначения: " << dest << endl;
  54.         cout << "Номер поезда: " << num << endl;
  55.         cout << "Время отправления: " << hour << ":" << minute << endl;
  56.         cout << "_____________________________" << endl;
  57.     }
  58. };
  59.  
  60. vector <TR> Add(vector <TR> train) { //добавление записи
  61.     TR train2;
  62.     train2.Edit();
  63.     train.push_back(train2);
  64.     return train;
  65. }
  66. vector <TR>  Remove(vector <TR> train) { //удаление записей
  67.     cout << "Введите номер удаляемой записи: ";
  68.     int n;
  69.     cin >> n;
  70.     if (n >= train.size()) {
  71.         cout << "Записи с таким номером нет" << endl;
  72.     }
  73.     else {
  74.         train.erase(train.begin() + n - 1);
  75.     }
  76.     return train;
  77. }
  78. void Search(vector <TR> train) { //поиск данных
  79.     cout << "Введите номер поезда: " << endl;
  80.     int n;
  81.     cin >> n;
  82.     for (int i = 0; i < train.size(); i++) {
  83.         if (train[i].num == n) {
  84.             train[i].Show();
  85.         }
  86.         else {
  87.             cout << "Запись не найдена" << endl;
  88.         }
  89.     }
  90. }
  91. vector <TR>  Sorting(vector <TR> train) { //сотрировка
  92.     cout << "1 - Сортировка по номеру поезда" << endl;
  93.     cout << "2 - Сортировка по пункту назначения" << endl;
  94.     int n;
  95.     cin >> n;
  96.     if (n == 1) {
  97.         for (int i = train.size() - 1; i > 0; i--) {
  98.             for (int j = 0; j <= i; j++) {
  99.                 if (train[j].num > train[i].num) {
  100.                     swap(train[j], train[i]);
  101.                 }
  102.             }
  103.         }
  104.         cout << "Сортировка завершена" << endl;
  105.         system("pause");
  106.     }
  107.     else if (n == 2) {
  108.         for (int i = train.size() - 1; i > 0; i--) {
  109.             for (int j = 0; j <= i; j++) {
  110.                 if (train[j].dest[0] > train[i].dest[0]) {
  111.                     swap(train[j], train[i]);
  112.                 }
  113.             }
  114.         }
  115.         cout << "Сортировка завершена" << endl;
  116.         system("pause");
  117.     }
  118.     else {
  119.         cout << "Данные введены некорректно" << endl;
  120.     }
  121.     return train;
  122. }
  123. void Show(vector <TR> train) {
  124.     for (int i = 0; i < train.size(); i++) {
  125.         cout << i + 1 << " запись" << endl;
  126.         train[i].Show();
  127.     }
  128. }
  129.  
  130. int input = 10;
  131. void Menu() {
  132.     cout << "1 - Создать новую базу данных" << endl;
  133.     cout << "2 - Просмотр существующей базы данных" << endl;
  134.     cout << "3 - Редактирование базы данных" << endl;
  135.     cout << "4 - Добавить запись в базу данных" << endl;
  136.     cout << "5 - Удалить запись" << endl;
  137.     cout << "6 - Поиск записи" << endl;
  138.     cout << "7 - Сортировка записей" << endl;
  139.     cout << "8 - Сохранить изменения" << endl;
  140.     cout << "9 - Показать список базы даннных" << endl;
  141.     cout << "0 - Выход из программы" << endl;
  142.     cin >> input;
  143. }
  144.  
  145. int main()
  146. {
  147.     int n;
  148.     setlocale(LC_ALL, "rus");
  149.     vector <TR> train;
  150.     string name; //название файла
  151.     string path; //путь к файлу
  152.     ofstream d;
  153.     int k = 0;
  154.     while (input != 0) {
  155.         Menu();
  156.         switch (input) {
  157.         case 1: {
  158.             cout << "Введите название файла: ";
  159.             CinC();
  160.             getline(cin, name);
  161.             ofstream baza(name + ".txt");
  162.             k = 1;
  163.             break;
  164.         }
  165.         case 2: {
  166.             cout << "Введите путь к файлу: ";
  167.             string path;
  168.             CinC();
  169.             getline(cin, path);
  170.             ifstream baza;
  171.             baza.open(path);
  172.             if (baza.is_open())
  173.             {
  174.                 int a;
  175.                 baza >> a;
  176.                 for (int i = 0; i < a; i++) {
  177.                     TR train1;
  178.                     baza >> train1.dest;
  179.                     baza >> train1.num;
  180.                     baza >> train1.hour;
  181.                     baza >> train1.minute;
  182.                     train.push_back(train1);
  183.                 }
  184.             }
  185.             k = 2;
  186.             break;
  187.         }
  188.         case 3: {
  189.             int b;
  190.             cout << "Введите номер записи: ";
  191.             cin >> b;
  192.             for (int i = 0; i < b; i++) {
  193.                 train[i].Edit();
  194.             }
  195.             cout << "Данные отредактированы" << endl;
  196.             system("pause");
  197.             break;
  198.         }
  199.         case 4: {
  200.             train = Add(train);
  201.             cout << "Данные добавлены" << endl;
  202.             system("pause");
  203.             break;
  204.         }
  205.         case 5: {
  206.             train = Remove(train);
  207.             cout << "Запись удалена" << endl;
  208.             system("pause");
  209.             break;
  210.         }
  211.         case 6: {
  212.             Search(train);
  213.             system("pause");
  214.             break;
  215.         }
  216.         case 7: {
  217.             train = Sorting(train);
  218.             break;
  219.         }
  220.         case 8: {
  221.             if (k == 1) {
  222.                 ofstream baza_;
  223.                 baza_.open(name + ".txt", ios::out);
  224.                 if (baza_.is_open()) {
  225.                     for (int i = 0; i < train.size(); i++) {
  226.                         baza_ << train[i].dest << endl;
  227.                         baza_ << train[i].num << endl;
  228.                         baza_ << train[i].hour << endl;
  229.                         baza_ << train[i].minute << endl;
  230.                     }
  231.                 }
  232.                 cout << "Данные сохранены" << endl;
  233.                 system("pause");
  234.             }
  235.             else if (k == 2) {
  236.                 ofstream baza_(path, ios::out);
  237.                 if (baza_.is_open()) {
  238.                     for (int i = 0; i < train.size(); i++) {
  239.                         baza_ << train[i].dest;
  240.                         baza_ << train[i].num;
  241.                         baza_ << train[i].hour;
  242.                         baza_ << train[i].minute;
  243.                     }
  244.                 }
  245.                 cout << "Данные сохранены" << endl;
  246.                 system("pause");
  247.             }
  248.             else {
  249.                 cout << "Сохранение не удалось" << endl;
  250.                 system("pause");
  251.             }
  252.             break;
  253.         }
  254.         case 9: {
  255.             Show(train);
  256.             system("pause");
  257.         }
  258.         }
  259.     }
  260.     system("pause");
  261. }
  262.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement