Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <stdio.h>
- #include <string.h>
- struct telefon
- {
- char numer[8];
- };
- struct klient
- {
- char imie[20];
- char nazwisko[20];
- int karta;
- int telefon1;
- char email;
- struct telefon tel[2];
- struct klient *next;
- };
- struct klient *Biblioteka;
- struct klient *koniec;
- struct klient *poczatek;
- void dodajklient()
- {
- struct klient *poz ;
- //przydzielenie pamieci
- poz = calloc(1,sizeof(struct klient));
- //wprowadzanie danych
- system("cls");
- printf("\nDODAWANIE NOWEGO KLIENTA\n\n");
- printf("````````````````````````````````````````````````````````````````````````````````\n");
- fflush(stdin);
- printf("Imie : "); fgets(poz->imie,8, stdin);
- printf("Nazwisko: : "); scanf("%s", (poz->nazwisko));
- printf("Karta : "); scanf("%d", &(poz->karta));
- printf("Numer telefonu :");scanf("%d", &(poz->telefon1 ));
- printf("Adres e-mail :" );scanf("%s",&(poz->email ));
- //koniec wprowadzania
- poz->next = NULL;
- if (koniec == NULL)
- poczatek = koniec = poz;
- else {
- koniec->next = poz;
- koniec = poz;
- }
- printf("\nklient dodany\n");
- printf("````````````````````````````````````````````````````````````````````````````````\n");
- printf(" [Dowolny klawisz - powrot do menu] \n");
- getch();
- }
- struct ksiazki
- {
- int id;
- char tytul;
- int rok;
- char autor;
- char gatunek;
- int liczbaegzemplarzy;
- int liczbawypozyczonych;
- struct ksiazki *prev,*next;
- };
- void podaj_dane(int *id,
- char tytul[20],
- int *rok,
- char autor[20],
- char gatunek[20],
- int *liczbaegzemplarzy,
- int *liczbawypozyczonych)
- {
- //wprowadzanie danych
- system("cls");
- printf("\nDODAWANIE NOWEJ KSIĄŻKI\n\n");
- printf("````````````````````````````````````````````````````````````````````````````````\n");
- puts("Podaj id");
- scanf("%d", id);
- puts("Podaj tytul");
- scanf("%s", tytul);
- puts("Podaj rok");
- scanf("%d", rok);
- puts("Podaj Autora");
- scanf("%s", autor);
- puts("Podaj Gatunek");
- scanf("%s", gatunek);
- puts("Podaj Liczbe egzemplarzy");
- scanf("%d", liczbaegzemplarzy);
- puts("Podaj Liczbe wypozyczonych");
- scanf("%d", liczbaegzemplarzy);
- }
- struct ksiazki *dodajksiazki(struct ksiazki *front,int id,char tytul[20],int rok,char autor[20],char gatunek[20],int liczbaegzemplarzy,int liczbawypozyczonych)
- {
- struct ksiazki *new_node=(struct ksiazki*)malloc(sizeof(struct ksiazki));
- if(new_node)
- {
- new_node->id=id;
- strcpy(new_node->tytul,tytul);
- new_node->rok=rok;
- strcpy(new_node->autor,autor);
- strcpy(new_node->gatunek,gatunek);
- new_node->liczbaegzemplarzy=liczbaegzemplarzy;
- new_node->liczbawypozyczonych=liczbawypozyczonych;
- new_node->next=NULL;
- if(front == NULL)
- {
- return new_node;
- }
- else
- {
- struct ksiazki *tmp = front;
- while(tmp->next != NULL)
- {
- tmp=tmp->next;
- }
- tmp->next=new_node;
- return front;
- }
- }
- }
- int zapisz()
- {
- struct klient *poz;
- FILE *fptr;
- if ((fptr = fopen("Biblioteka.txt","wb")) == NULL){
- printf("Error! opening file");
- exit(1);
- }
- while(poz != NULL)
- {
- fwrite(poz, sizeof(struct klient), 1, fptr);
- poz = poz -> next;
- }
- fclose(fptr);
- return 0;
- }
- int wczytaj()
- {
- int lp=0;
- struct klient *poz;
- FILE *fptr;
- poczatek = NULL;
- koniec = NULL;
- system("cls");
- printf("\nWCZYTYWANIE DANYCH\n");
- printf("````````````````````````````````````````````````````````````````````````````````\n");
- if ((fptr = fopen("Biblioteka.txt","rb")) != NULL)
- {
- while (fread(Biblioteka = calloc(1,sizeof (struct klient)), sizeof(struct klient), 1, fptr) != NULL)
- {
- Biblioteka -> next = NULL;
- if (koniec == NULL)
- poczatek = koniec = Biblioteka;
- else {
- koniec->next = Biblioteka;
- koniec = Biblioteka;
- }
- lp++;
- }
- fclose(fptr);
- printf("Wczytano bazê danych. \nWczytano %d pozycji...\n",lp);
- }
- else
- printf("Brak pliku bazy danych.\n");
- printf("````````````````````````````````````````````````````````````````````````````````\n");
- printf(" [NACISNIEJ DOWOLNY KLAWISZ ABY WROCIC DO MENU] \n");
- getch();
- }
- void lista() {
- struct klient *tmp;
- if(poczatek == NULL)
- {
- printf("Biblioteka danych jest pusta. Wprowadz dane.\n\n");
- return;
- }
- system("cls");
- printf("\nLISTA KLIENTOW\n");
- printf("````````````````````````````````````````````````````````````````````````````````\n");
- printf("%-4s %-20s %-20s %7s\n", "Lp", "Imie [1]", "Nazwisko [2]", "Karta [3]");
- printf("````````````````````````````````````````````````````````````````````````````````\n");
- int lp = 1;
- tmp = poczatek;
- while(tmp != NULL) {
- printf("%4d. %-20s %-20s %7d\n", lp, tmp->imie, tmp->nazwisko, tmp->karta);
- tmp = tmp -> next;
- lp++;
- }
- printf("````````````````````````````````````````````````````````````````````````````````\n");
- printf(" [NACISNIEJ DOWOLNY KLAWISZ ABY WROCIC DO MENU] \n");
- char y = getch();
- if(y == '1') {
- Sortowanie("imie");
- lista();
- }
- else if(y == '2') {
- Sortowanie("nazwisko");
- lista();
- }
- else if(y == '3') {
- Sortowanie("Karta");
- lista();
- }
- else return;
- }
- void rysujMenu()
- {
- printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n\n");
- printf(" BAZA DANYCH KLIENTOW \n");
- printf(" ::: L-Lista | D-Dodaj Klienta| Z-Zapisz | W-Wczytaj | Q-Quit |K-Dodaj Ksiazke::: \n");
- printf("____________________________________________________________________________________________\n\n\n\n");
- }
- char *uppercase(char str[])
- {
- //char rw[sizeof(str)];
- int i = 0;
- while(str[i]) {
- str[i] = toupper(str[i]);
- i++;
- }
- return str;
- }
- void Sortowanie(char *kolumna)
- {
- char *strcmp1, *strcmp2;
- //char *x,*y;
- struct klient *tmp, *pom, *pop;
- if(poczatek == NULL)
- {
- printf("Biblioteka danych jest pusta. Wczytaj lub wprowadz dane.\n");
- return;
- }
- int lp = 1;
- while(lp>0)
- {
- lp = 0;
- tmp = poczatek;
- pop = NULL;
- //do przedostatniego rekordu
- while((tmp->next != NULL)) {
- if (kolumna=="imie") {strcmp1 = calloc(1,sizeof(tmp->imie)); strcpy(strcmp1 ,(tmp->imie)); strcmp2 = calloc(1,sizeof(tmp->next->imie)); strcpy(strcmp2 , (tmp->next->imie));}
- else if (kolumna=="nazwisko") {strcmp1 = calloc(1,sizeof(tmp->nazwisko)); strcpy(strcmp1 ,(tmp->nazwisko)); strcmp2 = calloc(1,sizeof(tmp->next->nazwisko)); strcpy(strcmp2,(tmp->next->nazwisko));}
- else if (kolumna=="Karta") {strcmp1 = calloc(1,sizeof(tmp->karta)); strcmp1 = &(tmp->karta); strcmp2 = calloc(1,sizeof(tmp->next->karta)); strcmp2 = &(tmp->next->karta);}
- if ((strcmp(uppercase(strcmp1), uppercase(strcmp2))>0))
- {
- //wyjatek na 1 pozycje
- if (pop==NULL) poczatek = tmp -> next;
- else pop -> next = tmp -> next;
- pop = tmp -> next;
- pom = tmp -> next -> next;
- tmp -> next -> next = tmp;
- tmp -> next = pom;
- lp++;
- }
- else {
- pop = tmp;
- tmp = tmp -> next;
- }
- }
- }
- }
- void test()
- {
- }
- int main()
- {
- int id;
- char tytul[20];
- int rok;
- char autor[20];
- char gatunek[20];
- int liczbaegzemplarzy;
- int liczbawypozyczonych;
- struct ksiazki *front_ksiazki = NULL;
- char y=0;
- while(1==1)
- {
- system("cls");
- rysujMenu();
- if(poczatek == NULL)
- printf("Brak danych. Wczytaj lub wprowadz dane.\n");
- y = getch();
- if(y=='l')
- lista();
- else if(y == 'd') {
- dodajklient();
- }
- else if(y == 'k') {
- podaj_dane(&id,tytul,&rok,autor,gatunek,&liczbaegzemplarzy,&liczbawypozyczonych);
- front_ksiazki=dodajksiazki(front_ksiazki,id,tytul,rok,autor,gatunek,liczbaegzemplarzy,liczbawypozyczonych);
- }
- else if(y == 'z') {
- zapisz();
- }
- else if(y == 'w') {
- wczytaj();
- }
- else if(y == 't') {
- test();
- }
- else if(y == 'q') {
- //zapisz();
- break;
- }
- }
- //system("PAUSE");
- return 0;
- }
- /*
- 1)Dane sa zapisywanie do pliku.
- 2)Edycja/Dodawanie i usuwanie klientów:(Imie, Nazwisko, Numer karty, Telefon , E-mail).
- 3)Wyszukiwanie klientów.
- 4)Mo¿liwoœæ wyswetlenia wszystkich klientów.
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement