Advertisement
Guest User

Untitled

a guest
May 24th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 9.42 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4. #include <string.h>
  5.  
  6.  
  7.  
  8. struct telefon
  9. {
  10.     char numer[8];
  11. };
  12.  
  13. struct klient
  14. {
  15.    char imie[20];
  16.    char nazwisko[20];
  17.    int  karta;
  18.    int  telefon1;
  19.    char email;
  20.    struct telefon tel[2];
  21.    struct klient *next;
  22. };
  23.  
  24.  
  25. struct klient *Biblioteka;
  26. struct klient *koniec;
  27. struct klient *poczatek;
  28.  
  29.  
  30.  
  31. void dodajklient()
  32. {
  33.         struct klient *poz ;
  34.         //przydzielenie pamieci
  35.         poz = calloc(1,sizeof(struct klient));
  36.         //wprowadzanie danych
  37.         system("cls");
  38.         printf("\nDODAWANIE NOWEGO KLIENTA\n\n");
  39.         printf("````````````````````````````````````````````````````````````````````````````````\n");
  40.         fflush(stdin);
  41.         printf("Imie           : "); fgets(poz->imie,8, stdin);
  42.         printf("Nazwisko:      : "); scanf("%s", (poz->nazwisko));
  43.         printf("Karta           : "); scanf("%d", &(poz->karta));
  44.         printf("Numer telefonu       :");scanf("%d", &(poz->telefon1 ));
  45.         printf("Adres e-mail        :" );scanf("%s",&(poz->email ));
  46.                 //koniec wprowadzania
  47.         poz->next = NULL;
  48.         if (koniec == NULL)
  49.               poczatek = koniec = poz;
  50.         else {
  51.               koniec->next = poz;
  52.               koniec = poz;
  53.         }
  54.         printf("\nklient dodany\n");
  55.         printf("````````````````````````````````````````````````````````````````````````````````\n");
  56.         printf("                     [Dowolny klawisz - powrot do menu]                         \n");
  57.         getch();
  58. }
  59.  
  60. struct ksiazki
  61. {
  62. int id;
  63. char tytul;
  64. int rok;
  65. char autor;
  66. char gatunek;
  67. int liczbaegzemplarzy;
  68. int liczbawypozyczonych;
  69. struct ksiazki *prev,*next;
  70. };
  71.  
  72. void podaj_dane(int *id,
  73.     char tytul[20],
  74.     int *rok,
  75.     char autor[20],
  76.     char gatunek[20],
  77.     int *liczbaegzemplarzy,
  78.     int *liczbawypozyczonych)
  79. {
  80.  
  81.     //wprowadzanie danych
  82.     system("cls");
  83.     printf("\nDODAWANIE NOWEJ KSIĄŻKI\n\n");
  84.     printf("````````````````````````````````````````````````````````````````````````````````\n");
  85.     puts("Podaj id");
  86.     scanf("%d", id);
  87.     puts("Podaj tytul");
  88.     scanf("%s", tytul);
  89.     puts("Podaj rok");
  90.     scanf("%d", rok);
  91.     puts("Podaj Autora");
  92.     scanf("%s", autor);
  93.     puts("Podaj Gatunek");
  94.     scanf("%s", gatunek);
  95.     puts("Podaj Liczbe egzemplarzy");
  96.     scanf("%d", liczbaegzemplarzy);
  97.     puts("Podaj Liczbe wypozyczonych");
  98.     scanf("%d", liczbaegzemplarzy);
  99. }
  100.  
  101.  
  102. struct ksiazki *dodajksiazki(struct ksiazki *front,int id,char tytul[20],int rok,char autor[20],char gatunek[20],int liczbaegzemplarzy,int liczbawypozyczonych)
  103. {
  104.         struct ksiazki *new_node=(struct ksiazki*)malloc(sizeof(struct ksiazki));
  105.         if(new_node)
  106.         {
  107.  
  108.  
  109.             new_node->id=id;
  110.             strcpy(new_node->tytul,tytul);
  111.             new_node->rok=rok;
  112.             strcpy(new_node->autor,autor);
  113.             strcpy(new_node->gatunek,gatunek);
  114.             new_node->liczbaegzemplarzy=liczbaegzemplarzy;
  115.             new_node->liczbawypozyczonych=liczbawypozyczonych;
  116.  
  117.             new_node->next=NULL;
  118.  
  119.             if(front == NULL)
  120.             {
  121.  
  122.                 return new_node;
  123.             }
  124.             else
  125.             {
  126.                 struct ksiazki *tmp = front;
  127.                 while(tmp->next != NULL)
  128.                 {
  129.                     tmp=tmp->next;
  130.                 }
  131.                 tmp->next=new_node;
  132.  
  133.                 return front;
  134.  
  135.  
  136.  
  137.             }
  138.         }
  139.  
  140.  
  141. }
  142.  
  143.  
  144.  
  145.  
  146. int zapisz()
  147. {
  148.    struct klient *poz;
  149.    FILE *fptr;
  150.    if ((fptr = fopen("Biblioteka.txt","wb")) == NULL){
  151.        printf("Error! opening file");
  152.        exit(1);
  153.    }
  154.  
  155.  
  156.    while(poz != NULL)
  157.    {
  158.       fwrite(poz, sizeof(struct klient), 1, fptr);
  159.       poz = poz -> next;
  160.    }
  161.    fclose(fptr);
  162.    return 0;
  163. }
  164.  
  165. int wczytaj()
  166. {
  167.    int lp=0;
  168.    struct klient *poz;
  169.    FILE *fptr;
  170.    poczatek = NULL;
  171.    koniec = NULL;
  172.    system("cls");
  173.    printf("\nWCZYTYWANIE DANYCH\n");
  174.    printf("````````````````````````````````````````````````````````````````````````````````\n");
  175.    if ((fptr = fopen("Biblioteka.txt","rb")) != NULL)
  176.    {
  177.        while (fread(Biblioteka = calloc(1,sizeof (struct klient)), sizeof(struct klient), 1, fptr) != NULL)
  178.        {
  179.             Biblioteka -> next = NULL;
  180.             if (koniec == NULL)
  181.                 poczatek = koniec = Biblioteka;
  182.             else {
  183.                 koniec->next = Biblioteka;
  184.                 koniec = Biblioteka;
  185.             }
  186.             lp++;
  187.        }
  188.        fclose(fptr);
  189.        printf("Wczytano bazê danych. \nWczytano %d pozycji...\n",lp);
  190.    }
  191.    else
  192.        printf("Brak pliku bazy danych.\n");
  193.     printf("````````````````````````````````````````````````````````````````````````````````\n");
  194.     printf("               [NACISNIEJ DOWOLNY KLAWISZ ABY WROCIC DO MENU]                   \n");
  195.    getch();
  196. }
  197.  
  198. void lista() {
  199.     struct klient *tmp;
  200.     if(poczatek == NULL)
  201.     {
  202.          printf("Biblioteka danych jest pusta. Wprowadz dane.\n\n");
  203.          return;
  204.     }
  205.     system("cls");
  206.     printf("\nLISTA KLIENTOW\n");
  207.     printf("````````````````````````````````````````````````````````````````````````````````\n");
  208.     printf("%-4s  %-20s %-20s %7s\n", "Lp", "Imie [1]", "Nazwisko [2]", "Karta [3]");
  209.     printf("````````````````````````````````````````````````````````````````````````````````\n");
  210.     int lp = 1;
  211.     tmp = poczatek;
  212.     while(tmp != NULL) {
  213.         printf("%4d. %-20s %-20s %7d\n", lp, tmp->imie, tmp->nazwisko, tmp->karta);
  214.         tmp = tmp -> next;
  215.         lp++;
  216.     }
  217.     printf("````````````````````````````````````````````````````````````````````````````````\n");
  218.     printf("               [NACISNIEJ DOWOLNY KLAWISZ ABY WROCIC DO MENU]                   \n");
  219.     char y = getch();
  220.     if(y == '1') {
  221.         Sortowanie("imie");
  222.         lista();
  223.         }
  224.     else if(y == '2') {
  225.         Sortowanie("nazwisko");
  226.         lista();
  227.         }
  228.     else if(y == '3') {
  229.         Sortowanie("Karta");
  230.         lista();
  231.         }
  232.     else return;
  233. }
  234.  
  235. void rysujMenu()
  236. {
  237.     printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n\n");
  238.     printf("                                  BAZA DANYCH KLIENTOW                                    \n");
  239.     printf("      ::: L-Lista | D-Dodaj Klienta| Z-Zapisz |  W-Wczytaj | Q-Quit |K-Dodaj Ksiazke:::             \n");
  240.     printf("____________________________________________________________________________________________\n\n\n\n");
  241. }
  242.  
  243. char *uppercase(char str[])
  244. {
  245.    //char rw[sizeof(str)];
  246.    int i = 0;
  247.    while(str[i]) {
  248.       str[i] = toupper(str[i]);
  249.       i++;
  250.    }
  251.    return str;
  252. }
  253.  
  254. void Sortowanie(char *kolumna)
  255. {
  256.    char *strcmp1, *strcmp2;
  257.    //char *x,*y;
  258.    struct klient *tmp, *pom, *pop;
  259.    if(poczatek == NULL)
  260.    {
  261.          printf("Biblioteka danych jest pusta. Wczytaj lub wprowadz dane.\n");
  262.          return;
  263.    }
  264.    int lp = 1;
  265.    while(lp>0)
  266.    {
  267.        lp = 0;
  268.        tmp = poczatek;
  269.        pop = NULL;
  270.        //do przedostatniego rekordu
  271.        while((tmp->next != NULL)) {
  272.             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));}
  273.             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));}
  274.             else if (kolumna=="Karta") {strcmp1 = calloc(1,sizeof(tmp->karta)); strcmp1 = &(tmp->karta); strcmp2 = calloc(1,sizeof(tmp->next->karta)); strcmp2 = &(tmp->next->karta);}
  275.             if ((strcmp(uppercase(strcmp1), uppercase(strcmp2))>0))
  276.             {
  277.                //wyjatek na 1 pozycje
  278.                if (pop==NULL) poczatek =  tmp -> next;
  279.                else pop -> next = tmp -> next;
  280.                pop = tmp -> next;
  281.                pom = tmp -> next -> next;
  282.                tmp -> next -> next = tmp;
  283.                tmp -> next = pom;
  284.                lp++;
  285.             }
  286.             else {
  287.                 pop = tmp;
  288.                 tmp = tmp -> next;
  289.             }
  290.  
  291.         }
  292.    }
  293. }
  294.  
  295. void test()
  296. {
  297.  
  298. }
  299.  
  300.  
  301. int main()
  302. {
  303.  
  304.     int id;
  305.     char tytul[20];
  306.     int rok;
  307.     char autor[20];
  308.     char gatunek[20];
  309.     int liczbaegzemplarzy;
  310.     int liczbawypozyczonych;
  311.     struct ksiazki *front_ksiazki = NULL;
  312.   char y=0;
  313.   while(1==1)
  314.   {
  315.     system("cls");
  316.     rysujMenu();
  317.     if(poczatek == NULL)
  318.          printf("Brak danych. Wczytaj lub wprowadz dane.\n");
  319.     y = getch();
  320.     if(y=='l')
  321.         lista();
  322.     else if(y == 'd') {
  323.         dodajklient();
  324.         }
  325.     else if(y == 'k') {
  326.         podaj_dane(&id,tytul,&rok,autor,gatunek,&liczbaegzemplarzy,&liczbawypozyczonych);
  327.         front_ksiazki=dodajksiazki(front_ksiazki,id,tytul,rok,autor,gatunek,liczbaegzemplarzy,liczbawypozyczonych);
  328.         }
  329.  
  330.     else if(y == 'z') {
  331.         zapisz();
  332.         }
  333.     else if(y == 'w') {
  334.         wczytaj();
  335.         }
  336.     else if(y == 't') {
  337.         test();
  338.         }
  339.     else if(y == 'q') {
  340.         //zapisz();
  341.         break;
  342.         }
  343.   }
  344.   //system("PAUSE");
  345.   return 0;
  346. }
  347.  
  348.  
  349. /*
  350. 1)Dane sa zapisywanie do pliku.
  351. 2)Edycja/Dodawanie i usuwanie klientów:(Imie, Nazwisko, Numer karty, Telefon , E-mail).
  352. 3)Wyszukiwanie klientów.
  353. 4)Mo¿liwoœæ wyswetlenia wszystkich klientów.
  354. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement