macrofish

janosova

Apr 20th, 2013
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 6.23 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4.  
  5. #define MAX 20
  6. typedef struct
  7. {
  8.     char jmeno[MAX];
  9.     char prijmeni[MAX];
  10.     char cislo[MAX];
  11. }zaznam;
  12.  
  13.  
  14. void tisk_tabulky()
  15. {
  16. printf("----------------------telefonni seznam----------------------------:\n");
  17. printf("   |  Prijmeni |  Jmeno   | Cislo    |\n");
  18. }
  19.  
  20. void add(int *pocet, zaznam *p)
  21. {
  22.     if (*pocet == MAX)
  23.     {
  24.         printf("seznam je jiz plny\n");
  25.     }
  26.     else
  27.     {
  28.     printf("zadejte prijmeni\n");
  29.     fflush(stdin);
  30.     gets(p[*pocet].prijmeni);
  31.  
  32.     printf("zadejte jmeno\n");
  33.     fflush(stdin);
  34.     gets(p[*pocet].jmeno);
  35.  
  36.     printf("zadejte cislo\n");
  37.     fflush(stdin);
  38.     gets(p[*pocet].cislo);
  39.     *pocet+=1;
  40.     }
  41. }
  42.  
  43. void tisk_seznamu(int *pocet, zaznam *p)
  44. {
  45.  
  46.     int i = 0;
  47.  
  48.      for (i=0; i<*pocet;i++)
  49.         {
  50.             printf("%d.  %11s|%10s|%10s\n",i+1,p[i].prijmeni,p[i].jmeno,p[i].cislo);                
  51.         }
  52.     printf("-----------------------------------------------------------------------------------------:\n");
  53. }
  54.  
  55. void smaz(int *pocet, zaznam *p)
  56. {
  57.         int i;
  58.         int lol;
  59.         char prijm[MAX];
  60.         int yay=0;
  61.         int counter =0;
  62.         printf("zadejte prijmeni kontaktu, ktery chcete smazat\n");
  63.         fflush(stdin);
  64.         gets(prijm);
  65.         fflush(stdin);
  66.  
  67.         for (i =0; i < *pocet; i++)
  68.         {
  69.             if (strcmp(prijm,p[i].prijmeni)==0)
  70.                 {
  71.                         yay =1;
  72.                         lol=i;
  73.                 }
  74.         }
  75.         while (yay==0)
  76.         {
  77.                 printf("Zadane cislo neexistuje, opakujte zadani cisla\n");
  78.                 fflush(stdin);
  79.                 gets(prijm);
  80.                 fflush(stdin);
  81.                 for (i =0; i < *pocet; i++)
  82.                 {
  83.                         if (strcmp(prijm,p[i].prijmeni)==0)
  84.                         {
  85.                                 yay =1;
  86.                                 lol=i;
  87.                         }
  88.                 }
  89.         }
  90.  
  91.         for (i=lol; i <*pocet-1;i++)
  92.         {
  93.               strcpy(p[i+1].cislo,p[i].cislo);
  94.               strcpy(p[i+1].prijmeni,p[i].prijmeni);
  95.               strcpy(p[i+1].jmeno,p[i].jmeno);
  96.                                          
  97.         }
  98.         *pocet=counter+lol;
  99. }
  100.  
  101. void hledat_prijmeni(int pocet, zaznam *p)
  102. {
  103.     printf("zadejte hledane prijmeni\n");
  104.     char prijm[MAX];
  105.     fflush(stdin);
  106.     gets(prijm);
  107.     fflush(stdin);
  108.     int i;
  109.     int counter=0;
  110.     for(i=0;i<pocet;i++)
  111.     {
  112.         if (strcmp(prijm,p[i].prijmeni)==0)
  113.         {
  114.             tisk_tabulky();
  115.             printf("%d.  %11s|%10s|%10s\n",1,p[i].prijmeni,p[i].jmeno,p[i].cislo);
  116.             printf("-----------------------------------------------------------------------------------------:\n");
  117.             counter = 1;
  118.         }
  119.     }
  120.     if (counter ==0)
  121.     {
  122.         printf("prijmeni nenalezeno\n");
  123.     }
  124. }
  125.  
  126. void edit(int pocet, zaznam *p)
  127. {
  128.         printf("zadejte prijmeni kontaku, ktery chcete editovat\n");
  129.         int i;
  130.         int lol;
  131.         char prijm[MAX];
  132.         int yay=0;
  133.         int counter =0;
  134.         fflush(stdin);
  135.         gets(prijm);
  136.         fflush(stdin);
  137.         for (i =0; i < pocet; i++)
  138.         {
  139.             if (strcmp(p[i].prijmeni,prijm)==0)
  140.                 {
  141.                         yay =1;
  142.                         lol=i;
  143.                 }
  144.         }
  145.         while (yay==0)
  146.         {
  147.                 printf("Zadane cislo neexistuje, opakujte zadani cisla\n");
  148.                 fflush(stdin);
  149.                 gets(prijm);
  150.                 fflush(stdin);
  151.                 for (i =0; i < pocet; i++)
  152.                 {
  153.                         if (p[i].prijmeni == prijm)
  154.                         {
  155.                                 yay =1;
  156.                                 lol=i;
  157.                         }
  158.                 }
  159.         }
  160.         printf("zadejte nove prijmeni\n");
  161.         fflush(stdin);
  162.         gets(p[lol].prijmeni);
  163.  
  164.         printf("zadejte nove jmeno\n");
  165.         fflush(stdin);
  166.         gets(p[lol].jmeno);
  167.  
  168.         printf("zadejte nove cislo\n");
  169.         fflush(stdin);
  170.         gets(p[lol].cislo);;
  171.  
  172. }
  173.  
  174. int main()
  175. {
  176.     int count=0;
  177.     zaznam p[MAX];
  178.     int pocet = 0;
  179.     char prijmeni2[MAX];
  180.     char jmeno2[MAX];
  181.     char cislo2[MAX];
  182.     FILE *soubor;
  183.     soubor = fopen("seznam.txt", "r");
  184.    
  185.     int pom=0;
  186.     while (!feof(soubor))
  187.     {
  188.         fgets(prijmeni2,MAX,soubor);
  189.         fgets(jmeno2,MAX,soubor);
  190.         fgets(cislo2,MAX,soubor);
  191.         count++;
  192.     }
  193.     fclose(soubor);
  194.  
  195.     soubor = fopen("seznam.txt", "r");
  196.     while (!feof(soubor))
  197.     {
  198.     fgets(prijmeni2,MAX,soubor);
  199.     int pom = strlen(prijmeni2);
  200.     pom=pom-1;
  201.     strncpy(p[pocet].prijmeni,prijmeni2,pom);
  202.     p[pocet].prijmeni[pom] = '\0';
  203.    
  204.     fgets(jmeno2,MAX,soubor);  
  205.     pom = strlen(jmeno2);
  206.     pom=pom-1;
  207.     strncpy(p[pocet].jmeno,jmeno2,pom);
  208.     p[pocet].jmeno[pom] = '\0';
  209.     int la =count-1;   
  210.     if(pocet==la)
  211.     {
  212.     fgets(cislo2,MAX,soubor);  
  213.     pom = strlen(cislo2);
  214.     pom=pom;
  215.     strncpy(p[pocet].cislo,cislo2,pom);
  216.     p[pocet].cislo[pom] = '\0';
  217.     pocet++;
  218.  
  219.     }
  220.     else
  221.     {
  222.     fgets(cislo2,MAX,soubor);  
  223.     pom = strlen(cislo2);
  224.     pom=pom-1;
  225.     strncpy(p[pocet].cislo,cislo2,pom);
  226.     p[pocet].cislo[pom] = '\0';
  227.     pocet++;
  228.     }
  229.     }
  230.     fclose(soubor);
  231.  
  232.     char x;
  233.     char a;
  234.     printf("vitejte v mem telefonnim seznamu\n");
  235.     tisk_tabulky();
  236.     tisk_seznamu(&pocet,p);
  237.     do
  238.     {
  239.     printf("stisknete 'p' pro pridani zaznamu, 's' pro smazani zaznamu, 'j' pro hledani dle prijmeni nebo 'e' pro editaci kontaktu\n");
  240.     scanf("%c",&a);
  241.     switch (a)
  242.     {
  243.     case 'p':
  244.         {
  245.             add(&pocet,p);
  246.             system("cls");
  247.             tisk_tabulky();
  248.             tisk_seznamu(&pocet,p);
  249.             break;
  250.         }
  251.  
  252.     case 's':
  253.         {
  254.             if (pocet >0)
  255.             {
  256.             system("cls");
  257.             tisk_tabulky();
  258.             tisk_seznamu(&pocet,p);
  259.             smaz(&pocet,p);
  260.             system("cls");
  261.             printf("novy seznam vypada nasledovne: \n");
  262.             tisk_tabulky();
  263.             tisk_seznamu(&pocet,p);
  264.             }
  265.             else
  266.                 printf("seznam je prazdny, nelze mazat\n");
  267.             break;
  268.         }
  269.  
  270.     case 'j':
  271.         {
  272.             if(pocet > 0)
  273.             {
  274.             system("cls");
  275.             tisk_tabulky();
  276.             tisk_seznamu(&pocet,p);
  277.             hledat_prijmeni(pocet,p);
  278.             }
  279.             else
  280.                 printf("seznam je prazdny, nelze hledat\n");
  281.             break;
  282.         }
  283.  
  284.     case 'e':
  285.         {
  286.             if(pocet == 0)
  287.             {
  288.                 printf("seznam je prazdny, nelze editovat\n");
  289.             }
  290.             else
  291.             {
  292.             system("cls");
  293.             tisk_tabulky();
  294.             tisk_seznamu(&pocet,p);
  295.             edit(pocet,p);
  296.             system("cls");
  297.             printf("novy seznam vypada nasledovne:\n");
  298.             tisk_tabulky();
  299.             tisk_seznamu(&pocet,p);
  300.             }
  301.             break;
  302.         }
  303.     }
  304.  
  305.     printf("chcete pokracovat? 'y'/ 'Y' pro ano\n");
  306.     fflush(stdin);
  307.     scanf("%c",&x);
  308.     fflush(stdin);
  309.     }while (x == 'y' || x == 'Y');
  310.  
  311.     return 0;
  312. }
Advertisement
Add Comment
Please, Sign In to add comment