Advertisement
kxcoze

minelab15_10_2

Jun 29th, 2020
209
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.98 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdlib.h>
  3. #include <string>
  4. #include <windows.h>
  5.  
  6.  
  7. using namespace std;
  8.  
  9. struct Flat {
  10.     string surname;
  11.     double square;
  12.     int numOfRooms;
  13.     int floor;
  14. };
  15.  
  16. short menu();
  17. void input(Flat*);
  18. void inputInFile(Flat*);
  19. void list(Flat*);
  20. void list2(Flat*);
  21.  
  22. int main() {
  23.     SetConsoleCP(1251);
  24.     SetConsoleOutputCP(1251);
  25.     setlocale(LC_ALL, "Rus");
  26.     short choice;
  27.     Flat *object = new Flat;
  28.  
  29.     do {
  30.         choice = menu();
  31.         switch (choice) {
  32.         case 1:
  33.             system("cls");
  34.             inputInFile(object);
  35.             system("cls");
  36.             break;
  37.         case 2:
  38.             system("cls");
  39.             list(object);
  40.             system("cls");
  41.             break;
  42.         case 3:
  43.             system("cls");
  44.             list2(object);
  45.             system("cls");
  46.             break;
  47.         case 0:
  48.             system("pause");
  49.             break;
  50.         default:
  51.             cout << "Ошибка!" << endl;
  52.             system("cls");
  53.             break;
  54.         }
  55.     } while (choice);
  56.     return 0;
  57. }
  58.  
  59. short menu() {
  60.     short m;
  61.     cout << " МЕНЮ \n";
  62.     cout << " Введите [1] чтобы добавить владельца \n";
  63.     cout << " Введите [2] для просмотра данных о владельцах \n";
  64.     cout << " Введите [3] для просмотра данных о владельцах чья квартира меньше 30 кв. м\n";
  65.     cout << " Введите [0] для выхода \n";
  66.     cout << " Пункт: ";
  67.     cin >> m;
  68.     return m;
  69. }
  70.  
  71. void inputInFile(Flat* x) {
  72.     input(x);
  73.     FILE* streamFile;
  74.     fopen_s(&streamFile, "datebase.txt", "a+");
  75.     system("pause");
  76.     cout << "\n\nФамилия владельца: " << x->surname << endl;
  77.     cout << "Площадь в кв. м: " << x->square << endl;
  78.     cout << "Число комнат: " << x->numOfRooms << endl;
  79.     cout << "Этаж: " << x->floor << endl;
  80.     fwrite(x, sizeof(Flat), 1, streamFile);
  81.  
  82.     cout << "Ваши данные теперь находятся в файле.";
  83.     fclose(streamFile);
  84. }
  85.  
  86. void input(Flat* x) {
  87.     cin.ignore();
  88.  
  89.     cout << "Фамилия владельца: ";
  90.     cin >> x->surname;
  91.  
  92.     cout << "Площадь в кв. м: ";
  93.     cin >> x->square;
  94.  
  95.     cout << "Число комнат: ";
  96.     cin >> x->numOfRooms;
  97.  
  98.     cout << "Этаж: ";
  99.     cin >> x->floor;
  100. }
  101.  
  102. void list(Flat* x) {
  103.     FILE* streamFile;
  104.     int i = 1;
  105.     fopen_s(&streamFile, "datebase.txt", "r+");
  106.  
  107.     cout << "ДАННЫЕ О ВЛАДЕЛЬЦАХ:\n";
  108.     while (!feof(streamFile)) {
  109.         fread(x, sizeof(Flat), 1, streamFile);
  110.         if (!feof(streamFile)) {
  111.             cout << i++ << ": " << endl;
  112.             cout << "\tФамилия владельца: " << x->surname << endl;
  113.             cout << "\tПлощадь в кв. м: " << x->square << endl;
  114.             cout << "\tЧисло комнат: " << x->numOfRooms << endl;
  115.             cout << "\tЭтаж: " << x->floor << endl;
  116.         }
  117.     }
  118.  
  119.     system("pause");
  120.     fclose(streamFile);
  121. }
  122.  
  123. void list2(Flat* x) {
  124.     FILE* streamFile;
  125.     int i = 1, count = 0;
  126.     fopen_s(&streamFile, "datebase.txt", "r+");
  127.  
  128.     cout << "ДАННЫЕ О ВЛАДЕЛЬЦАХ ЧЬЯ КВАРТИРА МЕНЬШЕ 30 КВ. М:\n";
  129.     while (fread(x, sizeof(Flat), 1, streamFile) == 1) {
  130.         if (x->square < 30) {
  131.             cout << i++ << ": " << endl;
  132.             cout << "\tФамилия владельца: " << x->surname << endl;
  133.             cout << "\tПлощадь в кв. м: " << x->square << endl;
  134.             cout << "\tЧисло комнат: " << x->numOfRooms << endl;
  135.             cout << "\tЭтаж: " << x->floor << endl;
  136.             count++;
  137.         }
  138.     }
  139.     cout << "Количество квартир площадью меньше 30 кв. м: " << count << endl;
  140.  
  141.     system("pause");
  142.     fclose(streamFile);
  143. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement