Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2019
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 27.38 KB | None | 0 0
  1. #define fname "f.txt"
  2. int inputBase()
  3. {
  4. FILE *f;
  5. ship ship;
  6. int n, i = 0, k;
  7. char str[30];
  8. int c = 0;
  9. if ((f = fopen(fname, "wb")) == NULL)
  10. {
  11. printf("Не удалось создать или открыть файл\n");
  12. return -1;
  13. }
  14. getchar();
  15. A:printf("Введите количество кораблей, которые вы хотите добавить: ");
  16. gets(str);
  17. while (str[i])
  18. {
  19. if (str[i] <= '9' && str[i] >= '0' || str[i] == '\0') {
  20. goto B;
  21.  
  22. }
  23. else
  24. {
  25. printf("Некорректный ввод:");
  26. goto A;
  27.  
  28. }
  29. }
  30. B:n = atoi(str);
  31.  
  32.  
  33. for (i = 0; i < n; ++i)
  34. {
  35. printf("\nВведите данные о корабле № %d:\n", i + 1);
  36.  
  37. C: printf("Введите название: ");
  38.  
  39. gets(str);
  40. while (str[i])
  41. {
  42. if (str[i] <= 'z' && str[i] >= 'a' || str[i] == '\0')
  43. {
  44. goto D;
  45.  
  46. }
  47. else
  48. {
  49. printf("Некорректный ввод:");
  50. goto C;
  51.  
  52. }
  53. }
  54. D:strcpy(ship.name, str);
  55.  
  56.  
  57. E:printf("Введите год постройки: ");
  58. gets(str);
  59. while (str[i])
  60. {
  61. if (str[i] <= '9' && str[i] >='0' || str[i] == '\0')
  62. {
  63. goto F;
  64.  
  65. }
  66. else
  67. {
  68. printf("Некорректный ввод:");
  69. goto E;
  70.  
  71. }
  72. }
  73. F:ship.year = atoi(str);
  74.  
  75. G:printf("Введите страну постройки: ");
  76. gets(str);
  77. while (str[i])
  78. {
  79. if (str[i] <= 'z' && str[i] >= 'a' || str[i] == '\0')
  80. {
  81. goto H;
  82.  
  83. }
  84. else
  85. {
  86. printf("Некорректный ввод:");
  87. goto G;
  88.  
  89. }
  90. }
  91. H:strcpy(ship.country, str);
  92.  
  93. I:printf("Введите водоизмещение: ");
  94. gets(str);
  95. while (str[i])
  96. {
  97. if (str[i] <= '9' && str[i] >= '0' || str[i] == '\0')
  98. {
  99. goto J;
  100.  
  101. }
  102. else
  103. {
  104. printf("Некорректный ввод:");
  105. goto I;
  106.  
  107. }
  108. }
  109. J:ship.displacement = atoi(str);
  110.  
  111. K:printf("Введите принадлежность к пароходству: 0/1");
  112. gets(str);
  113. while (str[i])
  114. {
  115. if (str[i] == '0' || str[i] = '1' || str[i] == '\0') {
  116. goto L;
  117.  
  118. }
  119. else
  120. {
  121. printf("Некорректный ввод:");
  122. goto K;
  123.  
  124. }
  125. }
  126. L:ship.company = atoi(str);
  127.  
  128. M:printf("Введите тип корабля: ");
  129. gets(str);
  130. while (str[i])
  131. {
  132. if (str[i] <= 'z' && str[i] >= 'a' || str[i] == '\0') {
  133. goto N;
  134.  
  135. }
  136. else
  137. {
  138. printf("Некорректный ввод:");
  139. goto M;
  140.  
  141. }
  142. }
  143. N:strcpy(ship.type, str);
  144.  
  145. Q:printf("Введите сумму страховки: ");
  146. gets(str);
  147. while (str[i])
  148. {
  149. if (str[i] <= '9' && str[i] >= '0' || str[i] == '\0') {
  150. goto R;
  151.  
  152. }
  153. else
  154. {
  155. printf("Некорректный ввод:");
  156. goto Q;
  157.  
  158. }
  159. }
  160. R:ship.insurance = atoi(str);
  161.  
  162. P:printf("Введите ФИО капитана: ");
  163. gets(str);
  164. while (str[i])
  165. {
  166. if (str[i] <= 'z' && str[i] >= 'a' || str[i] == '\0') {
  167. goto O;
  168.  
  169. }
  170. else
  171. {
  172. printf("Некорректный ввод:");
  173. goto P;
  174.  
  175. }
  176. }
  177. O:strcpy(ship.captain, str);
  178.  
  179. fwrite(&ship, sizeof(ship), 1, f);
  180. }
  181. printf("\n");
  182. fclose(f);
  183. printf("База данных кораблей заполнена\n\n");
  184.  
  185.  
  186. return 0;
  187. }
  188.  
  189. int addelement()
  190. {
  191. FILE *f;
  192. ship ship;
  193. char str[30];
  194. int k, i = 0;
  195. if ((f = fopen(fname, "rb+")) == NULL)
  196. {
  197. printf("Не удалось открыть файл\n");
  198. return 0;
  199. }
  200. gets();
  201.  
  202. C1: printf("Введите название: ");
  203.  
  204. gets(str);
  205. while (str[i])
  206. {
  207. if (str[i] <= 'z' && str[i] >= 'a' || str[i] == '\0')
  208. {
  209. goto D1;
  210.  
  211. }
  212. else
  213. {
  214. printf("Некорректный ввод:");
  215. goto C1;
  216.  
  217. }
  218. }
  219. D1:strcpy(ship.name, str);
  220.  
  221.  
  222. E1:printf("Введите год постройки: ");
  223. gets(str);
  224. while (str[i])
  225. {
  226. if (str[i] <= '9' && str[i] >='0' || str[i] == '\0')
  227. {
  228. goto F1;
  229.  
  230. }
  231. else
  232. {
  233. printf("Некорректный ввод:");
  234. goto E1;
  235.  
  236. }
  237. }
  238. F1:ship.year = atoi(str);
  239.  
  240. G1:printf("Введите страну постройки: ");
  241. gets(str);
  242. while (str[i])
  243. {
  244. if (str[i] <= 'z' && str[i] >= 'a' || str[i] == '\0')
  245. {
  246. goto H1;
  247.  
  248. }
  249. else
  250. {
  251. printf("Некорректный ввод:");
  252. goto G1;
  253.  
  254. }
  255. }
  256. H1:strcpy(ship.country, str);
  257.  
  258. I1:printf("Введите водоизмещение: ");
  259. gets(str);
  260. while (str[i])
  261. {
  262. if (str[i] <= '9' && str[i] >= '0' || str[i] == '\0')
  263. {
  264. goto J1;
  265.  
  266. }
  267. else
  268. {
  269. printf("Некорректный ввод:");
  270. goto I1;
  271.  
  272. }
  273. }
  274. J1:ship.displacement = atoi(str);
  275.  
  276. K1:printf("Введите принадлежность к пароходству: 0/1");
  277. gets(str);
  278. while (str[i])
  279. {
  280. if (str[i] == '0' || str[i] = '1' || str[i] == '\0') {
  281. goto L1;
  282.  
  283. }
  284. else
  285. {
  286. printf("Некорректный ввод:");
  287. goto K1;
  288.  
  289. }
  290. }
  291. L1:ship.company = atoi(str);
  292.  
  293. M1:printf("Введите тип корабля: ");
  294. gets(str);
  295. while (str[i])
  296. {
  297. if (str[i] <= 'z' && str[i] >= 'a' || str[i] == '\0') {
  298. goto N1;
  299.  
  300. }
  301. else
  302. {
  303. printf("Некорректный ввод:");
  304. goto M1;
  305.  
  306. }
  307. }
  308. N1:strcpy(ship.type, str);
  309.  
  310. Q1:printf("Введите сумму страховки: ");
  311. gets(str);
  312. while (str[i])
  313. {
  314. if (str[i] <= '9' && str[i] >= '0' || str[i] == '\0') {
  315. goto R1;
  316.  
  317. }
  318. else
  319. {
  320. printf("Некорректный ввод:");
  321. goto Q1;
  322.  
  323. }
  324. }
  325. R1:ship.insurance = atoi(str);
  326.  
  327. P1:printf("Введите ФИО капитана: ");
  328. gets(str);
  329. while (str[i])
  330. {
  331. if (str[i] <= 'z' && str[i] >= 'a' || str[i] == '\0') {
  332. goto O1;
  333.  
  334. }
  335. else
  336. {
  337. printf("Некорректный ввод:");
  338. goto P1;
  339.  
  340. }
  341. }
  342. O1:strcpy(ship.captain, str);
  343.  
  344. fseek(f, 0, SEEK_END);
  345. fwrite(&ship, sizeof(ship), 1, f);
  346. fclose(f);
  347. printf("\nДанный корабль\n\n");
  348. return 0;
  349. }
  350. int delelement()
  351. {
  352. FILE *f;
  353. ship ship;
  354.  
  355. int i, ind, size;
  356.  
  357. if ((f = fopen(fname, "rb+")) == NULL)
  358. {
  359. printf("Не удалось открыть файл\n");
  360. return 0;
  361. }
  362.  
  363. printf("Введите номер корабля, который вы хотите удалить: ");
  364. scanf("%d", &ind);
  365.  
  366. fseek(f, 0, SEEK_END);
  367. size = ftell(f) / sizeof(ship);
  368.  
  369. while ((ind > size) || (ind < 1))
  370. {
  371. printf("\nВ базе нет корабля с таким номером, введите новый номер : ");
  372. scanf("%d", &ind);
  373. }
  374.  
  375. ind--;
  376.  
  377. for (i = ind; i < size - 1; i++)
  378. {
  379. fseek(f, (i + 1) * sizeof(ship), SEEK_SET);
  380. fread(&ship, sizeof(ship), 1, f);
  381. fseek(f, (i) * sizeof(ship), SEEK_SET);
  382. fwrite(&ship, sizeof(ship), 1, f);
  383. }
  384.  
  385. chsize(_fileno(f), (size - 1) * sizeof(ship));
  386. fclose(f);
  387.  
  388. printf("\nКорабль с номером %d успешно удален\n\n", ind+1);
  389. return 0;
  390. }
  391.  
  392. int search()
  393. {
  394. FILE *f;
  395. ship ship;
  396. char str[30];
  397. int i=0, ind,n;
  398. int k = 0;
  399. if ((f = fopen(fname, "rb")) == NULL)
  400. {
  401. printf("Не удалось открыть файл\n");
  402. return 0;
  403. }
  404. printf("Выберите поле:\n1 - Название\n2 - Год постройки\n3 - Страна постройки\n4 - Водоизмещение\n5 - Принадлежность к пароходству\n6 - Тип корабля\n7 - Сумма страховки\n8 - ФИО капитана\n\n\n");
  405. scanf("%d", &ind);
  406. printf("\n");
  407. gets(str);
  408. switch (ind)
  409. {
  410. case 1:
  411. printf("Введите название корабля: ");
  412. gets(str);
  413. printf("\nНайденные корабли с заданным названием:\n");
  414. while (!feof(f))
  415. {
  416. fread(&ship, sizeof(ship), 1, f);
  417. if (!feof(f))
  418. {
  419. if (!strcmp(ship.name, str))
  420. printf("|%-15s|%-15d|%-15s|%-15d|%-15d|%-15s|%-15d|%-15s|\n", ship.name, ship.year, ship.country, ship.displacement, ship.company, ship.type, ship.insurance, ship.captain);
  421. }
  422. }
  423. printf("\n");
  424. break;
  425.  
  426. case 2:
  427. A2:printf("Введите год постройки: ");
  428. gets(str);
  429. while (str[i])
  430. {
  431. if (str[i] < '9' && str[i] > '0' || str[i] == '\0') {
  432. goto A2;
  433.  
  434. }
  435. else
  436. {
  437. printf("Некорректный ввод:");
  438. goto B2;
  439.  
  440. }
  441. }
  442. B2:n = atoi(str);
  443. printf("\nНайденные корабли :\n");
  444. while (!feof(f))
  445. {
  446. fread(&ship, sizeof(ship), 1, f);
  447. if (!feof(f))
  448. {
  449. if (ship.name==n)
  450. printf("|%-15s|%-15d|%-15s|%-15d|%-15d|%-15s|%-15d|%-15s|\n", ship.name, ship.year, ship.country, ship.displacement, ship.company, ship.type, ship.insurance, ship.captain);
  451. }
  452. }
  453. printf("\n");
  454. break;
  455.  
  456. case 3:
  457. printf("Введите страну постройки: ");
  458. gets(str);
  459. printf("\nНайденные корабли:\n");
  460. while (!feof(f))
  461. {
  462. fread(&ship, sizeof(ship), 1, f);
  463. if (!feof(f))
  464. {
  465. if (!strcmp(ship.otch, str))
  466. printf("|%-15s|%-15d|%-15s|%-15d|%-15d|%-15s|%-15d|%-15s|\n", ship.name, ship.year, ship.country, ship.displacement, ship.company, ship.type, ship.insurance, ship.captain);
  467. }
  468. }
  469. printf("\n");
  470. break;
  471. case 4:
  472. C2:printf("Введите водоизмещение: ");
  473. gets(str);
  474. while (str[i])
  475. {
  476. if (str[i] < '9' && str[i] > '0' || str[i] == '\0') {
  477. goto C2;
  478.  
  479. }
  480. else
  481. {
  482. printf("Некорректный ввод:");
  483. goto D2;
  484.  
  485. }
  486. }
  487. D2:n = atoi(str);
  488. printf("\nНайденные корабли:\n");
  489. while (!feof(f))
  490. {
  491. fread(&ship, sizeof(ship), 1, f);
  492. if (!feof(f))
  493. {
  494. if (ship.street==n)
  495. printf("|%-15s|%-15d|%-15s|%-15d|%-15d|%-15s|%-15d|%-15s|\n", ship.name, ship.year, ship.country, ship.displacement, ship.company, ship.type, ship.insurance, ship.captain);
  496. }
  497. }
  498. printf("\n");
  499. break;
  500.  
  501. case 5:
  502. E2:printf("Введите принадлежность к пароходству: ");
  503. gets(str);
  504. while (str[i])
  505. {
  506. if (str[i] < '9' && str[i] > '0' || str[i] == '\0') {
  507. goto E2;
  508.  
  509. }
  510. else
  511. {
  512. printf("Некорректный ввод:");
  513. goto F2;
  514.  
  515. }
  516. }
  517. F2:n = atoi(str);
  518. printf("\nНайденные корабли:\n");
  519. while (!feof(f))
  520. {
  521. fread(&ship, sizeof(ship), 1, f);
  522. if (!feof(f))
  523. {
  524. if (ship.numhouse==n)
  525. printf("|%-15s|%-15d|%-15s|%-15d|%-15d|%-15s|%-15d|%-15s|\n", ship.name, ship.year, ship.country, ship.displacement, ship.company, ship.type, ship.insurance, ship.captain);
  526. }
  527. }
  528. printf("\n");
  529. break;
  530. case 6:
  531. G2:printf("Введите тип корабля: ");
  532. gets(str);
  533. while (str[i])
  534. {
  535. if (str[i] < '9' && str[i] > '0' || str[i] == '\0') {
  536. goto G2;
  537.  
  538. }
  539. else
  540. {
  541. printf("Некорректный ввод:");
  542. goto H2;
  543.  
  544. }
  545. }
  546. H2:n = atoi(str);
  547. printf("\nНайденные корабли:\n");
  548. while (!feof(f))
  549. {
  550. fread(&ship, sizeof(ship), 1, f);
  551. if (!feof(f))
  552. {
  553. if (ship.numflat == n)
  554. printf("|%-15s|%-15d|%-15s|%-15d|%-15d|%-15s|%-15d|%-15s|\n", ship.name, ship.year, ship.country, ship.displacement, ship.company, ship.type, ship.insurance, ship.captain);
  555. }
  556. }
  557. printf("\n");
  558. break;
  559. case 7:
  560. I2:printf("Введите сумму страховки: ");
  561. gets(str);
  562. while (str[i])
  563. {
  564. if (str[i] < '9' && str[i] > '0' || str[i] == '\0') {
  565. goto I2;
  566.  
  567. }
  568. else
  569. {
  570. printf("Некорректный ввод:");
  571. goto J2;
  572.  
  573. }
  574. }
  575. J2:n = atoi(str);
  576. printf("\nНайденные корабли:\n");
  577. while (!feof(f))
  578. {
  579. fread(&ship, sizeof(ship), 1, f);
  580. if (!feof(f))
  581. {
  582. if (ship.year == n)
  583. printf("|%-15s|%-15d|%-15s|%-15d|%-15d|%-15s|%-15d|%-15s|\n", ship.name, ship.year, ship.country, ship.displacement, ship.company, ship.type, ship.insurance, ship.captain);
  584. }
  585. }
  586. printf("\n");
  587. break;
  588. case 8:
  589. K2:printf("Введите ФИО капитана: ");
  590. gets(str);
  591. while (str[i])
  592. {
  593. if (str[i] < '9' && str[i] > '0' || str[i] == '\0') {
  594. goto K2;
  595.  
  596. }
  597. else
  598. {
  599. printf("Некорректный ввод:");
  600. goto L2;
  601.  
  602. }
  603. }
  604. L2:n = atoi(str);
  605. printf("\nНайденные корабли:\n");
  606. while (!feof(f))
  607. {
  608. fread(&ship, sizeof(ship), 1, f);
  609. if (!feof(f))
  610. {
  611. if (ship.numotd== n)
  612. printf("|%-15s|%-15d|%-15s|%-15d|%-15d|%-15s|%-15d|%-15s|\n", ship.name, ship.year, ship.country, ship.displacement, ship.company, ship.type, ship.insurance, ship.captain);
  613. }
  614. }
  615. printf("\n");
  616. break;
  617. default:
  618. printf("Некорректный ввод\n\n");
  619. }
  620.  
  621. fclose(f);
  622. return 0;
  623. }
  624.  
  625. int edit()
  626. {
  627. FILE *f;
  628. ship ship;
  629. char str[30];
  630. int i, ind, size, n;
  631. int k = 0;
  632.  
  633. if ((f = fopen(fname, "rb+")) == NULL)
  634. {
  635. printf("Не удалось открыть файл\n");
  636. return -1;
  637. }
  638. sad:
  639. printf("Введите номер сотрудника: ");
  640. scanf("%s", str);
  641. for (int i = 0; i < strlen(str); i++)
  642. {
  643. if (str[i] <= '9' && str[i] >= '0' || str[i] == '\0')
  644. {
  645. continue;
  646. }
  647. else
  648. {
  649. goto sad;
  650. }
  651. }
  652.  
  653. ind = atoi(str);
  654. fseek(f, 0, SEEK_END);
  655. size = ftell(f) / sizeof(ship);
  656.  
  657. while ((ind > size) || (ind < 1))
  658. {
  659. printf("\nВ базе нет сотрудника с таким номером, введите новый номер сотрудника: ");
  660. scanf("%d", &ind);
  661. }
  662.  
  663. ind--;
  664.  
  665. fseek(f, ind * sizeof(ship), SEEK_SET);
  666. fread(&ship, sizeof(ship), 1, f);
  667. fseek(f, ftell(f) - sizeof(ship), SEEK_SET);
  668. printf("Выберите поле:\n1 - Фамилия\n2 - Имя\n3 - Отчество\n4 - Улица\n5 - Номер дома\n6 - Номер квартиры\n7 - Год рождения\n8 - Номер отдела\n9 - Должность\n10 - Оклад\n11 - Телефон\n\n");
  669. scanf("%d", &i);
  670. printf("\n");
  671. gets(str);
  672.  
  673. switch (i)
  674. {
  675. case 1:
  676. printf("Введите новую фамилию: ");
  677. gets(ship.surname);
  678. printf("\n");
  679. break;
  680.  
  681. case 2:
  682. printf("Введите новое имя: ");
  683. gets(ship.name);
  684. printf("\n");
  685. break;
  686.  
  687. case 3:
  688. printf("Введите новое отчество: ");
  689.  
  690. gets(ship.otch);
  691. printf("\n");
  692. break;
  693. case 4:
  694. printf("Введите новую улицу: ");
  695. gets(ship.street);
  696. printf("\n");
  697. break;
  698. case 5:
  699. A2:printf("Введите новый номер дома: ");
  700. scanf("%s", str);
  701. for (int i = 0; i < strlen(str); i++)
  702. {
  703. if (str[i] <= '9' && str[i] >= '0' || str[i] == '\0')
  704. {
  705. continue;
  706. }
  707. else
  708. {
  709. printf("Некорректный ввод:");
  710. goto A2;
  711.  
  712. }
  713.  
  714.  
  715. }
  716. n = atoi(str);
  717. ship.numhouse = n;
  718. printf("\n");
  719. break;
  720. case 6:
  721. printf("Введите новый номер квартиры: ");
  722. C:gets(str);
  723. for (int i = 0; i < strlen(str); i++)
  724. {
  725. if (str[i] <= '9' && str[i] >= '0' || str[i] == '\0') {
  726. goto D;
  727.  
  728. }
  729. else
  730. {
  731. printf("Некорректный ввод:");
  732. goto C;
  733.  
  734. }
  735. }
  736. D:n = atoi(str);
  737. ship.numflat = n;
  738. printf("\n");
  739. break;
  740. case 7:
  741. printf("Введите год рождения: ");
  742. E:gets(str);
  743. for (int i = 0; i < strlen(str); i++)
  744. {
  745. if (str[i] <= '9' && str[i] >= '0' || str[i] == '\0') {
  746. goto F;
  747.  
  748. }
  749. else
  750. {
  751. printf("Некорректный ввод:");
  752. goto E;
  753.  
  754. }
  755. }
  756. F:n = atoi(str);
  757. ship.year = n;
  758. printf("\n");
  759. break;
  760. case 8:
  761. printf("Введите новый номер отдела: ");
  762. G:gets(str);
  763. for (int i = 0; i < strlen(str); i++)
  764. {
  765. if (str[i] <= '9' && str[i] >= '0' || str[i] == '\0') {
  766. goto H;
  767.  
  768. }
  769. else
  770. {
  771. printf("Некорректный ввод:");
  772. goto G;
  773.  
  774. }
  775. }
  776. H:n = atoi(str);
  777. ship.numotd = n;
  778. printf("\n");
  779. break;
  780. case 9:
  781. printf("Введите новую должность: ");
  782. gets(ship.dolzhn);
  783. printf("\n");
  784. break;
  785. case 10:
  786. printf("Введите новый оклад: ");
  787. I:gets(str);
  788. for (int i = 0; i < strlen(str); i++)
  789. {
  790. if (str[i] <= '9' && str[i] >= '0' || str[i] == '\0') {
  791. goto J;
  792.  
  793. }
  794. else
  795. {
  796. printf("Некорректный ввод:");
  797. goto I;
  798. }
  799. }
  800. J:n = atoi(str);
  801. ship.oklad = n;
  802. printf("\n");
  803. break;
  804. case 11:
  805. printf("Введите новый номер телефона: ");
  806. K:gets(str);
  807. for (int i = 0; i < strlen(str); i++)
  808. {
  809. if (str[i] <= '9' && str[i] >='0' || str[i] == '\0') {
  810. goto L;
  811.  
  812. }
  813. else
  814. {
  815. printf("Некорректный ввод:");
  816. goto K;
  817.  
  818. }
  819. }
  820. L:n = atoi(str);
  821. ship.phone = n;
  822. printf("\n");
  823. break;
  824. default:
  825. printf("Некорректный ввод\n\n");
  826. }
  827.  
  828. fwrite(&ship, sizeof(ship), 1, f);
  829.  
  830. fclose(f);
  831. return 0;
  832. }
  833.  
  834. int sort()
  835. {
  836. FILE *f;
  837. ship tmp;
  838. ship *sotr = NULL;
  839. int i, j, ind1, ind2, size;
  840.  
  841. if ((f = fopen(fname, "rb+")) == NULL)
  842. {
  843. printf("Не удалось открыть файл\n");
  844. return 0;
  845. }
  846.  
  847. fseek(f, 0, SEEK_END);
  848. size = ftell(f) / sizeof(ship);
  849. fseek(f, 0, SEEK_SET);
  850. sotr = (ship*)malloc(size * sizeof(ship));
  851. for (i = 0; i < size; ++i)
  852. {
  853. fread(&sotr[i], sizeof(ship), 1, f);
  854. }
  855. printf("Выберите поле:\n1 - Фамилия\n2 - Имя\n3 - Отчество\n4 - Улица\n5 - Номер дома\n6 - Номер квартиры\n7 - Год рождения\n8 - Номер отдела\n9 - Должность\n10 - Оклад\n11 - Телефон\n\n");
  856. scanf("%d", &ind1);
  857. printf("\n");
  858.  
  859. switch (ind1)
  860. {
  861. case 1:
  862. printf("1 - по возрастанию\n2 - по убыванию\n\n");
  863. scanf("%d", &ind2);
  864. printf("\n");
  865. switch (ind2)
  866. {
  867. case 1:
  868. for (i = size - 1; i >= 0; i--)
  869. {
  870. for (j = 0; j < i; j++)
  871. {
  872. if (strcmp(sotr[j].surname, sotr[j + 1].surname) > 0)
  873. {
  874. tmp = sotr[j];
  875. sotr[j] = sotr[j + 1];
  876. sotr[j + 1] = tmp;
  877. }
  878. }
  879. }
  880. break;
  881.  
  882. case 2:
  883. for (i = size - 1; i >= 0; i--)
  884. {
  885. for (j = 0; j < i; j++)
  886. {
  887. if (strcmp(sotr[j].surname, sotr[j + 1].surname) < 0)
  888. {
  889. tmp = sotr[j];
  890. sotr[j] = sotr[j + 1];
  891. sotr[j + 1] = tmp;
  892. }
  893. }
  894. }
  895. break;
  896. default:
  897. printf("Некорректный ввод\n\n");
  898. }
  899. break;
  900.  
  901. case 2:
  902. printf("1 - по возрастанию\n2 - по убыванию\n\n");
  903. scanf("%d", &ind2);
  904. printf("\n");
  905. switch (ind2)
  906. {
  907. case 1:
  908. for (i = size - 1; i >= 0; i--)
  909. {
  910. for (j = 0; j < i; j++)
  911. {
  912. if (strcmp(sotr[j].name, sotr[j + 1].name) > 0)
  913. {
  914. tmp = sotr[j];
  915. sotr[j] = sotr[j + 1];
  916. sotr[j + 1] = tmp;
  917. }
  918. }
  919. }
  920. break;
  921.  
  922. case 2:
  923. for (i = size - 1; i >= 0; i--)
  924. {
  925. for (j = 0; j < i; j++)
  926. {
  927. if (strcmp(sotr[j].name, sotr[j + 1].name) < 0)
  928. {
  929. tmp = sotr[j];
  930. sotr[j] = sotr[j + 1];
  931. sotr[j + 1] = tmp;
  932. }
  933. }
  934. }
  935. break;
  936. default:
  937. printf("Некорректный ввод\n\n");
  938. }
  939. break;
  940.  
  941. case 3:
  942. printf("1 - по возрастанию\n2 - по убыванию\n\n");
  943. scanf("%d", &ind2);
  944. printf("\n");
  945. switch (ind2)
  946. {
  947. case 1:
  948. for (i = size - 1; i >= 0; i--)
  949. {
  950. for (j = 0; j < i; j++)
  951. {
  952. if (strcmp(sotr[j].otch, sotr[j + 1].otch) > 0)
  953. {
  954. tmp = sotr[j];
  955. sotr[j] = sotr[j + 1];
  956. sotr[j + 1] = tmp;
  957. }
  958. }
  959. }
  960. break;
  961.  
  962. case 2:
  963. for (i = size - 1; i >= 0; i--)
  964. {
  965. for (j = 0; j < i; j++)
  966. {
  967. if (strcmp(sotr[j].otch, sotr[j + 1].otch) < 0)
  968. {
  969. tmp = sotr[j];
  970. sotr[j] = sotr[j + 1];
  971. sotr[j + 1] = tmp;
  972. }
  973. }
  974. }
  975. break;
  976. default:
  977. printf("Некорректный ввод\n\n");
  978. }
  979. break;
  980.  
  981. case 4:
  982. printf("1 - по возрастанию\n2 - по убыванию\n\n");
  983. scanf("%d", &ind2);
  984. printf("\n");
  985. switch (ind2)
  986. {
  987. case 1:
  988. for (i = size - 1; i >= 0; i--)
  989. {
  990. for (j = 0; j < i; j++)
  991. {
  992. if (strcmp(sotr[j].street, sotr[j + 1].street) > 0)
  993. {
  994. tmp = sotr[j];
  995. sotr[j] = sotr[j + 1];
  996. sotr[j + 1] = tmp;
  997. }
  998. }
  999. }
  1000.  
  1001. case 2:
  1002. for (i = size - 1; i >= 0; i--)
  1003. {
  1004. for (j = 0; j < i; j++)
  1005. {
  1006. if (strcmp(sotr[j].street, sotr[j + 1].street) < 0)
  1007. {
  1008. tmp = sotr[j];
  1009. sotr[j] = sotr[j + 1];
  1010. sotr[j + 1] = tmp;
  1011. }
  1012. }
  1013. }
  1014. default:
  1015. printf("Некорректный ввод\n\n");
  1016. }
  1017. break;
  1018. case 5:
  1019. printf("1 - по возрастанию\n2 - по убыванию\n\n");
  1020. scanf("%d", &ind2);
  1021. printf("\n");
  1022. switch (ind2)
  1023. {
  1024. case 1:
  1025. for (i = size - 1; i >= 0; i--)
  1026. {
  1027. for (j = 0; j < i; j++)
  1028. {
  1029. if (sotr[j].numhouse>sotr[j + 1].numhouse)
  1030. {
  1031. tmp = sotr[j];
  1032. sotr[j] = sotr[j + 1];
  1033. sotr[j + 1] = tmp;
  1034. }
  1035. }
  1036. }
  1037.  
  1038. case 2:
  1039. for (i = size - 1; i >= 0; i--)
  1040. {
  1041. for (j = 0; j < i; j++)
  1042. {
  1043. if (sotr[j].numhouse < sotr[j + 1].numhouse)
  1044. {
  1045. tmp = sotr[j];
  1046. sotr[j] = sotr[j + 1];
  1047. sotr[j + 1] = tmp;
  1048. }
  1049. }
  1050. }
  1051. default:
  1052. printf("Некорректный ввод\n\n");
  1053. }
  1054. break;
  1055. case 6:
  1056. printf("1 - по возрастанию\n2 - по убыванию\n\n");
  1057. scanf("%d", &ind2);
  1058. printf("\n");
  1059. switch (ind2)
  1060. {
  1061. case 1:
  1062. for (i = size - 1; i >= 0; i--)
  1063. {
  1064. for (j = 0; j < i; j++)
  1065. {
  1066. if (sotr[j].numflat > sotr[j + 1].numflat)
  1067. {
  1068. tmp = sotr[j];
  1069. sotr[j] = sotr[j + 1];
  1070. sotr[j + 1] = tmp;
  1071. }
  1072. }
  1073. }
  1074.  
  1075. case 2:
  1076. for (i = size - 1; i >= 0; i--)
  1077. {
  1078. for (j = 0; j < i; j++)
  1079. {
  1080. if (sotr[j].numflat < sotr[j + 1].numflat)
  1081. {
  1082. tmp = sotr[j];
  1083. sotr[j] = sotr[j + 1];
  1084. sotr[j + 1] = tmp;
  1085. }
  1086. }
  1087. }
  1088. default:
  1089. printf("Некорректный ввод\n\n");
  1090. }
  1091. break;
  1092. case 7:
  1093. printf("1 - по возрастанию\n2 - по убыванию\n\n");
  1094. scanf("%d", &ind2);
  1095. printf("\n");
  1096. switch (ind2)
  1097. {
  1098. case 1:
  1099. for (i = size - 1; i >= 0; i--)
  1100. {
  1101. for (j = 0; j < i; j++)
  1102. {
  1103. if (sotr[j].year > sotr[j + 1].year)
  1104. {
  1105. tmp = sotr[j];
  1106. sotr[j] = sotr[j + 1];
  1107. sotr[j + 1] = tmp;
  1108. }
  1109. }
  1110. }
  1111.  
  1112. case 2:
  1113. for (i = size - 1; i >= 0; i--)
  1114. {
  1115. for (j = 0; j < i; j++)
  1116. {
  1117. if (sotr[j].year < sotr[j + 1].year)
  1118. {
  1119. tmp = sotr[j];
  1120. sotr[j] = sotr[j + 1];
  1121. sotr[j + 1] = tmp;
  1122. }
  1123. }
  1124. }
  1125. default:
  1126. printf("Некорректный ввод\n\n");
  1127. }
  1128. break;
  1129. case 8:
  1130. printf("1 - по возрастанию\n2 - по убыванию\n\n");
  1131. scanf("%d", &ind2);
  1132. printf("\n");
  1133. switch (ind2)
  1134. {
  1135. case 1:
  1136. for (i = size - 1; i >= 0; i--)
  1137. {
  1138. for (j = 0; j < i; j++)
  1139. {
  1140. if (sotr[j].numotd > sotr[j + 1].numotd)
  1141. {
  1142. tmp = sotr[j];
  1143. sotr[j] = sotr[j + 1];
  1144. sotr[j + 1] = tmp;
  1145. }
  1146. }
  1147. }
  1148.  
  1149. case 2:
  1150. for (i = size - 1; i >= 0; i--)
  1151. {
  1152. for (j = 0; j < i; j++)
  1153. {
  1154. if (sotr[j].numotd < sotr[j + 1].numotd)
  1155. {
  1156. tmp = sotr[j];
  1157. sotr[j] = sotr[j + 1];
  1158. sotr[j + 1] = tmp;
  1159. }
  1160. }
  1161. }
  1162. default:
  1163. printf("Некорректный ввод\n\n");
  1164. }
  1165. break;
  1166. case 9:
  1167. printf("1 - по возрастанию\n2 - по убыванию\n\n");
  1168. scanf("%d", &ind2);
  1169. printf("\n");
  1170. switch (ind2)
  1171. {
  1172. case 1:
  1173. for (i = size - 1; i >= 0; i--)
  1174. {
  1175. for (j = 0; j < i; j++)
  1176. {
  1177. if (strcmp(sotr[j].dolzhn, sotr[j + 1].dolzhn) > 0)
  1178. {
  1179. tmp = sotr[j];
  1180. sotr[j] = sotr[j + 1];
  1181. sotr[j + 1] = tmp;
  1182. }
  1183. }
  1184. }
  1185.  
  1186. case 2:
  1187. for (i = size - 1; i >= 0; i--)
  1188. {
  1189. for (j = 0; j < i; j++)
  1190. {
  1191. if (strcmp(sotr[j].dolzhn, sotr[j + 1].dolzhn) < 0)
  1192. {
  1193. tmp = sotr[j];
  1194. sotr[j] = sotr[j + 1];
  1195. sotr[j + 1] = tmp;
  1196. }
  1197. }
  1198. }
  1199. default:
  1200. printf("Некорректный ввод\n\n");
  1201. }
  1202. break;
  1203. case 10:
  1204. printf("1 - по возрастанию\n2 - по убыванию\n\n");
  1205. scanf("%d", &ind2);
  1206. printf("\n");
  1207. switch (ind2)
  1208. {
  1209. case 1:
  1210. for (i = size - 1; i >= 0; i--)
  1211. {
  1212. for (j = 0; j < i; j++)
  1213. {
  1214. if (sotr[j].oklad > sotr[j + 1].oklad)
  1215. {
  1216. tmp = sotr[j];
  1217. sotr[j] = sotr[j + 1];
  1218. sotr[j + 1] = tmp;
  1219. }
  1220. }
  1221. }
  1222.  
  1223. case 2:
  1224. for (i = size - 1; i >= 0; i--)
  1225. {
  1226. for (j = 0; j < i; j++)
  1227. {
  1228. if (sotr[j].oklad < sotr[j + 1].oklad)
  1229. {
  1230. tmp = sotr[j];
  1231. sotr[j] = sotr[j + 1];
  1232. sotr[j + 1] = tmp;
  1233. }
  1234. }
  1235. }
  1236. default:
  1237. printf("Некорректный ввод\n\n");
  1238. }
  1239. break;
  1240. case 11:
  1241. printf("1 - по возрастанию\n2 - по убыванию\n\n");
  1242. scanf("%d", &ind2);
  1243. printf("\n");
  1244. switch (ind2)
  1245. {
  1246. case 1:
  1247. for (i = size - 1; i >= 0; i--)
  1248. {
  1249. for (j = 0; j < i; j++)
  1250. {
  1251. if (sotr[j].phone > sotr[j + 1].phone)
  1252. {
  1253. tmp = sotr[j];
  1254. sotr[j] = sotr[j + 1];
  1255. sotr[j + 1] = tmp;
  1256. }
  1257. }
  1258. }
  1259.  
  1260. case 2:
  1261. for (i = size - 1; i >= 0; i--)
  1262. {
  1263. for (j = 0; j < i; j++)
  1264. {
  1265. if (sotr[j].phone < sotr[j + 1].phone)
  1266. {
  1267. tmp = sotr[j];
  1268. sotr[j] = sotr[j + 1];
  1269. sotr[j + 1] = tmp;
  1270. }
  1271. }
  1272. }
  1273. default:
  1274. printf("Некорректный ввод\n\n");
  1275. }
  1276. break;
  1277.  
  1278.  
  1279. default:
  1280. printf("Некорректный ввод\n\n");
  1281. }
  1282.  
  1283. fseek(f, 0, SEEK_SET);
  1284. for (i = 0; i < size; ++i)
  1285. {
  1286. fwrite(&sotr[i], sizeof(ship), 1, f);
  1287. }
  1288.  
  1289. free(sotr);
  1290. sotr= NULL;
  1291. fclose(f);
  1292. free(sotr);
  1293. return 0;
  1294. }
  1295.  
  1296. int outputBase()
  1297. {
  1298. FILE *f;
  1299. ship ship;
  1300.  
  1301. if ((f = fopen(fname, "rb")) == NULL)
  1302. {
  1303. printf("Не удалось открыть файл\n");
  1304. return 0;
  1305. }
  1306. printf("База данных:\n");
  1307. printf("| Фамилия | Имя | Отчество | Улица |Номер дома |Номер квартиры|Год рождения|Номер отдела| Должность | Оклад | Телефон |\n");
  1308. while (!feof(f))
  1309. {
  1310. fread(&ship, sizeof(ship), 1, f);
  1311. if (!feof(f))
  1312. printf("|%-15s|%-15s|%-15s|%-15s|%-11d|%-14d|%-12d|%-12d|%-15s|%-11d|%-13d|\n", ship.surname, ship.name, ship.otch, ship.street, ship.numhouse, ship.numflat, ship.year, ship.numotd, ship.dolzhn, ship.oklad, ship.phone);
  1313. }
  1314.  
  1315. printf("\n");
  1316.  
  1317. fclose(f);
  1318. return 0;
  1319. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement