Advertisement
Guest User

Untitled

a guest
Apr 25th, 2019
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.84 KB | None | 0 0
  1. #include <windows.h>
  2. #include <stdio.h>
  3. #include <conio.h>
  4. #include <iostream>
  5. #include <string>
  6. #include <io.h>
  7. #include <cmath>
  8.  
  9. #include "dialog.h"
  10. #include "binary.h"
  11. #include "struct.h"
  12.  
  13. bool createindialog(int argc, char *argv1, char *argv2)
  14. {
  15.     char s_text[1001], s_bin[1001];
  16.     bool t_way = true;
  17.     if (argc != 3)//проверка на некорректность данных в параметрах
  18.     {
  19.         printf_s("\nВведите имя текстового файла (без расширения): ");
  20.         scanf_s("%s", s_text, 1000);
  21.         strcat_s(s_text, ".txt");
  22.         printf_s("Введите имя бинарного файла (без расширения): ");
  23.         scanf_s("%s", s_bin, 1000);
  24.     }
  25.     else
  26.     {
  27.         t_way = false;
  28.         strcpy_s(s_text, argv1);
  29.         strcpy_s(s_bin, argv2);
  30.     }
  31.  
  32.     int num = createbinary(s_text, s_bin);
  33.     if (!(num == -1))
  34.     {
  35.         if ((!(num == -1)) and (!(num == -2)))
  36.         {
  37.             if (num != 0)
  38.             {
  39.                 printf_s("\nСоздан файл из %d записей", num);
  40.             }
  41.             else
  42.             {
  43.                 printf_s("\nИсходный файл пустой");
  44.             }
  45.         }
  46.     }
  47.     return t_way;
  48. }
  49. int searchindialog(char *argv2, bool t_way)
  50. {
  51.     char s_bin[1001];
  52.     if (t_way)
  53.     {
  54.         printf_s("\nВведите имя бинарного файла (без расширения): ");
  55.         scanf_s("%s", s_bin, 1000);
  56.     }
  57.     else
  58.     {
  59.         printf_s("\n");
  60.         strcpy_s(s_bin, argv2);
  61.     }
  62.  
  63.     FILE *input;
  64.     if (fopen_s(&input, s_bin, "rb+") == 0)
  65.     {
  66.         int elem = 0, num = 0;
  67.         Tproduce prod;
  68.         printf_s("Введите требуемое количество элементов продукции: ");
  69.         scanf_s("%d", &elem);
  70.         do
  71.         {
  72.             fread(&prod, sizeof(prod), 1, input);
  73.             if ((prod.quantity < elem) and !feof(input))
  74.             {
  75.                 num++;
  76.                 if (num == 1)
  77.                 {
  78.                     printf_s("\nНайдены элементы, удовлетворяющие условию:\n");
  79.                 }
  80.                 printf_s("'%s' в количестве '%d' штук с порядковым номером '%d'\n", prod.name, prod.quantity, prod.number);
  81.             }
  82.         } while (!feof(input));
  83.         if (num == 0)
  84.         {
  85.             printf_s("\nНе найдено ни одной искомой записи");
  86.         }
  87.         else
  88.         {
  89.             printf_s("\nВсего элементов найдено - %d", num);
  90.         }
  91.     }
  92.     else
  93.     {
  94.         printf_s("\nОшибка: не удалось открыть бинарный файл");
  95.         fclose(input);
  96.         return -1;
  97.     }
  98.     fclose(input);
  99.     return 0;
  100. }
  101.  
  102. int changeindialog(char *argv2, bool t_way)
  103. {
  104.     char s_bin[1001];
  105.     if (t_way)
  106.     {
  107.         printf_s("\nВведите имя бинарного файла (без расширения): ");
  108.         scanf_s("%s", s_bin, 1000);
  109.         printf_s("\n");
  110.     }
  111.     else
  112.     {
  113.         printf_s("\n");
  114.         strcpy_s(s_bin, argv2);
  115.     }
  116.  
  117.     FILE *input;
  118.     if (fopen_s(&input, s_bin, "rb+") == 0)
  119.     {
  120.         int num = 0;
  121.         Tproduce prod;
  122.         do
  123.         {
  124.             fread(&prod, sizeof(prod), 1, input);
  125.             if ((prod.quantity < 0) and (!feof(input)))
  126.             {
  127.                 int quantity = 0;
  128.                 num++;
  129.                 quantity = prod.quantity;
  130.                 prod.quantity = abs(prod.quantity);
  131.                 fseek(input, 0 - sizeof(prod), SEEK_CUR);
  132.                 fwrite(&prod, sizeof(prod), 1, input);
  133.                 fseek(input, 0, SEEK_CUR);
  134.                 printf_s("Найдена запись '%s' в количестве '%d' штук с порядковым номером '%d', в которой скорректировано значение количества на '%d'\n", prod.name, quantity, prod.number, prod.quantity);
  135.             }
  136.         } while (!feof(input));
  137.         if (num == 0)
  138.         {
  139.             printf_s("Ни одной коррекции не было произведено");
  140.         }
  141.         else
  142.         {
  143.             printf_s("\nВсего элементов скорректировано - %d", num);
  144.         }
  145.     }
  146.     else
  147.     {
  148.         printf_s("\nОшибка: не удалось открыть бинарный файл");
  149.         fclose(input);
  150.         return -1;
  151.     }
  152.     fclose(input);
  153.     return 0;
  154. }
  155.  
  156. int view(char *argv2, bool t_way)
  157. {
  158.     char s_bin[1001];
  159.     if (t_way)
  160.     {
  161.         printf_s("\nВведите имя бинарного файла (без расширения): ");
  162.         scanf_s("%s", s_bin, 1000);
  163.     }
  164.     else
  165.     {
  166.  
  167.         strcpy_s(s_bin, argv2);
  168.     }
  169.  
  170.     printf_s("\n");
  171.  
  172.     FILE *input;
  173.     if (fopen_s(&input, s_bin, "rb+") == 0)
  174.     {
  175.         int num = 0;
  176.         Tproduce prod;
  177.         do
  178.         {
  179.             fread(&prod, sizeof(prod), 1, input);
  180.             if (!feof(input))
  181.             {
  182.                 num++;
  183.                 printf_s("'%s' в количестве '%d' штук с порядковым номером '%d'\n", prod.name, prod.quantity, prod.number);
  184.             }
  185.         } while (!feof(input));
  186.         if (num == 0)
  187.         {
  188.             printf_s("\nНе найдено ни одной записи");
  189.         }
  190.         else
  191.         {
  192.             printf_s("\nВсего элементов в файле найдено - %d", num);
  193.         }
  194.     }
  195.     else
  196.     {
  197.         printf_s("\nОшибка: не удалось открыть бинарный файл");
  198.         fclose(input);
  199.         return -1;
  200.     }
  201.     fclose(input);
  202.     return 0;
  203. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement