Advertisement
Guest User

Untitled

a guest
May 22nd, 2019
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.96 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement