Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- int poprawne_opcje[]={1,2,3,4,5,6,7,8};
- int zlicz=0;
- int opcja[1]; // albo int x = tab[0]; //numerowanie od indexu 0
- typedef struct pracownik
- {
- char imie[50];
- char nazwisko[50];
- char pesel[11];
- int rok;
- int miesiac;
- int dzien;
- float pensja;
- struct pracownik* next;
- } pracownik ;
- void sortujNazwiska(pracownik* lista)
- {
- pracownik* wsk=lista;
- pracownik* poprzedni=NULL;
- if(lista==NULL)
- printf("Lista jest pusta");
- else
- {
- for(int r=0;r<zlicz;r++)
- {
- wsk=lista;
- int i=1;
- int zmiana=0;
- char imie[50];
- char nazwisko[50];
- char pesel[11];
- int rok;
- int miesiac;
- int dzien;
- float pensja;
- char imieP[50];
- char nazwiskoP[50];
- char peselP[11];
- int rokP;
- int miesiacP;
- int dzienP;
- float pensjaP;
- while(wsk!=NULL)
- {
- if(poprzedni==NULL && i==1) {
- strcpy(imie, wsk->imie);
- strcpy(nazwisko, wsk->nazwisko);
- strcpy(pesel, wsk->pesel);
- strcpy(rok, wsk->rok);
- strcpy(miesiac, wsk->miesiac);
- strcpy(dzien, wsk->dzien);
- strcpy(pensja, wsk->pensja);
- } else {
- if(strcmp(wsk->nazwisko, nazwisko)>0) {
- // zostaja bez zmian
- } else {
- //drugie wyzej
- strcpy(imie, wsk->imie);
- strcpy(nazwisko, wsk->nazwisko);
- strcpy(pesel, wsk->pesel);
- strcpy(rok, wsk->rok);
- strcpy(miesiac, wsk->miesiac);
- strcpy(dzien, wsk->dzien);
- strcpy(pensja, wsk->pensja);
- int wyk =0;
- poprzedni=lista;
- int k =0;
- while(poprzedni!=NULL)
- {
- if(wyk!=0)
- {break;}
- if(i==(k+2)) {
- strcpy(imieP, poprzedni->imie);
- strcpy(nazwiskoP, poprzedni->nazwisko);
- strcpy(poprzedni->imie, imie);
- strcpy(poprzedni->nazwisko, nazwisko);
- strcpy(wsk->imie, imieP);
- strcpy(wsk->nazwisko, nazwiskoP);
- wyk++;
- }
- k++;
- poprzedni=poprzedni->next;
- }
- poprzedni=NULL;
- }
- strcpy(imie, wsk->imie);
- strcpy(nazwisko, wsk->nazwisko);
- strcpy(pesel, wsk->pesel);
- strcpy(rok, wsk->rok);
- strcpy(miesiac, wsk->miesiac);
- strcpy(dzien, wsk->dzien);
- strcpy(pensja, wsk->pensja);
- }
- i++;
- wsk=wsk->next;
- }
- }
- int i = 1;
- while( wsk != NULL)
- {
- printf("%d %s %s \n", i, wsk->imie, wsk->nazwisko);
- wsk=wsk->next;
- i++;
- }
- }
- }
- /* int j=1;
- int pomocnicza=1;
- pracownik* wsk1=lista;
- while(wsk1!=NULL)
- { int i=1;
- char imieS[50];
- char nazwiskoS[50];
- char peselS[11];
- int rokS;
- int miesiacS;
- int dzienS;
- float pensjaS;
- strcpy(imieS,wsk1->imie);
- strcpy(nazwiskoS,wsk1->nazwisko);
- strcpy(peselS,wsk1->pesel);
- rokS=wsk1->rok;
- miesiacS=wsk1->miesiac;
- dzienS=wsk1->dzien;
- pensjaS=wsk1->pensja;
- if(pomocnicza!=i)
- {
- i++;
- wsk1=wsk1->next;
- }
- else
- {
- pomocnicza++;
- i=1;
- printf("\n%d. %s \n", j, nazwiskoS);
- j++;
- while(wsk1!=NULL)
- {
- if(strcmp(nazwiskoS,wsk1->nazwisko)>0)
- {
- strcpy(imieS,wsk1->imie);
- strcpy(nazwiskoS,wsk1->nazwisko);
- strcpy(peselS,wsk1->pesel);
- rokS=wsk1->rok;
- miesiacS=wsk1->miesiac;
- dzienS=wsk1->dzien;
- pensjaS=wsk1->pensja;
- }
- }
- }*/
- /* int j=1;
- pracownik* wsk1=lista;
- pracownik* wsk2=lista;
- for(int i=0;i<zlicz;i++)
- {
- char imieS[50];
- char nazwiskoS[50];
- char peselS[11];
- int rokS;
- int miesiacS;
- int dzienS;
- float pensjaS;
- strcpy(imieS,wsk1->imie);
- strcpy(nazwiskoS,wsk1->nazwisko);
- strcpy(peselS,wsk1->pesel);
- rokS=wsk1->rok;
- miesiacS=wsk1->miesiac;
- dzienS=wsk1->dzien;
- pensjaS=wsk1->pensja;
- while(wsk2!=NULL)
- {
- printf("\n%d. %s \n", j, nazwiskoS);
- j++;
- if(strcmp(nazwiskoS,wsk2->nazwisko)<0)
- {
- strcpy(imieS,wsk2->imie);
- strcpy(nazwiskoS,wsk2->nazwisko);
- strcpy(peselS,wsk2->pesel);
- rokS=wsk2->rok;
- miesiacS=wsk2->miesiac;
- dzienS=wsk2->dzien;
- pensjaS=wsk2->pensja;
- }
- wsk2=wsk2->next;
- }
- wsk1=wsk1->next;
- }
- */
- /*char sortowanie[zlicz][50];
- char pomocnicza[zlicz][50];
- int i=0;
- pracownik* wsk = lista;
- if(lista == NULL)
- {
- printf("Lista jest pusta");
- }
- else
- {
- while(wsk !=NULL)
- {
- sortowanie[i][50]=wsk->nazwisko;
- wsk=wsk->next;
- i++;
- }
- }
- for(int j=0;j<i;j++)
- {
- printf("%s",sortowanie[i][50]);
- }*/
- void dodaj(pracownik** lista, pracownik* nowa)
- {
- nowa->next=NULL;
- if((*lista)==NULL)
- {
- *lista = nowa;
- }
- else
- {
- pracownik* wsk = *lista;
- while(wsk->next != NULL)
- {
- wsk = wsk->next;
- }
- wsk->next = nowa;
- }
- zlicz++;
- }
- void wzor()
- {
- printf("#####################################\n\n");
- }
- void menu()
- {
- puts("\tMenu: \n"); // menu mozna w tablicy rozpisac ewentualnie
- puts(" 1.Dodanie nowego pracownika.");
- puts(" 2.Edycja obecnego pracownika.");
- puts(" 3.Usuwanie pracownika.");
- puts(" 4.Wypisanie wszystkich pracownikow.");
- puts(" 5.Wyszukanie wskazanego pracownika.");
- puts(" 6.Utworz plik ze wskazana data.");
- puts(" 7.Utworz plik ze wskazana placa.");
- puts(" 8.Zakoncz program.\n");
- wzor();
- printf(" Wybierz czynnosc: ");
- scanf("%d",&opcja[0]);
- }
- void dodajPracownika(pracownik** lista)
- {
- pracownik* nowa = (pracownik*)malloc(sizeof(pracownik));
- printf("Podaj imie: ");
- scanf("%s", nowa->imie);
- printf("Podaj nazwisko: ");
- scanf("%s", nowa->nazwisko);
- printf("Podaj pesel: " );
- scanf("%s", nowa->pesel);
- printf("Podaj rok: " );
- scanf("%d", &nowa->rok);
- printf("Podaj miesiac (odpowiednio 1-styczen 2-luty i tak do grudnia: " );
- scanf("%d", &nowa->miesiac);
- printf("Podaj dzien: " );
- scanf("%d", &nowa->dzien);
- printf("Podaj pensje: " );
- scanf("%f", &nowa->pensja);
- dodaj(lista, nowa);
- }
- void edytujPracownika(pracownik* lista)
- {
- if(lista == NULL) {
- printf("\nLista jest pusta. Nie posiada elementow do edycji.\n\n");
- } else
- {
- system("@cls||clear");
- int i=1,nr,n1;
- pracownik*wsk=lista;
- while(wsk!=NULL)//wyswietlanie listy
- {
- printf("%d. ",i);
- printf("%s | %s\n",wsk->imie,wsk->nazwisko);
- i++;
- wsk=wsk->next;
- }
- printf("Podaj numer do edycji: ");//wybranie elementu po indexie do edycji
- scanf("%d",&nr);
- wsk=lista;
- for(i=1;i<nr;i++)//sprawdzenie czy dobry numer
- {
- wsk=wsk->next;
- if(wsk==NULL){printf("Zly numer");}
- }
- printf("Spis pracownikow: \n");
- printf("1.Imie | 2.Nazwisko | 3. Pesel | 4.Rok zatrudnienia | 5.Miesiac zatrudnienia. | 6.Dzien zatrudnienia | 7.Pensja.\n");
- printf("%s | %s | %s | %d | %d | %d | %f",wsk->imie,wsk->nazwisko,wsk->pesel,wsk->rok,wsk->miesiac,wsk->dzien,wsk->pensja);
- printf("\nWybierz numer kolumny do edycji: ");
- scanf("%d",&n1);//tutaj wybieramy jaka wartosc chce edytowac na podstawie nr kolumny, uzyty switch case
- switch(n1)
- {
- case 1:
- printf("Podaj imie: ");
- scanf("%s", wsk->imie);
- break;
- case 2:
- printf("Podaj nazwisko: ");
- scanf("%s", wsk->nazwisko);
- break;
- case 3:
- printf("Podaj pesel: " );
- scanf("%s", wsk->pesel);
- break;
- case 4:
- printf("Podaj rok: " );
- scanf("%d", &wsk->rok);
- break;
- case 5:
- printf("Podaj miesiac (odpowiednio 1-styczen 2-luty i tak do grudnia: " );
- scanf("%d", &wsk->miesiac);
- break;
- case 6:
- printf("Podaj dzien: " );
- scanf("%d", &wsk->dzien);
- break;
- case 7:
- printf("Podaj pensje: " );
- scanf("%f", &wsk->pensja);
- break;
- default:
- printf("Zla kolumna");
- break;
- }
- }
- }
- int usunPomocnicza(char* pesel,pracownik** lista)
- {
- pracownik* poprzedni=NULL;
- pracownik* wsk= *lista;
- while((wsk != NULL) && (strcmp(wsk->pesel, pesel)!=0) )
- {
- poprzedni=wsk;
- wsk=wsk->next;
- }
- if(wsk == NULL )
- {
- return 0;
- }
- else
- {
- if(poprzedni==NULL)
- {
- (*lista)=(*lista)->next;
- free(wsk);
- }
- else
- {
- poprzedni->next=wsk->next;
- free(wsk);
- }
- return 1;
- }
- }
- void usunPracownika(pracownik** lista)
- {
- if((*lista) == NULL) {
- printf("\nLista jest pusta. Nie posiada elementow do usuniecia.\n\n");
- } else
- {
- char pesel[11];
- printf("Podaj PESEL pracownika ktorego chcesz usunac: ");
- scanf("%s", pesel);
- if(usunPomocnicza(pesel, lista))
- printf("Pracownik zostal usuniet z bazy.\n");
- else
- printf("\nPracownik nie zostal usuniety z bazy lub nie ma takiej osoby.\n\n");
- }
- }
- void wypiszPracownikow(pracownik* lista)
- {
- pracownik* wsk = lista;
- if(lista == NULL) {
- printf("\nLista jest pusta. Nie posiada elementow do wypisania\n\n");
- } else {
- int i=1;
- while( wsk != NULL)
- {
- printf("\n\n%d. %s %s %s %d %d %d %.2f\n\n", i, wsk->imie, wsk->nazwisko, wsk->pesel, wsk->rok, wsk->miesiac, wsk->dzien, wsk->pensja);
- wsk=wsk->next; // sortowanie przy wypisuwaniu dac
- i++;
- }
- }
- }
- void wyszukajPracownika(pracownik* lista)
- {
- if(lista == NULL) {
- printf("\nLista jest pusta. Nie posiada zadnego elementu do wyszukania.\n\n");
- } else
- {
- char pomocnicza2[11];
- printf("Podaj PESEL szukanego pracownika: " );
- scanf("%s", pomocnicza2);
- pracownik* wsk = lista;
- if(lista == NULL) {
- printf("LISTA JEST PUSTA");
- } else
- {
- int i=0;
- while( wsk != NULL)
- { if(strcmp(wsk->pesel,pomocnicza2)==0)
- {
- printf("\n\n %s %s %s %d %d %d %.2f\n\n", wsk->imie, wsk->nazwisko, wsk->pesel, wsk->rok, wsk->miesiac, wsk->dzien, wsk->pensja);
- i++;
- }
- wsk=wsk->next; // sortowanie przy wypisuwaniu dac
- }
- if(i==0)
- {
- printf("Pracownik o podanym PESEL'u nie istnieje!");
- }
- }
- }
- }
- void dataPracownika(pracownik* lista)
- {
- if(lista== NULL) {
- printf("\nLista jest pusta. Nie posiada elementow do zapisu.\n\n");
- } else
- {
- pracownik* wsk = lista;
- FILE *data_pracownikow;
- int i=1;
- int dany_rok,dany_miesiac,dany_dzien;
- printf("Podaj rok, od ktorego chcesz utworzyc spis pracownikow: ");
- scanf("%d",&dany_rok);
- printf("Podaj miesiac, od ktorego chcesz utworzyc spis pracownikow: ");
- scanf("%d",&dany_miesiac);
- printf("Podaj dzien, od ktorego chcesz utworzyc spis pracownikow: ");
- scanf("%d",&dany_dzien);
- data_pracownikow=fopen("SpisDat.txt","w");
- if(lista==NULL)
- {
- printf("Lista jest pusta");
- }
- else
- {
- while( wsk != NULL)
- {
- if(((wsk->rok)>=dany_rok)&&((wsk->miesiac)>=dany_miesiac)&&((wsk->dzien)>=dany_dzien))
- {
- fprintf(data_pracownikow,"%d. %s %s %s %d %d %d %.2f\n", i, wsk->imie, wsk->nazwisko, wsk->pesel, wsk->rok, wsk->miesiac, wsk->dzien, wsk->pensja);
- i++;
- }
- wsk=wsk->next;
- }
- }
- fclose(data_pracownikow);
- }
- }
- void kwotaPracownika(pracownik* lista)
- {
- if(lista== NULL) {
- printf("\nLista jest pusta. Nie posiada elementow do zapisu.\n\n");
- } else
- {
- pracownik* wsk = lista;
- FILE *kwota_pracownikow;
- int i=1;
- float dana_kwota;
- printf("Podaj kwote, od jakiej chcesz utworzyc spis pracownikow: ");
- scanf("%f",&dana_kwota);
- kwota_pracownikow=fopen("SpisKwot.txt","w");
- if(lista == NULL)
- {
- printf("Lista jest pusta");
- }
- else
- {
- while( wsk != NULL)
- {
- if((wsk->pensja)>=dana_kwota)
- {
- fprintf(kwota_pracownikow,"%d. %s %s %s %d %d %d %.2f\n", i, wsk->imie, wsk->nazwisko, wsk->pesel, wsk->rok, wsk->miesiac, wsk->dzien, wsk->pensja);
- i++;
- }
- wsk=wsk->next;
- }
- }
- fclose(kwota_pracownikow);
- }
- }
- int main()
- {
- pracownik* lista=NULL;
- wzor();
- puts(" Witaj w bazie danych pracownikow.\n");
- wzor();
- menu();
- while(1)
- {
- // if(opcja[0])
- switch(opcja[0])
- {
- case 1: dodajPracownika(&lista);
- break;
- case 2: edytujPracownika(lista);
- break;
- case 3: usunPracownika(&lista);
- break;
- case 4: wypiszPracownikow(lista);
- break;
- case 5: wyszukajPracownika(lista);
- break;
- case 6: dataPracownika(lista);
- break;
- case 7: kwotaPracownika(lista);
- break;
- case 8: printf("Nastepuje zamkniecie programu, nacisnij dowolny przycisk, aby zamknac.\n"); exit(0);
- break;
- case 9: sortujNazwiska(lista);
- break;
- default: puts("\nPodano niewlasciwe dane, prosze podac wlasciwe.\n\n");
- break;
- }
- wzor();
- menu();
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement