Advertisement
kxcoze

satie__struct2

May 5th, 2020
222
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.86 KB | None | 0 0
  1. #include <conio.h>
  2. #include <iomanip>
  3. #include <iostream>
  4. #include <string>
  5. #include <windows.h>
  6.  
  7. using namespace std;
  8.  
  9. struct {
  10.     string surname;
  11.     string initials;
  12.     int INN;
  13.     float summa;
  14. } mas[20];
  15.  
  16.  
  17. string buff;// переменная, использующаяся в программе для очистки буфера
  18.  
  19. const int WIDHT = 12; // Ширина ячейки таблицы "Название таблицы"
  20. const int EDGE = 9; // Граница вывода строки
  21. const int n = 5;
  22. void list();
  23. void inputting();
  24. void search();
  25. void search2();
  26. void menu();
  27. void outputStr(const int, const int, string);
  28.  
  29. int main()
  30. {
  31.     SetConsoleCP(1251);
  32.     SetConsoleOutputCP(1251);
  33.     system("CLS");
  34.     inputting();
  35.     menu();
  36.     return 0;
  37. }
  38.  
  39. void inputting() { // Процедура ввода данных
  40.     for (int i = 0; i < n; i++) {
  41.         system("CLS");
  42.         cout << " Введите данные для " << i + 1 << " записи :" << endl;
  43.  
  44.         cout << " Фамилия налогоплательщика - ";
  45.         cin >> mas[i].surname;
  46.  
  47.         getline(cin, buff);
  48.         fflush(stdin);
  49.  
  50.         cout << " Инициалы налогоплательщика - ";
  51.         getline(cin, mas[i].initials);
  52.  
  53.         cout << " Код ИНН налогоплательщика: ";
  54.         cin >> mas[i].INN;
  55.  
  56.         cout << " Сумма налогообложения налогоплательщика: ";
  57.         cin >> mas[i].summa;
  58.  
  59.     }
  60. }
  61.  
  62. void menu() {
  63.     char v;
  64.     do {
  65.         list();
  66.         cout << " Введите [1] для поиска информации по фамилии налогоплательщика.\n";
  67.         cout << " Введите [2] для поиска информации о налогоплательщиках, чей суммарный налог превышает сумму, которую вы введете.\n";
  68.         cout << " Введите [0] для выхода.\n";
  69.         cout << " Пункт: ";
  70.         do {
  71.             v = _getch();
  72.             if ((v == '1') || (v == '0') || (v == '2'))
  73.             {
  74.                 cout << v << '\n';
  75.             }
  76.             else cout << "\r";
  77.         } while ((v != '1') && (v != '0') && (v != '2'));
  78.         if (v == '1') search();
  79.         else if (v == '2') search2();
  80.     } while (v != '0');
  81.  
  82. }
  83.  
  84. void list()
  85. {
  86.     system("CLS");
  87.     system("color 1f");
  88.     cout << endl << endl << endl;
  89.     system("color 17");
  90.     cout << "       _______________________________________________________________ " << endl;
  91.     cout << "      |_____|_____________|____________|_______________|______________|" << endl;
  92.     cout << "      |  N  |  Фамилия    |  Инициалы  |     ИНН       |     Сумма    |" << endl;
  93.     cout << "      | №пп | налогопл-ка | налогопл-ка|  налогопл-ка  | налогообл-ия |" << endl;
  94.     cout << "      |_____|_____________|____________|_______________|______________|" << endl;
  95.     cout << "      |     |             |            |               |              |" << endl;
  96.     for (int i = 0; i < n; i++)
  97.     {
  98.         cout << "      |  " << i + 1 << "  | ";
  99.         outputStr(EDGE - 1, WIDHT - 1, mas[i].surname);
  100.         cout << " | ";
  101.         outputStr(EDGE - 1, WIDHT - 1, mas[i].initials);
  102.         cout << "| " << setw(10) << setprecision(2) << mas[i].INN << "    |";
  103.         cout << setw(8) << fixed << mas[i].summa << "      |" << endl;
  104.     }
  105.     cout << "      |_____|_____________|____________|_______________|______________|" << endl;
  106. }
  107.  
  108. void search()
  109. {
  110.     string s;
  111.     getline(cin, buff); // очистка буфера
  112.     fflush(stdin);
  113.     cout << " \nВведите фамилию налогоплательщика: ";
  114.     getline(cin, s);;
  115.     system("CLS");
  116.     bool f = true;
  117.     cout << endl << endl << endl;
  118.     cout << " Информация о налогоплательщике " << s << ":\n\n";
  119.     for (int i = 0; i < n; i++)
  120.         if (mas[i].surname == s)
  121.         {
  122.             cout << "   Фамилия налогоплательщика:   " << mas[i].surname << endl;
  123.             cout << "   Инициалы налогоплательщика:   " << mas[i].initials << endl;
  124.             cout << "   ИНН налогоплательщика:       " << setprecision(2) << fixed << mas[i].INN << endl;
  125.             cout << "   Сумма налогообложения:       " << mas[i].summa << endl;
  126.             f = false;
  127.         }
  128.     if (f) cout << "    Такого налогоплательщика нет! Продолжить? " << endl;
  129.     system("pause>nul");
  130. }
  131.  
  132. void search2() { // Процедура поиска информации по стоимости товара
  133.     int s2;
  134.     fflush(stdin);
  135.     getline(cin, buff); //очистка буфера
  136.     cout << " Введите сумму, которую не должен превышать суммарный налог налогоплательщика: \n";
  137.     cin >> s2;
  138.     system("CLS");
  139.     bool f = true;
  140.     cout << " Информация о налогоплательщиках, чей суммарный налог превышает  " << s2 << ":\n\n";
  141.     for (int i = 0; i < n; i++)
  142.         if (mas[i].summa <= s2)
  143.         {
  144.             cout << "   Фамилия налогоплательщика:   " << mas[i].surname << endl;
  145.             cout << "   Инициалы налогоплательщика:   " << mas[i].initials << endl;
  146.             cout << "   ИНН налогоплательщика:       " << setprecision(2) << fixed << mas[i].INN << endl;
  147.             cout << "   Сумма налогообложения:       " << mas[i].summa << endl << endl;
  148.             f = false;
  149.         }
  150.     if (f) cout << "    Такого налогоплательщика нет! Продолжить? " << endl;
  151.     system("pause>nul");
  152. }
  153.  
  154. // Вывод строки до определенного кол-ва символов, иначе вывести строку, далее заполнить пробелами до границы.
  155. void outputStr(const int x, const int w, string str) {
  156.     if (x > str.size()) {
  157.         cout << str;
  158.         int y = w - str.size();
  159.         while (y--)
  160.             cout << ' ';
  161.         return;
  162.     }
  163.     for (int i = 0; i < x; i++)
  164.         cout << str[i];
  165.     cout << "...";
  166. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement