SHARE
TWEET

Untitled

a guest Jul 17th, 2017 50 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4.  
  5. struct pracownik
  6. {
  7.     char imie[10];
  8.     char nazwisko[30];
  9.     char pesel[15];
  10.     int rok_urodzenia;
  11.     int od_kiedy_pracuje;
  12.     float pensja;
  13.     struct pracownik *nast;
  14. };
  15.  struct pracownik *first = NULL, *akt;
  16.  
  17.  
  18. void najzatr(struct pracownik *first)   // +
  19. {
  20.     FILE *plik1;
  21.     plik1=fopen("najdluzej_zatrudniony_pracownik.txt","w");
  22.     if(plik1==NULL)
  23.         return;
  24.  
  25.     struct pracownik* biez = first;
  26.     struct pracownik* pom = first;
  27.  
  28.     int min = biez->od_kiedy_pracuje;
  29.  
  30.     while(biez != NULL)
  31.     {
  32.      if(min > biez->od_kiedy_pracuje)
  33.      {
  34.       min = biez->od_kiedy_pracuje;
  35.       pom = biez;
  36.      }
  37.         biez = biez->nast;
  38.     }
  39.  
  40.  
  41.  
  42.     fprintf(plik1,"%s %s", pom->imie, pom->nazwisko);
  43.  
  44.     fclose(plik1);
  45. }
  46.  
  47. void najzarobki(struct pracownik *first)    // +
  48. {
  49.  
  50.  
  51.     FILE *plik2;
  52.     plik2=fopen("najlepiej_oplacany_pracownik.txt","w");
  53.     if(plik2==NULL)
  54.         return;
  55.  
  56.     struct pracownik* biez = first;
  57.     struct pracownik* pom = first;
  58.  
  59.     int max = biez->od_kiedy_pracuje;
  60.  
  61.     while(biez != NULL)
  62.     {
  63.      if(max > biez->pensja)
  64.      {
  65.       max = biez->od_kiedy_pracuje;
  66.       pom = biez;
  67.      }
  68.         biez = biez->nast;
  69.     }
  70.  
  71.  
  72.  
  73.     fprintf(plik2,"%s %s", pom->imie, pom->nazwisko);
  74.  
  75.     fclose(plik2);
  76. }
  77.  
  78.  
  79. void tworzplik()    // +
  80. {
  81.     struct pracownik el;
  82.     int i, t;
  83.     FILE *plik;
  84.     plik=fopen("dane.txt","w");
  85.     printf("Podaj ilosc pracownikow w firmie ");
  86.     scanf("%d",&t);
  87.     if(plik==NULL)
  88.     return;
  89.     else
  90.     for(i=0;i<t;i++)
  91.         {
  92.         printf("podaj imie  \n");
  93.         scanf("%s",el.imie);
  94.         fprintf(plik,"%s\t", el.imie);
  95.  
  96.         printf("podaj nazwisko  \n");
  97.         scanf("%s",el.nazwisko);
  98.         fprintf(plik,"%s\t", el.nazwisko);
  99.  
  100.         printf("podaj pesel  \n");
  101.         scanf("%s",el.pesel);
  102.         fprintf(plik,"%s\t", el.pesel);
  103.  
  104.         printf("podaj rok urodzenia  \n");
  105.         scanf("%d",&el.rok_urodzenia);
  106.         fprintf(plik,"%d\t", el.rok_urodzenia);
  107.  
  108.         printf("podaj od kiedy pracuje  \n");
  109.         scanf("%d",&el.od_kiedy_pracuje);
  110.         fprintf(plik,"%d\t", el.od_kiedy_pracuje);
  111.  
  112.         printf("podaj pensje  \n");
  113.         scanf("%f",&el.pensja);
  114.         fprintf(plik,"%.2f\t\n", el.pensja);
  115.         }
  116.  
  117.     fclose(plik);
  118.     }
  119.  
  120. struct pracownik * czytajzpliku(struct pracownik *first) // +
  121. {
  122.     struct pracownik *biez;
  123.  
  124.     FILE *plik;
  125.     plik=fopen("dane.txt","r");
  126.     if(plik==NULL)
  127.     return NULL;
  128.     else
  129.         {
  130.  
  131.         while(!feof(plik))
  132.         {
  133.              biez=(struct pracownik *)malloc(sizeof(struct pracownik));
  134.                 biez->nast=NULL;
  135.             if(fscanf(plik,"%s %s %s %d %d %f \n", biez->imie, biez->nazwisko, biez->pesel, &biez->rok_urodzenia, &biez->od_kiedy_pracuje, &biez->pensja) == EOF)
  136.             break;
  137.             if(first==NULL)
  138.             {
  139.  
  140.                 first = biez;
  141.  
  142.             }
  143.             else
  144.             {
  145.  
  146.  
  147.                 struct pracownik* pom = first;
  148.                 while(biez->nast != NULL)
  149.                 {
  150.                  pom = pom -> nast;
  151.                 }
  152.                  pom -> nast = biez;
  153.  
  154.             }
  155.         }
  156.         }
  157.         fclose(plik);
  158.         return first;
  159.  
  160. }
  161.  
  162.  
  163. struct pracownik * dodaj(struct pracownik *first) //+
  164. {
  165.     struct pracownik *biez;
  166.     int i, t;
  167.     biez = first;
  168.     while(biez!=NULL)
  169.         biez = biez -> nast;
  170.  
  171.         //plik=fopen("dane.txt","a");
  172.     printf("Podaj ilu pracownikow chcesz dodac ");
  173.     scanf("%d",&t);
  174.     //if(plik==NULL)
  175.     //return;
  176.     //else
  177.     for(i=0;i<t;i++)
  178.         {
  179.         biez=(struct pracownik *)malloc(sizeof(struct pracownik));
  180.  
  181.         printf("podaj imie  \n");
  182.         scanf("%s",biez->imie);
  183.  
  184.         printf("podaj nazwisko  \n");
  185.         scanf("%s",biez->nazwisko);
  186.  
  187.         printf("podaj pesel  \n");
  188.         scanf("%s",biez->pesel);
  189.  
  190.         printf("podaj rok urodzenia  \n");
  191.         scanf("%d",&biez->rok_urodzenia);
  192.  
  193.         printf("podaj od kiedy pracuje  \n");
  194.         scanf("%d",&biez->od_kiedy_pracuje);
  195.  
  196.         printf("podaj pensje  \n");
  197.         scanf("%f",&biez->pensja);
  198.  
  199.         biez->nast=biez;
  200.         }
  201.     return first;
  202.     }
  203.  
  204.  
  205.  
  206.  
  207. struct pracownik * edytuj(struct pracownik *first) //WYPIERDALA ŻE NIE MA TAKIEGO PRACOWNIKA
  208. {
  209.     int w;
  210.     struct pracownik *biez = first;
  211.     struct pracownik el, el2;
  212.     printf("podaj imie  \n");
  213.         scanf("%s",el.imie);
  214.     printf("podaj nazwisko  \n");
  215.         scanf("%s",el.nazwisko);
  216.  
  217.     while(biez!=NULL)
  218.     {
  219.         if(strcmp(biez->imie, el.imie)==strcmp(biez->nazwisko, el.nazwisko))
  220.             {
  221.                 printf("co chcesz edytowac?\n");
  222.                 printf("    1 - imie \n");
  223.                 printf("    2 - nazwisko\n");
  224.                 printf("    3 - pesel\n");
  225.                 printf("    4 - rok urodzenia\n");
  226.                 printf("    5 - rok zatrudnienia\n");
  227.                 printf("    6 - pensja\n");
  228.                 printf("    0 - wyjscie z funkcji\n");
  229.                 scanf("%d", &w);
  230.             switch(w)
  231.                 {
  232.                     case 1 :
  233.                         printf("podaj nowe imie\n");
  234.                         scanf("%s", el2.imie);
  235.                         strcpy(biez->imie, el2.imie);
  236.                         break;
  237.                     case 2 :
  238.                         printf("podaj nowe nazwisko\n");
  239.                         scanf("%s", el2.nazwisko);
  240.                         strcpy(biez->nazwisko, el2.nazwisko);
  241.                         break;
  242.                     case 3 :
  243.                         printf("podaj nowy pesel\n");
  244.                         scanf("%s", el2.pesel);
  245.                         strcpy(biez->pesel, el2.pesel);
  246.                         break;
  247.                     case 4 :
  248.                         printf("podaj nowy rok urodzenia\n");
  249.                         scanf("%d", &el2.rok_urodzenia);
  250.                         biez->rok_urodzenia=el2.rok_urodzenia;
  251.                         break;
  252.                     case 5 :
  253.                         printf("podaj nowy rok zatrudnienia\n");
  254.                         scanf("%d", &el2.od_kiedy_pracuje);
  255.                         biez->od_kiedy_pracuje=el2.od_kiedy_pracuje;
  256.                         break;
  257.                     case 6 :
  258.                         printf("podaj nowa pensja\n");
  259.                         scanf("%f", &el2.pensja);
  260.                         biez->pensja=el2.pensja;
  261.                         break;
  262.                     case 0 :
  263.                         printf("koniec funkcji\n");
  264.                         break;
  265.                     default :
  266.                         printf("podales zla cyfre\n");
  267.                         break;
  268.                 }
  269.             }
  270.         else
  271.             {
  272.             printf("nie ma takiego pracownika w bazie\n");
  273.             break;
  274.             }
  275.         }
  276.  
  277.  return first;
  278. }
  279.  
  280. struct pracownik * usun(struct pracownik *first) // +
  281. {
  282.     struct pracownik *pop, *biez, el;
  283.  
  284.     pop=first;
  285.     biez=first->nast;
  286.     printf("podaj mie i nazwisko pracownika, ktorego chcesz usunac z listy");
  287.     scanf("%s %s", el.imie, el.nazwisko);
  288.     if((strcmp(pop->imie,el.imie)==0)&&(strcmp(pop->nazwisko,el.nazwisko)==0))
  289.         {
  290.         first=biez;
  291.         free(pop);
  292.  
  293.         }
  294.     else
  295.         {
  296.          while(biez != NULL)
  297.          {
  298.           if((strcmp(biez->imie,el.imie)==0)&&(strcmp(biez->nazwisko,el.nazwisko)==0))
  299.           {
  300.               pop->nast = biez->nast;
  301.               free(biez);
  302.           }
  303.           pop = pop->nast;
  304.           biez = biez->nast;
  305.          }
  306.         }
  307.  
  308.     return first;
  309. }
  310.  
  311.  
  312. struct pracownik * wypisz(struct pracownik *first)
  313. {
  314.     struct pracownik *biez=first;
  315.     while(biez!=NULL)
  316.     {
  317.         printf("Imie: %s nazwisko: %s pesel: %s rok urodzenia: %d pracuje w firmie od: %d pensja: %.2f\n", biez->imie, biez->nazwisko, biez->pesel, biez->rok_urodzenia, biez->od_kiedy_pracuje, biez->pensja);
  318.         biez  = biez-> nast ;
  319.  
  320.     }
  321.     return first;
  322. }
  323.  
  324.  
  325. void szukaj(struct pracownik *biez) // DOKONCZYC!!!!!!
  326. {
  327.     int w1, w2;
  328.     struct pracownik el, el2;
  329.     printf("podaj po jakich polach chcesz wyszukac pracownika (wybierz dwa dowolone) ");
  330.     printf("    1  -  imie\n");
  331.     printf("    2  -  nazwisko\n");
  332.     printf("    3  -  pesel\n");
  333.     printf("    4  -  rok urodzenia\n");
  334.     printf("    5  -  rok zatrudnienia\n");
  335.     printf("    6  -  pensja\n");
  336.     scanf("%d %d", &w1, &w2);
  337.     switch(w1)
  338.         {
  339.             case 1:
  340.                 printf("podaj imie  \n");
  341.                 scanf("%s",el.imie);
  342.                     break;
  343.             case 2:
  344.                 printf("podaj nazwisko  \n");
  345.                 scanf("%s",el.nazwisko);
  346.                     break;
  347.             case 3:
  348.                 printf("podaj pesel  \n");
  349.                 scanf("%s",el.pesel);
  350.                     break;
  351.             case 4:
  352.                 printf("podaj rok urodzenia  \n");
  353.                 scanf("%d",&el.rok_urodzenia);
  354.                     break;
  355.             case 5:
  356.                printf("podaj od kiedy pracuje  \n");
  357.                 scanf("%d",&el.od_kiedy_pracuje);
  358.                     break;
  359.             case 6:
  360.                 printf("podaj pensje  \n");
  361.                 scanf("%f",&el.pensja);
  362.                     break;
  363.         }
  364.     switch(w2)
  365.         {
  366.             case 1:
  367.                 printf("podaj imie  \n");
  368.                 scanf("%s",el2.imie);
  369.                     break;
  370.             case 2:
  371.                 printf("podaj nazwisko  \n");
  372.                 scanf("%s",el2.nazwisko);
  373.                     break;
  374.             case 3:
  375.                 printf("podaj pesel  \n");
  376.                 scanf("%s",el2.pesel);
  377.                     break;
  378.             case 4:
  379.                 printf("podaj rok urodzenia  \n");
  380.                 scanf("%d",&el2.rok_urodzenia);
  381.                     break;
  382.             case 5:
  383.                printf("podaj od kiedy pracuje  \n");
  384.                scanf("%d",&el2.od_kiedy_pracuje);
  385.                     break;
  386.             case 6:
  387.                printf("podaj pensje  \n");
  388.                scanf("%f",&el2.pensja);
  389.                     break;
  390.         }
  391.         scanf("%s %s", el.imie, el.nazwisko);
  392.     while(biez!=NULL)
  393.     {
  394.  
  395.     if((strcmp(biez->imie,el.imie)==0)&&(strcmp(biez->nazwisko,el.nazwisko)==0))
  396.         printf("Imie: %s nazwisko: %s pesel: %s rok urodzenia: %d \n pracuje w firmie od: %d pensja: %.2f\n", biez->imie, biez->nazwisko, biez->pesel, biez->rok_urodzenia, biez->od_kiedy_pracuje, biez->pensja);
  397.         biez=biez->nast;
  398.     }
  399. }
  400.  
  401. struct pracownik * zapisz(struct pracownik *first)
  402. {
  403.     struct pracownik *biez=first;
  404.     FILE *plik;
  405.     plik=fopen("dane.txt","w");
  406.  
  407.     while(biez!=NULL)
  408.     {
  409.         fprintf(plik,"%s %s %s %d %d %.2f\n", biez->imie, biez->nazwisko, biez->pesel, biez->rok_urodzenia, biez->od_kiedy_pracuje, biez->pensja);
  410.         biez  = biez-> nast ;
  411.  
  412.     }
  413.     return first;
  414. }
  415. //struct pracownik * !!!!!!!!!!!!!!!!!!!!!!!!!!!!
  416.  
  417.  
  418. int main(void)
  419. {
  420.     struct pracownik *biez;
  421.     first = czytajzpliku(first);
  422.     int w=10;
  423.     while(w!=0)
  424.     {
  425.  
  426.  
  427.     printf("************Baza danych pracownikow firmy************\n\n");
  428.     printf("      1  -  Utworz baze danych pracownikow \n");
  429.     printf("      2  -  Dodaj pracownika \n");
  430.     printf("      3  -  Edytuj dane pracownika \n");
  431.     printf("      4  -  Usun pracownika \n");
  432.     printf("      5  -  Wypisz wszystkich pracownikow \n");
  433.     printf("      6  -  Wyszukaj pracownika \n");
  434.     printf("      0  -  Zakoncz program \n");
  435.  
  436.     scanf("%d", &w );
  437.      printf("\n");
  438.      switch(w)
  439.         {
  440.             case 1:
  441.                 tworzplik();
  442.                     break;
  443.             case 2:
  444.                akt = dodaj(akt);
  445.                     break;
  446.             case 3:
  447.                 first = edytuj(first);
  448.                     break;
  449.             case 4:
  450.                 first = usun(first);
  451.                     break;
  452.             case 5:
  453.                 wypisz(first);
  454.                     break;
  455.             case 6:
  456.                 szukaj(first);
  457.                     break;
  458.             case 0:
  459.                 printf("Koniec programu \n\n");
  460.                     break;
  461.             default:
  462.                 printf("Podales niewlasciwa cyfre \n\n");
  463.                     break;
  464.         }
  465.     biez=akt;
  466.     najzarobki(first);
  467.     najzatr(first);
  468.     first = zapisz(first);
  469.     }
  470.  
  471.  
  472.     return 0;
  473. }
RAW Paste Data
Top