Advertisement
Guest User

Zadanko

a guest
Dec 11th, 2018
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 8.91 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #define MAX 256
  5.  
  6.  
  7. struct wpis
  8. {
  9.     char imie[50];
  10.     char nazwisko[50];
  11.     char data_ur[50];
  12.     char miejscowosc[50];
  13.     char pesel[50];
  14.     char tel[50];
  15.  
  16. };
  17.  
  18.    int i;          // zmienna przechowujaca ilosc elementow
  19. struct wpis dod[200];   //tablica struktur
  20.  
  21. void Dodaj() //wrzucenie do wartosci struct danych
  22. {
  23.  
  24.   printf("\n\nPodaj imie:\n");
  25.   scanf("%s", &dod[i].imie);
  26.  
  27.   printf("Podaj nazwisko:\n");
  28.   scanf("%s", &dod[i].nazwisko);
  29.  
  30.   printf("Podaj date urodzenia:\n");
  31.    scanf("%s", &dod[i].data_ur);
  32.  
  33.   printf("Podaj miejscowosc:\n");
  34.   scanf("%s", &dod[i].miejscowosc);
  35.  
  36.   printf("Podaj pesel:\n");
  37.   scanf("%s", &dod[i].pesel);
  38.  
  39.    printf("Podaj numer telefonu:\n");
  40.    scanf("%s", &dod[i].tel);
  41.  
  42.  
  43.  
  44.   i++; //zwiekszanie sie licznika uzytkowniow
  45.  
  46.   printf("Dodales uzytkownika do tablicy. Wcisnij dowolny przycisk aby przejsc dalej! ");
  47.   getch();
  48. }
  49.  
  50.  
  51. void Zobacz()//wyswietlanie elementow z tablicy
  52. {
  53.     int j;
  54.   if ( i != 0)
  55.   {
  56.     for (j = 0; j < i; j++)
  57.     {
  58.     printf("\n\nUzytkownik nr: %d", j);
  59.     printf("\nImie: %s", dod[j].imie);
  60.     printf("\nNazwisko: %s", dod[j].nazwisko);
  61.     printf("\nData urodzenia: %s", dod[j].data_ur);
  62.     printf("\nMiejscowosc: %s", dod[j].miejscowosc);
  63.     printf("\nPesel: %s", dod[j].pesel);
  64.     printf("\nNr telefonu: %s", dod[j].tel);
  65.  
  66.  
  67.     }
  68.   }
  69.   else{
  70.   printf("\n\nBrak uzytkownikow w tablicy.");
  71.   }
  72.     printf("\n\nNacisnij dowolny klawisz aby przejsc dalej.");
  73.  
  74.   getch();
  75. }
  76.  
  77. void Zapisz() //zapis elementow z tablicy do pliku
  78. {
  79. int j;
  80.  
  81.  
  82.   FILE *fp;
  83. fp=fopen("baza.txt", "a+");
  84. if(fp == NULL)
  85. {
  86.     perror("Nie udalo sie otrworzyc pliku"); //wyswietlanie komunikatu bledu
  87. }
  88.  
  89.  
  90. for(j=0; j<i; j++){
  91.     fprintf(fp, "%s ", dod[j].imie);
  92.     fprintf(fp, "%s ", dod[j].nazwisko);
  93.     fprintf(fp, "%s ", dod[j].data_ur);
  94.     fprintf(fp, "%s ", dod[j].miejscowosc);
  95.     fprintf(fp, "%s ", dod[j].pesel);
  96.     fprintf(fp, "%s \n", dod[j].tel);
  97. }
  98.  
  99. fclose(fp);
  100. printf("\nDodawanie powiodlo sie. Nacisnij dowolny przycisk aby kontnynuowac.");
  101.  
  102.   getch();
  103. }
  104.  
  105.  
  106. void Wczytaj() //wyswietlanie elementow z pliku baza.txt
  107. {
  108.    FILE *fp;
  109.     char  bufor[256];
  110.     char z;
  111.  
  112.     fp = fopen("baza.txt", "rt");
  113.     if(!fp) {
  114.             printf("Nie mozna otworzyc bazy danych");
  115.         exit(-1);
  116.     }
  117.  
  118.     while(fgets(bufor,256,fp)) {//funkcja wypisujaca z pliku
  119.  
  120.         printf("\n%s", bufor);
  121.     }
  122.     fclose(fp);
  123.  
  124.     scanf("%c",&z);
  125.  
  126.  
  127.     return 0;
  128. }
  129.  
  130.  
  131. void Usun()//usuwanie elementow z tablicy
  132. {
  133.   int kogo,k;
  134.  
  135.   if (i != 0)
  136.   {
  137.     printf("Podaj numer uzytkownika, ktorego chcesz usunac z tablicy: ");
  138.     scanf("%d", &kogo);
  139.  
  140.  
  141.     if (kogo > i){
  142.     printf("Operacja nie powiodla sie");
  143.     }
  144.     else
  145.     {
  146.       for (k = kogo; k < i; k++)
  147.       {
  148.           strcpy(dod[k].imie, dod[k-1].imie);//przesuniecie elementu tablicy o jeden indeks
  149.           strcpy(dod[k].nazwisko, dod[k-1].nazwisko);
  150.           strcpy(dod[k].data_ur, dod[k-1].data_ur);
  151.           strcpy(dod[k].miejscowosc, dod[k-1].miejscowosc);
  152.           strcpy(dod[k].pesel, dod[k-1].pesel);
  153.           strcpy(dod[k].tel, dod[k-1].tel);
  154.  
  155.       }
  156.       i--;
  157.  
  158.       printf("Operacja zakonczyla sie sukcesem");
  159.       //Zapisz_usun();
  160.     }
  161.  
  162.   }
  163.   else
  164.   {
  165.     printf("Nie ma uzytkownikow w tablicy. Nacisnij dowolny przycisk aby kontynuowac");
  166.     getch();
  167.   }
  168. }
  169.  
  170. void Edytuj()//edycja elementow w tablicy
  171. {
  172.  
  173.         int kogo;
  174.  
  175.   if (i != 0)
  176.   {
  177.     printf("\nPodaj numer uzytkownika ktorego chcesz zmienic");
  178.     scanf("%d", &kogo);
  179.  
  180.  
  181.     if (kogo > i)
  182.     printf("\nOperacja nie powiodla sie");
  183.     else
  184.     {
  185.  
  186.     printf("Podaj imie uzytkownika: \n");
  187. scanf("%s", dod[kogo-1].imie); //dostosowanie indeksu do porzadku tablicy
  188.  
  189.     printf("Podaj nazwisko uzytkownika: \n");
  190. scanf("%s", dod[kogo-1].nazwisko);
  191.  
  192.    printf("Podaj date urodzenia: \n");
  193. scanf("%s", dod[kogo-1].data_ur);
  194.  
  195.     printf("Podaj miejscowosc: \n");
  196. scanf("%s", dod[kogo-1].miejscowosc);
  197.  
  198.   printf("Podaj pesel pesel: \n");
  199. scanf("%s", dod[kogo-1].pesel);
  200.  
  201.     printf("Podaj numer telefonu: \n");
  202. scanf("%s", dod[kogo-1].tel);
  203.  
  204.       printf("\n\nOperacja zakonczyla sie sukcesem");
  205.       //Zapisz_usun();
  206.     }
  207.  
  208.   }
  209.   else
  210.   {
  211.     printf("\n\nNie ma uzytkownikow w tablicy. Nacisnij dowolny przycisk aby kontynuowac.");
  212.     getch();
  213.   }
  214. }
  215.  
  216. void edycja()
  217. {
  218. FILE *fp, *tmp;
  219. int linia, licznik=0;
  220. char str[MAX], strum[MAX];
  221. char nowa[6][MAX], buf[]="buf.txt";
  222.  
  223.  
  224. fp = fopen("baza.txt", "r");
  225. if(!fp)
  226. {
  227.     printf("Nie mozna otworzyc pliku\n");
  228.         return 0;
  229. }
  230. tmp=fopen(buf, "w");
  231. if(!tmp)
  232. {
  233.     printf("Nie mozna otworzyc buforu\n");
  234.     fclose(fp);
  235.     return 0;
  236. }
  237.  
  238. printf("Ktorego uzytkownika chcesz edytowac? \n");
  239. scanf("%d", &linia);
  240.  
  241.  
  242.   printf("\n\nPodaj imie:\n");
  243.   scanf("%s", &nowa[0]);
  244.  
  245.   printf("Podaj nazwisko:\n");
  246.   scanf("%s", &nowa[1]);
  247.  
  248.   printf("Podaj date urodzenia:\n");
  249.    scanf("%s", &nowa[2]);
  250.  
  251.   printf("Podaj miejscowosc:\n");
  252.   scanf("%s", &nowa[3]);
  253.  
  254.   printf("Podaj pesel:\n");
  255.   scanf("%s", &nowa[4]);
  256.  
  257.    printf("Podaj numer telefonu:\n");
  258.    scanf("%s", &nowa[5]);
  259.  
  260.  
  261.  
  262. while(!feof(fp))
  263. {
  264.     strcpy(str, "\0");
  265.     fgets(str, MAX, fp);
  266.     if(!feof(fp))
  267.     {
  268.         licznik++;
  269.         if(licznik != linia)
  270.         {
  271.             fprintf(tmp, "%s", str);
  272.         }
  273.         else
  274.         {
  275.     fprintf(tmp, "%s ", &nowa[0]);
  276.     fprintf(tmp, "%s ", &nowa[1]);
  277.     fprintf(tmp, "%s ", &nowa[2]);
  278.     fprintf(tmp, "%s ", &nowa[3]);
  279.     fprintf(tmp, "%s ", &nowa[4]);
  280.     fprintf(tmp, "%s \n", &nowa[5]);
  281.  
  282.         }
  283.  
  284.     }
  285. }
  286.  
  287. fclose(fp);
  288. fclose(tmp);
  289. remove("baza.txt");
  290. rename(buf, "baza.txt");
  291. printf("Operacja przebiegla z sukcesem");
  292.  
  293.  
  294.  
  295. getch();
  296.  
  297.  
  298.  
  299.  
  300. }
  301.  
  302.  
  303. void usun_z_bazy()
  304. {
  305. FILE *fp, *tmp;
  306. int linia, licznik=0;
  307. char str[MAX], strum[MAX];
  308. char nowa[6][MAX], buf[]="buf.txt";
  309.  
  310.  
  311. fp = fopen("baza.txt", "r");
  312. if(!fp)
  313. {
  314.     printf("Nie mozna otworzyc pliku\n");
  315.         return 0;
  316. }
  317. tmp=fopen(buf, "w");
  318. if(!tmp)
  319. {
  320.     printf("Nie mozna otworzyc buforu\n");
  321.     fclose(fp);
  322.     return 0;
  323. }
  324.  
  325. printf("Ktorego uzytkownika chcesz usunac? \n");
  326. scanf("%d", &linia);
  327.  
  328.  
  329.  
  330. while(!feof(fp))
  331. {
  332.     strcpy(str, "\0");
  333.     fgets(str, MAX, fp);
  334.     if(!feof(fp))
  335.     {
  336.         licznik++;
  337.         if(licznik != linia)
  338.         {
  339.             fprintf(tmp, "%s", str);
  340.         }
  341.  
  342.     }
  343. }
  344.  
  345. fclose(fp);
  346. fclose(tmp);
  347. remove("baza.txt");
  348. rename(buf, "baza.txt");
  349. printf("Operacja przebiegla z sukcesem");
  350.  
  351.  
  352.  
  353. getch();
  354.  
  355.  
  356.  
  357. }
  358.  
  359.  
  360. void Sort()
  361. {
  362.     char *tab[1000];
  363.     char linia[1024];
  364.     int i=0;
  365.     int j=0;
  366.     char wybor;
  367.  
  368.         printf("\n Co chcesz zrobic?\n");
  369.         printf(" 1. Tylko wyswietlic posortowane dane\n");
  370.         printf(" 2. Zapisac posortowana dane\n");
  371.         wybor = getch();
  372.  
  373.     FILE *fp = fopen("baza.txt", "r");
  374.     if(fp != NULL)
  375.     {
  376.         while(fgets(linia, sizeof linia, fp) != NULL)
  377.         {
  378.             linia[strcspn(linia,"\n")]='\0';
  379.             if(i<sizeof tab/sizeof *tab)
  380.             {
  381.                 tab[i++]=strdup(linia);
  382.             }
  383.             else break;
  384.         }
  385.     }
  386.  
  387.  
  388.  
  389.  
  390. int cmpr(void *a,void *b){
  391.     return (strcmp(*(char **)a, *(char **)b));
  392. }
  393.     qsort(tab, i, sizeof(char *), cmpr);
  394.  
  395.  
  396. fclose(fp);
  397.  
  398.  
  399. if(wybor == '1')
  400. {
  401.  
  402.                 for (j = 0; j < i; j++)
  403.                 {
  404.             printf("%s\n", tab[j]);
  405.                 }
  406. }
  407. if(wybor == '2')
  408.   {
  409.     FILE *fp1 = fopen("baza.txt", "w");
  410.  
  411.                 for (j = 0; j < i; j++)
  412.                 {
  413.             fprintf(fp1, "%s\n", tab[j]);
  414.                 }
  415.         fclose(fp1);
  416.  
  417. }
  418.  
  419.  
  420.  
  421.  
  422. for (j = 0; j < i; j++)
  423.         {
  424.             free(tab[j]);
  425.         }
  426. getch();
  427. }
  428.  
  429.  
  430.  
  431.  
  432.  
  433. int main()
  434. {
  435.   char wybor;
  436.  
  437.   do
  438.   {
  439.     printf("Aktualnie znajduje sie %d uzytkownikow w bazie", i);
  440.     printf("\n\n  1. Dodaj uzytkownika\n ");
  441.     printf(" 2. Zobacz wszystkich uzytkownikow\n ");
  442.     printf(" 3. Zapisz wprowadzonych uzytkownikow\n ");
  443.     printf(" 4. Wczytaj uzytkownikow z bazy\n ");
  444.     printf(" 5. Usun uzytkownika\n ");
  445.     printf(" 6. Edytuj uzytkownika\n ");
  446.     printf(" 7. Edytuj uzytkownika w bazie danych\n ");
  447.     printf(" 8. Usun uzytkownika z bazy\n ");
  448.     printf(" 9. Sortowanie\n ");
  449.  
  450.     printf("\n\nESC - Koniec programu \n\n");
  451.  
  452.     wybor = getch();
  453.  
  454.     switch (wybor)
  455.     {
  456.       case 49: Dodaj(); //wybor przez kod ASCII
  457.       break;
  458.       case 50: Zobacz();
  459.       break;
  460.       case 51: Zapisz();
  461.       break;
  462.       case 52: Wczytaj();
  463.       break;
  464.       case 53: Usun();
  465.       break;
  466.       case 54: Edytuj();
  467.       break;
  468.       case 55: edycja();
  469.       break;
  470.       case 56: usun_z_bazy();
  471.       break;
  472.       case 57: Sort();
  473.       break;
  474.     }
  475.  
  476.     system("cls");//czyszczenie ekranu
  477.   } while (wybor != 27); //zakonczenie dzialania esc
  478.  
  479.  
  480.  
  481.  
  482.   return 0;
  483. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement