Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- typedef struct Osoba
- {
- char imie[100];
- char nazwisko[100];
- int wiek;
- char plec[11];
- char imieop[100];
- char nazwiskoop[100];
- int numertelefonu;
- int idkategorii;
- struct Osoba* next;
- }Osoba ;
- Osoba odczyt_osob(const char sciezka){
- Osoba *head = NULL;
- FILE *plik;
- plik = fopen(sciezka,"rt");
- if(plik == NULL){
- printf("\nERROR 404\nBlad pliku %s", sciezka);
- }
- char imie[100],nazwisko[100];
- Osoba *tail = NULL;
- while(!feof(plik)){
- Osoba p;
- fscanf(plik,"%s %s %d %s %s %s %d %d",imie,nazwisko);
- Osoba *nowy_el = (Osoba*)malloc(sizeof(Osoba));
- strcpy(nowy_el->imie,imie);
- strcpy( nowy_el->nazwisko, nazwisko);
- nowy_el->next = NULL;
- if(head == NULL){
- head = nowy_el;
- tail = nowy_el;
- }
- else{
- tail->next = nowy_el;
- tail = tail->next;
- }
- }
- fclose(plik);
- return *head;
- }
- void wypiszgatunek(Osoba *head){
- if(head == NULL){
- printf("\nERROR 404\nLista gatunkow jest pusta!");
- }
- else{
- Osoba *p = head;
- do{
- printf("ID: %s ", p->imie);
- printf("Nazwa: %s\n", p->nazwisko);
- p = p->next;
- }while(p != NULL);
- }
- }
- //typedef struct kategoria
- //{
- // char nazwa[100];
- // char opis[100];
- // int min;
- // int max;
- // struct kategoria *next;
- //}kategoria;
- // zlicza dlugosc listy
- int dlugosc_listy(Osoba* lista)
- {
- int d = 0;
- Osoba* wsk = lista;
- while(wsk != NULL)
- {
- d++;
- wsk = wsk->next;
- }
- return d;
- }
- // dodaje nowy wezel do listy
- void dodaj(Osoba** lista, Osoba* nowa)
- {
- nowa->next=NULL;
- if((*lista)==NULL)
- {
- *lista = nowa;
- }
- else
- {
- Osoba* wsk = *lista;
- while(wsk->next != NULL)
- {
- wsk = wsk->next;
- }
- wsk->next = nowa;
- }
- }
- // dodaje osobe do listy
- void dodajOsobe(Osoba** lista){
- char line[500];
- Osoba* nowa = (Osoba*)malloc(sizeof(Osoba));
- printf("Podaj imie:");
- scanf("%s", nowa->imie);
- printf("Podaj nazwisko:");
- scanf("%s", nowa->nazwisko);
- printf("Podaj plec:" );
- scanf("%s", nowa->plec);
- printf("Podaj wiek:" );
- do {
- scanf("%d", &(nowa->wiek));
- if(nowa->wiek<18){
- char s1[] = "";
- printf("Czy posiada zgode opiekuna?");
- scanf("%s",s1);
- char s2[] = "TAK";
- if (strcmp(s1, s2) == 0) {
- printf("Podaj imie opiekuna:");
- scanf("%s", nowa->imieop);
- printf("Podaj nazwisko opiekuna:");
- scanf("%s", nowa->nazwiskoop);
- printf("Podaj numer telefonu opiekuna:");
- scanf("%d", &nowa->numertelefonu);
- dodaj(lista, nowa);
- printf("\tDODANO UZYTKOWNIKA");
- break;
- }
- else {
- printf("\nNie ma zgody opiekuna\n");
- break;
- }
- }
- }
- while(nowa->wiek<18);
- if(nowa->wiek>=18) {
- printf("\nPodaj numer telefonu:" );
- scanf("%d", &nowa->numertelefonu);
- dodaj(lista, nowa);
- printf("\tDODANO UZYTKOWNIKA");
- }
- }
- //Wypisuje cala liste
- void wypisz_liste(Osoba* lista)
- {
- Osoba* wsk = lista;
- if(lista == NULL)
- printf("\nBaza uzytkownikow jest pusta\n");
- else
- printf("\nBaza uzytkownikow zawiera %d elementow: \n", dlugosc_listy(lista) );
- int i = 1;
- while( wsk != NULL)
- {
- if(wsk->wiek<=18) {
- printf("\n%d %s %s %d %s %s %s %d \n", i, wsk->imie, wsk->nazwisko, wsk->wiek, wsk->plec,wsk->imieop,wsk->nazwiskoop, wsk->numertelefonu);
- }
- else
- printf("\n%d %s %s %d %s %d \n", i, wsk->imie, wsk->nazwisko, wsk->wiek, wsk->plec, wsk->numertelefonu);
- wsk=wsk->next;
- i++;
- }
- }
- //Usuwa element z listy
- void usun(Osoba** lista, int ID)
- {
- Osoba* poprzedni = NULL;
- Osoba* wsk = *lista;
- int i;
- for(i = 1; i < ID; i++)
- {
- poprzedni=wsk;
- wsk=wsk->next;
- }
- if(poprzedni==NULL)
- {
- (*lista)=(*lista)->next;
- free(wsk);
- }
- else
- {
- poprzedni->next=wsk->next;
- free(wsk);
- }
- }
- // Usuwa osobe po indexie
- void usun_osobe(Osoba** lista)
- {
- int ID;
- printf("\nPodaj indeks osoby:\n " );
- scanf("%d", &ID);
- if((ID > dlugosc_listy(*lista)) || (ID < 1))
- {
- printf("\nNie ma takiego indeksu\n");
- }
- else
- {
- usun(lista,ID);
- }
- }
- int usun_imnaz_lista(char* im, char* naz, Osoba** lista)
- {
- Osoba* poprzedni=NULL;
- Osoba* wsk= *lista;
- while((wsk != NULL) && ( ( strcmp(wsk->imie, im)!=0) || (strcmp(wsk->nazwisko, naz )!=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;
- }
- }
- //usuwa po imieniu i nazwisku
- void usun_imnaz(Osoba** lista)
- {
- char im[100];
- char naz[100];
- printf("\nPodaj imie:\n ");
- scanf("%s", im);
- printf("\nPodaj nazwisko: \n");
- scanf("%s", naz);
- if(usun_imnaz_lista(im, naz, lista))
- printf("\nOsoba zostala usunieta\n");
- else
- printf("\nOsoba nie zostala usunieta, nie ma takiej osoby\n");
- }
- /////// WHILEM SZUKA OSOBY KTORA CHCEMY ZMODIFYKIOWAC I ZMIENIA JEJ IMIE CZY COKOLWIEK
- void modyfikuj_osobe(Osoba** lista)
- {
- char im[100];
- char naz[100];
- Osoba* wsk= *lista;
- printf("\nPodaj imie:\n ");
- scanf("%s", im);
- printf("\nPodaj nazwisko:\n ");
- scanf("%s", naz);
- while((wsk != NULL) && (( strcmp(wsk->imie, im)==0) || (strcmp(wsk->nazwisko, naz )==0) )) {
- printf("\nPodaj nowe imie:\n ");
- scanf("%s", &*wsk->imie);
- printf("\nPodaj nowe nazwisko: \n");
- scanf("%s", &*wsk->nazwisko);
- printf("\nPodaj nowa pleć:\n ");
- scanf("%s", &*wsk->plec);
- printf("\nPodaj nowy wiek:\n ");
- int wiek = (int) NULL;
- scanf("%d",&wiek);
- if(wiek>=18)
- (wsk->wiek)= (int) wiek;
- else {
- char s1[] = "";
- printf("Czy posiada zgode opiekuna?");
- scanf("%s", s1);
- char s2[] = "TAK";
- if (strcmp(s1, s2) == 0) {
- printf("Podaj imie opiekuna:");
- scanf("%s", wsk->imieop);
- printf("Podaj nazwisko opiekuna:");
- scanf("%s", wsk->nazwiskoop);
- printf("Podaj numer telefonu opiekuna:");
- scanf("%d", &wsk->numertelefonu);
- (wsk->wiek)= (int) wiek;
- break;
- } else {
- printf("\nNie ma zgody opiekuna\n");
- break;
- }
- }
- }
- }
- void wypisz_osobe_lista(Osoba** lista, int ID)
- {
- int i;
- Osoba* wsk = *lista;
- for(i = 1; i < ID; i++)
- {
- wsk=wsk->next;
- }
- printf("%d %s %s %s %d", i, wsk->imie, wsk->nazwisko,wsk->plec , wsk->wiek);
- if(wsk->wiek>=18)
- printf("%d\n",wsk->numertelefonu);
- else
- printf("%d %s %s %s %d %d\n", i, wsk->imieop, wsk->nazwiskoop,wsk->plec , wsk->wiek,wsk->numertelefonu);
- }
- //wypisz osobe o podanym indexie
- void wypisz_osobe(Osoba* lista)
- {
- int ID;
- printf("\nPodaj numer osoby: \n" );
- scanf("%d", &ID);
- if((ID > dlugosc_listy(lista)) || (ID < 1))
- {
- printf("\nNie ma takiego indeksu\n");
- }
- else
- wypisz_osobe_lista(&lista, ID);
- }
- int main()
- {
- Osoba* lista = NULL;
- int option=1;
- while(option != 0)
- {
- printf("\n\n MENU");
- printf("\n\n\n 0 Wyjscie z programu");
- printf("\n 1 Wpisz dane uczestnika do bazy");
- printf("\n 2 Usun uczestnika o podanym indeksie");
- printf("\n 3 Usun uczestnika o podanych imieniu i nazwisku");
- printf("\n 4 Wyswietl uczestnika o podanym indeksie");
- printf("\n 5 Wyswietl cala liste uczestnikow \n");
- printf(" 6 Modyfikuj uczestnika\n");
- scanf("%d", &option);
- switch(option)
- {
- case 1:
- printf("DODAWANIE OSOBY\n");
- dodajOsobe(&lista);
- break;
- case 2:
- printf("USUWANIE OSOBY O PODANYM INDEKSIE\n");
- usun_osobe(&lista);
- break;
- case 3:
- printf("USUWANIE OSOBY NA BAZIE IMIENIA I NAZWISKA\n");
- usun_imnaz(&lista);
- break;
- case 4:
- printf("WYSWIETL OSOBE O PODANYM INDEKSIE\n");
- wypisz_osobe(lista);
- break;
- case 5:
- printf("WYSWIETL CALA BAZE\n");
- wypisz_liste(lista);
- break;
- case 6:
- printf("MODYFIKUJ\n");
- modyfikuj_osobe(&lista);
- break;
- }
- }
- // listagatunek odczyt_gatunkow(const char sciezka){
- // listagatunek gatunki_head = NULL;
- // FILE plik;
- // plik = fopen(sciezka,"rt");
- // if(plik == NULL){
- // printf("\nERROR 404\nBlad pliku %s", sciezka);
- // return NULL;
- // }
- // listagatunek gatunki_tail = NULL;
- // while(!feof(plik)){
- // gatunek p;
- // fscanf(plik,"%d %s",&p.id_gatunku, p.nazwa);
- // listagatunek nowy_el = (listagatunek*)malloc(sizeof(listagatunek));
- // nowy_el->value = p;
- // nowy_el->value = p;
- // nowy_el->next = NULL;
- // if(gatunki_head == NULL){
- // gatunki_head = nowy_el;
- // gatunki_tail = nowy_el;
- // }
- // else{
- // gatunki_tail->next = nowy_el;
- // gatunki_tail = gatunki_tail->next;
- // }
- // }
- // fclose(plik);
- // return gatunki_head;
- // }
- // void wypiszgatunek(listagatunek *head){
- // if(head == NULL){
- // printf("\nERROR 404\nLista gatunkow jest pusta!");
- // }
- // else{
- // listagatunek *p = head;
- // do{
- // printf("ID: %d ", p->value.id_gatunku);
- // printf("Nazwa: %s\n", p->value.nazwa);
- // p = p->next;
- // }while(p != NULL);
- // }
- // }
- int key;
- // scanf("%d", &key);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement