Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<stdlib.h>
- #include<string.h>
- struct pracownik
- {
- char imie[10];
- char nazwisko[30];
- char pesel[15];
- int rok_urodzenia;
- int od_kiedy_pracuje;
- float pensja;
- struct pracownik *nast;
- };
- struct pracownik *first = NULL, *akt;
- void najzatr(struct pracownik *first) // +
- {
- FILE *plik1;
- plik1=fopen("najdluzej_zatrudniony_pracownik.txt","w");
- if(plik1==NULL)
- return;
- struct pracownik* biez = first;
- struct pracownik* pom = first;
- int min = biez->od_kiedy_pracuje;
- while(biez != NULL)
- {
- if(min > biez->od_kiedy_pracuje)
- {
- min = biez->od_kiedy_pracuje;
- pom = biez;
- }
- biez = biez->nast;
- }
- fprintf(plik1,"%s %s", pom->imie, pom->nazwisko);
- fclose(plik1);
- }
- void najzarobki(struct pracownik *first) // +
- {
- FILE *plik2;
- plik2=fopen("najlepiej_oplacany_pracownik.txt","w");
- if(plik2==NULL)
- return;
- struct pracownik* biez = first;
- struct pracownik* pom = first;
- int max = biez->od_kiedy_pracuje;
- while(biez != NULL)
- {
- if(max > biez->pensja)
- {
- max = biez->od_kiedy_pracuje;
- pom = biez;
- }
- biez = biez->nast;
- }
- fprintf(plik2,"%s %s", pom->imie, pom->nazwisko);
- fclose(plik2);
- }
- void tworzplik() // +
- {
- struct pracownik el;
- int i, t;
- FILE *plik;
- plik=fopen("dane.txt","w");
- printf("Podaj ilosc pracownikow w firmie ");
- scanf("%d",&t);
- if(plik==NULL)
- return;
- else
- for(i=0;i<t;i++)
- {
- printf("podaj imie \n");
- scanf("%s",el.imie);
- fprintf(plik,"%s\t", el.imie);
- printf("podaj nazwisko \n");
- scanf("%s",el.nazwisko);
- fprintf(plik,"%s\t", el.nazwisko);
- printf("podaj pesel \n");
- scanf("%s",el.pesel);
- fprintf(plik,"%s\t", el.pesel);
- printf("podaj rok urodzenia \n");
- scanf("%d",&el.rok_urodzenia);
- fprintf(plik,"%d\t", el.rok_urodzenia);
- printf("podaj od kiedy pracuje \n");
- scanf("%d",&el.od_kiedy_pracuje);
- fprintf(plik,"%d\t", el.od_kiedy_pracuje);
- printf("podaj pensje \n");
- scanf("%f",&el.pensja);
- fprintf(plik,"%.2f\t\n", el.pensja);
- }
- fclose(plik);
- }
- struct pracownik * czytajzpliku(struct pracownik *first) // +
- {
- struct pracownik *biez;
- FILE *plik;
- plik=fopen("dane.txt","r");
- if(plik==NULL)
- return NULL;
- else
- {
- while(!feof(plik))
- {
- biez=(struct pracownik *)malloc(sizeof(struct pracownik));
- biez->nast=NULL;
- 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)
- break;
- if(first==NULL)
- {
- first = biez;
- }
- else
- {
- struct pracownik* pom = first;
- while(biez->nast != NULL)
- {
- pom = pom -> nast;
- }
- pom -> nast = biez;
- }
- }
- }
- fclose(plik);
- return first;
- }
- struct pracownik * dodaj(struct pracownik *first) //+
- {
- struct pracownik *biez;
- int i, t;
- biez = first;
- while(biez!=NULL)
- biez = biez -> nast;
- //plik=fopen("dane.txt","a");
- printf("Podaj ilu pracownikow chcesz dodac ");
- scanf("%d",&t);
- //if(plik==NULL)
- //return;
- //else
- for(i=0;i<t;i++)
- {
- biez=(struct pracownik *)malloc(sizeof(struct pracownik));
- printf("podaj imie \n");
- scanf("%s",biez->imie);
- printf("podaj nazwisko \n");
- scanf("%s",biez->nazwisko);
- printf("podaj pesel \n");
- scanf("%s",biez->pesel);
- printf("podaj rok urodzenia \n");
- scanf("%d",&biez->rok_urodzenia);
- printf("podaj od kiedy pracuje \n");
- scanf("%d",&biez->od_kiedy_pracuje);
- printf("podaj pensje \n");
- scanf("%f",&biez->pensja);
- biez->nast=biez;
- }
- return first;
- }
- struct pracownik * edytuj(struct pracownik *first) //WYPIERDALA ÅģE NIE MA TAKIEGO PRACOWNIKA
- {
- int w;
- struct pracownik *biez = first;
- struct pracownik el, el2;
- printf("podaj imie \n");
- scanf("%s",el.imie);
- printf("podaj nazwisko \n");
- scanf("%s",el.nazwisko);
- while(biez!=NULL)
- {
- if(strcmp(biez->imie, el.imie)==strcmp(biez->nazwisko, el.nazwisko))
- {
- printf("co chcesz edytowac?\n");
- printf(" 1 - imie \n");
- printf(" 2 - nazwisko\n");
- printf(" 3 - pesel\n");
- printf(" 4 - rok urodzenia\n");
- printf(" 5 - rok zatrudnienia\n");
- printf(" 6 - pensja\n");
- printf(" 0 - wyjscie z funkcji\n");
- scanf("%d", &w);
- switch(w)
- {
- case 1 :
- printf("podaj nowe imie\n");
- scanf("%s", el2.imie);
- strcpy(biez->imie, el2.imie);
- break;
- case 2 :
- printf("podaj nowe nazwisko\n");
- scanf("%s", el2.nazwisko);
- strcpy(biez->nazwisko, el2.nazwisko);
- break;
- case 3 :
- printf("podaj nowy pesel\n");
- scanf("%s", el2.pesel);
- strcpy(biez->pesel, el2.pesel);
- break;
- case 4 :
- printf("podaj nowy rok urodzenia\n");
- scanf("%d", &el2.rok_urodzenia);
- biez->rok_urodzenia=el2.rok_urodzenia;
- break;
- case 5 :
- printf("podaj nowy rok zatrudnienia\n");
- scanf("%d", &el2.od_kiedy_pracuje);
- biez->od_kiedy_pracuje=el2.od_kiedy_pracuje;
- break;
- case 6 :
- printf("podaj nowa pensja\n");
- scanf("%f", &el2.pensja);
- biez->pensja=el2.pensja;
- break;
- case 0 :
- printf("koniec funkcji\n");
- break;
- default :
- printf("podales zla cyfre\n");
- break;
- }
- }
- else
- {
- printf("nie ma takiego pracownika w bazie\n");
- break;
- }
- }
- return first;
- }
- struct pracownik * usun(struct pracownik *first) // +
- {
- struct pracownik *pop, *biez, el;
- pop=first;
- biez=first->nast;
- printf("podaj mie i nazwisko pracownika, ktorego chcesz usunac z listy");
- scanf("%s %s", el.imie, el.nazwisko);
- if((strcmp(pop->imie,el.imie)==0)&&(strcmp(pop->nazwisko,el.nazwisko)==0))
- {
- first=biez;
- free(pop);
- }
- else
- {
- while(biez != NULL)
- {
- if((strcmp(biez->imie,el.imie)==0)&&(strcmp(biez->nazwisko,el.nazwisko)==0))
- {
- pop->nast = biez->nast;
- free(biez);
- }
- pop = pop->nast;
- biez = biez->nast;
- }
- }
- return first;
- }
- struct pracownik * wypisz(struct pracownik *first)
- {
- struct pracownik *biez=first;
- while(biez!=NULL)
- {
- 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);
- biez = biez-> nast ;
- }
- return first;
- }
- void szukaj(struct pracownik *biez) // DOKONCZYC!!!!!!
- {
- int w1, w2;
- struct pracownik el, el2;
- printf("podaj po jakich polach chcesz wyszukac pracownika (wybierz dwa dowolone) ");
- printf(" 1 - imie\n");
- printf(" 2 - nazwisko\n");
- printf(" 3 - pesel\n");
- printf(" 4 - rok urodzenia\n");
- printf(" 5 - rok zatrudnienia\n");
- printf(" 6 - pensja\n");
- scanf("%d %d", &w1, &w2);
- switch(w1)
- {
- case 1:
- printf("podaj imie \n");
- scanf("%s",el.imie);
- break;
- case 2:
- printf("podaj nazwisko \n");
- scanf("%s",el.nazwisko);
- break;
- case 3:
- printf("podaj pesel \n");
- scanf("%s",el.pesel);
- break;
- case 4:
- printf("podaj rok urodzenia \n");
- scanf("%d",&el.rok_urodzenia);
- break;
- case 5:
- printf("podaj od kiedy pracuje \n");
- scanf("%d",&el.od_kiedy_pracuje);
- break;
- case 6:
- printf("podaj pensje \n");
- scanf("%f",&el.pensja);
- break;
- }
- switch(w2)
- {
- case 1:
- printf("podaj imie \n");
- scanf("%s",el2.imie);
- break;
- case 2:
- printf("podaj nazwisko \n");
- scanf("%s",el2.nazwisko);
- break;
- case 3:
- printf("podaj pesel \n");
- scanf("%s",el2.pesel);
- break;
- case 4:
- printf("podaj rok urodzenia \n");
- scanf("%d",&el2.rok_urodzenia);
- break;
- case 5:
- printf("podaj od kiedy pracuje \n");
- scanf("%d",&el2.od_kiedy_pracuje);
- break;
- case 6:
- printf("podaj pensje \n");
- scanf("%f",&el2.pensja);
- break;
- }
- scanf("%s %s", el.imie, el.nazwisko);
- while(biez!=NULL)
- {
- if((strcmp(biez->imie,el.imie)==0)&&(strcmp(biez->nazwisko,el.nazwisko)==0))
- 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);
- biez=biez->nast;
- }
- }
- struct pracownik * zapisz(struct pracownik *first)
- {
- struct pracownik *biez=first;
- FILE *plik;
- plik=fopen("dane.txt","w");
- while(biez!=NULL)
- {
- fprintf(plik,"%s %s %s %d %d %.2f\n", biez->imie, biez->nazwisko, biez->pesel, biez->rok_urodzenia, biez->od_kiedy_pracuje, biez->pensja);
- biez = biez-> nast ;
- }
- return first;
- }
- //struct pracownik * !!!!!!!!!!!!!!!!!!!!!!!!!!!!
- int main(void)
- {
- struct pracownik *biez;
- first = czytajzpliku(first);
- int w=10;
- while(w!=0)
- {
- printf("************Baza danych pracownikow firmy************\n\n");
- printf(" 1 - Utworz baze danych pracownikow \n");
- printf(" 2 - Dodaj pracownika \n");
- printf(" 3 - Edytuj dane pracownika \n");
- printf(" 4 - Usun pracownika \n");
- printf(" 5 - Wypisz wszystkich pracownikow \n");
- printf(" 6 - Wyszukaj pracownika \n");
- printf(" 0 - Zakoncz program \n");
- scanf("%d", &w );
- printf("\n");
- switch(w)
- {
- case 1:
- tworzplik();
- break;
- case 2:
- akt = dodaj(akt);
- break;
- case 3:
- first = edytuj(first);
- break;
- case 4:
- first = usun(first);
- break;
- case 5:
- wypisz(first);
- break;
- case 6:
- szukaj(first);
- break;
- case 0:
- printf("Koniec programu \n\n");
- break;
- default:
- printf("Podales niewlasciwa cyfre \n\n");
- break;
- }
- biez=akt;
- najzarobki(first);
- najzatr(first);
- first = zapisz(first);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement