Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define MAX 256
- struct wpis
- {
- char imie[50];
- char nazwisko[50];
- char data_ur[50];
- char miejscowosc[50];
- char pesel[50];
- char tel[50];
- };
- int i; // zmienna przechowujaca ilosc elementow
- struct wpis dod[200]; //tablica struktur
- void Dodaj() //wrzucenie do wartosci struct danych
- {
- printf("\n\nPodaj imie:\n");
- scanf("%s", &dod[i].imie);
- printf("Podaj nazwisko:\n");
- scanf("%s", &dod[i].nazwisko);
- printf("Podaj date urodzenia:\n");
- scanf("%s", &dod[i].data_ur);
- printf("Podaj miejscowosc:\n");
- scanf("%s", &dod[i].miejscowosc);
- printf("Podaj pesel:\n");
- scanf("%s", &dod[i].pesel);
- printf("Podaj numer telefonu:\n");
- scanf("%s", &dod[i].tel);
- i++; //zwiekszanie sie licznika uzytkowniow
- printf("Dodales uzytkownika do tablicy. Wcisnij dowolny przycisk aby przejsc dalej! ");
- getch();
- }
- void Zobacz()//wyswietlanie elementow z tablicy
- {
- int j;
- if ( i != 0)
- {
- for (j = 0; j < i; j++)
- {
- printf("\n\nUzytkownik nr: %d", j);
- printf("\nImie: %s", dod[j].imie);
- printf("\nNazwisko: %s", dod[j].nazwisko);
- printf("\nData urodzenia: %s", dod[j].data_ur);
- printf("\nMiejscowosc: %s", dod[j].miejscowosc);
- printf("\nPesel: %s", dod[j].pesel);
- printf("\nNr telefonu: %s", dod[j].tel);
- }
- }
- else{
- printf("\n\nBrak uzytkownikow w tablicy.");
- }
- printf("\n\nNacisnij dowolny klawisz aby przejsc dalej.");
- getch();
- }
- void Zapisz() //zapis elementow z tablicy do pliku
- {
- int j;
- FILE *fp;
- fp=fopen("baza.txt", "a+");
- if(fp == NULL)
- {
- perror("Nie udalo sie otrworzyc pliku"); //wyswietlanie komunikatu bledu
- }
- for(j=0; j<i; j++){
- fprintf(fp, "%s ", dod[j].imie);
- fprintf(fp, "%s ", dod[j].nazwisko);
- fprintf(fp, "%s ", dod[j].data_ur);
- fprintf(fp, "%s ", dod[j].miejscowosc);
- fprintf(fp, "%s ", dod[j].pesel);
- fprintf(fp, "%s \n", dod[j].tel);
- }
- fclose(fp);
- printf("\nDodawanie powiodlo sie. Nacisnij dowolny przycisk aby kontnynuowac.");
- getch();
- }
- void Wczytaj() //wyswietlanie elementow z pliku baza.txt
- {
- FILE *fp;
- char bufor[256];
- char z;
- fp = fopen("baza.txt", "rt");
- if(!fp) {
- printf("Nie mozna otworzyc bazy danych");
- exit(-1);
- }
- while(fgets(bufor,256,fp)) {//funkcja wypisujaca z pliku
- printf("\n%s", bufor);
- }
- fclose(fp);
- scanf("%c",&z);
- return 0;
- }
- void Usun()//usuwanie elementow z tablicy
- {
- int kogo,k;
- if (i != 0)
- {
- printf("Podaj numer uzytkownika, ktorego chcesz usunac z tablicy: ");
- scanf("%d", &kogo);
- if (kogo > i){
- printf("Operacja nie powiodla sie");
- }
- else
- {
- for (k = kogo; k < i; k++)
- {
- strcpy(dod[k].imie, dod[k-1].imie);//przesuniecie elementu tablicy o jeden indeks
- strcpy(dod[k].nazwisko, dod[k-1].nazwisko);
- strcpy(dod[k].data_ur, dod[k-1].data_ur);
- strcpy(dod[k].miejscowosc, dod[k-1].miejscowosc);
- strcpy(dod[k].pesel, dod[k-1].pesel);
- strcpy(dod[k].tel, dod[k-1].tel);
- }
- i--;
- printf("Operacja zakonczyla sie sukcesem");
- //Zapisz_usun();
- }
- }
- else
- {
- printf("Nie ma uzytkownikow w tablicy. Nacisnij dowolny przycisk aby kontynuowac");
- getch();
- }
- }
- void Edytuj()//edycja elementow w tablicy
- {
- int kogo;
- if (i != 0)
- {
- printf("\nPodaj numer uzytkownika ktorego chcesz zmienic");
- scanf("%d", &kogo);
- if (kogo > i)
- printf("\nOperacja nie powiodla sie");
- else
- {
- printf("Podaj imie uzytkownika: \n");
- scanf("%s", dod[kogo-1].imie); //dostosowanie indeksu do porzadku tablicy
- printf("Podaj nazwisko uzytkownika: \n");
- scanf("%s", dod[kogo-1].nazwisko);
- printf("Podaj date urodzenia: \n");
- scanf("%s", dod[kogo-1].data_ur);
- printf("Podaj miejscowosc: \n");
- scanf("%s", dod[kogo-1].miejscowosc);
- printf("Podaj pesel pesel: \n");
- scanf("%s", dod[kogo-1].pesel);
- printf("Podaj numer telefonu: \n");
- scanf("%s", dod[kogo-1].tel);
- printf("\n\nOperacja zakonczyla sie sukcesem");
- //Zapisz_usun();
- }
- }
- else
- {
- printf("\n\nNie ma uzytkownikow w tablicy. Nacisnij dowolny przycisk aby kontynuowac.");
- getch();
- }
- }
- void edycja()
- {
- FILE *fp, *tmp;
- int linia, licznik=0;
- char str[MAX], strum[MAX];
- char nowa[6][MAX], buf[]="buf.txt";
- fp = fopen("baza.txt", "r");
- if(!fp)
- {
- printf("Nie mozna otworzyc pliku\n");
- return 0;
- }
- tmp=fopen(buf, "w");
- if(!tmp)
- {
- printf("Nie mozna otworzyc buforu\n");
- fclose(fp);
- return 0;
- }
- printf("Ktorego uzytkownika chcesz edytowac? \n");
- scanf("%d", &linia);
- printf("\n\nPodaj imie:\n");
- scanf("%s", &nowa[0]);
- printf("Podaj nazwisko:\n");
- scanf("%s", &nowa[1]);
- printf("Podaj date urodzenia:\n");
- scanf("%s", &nowa[2]);
- printf("Podaj miejscowosc:\n");
- scanf("%s", &nowa[3]);
- printf("Podaj pesel:\n");
- scanf("%s", &nowa[4]);
- printf("Podaj numer telefonu:\n");
- scanf("%s", &nowa[5]);
- while(!feof(fp))
- {
- strcpy(str, "\0");
- fgets(str, MAX, fp);
- if(!feof(fp))
- {
- licznik++;
- if(licznik != linia)
- {
- fprintf(tmp, "%s", str);
- }
- else
- {
- fprintf(tmp, "%s ", &nowa[0]);
- fprintf(tmp, "%s ", &nowa[1]);
- fprintf(tmp, "%s ", &nowa[2]);
- fprintf(tmp, "%s ", &nowa[3]);
- fprintf(tmp, "%s ", &nowa[4]);
- fprintf(tmp, "%s \n", &nowa[5]);
- }
- }
- }
- fclose(fp);
- fclose(tmp);
- remove("baza.txt");
- rename(buf, "baza.txt");
- printf("Operacja przebiegla z sukcesem");
- getch();
- }
- void usun_z_bazy()
- {
- FILE *fp, *tmp;
- int linia, licznik=0;
- char str[MAX], strum[MAX];
- char nowa[6][MAX], buf[]="buf.txt";
- fp = fopen("baza.txt", "r");
- if(!fp)
- {
- printf("Nie mozna otworzyc pliku\n");
- return 0;
- }
- tmp=fopen(buf, "w");
- if(!tmp)
- {
- printf("Nie mozna otworzyc buforu\n");
- fclose(fp);
- return 0;
- }
- printf("Ktorego uzytkownika chcesz usunac? \n");
- scanf("%d", &linia);
- while(!feof(fp))
- {
- strcpy(str, "\0");
- fgets(str, MAX, fp);
- if(!feof(fp))
- {
- licznik++;
- if(licznik != linia)
- {
- fprintf(tmp, "%s", str);
- }
- }
- }
- fclose(fp);
- fclose(tmp);
- remove("baza.txt");
- rename(buf, "baza.txt");
- printf("Operacja przebiegla z sukcesem");
- getch();
- }
- void Sort()
- {
- char *tab[1000];
- char linia[1024];
- int i=0;
- int j=0;
- char wybor;
- printf("\n Co chcesz zrobic?\n");
- printf(" 1. Tylko wyswietlic posortowane dane\n");
- printf(" 2. Zapisac posortowana dane\n");
- wybor = getch();
- FILE *fp = fopen("baza.txt", "r");
- if(fp != NULL)
- {
- while(fgets(linia, sizeof linia, fp) != NULL)
- {
- linia[strcspn(linia,"\n")]='\0';
- if(i<sizeof tab/sizeof *tab)
- {
- tab[i++]=strdup(linia);
- }
- else break;
- }
- }
- int cmpr(void *a,void *b){
- return (strcmp(*(char **)a, *(char **)b));
- }
- qsort(tab, i, sizeof(char *), cmpr);
- fclose(fp);
- if(wybor == '1')
- {
- for (j = 0; j < i; j++)
- {
- printf("%s\n", tab[j]);
- }
- }
- if(wybor == '2')
- {
- FILE *fp1 = fopen("baza.txt", "w");
- for (j = 0; j < i; j++)
- {
- fprintf(fp1, "%s\n", tab[j]);
- }
- fclose(fp1);
- }
- for (j = 0; j < i; j++)
- {
- free(tab[j]);
- }
- getch();
- }
- int main()
- {
- char wybor;
- do
- {
- printf("Aktualnie znajduje sie %d uzytkownikow w bazie", i);
- printf("\n\n 1. Dodaj uzytkownika\n ");
- printf(" 2. Zobacz wszystkich uzytkownikow\n ");
- printf(" 3. Zapisz wprowadzonych uzytkownikow\n ");
- printf(" 4. Wczytaj uzytkownikow z bazy\n ");
- printf(" 5. Usun uzytkownika\n ");
- printf(" 6. Edytuj uzytkownika\n ");
- printf(" 7. Edytuj uzytkownika w bazie danych\n ");
- printf(" 8. Usun uzytkownika z bazy\n ");
- printf(" 9. Sortowanie\n ");
- printf("\n\nESC - Koniec programu \n\n");
- wybor = getch();
- switch (wybor)
- {
- case 49: Dodaj(); //wybor przez kod ASCII
- break;
- case 50: Zobacz();
- break;
- case 51: Zapisz();
- break;
- case 52: Wczytaj();
- break;
- case 53: Usun();
- break;
- case 54: Edytuj();
- break;
- case 55: edycja();
- break;
- case 56: usun_z_bazy();
- break;
- case 57: Sort();
- break;
- }
- system("cls");//czyszczenie ekranu
- } while (wybor != 27); //zakonczenie dzialania esc
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement