Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma warning(disable : 4996)
- #include "stdafx.h"
- #include <stdlib.h>
- #include <string.h>
- #include <stdio.h>
- struct Osoba
- {
- char imie[20];
- char nazwisko[20];
- int wiek;
- char plec;
- struct Osoba *next;
- struct Osoba *prev;
- };
- void dodajElementNaKoniec(Osoba *wsk)
- {
- Osoba *nowyElement;
- while (wsk->next != NULL)
- {
- wsk = wsk->next;
- }
- nowyElement = (Osoba *)malloc(sizeof(Osoba));
- printf("Podaj imie dodanej osoby: ");
- scanf("%s", &nowyElement->imie);
- printf("Podaj nazwisko dodanej osoby: ");
- scanf("%s", &nowyElement->nazwisko);
- printf("Podaj wiek dodanej osoby: ");
- scanf("%d", &nowyElement->wiek);
- printf("Podaj plec dodanej osoby(M/K): ");
- scanf("%s", &nowyElement->plec);
- nowyElement->next = NULL;
- nowyElement->prev = wsk;
- wsk->next = nowyElement;
- printf("\nPomyslnie dodano nowa osobe na koniec listy");
- getchar();
- }
- void wypiszListe(Osoba *wsk)
- {
- printf("TWOJA LISTA: \n");
- wsk = wsk->next;
- while (wsk->next != NULL)
- {
- printf("\n%s\n", wsk->imie);
- printf("%s\n", wsk->nazwisko);
- printf("%d\n", wsk->wiek);
- printf("%c\n", wsk->plec);
- wsk = wsk->next;
- }
- printf("\n%s\n", wsk->imie);
- printf("%s\n", wsk->nazwisko);
- printf("%d\n", wsk->wiek);
- printf("%c\n", wsk->plec);
- getchar();
- }
- void wyczyscListe(struct Osoba *wsk) {
- Osoba *nast = nullptr;
- wsk = wsk->next;
- while (wsk->next != NULL)
- {
- nast = wsk->next;
- free(wsk);
- wsk = nast;
- }
- free(wsk);
- free(nast);
- printf("Lista zostala wyczyszczona\n");
- getchar();
- }
- void usunElementONazwisku(Osoba *wsk)
- {
- char nazwisko_usuwane[30];
- printf("Osoby o jakim nazwisku chcesz usunac? ");
- scanf("%s", &nazwisko_usuwane);
- while (wsk->next != NULL)
- {
- if (strcmp(wsk->nazwisko, nazwisko_usuwane) == 0)
- {
- Osoba *usuwany_element = wsk->next;
- wsk->next = usuwany_element->next;
- free(usuwany_element);
- }
- else
- {
- wsk = wsk->next;
- }
- }
- if (strcmp(wsk->nazwisko, nazwisko_usuwane) == 0)
- {
- Osoba *usuwany_element = wsk->next;
- wsk->next = usuwany_element->next;
- free(usuwany_element);
- }
- printf("Osoby o nazwisku %s zostaly usuniete z listy", nazwisko_usuwane);
- getchar();
- }
- void usunElementONumerze(Osoba *wsk, int numer)
- {
- for (int i = 1; i < numer; i++)
- {
- wsk = wsk->next;
- }
- Osoba *usuwany_element = wsk->next;
- wsk->next = usuwany_element->next;
- free(usuwany_element);
- printf("Element o numerze %d zostal usuniety z listy.", numer);
- getchar();
- }
- void wyswietlElementONumerze(Osoba *wsk, int numer)
- {
- for (int i = 0; i < numer; i++)
- {
- wsk = wsk->next;
- }
- printf("Element o numerze %d to: \n", numer);
- printf("\n%s\n", wsk->imie);
- printf("%s\n", wsk->nazwisko);
- printf("%d\n", wsk->wiek);
- printf("%c\n", wsk->plec);
- getchar();
- printf("\n1 - Wyswietlenie nastepnego elementu");
- printf("\n2 - Wyswietlenie poprzedniego elementu");
- printf("\n0 - Powrot do MENU GLOWNE");
- int wybor;
- scanf("%d", &wybor);
- switch (wybor)
- {
- case 1:
- if (wsk->next == NULL)
- {
- printf("Jestes na koncu listy");
- getchar();
- }
- else
- {
- printf("Kolejny element to: \n");
- wsk = wsk->next;
- printf("\n%s\n", wsk->imie);
- printf("%s\n", wsk->nazwisko);
- printf("%d\n", wsk->wiek);
- printf("%c\n", wsk->plec);
- getchar();
- }
- break;
- case 2:
- if (numer == 1)
- {
- printf("Jestes na poczatku listy");
- getchar();
- }
- else
- {
- printf("Poprzedni element to: \n");
- wsk = wsk->prev;
- printf("\n%s\n", wsk->imie);
- printf("%s\n", wsk->nazwisko);
- printf("%d\n", wsk->wiek);
- printf("%c\n", wsk->plec);
- getchar();
- }
- break;
- default:
- break;
- }
- }
- void zapiszListeDoPliku(Osoba *wsk)
- {
- char nazwapliku[30];
- printf("Do jakiego pliku zapisac liste? ");
- scanf("%s", &nazwapliku);
- FILE *plik;
- plik = fopen(nazwapliku, "wt");
- wsk = wsk->next;
- while (wsk->next != NULL)
- {
- fprintf(plik, "\n%s\n", wsk->imie);
- fprintf(plik, "%s\n", wsk->nazwisko);
- fprintf(plik, "%d\n", wsk->wiek);
- fprintf(plik, "%c\n", wsk->plec);
- wsk = wsk->next;
- }
- fprintf(plik, "\n%s\n", wsk->imie);
- fprintf(plik, "%s\n", wsk->nazwisko);
- fprintf(plik, "%d\n", wsk->wiek);
- fprintf(plik, "%c\n", wsk->plec);
- printf("Lista zostala zapisana do pliku %s ", nazwapliku);
- fclose(plik);
- getchar();
- }
- void wyszukajPoNazwisku(Osoba *wsk)
- {
- char szukanenazwisko[30];
- printf("Podaj nazwisko ktore chcesz odszukac: ");
- scanf("%s", &szukanenazwisko);
- printf("\nZnalezione osoby:\n");
- while (wsk->next != NULL)
- {
- if (strcmp(wsk->nazwisko, szukanenazwisko) == 0)
- {
- printf("\n%s\n", wsk->imie);
- printf("%s\n", wsk->nazwisko);
- printf("%d\n", wsk->wiek);
- printf("%c\n", wsk->plec);
- }
- wsk = wsk->next;
- }
- if (strcmp(wsk->nazwisko, szukanenazwisko) == 0)
- {
- printf("\n%s\n", wsk->imie);
- printf("%s\n", wsk->nazwisko);
- printf("%d\n", wsk->wiek);
- printf("%c\n", wsk->plec);
- }
- getchar();
- }
- void odczytListyZPliku(Osoba *wsk)
- {
- char nazwapliku[30];
- FILE *plik2;
- Osoba *nowyElement;
- printf("Z jakiego pliku wczytac liste? ");
- scanf("%s", &nazwapliku);
- plik2 = fopen(nazwapliku, "r+");
- while (feof(plik2) == 0)
- {
- while (wsk->next != NULL)
- {
- wsk = wsk->next;
- }
- nowyElement = (Osoba *)malloc(sizeof(Osoba));
- nowyElement->next = NULL;
- nowyElement->prev = wsk;
- fscanf(plik2, "%s %s %d %s", &nowyElement->imie, &nowyElement->nazwisko, &nowyElement->wiek, &nowyElement->plec);
- wsk->next = nowyElement;
- }
- printf("Wczytano liste z pliku %s", nazwapliku);
- fclose(plik2);
- getchar();
- }
- void wyswietlLiczbeElementow(Osoba *wsk)
- {
- int liczbaelementow = 0;
- while (wsk->next != NULL)
- {
- wsk = wsk->next;
- liczbaelementow++;
- }
- printf("Liczba elementow w liscie wynosi: %d", liczbaelementow);
- }
- int main()
- {
- Osoba Zerowy;
- Zerowy.next = NULL;
- Zerowy.prev = NULL;
- int wybor;
- do
- {
- system("cls");
- printf("** MENU GLOWNE **\n");
- printf("1 - Dodawanie nowego elementu\n");
- printf("2 - Wyswietlenie listy\n");
- printf("3 - Wyszukiwanie po nazwisku\n");
- printf("4 - Usuwanie elementu o numerze\n");
- printf("5 - Usuwanie po nazwisku\n");
- printf("6 - Wyczyszczenie listy\n");
- printf("7 - Zapisanie listy do pliku\n");
- printf("8 - Wyswietlenie rozmiaru listy\n");
- printf("9 - Wczytanie listy z pliku\n");
- printf("10 - Wyswietlenie elementu o numerze\n");
- printf("\n0 - Wyjscie z programu\n\n");
- scanf("%d", &wybor);
- switch (wybor)
- {
- case 1:
- dodajElementNaKoniec(&Zerowy);
- break;
- case 2:
- wypiszListe(&Zerowy);
- break;
- case 3:
- wyszukajPoNazwisku(&Zerowy);
- break;
- case 4:
- int numernaliscie;
- printf("Ktory z kolei element chcesz usunac? ");
- scanf("%d", &numernaliscie);
- usunElementONumerze(&Zerowy, numernaliscie);
- break;
- case 5:
- usunElementONazwisku(&Zerowy);
- break;
- case 6:
- wyczyscListe(&Zerowy);
- break;
- case 7:
- zapiszListeDoPliku(&Zerowy);
- break;
- case 8:
- wyswietlLiczbeElementow(&Zerowy);
- getchar();
- break;
- case 9:
- odczytListyZPliku(&Zerowy);
- break;
- case 10:
- int numerlisty;
- printf("Ktory z kolei element chcesz wyswietlic? ");
- scanf("%d", &numerlisty);
- wyswietlElementONumerze(&Zerowy, numerlisty);
- break;
- }
- getchar();
- } while (wybor != 0);
- wyczyscListe(&Zerowy);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement