SHARE
TWEET

Untitled

a guest May 22nd, 2019 65 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <iostream>
  3. #include <conio.h>
  4. #include <string.h>
  5. #include <fstream>
  6. #include <iomanip>
  7. #include <windows.h>
  8. #include <locale.h>
  9. #include <math.h>
  10.  
  11. using namespace std;
  12. /* Описание прототипов функций */
  13. void printru(char* s);
  14. int sozd_f(char* filename);
  15. int dob_dan(char* filename);
  16. void vivod_dan(char* filename);
  17. void sort_dan(char* filename);
  18. void inf_banki(char* filename);
  19. void poisk_bank(char* filename);
  20. void poisk_date(char* filename);
  21. /* Описание структуры, которая представляет монастырь */
  22. struct bn {
  23.     char name[20];   /* название банка */
  24.     char city[10];                /* город местонахождения */
  25.     int lic;                 /* номер лицензии */
  26.     int date[3];                  /* дата лицензии */
  27. }
  28. /* Основная программа*/
  29. ; int main() {
  30.      setlocale(LC_ALL, "Russian");
  31.     int v;
  32.     char filename[] = "BANK.bin";
  33.     while (true) {
  34.         printf("Выберите действие: \n");
  35.         printf("1: создать файл \n");
  36.         printf("2: добавить данные \n");
  37.         printf("3: вывести данные на экран \n");
  38.         printf("4: отсортировать по номеру лицензии банка \n");
  39.         printf("5: информация о банках в определенном городе \n");
  40.         printf("6: поиск банков, получивших лицензию в определенный год \n");
  41.         printf("7: поиск даты лицензии банка по его названию \n");
  42.         printf("8: выйти \n");
  43.         cin>>v;
  44.         switch (v) {
  45.         case 1: sozd_f(filename); break;
  46.         case 2: dob_dan(filename); break;
  47.         case 3: vivod_dan(filename); break;
  48.         case 4: sort_dan(filename);
  49.             vivod_dan(filename); break;
  50.         case 5: void inf_banki(char* filename);
  51.             vivod_dan(filename); break;
  52.         case 6: void poisk_bank(char* filename);
  53.             vivod_dan(filename); break;
  54.         case 7: void poisk_date(char* filename);
  55.             vivod_dan(filename); break;
  56.         case 8: _getch(); return 1;
  57.         default: printf("нeт такого пункта меню\n");
  58.         };
  59.     }
  60.     _getch();
  61. }
  62.  
  63. //функция создания файла
  64. int sozd_f(char* filename) {
  65.     FILE *m_file;
  66.     m_file = fopen (filename, "w+");
  67.     if (m_file == 0) {
  68.         printf("Создать файл не удалось!\n");
  69.         _getch();
  70.         return(1);
  71.     }
  72.     fclose(m_file);
  73. }
  74. //функция добавления данных
  75. int dob_dan(char* filename) {
  76.     FILE *m_file;
  77.     char y_n;
  78.     int tt;
  79.     struct bn x;
  80.     m_file = fopen(filename, "ab");
  81.     if (m_file == 0) {
  82.         printf("Открыть файл не удалось!\n");
  83.         _getch();
  84.         return(1);
  85.     }
  86.     do {
  87.         int  tt = 0;
  88.         // Ввод данных
  89.         printf("Введите: название, школу, количество, площадь монастыря\n");
  90.         cin >> x.name;
  91.         cin >> x.city;
  92.         cin >> x.lic;
  93.         cin >> x.date[0] >> x.date[1] >> x.date[2];
  94.         fwrite((char *)&x, sizeof(bn), 1, m_file);
  95.         printf("Продолжить(y/n)?\n");
  96.         cin >> y_n;
  97.         if (y_n == 'y' || y_n == 'Y') tt = 1;
  98.     }
  99.         while (tt == 1);
  100.     fclose(m_file);
  101. }
  102. //функция вывода данных  на экран
  103. void vivod_dan(char* filename) {
  104.     FILE *m_file;
  105.     m_file = fopen(filename, "r");
  106.     printf("-------------------------------------------------------------------------------\n");
  107.     printf("|                                   BANK                                       |\n");
  108.     printf("|------------------------------------------------------------------------------|\n");
  109.     printf("|    Nazvanie Banka    |    City   |    Nomer licenzii      |   Data licenzii  |\n");
  110.     printf("|                      |           |                        |                  |\n");
  111.     printf("|----------------------|-----------|------------------------|------------------|\n");
  112.     fseek(m_file, 0, SEEK_END);
  113.     int n = ftell(m_file) / sizeof(bn);
  114.     bn *mm = new bn[n];
  115.     fseek(m_file, 0, SEEK_SET);
  116.     // Функция fread позволяет считать весь файл за одно обращение
  117.     fread(mm, sizeof(bn), n, m_file);
  118.     fclose(m_file);
  119.     for (int i = 0; i < n; i++)
  120.         cout << "|" << setw(22) << mm[i].name << "|" << setw(11) << mm[i].city << "|" << setw(24) << mm[i].lic << "|" << setw(2) << mm[i].date[0] << "." << setw(2) << mm[i].date[1] << "." << setw(2) << mm[i].date[2] << "|" << "\n";
  121.     cout << "-------------------------------------------------------------------------------\n";
  122. }
  123. //функция сортировки
  124. void sort_dan(char* filename) {
  125.     FILE *m_file;
  126.     struct bn x;
  127.     int n, i, j, m;
  128.     m_file = fopen(filename, "r");
  129.     fseek(m_file, 0, SEEK_END);
  130.     n = ftell(m_file) / sizeof(bn);
  131.     bn *mm = new bn[n];
  132.     fseek(m_file, 0, SEEK_SET);
  133.     fread(mm, sizeof(bn), n, m_file);
  134.     fclose(m_file);
  135.     for (i = 0; i < n - 1; i++) {
  136.         m = i;
  137.         for (j = i + 1; j < n; j++)
  138.             if ((mm[m].lic, mm[j].lic) > 0) m = j;
  139.         if (m > i) {
  140.             x = mm[i];
  141.             mm[i] = mm[m];
  142.             mm[m] = x;
  143.         }
  144.     }
  145.     fopen(filename, "w");
  146.     fwrite(mm, sizeof(bn), n, m_file);
  147.     fclose(m_file);
  148. }
  149. //функция поиска банков в определенном городе
  150. void poisk_bank (char* filename) {
  151.     FILE *m_file;
  152.     struct bn x;
  153.     int n, i, j, m;
  154.     m_file = fopen(filename, "r");
  155.     fseek(m_file, 0, SEEK_END);
  156.     n = ftell(m_file) / sizeof(bn);
  157.     bn *mm = new bn[n];
  158.     fseek(m_file, 0, SEEK_SET);
  159.     fread(mm, sizeof(bn), n, m_file);
  160.     fclose(m_file);
  161.     while (true)
  162.     {
  163.         char city[10];
  164.         printf("Введите город\n");
  165.         cin >> city;
  166.         if ((city, "***")) break;
  167.         for (i = 0; i < n; i++)
  168.         {
  169.             if (mm[m].city == city)
  170.             {
  171.                 printf("Банк - ");  cout << mm[i].name << "/n";
  172.                 printf("Номер лицензии: ");  cout << mm[i].lic << "/n";
  173.                 printf("Дата лицензии: "); cout << mm[i].date[0] << mm[i].date[1] << mm[i].date[1] << "\n";
  174.             }
  175.         }
  176.         if (mm[m].city != city)
  177.         {
  178.             printf("Таких банков нет");
  179.         }
  180.     }
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