Advertisement
Lixard

Lab6_main

Apr 25th, 2019
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 9.47 KB | None | 0 0
  1. #include "class.h"
  2. #include <iostream>
  3. #include <Windows.h>
  4. #include <iomanip>
  5.  
  6. using namespace std;
  7.  
  8. void russian_lang();
  9. void menu_start(vector<Cars> &);
  10. void menu_obj_create(vector<Cars>&);
  11. void obj_with_args(vector<Cars>&);
  12. void obj_copy(vector<Cars>&);
  13. void menu_obj(vector<Cars>&);
  14. void menu_obj_edit(vector<Cars>&, const int&);
  15. void menu_obj_show(vector<Cars>&, const int&);
  16. void msoversmth(vector<Cars>&);
  17. void mestaoversmth(vector<Cars>&);
  18. void objs_show(vector<Cars>&);
  19. void palki();
  20. void text_menu();
  21.  
  22. int main()
  23. {
  24.     russian_lang();
  25.     vector<Cars> obj;
  26.     menu_start(obj);
  27.     system("PAUSE");
  28.     return 0;
  29. }
  30.  
  31. void russian_lang()
  32. {
  33.     SetConsoleCP(1251);
  34.     SetConsoleOutputCP(1251);
  35. }
  36.  
  37. void menu_start(vector<Cars>& obj)
  38. {
  39.     int option;
  40.     text_menu();
  41.     while (true)
  42.     {
  43.         cin >> option;
  44.         Cars::int_check(option);
  45.         switch (option)
  46.         {
  47.         case 1:
  48.             menu_obj_create(obj);
  49.             text_menu();
  50.             break;
  51.         case 2:
  52.             objs_show(obj);
  53.             text_menu();
  54.             break;
  55.         case 3:
  56.             menu_obj(obj);
  57.             text_menu();
  58.             break;
  59.         case 4:
  60.             msoversmth(obj);
  61.             text_menu();
  62.             break;
  63.         case 5:
  64.             mestaoversmth(obj);
  65.             text_menu();
  66.             break;
  67.         case 9:
  68.             return;
  69.         default:
  70.             cout << "Некорректный ввод." << endl;
  71.             text_menu();
  72.             break;
  73.         }
  74.     }
  75. }
  76.  
  77. void menu_obj_create(vector<Cars>& obj)
  78. {
  79.     bool flag = true;
  80.     int option;
  81.     while (flag)
  82.     {
  83.         cout << "1. Создать автомобиль по умолчанию" << endl <<
  84.             "2. Создать автомобиль с заданными параметрами" << endl <<
  85.             "3. Скопировать имеющийся автомобиль" << endl <<
  86.             "9. Вернуться назад" << endl <<
  87.             "Выберите действие: ";
  88.         cin >> option;
  89.         Cars::int_check(option);
  90.         switch (option)
  91.         {
  92.         case 1:
  93.             obj.push_back(Cars::Cars());
  94.             cout << "Автомобиль создан." << endl;
  95.             flag = false;
  96.             break;
  97.         case 2:
  98.             obj_with_args(obj);
  99.             cout << "Автомобиль создан." << endl;
  100.             flag = false;
  101.             break;
  102.         case 3:
  103.             obj_copy(obj);
  104.             flag = false;
  105.             break;
  106.         case 9:
  107.             flag = false;
  108.             break;
  109.         default:
  110.             cout << "Некорректный ввод." << endl;
  111.             break;
  112.         }
  113.     }
  114. }
  115.  
  116. void obj_with_args(vector<Cars>& obj)
  117. {
  118.     obj.push_back(Cars::Cars());
  119.     obj[obj.size() - 1].set_all();
  120. }
  121.  
  122. void obj_copy(vector<Cars>& obj)
  123. {
  124.     objs_show(obj);
  125.     if (obj.size() > 0)
  126.     {
  127.         int number;
  128.         cout << "Выберите автомобиль для копирования: ";
  129.         cin >> number;
  130.         Cars::int_check(number);
  131.         if (number > obj.size() || number == 0)
  132.         {
  133.             cout << "Некорректный ввод." << endl;
  134.         }
  135.         if (number <= obj.size() && number != 0)
  136.         {
  137.             number--;
  138.             obj.push_back(Cars::Cars(obj[number]));
  139.             cout << "Копирование произошло успешно." << endl;
  140.         }
  141.     }
  142. }
  143.  
  144. void menu_obj(vector<Cars>& obj)
  145. {
  146.     bool flag = true;
  147.     int number;
  148.     int option;
  149.     objs_show(obj);
  150.     if (obj.size() > 0)
  151.     {
  152.         cout << "Выберите автомобиль для редактирования: ";
  153.         cin >> number;
  154.         Cars::int_check(number);
  155.         if (number > obj.size() || number == 0)
  156.         {
  157.             cout << "Некорректный ввод." << endl;
  158.         }
  159.         if (number <= obj.size() && number != 0)
  160.         {
  161.             number--;
  162.             while (flag)
  163.             {
  164.                 cout << "1. Удалить автомобиль" << endl <<
  165.                     "2. Изменить параметры автомобиля" << endl <<
  166.                     "3. Вывести параметры автомобиля" << endl <<
  167.                     "9. Вернуться назад" << endl <<
  168.                     "Выберите действие: ";
  169.                 cin >> option;
  170.                 Cars::int_check(option);
  171.                 switch (option)
  172.                 {
  173.                 case 1:
  174.                     obj.erase(obj.begin() + number);
  175.                     cout << "Автомобиль успешно удален." << endl;
  176.                     flag = false;
  177.                     break;
  178.                 case 2:
  179.                     menu_obj_edit(obj, number);
  180.                     flag = false;
  181.                     break;
  182.                 case 3:
  183.                     menu_obj_show(obj, number);
  184.                     flag = false;
  185.                     break;
  186.                 case 9:
  187.                     flag = false;
  188.                     break;
  189.                 default:
  190.                     cout << "Некорректный ввод." << endl;
  191.                     break;
  192.                 }
  193.             }
  194.         }
  195.     }
  196. }
  197.  
  198. void menu_obj_edit(vector<Cars>& obj, const int& number)
  199. {
  200.     int option;
  201.     bool flag = true;
  202.     while (flag)
  203.     {
  204.         cout << "1. Изменить все параметры автомобиля" << endl <<
  205.             "2. Изменить модель автомобиля" << endl <<
  206.             "3. Изменить госномер автомобиля" << endl <<
  207.             "4. Изменить фамилию водителя автомобиля" << endl <<
  208.             "5. Изменить цвет автомобиля" << endl <<
  209.             "6. Изменить максимальную скорость автомобиля" << endl <<
  210.             "7. Изменить количество мест в автомобиле" << endl <<
  211.             "8. Изменить мощность двигателя автомобиля" << endl <<
  212.             "9. Вернуться назад" << endl <<
  213.             "Выберите действие: ";
  214.         cin >> option;
  215.         Cars::int_check(option);
  216.         switch (option)
  217.         {
  218.         case 1:
  219.             obj[number].set_all();
  220.             cout << "Успешно изменено." << endl;
  221.             flag = false;
  222.             break;
  223.         case 2:
  224.             obj[number].set_model();
  225.             cout << "Успешно изменено." << endl;
  226.             flag = false;
  227.             break;
  228.         case 3:
  229.             obj[number].set_gosnomer();
  230.             cout << "Успешно изменено." << endl;
  231.             flag = false;
  232.             break;
  233.         case 4:
  234.             obj[number].set_familiya();
  235.             cout << "Успешно изменено." << endl;
  236.             flag = false;
  237.             break;
  238.         case 5:
  239.             obj[number].set_color();
  240.             cout << "Успешно изменено." << endl;
  241.             flag = false;
  242.             break;
  243.         case 6:
  244.             obj[number].set_max_speed();
  245.             cout << "Успешно изменено." << endl;
  246.             flag = false;
  247.             break;
  248.         case 7:
  249.             obj[number].set_places();
  250.             cout << "Успешно изменено." << endl;
  251.             flag = false;
  252.             break;
  253.         case 8:
  254.             obj[number].set_lps();
  255.             cout << "Успешно изменено." << endl;
  256.             flag = false;
  257.             break;
  258.         case 9:
  259.             flag = false;
  260.             break;
  261.         default:
  262.             cout << "Некорректный ввод." << endl;
  263.             break;
  264.         }
  265.     }
  266. }
  267.  
  268. void menu_obj_show(vector<Cars>& obj, const int& number)
  269. {
  270.     int option;
  271.     bool flag = true;
  272.     while (flag)
  273.     {
  274.         cout << "1. Показать все параметры автомобиля" << endl <<
  275.             "2. Показать модель автомобиля" << endl <<
  276.             "3. Показать госномер автомобиля" << endl <<
  277.             "4. Показать фамилию водителя автомобиля" << endl <<
  278.             "5. Показать цвет автомобиля" << endl <<
  279.             "6. Показать максимальную скорость автомобиля" << endl <<
  280.             "7. Показать количество мест в автомобиле" << endl <<
  281.             "8. Показать мощность двигателя автомобиля" << endl <<
  282.             "9. Вернуться назад" << endl <<
  283.             "Выберите действие: ";
  284.         cin >> option;
  285.         Cars::int_check(option);
  286.         switch (option)
  287.         {
  288.         case 1:
  289.             obj[number].get_all();
  290.             flag = false;
  291.             break;
  292.         case 2:
  293.             obj[number].get_model();
  294.             flag = false;
  295.             break;
  296.         case 3:
  297.             obj[number].get_gosnomer();
  298.             flag = false;
  299.             break;
  300.         case 4:
  301.             obj[number].get_familiya();
  302.             flag = false;
  303.             break;
  304.         case 5:
  305.             obj[number].get_color();
  306.             flag = false;
  307.             break;
  308.         case 6:
  309.             obj[number].get_max_speed();
  310.             flag = false;
  311.             break;
  312.         case 7:
  313.             obj[number].get_places();
  314.             flag = false;
  315.             break;
  316.         case 8:
  317.             obj[number].get_lps();
  318.             flag = false;
  319.             break;
  320.         case 9:
  321.             flag = false;
  322.             break;
  323.         default:
  324.             cout << "Некорректный ввод." << endl;
  325.             break;
  326.         }
  327.     }
  328.  
  329. }
  330.  
  331. void msoversmth(vector<Cars>& obj)
  332. {
  333.     obj.push_back(Cars::Cars());
  334.     int i;
  335.     i = obj.size() - 1;
  336.     obj[i].msoversmth(obj);
  337.     obj.erase(obj.end() - 1);
  338. }
  339.  
  340. void mestaoversmth(vector<Cars>& obj)
  341. {
  342.     obj.push_back(Cars::Cars());
  343.     int i;
  344.     i = obj.size() - 1;
  345.     obj[i].mestaoversmth(obj);
  346.     obj.erase(obj.end() - 1);
  347. }
  348.  
  349. void objs_show(vector<Cars>& obj)
  350. {
  351.     if (obj.size() == 0)
  352.     {
  353.         cout << "Автомобили отсутствуют." << endl;
  354.     }
  355.     if (obj.size() > 0)
  356.     {
  357.         cout << setiosflags(ios::left) << setw(2) <<"  " << setw(10) << "Модель"
  358.             << setw(10) << "Госномер" << setw(10) << "Фамилия" << setw(10) << "Цвет" <<
  359.             setw(10) << "Скорость" << setw(10) << "Места" << setw(10) << "Мощность" << endl;
  360.         palki();
  361.         for (int i = 0; i < obj.size(); i++)
  362.         {
  363.             cout << i + 1 << ".";
  364.             obj[i].get_all();
  365.         }
  366.         palki();
  367.     }
  368. }
  369.  
  370. void palki()
  371. {
  372.     for (int i = 0; i < 72; i++)
  373.     {
  374.         cout << "-";
  375.     }
  376.     cout << endl;
  377. }
  378.  
  379. void text_menu()
  380. {
  381.     cout << "1. Ввести новый автомобиль" << endl <<
  382.             "2. Вывод списка автомобилей " << endl <<
  383.             "3. Управление отдельным автомобилем " << endl <<
  384.             "4. Вывод автомобилей заданного цвета с максимальной скоростью выше заданной" << endl <<
  385.             "5. Вывод количества автомобилей число мест в которых больше заданного" << endl <<
  386.             "9. Завершить работу программы" << endl <<
  387.             "Выберите действие: ";
  388. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement