Advertisement
Guest User

Untitled

a guest
May 3rd, 2014
209
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.84 KB | None | 0 0
  1. #define _CRT_SECURE_NO_DEPRECATE
  2. #define _CRT_NONSTDC_NO_DEPRECATE
  3. #include <stdlib.h>
  4. #include <locale.h>
  5. #include <string.h>
  6. #include <stdio.h>
  7.  
  8. typedef struct
  9. {
  10.     char name[80];
  11.     int schet;
  12.     double summ;
  13.     char deleted[8];
  14. } person;
  15.  
  16. int show_menu(person* bd, int* n);
  17. int add_line(person* bd, int line, int* n);
  18. int count_line(person* bd, int* n);
  19. int show_line(person* bd, int line, int* n);
  20. int resize(int line, person* bd);
  21. int show_bd(person* bd, int* n);
  22.  
  23. int main()
  24. {
  25.     setlocale(LC_ALL, "Rus");
  26.     int n = 1;
  27.     person* bd = (person*)malloc(n * sizeof(person));
  28.     strcpy((bd)[0].deleted, "deleted\0");
  29.     while (show_menu(bd, &n));
  30.     return 0;
  31. }
  32. int show_menu(person* bd, int* n)
  33. {
  34.     int enter;
  35.     char command[40];
  36.     puts("1 - добавление записи\n2 - удаление записи\n3 - изменение записи\n4 - просмотр записи\n0 - выход\n");
  37.     gets(command);
  38.     enter = atoi(command);
  39.     switch (enter)
  40.     {
  41.         case 1:
  42.         {
  43.                   int line = count_line(bd, n);
  44.                   add_line(bd, line, n);
  45.                   break;
  46.         }
  47.         case 2:
  48.         {
  49.                   break;
  50.         }
  51.         case 3:
  52.         {
  53.                   break;
  54.         }
  55.         case 4:
  56.         {
  57.                   int line;
  58.                   puts("Введите строку:\n");
  59.                   gets(command);
  60.                   line = atoi(command);
  61.                   show_line(bd, line, n);
  62.                   break;
  63.         }
  64.         case 0:
  65.         {
  66.                   return 0;
  67.         }
  68.     }
  69.     return 1;
  70. }
  71. int resize(int line, person* bd)
  72. {
  73.     person* shit;
  74.     shit = (person*)realloc(bd, (line + 1)*sizeof(person));
  75.     if (shit != NULL)
  76.     {
  77.         bd = shit;
  78.     }
  79.     return 1;
  80. }
  81. int show_bd(person* bd, int* n)
  82. {
  83.     for (int i = 0; i < *n; i++)
  84.     {
  85.         show_line(bd, i, n);
  86.     }
  87.     return 1;
  88. }
  89. int add_line(person* bd, int line, int* n)
  90. {
  91.     if (*n < line + 1)
  92.     {
  93.         resize(line, bd);
  94.         (*n)++;
  95.     }
  96.     char str[80], enter[80];
  97.     int i = 0;
  98.     puts("Введите новые данные в формате Имя Счёт Сумма:\n");
  99.     gets(str);
  100.     char* token = strtok(str, " ");
  101.     while (token != NULL)
  102.     {
  103.         switch (i)
  104.         {
  105.         case 0:
  106.         {
  107.                   strcpy((bd + line)->name, token);
  108.                   break;
  109.         }
  110.         case 1:
  111.         {
  112.                   (bd + line)->schet = atoi(token);
  113.                   break;
  114.         }
  115.         case 2:
  116.         {
  117.                   (bd + line)->summ = atof(token);
  118.                   break;
  119.         }
  120.         default:
  121.         {
  122.                   return 1;
  123.                   break;
  124.         }
  125.         }
  126.         token = strtok(NULL, " ");
  127.         i++;
  128.     }
  129.     strcpy((bd + line)->deleted, "works\0");
  130.  
  131.     printf("Запись добавлена под номером %d\n\n", line);
  132.     return 1;
  133. }
  134. int count_line(person* bd, int* n)
  135. {
  136.     for (int i = 0; i < *n; i++)
  137.     {
  138.         if (!strcmp((bd + i)->deleted, "deleted"))
  139.         {
  140.             return i;
  141.         }
  142.     }
  143.     return *n;
  144. }
  145. int show_line(person* bd, int line, int* n)
  146. {
  147.     if (line >= 0 && line < *n && strcmp((bd + line)->deleted, "deleted"))
  148.     {
  149.         printf("%s %i %f\n", (bd + line)->name, (bd + line)->schet, (bd + line)->summ);
  150.     }
  151.     else
  152.     {
  153.         puts("Error\n");
  154.     }
  155.     return 1;
  156. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement