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];
- typedef struct pracownik
- {
- char imie[100];
- char nazwisko[100];
- char pesel[11];
- int rok;
- int miesiac;
- int dzien;
- float pensja;
- struct pracownik* next;
- } pracownik ;
- void sortujNazwiska(pracownik* lista)
- {
- char sortowanie[zlicz][3];
- pracownik* wsk = lista;
- if(lista == NULL)
- {
- printf("Lista jest pusta");
- }
- else
- {
- int i = 0;
- while(wsk !=NULL)
- {
- sortowanie[i][0]=wsk->imie;
- sortowanie[i][1]=wsk->nazwisko;
- sortowanie[i][2]=wsk->pesel;
- wsk=wsk->next;
- i++;
- }
- }
- }
- 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)
- {
- 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("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)
- {
- char pesel[11];
- printf("Podaj PESEL pracownika ktorego chcesz usunac: ");
- scanf("%s", pesel);
- if(usunPomocnicza(pesel, lista))
- printf("Pracownik zostal usuniet z bazy.");
- else
- printf("Pracownik nie zostal usuniety z bazy lub nie ma takiej osoby.");
- }
- void wypiszPracownikow(pracownik* lista)
- {
- pracownik* wsk = lista;
- if(lista == NULL) {
- printf("Lista jest pusta");
- } 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)
- {
- char pomocnicza2[11];
- printf("Podaj PESEL szukanego pracownika: " );
- scanf("%s", pomocnicza2);
- pracownik* wsk = lista;
- if(lista == NULL) {
- printf("LISTA JEST PUSTA");
- } else
- {
- int j=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);
- j++;
- }
- wsk=wsk->next; // sortowanie przy wypisuwaniu dac
- }
- if(j==0)
- {
- printf("Pracownik o podanym PESEL'u nie istnieje!");
- }
- }
- }
- void dataPracownika(pracownik* lista) // zapis do pliku pracownikow od podanej daty
- {
- 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);
- wsk=wsk->next; // sortowanie przy wypisuwaniu dac
- i++;
- }
- }
- }
- fclose(data_pracownikow);
- }
- void kwotaPracownika(pracownik* lista)
- {
- 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);
- wsk=wsk->next; // sortowanie przy wypisuwaniu dac
- i++;
- }
- }
- }
- fclose(kwota_pracownikow);
- }
- int main()
- {
- pracownik* lista=NULL;
- wzor();
- puts(" Witaj w bazie danych pracownikow.\n");
- wzor();
- menu();
- while(1)
- {
- 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;
- default: puts("\nPodano niewlasciwe dane, prosze podac wlasciwe.\n\n");
- break;
- }
- menu();
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement