Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<stdlib.h>
- #include<locale.h>
- #include<string.h>
- #include<conio.h>
- typedef struct
- {
- char imie[30];
- char nazwisko[30];
- char numer[10];
- char grupa[30];
- }kontakt_dane;
- struct element
- {
- struct element* poprzedni;
- kontakt_dane kontakt;
- struct element* nastepny;
- };
- typedef struct element element;
- void wyczyscbufor()
- {
- int c;
- while (((c = getc(stdin)) != '\n') && (c != EOF));
- }
- void wczytywanie_z_pliku(element** poczatek, element** gora)
- {
- FILE* plik;
- char* nazwa_pliku;
- element* osoba;
- element* poprzedni;
- poprzedni = calloc(1, sizeof(element));
- nazwa_pliku = calloc(20, sizeof(char));
- while (1)
- {
- printf("Podaj nazwe pliku\n");
- scanf("%s", nazwa_pliku);
- plik = fopen(nazwa_pliku, "r");
- if (plik == NULL)
- {
- printf("Podano zla nazwe pliku,sprobuj ponownie\n");
- wyczyscbufor();
- }
- else
- {
- break;
- }
- }
- while (feof(plik) == 0)
- {
- osoba = calloc(1, sizeof(element));
- fscanf(plik, "%[^;] ; %[^;] ; %[^;] ; %s\n", osoba->kontakt.imie, osoba->kontakt.nazwisko, osoba->kontakt.numer, osoba->kontakt.grupa);
- if (*poczatek != NULL)
- {
- osoba->poprzedni = poprzedni;
- osoba->poprzedni->nastepny = osoba;
- osoba->nastepny = NULL;
- poprzedni = osoba;
- *gora = osoba;
- }
- if (*poczatek == NULL)
- {
- osoba->poprzedni = NULL;
- osoba->nastepny = NULL;
- poprzedni = osoba;
- *poczatek = osoba;
- }
- }
- fclose(plik);
- }
- void wyswietlanie_kontatkow(element* poczatek)
- {
- element* aktualny;
- int i = 1;
- aktualny = calloc(1, sizeof(aktualny));
- aktualny = poczatek;
- printf("Ksiazka telefoniczna:\n");
- while (aktualny != NULL)
- {
- printf("%d)%s %s %s %s\n", i, aktualny->kontakt.imie, aktualny->kontakt.nazwisko, aktualny->kontakt.numer, aktualny->kontakt.grupa);
- aktualny = aktualny->nastepny;
- i++;
- }
- free(aktualny);
- }
- void sortowanie(element** poczatek,int sort)
- {
- element* aktualny;
- int zmiana = 1;
- aktualny = calloc(1, sizeof(element));
- aktualny = *poczatek;
- if(sort==1)
- {
- while (zmiana != 0)
- {
- zmiana = 0;
- while ((*aktualny).nastepny != NULL)
- {
- if (strcoll((*aktualny).kontakt.imie, (*aktualny).nastepny->kontakt.imie) == 1)
- {
- zmiana += 1;
- if ((*aktualny).poprzedni != NULL && (*aktualny).nastepny != NULL)
- {
- (*aktualny).poprzedni->nastepny = (*aktualny).nastepny;
- (*aktualny).nastepny->poprzedni = (*aktualny).poprzedni;
- (*aktualny).poprzedni = (*aktualny).nastepny;
- (*aktualny).nastepny = (*aktualny).poprzedni->nastepny;
- (*aktualny).poprzedni->nastepny = aktualny;
- if ((*aktualny).nastepny != NULL)
- {
- (*aktualny).nastepny->poprzedni = aktualny;
- }
- else
- {
- (*aktualny).nastepny = NULL;
- }
- }
- if ((*aktualny).poprzedni == NULL)
- {
- (*aktualny).nastepny->poprzedni = (*aktualny).poprzedni;
- (*aktualny).poprzedni = (*aktualny).nastepny;
- if ((*aktualny).nastepny->nastepny != NULL)
- {
- (*aktualny).nastepny = (*aktualny).nastepny->nastepny;
- (*aktualny).nastepny->poprzedni = aktualny;
- }
- else
- {
- (*aktualny).nastepny = NULL;
- }
- (*aktualny).poprzedni->nastepny = aktualny;
- *poczatek = aktualny->poprzedni;
- }
- }
- else
- {
- aktualny = aktualny->nastepny;
- }
- }
- aktualny = *poczatek;
- }
- }
- if(sort == 2)
- {
- while (zmiana != 0)
- {
- zmiana = 0;
- while ((*aktualny).nastepny != NULL)
- {
- if (strcoll((*aktualny).kontakt.nazwisko, (*aktualny).nastepny->kontakt.nazwisko) == 1)
- {
- zmiana += 1;
- if ((*aktualny).poprzedni != NULL && (*aktualny).nastepny != NULL)
- {
- (*aktualny).poprzedni->nastepny = (*aktualny).nastepny;
- (*aktualny).nastepny->poprzedni = (*aktualny).poprzedni;
- (*aktualny).poprzedni = (*aktualny).nastepny;
- (*aktualny).nastepny = (*aktualny).poprzedni->nastepny;
- (*aktualny).poprzedni->nastepny = aktualny;
- if ((*aktualny).nastepny != NULL)
- {
- (*aktualny).nastepny->poprzedni = aktualny;
- }
- else
- {
- (*aktualny).nastepny = NULL;
- }
- }
- if ((*aktualny).poprzedni == NULL)
- {
- (*aktualny).nastepny->poprzedni = (*aktualny).poprzedni;
- (*aktualny).poprzedni = (*aktualny).nastepny;
- if ((*aktualny).nastepny->nastepny != NULL)
- {
- (*aktualny).nastepny = (*aktualny).nastepny->nastepny;
- (*aktualny).nastepny->poprzedni = aktualny;
- }
- else
- {
- (*aktualny).nastepny = NULL;
- }
- (*aktualny).poprzedni->nastepny = aktualny;
- *poczatek = aktualny->poprzedni;
- }
- }
- else
- {
- aktualny = aktualny->nastepny;
- }
- }
- aktualny = *poczatek;
- }
- }
- if(sort == 3)
- {
- while (zmiana != 0)
- {
- zmiana = 0;
- while ((*aktualny).nastepny != NULL)
- {
- if (strcoll((*aktualny).kontakt.grupa, (*aktualny).nastepny->kontakt.grupa) == 1)
- {
- zmiana += 1;
- if ((*aktualny).poprzedni != NULL && (*aktualny).nastepny != NULL)
- {
- (*aktualny).poprzedni->nastepny = (*aktualny).nastepny;
- (*aktualny).nastepny->poprzedni = (*aktualny).poprzedni;
- (*aktualny).poprzedni = (*aktualny).nastepny;
- (*aktualny).nastepny = (*aktualny).poprzedni->nastepny;
- (*aktualny).poprzedni->nastepny = aktualny;
- if ((*aktualny).nastepny != NULL)
- {
- (*aktualny).nastepny->poprzedni = aktualny;
- }
- else
- {
- (*aktualny).nastepny = NULL;
- }
- }
- if ((*aktualny).poprzedni == NULL)
- {
- (*aktualny).nastepny->poprzedni = (*aktualny).poprzedni;
- (*aktualny).poprzedni = (*aktualny).nastepny;
- if ((*aktualny).nastepny->nastepny != NULL)
- {
- (*aktualny).nastepny = (*aktualny).nastepny->nastepny;
- (*aktualny).nastepny->poprzedni = aktualny;
- }
- else
- {
- (*aktualny).nastepny = NULL;
- }
- (*aktualny).poprzedni->nastepny = aktualny;
- *poczatek = aktualny->poprzedni;
- }
- }
- else
- {
- aktualny = aktualny->nastepny;
- }
- }
- aktualny = *poczatek;
- }
- }
- }
- void dodawanie_kontaktu(element** gora)
- {
- element* nowy;
- nowy = calloc(1, sizeof(element));
- printf("Podaj imie nazwisko numer_telefonu i grupe oddzielona spacjami\n");
- scanf("%s %s %s %s", nowy->kontakt.imie, nowy->kontakt.nazwisko, nowy->kontakt.numer, nowy->kontakt.grupa);
- (*gora)->nastepny = nowy;
- nowy->poprzedni = (*gora);
- nowy->nastepny = NULL;
- }
- void wyszukiwanie_kontaktu(element* poczatek) // cos nie gra
- {
- char* tab;
- char* wyraz;
- int i = 0;
- int numer = 1;
- element* aktualny;
- aktualny = calloc(1, sizeof(element));
- tab = calloc(29, sizeof(char));
- wyraz = calloc(30, sizeof(char));
- *wyraz = _getch();
- while (*(wyraz + i) != 32)
- {
- printf("Aby zakonczyn wyszukiwanie kliknij spacje\n");
- aktualny = poczatek;
- while (aktualny->nastepny != NULL)
- {
- tab = strstr(aktualny->kontakt.imie, wyraz);
- if (tab != NULL)
- {
- printf("%d)%s %s %s %s\n", numer,aktualny->kontakt.imie,aktualny->kontakt.nazwisko,aktualny->kontakt.numer,aktualny->kontakt.grupa);
- numer += 1;
- }
- aktualny = aktualny->nastepny;
- }
- numer = 1;
- i += 1;
- *(wyraz + i) = _getch();
- system("cls");
- }
- }
- void usuwanie_kontaktu(element** poczatek)
- {
- }
- int main()
- {
- element* poczatek = NULL;
- element* gora = NULL;
- int x = 0;
- int sort = 0;
- setlocale(LC_ALL, "polish_poland");
- printf("Witaj w programie ksiazki telefonicznej\n");
- while (x != 7)
- {
- printf("Menu:\n");
- printf("1)Wczytywanie ksiazki\n");
- printf("2)Wyswietlanie ksiazki\n");
- printf("3)Sortowanie kontaktow\n");
- printf("4)Dodawanie kontaktow\n");
- printf("5)Wyszukiwanie kontatkow\n");
- printf("6)Usuwanie kontaktow\n");
- printf("7)Zakonczenie programu\n");
- if ((scanf("%d", &x) == 1) && x > 0 && x < 8)
- {
- switch (x)
- {
- case 1:
- wyczyscbufor();
- system("cls");
- wczytywanie_z_pliku(&poczatek,&gora);
- printf("\nPomyslnie wczytano ksiazke\n\n");
- break;
- case 2:
- wyczyscbufor();
- system("cls");
- if (poczatek == NULL)
- {
- printf("Nie ma wczytanej zadnej ksiazki\n\n");
- }
- else
- {
- wyswietlanie_kontatkow(poczatek);
- printf("\n");
- }
- break;
- case 3:
- wyczyscbufor();
- while (1)
- {
- system("cls");
- if (poczatek == NULL)
- {
- printf("Nie ma wczytanej zadnej ksiazki\n\n");
- break;
- }
- else
- {
- printf("Podaj ktore opcje sortowania chcesz wykoanc\n");
- printf("1)Sortowanie alfabtetyczne imion\n");
- printf("2)Sortowanie alfabetyczne nazwisk\n");
- printf("3)Sortowanie alfabetyczne grup\n");
- if (scanf("%d", &sort) == 1 && sort > 0 && sort < 4)
- {
- wyczyscbufor();
- if (sort == 1)
- {
- sortowanie(&poczatek, sort);
- system("cls");
- printf("Posortowano wedlug imion\n\n");
- break;
- }
- if (sort == 2)
- {
- sortowanie(&poczatek, sort);
- system("cls");
- printf("Posortowano wedlug nazwisk\n\n");
- break;
- }
- if (sort == 3)
- {
- sortowanie(&poczatek, sort);
- system("cls");
- printf("Posortowano wedlug grup\n\n");
- break;
- }
- }
- else
- {
- printf("Podano zla opcje, sprobuj ponownie\n");
- }
- }
- }
- break;
- case 4:
- wyczyscbufor();
- system("cls");
- if (poczatek == NULL)
- {
- printf("Nie ma wczytanej zadnej ksiazki\n\n");
- }
- else
- {
- dodawanie_kontaktu(&gora);
- sortowanie(&poczatek, sort);
- printf("\n");
- printf("Dodano pomyslnie kontakt\n\n");
- }
- break;
- case 5:
- wyczyscbufor();
- system("cls");
- if (poczatek == NULL)
- {
- printf("Nie ma wczytanej zadnej ksiazki\n\n");
- }
- else
- {
- wyszukiwanie_kontaktu(poczatek);
- }
- break;
- case 6:
- break;
- case 7:
- break;
- }
- }
- else
- {
- wyczyscbufor();
- system("cls");
- printf("Podano zla opcje, sprobuj jeszcze raz\n");
- }
- }
- printf("Koniec programu\n");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement